IAP:在应用编程
我最近做的一个项目需要实现网络的远程升级,需要用到IAP功能,网上也有很多代码供参考,实现方式都是 Bootloader + UserCode的方式,即一个很少的起动程序实现IAP和用户代码跳转,自己写一个类似FlashMagic的工具来烧写用户代码,bootloader可以通过ISP或者JTAG的方式写入。
下面说说我在开发步骤和遇到的问题:
1.Bootloader 跳转到 Usercode:这个很简单,一般都不会出错,一个指针函数就OK
2.要确定中断向量表的位置,是内存还是flash,这个非常重要
3.三就是启动了噻
当然,在进行第一步时,要检查本地存储器中一个指定位置的标识,是否需要更新用户程序,如果需要的话,就IAP
这些网上资料很多,不再多说。
我遇到的问题:
1.中断:bootloader开了 Uart0中断,Timer0中断,写了一个简单的应用程序,什么中断都没有开,问题就在这里了,当bootloader打开了中断后,跳转到应用程序后,由于没有更新应用程序的中断向量表,就跳转到一个非法地址,异常!
确定原因:解决方案就不必多说了噻!
2.半主机模式:网上扫一下,很多哈!
我的用户程序里有FS,NET等,用的是RL-ARM,在FS中,需要重定向输入与输出,由于在第二次更新工程时,没有加入重定向文件,导致出错,加入重定向后,问题解决。
第一个问题困扰了我差不多一周,第二个问题倒是马上就发现了
写在这里,给朋友们做个参考,同时我也共享了我的bootloader,欢迎指正,共同进步
广告一下:
我现在无业,接活哈
B/S(DIV+CSS,.NET C#,sqlServer) C/S(.NET C#) 嵌入式开发等
电话:13060063607
QQ:85669000
我在成都
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。