A következő címkéjű bejegyzések mutatása: programozás - ARM (EP9302). Összes bejegyzés megjelenítése
A következő címkéjű bejegyzések mutatása: programozás - ARM (EP9302). Összes bejegyzés megjelenítése

2008. június 2., hétfő

TS-7200 - EP9302 regiszterek virtuális cimei

Mikor elakarjuk egy kernel modulban érni a processzor egy adott regiszterét, akkor a fizikai cimet le kell forditani virtuális cimmé. Ez architektúra függő.
Ez utan kutattam tegnap, hogy EP9302 processzor esetében hogy is néz ki a dolog 2.4 Linux kernel alatt.

Szükséges include fájlok:

(kernel forrásfa)
linux/include/asm-arm/arch-ep93xx/

io.h -itt van definiálva az __io() makró. Ezzel lehet a fizikai cim virtuális cimmé való átalakitását elvégezni. Én cim_forditásnak nevezem.
regmap.h -ebben van definiálva az IO_ADDRESS makró, használja az io.h, ezért ezt is be kell huzni a modulban !


Pl. mondjuk el szeretnénk érni az E port adat -és adatirány regiszterét:

static unsigned long virt_gpio_addr;
static volatile unsigned int *PEDR;
static volatile unsigned int *PEDDR;

//cimforditás
virt_gpio_addr = ( unsigned long ) __io(0x80840000); //GPIO psychical base address
// a port fizikai cime : 0x80840000 + 0x20
PEDR = (unsigned int *)(virt_gpio_addr + 0x20); // port e data reg
// a port fizikai cime : 0x80840000 + 0x24
PEDDR = (unsigned int *)(virt_gpio_addr + 0x24); // port e data direction register

*PEDR = új érték
*PEDDR = új érték

Viszont előtte érdemes elmenteni a regiszterek értékét.

regmap.h -itt megnézhetők a base address-ek (bar adatlapban is benne van)
Tömör és érdekes olvasmány a fenti két header tanulmányozása.

>>Link <<: Példa egy egyszerű LED vezérlő kernel modulra.

Linux 2.4 kernel modulok telepitése TS-7200 gépre

A make modules_install a /lib/modules/verzio alá rakja a modulokat.

Viszont meg lehet adni a INSTALL_MOD_PATH változóban a Makefile -nak hogy melyik alkönyvtár alá rakja a modulokat.

make ARCH=arm INSTALL_MOD_PATH=/opt/kmodulok modules
make ARCH=arm INSTALL_MOD_PATH=/opt/kmodulok modules_install

A modulok cél gépre való felmásolása után (/lib/modules/) le kell futtatni a depmod -a programot (modutils csomaghoz tartozik). Ez a modulok modulfüggőségeiről készit listat a modules.dep fileba. A lista mondja meg hogy milyen modul fügőségei vannak egy adott modulnak. Ezt használja a modprobe. Mikor egy modult ba akarunk tölteni a modprobe megnézi a listaban hogy van-e függősege, es ha van azt is betölti.

Modutils csomag forrása
http://dir.filewatcher.com/d/Slackware/Other/modutils-2.4.27.tar.bz2.234963.html

2008. május 30., péntek

TS-7200 ARM


Mar régóta szerettem volna kiprobálni a majdnem fél éve az asztalomon heverő TS-7200 ARM gépet. Mivel a gépemen nincs RS-232 port, ezért mindig elmaradt.
Végre elkeszült az USB RS232 átalakitóm es kitudtam próbálni egy LED villogtató rövid C programmal;-). A lépéseket lejegyeztem egy cikkben.
>>Link<<