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/TM4C129ENCPDT:闪存引导加载程序 UART 7.

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/640699/ccs-tm4c129encpdt-flash-boot-loader-uart-7

器件型号:TM4C129ENCPDT
主题中讨论的其他器件:UNIFLASH

工具/软件:Code Composer Studio

我是 TI 微控制器的新手、尝试为 uart7构建引导加载程序时遇到了一些问题。 我认为我已经从 boot_serial 示例中正确配置了文件 bl_config.h 并通过 JTAG 进行了刷写。

但是、当我尝试通过 LM Flash 上载.bin 文件时、它不起作用。 我还通过 Uniflash 在起始地址上载.bin 文件、该地址在 尝试与引导加载程序一起运行时设置为 APP_START_ADDRESS、但也不起作用。

我出了什么问题? 我可以使用 LM Flash 将.bin 文件上传到 uart7吗?

我使用的是 Tiva TM4C129ENCPDT 、我唯一可以访问的 UART 端口是5和7。

此致、

Vinícius μ A

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

    尊敬的 Vinicius:

     在"Windows Device Manager (Windows 设备管理器)"下检查 UART7是否有 COM 端口? 另请检查您的 PC 和 MCU 之间是否具有适当且匹配的波特率。 如果您在设备管理器中看到 COM 端口、则右键单击该端口并选择属性、然后在端口设置选项卡下确保波特率与 MCU 匹配。

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

    您好、Charles、

    感谢您的回复。 我已经检查了串行通信的参数。

    在调试期间、我可以看到它在接收 数据包函数的 while 中等待。

    我还尝试通过 Docklight 发送两次0x55、但它没有收到任何响应。

    Vinicius

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!
    您没有回答我的问题。 您是否在设备管理器上看到 COM 端口? 您必须使用什么硬件才能使 UART7显示为 PC 的虚拟 COM 端口? 您是否使用 FTDI 芯片或其他协议转换工具?

    我建议您在跳转到串行引导加载程序之前、首先运行一个简单的示例、例如 PC 和 UART7之间的 UART 回显示例。 在调试引导加载程序问题之前、请确保 UART7正在与 PC 通信。

    另请使用示波器查看 UART7 TX 和 RX 引脚上是否显示正确的信令。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    我正在使用 FTDI 芯片与 PC 通信、我可以在设备管理器上看到 COM 端口。

    UART7和 PC 之间的通信工作正常。

    此致、

    Vinicius

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

    您是否已经有一些从 APP_START_ADDRESS 开始的代码? 您需要确保第一次没有从 APP_START_ADDRESS 开始的代码。

    1.确保您的闪存已完全擦除。
    2.使用 JTAG 首先下载 boot_serial
    3.在设备管理器中指定 COM 端口。 此外、单击"Disable Auto Baud Support"(禁用自动波特率支持)复选框。 我假设您在设备管理器中具有所述的正确波特率。 请仔细检查。 bl_config.h 使用115200作为默认值、因此您的 PC 端必须与之匹配。
    4.在“程序”选项卡中,指定.bin 文件。 请使用 boot_demo1.bin 或 boot_demo2.bin
    5.在“程序”选项卡中,指定“程序地址偏移量”。 如果使用默认值,则必须输入4000作为应用程序的偏移地址
    6.点击“编程”按钮。
    7.加载应用程序后,如果您的主板上相应引脚的 LED 在 demo.bin/demo2.bin 上运行,您应该会看到 LED 闪烁

    我会提出一些建议。
    1.如果您有 launchpad,请与 boot_demo1.bin 或 boot_demo2.bin 一起运行 boot_serial,并了解其工作原理。
    2.不确定是否需要修改硬件、尝试按 UART0上的原样运行 boot_serial (如果您还将 UART0连接到 FTDI)、并查看它是否适合您。
    在 bl_config.h 中、有与 UART 引脚关联的各种定义可用于串行引导加载。 确保通篇修改 UART7而不是 UART0。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    我已经尝试过你说的。 结果如下:

    这是 bl_config.h 文件。

    e2e.ti.com/.../2273.bl_5F00_config.h

    感谢你的帮助。

    此致、

    Vinicius

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Vinicius、
    您是否可以访问 Launchpad?
    引导加载程序只有在您使其工作一次后才能很容易理解、如果您使用 launchpad (由于可访问 UART0)、它的工作速度相对较快且容易、只需尝试 TI 的 Tivaware 文件夹中的两个示例即可。 你走了那条路吗?
    在这样的电路板上投资20美元肯定会为您节省几个小时! 如果您的时间与其他 EE 的时间一样值得、您应该立即进行这项投资、如果您对示例的引导加载程序有任何困难、我们很乐意发布进一步的答案。
    问题的直接答案是:是的、您可以使用 LM Flash 将文件上载到 UART7。
    谢谢
    布鲁诺
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    {Edit](编辑)、但有一些修正。 我指的是扇区。

    您的程序地址偏移是一个问题。 您有0x1C00。 这是一个地址、与闪存引导加载程序本身位于同一个闪存扇区中。 是否确定要执行此操作? 请注意、闪存擦除的工作是按扇区粒度进行的。 如果要强制覆盖第一个闪存扇区 、则需要取消注释 #define ENABLE_BL_UPDATE。 但是、不建议这样做。 我建议您像 boot_demo1那样将偏移地址更改为0x4000。

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

    您好!  

    我将尝试更改偏移、并尝试使用 Launchpad 来更好地了解引导加载程序。

    我还有其他一些问题:

    1) 1)我收到的消息错误仅与引导加载程序相关、或者可能是其他问题?

    2) 2)程序偏移量、APP_BASE 和 APP_START_ADDRESS 必须相同?

    3) 3)我能否上传具有不同程序偏移量的1个以上.bin 文件、并让引导加载程序处理其他偏移量? 例如、将其发送到其他位置。 (我只是想知道是否可能)

    此致、

    Vinicius

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

    您好!

      

    Vinicius Trentin 说:
    1)我收到的消息错误仅与引导加载程序有关,或者可能是其他问题?

     我只在闪存未针对应用的闪存空间进行完全擦除时看到此错误。 例如、如果应用程序占用的地址为0x4000、那么闪存必须完全擦除从0x4000开始的闪存扇区。 从0x0开始的引导加载程序位于第一个闪存扇区。 如果从0x4000开始的扇区未被擦除、那么您将得到该错误。 我自己也看到过这一点。  我以前曾就此向您指出过。 如果您的应用程序偏移量为0x1C00、则会要求引导加载程序将程序加载到引导加载程序本身所在的闪存扇区中。 这是可行的、但完全不建议执行、如前所述、因为这会破坏您的引导加载程序。  

    Vinicius Trentin 说:
    2)程序偏移量、app_base 和 app_start_address 必须相同?[/quot]

    是的、

    [引用 user="Vinicius Trentin"]3)我能否上传具有不同程序偏移的1个以上.bin 文件、并让引导加载程序处理额外偏移? 例如、将其发送到其他位置。 (我只是想知道是否可能)

     TivaWare 引导加载程序示例不支持这一点。 在本示例中、可能在加载应用程序后、按 launchpad 上的 SW1开关以加载另一个.bin 文件、但该.bin 文件将覆盖闪存中先前的.bin 文件。 您可以编写自己的应用程序、该应用程序将调用引导程序来将新的.bin 文件加载到未使用的闪存扇区中、而不会影响当前引导加载程序和现有应用程序所在的闪存扇区。 但是、您为什么要这么做? 您会使自己变得过于复杂。 您将需要编写一个引导加载程序、该引导加载程序知道要跳转到哪个应用程序。 引导加载程序如何知道何时覆盖第一个应用程序或第二个应用程序、甚至添加第三个应用程序? 您的应用是什么? 我会简单地从开始。  

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

    我能够将引导加载程序与 Launchpad 配合使用。
    我还检查了 APP_BASE、APP_START_ADDRESS 和程序偏移量的值。
    我认为问题可能出现在我的 bl_config.h 文件中。
    我更改的参数为:

    #define UART_FIXED_BAUDRATE 115200
    #define UART_CLOCK_ENABLE SYSCTL_RCGCUART_R7
    #define UARTx_BASE UART7_BASE
    #define UART_RXPIN_CLOCK _ENABLE SYSCTL_RCGCGPIO_R2
    #define UART_RXPIN_BASE GPIO_PORTC_BASE
    #define UART_RXPIN_PCTL 0x1.
    #define UART_RXPIN_POS 4.
    #define UART_TXPIN_CLOCK _ENABLE SYSCTL_RCGCGPIO_R2
    #define UART_TXPIN_BASE GPIO_PORTC_BASE
    #define UART_TXPIN_PCTL 0x1.
    #define UART_TXPIN_POS 5.

    它们是否正确?

    此致、
    Vinicius