LPC17XX系列ISP升级流程

ISPLPC17XX系列ISP升级流程

说明:在ubuntu下通过“U转串”模块跟LPC17XX开发板的UART0连接上,通过ISPLPC程序升级。

ISP命令及升级流程简要说明:参考相关文档

http://wenku.baidu.com/view/2f95ba17866fb84ae45c8de5.html

注:对于不同型号的LPC进入ISP的方式会不一样,例如在复位后,要拉低ISP引脚:11XX系列是PIO0_117XX系列是PIO2_10。此平台搭建的ISP模式是,用keil或其他Flash Magic软件把LPCFlash擦除干净,上电复位后自动进入ISP

ISP升级简要流程说明:参考网上相关文档

http://bbs.dzsc.com/space/viewspacepost.aspx?postid=91894

数据长度是本行发送的原始数据的长度,校验和是原始数据的和。要先将数据长度转化UU编码再发送,不要跟原始数据一起赚UU编码。

发送“W”,写RAM多少字节数据时,如果满一个扇区就写4096(然后固化Flash,继续发“W”写命令,继续发送数据),如果不满4096,就要写实际的数据长度。其实总的来说就是实际数据长度(“W”命令 + 数据长度)。

HEX文件了解:

http://baike.baidu.com/view/1229888.htm

HEX文件中,读出的数据是ASCII,要转化为十六进制发送,从HEX文件读出的数据是一个字节分为两位,“高、低,高、低”这样排列,要将两个数据合并为一个。

注意:往LPC里头写的是数据,以上文档说到的“00”。

还有一点注意的是,可能往LPC里面写数据成功了,但有Flash里面的成了运行不了的情况。其原因是HEX文件开头的“8个中断向量的校验和”(注意,LPC寄存器是32位的)。因为LPC在冷启动或复位的时候,BOOT代码会首先计算Flash扇区0中前8个中断向量的校验和,如果为0(大概是表示有程序的意思),就把执行控制权转移给用户代码,程序才会运行。而我们在用keil编译器编译出来的binhex文件(顺便提一下,keil的烧写是IAP),它的检验和位置没有填充值(第八个中断向量)。而我们使用K-Flash或者Flash Magic进行ISP烧写,又或者使用仿真器AK100CK100编程时,由其编程算法校验并填充了第八个中断向量,然后ISP烧写。这引起了校验芯片内的代码和原始的binhex文件对比时,会提示4个字节的不一致,导致程序不能运行。

因此注意修改第八个中断向量的值,领前8个中断向量加起来和为0

注意:以上参考资料说的比较笼统,具体过程自己可用Flash Magic软件往LPC里面烧写程序,然后跳出串口线什么的,看往里面写了些什么,及返回了些什么。

程序代码就不贴了,知道这个过程,仔细琢磨就很容易写出来。

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Portable command line ISP for NXP LPC2000 family and Analog Devices ADUC 70xx Version 1.79 compiled for Windows: Aug 4 2010, 10:55:56 Copyright (c) by Martin Maurer, 2003-2009, Email: Martin.Maurer@clibb.de Portions Copyright (c) by Aeolus Development 2004, www.aeolusdevelopment.com Syntax: lpc21isp [Options] file[ file[ ...]] comport baudrate Oscillator_in_kHz Example: lpc21isp test.hex com1 115200 14746 Options: -bin for uploading binary file -hex for uploading file in intel hex format (default) -term for starting terminal after upload -termonly for starting terminal without an upload -localecho for local echo in terminal -detectonly detect only used LPC chiptype (PHILIPSARM only) -debug0 for no debug -debug3 for progress info only -debug5 for full debug -donotstart do not start MCU after download -try try n times to synchronise -wipe Erase entire device before upload -control for controlling RS232 lines for easier booting (Reset = DTR, EnableBootLoader = RTS) -controlswap swap RS232 control lines (Reset = RTS, EnableBootLoader = DTR) -controlinv Invert state of RTS & DTR (0=true/assert/set, 1=false/deassert/clear). -verify Verify the data in Flash after every writes to sector. To detect errors in writing to Flash ROM -logfile for enabling logging of terminal output to lpc21isp.log -halfduplex use halfduplex serial communication (i.e. with K-Line) -ADARM for downloading to an Analog Devices ARM microcontroller ADUC70xx -PHILIPSARM for downloading to a microcontroller from NXP(Philips) LPC13xx/LPC17xx/LPC2000 family (default) 请按任意键继续. . .
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值