Procesor: PowerPC 405GP
System: Linux 2.6.22.1
Witam,
korzystam z EBC banku 1, mam tam podlaczone pewne urzadzenie. Konfiguruje to tak:
set_dcr(EBC0_CFGADDR, EBC0_B1CR);
set_dcr(EBC0_CFGDATA, 0xE001C000);
set_dcr(EBC0_CFGADDR, EBC0_B1AP);
set_dcr(EBC0_CFGDATA, 0x89020100);
set_dcr(EBC0_CFGADDR, EBC0_CFG);
set_dcr(EBC0_CFGDATA, 0xF36000000);
Rejestry sie ustawiaja bo to juz sprawdzilem. Problem jest z odwolaniem sie teraz do tego obszaru pamieci. Probujac odczytac wartosc z pod adresu 0xE0004080 (wlasnie z tego banku) Linux wypada na trapie:
Oops: kernel access of bad area, sig: 11 [#5]
PREEMPT
NIP: C2099628 LR: C2099618 CTR: C01CF13C
REGS: c0b55df0 TRAP: 0300 Not tainted (2.6.22.1)
MSR: 00029030 <EE,ME,IR,DR> CR: 24000442 XER: 00000000
DAR: E0004080, DSISR: 00000000, result: 00000000
TASK = c0e94460[156] 'cat' THREAD: c0b54000
EBC0_BEAR: 00000000, EBC0_BESR0: 00000000, EBC0_BESR1: 00000000
EBC0_B1CR: E001C000, EBC0_B1AP: 89020100
ZPR: 10000000
GPR00: C2099618 C0B55EA0 C0E94460 C2099AE4 00000001 00000001 00000000 C0340000
GPR08: C034B7A3 E0004080 000092DE C0B54000 C0011400 1001C148 7FB67C80 10000000
GPR16: 00000000 00000000 00000001 00000000 FFFFFFFF 100BFDC8 100C6028 00000000
GPR24: 7FB67DB4 00000002 C0BC71A4 C03F02A0 C0B523B8 C0B523B8 C0925BE0 00000008
NIP [C2099628] stratix_check+0x78/0x94 [gpio]
LR [C2099618] stratix_check+0x68/0x94 [gpio]
Call Trace:
[C0B55EA0] [C2099618] stratix_check+0x68/0x94 [gpio] (unreliable)
[C0B55EB0] [C20994D8] gpio_release+0x78/0xa8 [gpio]
[C0B55EC0] [C006FDF0] __fput+0xd4/0x1ec
[C0B55EF0] [C006FD0C] fput+0x30/0x40
[C0B55F00] [C006DEF0] filp_close+0x80/0x98
[C0B55F20] [C006DFA0] sys_close+0x98/0xe0
[C0B55F40] [C0002B10] ret_from_syscall+0x0/0x3c
Instruction dump:
38000023 7c120386 3d403600 3920000f 7d330386 3c60c20a 38639ac8 480000cd
3c60c20a 3d20e000 38639ae4 61294080 <80890000> 480000b5 80010014 38600000
Segmentation fault
Prawdopodobnie mmu ma zablokowany ten obszar. Wszystko konfiguruje sie w TLB i ZPR ale nie do konca wiem jak t zrobic. Trzeba odnalezc odpowiedni TLB powiazany z tym obszarem pamieci i go ustawic ale jak to nie wiem
Czy ktos moze mi pomoc ?
System: Linux 2.6.22.1
Witam,
korzystam z EBC banku 1, mam tam podlaczone pewne urzadzenie. Konfiguruje to tak:
set_dcr(EBC0_CFGADDR, EBC0_B1CR);
set_dcr(EBC0_CFGDATA, 0xE001C000);
set_dcr(EBC0_CFGADDR, EBC0_B1AP);
set_dcr(EBC0_CFGDATA, 0x89020100);
set_dcr(EBC0_CFGADDR, EBC0_CFG);
set_dcr(EBC0_CFGDATA, 0xF36000000);
Rejestry sie ustawiaja bo to juz sprawdzilem. Problem jest z odwolaniem sie teraz do tego obszaru pamieci. Probujac odczytac wartosc z pod adresu 0xE0004080 (wlasnie z tego banku) Linux wypada na trapie:
Oops: kernel access of bad area, sig: 11 [#5]
PREEMPT
NIP: C2099628 LR: C2099618 CTR: C01CF13C
REGS: c0b55df0 TRAP: 0300 Not tainted (2.6.22.1)
MSR: 00029030 <EE,ME,IR,DR> CR: 24000442 XER: 00000000
DAR: E0004080, DSISR: 00000000, result: 00000000
TASK = c0e94460[156] 'cat' THREAD: c0b54000
EBC0_BEAR: 00000000, EBC0_BESR0: 00000000, EBC0_BESR1: 00000000
EBC0_B1CR: E001C000, EBC0_B1AP: 89020100
ZPR: 10000000
GPR00: C2099618 C0B55EA0 C0E94460 C2099AE4 00000001 00000001 00000000 C0340000
GPR08: C034B7A3 E0004080 000092DE C0B54000 C0011400 1001C148 7FB67C80 10000000
GPR16: 00000000 00000000 00000001 00000000 FFFFFFFF 100BFDC8 100C6028 00000000
GPR24: 7FB67DB4 00000002 C0BC71A4 C03F02A0 C0B523B8 C0B523B8 C0925BE0 00000008
NIP [C2099628] stratix_check+0x78/0x94 [gpio]
LR [C2099618] stratix_check+0x68/0x94 [gpio]
Call Trace:
[C0B55EA0] [C2099618] stratix_check+0x68/0x94 [gpio] (unreliable)
[C0B55EB0] [C20994D8] gpio_release+0x78/0xa8 [gpio]
[C0B55EC0] [C006FDF0] __fput+0xd4/0x1ec
[C0B55EF0] [C006FD0C] fput+0x30/0x40
[C0B55F00] [C006DEF0] filp_close+0x80/0x98
[C0B55F20] [C006DFA0] sys_close+0x98/0xe0
[C0B55F40] [C0002B10] ret_from_syscall+0x0/0x3c
Instruction dump:
38000023 7c120386 3d403600 3920000f 7d330386 3c60c20a 38639ac8 480000cd
3c60c20a 3d20e000 38639ae4 61294080 <80890000> 480000b5 80010014 38600000
Segmentation fault
Prawdopodobnie mmu ma zablokowany ten obszar. Wszystko konfiguruje sie w TLB i ZPR ale nie do konca wiem jak t zrobic. Trzeba odnalezc odpowiedni TLB powiazany z tym obszarem pamieci i go ustawic ale jak to nie wiem
Czy ktos moze mi pomoc ?