Other Parts Discussed in Thread: SYSCONFIG, UNIFLASH
器件型号: AM263P4
Thread 中讨论的其他器件: UNIFLASH、SYSCONFIG、MCU-PLUS-SDK AM263PX
是否可以在 AM263Px 控制器上对 OSPI SBL(次级引导加载程序)进行一次编程、以便在每次上电复位时、它都会自动从 OSPI 初始化应用程序、而无需调试器或仿真器?
此致
Shashank B.
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
您好、Shashank、
如果我正确理解了问题、您希望运行次级引导加载程序(下电上电后且 ROM 引导加载程序运行)、并从 OSPI 闪存加载应用程序(假设应用程序已经刷写到 AM263Px)?
如果是、
您可以使用 UniFlash 工具并使用 SBL OSPI .tiimage、选择所需的应用映像并将其刷写到器件中(在 UART 引导模式中)、然后将引导模式更改为 OSPI 并进行下电上电。
此致、
Shaunak
我的问题是:SBL 映像是否应该在每次上电复位后再次刷写?
您好、Shashank、
您不需要在每次迭代中刷写 SBL、但根据我们到目前为止的对话以及在另一个 E2E 上、您不会“刷写“SBL、而是将.out 二进制文件加载到 RAM 中、这将在电源复位时被擦除。 若要每次运行 SBL、您必须“刷写“SBL 映像。 如果使用 SBL OSPI、还会需要应用程序映像(默认情况下位于地址 0x81000)、请参阅之前回复中的链接以了解如何使用刷写工具。
您还可以在 UniFlash:https://www.ti.com/video/6362394255112 上观看此视频培训
此致、
Shaunak
您好、Shashank B、
您能否提供以下详细信息:
是连接到 PC 和 AM263Px 的 XDS 电缆(XDS/JTAG 端口在电源端口旁边)。 如果已连接、您是否可以重启并再次尝试连接? 此外、确保没有 CCS 调试会话并行运行/UART 终端打开、阻止 XDS 端口。
2.此处的引导模式是什么?
3.使用的 CCS 和 UniFlash 版本是什么?
4.能否导航至: ccsxxxx\ccs\ccs_base\common\uscif\xds110 并启动命令提示符终端并输入以下命令:

这里、我的控制卡上的 XDS 固件版本是 3.0.0.38、而 CCS2030 中提供的版本是相同的。 如果版本不匹配、您可以按照同一文件夹中的自述文件升级固件版本。
Regads、
Shaunak
您好、Shashank、
您能分享一些更多信息吗? 无法引导到底是什么意思? UniFlash 是否显示加载成功? 您是否在刷写之前切换引导模式、刷写之后再重新上电?
您能否分享刷写应用程序的地址? 这是默认的 SDK 应用是否提供了默认的 sbl-ospi 多核 elf?
如果可能、您还可以共享 SDK 版本以及您正在使用的 EVK(如果您也可以共享 PROC#版本、如 PROC E2、PROC A,这将非常有用)。 它会粘贴在 controlCARD 或您拥有的 LaunchPad 上的一个白色标签。
如何使用可用的示例正确加载和引导多核环境?
您只需配置正确的引导模式、加载 SBL tiimage、在正确的地址加载多核 appimage mcelf、然后进行闪存、然后将引导模式更改为 OSPI、然后进行下电上电。 应用程序应该启动正常。
此致、
Shaunak
要尝试调试 SBL、您需要在 SBL 应用程序开始时放置一个无限 while 循环。 在运行时、SBL 应该已经由 ROM 加载并执行、除非代码中有某种阻塞器(无限循环)、否则无法停止。
如果您检查 SBL 代码、文件开头会有一个无限循环函数、只需 在 main() 开头调用 loop_forever()。 然后、重新编译 SBL 应用程序并在调试编译中使用此.tiimage。 现在、当您将此代码刷写到器件中时、您的代码将滞留在此循环中、您现在可以加载符号、然后手动从此循环中退出。
为了检查 SBL 是否正常工作、我建议您同时使用 SBL .tiimage 刷写实际应用程序。 如果 SBL 正常运行、应用映像将从闪存复制到 RAM 并按预期执行。
您好、Shashank、
如果您的 SBL 工作正常、那么在应用程序启动之前、您会看到一些日志、例如、如果我只是使用 hello_world 应用程序、我会在 SBL 将控制权移交给应用程序之前看到 SBL OSPI 日志。 在您的案例中、由于应用程序有一个 while 循环、因此您能否确认是否看到 SBL OSPI 日志? 我附上了一个参考示例:

如果以红色突出显示的部分正常、我们至少要确认 SBL 工作正常、然后我们您的应用处于无限 while 循环中、您可以直接连接到内核、暂停处理器并看到代码卡在循环中(这应该可以实现,因为代码是从闪存复制的并从 RAM 执行)。
此致、
Shaunak
您好、Shashank、
请以此方式理解。 断电复位后、ROM 将加载 SBL(在本例中为 sbl_ospi_multiple_elf)。 然后、SBL 将加载您的应用程序映像。 对于单核/多核环境、此流程保持不变。 应用程序映像使用.mcelf 格式(即您正在使用的所有内核(无论是单核环境还是多核环境)的组合二进制文件)。
SBL 将仅在 SOC 上执行所需的初始化、然后尝试加载和启动已刷写的应用程序映像。
因此、SBL OSPI 多核 ELF 足以引导多核系统、但您还需要将应用程序刷写到 0x81000 偏移处、以便 SBL 引导应用程序映像。

ROM 引导加载程序详细说明: https://dev.ti.com/tirex/explore/content/am26x_academy_10_02_00_03/_build_am26x_academy_10_02_00_03/source/boot/top_level_boot_flow.html
我使用 UniFlash 将多核环境加载到 OSPI 中、但不会引导
我想知道您面临的具体“故障/问题“。
使用闪存进行刷写时、请确保选择 sbl_ospi_morple_elf .tiimage 以及应用程序.mcelf 映像。
1.刷写时 UniFlash 工具中是否弹出任何错误?
2.尝试关闭并运行应用程序时,您是否在日志中看到任何错误?
(除非在应用程序中配置了 XIP 以便从闪存而不是 RAM 运行、否则请勿选择 XIP 文件、仅 SBL 和应用程序映像就足够了)。
例如、如果您刷写 hello world 应用程序、则将看到 SBL OSPI 日志、然后在所有内容都正确启动时记录 hello world 应用程序。
此致、
Shaunak
您好、Shashank、
此外、在 HS-SE 模式下、我们是否需要为 HSM 开发我们自己的 SBL、或者是否提供了它?
对于 HS-SE 器件、请下载并使用 TIFS SDK。 您可以使用 TI 提供的 SBL、使用您在将器件从 HSFS -> HSSE 转换时已编程的密钥对其进行签名。 您不需要开发整个 SBL、只需确保使用正确的密钥进行签名即可。
如何创建 HSMRT 工程和 HSMRT SBL 工程? 在 R5F SBL 中、我们将加载 HSM 映像、具体情况是什么? 是 HSM 运行时应用程序还是 HSM SBL?
HSMRT 固件 为 R5F 内核提供各种基础安全服务。 无需构建/创建此工程。 您可以使用 SDK 项目/映像。 没有“HSM SBL“的概念。 在 R5F 内核的上下文中、只需加载“HSMRT"固“固件、该固件在 SDK 中以“.h"文件“文件的形式提供。
有关 HSMRT 服务的详细信息、请访问: https://software-dl.ti.com/mcu-plus-sdk/esd/AM263PX/latest/exports/docs/api_guide_am263px/SECURITY_PAGE.html
此致、
Shaunak
尊敬的 Shaunak:
在尝试从 TIFS_AM263Px SDK 导入工程时、无法在 CCS 中加载工程。 它显示一个错误、说明未下载 MCU_PLUS_SDK_AM263Px v0.0、即使我在 PC 的 TI 文件夹中安装了 MCU_PLUS_SDK_AM263Px_10_02_00_15。尝试从 TIFS_AM263Px SDK 导入工程时、无法在 CCS 中加载工程。 在 PC 的 TI 文件夹中安装了 MCU_PLUS_SDK_AM263Px_10_02_00_15、但系统显示的错误表明未下载 MCU_PLUS_SDK_AM263Px v0.0。

此致、
Shashank B,
您好、Shashank、
您可以尝试以下操作:
1.在任何代码编辑器(如 VS 代码,甚至记事本)中,打开 example.projectspec 文件以获取您正在使用的任何示例。
2.搜索
product=“sysconfig;com.ti.TIFS_AM263PX;com.ti.MCU_PLUS_SDK_AM263PX;“
3.将其替换为:
products=“sysconfig;com.ti.TIFS_AM263PX;MCU-PLUS-SDK;AM263PX;“
4.保存文件、尝试在 CCS 中重新导入。
此致、
Shaunak
尊敬的 Shaunak:
1.在调试 OSPI SBL 代码时、我在 SBLmain() 函数的开头添加了一个无限 while 循环、并由可以手动更改的变量控制。 ospi_sbl将映像刷写到 OSPI 闪存中、将器件设置为 DevBoot 模式并应用上电复位后、我在 CCS 中加载了符号、但 CCS 报告执行已结束。
2.OSPI_SBL和OSPI_SBL_MULTICORE_ELF示例之间的区别是什么? 两者看起来都能够加载多个内核。
此致、
Shashank B
尊敬的 Shaunak:
第一个问题已解决 方法是将引导模式引脚更改为 OSPI 引导模式 。 不过、 CCS In-To 函数调试无法正常运行 (即使我已在文件中启用)DEBUG_ENABLEdevconfig.mak。
请确认我的理解是否正确:
OSPI_SBL 而增加 RPRC 映像 (紧凑,可加载,中间格式,可以组合用于多核映像)。
OSPI_SBL_DOOR_ELF 加载 A 多核 ELF 映像 ,这是一个直接的 MCELF .out 添加到工程。
建议采用哪种方法 用于加载多核映像— MCELF(多核 ELF) 或 RPRC 映像 ?
此致、
Shashank
DEBUG_ENABLE在devconfig.mak文件中启用。
调试 SBL 时、您实际上并不需要使用 DBG_ENABLE、除非您使用的是 HSSE 器件、我相信您正确使用了 HSFS 器件?
通常、一旦 ROM 将控制权移交给 SBL、您应该在 SBL 中的条目顶部进入 while 循环设置、并且在连接调试器时(HSFS 器件应该能够直接连接)、您可以看到代码、退出循环并正常调试。
[quote userid=“650262" url="“ url="~“~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1580169/am263p4-ospi-bl/6132396请确认我的理解是否正确:
OSPI_SBL 而增加 RPRC 映像 (紧凑,可加载,中间格式,可以组合用于多核映像)。
OSPI_SBL_DOOR_ELF 加载 A 多核 ELF 映像 ,这是一个直接的 MCELF .out 添加到工程。
建议采用哪种方法 用于加载多核映像— MCELF(多核 ELF) 或 RPRC 映像 ?
ID 建议使用 SBL OSPI 多核 Elf、因为已弃用 RPRC 格式、mcelf 格式是 SDK 中的默认格式
此致、
Shaunak