Sheevaplug

From C4 Wiki
Revision as of 22:48, 29 September 2009 by Andy (talk | contribs)
Jump to: navigation, search

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.

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.

File: /etc/udev/rules.d/90-sheevaplug.rules
# 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>

Quelle

  • 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

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.

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)

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.

J4:

Pin Name
1 GND
2 JT_TDI
3 JT_SRSTn
4 JT_TDO
5 JT_CLK
6 JT_TMS_CPU
7 JT_RESET
8 3V3

J6:

Pin Name
1 GND
2 UART0_RXD
3 UART0_TXD
4 TW_SDA
5 TW_SCL
6 3V3

J7:

Pin Name
1 GND
2 UART0_RXD
3 UART0_TXD
4 3V3

J11 hat nochmal den Host-USB-Port herausgeführt. J11:

Pin Name
1 GND
2 USB_P
3 USB_N
4 USBVCC+
5 AGND (Shield)

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