Forum: Mikrocontroller und Digitale Elektronik ARM/SoC und Memory IO mapping (Adressen der Peripherien)


von Thomas F. (Gast)


Lesenswert?

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

von +-*/ (Gast)


Lesenswert?

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.

von Uwe (Gast)


Lesenswert?

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...

von Μαtthias W. (matthias) Benutzerseite


Lesenswert?

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

von Thomas F. (Gast)


Lesenswert?

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 :)

von Irgend W. (Firma: egal) (irgendwer)


Lesenswert?

+-*/ 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
Noch kein Account? Hier anmelden.