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.

[参考译文] F28M35H52C:C-Boot ROM RAM 的使用

Guru**** 2526340 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/942232/f28m35h52c-c-boot-rom-ram-usage

器件型号:F28M35H52C

我刚刚注意到、对于协处理器、从 v207到 v208的 device_support 代码、为引导加载过程保留的区域增加到0x01A0。

因此、正确的链接器 cmd 文件应包括:

BOOT_RSVD  :origin = 0x000002,length = 0x0001A0  
RAMM0       :origin = 0x0001A2,length = 0x00025E  

与 v208之前的版本相反、当我们具有以下内容时:

 BOOT_RSVD  :origin = 0x000002,length = 0x00009F  
 RAMM0       :origin = 0x0000A1,length = 0x00035F

由于此更改导致 RAMM0减少256字节、我想知道对于始终从闪存引导的应用、保留旧版本还是忽略 boot_RSVD 和"收回"所有 M0是安全的?

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

    Christian、

    正如您所说、闪存引导加载程序不会像其他加载程序那样使用过多的存储器/堆栈、因此您应该能够收回一定数量的 RAM。

    我建议使用已知值播种 M0 SRAM (即使是0或0xFFFF 也没关系、只是代码可能没有的内容)、然后运行引导加载程序以观察 M0的哪一部分被用于闪存引导堆栈。  然后、您可以返回并释放在引导过程中未写入的任何部分。

    最棒的

    Matthew

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

    您好、Matthew、

    这是一个好主意、但我恐怕这可能不能证明未来是正确的、或者一次运行可能不会显示最大的闪存启动堆栈使用量。

    另一方面、由于闪存引导不涉及任何实际的引导加载(不是仅仅是分支、所有代码都已经在闪存中)、也许我们可以收回所有 M0? 我是否在这里遗漏了一些重要的东西?

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

    您好!

    刚刚找到了这篇相关文章、这似乎意味着我的应用可以使用所有 M0、至少在 ARM 端是可能的。

    https://e2e.ti.com/support/microcontrollers/c2000/f/171/t/412222?tisearch=e2e-sitesearch&keymatch=BOOT_RSVD

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

    Christian、

    感谢您指出、我尝试找到有关引导 ROM 堆栈需求的信息、即使启动到闪存也会有一些堆栈使用。  

    但是、正如文章指出的那样、在引导完成后应用程序接管时、Brom 将不再使用此空间、因此无论引导模式如何、您都可以自由地覆盖此空间。

    同样的注意事项也适用、即如果存在复位事件、则 Brom 将根据需要覆盖这些区域。

    感谢您花时间和耐心参加此次活动。

    最棒的
    Matthew