EMBEDDED PROJECTS JOURNAL
100% frei und kostenlos,
als PDF und in gedruckter Form,
per Open Source Lizenz
AVR-RISC (Infos)
Embedded Software selbst entwickeln
(inkl. Absatz über USBprog)
AVR-Starterkit für 61,90 EUR
Quicklinks: Home | Online Firmware Pool | Shop
     

Grasshopper - Das AVR32 Basisboard mit GNU/Linux Support

Benedikt Sauter, 7.2.2008, sauter@ixbat.de 

Mit Grasshopper/Nova ist eine freie Plattform für die AVR32 Entwicklung von In-Circuit GmbH enstanden. Das Projekt gibt es als Open Source Projekt unter dem Namen Grasshopper. Offiziell heißt das Produkt bei der Firma In Circuit GmbH ICnova AP7000 Base.

Kommerziellen Support gibt es von der Firma In-Circuit (http://www.in-circuit.de). Für den Open-Source-Support gibt es ein Forum bei Embedded Projects: http://forum.embedded-projects.net/viewforum.php?id=16

Ziel war es, eine leistungsfähige und doch zugleich günstige Plattform für AVR32 Entwicklungen als Open Source Projekt zu schaffen, d.h. es wird wieder alles - also wirklich alles - per freier Lizenz veröffentlicht.

Howto für die ersten Schritte:  http://www.ic-board.de/data/datasheet/icnova-base_welcome_(deutsch).pdf

 

Hier gehts zum Shop von Embedded Projects 

Hier gehts zum Shop von In-Cirucuit


Technischer Ansprechpartner für das Produkt:

In-Circuit GmbH
Königsbrücker Str. 69
D-01099 Dresden
Germany    

fon.  +49 (0) 351 -  42 66 850
fax.   +49 (0) 351 - 42 66 849
mail.  office@in-circuit.de    
web.  http://www.in-circuit.de

 

Technische Daten

  • 140 MHz max. 200 MHz
  • 64 MB SDRAM (32 Bit breit angeschlossen)
  • 8 MB Flash
  • 10/100 MBit/s Netzwerk
  • 1 USB Highspeed Anschluss
  • 8 LED
  • 1 Taster
  • Power LED (kann auch angesteuert werden)
  • Reset Taster
  • Spannungsversorgung: 5-10V verpolungssicher ,USB Kabel oder über Pinleisten
  • Über die Pinleisten sind alle wichtigen Ports herausgeführt

 

GNU/Linux Softwareumgebung

Grasshopper oder ICnova AP7000 Base ist das ideale Linux Einsteigerboard. Mitgeliefert wird der Linux-Kernel mit Patches sowie die komplette Toolchain.

  • GCC
  • uClibc
  • Busybox
  • SSH Zugang für direkten Zugriff auf die Kommandozeile per Ethernet
  • Netzwerkeinstellung automatisch per DHCP
  • HTTP Server
  • Voller Zugriff auf sämtliche GPIOs und Geräteschnittstellen

Erste Schritte unter GNU/Linux mit Grasshopper/Nova

  1. Anstecken an USB
  2. Jetzt sollte eine neue serielle Schnitttstelle erkannt worden sein:  /dev/ttyUSB0
  3. Über ein Terminalprogramm kann man sich jetzt mit der Schaltung verbinden und U-Boot + Linux bei der Arbeit zusehen und sich einloggen.
  4. Als Terminal kann kermit verwenden (In Debian installierbar mit apt-get install ckermit)
  5. Aufruf: kermit
  6. Eingabe: set line /dev/ttyUSB0
  7. Eingabe: set flow none
  8. Eingabe: set speed 115200
  9. Eingabe: set carrier-watch off
  10. Eingabe: c (um Verbindung zu starten)
  11. Drückt man jetzt Reset auf der Schaltung, erscheint folgende Bildschirmausgabe:
U-Boot 1.3.1-gd2cbfd4b-dirty (Mar 25 2008 - 11:49:26) 

U-Boot code: 00000000 -> 0000e820  data: 00014010 -> 0001a658
SDRAM: 64 MB at address 0x10000000
Testing SDRAM...OK       
malloc: Using memory from 0x13fa5000 to 0x13fe5000
DMA: Using memory from 0x13fa1000 to 0x13fa5000
Flash:  8 MB at address 0x00000000
DRAM Configuration:
Bank #0: 10000000 64 MB
*** Warning - bad CRC, using default environment

In:    serial
Out:   serial
Err:   serial
Net:   macb0
Press SPACE to abort autoboot in 3 seconds
partition changed to nor0,2
### JFFS2 loading '/boot/uImage' to 0x10400000
Scanning JFFS2 FS: ........ done.
### JFFS2 load complete: 1309661 bytes loaded to 0x10400000
## Booting image at 10400000 ...
   Image Name:   Linux-2.6.24-rc3-icnova_base1
   Image Type:   AVR32 Linux Kernel Image (gzip compressed)
   Data Size:    1309597 Bytes =  1.2 MB
   Load Address: 10000000
   Entry Point:  90000000
   Verifying Checksum ... OK
   Uncompressing Kernel Image ... OK

Starting kernel at 90000000 (params at 13fa5008)...

Linux version 2.6.24-rc3-icnova_base1 (benjamin@marvin) (gcc version 4.0.4-atmel.0.99.0) #2 Tue Mar 25 18:32:38 CET 2008
CPU: AP7000 [01] revision 0 (AVR32B revision 1)
CPU: MMU configuration: Shared TLB
CPU: features: dsp simd ocd perfctr java
CPU: Running at 140.000 MHz
Physical memory:
  10000000-13ffffff
Reserved memory:
  10000000-1016ea2b: Kernel code
  1016ea2c-102280a7: Kernel data
Exception vectors start at 9000f000
CPU: Paging enabled
Node 0: start_pfn = 0x10000, low = 0x14000
Node 0: mem_map starts at 9022b000
Built 1 zonelists in Zone order, mobility grouping on.  Total pages: 16256
Kernel command line: console=ttyS0 root=1F02 rootfstype=jffs2 mtdparts=physmap-flash.0:128k(boot)ro,64k(env)ro,-(root)
PID hash table entries: 256 (order: 8, 1024 bytes)
timer: AT32AP system timer/counter at 0xfff00c00 irq 22
Console: colour dummy device 80x25
console [ttyS0] enabled
Dentry cache hash table entries: 8192 (order: 3, 32768 bytes)
Inode-cache hash table entries: 4096 (order: 2, 16384 bytes)
Memory: 62720k/62752k available (1406k kernel code, 2784k reserved, 117k data, 60k init)
Calibrating delay using timer specific routine.. 280.42 BogoMIPS (lpj=560840)
Mount-cache hash table entries: 512
net_namespace: 64 bytes
NET: Registered protocol family 16
ICNova: 9 Leds
pdc pdc.0: Atmel Peripheral DMA Controller enabled
at32_eic at32_eic.0: External Interrupt Controller at 0xfff00100, IRQ 19
at32_eic at32_eic.0: Handling 4 external IRQs, starting with IRQ 64
smc smc.0: Atmel Static Memory Controller at 0xfff03400
cpufreq: AT32AP CPU frequency driver
dmac0: DesignWare DMA controller at 0xff200000 irq 2
Time: avr32 clocksource has been installed.
NET: Registered protocol family 2
IP route cache hash table entries: 1024 (order: 0, 4096 bytes)
TCP established hash table entries: 2048 (order: 2, 16384 bytes)
TCP bind hash table entries: 2048 (order: 1, 8192 bytes)
TCP: Hash tables configured (established 2048 bind 2048)
TCP reno registered
audit: initializing netlink socket (disabled)
audit(1167609600.334:1): initialized
JFFS2 version 2.2. (NAND) © 2001-2006 Red Hat, Inc.
io scheduler noop registered
io scheduler cfq registered (default)
atmel_usart.0: ttyS0 at MMIO 0xffe01000 (irq = 7) is a ATMEL_SERIAL
atmel_usart.1: ttyS1 at MMIO 0xffe00c00 (irq = 6) is a ATMEL_SERIAL
MACB_mii_bus: probed
eth0: Atmel MACB at 0xfff01800 irq 25 (00:00:00:00:00:00)
eth0: attached PHY driver [Davicom DM9161A] (mii_bus:phy_addr=0:00, irq=-1)
physmap platform flash device: 00800000 at 00000000
physmap-flash.0: Found 1 x16 devices at 0x0 in 16-bit bank
 Amd/Fujitsu Extended Query Table at 0x0041
number of CFI chips: 1
cfi_cmdset_0002: Disabling erase-suspend-program due to code brokenness.
mtd: scanning for physmap-flash.0
3 cmdlinepart partitions found on MTD device physmap-flash.0
Creating 3 MTD partitions on "physmap-flash.0":
0x00000000-0x00020000 : "boot"
ftl_cs: FTL header not found.
0x00020000-0x00030000 : "env"
ftl_cs: FTL header not found.
0x00030000-0x00800000 : "root"
ftl_cs: FTL header not found.
block2mtd: version $Revision: 1.30 $
atmel_usba_udc atmel_usba_udc.0: MMIO registers at 0xfff03000 mapped at fff03000
atmel_usba_udc atmel_usba_udc.0: FIFO at 0xff300000 mapped at ff300000
ether gadget: using random self ethernet address
ether gadget: using random host ethernet address
usb0: Ethernet Gadget, version: May Day 2005
usb0: using atmel_usba_udc, OUT ep2out-bulk IN ep1in-bulk STATUS ep3in-int
usb0: MAC 32:31:96:60:47:24
usb0: HOST MAC f2:30:65:c8:c7:52
usb0: RNDIS ready
Registered led device: pwrled:red
Registered led device: led1:green
Registered led device: led2:green
Registered led device: led3:green
Registered led device: led4:green
Registered led device: led5:green
Registered led device: led6:green
Registered led device: led7:green
Registered led device: led8:green
TCP cubic registered
NET: Registered protocol family 1
NET: Registered protocol family 17
RPC: Registered udp transport module.
RPC: Registered tcp transport module.
VFS: Mounted root (jffs2 filesystem).
Freeing init memory: 60K (90000000 - 9000f000)
init started: BusyBox v1.5.0 (2008-03-03 14:15:42 CET) multi-call binary



Thank you for using In-Circuit ICNova

icnova login:

Jetzt kann man sich mit dem Benutzernamen: default (kein Passwort) anmelden. Möchte man mit Root-Rechten arbeiten, muss man einfach su eingeben. Ist während dem Starten ein Netzwerkkabel angeschlossen, an dem sich zugleich ein DHCP-Server befindet, kann die Schaltung dann auch über Netzwerk angesteuert werden. (Telnet + SSH + HTTP)

 
Aktuell erscheint immer die Meldung:  sh: can't access tty; job control turned off (es ist noch nicht klar, woher die Meldung kommt - aber sie kann ignoriert werden)

Erste Schritte unter Windows mit Grasshopper / ICNova Base

  1. USB Kabel zwischen Grasshopper und Linux Rechner anbringen
  2. Meldung: Neue Hardware gefunden CP2102 USB to UART Bridge Controller
  3. Windows sucht jetzt einen Treiber
  4. Normalerweise sollte Windows passende USB-Klassentreiber selbst installieren. Falls dies nicht klappt, können die Treiber vom Hersteller der UART-Bridge Silabs installiert werden: http://www.silabs.com/public/documents/software_doc/drivers/Microcontrollers/Interface/en/CP210x_VCP_Win2K_XP_S2K3.exe
  5. Jetzt kann man sich mit dem Programm Hyperterminal mit der Schaltung verbinden
    1. Verbindungsname: Grasshopper
    2. Verbindung herstellen über: com4 (dies ist bei jedem anders. Meist haben die USB COM Schnittstellen höhere Nummern)
    3. Bits pro Sekunde: 115200, Datenbits: 8, Parität: keine, Stoppbits: 1, Flusssteuerung: Keine
    4. Ok -> Jetzt sollte man nach dem drücken von Reset die U-Boot- und Linuxmeldungen sehen
  6. Mit dem Benutzernamen: default und keinem Passwort kann man sich anmelden

LEDs ein- und ausschalten

Die LEDs können über das Dateisystem angesteuert werden. Dafür wird man am besten zum Benutzer root.

  • Eingabe: su
  • In Verzeichnis wechseln: cd /sys/class/led
  • LEDs anschauen: ls
  • In Verzeichnis der gewünschten LED gehen:  cd pwrled\:red/
  • LED ausschalten: echo 1 >> brightness
  • LED einschalten: echo 0 >> brightness

Ports ein und ausschalten

An den Seiten der Schaltung sind ein großer Teil der GPIO-Leitungen herausgeführt. Diese können wie folgt über die Konsole angesteuert werden.

Setup 

  1. In entsprechendes Verzeichnis wechseln: cd /config/gpio
  2. Verzeichnis anlegen: mkdir iotest
  3. In dem Verzeichnis finden Sie 4 vom System angelegte Dateien
  4. In die Datei gpio_id tragen Sie den Port des AP7000 ein: echo X >> gpio_id
    (X entspricht dabei der Portnummer. Tragen Sie hier eine 0 für Port A oder eine 1 für Port B ein)
  5. In der Datei pin_mask setzen Sie die Pin-Maske für alle Pins welche genutzt werden sollen.
  6. In der Datei oe_mask werden spezifiziert ob ein Pin ein Ein- oder Ausgang ist. Eine 1 an der entsprechenden Stelle bedeutet der Pin ist ein Ausgang. Eine 0 entsprechend ein Eingang.
  7. Zum Schluss tragen Sie in die Datei enable eine 1, um die Konfiguration zu aktivieren

Zugriff

  1. In alter UNIX/Linux Manier muss eine Datei für das Gerät im Dateisystem unter dem Ordner /dev angelegt werden: touch /dev/iotest
  2. Zugriff auf die Pins: echo 1 >>  /dev/iotest (wird direkt auf dem Port ausgegeben)
  3. Zustand lesen: cat /dev/iotest

Linuxkernel + Umgebung selbst übersetzen

Das ist dank einer Buildrootumgebung eine sehr einfache Sache. Die Umgebung für Grasshopper wurde nach dem Datenblatt (AVR32003) von Atmel erzeugt. Das Ganze kann eigentlich jeder der ein Linuxrechner hat, mit dem man ins Internet gehen kann, ganz einfach nachvollziehen.

  1. Buildroot Umgebung herunterladen: wget http://sr11.sharebase.de/files/grasshopper.tar.gz
  2. Archiv entpacken: tar xzf grasshopper.tar.gz
  3. In den Ordner grasshopper gehen: cd grasshopper
  4. Dort entweder mit: make direkt den Übersetzungs- und Installationsprozess starten (Es werden alle benötigen Programme automatisch heruntergeladen und installiert)
  5. Gerne kann auch weitere Software ausgewählt werden, die in das Linux integriert werden soll:
    make menuconfig
Viel Spaß beim Bauen einer eigenen Linuxumgebung für Grasshopper.

 

Support

Hilfe gibts hier:

http://forum.embedded-projects.net/viewforum.php?id=16

Download

Da die folgenden Dateien sehr groß sind (127 MB und 140 MB), liegen sie auf einem Server von http://www.sharebase.de. Sharebase.de ist ein Dienst, um Dateien mit anderen Leuten zu tauschen. Das Sharebase.de Team sponsert uns offiziell Platz und Traffic für das Gasshopper-Projekt. Vielen Dank dafür!

 © 2007 by Embedded Projects, Benedikt Sauter