Beágyazott rendszerek - 1
ARM assembly
Minden gépre telepítve van a gcc arm-ra fordító változata. Fordítani az arm-elf-gcc paranccsal tudtok (pl. arm-elf-gcc -o hw hw.c), az elkészült futtathatót pedig az arm-elf-run paranccsal futtathatjátok (pl. arm-elf-run hw).
Példa: a mellékelt arm1f.s egy arm nyelven írt függvény, ami a kapott paraméterét kettővel megszorozva tér vissza. Az arm1main.c-vel összelinkelve (arm-elf-gcc -o h arm1main.c arm1f.s) kipróbálható. Ennek módosításával kapcsolódó feladatok:
- Várjon két paramétert, a-t és b-t (r0-ban és r1-ben veszi át), és térjen vissza 2*a+3*b értékével. (add javasolt szorzás helyett)
- Várjon továbbra is egy paramétert (r0-ban veszi át), és térjen vissza az addig lévő egész számok összegével. Tehát 4 esetében 1+2+3+4=10-zel.
- Várjon továbbra is egy paramétert (r0-ban veszi át), és térjen vissza az annyadik fibonacci számmal.
- Ugyanaz, mint az előző, csak rekurzív megoldással.
Olvasnivaló
http://simplemachines.it/doc/arm_inst.pdf
Kihívás
http://www.inf.u-szeged.hu/~havasi/beagyazott/
A board-on lévő Linuxra fordítás a Beágyazott Rendszerek Laboratóriumban
Három gépet fogunk használni:
- A saját gépet (Windows)
- Egy virtuális gépen (VmWare) futó Linuxot, ahol van a keresztfordítónk
- A GESBC-9315 boardon futó Linuxot
2-es gép használata
- Indítsd el a VMware Playert. Ebben egy parancssoros Linux indul. Felhasználónév/jelszó: student/student.
- Ebben a Linuxban kell a programot megírnod (pl. mcedit szövegszerkesztővel).
- Fordítani az arm-linux-gcc parancsal tudod. Pl.: arm-linux-gcc -o hw hw.c
1-es és 2-es gép kapcsolata
- Kattints a "Mount VM home" ikonra, felhasználónév/jelszó: student/student.
- Ez után X: megajtó alatt eléred a virtuális gépen futó Linux home-ját.
3-as gép használata
- Kattints a putty GESBC9315 inkora
- Kapcsold be a board-ot, és ne avatkozz a boot folyamatba. A Linux automatikusan elindul.
1-es és 3-as gép kapcsolata
- Kattints tftpd32 ikonra, ezzel elindul egy tftp szerver a Windowson.
- Két dolgot ír ki:
- Kiajánlott könyvtár, amit állíts arra, amire a 2-es gépen dolgoztál (és ami most az X: meghajtó alatt már látszik).
- A gép IP száma, amire szükséged lesz.
- Ez után a 3-as gépre az 1-esről át tudsz másolni fájlokat úgy, hogy a boardon a tftp parancsot használod: tftp -g -r filename ip. A filename az átmásolandó fájl neve, az IP a fent kiírt IP. Pl.: tftp -g -r hw 192.168.0.208
Program futtatása a boardon
- Az átmásolt binárisra még adni kell futtatási jogot, pl: chmod +x hw
- Ez után egyszerűen futtatható: ./hw
Linux kernel modul
Az általunk használd boardhoz 2.4-es kernel áll rendelkelkezésünkre.
Egy hello word modul:
{
printk("Hello world!\n");
return 0;
}
{ printk("Goodbye world!\n");
}
MODULE_LICENSE("GPL");
A modul fordítása (hw.c a forrás):
arm-linux-gcc -c -DMODULE -O2 -D__KERNEL__ -isystem linux-2.4.21/include/ hw.c
A modul behúzása: insmod hw.o
A modul kihúzása: rmmod hw
A led fizikai memóriacíme: 0x80840020
Debuggerrel cím megszerzése:
* tronchip
* attach (ARM920T)
* arm/mmu table list
Irodalom
Linux Device Drivers 2nd Edition (2.4) http://www.xml.com/ldd/chapter/book/
Linux Device Drivers 3rd Edition (2.6)
The Linux Kernel Module Programming Guide: