Привет всем !!!
Я являюсь счастливым обладателем платы NGW100 с ядром 2.6.18 столкнулся с такой проблемой: Хочу повесить обработчик прерывания на таймер. Для этого написал модуль «ihtimer.ko» исходник ниже. И модуль который с командной строки записывает значение по адресу write.sh <адрес><значение>.
1. Настраиваю таймер на частоту 1Гц:
#Timer Counter 1
#PM
./write.sh 0xfff00014 0x37d7
#CMR
./write.sh 0xfff01084 0x000fC000
#RC
./write.sh 0xfff0109c 0x8000
#CCR
./write.sh 0xfff01080 0x5
1. Смотрю на осциллографе все правильно таймер работает с частотой 1 Гц.
2. Я подгружаю свой модуль (~ # insmod /home/mods/ihtimer.ko )
3. проверяю что модуль подгружен и настроен на нужное прерывание
~ # lsmod
Module Size Used by Not tainted
ihtimer 1320 0
atmel_mci 7776 0
mmc_block 4712 0
mmc_core 15056 2 atmel_mci,mmc_block
vfat 8352 0
fat 36828 1 vfat
~ # cat /proc/interrupts
CPU0
0: 66571 timer
2: 1 dmac
3: 2 atmel_spi.0
7: 392 ttyS0
23: 0 atmel_timer
25: 526 eth0
26: 6679 eth1
4. Далее включаю на таймере обработку прерывания
#IER
./write.sh 0xfff010A4 0x1
И тут появляется проблема в виде «BUG: soft lockup detected on CPU#0!», плата весит, хотя мой обработчик работает и выдаёт сообщение на консоль, по этим сообщениям, я подсчитал с какой скоростью вызывается мой обработчик ~500кГц и от настроек таймера это не как не зависит.
Где я на грабли наступаю?
листинг «ihtimer.ko» в атаче
Сообщение отредактировал whitevv - Jul 19 2007, 06:46