안녕하세요.

커널 패닉의 원인은 잘못된 가상주소를 사용하였기 때문에 나는 에러입니다.

일단 커널의  arch/arm/mach-s2410/mach-ez-s2410.c 파일에서..


static struct map_desc ez_s2410_iodesc[] __initdata = {
  /*       virtual     physical               length      domain    */
     { 0xf4000000, S3C2410_CS1 +0x000000, 0x00100000, MT_DEVICE },  // nCS1 CS8900  -- slow RD/WR
     { 0xf4200000, S3C2410_CS1 +0x800000, 0x00100000, MT_DEVICE },  // nCS1 REV -- fast RD/WR  CPLD.REV1
     { 0xf4300000, S3C2410_CS1 +0xc00000, 0x00100000, MT_DEVICE },  // nCS1 REV -- fast RD/WR  CPLD.REV2
      
     { 0xf5000000, S3C2410_CS2          , 0x01000000, MT_DEVICE },  // nCS2   16MByte Area
     { 0xf6000000, S3C2410_CS3          , 0x01000000, MT_DEVICE },  // nCS3   16MByte Area
     { 0xf7000000, S3C2410_CS4          , 0x01000000, MT_DEVICE },  // nCS4   16MByte Area
     { 0xf8000000, S3C2410_CS5          , 0x01000000, MT_DEVICE },  // nCS5   16MByte Area
};

로 설정되어 있습니다. 이 부분을 커널에서 확인 해 주세요...

다시 커널 패닉부분으로 들어가서... 메세지를 보시면..  virtual  address .. f3000000 이렇게 나오는 부분이 있습니다..

위의 주소 설정에서 0xf3000000 이라고 설정된 가상주소가 없습니다... 따라서 이 가상주소를 접근하면
커널에서는 알수 없는 주소라고 판단하고 커널 패닉을 내는 것입니다..

따라서 디바이스 드라이버에서 이 가상 주소 설정하는 0xf3000000 부분을

CS2 번을 사용할 경우 0xf5000000
CS3 번을 사용할  경우 0xf6000000
CS4 번을 사용할  경우 0xf7000000
CS5 번을 사용할  경우 0xf8000000

으로 바꾸어 주시고 해 보세요.


참고로 2.6 커널에서는 map_desc ez_s2410_iodesc 함수에서 필수 가상 주소만 넣어 놓고 일반적인
CS는 설정하지 않고,,,, 디바이스에서 ioremap 함수로 가상 주소를 매핑하는 방법을 주로 사용합니다.
ioremap 함수에 대해서 한번 공부해보세요.. 따로 가상주소를 등록하지 않고 물리적 주소를 가상 주소로
매핑을 해주기떄문에 편리할거라 생각이 됩니다..


그럼 수고하세요..



>패치도 조금 수상하게 되었고
>
>커널 컴파일이 조금 수상하게 되었지만
>
>어찌 어찌 해결 해서
>
>app_gpio를 해결했습니다
>
>app_port는 회로를 일단 만들어서
>
>2410보드에 연결한상태구요
>
>app_port를 실행 시켰는데 이런 화면이 뜹니다..
>
>어떤 현상인가요..ㅡ_ㅜ;;
>
>아아~공부 하고 싶습니다~~
>
>삽질 삽질 만이 내게 피가 되고 살이 되는듯..ㅜ_ㅠ