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
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
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.
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
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.
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.
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.
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
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.
hier der link: http://git.denx.de/cgi-bin/gitweb.cgi?p=u-boot/u-boot-avr32.git;a=commit;h=fc3174ef4dc5a90d52858e37505c51573fc3cfe3
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
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?
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!
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
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... :(
Matthias Rick schrieb:
> da er die 32 MB SDRAM nicht finden kann... :(
ups, sorry, hab gerade erst nachgeschaut, das Ding hat ja nur 8MB.
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??
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?
> 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.
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
Na der fbviewer läuft... aber der zeigt ja nur bilder an, oder?? ich hätt gern ne textausgabe!
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.
Das klingt ja prinzipiell sehr einfach! ;) gibts da vielleicht irgendwo n howto, das mir weiterhelfen könnte???
... 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.
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.
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???
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.