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.

[参考译文] TM4C1292NCPDT:2017年6月7日、关于从闪存执行固件映像

Guru**** 2348500 points
Other Parts Discussed in Thread: EK-TM4C1294XL
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/608242/tm4c1292ncpdt-07-06-2017-regarding-execution-of-firmware-image-from-flash

器件型号:TM4C1292NCPDT
Thread 中讨论的其他器件:EK-TM4C1294XL

您好!

我正在处理引导代码。 闪存被分区以适应引导加载程序、用于更新标志的公共存储器区域以及两个固件映像。 它们位于闪存中、

引导代码:0x00.0000 - 0x00.3FFF

固件映像1:0x00.4000 - 0x07.FFFF

通用存储器区域:0x08.0000 - 0x08.3FFF

固件映像2:0x08.4000 - 0x0F.FFFF

我的启动代码是、必须 根据通用存储器区域中的标志比较和验证固件映像、并执行固件映像。 是否执行了类似的实现? 如何直接从闪存执行固件映像? 是否有任何函数可从闪存存储器地址执行固件映像?

谢谢、此致

Sandra

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Sandra、
    此帖子可能有助于回答您的问题。 e2e.ti.com/.../2139115
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    有关 TivaWare 库的引导加载程序的信息很多。 有一个示例引导加载程序工程演示了如何将引导加载程序与两个示例应用程序工程结合使用。

    C:\ti\TivaWare_C_Series-2.1.4.178\examples\boards\ek-tm4c1294xl\boot_serial

    C:\ti\TivaWare_C_Series-2.1.4.178\examples\boards\ek-tm4c1294xl\boot_demo1

    C:\ti\TivaWare_C_Series-2.1.4.178\examples\boards\ek-tm4c1294xl\boot_demo2

     简而言之、每个项目都作为独立固件程序进行链接、但它不是从零开始、而是在某些存储器块的开头具有其"矢量"。 然后、引导加载程序决定运行哪个程序(或运行 更新例程)。 然后、引导加载程序加载所选运行应用程序的堆栈指针和程序计数器。 这是通过以下语言中的汇编语言例程来完成的:

    C:\ti\TivaWare_C_Series-2.1.4.178\boot_loader\BL_STARTUP_CCS.s

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

    HII Bob Crosby、

    感谢你的答复。 在项目 boot_demo2中,在 jumptotloader()内,通过调用地址0x2C 调用 bootloader 的 SVC 处理程序。 要在闪存地址0x4000处执行固件映像、应如何调用? 我使用函数((void (*)(void)0x00004000)();. 在使用此函数时是否应该执行其他操作?

    谢谢、此致

    Sandra

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

    感谢你的答复。 请告诉我如何将变量存储在闪存中以及如何在以后使用。

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

    有很多方法可以实现这一点。 我使用单个.asm 文件和简单的链接文件创建了一个 CCS 汇编语言项目。 编译时、您会收到有关无入口点的警告。 这是有道理的、因为这不是可执行的。 我附加了这个简单的项目。 然后可以像可执行程序一样将文件 constant.out 编程到闪存中(Run->Load->Load Program")、但在随后对引导加载程序或应用程序进行编程时、通过将(tools->"on chip flash")擦除方法设置为"仅限必要的页"、可以避免擦除常量。

    /cfs-file/__key/communityserver-discussions-components-files/908/constants.zip