Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
software:linux:emdebian:zoom [2013-12-11 13:22] kalberersoftware:linux:emdebian:zoom [2018-06-12 15:10] (aktuell) – gelöscht graf
Zeile 1: Zeile 1:
-====== Emdebian auf dem Zoom Board ====== 
-Die Emdebian Crosstoolchain wird in unserem Institut zum Beispiel für den [[http://www.logicpd.com/products/system-on-modules/zoom-omap-l138-experimenter-kit/|Zoom OMAP-L138 eXperimenter Kit]] von Logic PD eingesetzt. Das Zoom Board besitzt einen Texas Instruments OMAP-L138 Prozessor. Dieser basiert auf einem ARM926EJ-S und einem C6748 DSP. Weitere Infos zum Board und zum DSP sind im oben angefügten Link oder auch auf dem Wiki unter [[..:..:..:embedded_systems:omapl138_tms320c6748:start|OMAPL138 TMS320C6748]] zu finden. 
- 
-Das Board wird im Unterricht eingesetzt und zur Zeit mit dem bereits von Texas Instruments bereitgestellten Filesystem betrieben. Auf dem Display wird eine mit QT erstellte Oberfläche dargestellt, die per Touch bedienbar ist. Mit der Emdebian Crosstoolchain werden dann die auf dem Host geschriebenen Treiber usw. crosscompiliert und per SSH auf das Target geladen. 
- 
-==== Cross-Compilieren für das Zoom Board ==== 
-Wie C-Sourcen oder Kernelmodule mit der Emdebian Toolchain übersetzt werden können ist unter [[.:cross_compile|Cross-Compilieren mit Emdebian]] zu finden.\\ 
- 
-==== Datenübertragung mit SSH ==== 
-Die einfachste Variante die Kompilate anschliessend auf das Target zu kopieren ist via SSH. Alle Boards sind für die NTB-Infrastruktur registriert und können so einfach via Hostname über das Netzwerk angesprochen werden. Die Files werden dann am einfachsten mit //scp// kopiert: <code>scp filename username@hostnameTarget:/folder/In/Filesystem 
-zum Beispiel: 
-scp hello.ko root@es092:/media/ram</code> 
-Das oben angegebene Verzeichnis ///media/ram// wird bei jedem Booten des Targets gelöscht, verhält sich also wie ein RAM und ist damit praktisch, um kurz etwas auszuprobieren. 
- 
-Auf dem Zoom Board ist ein Dropbear SSH-Daemon installiert. Falls dieser nicht aktiv ist, kann er folgendermassen über die Konsole gestartet werden:<code>/etc/init.d/dropbear start</code> 
- 
-Bei einem Kernel-Update erhält das Target einen neuen RSA key. Dadurch kann anschliessend keine SSH-Verbindung mehr hergestellt werden, falls mit dem gleichen Host schon mal eine SSH Verbindung bestanden hatte. Es erscheint nur noch die Warnung ''Warning: Remote Host Identification has changed''. In diesem Falle muss der alte Key gelöscht werden. Dies erfolgt mittels <code>ssh-keygen -R hostname</code> 
-Wobei bei //hostname// der Hostname oder die IP-Adresse des entsprechenden Zoom Boards einzutragen ist. Beim nächsten Verbindungsversuch wird dann der neue Key generiert. 
- 
-===== Kernel Update ===== 
- 
-Auf dem Zoom Board befindet sich momentan ein Linux Kernel der Version 2.6.37. Wie ein Kernel, zum Beispiel für das Zoom Board, kreuzkompiliert werden kann, ist unter [[..:linux-kernel_kreuzkompilieren|Linux-Kernel kreuzkompilieren]] zu finden. 
- 
-==== Bootloader ==== 
- 
-Das Zoom Board hat ein U-Boot (Universal Boot Loader) installiert. Der kreuzkompilierte Kernel muss noch in ein entsprechendes uImage konvertiert werden, wobei zum Beispiel die Startadresse für das Aufstarten gesetzt werden muss etc. Dies erfolgt mit folgendem Befehl: <code>mkimage [-x] -A arch -O os -T type -C comp -a addr -e ep -n name -d source_datafile filenameOfCreated 
- 
-with: -A -> set architecture to 'arch' 
-      -O -> set operating system to 'os' 
-      -T -> set image type to 'type' 
-      -C -> set compression type 'comp' 
-      -a -> set load address to 'addr' (hex) 
-      -e -> set entry point to 'ep' (hex) 
-      -n -> set image name to 'name' 
-      -d -> use image data from 'source_datafile' 
-            and how generated image should be named 'filenameOfCreated' 
-      -x -> set XIP (execute in place)</code> 
-Für unser Beispiel ergibt dies folgenden Konsolen-Befehl:<code> 
-mkimage -A arm -O linux -T kernel -C none -a 0xC008000 -e 0xC0008000 -n 'linuxName' -d Image uImage</code> 
- 
-Ob das Image komprimiert werden soll oder nicht, hängt vom verfügbaren Speicherplatz ab. 
-Das neu erstellte uImage muss anschliessend auf die SD-Karte des Zoom Boards auf die Partition START_HERE kopiert werden. Beim nächsten Aufstarten wird der Kernel von dort geladen. 
- 
-===== SD Karte formatieren ===== 
-Mit dem SDK von Texas Instruments wird eine Shell mitgeliefert, mit welchem SD-Karten für das Zoom Board formatiert und partitioniert werden können. Dabei wird auch eine Partition mit dem rootfs erstellt. **Achtung: Das SDK von TI benötigt zur Zeit ein Ubuntu 10.04 LTS, sonst funktioniert es nicht!**\\ 
-Das Formatieren erfolgt mit folgenden Schritten: 
-  - SD Karte mit Kartenleser anschliessen und mit ''dmesg'' Device Node herausfinden. Dies unbedingt überprüfen, damit nicht aus Versehen das falsche Device formatiert wird! Dies wird etwa so aussehen: <code>host $ dmesg 
-[ 2160.060627]  sdb: sdb1 
-[ 2160.114041] sd 4:0:0:0: [sdb] Assuming drive cache: write through 
-[ 2160.114044] sd 4:0:0:0: [sdb] Attached SCSI removable disk</code> In diesem Fall ist der SD Karte /dev/sdb zugewiesen worden. 
-  - mksdboot Skript des TI SDKs ausführen mit Angabe des richtigen Devices! Dazu wird mit einer Konsole ins Hauptverzeichnis des SDK gewechselt und folgender Befehl ausgeführt: <code>sudo bin/mksdboot.sh --device <device> --sdk <fullPathToSDK></code> <code>sudo bin/mksdboot.sh --device /dev/sdb --sdk /home/ntbuserti/Documents/dvdsdk_TI</code> Es wird mit einem Konsolen-Output nochmals nachgefragt, ob auch wirklich das richtige Device angegeben wurde für das Formatieren, dies ist nochmals zu überprüfen und durch Enter drücken zu bestätigen. 
-  - Auf die so erstellte Karte kann anschliessend bei Bedarf ein neuer Kernel in die START_HERE Partition ins root-Verzeichnis kopiert werden. 
- 
-===== Zusatzboard GPIO ===== 
-Im Betriebssystem-Unterricht besteht ein Ziel darin, einen GPIO-Treiber von Grund auf selber zu schreiben. Da die beiden LED sowie Taster auf dem Zoom Board nicht als normale GPIO benützt werden können, sondern via I²C-Expander Bus angeschlossen sind, wurde für an Stecker J30 ein Zusatzboard hergestellt.\\ 
- 
-Dabei ist zu beachten, dass die Pins des OMAP-Prozessors gemultiplext sind, das heisst zum Beispiel, der auf dem Zusatzboard verwendete GP0[2] ist auch noch ein Pin der McBSP usw. Falls also die McBSP ebenfalls verwendet werden möchte, darf unter Umständen dieser Pin nicht als GPIO konfiguriert werden. 
- 
-^ I/0 ^ Pin ^ Alternativ-Funktionen ^ 
-| GP0[0] | 92 | AXR8 / CLKS1 / ECAP1_APWM1 | 
-| GP0[1] | 81 | AXR9 / DX1 | 
-| GP0[2] | 23 | AXR10 / DR1 | 
-| GP0[6] | 17 | AXR14 / CLKR1 | 
-| GP0[13] | 73 | AFSR | 
-| GP0[15] | 77 | ACLKR | 
- 
-{{:software:linux:emdebian:zoom:omap-l138_baseboard_schematic.pdf|Schema OMAPL138 Zoom Baseboard}}\\ 
-{{:software:linux:emdebian:zoom:schemazusatzboardzoomboard.pdf|Schema Zusatzboard}}\\ 
- 
-=== Steckverbinder === 
-Das Zusatzboard ist über einen Stecker mit 100 Pins angeschlossen. Auf dem Board sind noch vier weitere Stecker gleichen Typs vorhanden. Diese haben folgende Bezeichnung: 
- 
-^ Beschreibung ^ Bezeichnung ^ Lieferant ^ Bestellnummer ^ 
-| Stecker | DF40C-100DS-0.4V(51) | Mouser | 798-DF40C100DS0.4V51 | 
-| Buchse | DF40C-100DP-0.4V(51) | Mouser | 798-DF40C100DP0.4V51 |