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.

[参考译文] AM625:如何在 R5F 上进行开发

Guru**** 2436330 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1510630/am625-how-to-develop-on-r5f

器件型号:AM625


工具/软件:

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

#2. 电路板是否已初始化 NULL SBL、哪个内核正在运行 NULL SBL? 仅 R5?  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Tony、

    我认为下面的链接有助于开始设计 DM R5F 内核。

    如果您仍然需要我的帮助、请告诉我。

    https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1510578/processor-sdk-am62x--sdk-am62x-the-r5-core-debug

    此致、

    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、解决此问题的原因和方法?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、您好、

    请分享您的示例。 我可以在我这边检查,并将从 CCS 共享可加载的应用程序。

    此致、

    Anil.

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Anil、

    我使用的是 mcu_plus_sdk_am62x_11_00_00_16\examples\hello_world\am62x-sk\r5fss0-0_freeRTOS。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、您好、

    请尝试加载以下示例、而不是加载 Hello world 示例。

    如果您遇到任何问题、请告诉我。

    C:\ti\mcu_plus_sdk_am62x_11_00_00_16\examples\ sdl\ecc\am62x-sk\r5fss0-0_nortos\ti-arm-clang

    此致、

    Anil.

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 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 示例、然后重新编译并可以运行。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Anil:

    #1。 为什么要交换 ATCM 和 BTCM、其用途和优势是什么? 谁将在哪个点触发空间交换?

    #2. 对于应与 DM (例如 sbl_null)配合使用的实际用例、它根本不使用 ATCB 或 BTCM 存储器。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Tony、

    我可以在一天结束前消除你的所有疑虑。

    此致、

    Anil.

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Anil:

    我仍想知道为什么要交换 ATCM 和 BTCM?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Anil:

    您有答案吗? 或者告诉我从哪里获得帮助?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    最后,它被锁定,但我真的想知道 答案,为什么 Swamp TCM A/B ,什么是好处,何时交换它。