[PIC®/AVR®/dsPIC®产品]

求助 mplab IDE 烧录HEX文件的原理

[复制链接]
2950|0
手机看帖
扫描二维码
随时随地手机跟帖
zhoujiechj|  楼主 | 2013-8-29 15:46 | 显示全部楼层 |阅读模式

本人使用飞思卡尔S12XEG128MAL做烧录板,希望自制以PIC18F25K80为目标板的ICSP高压烧录程序。
之前通过抓取PICKIT3对目标板烧录程序时的波形,分析其烧录过程大致可以分为四个部分:
                   1、读DEVICE ID,估计是 PICKIT3 用于做校验的;

                   2、擦除所有模块,包括:
                         a、ERASE BOOT BLOCK;
                         b、ERASE BLOCK 0;
                         c、ERASE BLOCK 1;
                         d、ERASE BLOCK 2;
                         e、ERASE BLOCK 3;
                          f、ERASE (801004);貌似微芯官方文件《Flash Microcontroller Programming Specification》,没有给出定义,姑且以关键数据代替;
                         g、ERASE CONFIGURATION FUSES;
                         h、LongTime Duration for ERASE;这也是官方文件没有给出的,自己写的一些话,其实就是一大段寄存器配置;
                         i、写0x927F,写0x6A7F;这好像是结束的意思,清除EECON1寄存器的各标志位。

                  3、写数据;以单次写入操作数据不得超过64bytes,可小于;(PICKIT3在此过程中会执行回读数据操作,估计也是用于内部校验)

                  4、对配置寄存器CONFIGnL和CONFIGnH写数据。问题的关键所在,PICKIT3会在数据写入完成以后,会再对配置寄存器CONFIGnL和CONFIGnH赋值(通过示波器观察得到所赋数据)。但是自制的ICSP烧录的只是将mplab IDE提供的HEX文件中的数据提取出来,然后进行烧录,其中应该是没有用于配置寄存器CONFIGnL和CONFIGnH等的值的,所以暂时做不了配置寄存器赋值操作。我不是很确定用mplab IDE 在线烧录HEX文件和用mplab IDE编译源文件后再烧录程序是否有区别。还望各位大神不吝赐教,谢谢!
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

1

帖子

0

粉丝