08 2012 档案

摘要:这几天测试写好的IAP升级程序,真是一个糟,能将程序下载进去,但无法运行。 经过各种测试,修改终于找到了问题的原因,现在大致总结下我在写IAP程序的时候遇到的问题和解决方案。首先要实现单片机的IAP升级程序,我们要知道自己的IDE如何能将程序的函数或者变量的编译地址固定,因为对于bootload程序,我们要固定它的地址,还有从bootload跳转到的程序运行的地址。 对于MSP430,在测试中我程序复位时跳转到rts430x.lib:boot.obj (.text:_isr:_c_int00_noexit)这样一个启动函数,之后执行_syatem_pre_int->_auto_init. 阅读全文
posted @ 2012-08-17 11:30 吾乐 阅读(2077) 评论(1) 推荐(0)
摘要:QT在被诺基亚放弃后,终于在最近几天决定了出处,被芬兰软件公司Digia收购了,qt.digia.com,希望以后能发展的更好。 再不在弄点什么学学,在公司还真没什么事做了,本来想把写的单片机程序代码优化下,不过看着冗长的代码,不知道怎么入手,已经优化了一段时间,效果一般啊。还是做点别的,不然什么事都不想做,就坐那发呆啊。正好最近在写一个IAP升级程序,需要用到一个串口程序,且还需要一定的格式,找了很多工具无法使用,那就自己来写一个,想玩嵌入式发展,就用qt来写。 下面就是我写的一个串口程序,从网上找了不少的代码, 很多问题也是边写表搜索解决,最后完成了一个简单的串口收发程序,用的是W... 阅读全文
posted @ 2012-08-15 10:54 吾乐 阅读(549) 评论(0) 推荐(0)
摘要:完成了一个简单的IAP升级程序,只能实现简单的程序擦写。在程序启动的时候,检测命令,超时则运行主程序,否则进入升级模式,将bin文件分解,以相应的格式将程序数据发送到板子,而板子就直接实现对程序的擦写,只有个校验和和反馈,没什么有效的验证机制。由于只能手动实现bin的分解,暂时就写个小程序试验了下,还是能够运行的,郁闷,还是得会点上位机编程,不然好多测试都无法实现。 不过进一步思考发现,我这个程序只要升级失败就不能再次升级了(主程序被擦写掉了),这样肯定会有很多的问题,看来还要将主程序给分离出来,这样程序失败后还能再次利用命令进入升级,不过看现在程序结构发现有些烂了,悲催啊,真的改不动,边写. 阅读全文
posted @ 2012-08-09 11:33 吾乐 阅读(720) 评论(0) 推荐(0)
摘要:程序写的差不多了,总工叫我去实现程序的在线升级功能,还什么IAP,我还以为ISP呢,闷了好一会才缓过来,后来才知道IAP是应用可编程,即程序通过自身的升级代码来升级,而升级程序可以通过串口、USB、U盘之类的来提供。好吧,大概了解了点,后来在总工的提示下知道做这个程序需要将程序分为2段,一段主代码,另一段则是升级程序,这样后面在升级的时候只对运行的程序部分升级,而升级程序保持不变,防止把自己擦挂掉了,就over了,还有我们要对程序的地址什么的要有比较深的了解。 我用的是430,编译器是CCS4.0,可以通过CMD文件来管理段地址,不过刚开始完全不懂,找资料吧。找了半天,尝试了半天,终于成... 阅读全文
posted @ 2012-08-07 16:18 吾乐 阅读(861) 评论(0) 推荐(0)