我使用的是TivaWare BootLoader user's guide --SW-TM4C-BOOTLDR-UG-2.0.1.11577 这个手册,平台硬件是TM4c1230H6PM的处理器,开发环境为Keil。
我想使用IIC的方式来让我自己写的应用程序实现自动更新固件程序,现在已经把bootloader文档看得差不多了,也看了些TI的例程,遇到以下问题,希望有人可以帮助到我,thanks very much!
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开始的,当两个程序都烧进flash后,设置PB2为0,不需要升级时我发现跳转到m4_led后无法正常运行,我的跳转语句是:(*((void (*)(void))(*(uint32_t *)0x2804)))();?????确定执行到这一句,因为我在这句话前加了一句打印语句: UARTprintf("call application..........\n");这句话可以打印,请问是哪里的问题呢?或者是我的思路有问题??
3,以上是我现在正要解决的问题,大问题是我怎么让我的TM4c1230H6PM支持通过I2C方式实现在线升级固件程序,小问题是我怎么解决我上面提到的跳转问题,还希望大家能帮到我这个刚接触硬件的IT小菜鸟,谢谢您!先谢谢了!!