Projekt
Hodnotenie
Za korektne fungujuci projekt (ide skompilovat, vyrobi korektny image ktory robi co ma), dostanete C. Ak spravíte viac ako potrebné minimum (viď možné vylepšenia v zadaní), dostanete B alebo A, podľa náročnosti.
Zadanie
Vytvorte "media player", ktorý po pripojení usb kľúča / disku začne prehrávať všetky MP3 súbory z neho.
Môžete vytvoriť image buď pre Raspbery-Pi (1 alebo 2) alebo "versatilepb" virtuálny stroj v QEMU (viď qemu inštrukcie a posledné cvičenia).
Odovzdávate skript / Makefile, ktorý automaticky vyrobí:
-
rootfs.img
: obsahuje obraz root disk (viď nižšie.) -
boot
: adresár obsahujúci:- QEMU:
zImage
kernel, viď nižšie. - RPi: bootloader / zImage, viď nižšie.
- QEMU:
- QEMU bude spustené ako:
qemu-system-arm \ -M versatilepb \ -nographic \ -usb \ -net nic \ -net user,hostfwd=tcp:2222-:22 \ -net user,hostfwd=tcp:8080-:80 \ -drive file=rootfs.img,if=scsi,format=raw \ -kernel boot/zImage \ -append "console=ttyAMA0, root=/dev/sda"
-
Rootfs zariadenie je
/dev/sda
lebo qemu emuluje scsi disk, ktoreho podporu v kerneli zapinaversatile_qemu_defconfig
. (Ak by ste kompilovali kernel sversatile_defconfig
, tak ho nebudete mať.) - Ak budete robiť niečo so sieťou (napr. bonusový web server), možete použiť kernelovskú autokonfiguráciu IP (nemusíte inštalovať / púšťať dhcp klienta). Napíšte do README.md, že treba pridať správne option pre kernel...
-
Rootfs zariadenie je
- RPi: SD karta bude sformátovaná podľa toho ako sme robili
na cvikách (Prepare SD card), na prvú (FAT) partíciu
bude nakopírovaný obsah
boot
adresára, na druhú partíciu sa nakopírujerootfs.img
príkazomdd if=rootfs.img of=/dev/mmcblk0p2
(alebo podobným).
Môžete použiť/inšpirovať sa buď Makefile-om z cvičení alebo aj napríklad použiť priamo buildroot ktorý sme si ukazovali na poslendých cvičeniach (silne odporúčané).
Ak pojdete podľa buildroot návodu, jediné potrebné veci by mali byť zapnúť mdev
(System configuration
> /dev management (Dynamic using devtmpfs + mdev)
)
a vyrobiť (a dostať do image-u) správny mdev konfigurák a skript, čo mountne usb disk a pustí
nejaký player (mpg123 ? :) na všetky mp3 súbory z neho (hint: find
a xargs
sú vaši priateľia hlavne s -print0
a -0
prepínačmi, ak chcete, aby dobre
zvládli medzery v názvoch).
QEMU doplňujúce info
versatile_qemu_defconfig
nemá zapnuté úplne všetko čo potrebujete:
- USB driver + mass storage (CONFIG_USB, CONFIG_USB_OHCI_HCD, CONFIG_USB_STORAGE)
Device Drivers ---> [*] USB support ---> <*> Support for Host-side USB <*> OHCI HCD (USB 1.1) support <*> USB Mass Storage support
-
Sieťová karta: qemu podporuje viacero, zaujimave su asi rtl8139 a smc91c111,
versatile_qemu_defconfig
by mal mať zapnutú CONFIG_8139CP, da sa zapnúť aj CONFIG_SMC91X.
Možné vylepšenia
- Veľkosť: čo najmenšie rootfs / kernel.
- HTTP server ukazujúci aktuálny stav (meno prehrávaného súboru, tagy), prípadne jednoduché ovládanie (stop, play, skip next)
Spôsob odovzdávania
Preferovaný spôsob odovzdávania je email (siska@ii.fmph.uniba.sk
,
do predmetu uveďte "Embedded Linux Projekt
") s linkou na git repozitár. Akceptované
sú tiež linka na tarball, prípadne tarball v prilohe (najmenej preferované).
-
build.sh
skript aleboMakefile
ktorý všetko™ spraví. -
Readme.md
súbor, ktorý v prvých pár riadkoch popisuje ako pustiť build (mal by to byť jeden jednoduchý príkaz hovoriaci ako spusť skript / Makefile, všetko ostatné by mal spraviť ten). Zbytok súboru by mal popísať čo a ako ste spravili (dôležité hlavne ak chcete A). -
Feedback.md
súbor obsahujúci vaše komentáre / pripomienky k predmetu: čo sa vám páčilo, čo by ste zmenili, čo by ste ešte radi videli atď... (viem, že to tento rok bolo rozťahané, nepripravené, nedotiahnuté ohľadom HW... ;-). - ďalšie potrebné súbory (patche, konfigy atď.)
Tarball by mal obsahovať jeden adresár so všetkým potrebným (t.j. keď ho rozbalím v aktuálnom adresári, tak vznikne jeden adresár a nie hromada súborov).