公告

大中华汽车电子生态圈社区并入开发者社区- 更多资讯点击此

Tip / 登入 to post questions, reply, level up, and achieve exciting badges. Know more

cross mob
Translation_Bot
Community Manager
Community Manager
Community Manager

你好,

我目前正在为 TC27x 设备开发一个 ERIKA 项目。 我有一个调试器,我想将应用程序直接加载到 RAM 内存中。 因此,我对链接器脚本进行了一些修改,以 6EDL_SPI_LINK PSPR 和 DSPR 的部分。 此外,我还更改了起始地址、中断表地址和 EVAL_6EDL7141_TRAP_1SH 表地址。 但是,尽管我在 mpe: vtc: abs18 分区布局中将其链接到 DSPR0 内存,但在链接 zrodata 部分时仍然会遇到错误。
请在附件中找到链接器脚本(只需删除名称末尾的 “.html” 即可)。

在此先谢谢。

smartconx_target@Q!w2e3r4t5y6u7i8o9p0||/t5/AURIX/Tasking-Linker-error-ltc-E112-cannot-locate-40-section-s-ltc-I455-requirement/td-p/670597

0 点赞
1 解答
Translation_Bot
Community Manager
Community Manager
Community Manager

为了防止 c_init 函数将初始值从闪存复制到 RAM 时初始化数据,您需要添加链接器选项--no-rom-copy

然后,初始化变量的值将包含在 ELF 文件中 RAM 中该变量的地址中。 由于您使用的是调试器,因此调试器会将此值直接加载到 RAM 位置,无需再从其他位置复制该值。

但是请记住,每次启动应用程序之前,都需要再次下载应用程序,以确保所有初始化的数据都有其起始值。 如果在应用程序执行期间初始化变量的内容被覆盖,而您只是在调试器中执行重置命令,则该变量的默认值将不存在。

最诚挚的问候,

Ulrich Kloidt 任务工具支持

smartconx_target@Q!w2e3r4t5y6u7i8o9p0||/t5/AURIX/Tasking-Linker-error-ltc-E112-cannot-locate-40-section-s-ltc-I455-requirement/m-p/676875

在原帖中查看解决方案

0 点赞
5 回复数
Translation_Bot
Community Manager
Community Manager
Community Manager

你好,

抱歉,我忘记将 DSPR 从 RAM 类型更改为 NVRAM 了。 修改后,zrodata 部分链接到 DSPR,我成功编译了该项目。 只有一个问题:在不更改RAM类型的情况下,还有其他方法可以采用这种方法吗?

smartconx_target@Q!w2e3r4t5y6u7i8o9p0||/t5/AURIX/Tasking-Linker-error-ltc-E112-cannot-locate-40-section-s-ltc-I455-requirement/m-p/670598

0 点赞
Translation_Bot
Community Manager
Community Manager
Community Manager

你好 @hamba

我很高兴你能找到一个解决方案,有一个通过任务制作的应用说明,解释了如何在RAM中执行主程序,这是6EDL_SPI_LINK 应用说明 ,特别是标有“ OVERLAY KEYWORD FOR RUNNING CODE FROM RAM MEMORY ” 第5页 的部分,它包含了关于如何实现在暂存器RAM中执行代码的非常有用的提示, 顺便说一句,tc27x.lsl 文件第 471 行定义(如果您使用的是 PSPR0/DSPR0)程序暂存器它的类型是 NVRAM,而数据暂存器它的类型是 RAM,由于哈佛的架构,我认为最好将 PSPR 用于代码,将 DSPR 用于数据,但也可以按照您的意图进行操作, 请记住,它使用共享资源互连总线在多个 CPU 之间交换数据,有关这方面的更多信息可以在AURIX™ System Architecture 或通过 MyICP 上的用户 手册 找到

问候!

smartconx_target@Q!w2e3r4t5y6u7i8o9p0||/t5/AURIX/Tasking-Linker-error-ltc-E112-cannot-locate-40-section-s-ltc-I455-requirement/m-p/674342

0 点赞
Translation_Bot
Community Manager
Community Manager
Community Manager

你好大卫,

感谢您的回复。
我的目的是将所有部分 6EDL_SPI_LINK 到 RAM 中,并避免在启动期间复制代码。为了实现这一点,我将 DSPR 和 PSPR 从 RAM 类型更改为 NVRAM。这允许我使用调试器将应用程序直接加载到 RAM 内存中。
有没有其他解决方案可以达到这个目的?

最诚挚的问候,

smartconx_target@Q!w2e3r4t5y6u7i8o9p0||/t5/AURIX/Tasking-Linker-error-ltc-E112-cannot-locate-40-section-s-ltc-I455-requirement/m-p/675620

0 点赞
Translation_Bot
Community Manager
Community Manager
Community Manager

你好 @hamba

我不太确定这是否可能所以,

我们来问专家吧 @User13836

问候!

smartconx_target@Q!w2e3r4t5y6u7i8o9p0||/t5/AURIX/Tasking-Linker-error-ltc-E112-cannot-locate-40-section-s-ltc-I455-requirement/m-p/675876

0 点赞
Translation_Bot
Community Manager
Community Manager
Community Manager

为了防止 c_init 函数将初始值从闪存复制到 RAM 时初始化数据,您需要添加链接器选项--no-rom-copy

然后,初始化变量的值将包含在 ELF 文件中 RAM 中该变量的地址中。 由于您使用的是调试器,因此调试器会将此值直接加载到 RAM 位置,无需再从其他位置复制该值。

但是请记住,每次启动应用程序之前,都需要再次下载应用程序,以确保所有初始化的数据都有其起始值。 如果在应用程序执行期间初始化变量的内容被覆盖,而您只是在调试器中执行重置命令,则该变量的默认值将不存在。

最诚挚的问候,

Ulrich Kloidt 任务工具支持

smartconx_target@Q!w2e3r4t5y6u7i8o9p0||/t5/AURIX/Tasking-Linker-error-ltc-E112-cannot-locate-40-section-s-ltc-I455-requirement/m-p/676875

0 点赞