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.

[参考译文] 用于引导加载程序的 F021闪存 API -哪些器件必须从 RAM 运行?

Guru**** 2482105 points


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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/709641/f021-flash-api-for-bootloaders---which-parts-must-run-from-ram

你好!

我正在为 RM44编写引导加载程序、我对 F021库有2个问题:

问题1:
如果引导加载程序将帮助安装新版本的应用程序、而不是新的引导加载程序、那么只需要从 RAM 运行 F021库、还是必须从 RAM 运行整个引导加载程序?
例如:

引导加载程序位于闪存、组0、扇区0中
应用程序位于闪存、组0、扇区1至15中。
F021存储在闪存组0扇区0中、但从 RAM 运行。

我假设:
我可以从闪存运行引导加载程序、但 F021必须存储在闪存中、在使用前必须复制到 RAM 中、并且链接器必须链接到 F021的 RAM 位置。 然后、引导加载程序将能够利用 F021来写入自己的扇区以外的其他扇区。 此假设是否正确?

问题2:
"从 ROM 复制到 RAM"函数是否必须位于汇编代码中? 我看到的所有示例都是这样做的、但是如果它是在堆栈设置完成后完成的、而它仅用于库、那么肯定必须能够在 C 代码中进行存储器复制?

我一直在浏览论坛上的一些问题、以及您的引导加载程序示例和应用手册、但我的大脑有点慢、无法弄清这些问题。 希望您能提供帮助、谢谢。

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

    您的理解是正确的。 您无需从 SRAM 运行整个引导加载程序。 只需在 SRAM 中运行 F021 API 相关代码。

    您可以使用汇编代码或 C 代码将代码从闪存复制到 SRAM。