Thread 中讨论的其他器件: SYSBIOS
您好!
我需要使用 BeagleBone Black 对 TM4C129进行编程。 我正在使用 Tivaware 驱动程序库和 TI- RTOS。 规划情况如下。

我需要遵循哪个示例。 我计划使用闪存类型的引导加载程序。 如果有任何人有其他容易和良好的选项,请建议。

此致、
Sumit Chaulya
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.
您好!
我需要使用 BeagleBone Black 对 TM4C129进行编程。 我正在使用 Tivaware 驱动程序库和 TI- RTOS。 规划情况如下。

我需要遵循哪个示例。 我计划使用闪存类型的引导加载程序。 如果有任何人有其他容易和良好的选项,请建议。

此致、
Sumit Chaulya
您好!
boot_serial 是基于闪存的引导加载程序、用于对 TM4C129 MCU 上的应用程序固件进行编程/升级。 boot_deme1是一个示例应用、由引导加载程序通过 UART 端口进行编程。 您可以使用在主机 PC 上运行的 LM Flash Programmer 下载应用程序映像。 由于您使用的是 Beagle Bone、因此请参阅本应用手册 以了解如何在主机端实施编程器以进行串行引导加载。
https://www.ti.com/lit/pdf/spma074
TivaWare 还具有用于 sflash 命令行实用程序的源代码、位于 C:\ti\TivaWare_C_Series-2.2.0.295\toolsflash。 您可以参考 sflash、构建在 Beagle Bone 上运行的实用程序。
尊敬的 Charles:
感谢您的建议。
它与 UART0协同工作。 我已经测试了示例代码 boot_serial 和 boot_deme1。
在本例中、我有通过 UART1的程序。
那么、如何将 UART0更改为 UART1?
我必须遵循的流程是什么?
我当时尝试打开引导串行示例代码来修改 UART 端口、但无法打开。
我收到此类消息。

我复制并粘贴到另一个文件夹、但收到了相同的消息。
此致、
苏米特
您好!
请参阅 bl_config.h 文件、您可以在其中配置要用于串行引导加载的 UART 端口。 下面是当前为串行引导加载配置 UART0的代码片段。 您可以将其更改为项目的 UART1。
//***************************************************************************** // // Selects the baud rate to be used for the UART. // // Depends on: UART_ENABLE_UPDATE, CRYSTAL_FREQ // Exclusive of: UART_AUTOBAUD // Requires: None // //***************************************************************************** #define UART_FIXED_BAUDRATE 115200 //***************************************************************************** // // Selects the clock enable for the UART peripheral module // // Depends on: UART_ENABLE_UPDATE // Exclusive of: None // Requires: UARTx_BASE // //***************************************************************************** #define UART_CLOCK_ENABLE SYSCTL_RCGCUART_R0 //***************************************************************************** // // Selects the base address of the UART peripheral module // // Depends on: UART_ENABLE_UPDATE // Exclusive of: None // Requires: UART_CLOCK_ENABLE // //***************************************************************************** #define UARTx_BASE UART0_BASE //***************************************************************************** // // Selects the clock enable for the GPIO corresponding to UART RX pin // // Depends on: UART_ENABLE_UPDATE // Exclusive of: None // Requires: UART_RXPIN_BASE, UART_RXPIN_PCTL and UART_RXPIN_POS // //***************************************************************************** #define UART_RXPIN_CLOCK_ENABLE SYSCTL_RCGCGPIO_R0 //***************************************************************************** // // Selects the base address for the GPIO corresponding to UART RX pin // // Depends on: UART_ENABLE_UPDATE // Exclusive of: None // Requires: UART_RXPIN_CLOCK_ENABLE, UART_RXPIN_PCTL and UART_RXPIN_POS // //***************************************************************************** #define UART_RXPIN_BASE GPIO_PORTA_BASE //***************************************************************************** // // Selects the port control value for the GPIO corresponding to UART RX pin // // Depends on: UART_ENABLE_UPDATE // Exclusive of: None // Requires: UART_RXPIN_CLOCK_ENABLE, UART_RXPIN_BASE and UART_RXPIN_POS // //***************************************************************************** #define UART_RXPIN_PCTL 0x1 //***************************************************************************** // // Selects the pin number for the GPIO corresponding to UART RX pin // // Depends on: UART_ENABLE_UPDATE // Exclusive of: None // Requires: UART_RXPIN_CLOCK_ENABLE, UART_RXPIN_BASE and UART_RXPIN_PCTL // //***************************************************************************** #define UART_RXPIN_POS 0 //***************************************************************************** // // Selects the clock enable for the GPIO corresponding to UART TX pin // // Depends on: UART_ENABLE_UPDATE // Exclusive of: None // Requires: UART_TXPIN_BASE, UART_TXPIN_PCTL and UART_TXPIN_POS // //***************************************************************************** #define UART_TXPIN_CLOCK_ENABLE SYSCTL_RCGCGPIO_R0 //***************************************************************************** // // Selects the base address for the GPIO corresponding to UART TX pin // // Depends on: UART_ENABLE_UPDATE // Exclusive of: None // Requires: UART_TXPIN_CLOCK_ENABLE, UART_TXPIN_PCTL and UART_TXPIN_POS // //***************************************************************************** #define UART_TXPIN_BASE GPIO_PORTA_BASE //***************************************************************************** // // Selects the port control value for the GPIO corresponding to UART TX pin // // Depends on: UART_ENABLE_UPDATE // Exclusive of: None // Requires: UART_TXPIN_CLOCK_ENABLE, UART_TXPIN_BASE and UART_TXPIN_POS // //***************************************************************************** #define UART_TXPIN_PCTL 0x1 //***************************************************************************** // // Selects the pin number for the GPIO corresponding to UART TX pin // // Depends on: UART_ENABLE_UPDATE // Exclusive of: None // Requires: UART_TXPIN_CLOCK_ENABLE, UART_TXPIN_BASE and UART_TXPIN_PCTL // //***************************************************************************** #define UART_TXPIN_POS 1
尊敬的 Charles:
非常感谢您的指导。 我遵照你的指示,工作很好。
但现在我遇到了一些新问题。
现在、我尝试将引导加载程序与我的实际源代码集成、但收到一些错误。

我想我必须要改变的东西,但我不知道这是什么。
工作环境:TM4C129DNCPDT、TI-RTOS、TIVAWARE 驱动程序库。
更改引导加载程序的 cmd 文件之前

更改引导加载程序的 cmd 文件后

编译日志:
****项目 MPU_E 的配置版本****构建
"C:\\ti\\ccs1120\\ccs\\utils\\bin\\gmake"-k -j 8 all -O
生成文件:"../MPU_E.cfg"
调用:XDCtools
"C:/ti/xdctools_3_32_00_06_core/xs "--xdcpath="C:/ti/tirtos_tivac_2_16_00_08/packages;C:/ti/tirtos_tivac_2_16_00_08/products/tidrivers_tivac_2_16_00_08/packages;C:/ti/tirtos_tivac_2_16_00_08/products/bios_6_45_01_29/packages;C:/ti/tirtos_tivac_2_16_00_08/products/ndk_2_25_00_09/packages;C:/ti/tirtos_tivac_2_16_00_08/products/uia_2_00_05_50/packages;C:/ti/tirtos_tivac_2_16_00_08/products/ns_1_11_00_10/packages;" xdc.tools.configPkg -o configPkg -t ti.targets.arm.elf.m4F -p ti.platforms.tiva:TM4C129DNCPDT -r release -c "C:/ti/ccs1120/ccs/tools/compiler/ti-cgt-arm_20.2.5.LTS "../MPU_E.cfg"
正在制作 package.mak (由于 package.bld)...
正在从 package/cfg/ MPU_E_pem4f.cfg 配置 MPU_E.xem4f ...
正在生成自定义 ti.sysbios 库 makefile ...
开始生成库源代码...
Making D:/HBIO/FW_Developments/HBIO_PLURALIS_CONTROL_BOARD/dev/MPU_E src sysbios/sysbios.aem4f ...
gmake[1]:`D directory :/HBIO/FW_Developments/HBIO_PLURALIS_CONTROL_BOARD/dev/MPU_E /sysbios' src
gmake[1]:没有什么可以做的`所有'。
gmake[1]:正在离开目录`D /HBIO/FW_Developments/HBIO_PLURALIS_CONTROL_BOARD/dev/MPU_E src / SYSBIOS'
完成库构建。
clem4f package/cfg/mpu_E_pem4f.c ...
"package/cfg/mpu_e_pem4f.c"、第22126行:警告:无法访问语句
"package/cfg/mpu_e_pem4f.c"、第22780行:警告:无法访问语句
"package/cfg/mpu_e_pem4f.c"、第22961行:警告:无法访问语句
"package/cfg/mpu_e_pem4f.c"、第23893行:警告:无法访问语句
已完成构建:"../MPU_E.cfg"
构建目标:"MPU_E.OUT"
调用:ARM 链接器
"c:/ti/ccs1120/ccs/tools/compiler/ti-cgt-arm_20.2.5.LTS/bin/armcl -mv7M4 --code_state=16 --float_support=FPv4SPD16 -me -O2 - define=ccs"--define=part_TM4C129DNCPDT /ti/ccs1120/ccs/tools/compiler/ti-cgt-arm_20.2.5.LTS/lib --gcc --obj_warning=225 /ti/ccs1120/ccs/tools/compiler/ti-cgt-arm_20.2.5.LTS/include --obj_off-display_error_number Analog_Monitor Fault_Monitor /ti/TivaWare_C_Series-2.2.0.295/driverlib/ccs/Debug/driverlib.lib -
"configPkg/linker.cmd"、第151行:警告#10096-D:指定的地址位于存储器映射之外
错误#10264:默认内存范围与现有内存范围闪存重叠
错误#10264:默认内存范围与现有内存范围 SRAM 重叠
错误#10010:链接过程中遇到错误;未生成"mpu_e.out"
>>编译失败
Makefile:159:目标"Mpu_E.out"的配方失败
gmake[1]:***[MPU_E.Out]错误1
Makefile:155:目标"全部"的食谱失败
gmake:***[全部]错误2
****构建完成****
*
如果我单击此行 "configPkg/linker.cmd"、第151行:警告#10096-D:指定的地址位于存储器映射之外"
我将在 linker.cmd 中获取该代码。

请建议更改。
谢谢。此
致、 苏米特
您好!
您需要相应地映射矢量表。
您好!
如果由于某些问题(通信失败、电源故障等)而无法加载新应用程序
[/报价]您可以使用 CHECK_CRC 来验证是否成功对新应用程序进行编程。 有关详细信息、请参阅引导加载程序用户指南中的 CHECK_CRC。
[/quote]复位后应使用旧应用程序启动控制器。
[/报价]当前的引导加载程序将使用新固件覆盖现有的旧固件。 它不会保留旧的应用程序。 您可以自定义引导加载程序并将闪存分为两个不同的部分、在这两个部分中、引导加载程序将更新其中一个程序映像并决定上电后跳转到哪个程序映像。