TI中文支持网
TI专业的中文技术问题咨询交流网站

[FAQ] TDA4VM: 如何使用 j721e RTOS SDK 在调试模式下编译 SBL?

Part Number:TDA4VM

问:

我尝试在调试模式下使用 BUILD_PROFILE=debug 标志编译 SBL,但编译失败并显示错误“gmake: *** No rule to make target 'sbl_mmcsd_img'.  Stop.”。

是否有方法在调试模式下编译 SBL?

Cherry Zhou:

答:

由于有限的 OCMC 具有内存限制,因此需要限制 SBL 的大小。通常情况下,OCMC 需要同时适合 SBL 和固件。在调试模式下编译通常会增加二进制文件的大小,并且存在超出可用内存的风险。这便是默认情况下针对 SBL 禁用调试模式的原因

不过,有一些方法可用于在调试模式下编译 SBL:

启用调试模式

您可以通过修改 <pdkInstallPath>\packages\ti\boot\sbl\ 位置的 sbl_component.mk 来启用调试模式。  请查看下面的补丁:

patch
patch

使用以下命令保存和编译 SBL

gmake BOARD=j721e_evm CORE=mcu1_0 BUILD_RPOFILE=debug sbl_{BootMode}_img

其中 BootMode 可以是 uart、mmcsd、ospi、cust

这种方法可以让您在调试期间完全控制 SBL,但在未来的版本中,如果 SBL 的大小由于某种原因而增加,那么这种方法可能会失效。这已在 j721e RTOS SDK 8.0 和 8.1 版本上进行了测试。

 

在调试模式下编译特定组件

与其在调试模式下编译完整的 SBL,您不如编译需要调试的特定组件并将其链接到 SBL,从而控制 SBL 的大小。最简单的方法是使用 BUILD_PROFILE 标志在调试模式下编译组件,然后将调试库重命名为发布库。

例如,如果您要调试“board”:

gmake board BOARD=j721e_evm CORE=mcu1_0 BUILD_PROFILE=debug
将 <pdkInstallPath>\packages\ti\board\lib\j721e_evm\r5f\debug 重命名为 <pdkInstallPath>\packages\ti\board\lib\j721e_evm\r5f\release
使用以下命令编译 SBL 映像

gmake BOARD=j721e_evm CORE=mcu1_0 sbl_{BootMode}_img

 

这种方法将控制 SBL 的大小,并让您能够更好地控制在调试模式下编译的组件,但您仍然无法单步执行 SBL 代码。

 

删除编译器优化并重新编译特定组件

这与之前的方法类似,但它也能让您控制 SBL 代码。您可以通过修改 <pdkInstallPath>\packages\ti\build\makerules\rules_ti_cgt_arm.mk 来删除编译器优化。请查看下面的补丁。

patch
patch

删除编译器优化后,只需重新编译要调试的组件和 SBL 发布模式。这样,您能够在调试期间控制组件和 SBL。

请确保在调试完成后恢复优化,因为它可能会影响您的应用的性能。

赞(0)
未经允许不得转载:TI中文支持网 » [FAQ] TDA4VM: 如何使用 j721e RTOS SDK 在调试模式下编译 SBL?
分享到: 更多 (0)