Difference between revisions of "Sheevaplug"
(→FTDI unter Mac OS X) |
m (Reverted edits by Oxudocopaj (talk) to last revision by 91.64.224.165) |
||
(36 intermediate revisions by 9 users not shown) | |||
Line 1: | Line 1: | ||
− | + | Der [http://en.wikipedia.org/wiki/SheevaPlug SheevaPlug] einer der ersten "Steckdosen-Computer" die auf dem Markt verfügbar sind. Das Herzstück des SheevaPlug ist der 1,2 GHz Marvell Kirkwood 6281 ARM Prozessor. | |
− | + | ===General=== | |
+ | Der Default Benutzer um sich auf dem SheevaPlug einzuloggen lautet: | ||
+ | <pre> | ||
+ | Benutzer: root | ||
+ | Passwort: nosoup4u | ||
+ | </pre> | ||
+ | ==Debugging Schnittstellen== | ||
===FTDI unter Linux=== | ===FTDI unter Linux=== | ||
− | *Um auf | + | *Um auf die serielle Konsole des Plugs zuzugreifen, braucht man ein USB Kabel mit B-Mini Stecker. |
− | *Damit der serielle Zugriff funktioniert | + | *Damit der serielle Zugriff funktioniert werden die noetigen Kernel Treiber entweder einkompiliert oder als Module benoetigt. |
<pre> | <pre> | ||
Device Drivers ---> | Device Drivers ---> | ||
Line 11: | Line 17: | ||
</pre> | </pre> | ||
− | Nach dem einschalten des SheevaPlugs sollte er als Device /dev/ttyUSB* erscheinen | + | ====UDEV Regeln==== |
+ | |||
+ | Nach dem einschalten des SheevaPlugs sollte er als Device /dev/ttyUSB* erscheinen. | ||
+ | Ist das nicht der Fall, kenn der FTDI Treiber die VID und PID des Sheevaplugs nicht. | ||
+ | Dann muss man noch einige udev-Regeln hinzufügen. | ||
+ | |||
+ | {{File|/etc/udev/rules.d/90-sheevaplug.rules|<pre> | ||
+ | # load module | ||
+ | ACTION=="add", SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_interface", \ | ||
+ | ATTRS{idVendor}=="9e88", ATTRS{idProduct}=="9e8f", \ | ||
+ | DRIVER=="", \ | ||
+ | RUN+="/sbin/modprobe -b ftdi_sio" | ||
+ | |||
+ | # add vid and pid to driver | ||
+ | ACTION=="add", SUBSYSTEM=="drivers", \ | ||
+ | ENV{DEVPATH}=="/bus/usb-serial/drivers/ftdi_sio", \ | ||
+ | ATTR{new_id}="9e88 9e8f" | ||
+ | |||
+ | # set permissions so users can access the devices | ||
+ | ATTRS{idVendor}=="9e88", ATTRS{idProduct}=="9e8f", MODE="0660", GROUP="plugdev" | ||
+ | </pre>}} | ||
− | + | Dann einmal ausstöpseln, wieder einstecken, das Modul sollte geladen werden. | |
+ | Danach sollten die Devices /dev/ttyUSB{0,1} vorhanden sein. | ||
+ | 0 ist das JTAG, 1 ist die serielle Konsole. | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | + | ====Modul manuell laden==== | |
+ | Wenn man das Modul manuell laden will, kann man modprobe die VID und PID als Parameter mitgeben: | ||
+ | <pre>modprobe ftdi_sio vendor=0x9e88 product=0x9e8f</pre> | ||
===FTDI unter Mac OS X=== | ===FTDI unter Mac OS X=== | ||
* Ladet euch zuerst den folgenden Treiber [http://www.ftdichip.com/Drivers/VCP/MacOSX/UniBin/FTDIUSBSerialDriver_v2_2_10.dmg Virtuel COM Port Drivers] (VCP) für Mac OS X (Intel) 10.4 oder höher. | * Ladet euch zuerst den folgenden Treiber [http://www.ftdichip.com/Drivers/VCP/MacOSX/UniBin/FTDIUSBSerialDriver_v2_2_10.dmg Virtuel COM Port Drivers] (VCP) für Mac OS X (Intel) 10.4 oder höher. | ||
− | * Folgt der Anleitung zur Installation des | + | * Folgt der Anleitung zur Installation des Treibers |
− | *Nach dem Reboot editiert folgende Datei mit | + | *Nach dem Reboot editiert folgende Datei mit root-Rechten |
<pre> | <pre> | ||
sudo vim /System/Library/Extensions/FTDIUSBSerialDriver.kext/Contents/Info.plist | sudo vim /System/Library/Extensions/FTDIUSBSerialDriver.kext/Contents/Info.plist | ||
Line 86: | Line 106: | ||
sudo kextload /System/Library/Extensions/FTDIUSBSerialDriver.kext | sudo kextload /System/Library/Extensions/FTDIUSBSerialDriver.kext | ||
</pre> | </pre> | ||
− | *Zum Schluss schließt | + | *Zum Schluss schließt den SheevaPlug an, nun sollte eigentlich alles funktionieren |
+ | |||
+ | ===FTDI unter Windows=== | ||
+ | Die Treiberinstallation wurde nur unter Windows 7 getestet, da die Treiber aber ursprünglich für XP geschrieben wurden, sollte dieses Vorgehen auch unter XP und Vista zum Ziel führen. | ||
+ | ====Update der Treiber==== | ||
+ | Als erstes müssen die Treiber (WindowsTeraTermUSBDriver.zip) zur Unterstützung von einer miniUSB auf Seriell-Verbindung von der CD oder [http://www.marvell.com/files/products/embedded_processors/developer/kirkwood/SheevaPlug_Host_SWsupportPackageWindowsHost.zip direkt von Marvell] heruntergeladen werden. | ||
+ | Diese dann einfach z.B. nach "C:\" entpacken. | ||
+ | |||
+ | Sobald die USB-Verbindung zum Sheevaplug aufgebaut wird, versucht Windows die Treiber über WindowsLive herunterzuladen, was jedoch nicht funktioniert. | ||
+ | |||
+ | Also ab in den Gerätemanager: | ||
+ | <pre>Start -> Systemsteuerung -> Geräte-Manager</pre> | ||
+ | |||
+ | Nun sollten unter dem Menüpunkt "Andere" zwei Geräte aufgelistet sein, in deren Bezeichnung irgendetwas mit "sheevaplug" steht. | ||
+ | Für die beiden die Treiberinstallation manuell anstoßen und auf das Verzeichnis linken, in das die Treiber entpackt wurden. | ||
+ | Dannach erscheint im Gerätemanager der Connector für Seriell über USB, für den ebenfalls der Treiber manuell installiert werden muss. | ||
+ | Der Treiber befindet sich ebenfalls im heruntergeladenen Verzeichnis. | ||
+ | |||
+ | ===Verbindung aufbauen=== | ||
+ | ====Minicom==== | ||
+ | <pre> | ||
+ | sudo port install minicom | ||
+ | </pre> | ||
+ | oder | ||
+ | <pre> | ||
+ | sudo aptitude install minicom | ||
+ | </pre> | ||
+ | oder was auch immer ihr so nutzt | ||
+ | |||
+ | Startet minicom wie folgt | ||
+ | <pre> | ||
+ | sudo minicom -s | ||
+ | </pre> | ||
+ | Der parameter -s wird benötigt um eine Konfigurationsdatei anzulegen. | ||
+ | Im Anschluß passt noch unter dem Menü Punkt "Serial Port Setup" noch das "Serial Device" an. | ||
+ | |||
+ | Minicom Config | ||
+ | <pre> | ||
+ | * Serial Device: /dev/ttyUSB1 | ||
+ | * Baudrate: 115200bps | ||
+ | * Databits: 8 | ||
+ | * Parity: None | ||
+ | * Stopbits: 1 | ||
+ | * Hardware Flow Control: No | ||
+ | * Software Flow Control: No | ||
+ | </pre> | ||
+ | |||
+ | Die Konfiguration ist auch bekannt als 115200 8N1. | ||
+ | |||
+ | ====PuTTY==== | ||
+ | Unter Windows ist [http://www.puttyssh.org/ PuTTY] eine Möglichkeit auf den Plug zu kommen. | ||
+ | |||
+ | Zum Einrichten muss unter "Connection -> Serial" folgendes eingestellt werden: | ||
+ | <pre> | ||
+ | * Serial line to connect to: *COM(X)* | ||
+ | * Speed (baud): 115200 | ||
+ | * Data bits: 8 | ||
+ | * Stop bits: 1 | ||
+ | * Parity: None | ||
+ | * Flow control: None | ||
+ | </pre> | ||
+ | |||
+ | Dannach kann über "Session" der "Connection type" auf Serial gestellt werden und über "Open" die Verbindung hergestellt werden. | ||
+ | |||
+ | ====Screen==== | ||
+ | <pre> | ||
+ | screen /dev/ttyUSB1 115200 | ||
+ | </pre> | ||
+ | |||
+ | ==Pimp my Sheevaplug== | ||
+ | ===SATA=== | ||
+ | We proudly present: | ||
+ | |||
+ | Sheevaplug 1.3 Schematics: http://plugcomputer.org/index.php/us/resources/downloads?func=startdown&id=56 | ||
+ | |||
+ | Eigentlich sollten alle Leute im Club bereits die 1.3er Version haben. Diese hat, wenn man sie öffnet, auf der Platine einen unbestückten eSata-Connector. Die Traces der 4 Datenleitungen sind auf dem PCB sichtbar und führen zu 4 unbestückten Pads. Laut den Schematics da oben sollen da 4 10nF Kondensatoren drauf. Die Biester sind arschklein, sollte aber machbar sein. Ich werde mal ein bischen nach nem passenden Connector und den Kondensatoren suchen und das ganze mal austesten. (Andy - Matschkeks) | ||
+ | |||
+ | Im Forum plugcomputer.org hat mich jemand angeschrieben, der meinte, dass man das SATA-Subsystem im Prozessor noch mit Strom versorgen müsste. Ich hab dann mal im Schaltplan gesucht und nachgeschaut. Das sind nochmal 4 Kondensatoren und ein Ferrit. Nicht die Welt, nur sauklein. | ||
+ | |||
+ | ====Teileliste==== | ||
+ | Ich hab mal ne Teileliste geschraubt: | ||
+ | <pre>Spannungsversorgung SATA-Subsystem im Prozessor: | ||
+ | Siehe Schaltplan Seite 7 Quadranten H12 bis H14 | ||
+ | |||
+ | Pos. Bezeichnung Stück Bauform Schaltplanbezeichnung | ||
+ | ---------------------------------------------------------------- | ||
+ | 1 100nF Kerko 2 SMD 0402 C78-C79 | ||
+ | 2 1µF Kerko 2 SMD 0402 C196-C197 | ||
+ | 3 Ferrit 60 Ohm 1 SMD 0602 BIT7 | ||
+ | |||
+ | |||
+ | SATA-Connector und Filterkondensatoren(?) | ||
+ | Siehe Schaltplan Seite 10 Quadranten F9 bis E13 | ||
+ | |||
+ | Pos. Bezeichnung Stück Bauform Schaltplanbezeichnung | ||
+ | ---------------------------------------------------------------- | ||
+ | 1 10nF Kerko 4 SMD 0402 C164, C188-C190 | ||
+ | 2 eSata Buchse 1 Print ESATA | ||
+ | 90° gewinkelt</pre> | ||
+ | |||
+ | ===Pinheader=== | ||
+ | In dem obigen Schaltplan sieht man ebenfalls, dass das UART nochmal an J7 und J6 rausgeführt ist, falls man da was vor dem FTDI abgreifen will. An J6 gibt es zusätzlich noch eine I2C Schnittstelle. J4 führt die JTAG-Schnittstelle, die an den FTDI geht raus. J11 hat nochmal den Host-USB-Port herausgeführt. | ||
+ | |||
+ | Pinheader: | ||
+ | {| class="wikitable" | ||
+ | ! Pin !! J4 !! J6 !! J7 !! J11 | ||
+ | |- | ||
+ | | 1 || GND || GND || GND || GND | ||
+ | |- | ||
+ | | 2 || JT_TDI || UART0_RXD || UART0_RXD || USB_P | ||
+ | |- | ||
+ | | 3 || JT_SRSTn || UART0_TXD || UART0_TXD || USB_N | ||
+ | |- | ||
+ | | 4 || JT_TDO || TW_SDA || 3V3 || USBVCC+ | ||
+ | |- | ||
+ | | 5 || JT_CLK || TW_SCL || || AGND (Shield) | ||
+ | |- | ||
+ | | 6 || JT_TMS_CPU || 3V3 || || | ||
+ | |- | ||
+ | | 7 || JT_RESET || || || | ||
+ | |- | ||
+ | | 8 || 3V3 || || || | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | ===Grüne LED per GPIO steuern=== | ||
+ | Geht nur bei Revision 1.3: | ||
+ | |||
+ | Man muss R242 auslöten und an die (unbestückte) Stelle von R70 setzen. Danach soll man den Kernel entsprechend patchen und das Teil dann steuern können. | ||
+ | |||
+ | Quelle: http://plugcomputer.org/plugforum/index.php?topic=797.0 | ||
+ | |||
+ | |||
+ | Sheevaplug SATA Hack: http://plugcomputer.org/plugforum/index.php?topic=927.0 | ||
+ | |||
+ | ==Betriebssysteme== | ||
+ | ===Linux Netzwerkboot=== | ||
+ | # Kernel in ein per TFTP bereitgestelltes Verzeichnis schieben | ||
+ | # Root-Filesystem in ein Verzeichnis entpacken, dass per NFS exportiert werden soll. Unbedingt auf passende Rechte achten | ||
+ | # /etc/exports anpassen, um Root-FS freizugeben. Beispiel unter Mac OS (Linux hat andere Syntax): {{File|/etc/exports|<pre> /Users/andy/Desktop/sheevadev/fs -network 192.168.0.0 -mask 255.255.255.0 -rw -maproot=root </pre>}} | ||
+ | # Am Sheevaplug den U-Boot umkonfigurieren: | ||
+ | <pre> | ||
+ | setenv ipaddr 192.168.0.2 | ||
+ | setenv netmask 255.255.255.0 | ||
+ | setenv serverip 192.168.0.1 | ||
+ | setenv bootargs console=ttyS0,115200 rw root=/dev/nfs nfsroot=192.168.0.1:/Users/andy/Desktop/sheevadev/fs ip=192.168.0.2::192.168.0.123:255.255.255.0:sheevaplug:eth0:none | ||
+ | </pre> | ||
+ | |||
+ | IP-Adressen sind entsprechend anzupassen: | ||
+ | <pre> | ||
+ | 192.168.0.2 = Plug IP | ||
+ | 192.168.0.1 = Server IP | ||
+ | 192.168.0.123 = Gateway | ||
+ | sheevaplug = Hostname | ||
+ | none = Hier kann man dhcp oder bootp eintragen, falls verfügbar und gewünscht | ||
+ | </pre> | ||
+ | |||
+ | Gebootet werden kann das System danach mit folgenden 2 Befehlen: | ||
+ | <pre> | ||
+ | tftpboot 0x800000 kernelimage.ubi | ||
+ | bootm 0x800000 | ||
+ | </pre> | ||
+ | |||
+ | Will man, dass der Sheevaplug das auch per Autoboot macht, setzt man noch die bootcmd-Variable im U-Boot: | ||
+ | <pre> | ||
+ | setenv bootcmd tftpboot 0x800000 kernelimage.ubi\; bootm 0x800000 | ||
+ | </pre> | ||
+ | |||
+ | ===Gentoo Installation=== | ||
+ | http://dev.gentoo.org/~armin76/arm/sheevaplug/install.xml | ||
+ | |||
+ | ==Original U-Boot Config== | ||
+ | <pre> | ||
+ | baudrate=115200 | ||
+ | loads_echo=0 | ||
+ | rootpath=/mnt/ARM_FS/ | ||
+ | netmask=255.255.0.0 | ||
+ | console=console=ttyS0,115200 | ||
+ | CASset=min | ||
+ | MALLOC_len=1 | ||
+ | ethprime=egiga0 | ||
+ | bootargs_root=root=/dev/mtdblock2 ro | ||
+ | ethmtu=1500 | ||
+ | usb0Mode=host | ||
+ | nandEcc=1bit | ||
+ | ethact=egiga0 | ||
+ | cesvcid=ULULULULULULPPULULULULULDA | ||
+ | bootargs_end=:::DB88FXX81:eth0:none | ||
+ | image_name=uImage | ||
+ | standalone=fsload 0x2000000 $(image_name);setenv bootargs $(console) root=/dev/mtdblock0 rw ip=$(ipaddr):$(serverip)$(bootargs_end) $(mvPhoneConfig); bootm 0x2000000; | ||
+ | mvPhoneConfig=mv_phone_config=dev0:fxs,dev1:fxs | ||
+ | mvNetConfig=mv_net_config=(00:11:88:0f:62:81,0:1:2:3),mtu=1500 | ||
+ | yuk_ethaddr=00:00:00:EE:51:81 | ||
+ | netretry=no | ||
+ | rcvrip=169.254.100.100 | ||
+ | loadaddr=0x02000000 | ||
+ | autoload=no | ||
+ | ethaddr=00:50:43:01:D5:94 | ||
+ | run_diag=no | ||
+ | bootargs=console=ttyS0,115200 mtdparts=nand_mtd:0x400000@0x100000(uImage),0x1fb00000@0x500000(rootfs) rw root=/dev/mtdblock1 rw ip=10.4.50.4:10.4.50.5:10.4.50.5:255.255.255.0:DB88FXX81:eth0:none | ||
+ | bootcmd=nand read.e 0x800000 0x100000 0x400000; bootm 0x800000 | ||
+ | ipaddr=192.168.100.200 | ||
+ | serverip=192.168.100.181 | ||
+ | stdin=serial | ||
+ | stdout=serial | ||
+ | stderr=serial | ||
+ | mainlineLinux=no | ||
+ | enaMonExt=no | ||
+ | enaCpuStream=no | ||
+ | enaWrAllo=no | ||
+ | pexMode=RC | ||
+ | disL2Cache=no | ||
+ | setL2CacheWT=yes | ||
+ | disL2Prefetch=yes | ||
+ | enaICPref=yes | ||
+ | enaDCPref=yes | ||
+ | sata_dma_mode=yes | ||
+ | netbsd_en=no | ||
+ | vxworks_en=no | ||
+ | bootdelay=3 | ||
+ | disaMvPnp=no | ||
+ | enaAutoRecovery=yes | ||
+ | </pre> | ||
+ | ==Boot Screen== | ||
+ | <pre> | ||
+ | __ __ _ _ | ||
+ | | \/ | __ _ _ ____ _____| | | | ||
+ | | |\/| |/ _` | '__\ \ / / _ \ | | | ||
+ | | | | | (_| | | \ V / __/ | | | ||
+ | |_| |_|\__,_|_| \_/ \___|_|_| | ||
+ | _ _ ____ _ | ||
+ | | | | | | __ ) ___ ___ | |_ | ||
+ | | | | |___| _ \ / _ \ / _ \| __| | ||
+ | | |_| |___| |_) | (_) | (_) | |_ | ||
+ | \___/ |____/ \___/ \___/ \__| | ||
+ | ** MARVELL BOARD: SHEEVA PLUG LE | ||
+ | |||
+ | U-Boot 1.1.4 (Mar 19 2009 - 16:06:59) Marvell version: 3.4.16 | ||
+ | |||
+ | U-Boot code: 00600000 -> 0067FFF0 BSS: -> 006CEE80 | ||
+ | |||
+ | Soc: 88F6281 A0 (DDR2) | ||
+ | CPU running @ 1200Mhz L2 running @ 400Mhz | ||
+ | SysClock = 400Mhz , TClock = 200Mhz | ||
+ | |||
+ | DRAM CAS Latency = 5 tRP = 5 tRAS = 18 tRCD=6 | ||
+ | DRAM CS[0] base 0x00000000 size 256MB | ||
+ | DRAM CS[1] base 0x10000000 size 256MB | ||
+ | DRAM Total size 512MB 16bit width | ||
+ | Flash: 0 kB | ||
+ | Addresses 8M - 0M are saved for the U-Boot usage. | ||
+ | Mem malloc Initialization (8M - 7M): Done | ||
+ | NAND:512 MB | ||
+ | |||
+ | CPU : Marvell Feroceon (Rev 1) | ||
+ | |||
+ | Streaming disabled | ||
+ | Write allocate disabled | ||
+ | |||
+ | |||
+ | USB 0: host mode | ||
+ | PEX 0: interface detected no Link. | ||
+ | Net: egiga0 [PRIME], egiga1 | ||
+ | Hit any key to stop autoboot: 0 | ||
+ | Marvell>> | ||
+ | </pre> | ||
+ | == Stromverbrauch == | ||
+ | Intern liegen an dem Netzteil 5,2V an. Im Idle Betrieb braucht die Sheevaplug 0,4A. Die NIC weitere 100mA. Bei CPU-Last mit NIC werden ca 700mA benoetigt. Hinzukommt noch der Strom fuer USB-Endgeraete wie eine Festplatte. | ||
+ | == Kernel flashen == | ||
+ | beim mir funktionierte die Methode mit 'cat uImage > /dev/mtdblock1' nicht: | ||
+ | flash_eraseall -j /dev/mtd1 | ||
+ | nandwrite -a -p /dev/mtd1 /mnt/gentoo/usr/src/linux/arch/arm/boot/uImage |
Latest revision as of 17:37, 24 November 2010
Der SheevaPlug einer der ersten "Steckdosen-Computer" die auf dem Markt verfügbar sind. Das Herzstück des SheevaPlug ist der 1,2 GHz Marvell Kirkwood 6281 ARM Prozessor.
Contents
General
Der Default Benutzer um sich auf dem SheevaPlug einzuloggen lautet:
Benutzer: root Passwort: nosoup4u
Debugging Schnittstellen
FTDI unter Linux
- Um auf die serielle Konsole des Plugs zuzugreifen, braucht man ein USB Kabel mit B-Mini Stecker.
- Damit der serielle Zugriff funktioniert werden die noetigen Kernel Treiber entweder einkompiliert oder als Module benoetigt.
Device Drivers ---> <*> USB support ---> <*> USB Serial Converter support ---> <*> USB FTDI Single Port Serial Driver
UDEV Regeln
Nach dem einschalten des SheevaPlugs sollte er als Device /dev/ttyUSB* erscheinen. Ist das nicht der Fall, kenn der FTDI Treiber die VID und PID des Sheevaplugs nicht. Dann muss man noch einige udev-Regeln hinzufügen.
# load module ACTION=="add", SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_interface", \ ATTRS{idVendor}=="9e88", ATTRS{idProduct}=="9e8f", \ DRIVER=="", \ RUN+="/sbin/modprobe -b ftdi_sio" # add vid and pid to driver ACTION=="add", SUBSYSTEM=="drivers", \ ENV{DEVPATH}=="/bus/usb-serial/drivers/ftdi_sio", \ ATTR{new_id}="9e88 9e8f" # set permissions so users can access the devices ATTRS{idVendor}=="9e88", ATTRS{idProduct}=="9e8f", MODE="0660", GROUP="plugdev"
Dann einmal ausstöpseln, wieder einstecken, das Modul sollte geladen werden. Danach sollten die Devices /dev/ttyUSB{0,1} vorhanden sein. 0 ist das JTAG, 1 ist die serielle Konsole.
Modul manuell laden
Wenn man das Modul manuell laden will, kann man modprobe die VID und PID als Parameter mitgeben:
modprobe ftdi_sio vendor=0x9e88 product=0x9e8f
FTDI unter Mac OS X
- Ladet euch zuerst den folgenden Treiber Virtuel COM Port Drivers (VCP) für Mac OS X (Intel) 10.4 oder höher.
- Folgt der Anleitung zur Installation des Treibers
- Nach dem Reboot editiert folgende Datei mit root-Rechten
sudo vim /System/Library/Extensions/FTDIUSBSerialDriver.kext/Contents/Info.plist
Kopiert nun folgenden zusätzlichen Inhalt hinein
<key>SheevaPlug JTAGKey FT2232D A</key> <dict> <key>CFBundleIdentifier</key> <string>com.FTDI.driver.FTDIUSBSerialDriver</string> <key>IOClass</key> <string>FTDIUSBSerialDriver</string> <key>IOProviderClass</key> <string>IOUSBInterface</string> <key>bConfigurationValue</key> <integer>1</integer> <key>bInterfaceNumber</key> <integer>0</integer> <key>idProduct</key> <integer>40591</integer> <key>idVendor</key> <integer>40584</integer> </dict> <key>SheevaPlug JTAGKey FT2232D B</key> <dict> <key>CFBundleIdentifier</key> <string>com.FTDI.driver.FTDIUSBSerialDriver</string> <key>IOClass</key> <string>FTDIUSBSerialDriver</string> <key>IOProviderClass</key> <string>IOUSBInterface</string> <key>bConfigurationValue</key> <integer>1</integer> <key>bInterfaceNumber</key> <integer>1</integer> <key>idProduct</key> <integer>40591</integer> <key>idVendor</key> <integer>40584</integer> </dict>
- Reinitialisiert die Abhängikeiten mit dem folgendem Befehl
sudo touch /System/Library/Extensions
- Sollte dieses nicht funktionieren könnt Ihr auch das Modul neu Laden, dabei geht Ihr wie folgt vor
sudo kextunload /System/Library/Extensions/FTDIUSBSerialDriver.kext
sollte hier bei ein Fehler gelistet werden, einfach Ignorieren
sudo kextload /System/Library/Extensions/FTDIUSBSerialDriver.kext
- Zum Schluss schließt den SheevaPlug an, nun sollte eigentlich alles funktionieren
FTDI unter Windows
Die Treiberinstallation wurde nur unter Windows 7 getestet, da die Treiber aber ursprünglich für XP geschrieben wurden, sollte dieses Vorgehen auch unter XP und Vista zum Ziel führen.
Update der Treiber
Als erstes müssen die Treiber (WindowsTeraTermUSBDriver.zip) zur Unterstützung von einer miniUSB auf Seriell-Verbindung von der CD oder direkt von Marvell heruntergeladen werden. Diese dann einfach z.B. nach "C:\" entpacken.
Sobald die USB-Verbindung zum Sheevaplug aufgebaut wird, versucht Windows die Treiber über WindowsLive herunterzuladen, was jedoch nicht funktioniert.
Also ab in den Gerätemanager:
Start -> Systemsteuerung -> Geräte-Manager
Nun sollten unter dem Menüpunkt "Andere" zwei Geräte aufgelistet sein, in deren Bezeichnung irgendetwas mit "sheevaplug" steht. Für die beiden die Treiberinstallation manuell anstoßen und auf das Verzeichnis linken, in das die Treiber entpackt wurden. Dannach erscheint im Gerätemanager der Connector für Seriell über USB, für den ebenfalls der Treiber manuell installiert werden muss. Der Treiber befindet sich ebenfalls im heruntergeladenen Verzeichnis.
Verbindung aufbauen
Minicom
sudo port install minicom
oder
sudo aptitude install minicom
oder was auch immer ihr so nutzt
Startet minicom wie folgt
sudo minicom -s
Der parameter -s wird benötigt um eine Konfigurationsdatei anzulegen. Im Anschluß passt noch unter dem Menü Punkt "Serial Port Setup" noch das "Serial Device" an.
Minicom Config
* Serial Device: /dev/ttyUSB1 * Baudrate: 115200bps * Databits: 8 * Parity: None * Stopbits: 1 * Hardware Flow Control: No * Software Flow Control: No
Die Konfiguration ist auch bekannt als 115200 8N1.
PuTTY
Unter Windows ist PuTTY eine Möglichkeit auf den Plug zu kommen.
Zum Einrichten muss unter "Connection -> Serial" folgendes eingestellt werden:
* Serial line to connect to: *COM(X)* * Speed (baud): 115200 * Data bits: 8 * Stop bits: 1 * Parity: None * Flow control: None
Dannach kann über "Session" der "Connection type" auf Serial gestellt werden und über "Open" die Verbindung hergestellt werden.
Screen
screen /dev/ttyUSB1 115200
Pimp my Sheevaplug
SATA
We proudly present:
Sheevaplug 1.3 Schematics: http://plugcomputer.org/index.php/us/resources/downloads?func=startdown&id=56
Eigentlich sollten alle Leute im Club bereits die 1.3er Version haben. Diese hat, wenn man sie öffnet, auf der Platine einen unbestückten eSata-Connector. Die Traces der 4 Datenleitungen sind auf dem PCB sichtbar und führen zu 4 unbestückten Pads. Laut den Schematics da oben sollen da 4 10nF Kondensatoren drauf. Die Biester sind arschklein, sollte aber machbar sein. Ich werde mal ein bischen nach nem passenden Connector und den Kondensatoren suchen und das ganze mal austesten. (Andy - Matschkeks)
Im Forum plugcomputer.org hat mich jemand angeschrieben, der meinte, dass man das SATA-Subsystem im Prozessor noch mit Strom versorgen müsste. Ich hab dann mal im Schaltplan gesucht und nachgeschaut. Das sind nochmal 4 Kondensatoren und ein Ferrit. Nicht die Welt, nur sauklein.
Teileliste
Ich hab mal ne Teileliste geschraubt:
Spannungsversorgung SATA-Subsystem im Prozessor: Siehe Schaltplan Seite 7 Quadranten H12 bis H14 Pos. Bezeichnung Stück Bauform Schaltplanbezeichnung ---------------------------------------------------------------- 1 100nF Kerko 2 SMD 0402 C78-C79 2 1µF Kerko 2 SMD 0402 C196-C197 3 Ferrit 60 Ohm 1 SMD 0602 BIT7 SATA-Connector und Filterkondensatoren(?) Siehe Schaltplan Seite 10 Quadranten F9 bis E13 Pos. Bezeichnung Stück Bauform Schaltplanbezeichnung ---------------------------------------------------------------- 1 10nF Kerko 4 SMD 0402 C164, C188-C190 2 eSata Buchse 1 Print ESATA 90° gewinkelt
Pinheader
In dem obigen Schaltplan sieht man ebenfalls, dass das UART nochmal an J7 und J6 rausgeführt ist, falls man da was vor dem FTDI abgreifen will. An J6 gibt es zusätzlich noch eine I2C Schnittstelle. J4 führt die JTAG-Schnittstelle, die an den FTDI geht raus. J11 hat nochmal den Host-USB-Port herausgeführt.
Pinheader:
Pin | J4 | J6 | J7 | J11 |
---|---|---|---|---|
1 | GND | GND | GND | GND |
2 | JT_TDI | UART0_RXD | UART0_RXD | USB_P |
3 | JT_SRSTn | UART0_TXD | UART0_TXD | USB_N |
4 | JT_TDO | TW_SDA | 3V3 | USBVCC+ |
5 | JT_CLK | TW_SCL | AGND (Shield) | |
6 | JT_TMS_CPU | 3V3 | ||
7 | JT_RESET | |||
8 | 3V3 |
Grüne LED per GPIO steuern
Geht nur bei Revision 1.3:
Man muss R242 auslöten und an die (unbestückte) Stelle von R70 setzen. Danach soll man den Kernel entsprechend patchen und das Teil dann steuern können.
Quelle: http://plugcomputer.org/plugforum/index.php?topic=797.0
Sheevaplug SATA Hack: http://plugcomputer.org/plugforum/index.php?topic=927.0
Betriebssysteme
Linux Netzwerkboot
- Kernel in ein per TFTP bereitgestelltes Verzeichnis schieben
- Root-Filesystem in ein Verzeichnis entpacken, dass per NFS exportiert werden soll. Unbedingt auf passende Rechte achten
- /etc/exports anpassen, um Root-FS freizugeben. Beispiel unter Mac OS (Linux hat andere Syntax): File: /etc/exports
/Users/andy/Desktop/sheevadev/fs -network 192.168.0.0 -mask 255.255.255.0 -rw -maproot=root
- Am Sheevaplug den U-Boot umkonfigurieren:
setenv ipaddr 192.168.0.2 setenv netmask 255.255.255.0 setenv serverip 192.168.0.1 setenv bootargs console=ttyS0,115200 rw root=/dev/nfs nfsroot=192.168.0.1:/Users/andy/Desktop/sheevadev/fs ip=192.168.0.2::192.168.0.123:255.255.255.0:sheevaplug:eth0:none
IP-Adressen sind entsprechend anzupassen:
192.168.0.2 = Plug IP 192.168.0.1 = Server IP 192.168.0.123 = Gateway sheevaplug = Hostname none = Hier kann man dhcp oder bootp eintragen, falls verfügbar und gewünscht
Gebootet werden kann das System danach mit folgenden 2 Befehlen:
tftpboot 0x800000 kernelimage.ubi bootm 0x800000
Will man, dass der Sheevaplug das auch per Autoboot macht, setzt man noch die bootcmd-Variable im U-Boot:
setenv bootcmd tftpboot 0x800000 kernelimage.ubi\; bootm 0x800000
Gentoo Installation
http://dev.gentoo.org/~armin76/arm/sheevaplug/install.xml
Original U-Boot Config
baudrate=115200 loads_echo=0 rootpath=/mnt/ARM_FS/ netmask=255.255.0.0 console=console=ttyS0,115200 CASset=min MALLOC_len=1 ethprime=egiga0 bootargs_root=root=/dev/mtdblock2 ro ethmtu=1500 usb0Mode=host nandEcc=1bit ethact=egiga0 cesvcid=ULULULULULULPPULULULULULDA bootargs_end=:::DB88FXX81:eth0:none image_name=uImage standalone=fsload 0x2000000 $(image_name);setenv bootargs $(console) root=/dev/mtdblock0 rw ip=$(ipaddr):$(serverip)$(bootargs_end) $(mvPhoneConfig); bootm 0x2000000; mvPhoneConfig=mv_phone_config=dev0:fxs,dev1:fxs mvNetConfig=mv_net_config=(00:11:88:0f:62:81,0:1:2:3),mtu=1500 yuk_ethaddr=00:00:00:EE:51:81 netretry=no rcvrip=169.254.100.100 loadaddr=0x02000000 autoload=no ethaddr=00:50:43:01:D5:94 run_diag=no bootargs=console=ttyS0,115200 mtdparts=nand_mtd:0x400000@0x100000(uImage),0x1fb00000@0x500000(rootfs) rw root=/dev/mtdblock1 rw ip=10.4.50.4:10.4.50.5:10.4.50.5:255.255.255.0:DB88FXX81:eth0:none bootcmd=nand read.e 0x800000 0x100000 0x400000; bootm 0x800000 ipaddr=192.168.100.200 serverip=192.168.100.181 stdin=serial stdout=serial stderr=serial mainlineLinux=no enaMonExt=no enaCpuStream=no enaWrAllo=no pexMode=RC disL2Cache=no setL2CacheWT=yes disL2Prefetch=yes enaICPref=yes enaDCPref=yes sata_dma_mode=yes netbsd_en=no vxworks_en=no bootdelay=3 disaMvPnp=no enaAutoRecovery=yes
Boot Screen
__ __ _ _ | \/ | __ _ _ ____ _____| | | | |\/| |/ _` | '__\ \ / / _ \ | | | | | | (_| | | \ V / __/ | | |_| |_|\__,_|_| \_/ \___|_|_| _ _ ____ _ | | | | | __ ) ___ ___ | |_ | | | |___| _ \ / _ \ / _ \| __| | |_| |___| |_) | (_) | (_) | |_ \___/ |____/ \___/ \___/ \__| ** MARVELL BOARD: SHEEVA PLUG LE U-Boot 1.1.4 (Mar 19 2009 - 16:06:59) Marvell version: 3.4.16 U-Boot code: 00600000 -> 0067FFF0 BSS: -> 006CEE80 Soc: 88F6281 A0 (DDR2) CPU running @ 1200Mhz L2 running @ 400Mhz SysClock = 400Mhz , TClock = 200Mhz DRAM CAS Latency = 5 tRP = 5 tRAS = 18 tRCD=6 DRAM CS[0] base 0x00000000 size 256MB DRAM CS[1] base 0x10000000 size 256MB DRAM Total size 512MB 16bit width Flash: 0 kB Addresses 8M - 0M are saved for the U-Boot usage. Mem malloc Initialization (8M - 7M): Done NAND:512 MB CPU : Marvell Feroceon (Rev 1) Streaming disabled Write allocate disabled USB 0: host mode PEX 0: interface detected no Link. Net: egiga0 [PRIME], egiga1 Hit any key to stop autoboot: 0 Marvell>>
Stromverbrauch
Intern liegen an dem Netzteil 5,2V an. Im Idle Betrieb braucht die Sheevaplug 0,4A. Die NIC weitere 100mA. Bei CPU-Last mit NIC werden ca 700mA benoetigt. Hinzukommt noch der Strom fuer USB-Endgeraete wie eine Festplatte.
Kernel flashen
beim mir funktionierte die Methode mit 'cat uImage > /dev/mtdblock1' nicht:
flash_eraseall -j /dev/mtd1 nandwrite -a -p /dev/mtd1 /mnt/gentoo/usr/src/linux/arch/arm/boot/uImage