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.

[参考译文] CCS/TM4C1294NCPDT:引导加载程序

Guru**** 2451970 points


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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/636998/ccs-tm4c1294ncpdt-bootloader

器件型号:TM4C1294NCPDT

工具/软件:Code Composer Studio

大家好、我一直在查看 TivaWare 中随附的引导加载程序、就像我想在应用中使用它一样。 我只是想了解它的工作原理。 我停留的部分是引导加载程序和主应用程序都使用的闪存中的位置。 查看"boot_demo_ccs.cmd"和"bl_link_ccs.cmd"、它们看起来会在闪存中相互重叠。 引导加载程序从地址0x00000000开始、其长度为0x00010000。 主应用程序从0x00004000开始、其长度为0x000fc000。 因此、我想了解这2段代码在存储器中的重叠情况。

谢谢、
Doug Burrell

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

    您好 Doug、

     尽管为0x10000指定了长度(64KB)、但引导加载程序的实际大小从未超过几 KB。 您可以在映射文件中找到实际大小。 下面是有关引导加载程序大小的映射文件信息。 闪存存储器分为不同的物理扇区。 每个扇区为16kB (0x4000)。 这就是应用程序需要在0x4000或更高的位置启动而不是在0-16kB 之间启动的原因、在这种情况下、程序擦除操作不仅会擦除应用程序代码、还会擦除引导加载程序本身。

    模块总结
    
    模块 代码 ro 数据 RW 数据
    ---- ------ ----
    .\boot_loader\
    bl_main.obj 1448 0 93
    bl_packet.obj 456 8. 0
    bl_startup_ccs.obj 304 136 0
    BL_UART.obj 176 0 0
    bl_check.obj 92 0 0
    bl_flash.obj 88 0 0
    +--+---------------- +--- +--- +--- +
    总计: 2564 144. 93
    
    堆栈: 0 0 192.
    +--+---------------- +--- +--- +--- +
    总计: 2564 144. 285. 

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    非常好、感谢您为我们提供的信息。 为什么 boot_serial 应用程序使用0x00010000作为长度而不是0x00004000?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 Doug、

    从未想过引导加载程序会占用64KB 空间。 它只是为了通知链接器分配不同段所需的最大闪存量。 您可以将其更改为0x4000、但这不会造成任何问题。 除非您指示链接器将段专门分配到存储器范围(例如、在16K-64k 之间)、否则链接器将尝试从0x0开始分配。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    感谢查尔斯的信息!