历史上的今天
今天是:2024年12月12日(星期四)
2018年12月12日 | ARM7 LPC2378 远程升级----ISP与IAP
2018-12-12 来源:eefocus
最近本人在学习ARM7的远程升级,在这里将自己的学习过程与大家分享,有错误的地方还请大家指出便于改正!
ISP(In-System Programming)即“在系统可编程”,指电路板上的空白器件可以编程写入最终用户代码, 而不需要从电路板上取下器件,已经编程的器件也可以用ISP方式擦除或再编程。
IAP(In-Application Programming) 即MCU可以在系统中获取新代码并对自己重新编程,即可用程序来改变程序。ISP和IAP技术是未来仪器仪表的发展方向。
ISP和IAP的工作原理
ISP的实现相对要简单一些,一般通用做法是内部的存储器可以由上位机的软件通过串口来进行改写。对于单片机来讲可以通过SPI或其它的串行接口接收上位机传来的数据并写入存储器中。所以即使我们将芯片焊接在电路板上,只要留出和上位机接口的这个串口,就可以实现芯片内部存储器的改写,而无须再取下芯片。
IAP的实现相对要复杂一些,在实现IAP功能时, 单片机内部一定要有两块存储区,一般一块被称为BOOT区,另外一块被称为APP(应用程序)区。单片机上电运行在BOOT区,如果有外部改写程序的条件满足,则对存储区的程序进行改写操作且程序指针跳到存储区,开始执行放在存储区的程序,这样便实现了IAP功能,如果条件不满足则再次执行BOOT区的程序,保证可以进行再次的IAP。
通常在程序设计时有两种思路,见下图
思路1:将MCU分为3个区:BootLoader区、APP1(应用程序1)区、APP2(应用程序2)区,系统上电后程序从BootLoader区开始执行,根据条件选择跳到APP1(应用程序1)区中,当需要使用远程升级时,通过IAP,对APP2(应用程序2)区进行编程,改变相关标志位,然后使系统复位,系统再次从BootLoader区开始执行,通过判断标志位,选择跳到APP1(应用程序1)区或者APP2(应用程序2)区。当再次升级时,再对APP2(应用程序2)区进行编程,保证APP1(应用程序1)区不改变,这样即使升级失败,也能正常运行APP1(应用程序1)区程序,可以再次远程升级。
思路2:思路2是对思路1的简化,即将MCU分为2个区:BootLoader区与APP1(应用程序1)区合为一体、APP2(应用程序2)区,系统上电后程序从BootLoader区开始执行,由于两者合为一体了,所以也就运行了APP1程序,当需要使用远程升级时,通过IAP,对APP2(应用程序2)区进行编程,改变相关标志位,然后使系统复位,系统再次从BootLoader区开始执行,通过判断标志位,选择跳到APP2(应用程序2)区。当再次升级时,再对APP2(应用程序2)区进行编程,保证BootLoader区不改变,这样即使升级失败,也能正常运行APP1(应用程序1)区程序,可以再次远程升级。
思路1与思路2的总体思想是一样的,他们远程升级的核心都是IAP,而这里的IAP就是远程升级时所要用到的非常重要的知识点。这个IAP我打算放到下一篇重点介绍,这里的两种思路后续还会介绍,今天先和大家讲讲ISP的使用,由于J-Link的普及(既可调试程序也可直接下载程序),所以实际产品开发过程中ISP用的比较少,所以这里就简单介绍一下利用ISP下载程序。
ISP的使用:
讲ARM7 LPC2378的ISP,这里不得不提NXP公司的工具Flash Magic。下载地址:http://www.flashmagictool.com/ 点击打开链接 仔细看一下LPC2378的数据手册,会发现LPC2378一个引脚的名称为ISP(P2.10),P2.10 复位后的低电平被当作启动 ISP 命令处理器的外部硬件请求。
注意:在将管脚 P2.10 作为 ISP 硬件请求时需要特别注意:由于 P2.10 在复位后处于高阻模式,所以要使该管脚的状态稳定, 用户需要提供外部硬件(上拉电阻或其它器件)。否则一不小心可能就进入了 ISP 模式。

ISP电路设计时加上上拉电阻
Flash Magic烧写程序:

1、选择芯片类型、COM口、波特率、晶振频率为实际硬件电路的晶振频率
2、选择需要擦除的Flash
3、点击Browse,选择要下载的Hex文件
4、选择编译完成后进行校验
5、点击Start,开始下载
史海拾趣
|
被动安全系统方面 被动安全系统是指在交通事故发生后尽量减小损伤的安全系统,包括对乘客和行人的保护。 福特公司通过不断创新,推出先进的乘客约束系统和安全气囊技术,在乘员保护方面 ...… 查看全部问答> |
|
怎么一进中断I/O的状态就改变了,我在中断里面读取I/O的状态,怎么跟示波器显示的不一样? 怎么一进中断I/O的状态就改变了,我在中断里面读取I/O的状态,怎么跟示波器显示的不一样?… 查看全部问答> |
|
[转载] 簡易開核 輕鬆暢玩 ASUS M4A89GTD PRO/USB3 (存開箱) AMD 現今最夯的口號 我想還是 核心動力全開 小弟也藉由這次開核風氣 入手了M4A89GTD PRO/USB3 入手也一陣子了 就來發個開箱吧 本次的主角出現了 X2 555 與M4A89GTD PRO/USB3 這次華碩用的主機板的彩盒還滿亮眼的 在一張,把閃 ...… 查看全部问答> |
|
各位大哥大姐: 小弟求教! WinCE操作系统镜像生成以后,希望可以将其下载到Flash中,在以后系统复位或者重新上电以后,WinCE操作系统可以自动运行。可是,当我把镜像文件下载到Flash中后,却启动不起来,请问: &n ...… 查看全部问答> |
|
不知不觉已经wince驱动快一周年,写点学习经验,顺便散分,嘿嘿 刚洗完澡,头发未干,精神抖擞。想起自己快毕业一年了,特别来劲,情不自禁的在键盘上敲打起来。 我清楚的记得,我是2008.07.01被“轰出”校门的,然后申请了延迟离校,才可以在学校住宿,但是手里有几千块钱,于是就跑 ...… 查看全部问答> |
|
12岁的编程天才 田众和,1999年生,今年12岁,任时代网络软件工作室CEO兼CTO(技术总监)。小学4年级自学编程,创作第一个比较成熟的编程作品Othink系统,获得第一笔创业资金300元,招聘并领导11人团队,集资2000余元创建工作室,4个月盈利三万余 ...… 查看全部问答> |
|
本帖最后由 jameswangsynnex 于 2015-3-3 19:56 编辑 Canonical公司在职位的描述文字中写道“寻找业务拓展的精英来发展与行业伙伴的深度合作关系,来促进Ubuntu作为智能手机系统最终登陆手机”,以及“目标是创立一种围绕Ubuntu智能手机系统的良好 ...… 查看全部问答> |




