将固件 JTAG 到 imx28 中

将固件 JTAG 到 imx28 中

我的目标是将自定义内核和 initramfs 加载到基于 imx28 开发板的 wink hub 1 的内存中,并使用 u-boot shell 中的 bootm 命令启动它。

因此,我下载了 u-boot 2014.01 源代码并使用提供的补丁从头开始构建它这里然后我下载了最新的 buildroot 并为 imx28 板构建了内核和根文件系统以及 initramfs。

使用 JTAG 我可以加载,u-boot at 0x40000100, kernel at 0x42000000但是initramfs at 0x42300000当我将这些地址传递到 u-boot shell 并点击 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 shell 上,点击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)

如上所述,保持其未选中状态。

问候,阿米特。

相关内容