主题中讨论的其他器件:OMAPL138、 OMAP-L138
大家好、
我正在研究安全器件 OMAPL138/C6748、并且在实施次级引导加载程序(SBL)时遇到了问题。
据我所知、要使用 SBL 引导 AIS 映像、必须使用 LoadModGen_OMAP-L138.exe 从".OUT"文件创建该映像。 然后、SBL 将把 AIS 映像加载到 RAM 中并使用安全内核 API SK_decrittMod()对其进行解密、 最后将程序计数器分配给解密模块的入口点、应用程序可以从此处运行。
我的问题是:
1.如何在 NAND 闪存中检测引导加载模块(BLM)的启动? TI 在其支付负载的末尾排列 BLM 的标头是很奇怪的、并且在 BLM 加密后、幻数(在标头中、用于检测图像是否存在)将更改该值。
------------------
| 有效载荷 |
------------------
| 标头 |
------------------
| 签名 |
------------------
2.假设我可以通过某种方式检测 NAND 闪存中的 BLM。 如何调用 BLM 的加载地址和入口点、以便知道我应该在 RAM 中的哪个位置加载程序、以及应该在哪里放置程序计数器来开始运行应用程序?
由于没有关于这些问题的文件,我试图以我的方式解决这个问题。 我将自定义标头附加到原始 BLM、以便它具有新的结构、就像这样
------------------
| My_Header |
------------------
| 有效载荷 |
------------------
| 标头 |
------------------
| 签名 |
------------------
其中 My_Header 字段包含4个属性
。 my_magic_number:由我定义的用于检测 BLM 开始的常量数
。 BLMSize:BLM 的大小、包括 My_Header
。 LoadAddress:应用程序的加载地址 (我可以在应用程序的 CCS 项目中从文件'.cmd'中获取它)
。 Entrypoint:应用程序的入口点 (我可以从应用程序的 CCS 项目中的文件'.map'中获取它)
使用此解决方案,我可以成功地将 BLM 从 NAND 加载到 RAM,使用 SK_decrypt ()对其进行解密 ,并将程序计数器放置到入口点。 但是、该应用程序随后不起作用!!! 出什么问题了?
谢谢。