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.

TM4C1230H6PM烧写问题请教

Other Parts Discussed in Thread: TM4C1230H6PM

我们板上大量使用了TM4C1230H6PM

有问题想咨询请教一下:

1、普通方法,一个裸跑的“mcu应用程序”是通过TI的仿真器下载到片内的flash中

2、我们想在“mcu应用程序”中,通过网口或spi口,把新版的“ mcu应用程序”加载到内存中,然后在烧写到片内flash上

3、简单说,就是在“mcu应用程序”中,实现“”新版mcu应用程序”的自动升级更新

4、那么:

     a、烧写的“ mcu应用程序”应该是什么格式?是否还是elf或bin格式?如果是bin格式,如何从elf转换成bin?命令或工具?(仿真器下载似乎是elf格式)

     b、用户的新版“ mcu应用程序”,应该烧写到flash的什么“起始地址空间”?

     c、烧写的库函数接口?

  • TM4C123x的话,是可以通过串口,SSI,I2C,CAN,USB升级的,网口不支持,因为TM4C1230H6PM没有以太网接口,或者你可以使用以太网转usb,串口等。烧写格式的话,应该是bin或者hex都是可以的,用CCS配置下就会生成.bin或者.hex格式的代码了。还有就是需要你自己写bootloader,具体可以看看TIVA bootloader的手册,这个只有官方的文档,不熟悉的话可以先看看STM32的bootloader升级,这个网上的资料多。官方的例程给出了两个示例用于bootloader的升级,分别是

    C:\ti\TivaWare_C_Series-2.1.4.178\examples\boards\dk-tm4c123g下的

  • 目前,咱们更多研究下来,总结出以下情况:
    1、mcu启动,可以是 bootloader + app.out方式在flash上存在,由bootloader在启动过程中,来控制app.out的更新升级
    2、其实,通过TI仿真器下载下去的app.out(elf格式),在flash上的存在是:从0x0000_0000地址开始的一片区域,而且仅仅是app.bin的文件数据, 并没有bootloader存在和参与启动过程

    那么请帮忙再次确认一下:
    1、通过ccs构造和编译出来的app.out,其实是可以自己裸跑运行起来的?
    2、对于TI的mcu,其实可以没有bootloader程序的过程?或者芯片内部的rom有一个pre-boot的过程了?

    我们的应用需求场景是:
    不通过bootloader,也不修改bootloader了,只有app.out启动运行状态下,在app.out中,增加函数功能:实现新的app.out的更新升级,烧写flash
    目前推测下来,把新的app.bin文件烧写到flash的 0x0000_0000起始地址处即可

    但是一个新问题:
    在测试flash读,写,擦除功能时:读,擦除测试没问题
    在写0x0002_0000起始地址的1K数据时,程序运行进入异常中断死循环了。函数是FlashProgram()
    mcu重启后,发现数据也正确写入了,但是死循环了,就不好判断咱们的程序app.bin(大约80K)是否全部成功写入了?
  • 请参考

    TM4C1230是没有网口的,更谈不上网口升级。芯片内部有ROM bootload的

    可以参考链接上的使用方法。