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.

[参考译文] TM4C129XNCZAD:引导加载程序

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1485326/tm4c129xnczad-boot-loader

器件型号:TM4C129XNCZAD
主题中讨论的其他器件:test2

工具与软件:

尊敬的先生:

我们使用了基于 TI 的基于闪存的引导加载程序 exmplae。 我们已 针对基于 UART 的接口更新修改了 bl_config.h。

它也在工作。 我们使用 UART1、波特率115200和 LM Flash 加载程序来更新应用程序。

现在的问题是、如果我们 在中间中断 LM 闪存加载程序的更新过程、那么就无法再次更新。

并且器件在重新启动后不会启动。

要在 bl_config.h 中执行的更多设置 、如 CRC 校验等 才能避免这种情况。

CRC_Check 足以使器件保留旧代码。

e2e.ti.com/.../0525.bl_5F00_config.h

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [报价用户 id="477645" url="~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1485326/tm4c129xnczad-boot-loader "]

    现在的问题是、如果我们 在中间中断 LM 闪存加载程序的更新过程、那么就无法再次更新。

    并且器件在重新启动后不会启动。

    [报价]

    如果您在 中间中断、那么您的固件仅进行了部分编程。 0x0和0x4处的地址将具有有效的 SP 和复位矢量。 上电后、处理器通过检查 SP 和复位矢量认为存在有效的固件、即使固件映像不完整、也会跳转到应用。  

    [报价用户 id="477645" url="~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1485326/tm4c129xnczad-boot-loader "]

    要在 bl_config.h 中执行的更多设置 、如 CRC 校验等 才能避免这种情况。

    CRC_Check 足以使器件保留旧代码。

    [报价]

    是的、使用 CRC_Check、以便引导加载程序通过在跳转到应用程序或以其他方式进入引导加载程序模式之前验证 CRC 来检查完整的固件映像。  

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

    尊敬的先生:

    因此、在 bl_config.h 中使 能#define CRC_Check 就足够了     、或者也需要#define ENVERSET_CRC 或//#define ENABLE_BL_UPDATE。 请确认  

    我们已在 binpack 之前和之后附加 bin 文件。

    -MT30s_FW_14_11.bin 之前   

    在 test2.bin 之后

    我根据 前面在 bl_config.h 中的帖子中提到的现有 UART 更新、启用 check_crc 和 enforce_crc

    但设备无法引导。 还有其他需要吗?

    e2e.ti.com/.../8231.MT30s_5F00_FW_5F00_14_5F00_11.zipe2e.ti.com/.../8231.test2.zipe2e.ti.com/.../2845.bl_5F00_config.h

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

    您好!

     您能否参阅此帖子? 您能否在存储器窗口中检查矢量表末尾是否有长度和 CRC 值? 在 binpack 之后、这就是您应该看到的标记字、长度和 CRC 与从0x4000开始的应用程序映像相关的信息。  

    https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1434578/tm4c1294ncpdt-bootloader-crc32/5501080?tisearch=e2e-sitesearch&keymatch=binpack#5501080

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

    尊敬的先生:

    根据 spmu301e .pdf  矢量表上要定义的 marker1、marker2、crc 长度、crc 和剩余4个字。 我们做了相同的和已经共享了我的 bin 文件和 Afet bin 包。 我 使用 Keil 编译器。 Keil 编译器 通过定义 marker1,2,length,crc 生成的 bin 文件 也无法引导。 上面的图像和帖子不清楚我。您可以看到我的 bin 文件和详细说明原因吗

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

    请看一下下面我的屏幕截图与您的屏幕截图。 我的标记字、长度和 CRC 从0x4208开始。 您从0x4000开始、这是 相反的。

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

    正如您评论, 我的 bin 文件数据显示在位置0x4000开始(标记1 ,标记2 , 长度,crc ). 当我打开我的 bin 文件在在线 bin 编辑器,它显示@0x0000位置. 因此、我对如何查看感到困惑。 我们没有内存浏览器。  

    根据文档宏 Check_crc、它将标记和 CRC 插入到矢量表的顶部、并且您的屏幕截图显示在矢量表下方。 还有一点、binpack.exe 还仅在表顶部添加了 CRC。

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

    首先、 binpack.exe 之前的原始 MT30s_FW_14_11必须构建为从0x4000开始、因为这是引导加载程序根据您的 bl_config.h 预期它位于的位置 你是这么做的吗?

    所以我对如何查看感到困惑。 我们没有内存浏览器。  [报价]

    您没有内存浏览器、这是什么意思? 没有使用 CCS 或任何类型的 IDE 吗? 在 CCS 中、转到"View"->"Memory Browser"、如下所示。 如果您使用的是其他 IDE、则需要了解如何打开内存窗口。

    根据文档宏 Check_crc、它说明标记和 CRC 插入在矢量表的顶部、您的屏幕截图显示在矢量表下方。 另一件事是 binpack.exe 也只在表的顶部添加了 CRC。

    我认为这份文档可能会让人感到困惑、具体取决于您所参照的文档最上面的位置。 如果你看看矢量表、0x0处的第一个位置是栈指针、0x4处的第二个位置是复位矢量。 这实际上是矢量表的底部。 不能在0x0和0x4处使用标记。 矢量表的顶部表示矢量表最高地址处的表末尾。  

    [/quote]