Forum: Mikrocontroller und Digitale Elektronik AVR32 STK1000 console auf Display


von Philip H. (goldfinger)


Lesenswert?

Hallo,

ich möchte aus meinem STK1000 ein Internetradio machen.

Ich höre schon was ich will, so dass ich mir jetzt ein Menü 
(wahrscheinlich mit ncurses) zur Senderauswahl aufs Display zaubern 
möchte.

Dazu benötige ich wohl erstmal die console auf dem Display, oder? Im 
Moment knallen mir die Init-Scripte nur die beiden Bootsplash-Bilder 
aufs Display.

Mein System habe ich aus buildroot 2.3.0 mit stk1002_defconfig und 
hinzugefügtem mplayer zusammengebaut.

Wie bekomme ich die console aufs Display?

Danke,
Philip

von Matricks (Gast)


Lesenswert?

Hey Philip,

Hab in etwa das selbe vor und weis mittlerweile schonmal, dass man die 
Console im Menuconfig des Kernels aktivieren muss. Das ganze geht dann 
über den Framebuffer. Ich nehm mal an du nimmst ebenfalls den 
2.6.27.6er-Kernel?! Dann gib einfach mal in deinem Buildroot-Verzeichnis 
make linux26-menuconfig ein und du findest die Option dann unter Device 
Drivers -> Graphics Support... leider hab ich es bisher auch noch nicht 
hinbekommen...
Ich hoffe ich konnte dir damit wenigstens nen Anstoß geben... falls 
jemand ne Lösung hatte würde ich mich um nen Post freuen!

Grüße,
Matricks

von Udo S. (udo)


Lesenswert?

schaut doch mal in das Heft 1 vom Embedded Journal.
http://www.embedded-projects.net/index.php?page_id=238

Philip H. schrieb:
> Dazu benötige ich wohl erstmal die console auf dem Display, oder?

Wieso?
Du must nur das Grafik-Device  und den Framebuffer aktivieren.

von Matthias R. (matricks)


Lesenswert?

Dank dir Udo, für den Hinweis auf den Artikel. Dennoch gehts noch nich. 
Sobald ich die Option "Framebuffer Console support" im Kernel-Menuconfig 
aktiviere, bleibt er beim Booten nach den folgenden Zeilen stehen:
1
atmel_lcdfb atmel_lcdfb.0: 600KiB frame buffer at 10249000 (mapped at b0249000)
2
atmel_lcdfb atmel_lcdfb.0: FIFO underflow 0x10
Jemand ne Idee, woran es liegen kann, das er nicht weiterkommt?? bzw. ne 
Anleitung wie ich von meiner Default-Config vom STK1000 dazu komme, das 
er mir die Console aufm Display anzeigt! (Benutze übrigens 
U-Boot-Version 1.3.4)
Beste Grüße,
Matricks

von ... (Gast)


Lesenswert?

Das grundsätzliche Problem ist bei dem STK1000 und NGW100, das der 
SD-Ram Bus nur 16bit breit ist.
Eine Methode um die underflows zu eliminieren ist, die Auflösung fürs 
Display zu reduzieren. Außerdem könnte man noch die priorisierung des 
LCDC in der HMATRIX forcieren. Dazu gibt es hier eine Info:
http://www.avrfreaks.net/index.php?name=PNphpBB2&file=viewtopic&t=77769

"600KiB frame buffer " sollte schon im u-boot initialisiert werden.

von Philip H. (goldfinger)


Angehängte Dateien:

Lesenswert?

So, da bin ich wieder, ich musste den Rechner neu aufsetzen...

Habe den Kernel neu kompiliert und hänge am gleichen Problem wie 
Matthias:
1
atmel_lcdfb atmel_lcdfb.0: 225KiB frame buffer at 10380000 (mapped at b0380000)
2
atmel_lcdfb atmel_lcdfb.0: FIFO underflow 0x10

Ein anderes Mal bootete es ein wenig weiter, ich bekam Tux und eine 
durchlaufende Console auf dem Display zu sehen, aber der Bootvorgang 
hing etwas dafür später:
1
atmel_lcdfb atmel_lcdfb.0: 225KiB frame buffer at 10380000 (mapped at b0380000)
2
atmel_lcdfb atmel_lcdfb.0: FIFO underflow 0x10
3
Console: switching to colour frame buffer device 40x30
4
atmel_lcdfb atmel_lcdfb.0: fb0: Atmel LCDC at 0xff000000 (mapped at ff000000), irq 1
5
atmel_usart.0: ttyS0 at MMIO 0xffe01000 (irq = 7) is a ATMEL_SERIAL
6
atmel_usart.2: ttyS2 at MMIO 0xffe01800 (irq = 9) is a ATMEL_SERIAL
7
MACB_mii_bus: probed
8
eth0: Atmel MACB at 0xfff01800 irq 25 (00:04:25:19:07:b2)
9
eth0: attached PHY driver [Generic PHY] (mii_bus:phy_addr=0:10, irq=-1)
10
physmap platform flash device: 00800000 at 00000000
11
physmap-flash.0: Found 1 x16 devices at 0x0 in 16-bit bank
12
 Amd/Fujitsu Extended Query Table at 0x0041
13
physmap-flash.0: Swapping erase regions for broken CFI table.
14
number of CFI chips: 1
15
cfi_cmdset_0002: Disabling erase-suspend-program due to code brokenness.
16
RedBoot partition parsing not available
17
Using physmap partition information
18
Creating 3 MTD partitions on "physmap-flash.0":
19
0x00000000-0x00020000 : "u-boot"
20
0x00020000-0x007f0000 : "root"
21
0x007f0000-0x00800000 : "env"
22
atmel_spi atmel_spi.0: Atmel SPI Controller at 0xffe00000 (irq 3)
23
atmel_spi atmel_spi.0: Using bounce buffer at 0x24000000 len 4096
24
atmel_usba_udc atmel_usba_udc.0: MMIO registers at 0xfff03000 mapped at fff03000
25
atmel_usba_udc atmel_usba_udc.0: FIFO at 0xff300000 mapped at ff300000
26
at32ap700x_rtc at32ap700x_rtc.0: rtc core: registered at32ap700x_rtc as rtc0
27
at32ap700x_rtc at32ap700x_rtc.0: Atmel RTC for AT32AP700x at fff00080 irq 21
28
at32_wdt at32_wdt.0: AT32 WDT at 0xfff000b0, timeout 2 sec (nowayout=0)
29
atmel_mci atmel_mci.0: Atmel MCI controller at 0xfff02400 irq 28, 1 slots
30
TCP cubic registered
31
NET: Registered protocol family 10
32
NET: Registered protocol family 17
33
RPC: Registered udp transport module.
34
RPC: Registered tcp transport module.
35
cpufreq: AT32AP CPU frequency driver
36
at32ap700x_rtc at32ap700x_rtc.0: setting system clock to 1970-01-01 00:00:00 UTC (0)
37
mmc0: new MMC card at address 0001
38
mmcblk0: mmc0:0001 D0601 125440KiB
39
 mmcblk0: p1
Wieso lief der Bootvorgang trotz fifo underflow weiter und welches 
Problem habe ich mit meiner MMC-Karte, von er ich boote? Sonst hat es 
damit nie Probleme gegeben. Kann der Kernel sie nicht mounten? Ich habe 
sie - wie immer - in der /etc/fstab nach / gemountet.

von ... (Gast)


Lesenswert?

Philip H. schrieb:
> welches
> Problem habe ich mit meiner MMC-Karte, von er ich boote?

Wenn du von der Sd-Karte bootest brauchst du sie doch nicht mounten?

Ich versteh eh nicht warum ihr die alten Atmel Klamotten nehmt und nicht 
das aktuelle buildroot 2009.11. Da sind alle Teile von Atmel 
eingeflossen.

von Matthias R. (matricks)


Lesenswert?

Hab es jetzt mal mit buildroot 2009.11 probiert und stoße auf das 
gleiche Problem beim Initialisieren! Hier mal mein Bootvorgang:
1
## Booting kernel from Legacy Image at 10200000 ...
2
   Image Name:   Linux-2.6.30.2
3
   Image Type:   AVR32 Linux Kernel Image (gzip compressed)
4
   Data Size:    1179370 Bytes =  1.1 MB
5
   Load Address: 10000000
6
   Entry Point:  90000000
7
   Verifying Checksum ... OK
8
   Uncompressing Kernel Image ... OK
9
10
Starting kernel at 90000000 (params at 1076b008)...
11
12
Linux version 2.6.30.2 (root@mcm) (gcc version 4.2.2-atmel.1.1.3.avr32linux.1) #6 Wed Feb 3 15:06:59 CET 2010
13
CPU: AT32AP700x chip revision A
14
CPU: AP7 [01] core revision 0 (AVR32B arch revision 1)
15
CPU: MMU configuration: Shared TLB
16
CPU: features: dsp simd ocd perfctr java
17
CPU: Running at 140.000 MHz
18
Physical memory:
19
  10000000-107fffff
20
Reserved memory:
21
  10000000-10165d73: Kernel code
22
  10165d74-10204347: Kernel data
23
  10205000-1029afff: Framebuffer
24
Exception vectors start at 90013000
25
CPU: Paging enabled
26
Node 0: start_pfn = 0x10000, low = 0x10800
27
Node 0: mem_map starts at 9029d000
28
Built 1 zonelists in Zone order, mobility grouping off.  Total pages: 2032
29
Kernel command line: console=ttyS0 root=/dev/mmcblk0p1 fbmem=600k rootwait
30
NR_IRQS:288
31
PID hash table entries: 32 (order: 5, 128 bytes)
32
avr32_comparator: irq 0, 140.000 MHz
33
Console: colour dummy device 80x25
34
console [ttyS0] enabled
35
Dentry cache hash table entries: 1024 (order: 0, 4096 bytes)
36
Inode-cache hash table entries: 1024 (order: 0, 4096 bytes)
37
Memory: 5440k/5440k available (1355k kernel code, 2752k reserved, 118k data, 76k init)
38
SLUB: Genslabs=11, HWalign=32, Order=0-3, MinObjects=0, CPUs=1, Nodes=1
39
Calibrating delay using timer specific routine.. 281.71 BogoMIPS (lpj=563430)
40
Mount-cache hash table entries: 512
41
net_namespace: 520 bytes
42
smc smc.0: Atmel Static Memory Controller at 0xfff03400
43
NET: Registered protocol family 16
44
pdc pdc.0: Atmel Peripheral DMA Controller enabled
45
at32_eic at32_eic.0: External Interrupt Controller at 0xfff00100, IRQ 19
46
at32_eic at32_eic.0: Handling 4 external IRQs, starting with IRQ 64
47
bio: create slab <bio-0> at 0
48
NET: Registered protocol family 2
49
IP route cache hash table entries: 1024 (order: 0, 4096 bytes)
50
TCP established hash table entries: 512 (order: 0, 4096 bytes)
51
TCP bind hash table entries: 512 (order: -1, 2048 bytes)
52
TCP: Hash tables configured (established 512 bind 512)
53
TCP reno registered
54
NET: Registered protocol family 1
55
JFFS2 version 2.2. © 2001-2006 Red Hat, Inc.
56
msgmni has been set to 16
57
io scheduler noop registered
58
io scheduler cfq registered (default)
59
atmel_lcdfb atmel_lcdfb.0: 600KiB frame buffer at 10205000 (mapped at b0205000)
60
atmel_lcdfb atmel_lcdfb.0: FIFO underflow 0x10

Hat das überhaupt schonmal jemand zum laufen bekommen... Vielleicht 
liegts auch an U-Boot (Version 1.3.4)! Da wird ja das Display ebenfalls 
verwendet! Jemand ne Idee?

Grüße,
Matthias

von ... (Gast)


Lesenswert?

Matthias Rick schrieb:
> Vielleicht liegts auch an U-Boot

Ich würde auf jedenfall auch die Uboot-Version nehmen, die buildroot 
mitbaut.
Allerdings braucht man für das NGW100 beim 2009.11er buildroot einen 
Patch fürs u-boot.
Wenn ich nachher zu Hause bin poste ich mal den link.

von ... (Gast)


Lesenswert?


von Matthias R. (matricks)


Lesenswert?

Also... mit u-boot 2009.08 wird immerhin der Pinguin angezeigt, aber 
keine consolenausgabe... und u-boot liest auch nur eine meiner 
SD-Karten... also nicht wirklich ein fortschritt...
hab ja inzwischen auch schonmal versucht ne gui mit qt zu basteln... 
aber ich glaub da fehlt dem stk1000 RAM... da hat er zur darstellung 
eines Fensters etwa 5 minuten gebraucht! kennt jemand alternativen die 
"ordentlich" funktionieren??

Beste Grüße,
Matthias

von ... (Gast)


Lesenswert?

Matthias Rick schrieb:
> mit u-boot 2009.08 wird immerhin der Pinguin angezeigt,
sind denn die FIFO underflows weg?

Matthias Rick schrieb:
> und u-boot liest auch nur eine meiner SD-Karten...
also booten max. von 2GiB-SD-Karte.

Matthias Rick schrieb:
> kennt jemand alternativen die "ordentlich" funktionieren??
Grasshopper?

von Matthias R. (matricks)


Lesenswert?

Die FIFO Underflows sind weg! Und die SD-Karte, die funktioniert hat 128 
MB ;) ! Die 2GB SD-Karte funktioniert nicht! Ich meinte mit Alternative 
eigentlich ne softwareseitige Alternative... denn das STK1000 hab ich 
da... und seit gestern auch nen JTAGICE MKII!

von ... (Gast)


Angehängte Dateien:

Lesenswert?

Matthias Rick schrieb:
> Die 2GB SD-Karte funktioniert nicht!

Das ist komisch, weil ab Version 1.3.4 u-boot booten bis 2GB 
unterstützt. Das ist sicher, weil ich hier nur 2GB Karten habe :). 
Versuch mal das angefügte u-boot.

Das RAM kann man beim NGW100 aufstocken, wie das jetzt beim stk1000 
aussieht weiß ich jetzt nicht.
http://avr32linux.org/twiki/bin/view/Main/ModifyTheNGW100

von Matthias R. (matricks)


Lesenswert?

Die Version 1.3.4 erkennt ja auch meine 2GB-SD-Karte... die 2009.08er 
aber nicht... Zwecks RAM aufstocken hab ich bisher nur gelesen, dass es 
wohl welche gemacht haben, aber ne Anleitung hab ich noch nicht 
gefunden! Deine U-Boot-Version funktioniert bei mir leider auch nicht, 
da er die 32 MB SDRAM nicht finden kann... :(

von ... (Gast)


Lesenswert?

Matthias Rick schrieb:
> da er die 32 MB SDRAM nicht finden kann... :(

ups, sorry, hab gerade erst nachgeschaut, das Ding hat ja nur 8MB.

von Matthias R. (matricks)


Lesenswert?

Prinzipiell möchte ich ja nur n bissel Text aufm LCD ausgeben... quasi n 
"kleiner" MP3-Player, bei dem die Titel angezeigt werden... alles bis 
auf das Display läuft schon (dank mplayer)... jemand noch ne Idee??

von ... (Gast)


Lesenswert?

Matthias Rick schrieb:
> alles bis auf das Display läuft schon

hast du mal den fbv (iewer) in menuconfig aktiviert und kannst du Bilder 
damit anzeigen?

von Philip H. (goldfinger)


Lesenswert?

> hast du mal den fbv (iewer) in menuconfig aktiviert und kannst du Bilder
> damit anzeigen?

Der ist standardmäßig dabei und zeigt den die beiden Bootsplash-Bilder 
an.

von ... (Gast)


Lesenswert?

Philip H. schrieb:
> Der ist standardmäßig dabei und zeigt den die beiden Bootsplash-Bilder

anscheinend nicht, denn

Matthias Rick schrieb:
> alles bis auf das Display läuft schon

von Matthias R. (matricks)


Lesenswert?

Na der fbviewer läuft... aber der zeigt ja nur bilder an, oder?? ich 
hätt gern ne textausgabe!

von ... (Gast)


Lesenswert?

ja gut, aber es hörte sich so an als wenn die Ausgabe des framebuffers 
auf dem Display nicht funktioniert.

Grundsätzlich wird alles auf dem Display angezeigt, was du in den 
framebuffer rein schreibst.

Also brauchst du dir nur ein Programm zu schreiben, dass die MP3 Titel 
extrahiert und in den framebuffer schreibt.

von Matthias R. (matricks)


Lesenswert?

Das klingt ja prinzipiell sehr einfach! ;) gibts da vielleicht irgendwo 
n howto, das mir weiterhelfen könnte???

von ... (Gast)


Lesenswert?


von Philip H. (goldfinger)


Lesenswert?

... schrieb:
> Also brauchst du dir nur ein Programm zu schreiben, dass die MP3 Titel
> extrahiert und in den framebuffer schreibt.

Das ist mir soweit klar, kann man sich dort ein Framework à la ncurses 
zur Hilfe nehmen? Ich habe noch nicht herausgefunden das ncurses als 
Ausgabeschnittstelle benötigt.

von ... (Gast)


Lesenswert?

Philip H. schrieb:
> Das ist mir soweit klar, kann man sich dort ein Framework à la ncurses
> zur Hilfe nehmen?

ncurses eher nicht, aber mit freetype kannst du ASCII-Zeichen in Pixel 
wandeln.

Das, was du in den Framebuffer schreiben kannst, sind ja keine 
ASCII-Zeichen, sondern Pixel-Sätze.

von Matthias Rick (Gast)


Lesenswert?

So weit ich das verstehe, müsste für ncurses die 
FramebufferConsolen-Aktivierung funktionieren! Oder???
Theoretisch reicht ja ne Bibliothek bei der wenigstens schonmal ein 
Fontsatz implementiert ist... DirectFB hab ich inzwischen auch schonmal 
probiert... das bekommt Buildroot auch nicht kompiliert... is aber auch 
glaub ich für n bissel textausgabe überdimensioniert! was meint ihr???

von ... (Gast)


Lesenswert?

nimm freetype

von ... (Gast)


Angehängte Dateien:

Lesenswert?

vielleicht hilft euch dieser code in C++ . 2 Klassen, eine für den 
framebuffer und eine für freetype.

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.