工具/软件:
#1。 客户希望使用 EB Autosar 开发 AM62x R5F、希望自己提前使用 AM62x MCU SDK 实现很远的距离、尤其是使用 R5F 时、如何启动它? 这里指出无法加载 R5、但有 R5F hello world 示例。

#2. 电路板是否已初始化 NULL SBL、哪个内核正在运行 NULL SBL? 仅 R5?
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.
工具/软件:
#1。 客户希望使用 EB Autosar 开发 AM62x R5F、希望自己提前使用 AM62x MCU SDK 实现很远的距离、尤其是使用 R5F 时、如何启动它? 这里指出无法加载 R5、但有 R5F hello world 示例。

#2. 电路板是否已初始化 NULL SBL、哪个内核正在运行 NULL SBL? 仅 R5?
您好、Tony、
我认为下面的链接有助于开始设计 DM R5F 内核。
如果您仍然需要我的帮助、请告诉我。
此致、
Anil.
#1。 对于 R5F 应用、只需添加一个额外的线程(如 hello world 示例)即可调用以下两个例程?
/* Init LPM specific data */ Sciclient_initDeviceManagerLPMData(&gDMLPMData); sciServer_init();

#2. 它会 启动 sciServer 并继续运行吗? 在本示例中、是否只是一次呼叫、然后该呼叫被删除?
#3. SBL NULL 是怎么做的? 加载 TIFS? 并启动 R5F sci 服务器吗? 然后呢?
您好、Tony、
在 R5F 内核上运行两个任务(DM 和应用)
在 R5F 内核上、我们打算运行两个单独的任务:
1.设备管理器 (DM) 任务
2.应用任务
设备管理器 (DM) 任务初始化
DM 任务是通过 sciServer_init () API 初始化的,它:
•设置任务参数(优先级,堆栈等)
•创建并启动 DM 任务
在调用 sciServer_init() 后、不需要再次调用它、因为 DM 任务继续在后台运行。
低功耗模式 (LPM) 数据初始化
需要使用 Sciclient_initDeviceManagerLPMData() API 来执行以下操作:
•设置 DM 任务使用的 LPM 数据结构
•确保正确处理低功耗场景
即使 SBL_NULL 执行相同的过程、它们也会调用 SCI 服务器和 Sciclient_initDeviceManagerLPMData API。
如果没有这些 API 调用、DM 功能将不起作用。
因此、我们需要在应用程序中调用它们。
此致、
Anil.
尊敬的 Anil:
谢谢你。 我现在知道更多了。
另一个问题:如果只想在开发阶段开发和调试 R5F、在 SBL_NULL 启动后、可以从 CCS+JTAG 下载吗?
用户指南不支持 IIT。 但我无法理解、它只是一个 R5F 内核且已解锁、为什么不能通过 CCS 覆盖 DM 下载.out 来运行?
TIFS 是否与 DM 保持通信? 否则、TIFS 复位 R5F/SOC?
您好、Tony、
SBL_NULL 引导器件后、R5F 内核已运行并通过 sciServer_init () 执行器件管理器 (DM) 任务。
此任务对于 DM 操作至关重要 。
如果直接加载.out 文件会发生什么情况?
•通过 CCS 加载.out 文件将:
•停止正在运行的内核
•在本地复位 CPU
•覆盖 RAM 中的代码和数据、包括活动的 DM 任务
•这会中断 DM 的运行。 由于其他内核期望 DM 运行并响应、因此它可能:
•通信失败
•导致来自其他内核(如 A53)的请求被取消处理
•触发系统级崩溃或挂起
安全调试方法:仅加载符号
•通过使用“Load Symbols“、您可:
•连接到已经运行的 R5F 内核
•将应用的调试信息映射到 CCS 中
•避免覆盖存储器或干扰 DM
•这允许您:
•设置断点
•检查变量
•安全调试应用任务
此致、
Anil.
您好 Anil、
这会中断 DM 的操作。 由于其他内核期望 DM 运行并响应、因此它可能:
•通信失败
•导致来自其他内核(如 A53)的请求被取消处理
这是我在这里的问题、因为我没有运行刚刚使用 SBL_NULL 引导的其他内核 (A53、M4、PRU)、
#1。 哪个内核正在运行?
#2. 哪个核心正在与 DM 通信?
#3. 他们进行沟通的原因和目的是什么?
#4. 哪个内核运行哪个固件将导致系统崩溃?
您好、Tony、
在 DM R5F 内核 (AM62x) 上、当我们通过 CCS 发出 CPU 复位命令时、TCM 地址映射会发生变化—现在 TCMB 位于 0x00000000。
如果您在 TCMA (0x0) 处加载一个为假设矢量表而构建的.out 文件、它会崩溃、因为 0x0 不再对该代码路径有效。

解决这一问题的正确方法
方法 1:加载到 0x0 (TCM)、然后将 PC 设置为 0x0
•如果从 CCS 加载.out 映像,首先我们需要将 MMR 设置默认更改为 TCMA memory 。
接下来、将 PC 指向 0x0 并加载一个.out 文件。
方法 2(推荐):将矢量表放置在 DDR 中(如 SDL 示例所示)
•这样可以避免 TCM 映射问题。
•矢量表放置在 DDR 中的固定位置(例如 0x80000000)。
•R5 矢量基地址 (VBAR) 被编程为在启动时指向该 DDR 位置。
•即使在 CPU 复位后、也可以直接从 CCS 加载.out。

请遵循方法 2
这样可以避免 CPU 重置后的 TCM 映射问题,并使.out CCS 可加载,并在应用程序中删除不必要的 sdl .c 文件,并集成测试应用程序所需的任何文件。
此致、
Anil.
您好 Anil、
方法 2(推荐):将矢量表放置在 DDR 中(如 SDL 示例所示)
•这样可以避免 TCM 映射问题。
•矢量表放置在 DDR 中的固定位置(例如 0x80000000)。
•R5 矢量基地址 (VBAR) 被编程为在启动时指向该 DDR 位置。
•即使在 CPU 复位后、也可以直接从 CCS 加载.out。
这是我的问题、根据方法 2 调试电路板、程序无法从 main 函数开始执行。 代码一直卡在“lpm_clear_all_wakeup_interrupt ()“函数中。

1、正在运行哪个内核?
2、解决此问题的原因和方法?
尊敬的 Anil:
C:\ti\mcu_plus_sdk_am62x_11_00_00_16\examples\ sdl\ecc\am62x-sk\r5fss0-0_nortos\ti-arm-clang 可在下载.out 之前由复位 CPU 运行。
但 Hello world 无法运行。
对比映射文件、hello world 示例使用 TDMA 和 TCMB、ECC 示例仅使用 TCMA。


在 hello world 示例 cmd 文件中、有许多存储器分配、如下所示:
LOAD = R5F_TCMB、RUN = R5F_TCMA
为什么加载到 TCMB、在 TCMA 中运行?
将 hello world 工程 link.cmd 替换为 ecc_app 示例、然后重新编译并可以运行。