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:使用 USB 和 UART 的引导加载程序

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/597505/ccs-tm4c1294ncpdt-bootloader-using-usb-as-well-as-uart

器件型号:TM4C1294NCPDT

工具/软件:Code Composer Studio

尊敬的所有人:

我正在尝试使用 USB 和 UART 引导加载程序来更新我的固件。 由于我分别使用这两个步骤完成、 对于基于 UART 的引导加载程序、我使用 boot_serial 示例;对于基于 USB 的引导加载程序、我使用 USB_stick_update 和 USB_demo 示例项目。

我看 Boot_Serial 示例、我认为我们可以为基于 UART 和 USB 的引导加载程序使用相同的 Boot_serial 示例、而不是使用两个不同的项目。 但是、当我在 bl_config.h 文件中定义 USB 注释部分时。 出现了问题、我们无法使用 UART 或 USB 更新固件、但我在评论该行时、基于 UART 的引导加载程序工作正常。

我无法找到问题、请告诉我可能的原因。 我们希望能及时答复。

谢谢、此致

Parvez Alam

 

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

    bl_config.h 中的注释表明、在这个项目中、这两种方法是相互排斥的。

    //
    //
    //以下定义用于配置引导
    //加载程序的操作。 对于每个定义、都描述了它与其他定义的交互。
    //第一个是依赖项(换句话说,
    如果定义了依赖项,则还必须定义//定义的定义),第二个是独占项(换句话说,
    //定义如果定义了它,则无法定义), 最后是
    //要求(换句话说,如果
    定义了//,则必须定义的定义)。
    //
    //必须定义以下定义,引导加载程序才能
    //操作:
    //
    CAN_ENABLE_UPDATE、ENET_ENABLE_UPDATE、I2C_ENABLE_UPDATE、
    // SSI_ENABLE_UPDATE、UART_ENABLE_UPDATE 或 USB_ENABLE_UPDATE
    // APP_START_ADDRESS
    // VTABLE 开始地址
    // FLASH_PAGE_SIZE
    // STACK_SIZE
    //
    //********* 

    //
    //
    ////选择 UART 作为与引导加载程序通信的端口。
    //
    //取决于:无
    //不包括:CAN_ENABLE_UPDATE、ENET_ENABLE_UPDATE、I2C_ENABLE_UPDATE、
    // SSI_ENABLE_UPDATE、USB_ENABLE_UPDATE
    //需要:UART_autobaud 或 UART_FIXED_BAUDRATE、UART_CLOCK_ENABLE、
    // UARTx_BASE、UART_RXPIN_CLOCK_ENABLE、UART_RXPIN_BASE、
    // UART_RXPIN_PCTL、UART_RXPIN_POS、UART_TXPIN_CLOCK_ENABLE、
    // UART_TXPIN_BASE、UART_TXPIN_PCTL 和 UART_TXPIN_POS
    //
    //*********
    #define UART_ENABLE_UPDATE
    

    //
    //
    //通过设备固件更新类选择 USB 更新。
    //
    //取决于:无
    //不包括:CAN_ENABLE_UPDATE、ENET_ENABLE_UPDATE、I2C_ENABLE_UPDATE、
    // SSI_ENABLE_UPDATE、UART_ENABLE_UPDATE、
    //需要:crystal_FREQ、USB_vender_ID、USB_PRODUCT_ID、 USB_DEVICE_ID、
    // USB_MAX_POWER
    //
    //*********
    //#define USB_ENABLE_UPDATE
    

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您选择不使用基于 ROM 的引导加载程序是否有原因?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的 Bob:

    我尝试通过删除注释来使用此示例、但在本例中、我无法使用 USB 或 UART 更新固件。 我认为需要进行更多的更改、但我无法识别这些更改、请告诉我这些更改。

    谢谢、此致
    Parvez Alam