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.

[参考译文] RTOS/AWR1642:如何加载 DSS_APP

Guru**** 2577385 points
Other Parts Discussed in Thread: AWR1642

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

https://e2e.ti.com/support/sensors-group/sensors/f/sensors-forum/621371/rtos-awr1642-how-to-load-dss_app

器件型号:AWR1642

工具/软件:TI-RTOS

有两个项目被称为 dss_PBL 和 dss_app ,dss_app 的代码与邮箱测试相同( test_mss_dss_msg_exchange) , dss_bl 的代码 如下所示

DSS_PBL 的功能跳转到0x007E1000,DSS_PBL 的代码存储在0x007E0000 - 0x007E1000 中, DSS_APP 的代码存储在0x007E1000- 0x007E1000 + 0x3f000中,如下所示

我通过在调试时保存内存来保存它, 在运行 DSS_PBL 之前,我使用加载内存将 DSS_APP 代码存储在 0x007E1000- 0x007E1000 + 0x3f000中,然后 DSS_PBL 跳转到 0x007E1000以运行 DSS_APP。

以这种方式加载 DSS_APP 是否有问题,因为我发现 DSS_APP 运行错误。 当 MSS 正在运行并且 DSS_PBL 加载 DSS_APP 以运行时  ,控制台显示“DSS:错误。 内部统计数据失败"

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

    很难说出发生了什么、或者函数是否被正确执行。  为什么不将它们链接在一起并让链接器解析地址?

    执行类似操作的更合适的方法可能是在链接器.cmd 文件中创建一个与.text 相同的单独代码段:

    PROG_RAM (RX):origin=0x00000100 length=0x0001FF00

    .text  :{} > PROG_RAM ALIG(16)

    myCodeSec:  > PROG_RAM ALIGN (16)

    然后在代码中使用 pragma 指定函数进入此段:

    #pragma CODE_SECTION (my_funt、"myCodeSec")

    void my_funt (void)

    您还可以为新的代码段创建单独的存储器区域、使其位于特定地址。

     Dave

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

    这是一个验证 DSS 程序  是否可以升级的实验,因为 AWR1642在 ROM 中具有引导加载   程序,如果我想通过 CAN 更新 DSS 程序,我只能使另一个 DSS_PBL 在 ROM 中的引导加载程序上加载 DSS_APP。 但是现在,我无法以这种方式加载 DSS 程序,或者在无法删除 ROM 中的引导加载程序时,您能告诉我另一种加载 DSS 程序的方法。

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

    我想您可能需要一个更简单的示例。  邮箱测试可能会失败、因为所有所需的驱动程序都没有初始化、因为它们是在测试正常运行时进行的。  第一步是验证0x007E1000处的代码是否被正确调用(即堆栈指针是否仍然有效?) 您可以正确执行代码。  接下来、您可以尝试一个更简单的示例、例如使用户 LED 闪烁(DS3)。

    但正确的做法是、引导加载程序希望从 QSPI 闪存加载代码、并在完成初始化后跳转到该代码。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我从一开始就尝试过简单的示例,0x007E1000处的代码被正确调用,我认为 DSS 和 BSS 的同步中出现了一些问题。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您是否还在运行 MSS 应用程序?  它必须正在运行才能成功进行通信。  如果是、您可以尝试在调用的代码(0x007e1000处的代码)中执行所有毫米波驱动程序/控制初始化。