EZ-X5 V1.3버전 보드를 가지고 셋업중인데요 아래와 같은 문제가 생겨서 확인 부탁드립니다.

 

보드 구매시에 CD에 첨부되어 있는 부트로드 1.9버전을 다운로드한 후

디바이스 드라이버 DIO샘플 프로그램을 사용하면서 발생된 문제입니다.

 

io.c파일을 다음과 같이 바꾸었습니다.

ssize_t io_write(struct file *inode, const char *gdata, size_t length, loff_t *off_what)
{
 //   unsigned char *addr;
    unsigned int *addr;
    unsigned char c;

    // 어플메모리에서 얻어온다.
    get_user( c, gdata );
   
    // 쓰기 주소
//    addr = (unsigned char *)(IO_SAMPLE_BASE + IO_SAMPLE_WRITE_OFFSET);
    addr = (unsigned int *)(IO_SAMPLE_BASE + IO_SAMPLE_WRITE_OFFSET);
   
    // output
    *addr = (int)c;       
   
    return 1;
}

 

char형 포이터를 쓰지 않고 int형 포인터를 사용할 때 에러가 발생되는 것으로 예상됩니다.

에러메세지는 다음과 같습니다.

 

[root@ez-x5 /cms]$ insmod io_dev.o
Using io_dev.o
Warning: loading io_dev will taint the kernel: no license register device DIO V01 OK

  See http://www.tux.org/lkml/#export-tainted for information about tainted modules
[root@ez-x5 /cms]$ ./test_app
dio Open
Device Open OK
Unhandled fault: external abort on linefetch (0x006) at 0x40016000
mm = c00161a0 pgd = c7e64000
*pgd = a7e69001, *pmd = a7e69001, *pte = a7c700bf, *ppte = a7c7007f
Internal error: Oops: 0
CPU: 0
pc : [<c889d19c>]    lr : [<c889d190>]    Tainted: P
sp : c7e6bf80  ip : c889d184  fp : 00000000
r10: bffffc20  r9 : c7e6a000  r8 : 00000001
r7 : 00000000  r6 : ffffffea  r5 : c7cae240  r4 : c7cae260
r3 : f3000000  r2 : 00000001  r1 : 00000000  r0 : 00000001
Flags: Nzcv  IRQs on  FIQs on  Mode SVC_32  Segment user
Control: 397F  Table: A7E64000  DAC: 00000015
Process test_app (pid: 107, stack limit = 0xc7e6a368)
Stack: (0xc7e6bf80 to 0xc7e6c000)
bf80: c0045eb0 c7e6bfb0 0000000e 00000000 00000003 bffffc20 00000004 c001a784
bfa0: 4013b8bc c001a5e0 00000000 c001a55c 00000003 bffffc20 00000001 40139f74
bfc0: 00000000 00000003 bffffc20 4000ba9c 00000001 000084e4 4013b8bc 40138d68
bfe0: 400e07a0 bffffc20 0000852c 400e07a4 60000010 00000003 ff5ffffb cececedc
Backtrace: no frame pointer
Code: eb0000d5 e20110ff e3a034f3 e5831000 (e3a00001)
Segmentation fault
[root@ez-x5 /cms]$

 

부트로더 1.8버전에서는 위의 에러가 발생되지 않고 정상동작합니다.

 

1.3버전 보드에서 부트로더 1.8버전을 사용하면 커널 복사후 커널 실행이

진행되지 않고 보드가 멈추는 현상이 가끔씩 발생합니다.

 

WELCOME EZBOOT.X5 V1.9...................for PXA255
Program by You Young-chang, fooji (FALinux Co.,Ltd)
Last Modify Jul 16 2010

Boot Flash Check ......................
  Detect MX29LV400 (TOP)Flash : 22B9
  SIZE 4M-BIT [512Kbyte]

NAND Chip Check .......................
  Detect SAMSUNG [ec:76] 64MByte
  BAD BLOCK SCAN ->  Kernel, Ramdisk Bad Block [0]

CS8900 Init............................
  Mac Address  : [00 A2 55 F2 26 25]
  Detect value : [3000:3000]
  Chip ID      : [0E63:000A]

Quickly Autoboot [ENTER] / Goto BOOT-MENU press [space bar].....
Copy Kernel Image .....
Copy Ramdisk Image .....
Starting kernel [MARCH 303]...

 

이상에서 보드가 멈춥니다. 위의 사항도 확인 부탁드립니다.

 

수고하세요.