本人享用upsd3254编写一个动态更新的程序,也就是用一块flash做程序存储器,另一块做数据存储器.当更新数据下载到到程序存储器后把两块flash对换.
这样在编程上遇到几个问题,下载入flash程序的格式,两块flash对换后程序指针指向哪里?
有没有可供参考的资料分享一下
请问你准备把中断向量表放在哪里?
还有“两块flash对换后程序指针指向哪里”,这个问题中的程序指针是指什么?
等~~~~
刚看了下upsd的说明文档 关于IAP的内容真的是比较少
不知道哪里有比较详细的资料 各位大师指教啊
现在碰到几个问题:1.假如使用datasheet上的方法 使用swap()函数,那样交换程序数据区后运行下载的新程序,如果在这个时候系统重新启动,复位后的程序是运行的哪块程序?
2.在制作更新程序的时候 我直接用keil 编译成hex文件
再转成bin文件,然后用串口助手发给单片机可以吗?还需要用提供的PSDexpress软件进行设置吗
3.串口接收到的数据应该从哪里开始存放? 是从数据区的0x0000开始吗?关于中断矢量表的问题keil在编译连接的时候应该就已经自动放好了吧
等~~~~~~~
好像st有关于upsd32xx的iap的demo
http://www.st.com/mcu/devicedocs-uPSD3254BV-80.html
在Software - Microcontrollers一栏
回复
1.假如使用datasheet上的方法 使用swap()函数,那样交换程序数据区后运行下载的新程序,如果在这个时候系统重新启动,复位后的程序是运行的哪块程序?
仍然从你的引导程序开始执行。
2.在制作更新程序的时候 我直接用keil 编译成hex文件
再转成bin文件,然后用串口助手发给单片机可以吗?还需要用提供的PSDexpress软件进行设置吗
肯定是可以的,如果程序量比较大,会比较麻烦,PSDexpress不能使用。
3.串口接收到的数据应该从哪里开始存放? 是从数据区的0x0000开始吗?关于中断矢量表的问题keil在编译连接的时候应该就已经自动放好了吧
想放到那里完全是你说了算,地址的编排在两个程序可以不一直。
好运!!
我们做过uPSD3254A的远程升级项目。
从Flash用作引导程序,主Flash用作用户程序。
引导程序从串口接收目标代码(bin格式),写入主Flash,然后切换到主Flash运行用户程序。