Hey Leute, wie bekommt man die Adressierung von Hardware-Peripherien auf einem SoC heraus? Zum Beispiel eines handelsüblichen Smartphones, sagen wir einfach den Samsung Galaxy S8. Dieser benutzt die SoC Exynos 8895. Da möchten wir zum Beispiel auf die Kamera zugreifen. Woher weiß ich auf welche Speicheradresse(n) ich zugreifen muss? Gibt es von den Herstellern der SoC's Address-Maps die man einsehen kann? Wenn ja, nach was genau müsste ich da suchen? Oder gibt es Speicherbereiche in denen angeschlossene Geräte beschrieben werden (so eine Art Inhaltsverzeichniss) ? Der Hintergrund meiner Frage: Möchte gerne eine sehr simple eigene Firmware für den ARM des SoCs schreiben. Dafür muss ich aber natürlich wissen an welcher Adresse des Memory-mapped I/O ich meine Load/Store Befehle anwenden muss. Bin sehr gespannt was für Antworten da kommen :) LG Thomas
Wenn du schon an den Adressen scheiterst, wird das mit
> simple eigene Firmware
wohl eher nichts.
Die IO-Map steht ueblicherweise im Datenblatt und die
Registerbeschreibung in einem (Referenz-)manual.
Alternativ solltest du vllt die vorhandene "Camera"-App
disassemblieren.
U.U. findest du auch die Sourcen zum Gesamtsystem beim Hersteller.
Dann musst du nur lesen koennen.
Also als erste Anlaufstelle das Datenblatt des Herstellers(SoC). Jedoch werden die Bilddaten wohl über irgendein Interface per DMA in den Hauptspeicher geschrieben(Treiber)... an eine beliebige Adresse die vom Programmierer abhängig ist. Es ist aber wahrscheinlich noch ein Bildprozzesor involviert, der im SoC oder in der Kamera integriert ist...
Hi Smartphone-SOCs sind traditionell nicht öffentlich dokumentiert. Und umso näher du an das gehst was Grafik ist umso mehr werden irgendwelche Firmware-BLOBs nötig. Dein Vorhaben scheint mir eher aussichtslos ohne auf die Schnittstellen des auf dem SOC laufenden Betriebssystem aufzusetzen. Wenns wirklich auf unterer Ebene ablaufen soll sind die iMX von NXP oder Sitara von TI noch die am Besten dokumentierten SOCs. Aber stell dich auf PDFs mit > 10k Seiten ein. Die Doku ist dabei qualitativ auch eher unterdurchschnittlich. Nicht selten sieht man in den OS Treibern dann auch mal Bits und Register die im Datenblatt nur als "Reserved" dokumentiert sind. Matthias
Besten Dank für eure Antworten. Im Internet findet man bei den großen Herstellern keine detailreichen Spezifikationen. Ist wohl halt Firmengeheimniss. Wäre zwar super gewesen ein nicht mehr benötigtes Smartphone umzufunktionieren nach eigenen Wünschen aber gut. Danke Matthias für die beiden SoC-Alternativen. LG Thomas :)
+-*/ schrieb: > Alternativ solltest du vllt die vorhandene "Camera"-App > disassemblieren. Da wirst du auch nur die Aufrufe der OS-API drin finden die wiederum dann die Hardwarespeifische Treiber-API aufruft. Kaum eine Anwendung wird direkt auf die Hardware zugreifen, erstrecht weil die meisten OS da auch gewaltig was dagegen haben und sowas unterbinden. Wenn man da sowas "bare metal" verwenden will muss man erstmal den SoC überhaupt überreden das ganze Startprozedere durchzuführen, die andere Hardware zu initialisieren usw. Das ist bei weitem aufwendig als bei einem µC, zumal du in der Regel weder Dokumentation noch Zugriff auf den Quellcode des Herstellers. Wenn du das alles neu geschrieben hast, hast du schon beinahe ein halbes Linux neu geschrieben:-)
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.