imx28에 대한 JTAG 펌웨어

imx28에 대한 JTAG 펌웨어

내 목표는 imx28 개발 보드를 기반으로 하는 wink 허브 1의 메모리에 사용자 정의 커널과 initramfs를 로드하고 u-boot 쉘에서 bootm 명령을 사용하여 부팅하는 것입니다.

그래서 u-boot 2014.01 소스 코드를 다운로드하고 제공된 패치를 사용하여 처음부터 빌드했습니다.여기그런 다음 최신 빌드 루트를 다운로드하고 imx28 보드용 커널, 루트 파일 시스템 및 initramfs를 빌드했습니다.

JTAG를 사용하면 로드할 수 있지만 u-boot at 0x40000100, kernel at 0x42000000initramfs at 0x42300000주소를 u-boot 쉘에 전달하고 bootm을 누르면 압축을 푼 후 커널이 멈추고 아무 일도 일어나지 않습니다...

커널에 문제가 있는게 아닌가 싶었는데, 커널 주소만 전달하고 커스텀 주소를 로드하지 않아도(즉, NAND 메모리에 있는 커널을 로드합니다)RAM에서는 커널이 여전히 정지되어 부팅할 수 없으며 명령으로만 작동합니다 boot (bootcmd).

이것은 메모리 주소에서 커널을 수동으로 로드하려고 할 때의 출력입니다. 압축을 푼 후에는 아무 일도 일어나지 않습니다.

=> bootm 42000000 42300000 
## Booting kernel from Legacy Image at 42000000 ...
   Image Name:   Linux-2.6.35.3-flex-dvt
   Created:      2014-04-30   3:15:35 UTC
   Image Type:   ARM Linux Kernel Image (uncompressed)
   Data Size:    1928460 Bytes = 1.8 MiB
   Load Address: 40008000
   Entry Point:  40008000
   Verifying Checksum ... OK
## Loading init Ramdisk from Legacy Image at 42300000 ...
   Image Name:   Root Filesystem
   Created:      2019-01-12  14:23:44 UTC
   Image Type:   ARM Linux RAMDisk Image (uncompressed)
   Data Size:    893637 Bytes = 872.7 KiB
   Load Address: 40800000
   Entry Point:  40800000
   Verifying Checksum ... OK
   Loading Kernel Image ... OK

Starting kernel ...

Uncompressing Linux... done, booting the kernel.

그러나 u-boot 쉘에서는 boot명령을 클릭하면 시작되고 모든 것이 잘 작동합니다.

내가 뭘 잘못하고 있는지 모르겠습니다. /include/configs/mx28evk.h커널 uImage, initramfs 및 fdt 주소를 확인했는데 모든 것이 올바른 것 같습니다.

답변1

문제가 어디에 있는지 알아냈습니다.

낮은 수준의 디버깅을 활성화하고 모든 printk를 내장된 ICE UART 포트로 리디렉션하여 UART 콘솔에 출력이 표시되지 않도록 했습니다.

[ ] Kernel low-level debugging functions 
      [ ] Early printk (NEW)
      [ ] Kernel low-level debugging via EmbeddedICE DCC channel (NEW)

위에서 언급했듯이 선택하지 않은 상태로 두십시오.

감사합니다, 아미트.

관련 정보