尝试用PIC24F做bootload,采用网口的方式烧写用户程序

[复制链接]
 楼主| 圈圈虫1989 发表于 2012-12-8 19:29 | 显示全部楼层 |阅读模式
最近在研究PIC单片机的自举程序,也就是只用ICD3烧写bootload程序,真正的用户应用程序通过其他的通信接口烧写到程序存储器里,目前在microchip官网上面看见有应用文档采用UART、ECAN做通信接口的,因为目前有个产品已经已经带有网口通信功能了(PIC24FJ128GA106+ENC28J60),在产品的调试过程中发现问题后拆机烧写程序太麻烦了。
阅读官方应用文档后,例程是用程序存储器0x400-0xC00放置bootload程序,该部分程序中包含一个UART、Timer功能,0xC02之后放置用户的应用程序。但是如果bootload的通信换成网口,因为网口程序叫复杂需要存储的空间2K左右,不知道能不能依葫芦画瓢。
 楼主| 圈圈虫1989 发表于 2012-12-8 22:20 | 显示全部楼层
自己顶一下,没有人做过这个吗?如果没有我做好了一定上传上来
NE5532 发表于 2012-12-8 22:27 | 显示全部楼层
你把全部HEX文件都获取了,暂存以后再烧,就没有这个问题了。
dogglove 发表于 2012-12-8 22:39 | 显示全部楼层
pic16 pic18 bootloader程序和自己的应用程序合在一起,最好编在一起,讨论一下
 楼主| 圈圈虫1989 发表于 2012-12-9 11:07 | 显示全部楼层
NE5532 发表于 2012-12-8 22:27
你把全部HEX文件都获取了,暂存以后再烧,就没有这个问题了。

好的,下周试验下
 楼主| 圈圈虫1989 发表于 2012-12-11 21:04 | 显示全部楼层
今天进行了调试,借鉴microchip官网上面AN1094的应用手册与程序进行了调试,移植到了PIC24FJ128GA010,能够正确读出设备ID与程序存储器中的数据。但是例程里面附带的上位机程序运行报错,不知道是什么原因导致的,因为该程序是用C++编写的,本人目前只会用C#写界面,理解不是很到位。
1、HEX文件需要上位机软件打开并且提取出需要下载到单片机程序存储器中的数据。因为HEX文件里面还包括地址信息等内容,不光只是单片机程序存储器中所需要的内容。
2、AN1094文档中提供的例程是每次都烧写PM、EM、CM三个部分,其中PM是程序数据,CM是配置数据,EM是EEPROM数据(这里不明白了,例程中的PIC24H芯片带EEPROM吗?)
3、每次都烧写CM,那之前自举程序的配置文件不是被清除掉了?难道自举程序不能多次使用?
4、自举程序的大小只能存放在0x400 - 0xc00这512指令大小的区间里面吗?
5、明天继续研究,望版主支持
yewuyi 发表于 2012-12-11 21:14 | 显示全部楼层
理论上当然是可以超过这个区间的,但实际中你需要处理好各个地址间跳转的问题,只要能正确进入入口即可。
 楼主| 圈圈虫1989 发表于 2012-12-12 20:58 | 显示全部楼层
yewuyi 发表于 2012-12-11 21:14
理论上当然是可以超过这个区间的,但实际中你需要处理好各个地址间跳转的问题,只要能正确进入入口即可。 ...

今天在microchip官网找到了PIC24F系列的自举程序例程,编号是AN1157,里面写的很详细了。
pgm_58 发表于 2013-4-1 14:36 | 显示全部楼层
楼主,我想问下用户应用程序如何转换成BIN格式的呀,我下了一些软件都转不了
Ryanhsiung 发表于 2013-4-1 20:55 | 显示全部楼层
支持一下
yklstudent 发表于 2013-4-2 06:50 | 显示全部楼层
试过官网的PICC16、PIC18的bootloader
官方文档AN1310,
不过感觉还是AVR的好用 有独立的BOOTLOADER区
huhaomcu 发表于 2013-5-27 23:09 | 显示全部楼层
圈圈虫1989 发表于 2012-12-12 20:58
今天在microchip官网找到了PIC24F系列的自举程序例程,编号是AN1157,里面写的很详细了。 ...

楼主,您好!我最近也在利用MicroChip AN1157中提供的代码对PIC24F32KA304进行移植,我对上位机的ini文件作了修改后能与我的MCU进行通信,但在下载程序中上位机提示了如下信息:
Verify Error at 0x4 should be: 0x1090 but read: 0x90
Verify Error at 0x6 should be: 0x1090 but read: 0x90
Verify Error at 0x8 should be: 0x1090 but read: 0x90
Verify Error at 0xA should be: 0x1090 but read: 0x90
Verify Error at 0xC should be: 0x1090 but read: 0x90
Verify Error at 0xE should be: 0x1090 but read: 0x90
Verify Error at 0x10 should be: 0x1090 but read: 0x90
Verify Error at 0x12 should be: 0x1090 but read: 0x90

是中断向量表区域出现了问题,在下载程序后我通过PKIT3将MCU内部的程序读取出来发现Boot区内的BootLoader程序正常,用户应用程序也正常的写入了我所划分的用户应用程序区中,没有发生位置冲突,Boot区也正常的存储了我应用程序的复位向量,不知是什么原因。
我个人感觉可能是.gld文件需要修改,希望能得到你的帮助!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

20

主题

264

帖子

4

粉丝
快速回复 在线客服 返回列表 返回顶部