数码之家

 找回密码
 立即注册
搜索
查看: 1098|回复: 7

[Marvell] 修改boot后,烧录新编译的boot.bin运行时卡死

[复制链接]
发表于 2022-9-28 10:19:48 | 显示全部楼层 |阅读模式
本帖最后由 xiaogangaaaaa 于 2022-9-28 15:07 编辑

marvell 1092的ssd芯片,在bootloader代码中添加自己的新功能后,nvme烧录boot.bin后运行boot时卡死(不是烧录问题,是ssd接收完boot.bin后开始运行此boot.bin后卡死),卡死在这个函数
void HalNvme_SetReadyState(void)
{
    while(rNvme.ctrlRegisterModuleAccessStat1.b.CREG_ERR_STS);    // Check no parity error
    while(rNvmeBitmapSram.bitmapSramAccessStat1.b.BSRAM_ERR_STS);    // Check no parity error
    while(rNvmeCmdSram.cmdSramAccessStat1.b.HM_ERR_STAT | rNvmeCmdSram.cmdSramAccessStat1.b.FM_ERR_STAT);    // Check no parity error

    if (rNvmeController.controller[cDefaultFunctionId].CC.b.EN) // Set ready bit
    {
        rNvmeController.controller[cDefaultFunctionId].CSTS.b.RDY = 1;
        PRINTF_LOW("[CTST.RDY]\n");
    }
}



做了对比测试,有以下测试结果:
  • 烧录生成的boot.bin时死机或不死机,跟本次编译的bin有关,不会出现同一个boot.bin,反复烧录时概率性死机
  • 做过多次对比测试:比如本次编译生成的boot.bin(简称A.bin)文件,如果烧录完运行A.bin时会卡死,此时如果动几句代码,比如关闭或打开几句调试语句,或在boot的main函数里随便添加一个全局变量并赋值,重新生成的A.bin运行可能正常
  • 做过多次对比测试:比如本次编译生成的boot.bin(简称A.bin)文件,如果烧录完运行A.bin时不会卡死,此时如果动几句代码,比如关闭或打开几句调试语句,或在boot的main函数里添加的一个全局变量的赋值挪个位置,重新生成的A.bin可能烧录完运行后可能卡死
  • 对比测试还遇到:代码完全一样,编译时间点不一样,生成的bin也完全一样,生成的boot.bin,一份会烧录后运行卡死,一份反复烧录和运行都正常

请问有遇到类似现象的吗?已经排除了自己的代码问题,是不是marvell的romcode做了特殊检测

发表于 2022-9-28 16:32:19 | 显示全部楼层
和楼主不在一个频道上,无能为力,溜了~
回复 支持 反对

使用道具 举报

发表于 2022-9-28 22:52:45 | 显示全部楼层
俺们这个小频道估计真没几个深层次研究固件开发的;认真读了一遍,。。。不懂,溜了。。。
回复 支持 反对

使用道具 举报

发表于 2022-9-28 23:39:39 | 显示全部楼层
本帖最后由 cheapjr 于 2022-9-28 23:53 编辑

   }
   fi //终止if
}

我也不知道行不行,你试试呗。不行也别喷哈,我只搞过opuboot,不一定能解决

这么多 while 返回空值怎么办?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-9-29 09:24:26 | 显示全部楼层
cheapjr 发表于 2022-9-28 23:39
}
   fi //终止if
}

不是这个函数本身引起,这是源码自带的函数,主要是我随便把全局变量赋值挪个地方,或添加或屏蔽几个调试语句这种随机性的改法,就让boot.bin从正常变成不正常或从不正常变成正常
回复 支持 反对

使用道具 举报

发表于 2022-10-19 01:46:53 | 显示全部楼层
第四点里提到的两个bin,算下md5看看是不是有差别
回复 支持 反对

使用道具 举报

发表于 2023-2-20 15:11:51 | 显示全部楼层
这问题高大上.1
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

APP|手机版|小黑屋|关于我们|联系我们|法律条款|技术知识分享平台

闽公网安备35020502000485号

闽ICP备2021002735号-2

GMT+8, 2024-4-24 23:53 , Processed in 0.109201 second(s), 12 queries , Redis On.

Powered by Discuz!

© 2006-2023 smzj.net

快速回复 返回顶部 返回列表