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.

bootloader 选择使用IIC通信方式 在线更新应用程序,有点没有方向感,求大神指点一下,谢谢!!

我使用的是TivaWare BootLoader user's guide --SW-TM4C-BOOTLDR-UG-2.0.1.11577 这个手册,平台硬件是TM4c1230H6PM的处理器,开发环境为Keil。

我想使用IIC的方式来让bootloader实现自动更新固件程序,现在已经把bootloader文档看得差不多了,理解到下面情况了,希望有人可以帮助到我,thanks very much!

1.我是不是只需要配置bl_config.inc文件中有关于选择IIC模式的命令就可以实现bootloader通过iic 通信方式自动检查并更新固件程序。

2.还有我需要自己写上位机程序吗?好像没看到参考代码。。如果我需要自己写的话,是不是可以参考 bootloader  手册中有关serial update 章节中的一些通信协议呢?还是怎样?

谢谢大家的指点, First  thanks  you who will help me!

  • 这个没做过,不过可以给你点参考代码,是鬼子写的,看这个链接

    http://e2e.ti.com/support/microcontrollers/tiva_arm/f/908/t/363224

  • 恩,好的,真的很感谢你,谢谢!我去研究研究代码,另外问一问,您有没有关于讲解Ti bootloader 的一些资料呢? 那个手册讲得好像比较简单,网上资料好像比较少,谢谢!周末愉快!

  • 楼主您实验成功了没有呢,希望您能够分享经验。

  • 你好,我的问题还没有得到解决,暂时无法分享。但是我又换了种思维方式,自己写一个应用程序,情况是这样的: 1.我自己写一个应用程序(m4_update),基于project那个例子修改的,里面做了这样几件事情,main()函数中,初始化串口0(作为调试程序打印消息)和GPIO引脚(PB2作为输入引脚),然后读取PB2的值,如果为高电平(需要升级),则进入我的Updater()函数(这个函数是直接饮用boot_serial那个工程中的Updater函数),否则就不需要升级,然后就直跳到我自己写的一个点灯程序(m4_led)。

    2.我用的LM Flash Programmer 烧写的,m4_update从flash的0地址开始烧写,然后m4_led是从0x2800开始的,当两个程序都烧进去后,设置PB2为0,不需要升级时我发现跳转到m4_led后无法正常运行,我的跳转语句是:(*((void (*)(void))(*(uint32_t *)0x2804)))();?????确定执行到这一句,因为我在这句话前加了一句打印语句:  UARTprintf("call application..........\n");这句话可以打印,请问是哪里的问题呢?或者是我的思路有问题??

    3,很感谢你一直在回答我的问题,还希望你能帮到我这个刚接触硬件的IT小菜鸟,谢谢您!