** 2009. 6. 2   10:11 AM  추가

 

                1. reloc_start 실행 이후 call_kernel 까지는 정상적으로 진행

 

                2. call_kernel 에서 kernel entry point 인 0xA0008000 으로 점프 후 System hanging

                    (DEBUG 모드에서 0xA0008000 으로 점프 확인)

 

                3. 대체 뭐가 문제냐.......나도 지친다.....-_-;;

 

                4. 이젠 arch/arm/boot/compress/head.S 문제는 아닌데....보면 쳐 볼수록 짜증이 치솟냐....에휴;

 


  ** 2009. 6. 10 추가

 

............엄청 오랜만에 추가네;;

 

            1. 위의 문제는 부트 파라메터 오류로 인한 문제

                   - console=ttyS0,115600  =>  console=ttyS0,9600 으로 수정

 

            1.5. DMA 초기화 과정에서 system hanging 발생

 

                        pxa_dma_init() 에서 dma 레지스터 접근 시 그대로 system hanging

                        원인은 dma 레지스터의 주소를 어디서 찝적(겹칩)됬기 때문이라는데...

                        걍 dma 초기화 루틴을 수행하지 않도록 변경

 

                       ==> ethernet device(cs89x0) 에서 DMA 를 사용하긴 하지만, cs89x0.c 에서 ALLOWDMA 를 0으로 해버

                             리면 상관 없음. 시스템이 느려지긴 할테지만, 에러가 나진 않을 거 같음.

                               DMA 따위, 안쓰면 그만이지. 제기랄-_-;

 

            2. 이제 문제는 ethernet device 드라이버..

 

            3. ./driver/net/cs89x0.c 수정 작업 시작

 

            4. cs89x0 드라이버에서 접근할 가상 어드레스 0xF0000000 + 0x300 으로 설정

               (eth1 은 disable 시킴, 우선 하나만 되면 되지 뭐....)

               (eth1 의 가상 어드레스는 0xF2000000 + 0x300, IRQ 는 13)

 

           5. IRQ 는 0 으로 설정. IRQ_GPIO(0) 은 IRQ x is not in our map of allowable IRQs 발생시킴

 

  ** 4,5 번 내용은 모두 cs89x0.c 상에서 수정해야 하는 내용임!!

 

           6. 현재 기본 IP 설정까진 완료된 상태로 넘어가나... (192.168.1.101, 255.255.255.0)

 

                                        eth0: using half-duplex 10Base-T (RJ-45)

                                        IP-Config: Complete:

                                             device=eth0, addr=192.168.1.101, mask=255.255.255.0 gw=255.255.255.255

                                             host=192.168.1.101, domain=, nis-domain=(none),

                                             bootserver=192.168.1.100,

                                             rootserver=192.168.1.100,

                                             rootpath=,

 

           7. 아, 빼먹은건, u-boot 상에서 printenv 로 eth0, eth1 의 MAC address 확인하고, cs89x0 드라이버 상에서

             LUBBOCK 보드 선택 시 위의 MAC 주소를 강제로 입력하는 코드 추가해야 함

            (기본적으로 EEPROM 에서 읽어오는데, 없으므로, MAC address 를 만들어주어야 함)

              ==> u-boot 상의 MAC address 와 다르면, eth0: Failed to open eth0 가 발생함.

 

           8. Looking up port of RPC 100003/2 on 192.168.1.100

 

              여기서부터 오류 발생......NETDEV WATCHDOG: eth0 () : transmit timed out......얘는 대체 뭘까??

              스택 덤프 한번 해주고,

              rpcbind: server 192.168.1.100 not responding, timed out

              Root-NFS: unable to get mountd port number from server, using default

              eth0: transmit timed out, IRQ conflict ??          <== 뜬금없는 왠 IRQ conflict....

 

              그 다음은 VFS 오류 후 당연한 Kernel panic...

 

         ==> 이걸 eth0 설정은 다 된거지만, NFS 설정을 잘못해서 난 오류로 봐야할까 아니면 eth0 가 안잡힌 걸로 봐야할까....그런데 IP 설정이 제대로 된걸 보면 eth0 가 안잡혀서 그런거 같진 않은데...애매하다. 지금은 계속 이거 알아보는 중.

 


'Embedded > Xhyper255A' 카테고리의 다른 글

Android porting to XScale PXA255  (0) 2009.06.16
kernel error  (0) 2009.06.08
[답글]255A보드에서 GPIO제어.  (0) 2009.06.08
[답글]X-Hyper255A에서 커널에 대해...  (0) 2009.06.08
[XHYPER255] 커널 2.6 컴파일  (0) 2009.06.05

WRITTEN BY
RootFriend
개인적으로... 나쁜 기억력에 도움되라고 만들게되었습니다.

,