尊敬的先生:
我们 为客户生产了采用 IPNC_RDK 3.8的 DM388 MP。
我们计划为内核4.4升级新的 SDK。
使用这些映像后 、我将从 SD 卡引导。
我得到了该误差。
----------------------------------
它在 MLO (spl)阶段停止(Announce_boot_device (spl_boot_list[i]);) 、并且不跳转到 u-boot.img。
即使我运行"make sysall"来重建映像、结果也是一样的。
1. sudo ./mksd-ti81xx.sh /dev/sdb /home/dm388/ti/ipnc_rdk-3.9.0/Source/ipnc_rdk/binaries/DM388/sd/MLO/home/dm388/ti/ipnc_rdk-3.9.0/Source/ipnc_rdk/binaries/DM388/sd/u-boot.img/home/dm388/ti/ipnc_rdk-3.9.0/Source/ipnc_rdk/binaries/DM388/sd/dm38x-csk.dtb/home/dm388/ti/ipnc_rdk-3.9.0/Source/ipnc_rdk/binaries/DM388/sd/uImage/home/dm388/ti/ipnc_rdk-3.9.0/Source/ipnc_rdk/binaries/DM388/sd/filesystem_DM388_FULL_FEATURE.tar.gz
2. 我跟踪源代码。
我可以看到最终的调试消息-> PUT ("[SK]CHECK point 1\n");(在这里停止仍是不合理的。)
如果我添加 "goto OK1"、 则在 tera 术语中看不到任何调试字符串。 这很奇怪。
void board_init_r (gd_t * dummy1、ulong dummy2)
{
…
#ifdef CONFIG_SPL_Board_init
放置("[SK] spl_board_init check\n");
SPL_board_init();
#endif
PUT ("[SK] board_boot_order\n");
Board_boot_order (spl_boot_list);
对于(i = 0;i < array_size (spl_boot_list)&&
SPL_BOOT_LIST[i]!= BOOT_DEVICE_NONE;i++){
Announce_boot_device (spl_boot_list[i]);
放置("[SK]check point 1\n");
转至 OK1;
if (!spl_load_image (spl_boot_list[i]))
{
PUTS("[SK]中断状态\n");
中断;
}
}
放置("[SK]检查\n");
if (i == array_size (spl_boot_list)||
SPL_BOOT_LIST[i]= BOOT_DEVICE_NONE){
PUES ("SPL:无法从所有引导设备引导\n");
hang();
}
确定1:
PUT ("[SK] spl_image.os\n");
switch (spl_image.os){
Case IH_OS_U_boot:
调试("跳转到 U-Boot\n");
PUT ("跳转到 U-Boot \n");
中断;
#ifdef CONFIG_SPL_OS_BOOT
Case IH_OS_Linux:
…
}
我认为跳转 u-boot.img 进入 MLO (spl)级应该没有问题。
你有什么建议吗?
此致、
S.K.