기존 이솝 임베디드 포럼의 지식인 서비스가 게시판 형태로 변경되었습니다.


cs8900a포팅 중에 궁금한것이있어서 글을 남김니다.
제가 사용하는 보드는 LN2440sbc인데 2.6.13커널을 올리고 드라이버를 올리는 중에
드라이버는 올라갔는데 인터럽트만 걸리면 패닉걸려서 해결을 못하고 있습니다.

커널메세지...

done
Bytes transferred = 1517490 (1727b2 hex)
## Starting application at 0x33000000 ...
Uncompressing Linux.................................................................. done, booting the kernel.
CPU: ARM920Tid(wb) [41129200] revision 0 (ARMv4T)
Machine: SMDK2440
Warning: bad configuration page, trying to continue
Memory policy: ECC disabled, Data cache writeback
CPU S3C2440A (id 0x32440001)
S3C2440: core 390.000 MHz, memory 130.000 MHz, peripheral 65.000 MHz
S3C2410 Clocks, (c) 2004 Simtec Electronics
CPU0: D VIVT write-back cache
CPU0: I cache: 16384 bytes, associativity 64, 32 byte lines, 8 sets
CPU0: D cache: 16384 bytes, associativity 64, 32 byte lines, 8 sets
Built 1 zonelists
Kernel command line: root=/dev/ram0 rw initrd=0x30800000,8M console=ttySAC0 mem=64M
irq: clearing subpending status 00000002
PID hash table entries: 512 (order: 9, 8192 bytes)
timer tcon=00500000, tcnt d395, tcfg 00000200,00000000, usec 000017a1
Console: colour dummy device 80x30
Inode-cache hash table entries: 8192 (order: 3, 32768 bytes)
Memory: 64MB = 64MB total
Memory: 54528KB available (1693K code, 330K data, 96K init)
Mount-cache hash table entries: 512
CPU: Testing write buffer coherency: ok
checking if image is initramfs...it isn't (no cpio magic); looks like an initrd
Freeing initrd memory: 8192K
NET: Registered protocol family 16
S3C2440: Initialising architecture
S3C2440: IRQ Support
S3C2440: Clock Support, UPLL 96.000 MHz
S3C2410 DMA Driver, (c) 2003-2004 Simtec Electronics
DMA channel 0 at c4800000, irq 33
DMA channel 1 at c4800040, irq 34
DMA channel 2 at c4800080, irq 35
DMA channel 3 at c48000c0, irq 36
NetWinder Floating Point Emulator V0.97 (extended precision)
Initializing Cryptographic API
Console: switching to colour frame buffer device 80x25
fb0: Virtual frame buffer device, using 1024K of video memory
io scheduler noop registered
io scheduler anticipatory registered
io scheduler deadline registered
io scheduler cfq registered
RAMDISK driver initialized: 16 RAM disks of 4096K size 1024 blocksize
nbd: registered device at major 43
cs89x0:cs89x0_probe(0x0)
PP_addr=0x3000
cs89x0.c: v2.4.3-pre1 Russell Nelson <[email protected]>, Andrew Morton <[email protected]>
eth0: cs8900 rev K found at 0xfc000300
cs89x0: Extended EEPROM checksum bad and no Cirrus EEPROM, relying on command line
cs89x0 media RJ-45, IRQ 18, programmed I/O, MAC 00:00:c0:ff:ee:08
cs89x0_probe1() successful
cs89x0:cs89x0_probe(0x0)
cs89x0: request_region(0xfc000300, 0x10) failed
cs89x0: no cs8900 or cs8920 detected.  Be sure to disable PnP with SETUP
mice: PS/2 mouse device common for all mice
NET: Registered protocol family 2
IP route cache hash table entries: 1024 (order: 0, 4096 bytes)
TCP established hash table entries: 4096 (order: 3, 32768 bytes)
TCP bind hash table entries: 4096 (order: 2, 16384 bytes)
TCP: Hash tables configured (established 4096 bind 4096)
TCP reno registered
TCP bic registered
NET: Registered protocol family 1
NET: Registered protocol family 17
RAMDISK: Compressed image found at block 0
VFS: Mounted root (ext2 filesystem).
Freeing init memory: 96K

init started:  BusyBox v0.60.5 (2003.08.02-05:17+0000) multi-call binary
Sat Jul 26 21:42:00 UTC 2003

Please press Enter to activate this console. Unable to handle kernel paging request at virtual address ee000300
pgd = c3aa8000
[ee000300] *pgd=00000000
Internal error: Oops: 5 [#1]
CPU: 0
PC is at .insw_align+0x8/0x14
LR is at net_rx+0xfc/0x1a8
pc : [<c01a9164>]    lr : [<c012c354>]    Not tainted
sp : c01c9ea0  ip : 00000000  fp : c01c9ed0
r10: ee000300  r9 : c3af8620  r8 : c3faae12
r7 : c3af8400  r6 : 00000062  r5 : c0e719e0  r4 : fc000300
r3 : 00000062  r2 : 00000031  r1 : c3faae12  r0 : ee000300
Flags: nZCv  IRQs on  FIQs on  Mode SVC_32  Segment kernel
Control: C000717F  Table: 33AA8000  DAC: 00000017
Process swapper (pid: 0, stack limit = 0xc01c8194)
Stack: (0xc01c9ea0 to 0xc01ca000)
9ea0: 00000000 c01c9ec8 c0e67c00 c3af8400 c3af8620 00000904 c01daf0c 41129200
9ec0: 00000001 c01c9ef8 c01c9ed4 c012bf90 c012c268 c0e67c00 00000012 00000000
9ee0: 00000000 c01c9f54 3001d99c c01c9f1c c01c9efc c00218ec c012bf0c c01fea4c
9f00: 00000012 c0e67c00 c01c9f54 3001d9cc c01c9f3c c01c9f20 c0021a4c c00218a0
9f20: c01c9f54 c01c9f88 00000001 c021aaf4 c01c9f50 c01c9f40 c0021cc8 c00219ac
9f40: ffffffff c01c9fa8 c01c9f54 c0020724 c0021c8c c001d480 ffffffff f040000c
9f60: 80000013 c00225bc c01c8000 c0207c6c c021aaf4 3001d9cc 41129200 3001d99c
9f80: c01c9fa8 c01c9f8c c01c9f9c c00224dc c0022604 80000013 ffffffff c01c9fc0
9fa0: c01c9fac c0022654 c00225cc 00000000 c01fe258 c01c9fd0 c01c9fc4 c0020024
9fc0: c002261c c01c9ff4 c01c9fd4 c00087f8 c0020010 c0008394 c01ff908 c0007175
9fe0: c01ff87c c01cb010 00000000 c01c9ff8 30008098 c0008690 00000000 00000000
Backtrace:
[<c012c258>] (net_rx+0x0/0x1a8) from [<c012bf90>] (net_interrupt+0x94/0x2f8)
[<c012befc>] (net_interrupt+0x0/0x2f8) from [<c00218ec>] (__do_irq+0x5c/0x9c)
[<c0021890>] (__do_irq+0x0/0x9c) from [<c0021a4c>] (do_edge_IRQ+0xb0/0x12c)
r8 = 3001D9CC  r7 = C01C9F54  r6 = C0E67C00  r5 = 00000012
r4 = C01FEA4C
[<c002199c>] (do_edge_IRQ+0x0/0x12c) from [<c0021cc8>] (asm_do_IRQ+0x4c/0x74)
r7 = C021AAF4  r6 = 00000001  r5 = C01C9F88  r4 = C01C9F54
[<c0021c7c>] (asm_do_IRQ+0x0/0x74) from [<c0020724>] (__irq_svc+0x24/0x160)
r4 = FFFFFFFF
[<c00225bc>] (default_idle+0x0/0x50) from [<c0022654>] (cpu_idle+0x48/0x64)
[<c002260c>] (cpu_idle+0x0/0x64) from [<c0020024>] (__init_end+0x24/0x2c)
r5 = C01FE258  r4 = 00000000
[<c0020000>] (__init_end+0x0/0x2c) from [<c00087f8>] (start_kernel+0x178/0x1bc)
[<c0008680>] (start_kernel+0x0/0x1bc) from [<30008098>] (0x30008098)
Code: e1a05424 eaffff47 e1b0cf81 1a00002a (e1d0c0b0)
<0>Kernel panic - not syncing: Aiee, killing interrupt handler!


OOPS메세지를 확인 해보니깐 MMU가 뭔가가 이상한것같아서 이솝보드의
cs8900드라이버를 보니

////////////////////////// driver/net/cs89x0.c
static unsigned int netcard_portlist[] __initdata = {AESOP_VA_CS8900A + DEFAULTIOBASE, 0};
static unsigned int cs8900_irq_map[] = {IRQ_EINT9, 0, 0, 0};


///////////////////// aesop-map.h
#define AESOP_VA_IOBASE 0xF8000000

#define AESOP_VA_CS8900A    AESOP_VA_IOBASE             /* 0xF8000000 */
#define AESOP_PA_CS8900A    (S3C2410_CS3 + 0x1000000)   /* 0x19000000 */
#define AESOP_SZ_CS8900A    SZ_1M

//////////////////////arch/arm/mach-s3c2410/mach-aesop2440.c
static struct map_desc aesop2440_iodesc[] __initdata = {
  { AESOP_VA_CS8900A, AESOP_PA_CS8900A, AESOP_SZ_CS8900A, MT_DEVICE },
  { (unsigned long)S3C24XX_VA_IIS, S3C2410_PA_IIS, S3C24XX_SZ_IIS, MT_DEVICE },
};

이렇게 코딩이 되어있는데 궁금한것이
왜 AESOP_VA_CS8900A 이 0xF8000000 이 되고  AESOP_PA_CS8900A이
0x19000000의 값을 가지는지
어떻게 해서 이값이 계산된것인지 이해가 되지않아서 모질라는 실력을 한탄하며
글을 남김나다  ㅠㅠ  


고현철

2006.12.30 23:02:19
*.124.52.205

ln2440sbc 보드라면....아마도 cs8900이 memory mode로 동작되지 않나 싶네요.

ln2410의 경우 예전에도 그것때문에 어떤 분이 꽤 오래 헤맸었습니다.
ln2440은 제가 회로도를 확인 못해봐서 memory mode인지 io mode
인지 잘 모르겠네요.

일단 기본적인 u-boot와 linux kernel의 cs8900은 io mode로 동작되게 되어 있습니다.

시랩시스에서 조금은 복잡하게 그 부분을 메모리 모드로 사용해
버려서, sw에서 고쳐줘야 했습니다. 아마도 의도적이지 싶네요.

결론적으로 회로도를 보시고 memory mode라면 aesop 커널의
driver를 일일이 memory mode로 손봐주셔야 할 겁니다.

2.4.18 커널용 memory mode 소스는 다음 eLinux cafe의 자료실
에 아마도 있을겁니다.

그 부분을 참조하시기 바랍니다.

그리고, cs8900이 io mode로 동작할때는 base address + 0x01000000 서부터 시작합니다.(물론 여기에 다시 0x300을 더해야
하지만요)

그래서 0x19000000 이 나오는 겁니다.

고현철

2006.12.30 23:03:55
*.124.52.205

그리고, 이름을 실명으로 전환해 주시기 바랍니다.

실명이 아닐 경우 강제탈퇴될 가능성이 높습니다...^^

aesop의 몇 안되는 규칙중 하나입니다. aesop의 게시판들은 아무나 읽기가 가능하니깐요.

고현철

2006.12.31 03:05:44
*.124.52.205

서울올라가면 제 자료를 찾아보고 2.4.18 커널용 드라이버가 있으면 올려놓도록 하겠습니다.
List of Articles
번호 제목 글쓴이 날짜sort 조회 수
328 T-flash에 SD아답터를 사용하면...[완료] [1] 최정수 2007-01-05 787
327 레지스터 질문 드립니다.[완료] [5] 김유석 2007-01-05 912
326 동영상 강좌 다운받는 곳[완료] [5] 이태간 2007-01-05 1105
325 [질문] aESOP 3rd보드의 메모리 맵 확인. <-[완료] [3] 유태경 2007-01-05 644
324 추가 질문 하나만 더 드릴께요.[완료] [3] 김재우 2007-01-04 689
323 TFTP문제인것 같은데 도움 부탁드립니다.[완료] [1] 김재우 2007-01-04 802
322 [질문] AESOP Package.. <-[완료] [11] 유태경 2007-01-04 818
321 부팅 방법에 관한 질문. [완료] [1] 박기호 2007-01-03 863
320 스피커 및 건전지 소켓 연결방법[완료] [3] 이태간 2007-01-03 1194
319 [질문] TFTP error: 'Permission denied' (0) <= 완료 [4] 김의호 2007-01-03 1058
318 [답변]UDP 데이터 통신에 관한 질문 [1] 최현진 2007-01-03 670
317 UDP 데이터 통신에 관한 질문[완료] [2] 천재욱 2007-01-02 709
316 source /etc/profile 에서 "source" 질문입니다. [5] 이재훈 2007-01-01 736
» 이솝보드내 메모리 메핑관한질문.. [3] 무상 2006-12-30 2411
314 samba 서버 관련 문의...... [5] 최상의 2006-12-30 834
313 FedoraCore6에서 설정 완료하신분 도움 부탁드립니다.[완료] [2] 김재우 2006-12-30 796
312 mkimage 명령은 어떻게 추가하나요?[완료] [3] 조준동 2006-12-30 1113
311 CS8900에서... [완료] [2] 김영곤 2006-12-29 729
310 [부트로고] 부트 로고 바꾸는 법 질문 드립니다. [2] 김유석 2006-12-29 879
309 slackware11.0 doc 설치문서에서 ... 4. aesop 개발환경파일셋팅 ?[완... [4] 조준동 2006-12-28 717

사용자 로그인