一个关于upsd编程的问题

像见   2008-3-17 08:33 楼主
本人享用upsd3254编写一个动态更新的程序,也就是用一块flash做程序存储器,另一块做数据存储器.当更新数据下载到到程序存储器后把两块flash对换.

这样在编程上遇到几个问题,下载入flash程序的格式,两块flash对换后程序指针指向哪里?

有没有可供参考的资料分享一下

回复评论 (6)

请问你准备把中断向量表放在哪里?

                                 还有“两块flash对换后程序指针指向哪里”,这个问题中的程序指针是指什么?
点赞  2008-3-17 08:50

等~~~~

刚看了下upsd的说明文档 关于IAP的内容真的是比较少
不知道哪里有比较详细的资料 各位大师指教啊

现在碰到几个问题:1.假如使用datasheet上的方法 使用swap()函数,那样交换程序数据区后运行下载的新程序,如果在这个时候系统重新启动,复位后的程序是运行的哪块程序?

                 2.在制作更新程序的时候 我直接用keil 编译成hex文件
再转成bin文件,然后用串口助手发给单片机可以吗?还需要用提供的PSDexpress软件进行设置吗

                 3.串口接收到的数据应该从哪里开始存放? 是从数据区的0x0000开始吗?关于中断矢量表的问题keil在编译连接的时候应该就已经自动放好了吧


等~~~~~~~
点赞  2008-3-18 08:33

好像st有关于upsd32xx的iap的demo

http://www.st.com/mcu/devicedocs-uPSD3254BV-80.html

在Software - Microcontrollers一栏
点赞  2008-3-18 10:23

回复

1.假如使用datasheet上的方法 使用swap()函数,那样交换程序数据区后运行下载的新程序,如果在这个时候系统重新启动,复位后的程序是运行的哪块程序?

仍然从你的引导程序开始执行。

                 2.在制作更新程序的时候 我直接用keil 编译成hex文件
再转成bin文件,然后用串口助手发给单片机可以吗?还需要用提供的PSDexpress软件进行设置吗

肯定是可以的,如果程序量比较大,会比较麻烦,PSDexpress不能使用。

                 3.串口接收到的数据应该从哪里开始存放? 是从数据区的0x0000开始吗?关于中断矢量表的问题keil在编译连接的时候应该就已经自动放好了吧

想放到那里完全是你说了算,地址的编排在两个程序可以不一直。

好运!!
点赞  2008-3-24 16:18

我们做过uPSD3254A的远程升级项目。

从Flash用作引导程序,主Flash用作用户程序。

引导程序从串口接收目标代码(bin格式),写入主Flash,然后切换到主Flash运行用户程序。
点赞  2008-4-3 15:26

两块flash对换后程序从程序区0开始运行

                                  
点赞  2008-4-3 15:46
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复