基于IAP和USB技术的嵌入式系统应用程序升级

对于内含IAP功能的嵌入式微控制器提出基于IAP和USB技术的系统应用程序升级的新方法。U盘被用作程序代码的存储设备,将微控制器的存储器Flash和SRAM进行有效的区间分配,经外部扩展接口USB,微控制器将U盘里面的代码读入SRAM里的相应区间,再通过微控制器IAP功能把SRAM代码写入相对应的Flash分区里,实现嵌入式系统应用程序在线升级。该方案受环境的影响非常小,嵌入式系统采取这种方法,应用程序的在线升级变的非常简单。本文给出了这种方法详细的程序流程图以及实现技术。

1 IAP、USB技术及嵌入式系统的含义

IAP(In Application Programming)是指在应用编程。就是在程序运行过程中的编程,片子提供一系列机制(软件或硬件上的)当片子运行时候可以提供改变flash里面的数据的方法。简单点讲,就是程序本身可向程序的存储器里修改程序或者写数据。典型使用这种方式的应用就是通过一小段的代码实现程序下载,单片机里ISP功能就是IAP技术实现的,就是片子在出厂之前就有一段boot程序存在里面,当片子上电之后,这段程序就开始运行,一经检测到上位机上面有下载的要求就和上位机发生通信,接着就下载数据到达存储区。

USB(通用串行总线)是英文Universal Serial BUS的缩写,中文简称是“通串线,是一个外部总线的标准,用来规范外部设备和电脑的通讯及连接。是个接口技术主要应用在PC领域,USB的接口支持设备热插拔及即插即用的功能。

嵌入式操作系统(Embedded Operating System,简称:EOS),即用在嵌入式系统里的操作系统。它是一个有着广泛用途的系统软件,一般包括和硬件有关联的系统内核、底层驱动软件、通信协议、标准化的浏览器等。此系统负责嵌入式系统里所有的软硬件资源分配、任务的调度,协调、控制并发的活动。它必须通过模块的装卸达到系统所需的功能。

2 基于USB和IAP嵌入式升级方法

IAP可经通信的接口对PC机传送代码进行接收,然后通过IAP功能把代码写入对应存储器里,对嵌入式的应用程序实现在线升级。USB是广泛应用在生活里的在线接口,用U盘作传输媒介把PC机编译的嵌入式的应用程序的代码写入U盘里,嵌入式的控制器经U盘的读写模块把U盘数据读入,应用IAP功能对程序实现升级,这个过程就实现了IAP及USB技术嵌入式的应用程序的在线升级方法。由于采用的是外部挂接的U盘作现场数据采集的海量存储应用,所以不需要增加任何的硬件,是一种低成本、高效、简洁的嵌入式的在线升级方法。
以下将依据IAP原理,对LPC2119-嵌入式的微控制器给出详细新方法的实现程序及技术的流程,该技术已经在臭氧发生器嵌入式的控制程序里得到广泛的应用及验证。具有便捷、成本低、可靠、简单等特点。

2.1 在线升级系统的结构

现场数据采集及嵌入式的应用程序传输媒介选用的是U盘,由于LPC2119无USB接口,所以采用的是外部扩展的USB通信的接口,即USB的读写模块将U盘里面的数据进行读写,模块的配置是SPI接口模式和LPC2119进行连接,这个模块往微控制器里供应读写U盘的文件数据接口,它在微控制器里占用的内存空间很少。U盘的读写支持字体模式、扇区模式及数据流模式,可选用U盘的读写模式进行模块配置。

2.2 IAP的功能实现调用过程

IAP的功能是通过编写相对应的功能函授,调用Boot Block 内IAP的服务程序来实现的,功能函授将不同的参数及命令码传递给IAP的服务程序,可把不同的IAP命令进行实现。命令码是50-56,相应的对应七个命令:为写操作准备扇区、拷贝RAM中的数据到Flash、擦除掉扇区、查空的扇区、读器件的ID、读引导程序的版本号以及数据校对。
寄存器及命令码经寄存器RO向若干个连续的字RAM进行传递,结果及状态码在IAP执行之后经R1指向下的若干个连续字RAM进行返回。因此,定义数组unsigned int result[ ]及un-signed int command[ ]分别用在结果返回及参数传递。result数组里的元素最多是两个,command数组里面的元素最多是五个,数组里元素的个数应该根据可能会用到的元素个数的最大数确定。

3 U盘数据的读写函数及协议

通过SPI的接口可实现U盘的读写模块与LPC2119通信,SPI在模式0或者模式3工作,U盘的读写模块和LPC2119之间能实现各种参数及命令的传递是通过字节数据直接的交互来实现的,对U盘读写模块可相应的完成各种操作。U盘的读写函数是ReadUdisk(),WriteUdisk();传递特定参数给读写函数,对U盘里指定地址指定文件以指定的模式实现读写。在此应用过程中,U盘文件里的数据应该采用“字节模式对少数数据进行读写,扇形模式对大量数据进行读写”这个原则。

4 应用程序的在线升级实现过程

4.1 运行流程:

如图2所示是LPC2119运行流程图,它分四个步骤进行:
(1)上电进行复位之后执行Boot Block引导程序,将微控制器进行初始化;
(2)判断进入ISP的功能与否,若没有,就要执行Flash里的Ox0地址应用程序;
(3)在应用程序相关初始化开始之后,开始调用Refresh()这个函数,查询出U盘是否存在其中或者是否需要对应用程序进行升级;
(4)依据查询的结果,对应用程序执行升级或者将Reflesh()应用程序予以退出。
LPC2119进行复位之后,仅有一次对Reflesh()进行调用的过程,所以若想实现升级就需要调用这个函数之前插进去U盘,这种类型的设计满足了控制系统在运行的过程里不允许应用程序进行升级操作要求。

4.2 存储空间配置:

LPC2119 Flash 里存有五种属性程序:U盘的读写函数、应用程序、IAP的功能函数、引导函数、Refresh()函数。Refresh()函数、U盘的读写函数以及IAP的功能函数组成了升级函数,升级的过程不能将其改变,必须固定在存放区确定的位置处,应用程序是指被升级的对象,引导函数指出厂时固化的程序。通过以上分析可以看出,其RAM空间及内置Flash合理配置是IAP升级能否实现的关键。
依据程序的属性及LPC2119运行的流程,
可把内置Flash分三个区:
(1)0-13#扇区是应用程序区,可在线升级的应用程序被放于其中;
(2)14#扇区是升级程序区,Refresh()函数、U盘的读写函数以及IAP的功能函数放置其中,对应用程序进行更新升级;
(3)15#扇区为Boot Block。
相对应的把RAM分成四个区:应用程序的使用区、U盘的数据缓冲区、升级程序的使用区、IAP的使用区。如图3所示是存储空间的配置图。

4.3在线升级实现过程

在线升级实现过程如图4所示,用户需要对控制器进行复位,因为升级执行之后就不能再退出。由于采用的是绝对的地址对调用函数Refresh()函数进行访问,所以在修改或者升级应用程序的时候,对这个调用的方法或者地址值是不能进行改动的。
由于在升级的过程中应用程序代码会随着改变,所以在升级应用程序的时候,不能够调用应用程序区函数,可用绝对地址的应用程序访问方式对升级程序区函数进行调用,但是在修改该应用程序区的时候要一直保持这个调用方法及地址值。

5 升级过程中防意外出现的设计

升级过程,难免会出现数据的传输错误、掉电、数据的来源出现中断等各式各样的意外导致升级可能失败,所以要设计出一套合理的方法保护升级过程顺利进行。
对于断点这种情况,可设置BOOT的引导区来确保系统来电之后可以继续进行升级程序过程完成升级。中断的向量表里存放着32字节数据,向量表进行中断之后,存放的就成为启动代码,程序的设计就与启动代码里完成RAM各种配置。在BOOT区用户代码引导以前检查出上一次的升级过程是否顺利的完成以及对升级的命令进行检查;对于数据的传输错误以及数据的来源出现中断这些现象,可通过CRC对传输的数据进行校验,把512字节作为单位对数据包进行记录,将正确的被接收的数据包存放在Flash里,丢失或者错误的数据包可要求进行重新传送,这样就大大的降低了数据升级过程中的危险,最大限度的保证升级过程的顺利实现。

6 结语

此文提出了基于USB和IAP嵌入式的应用程序的在线升级方法,经U盘的读写模块把U盘里应用程序代码进行读入微控制器RAM里,调用IAP的功能函数把代码写进微控制器Flash内,将应用程序的在线升级过程予以实现。这样就省去了拆卸控制板或者到现场带着专用的编程器这些繁琐的过程,通信网络也不需要使用,受环境的影响很小,成本很低。这个方法已经被应用在某些试验中并已经成功,这个方法便捷、可靠且简单,值得大大的推广及应用。

  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
对于ISP系统IAP系统升级,虽然它们是不同的概念,但可以采取类似的方法和步骤。以下是一些一般性的考虑事项: 1. 目标和需求:明确升级的目标和需求。确定您希望通过升级系统实现什么目标,例如提高性能、改进用户体验、增加新功能等。 2. 系统评估:评估当前系统的架构、技术栈、性能指标等。分析系统的瓶颈和问题,以便在升级过程中有针对性地解决它们。 3. 升级计划:制定详细的升级计划,包括所需技术、资源、时间安排等。确保计划合理,并考虑到对用户和业务的最小化影响。 4. 测试和验证:在实施升级之前,进行充分的测试和验证。这样可以发现潜在的问题,并确保升级系统的稳定性和功能性。 5. 逐步升级:根据计划,逐步实施系统升级。考虑到系统的复杂性和规模,可能需要分阶段进行升级,以降低风险。 6. 监测和回滚计划:在升级过程中,确保有一套有效的监测机制,以便及时发现并解决问题。同时,制定回滚计划,以防升级失败或出现严重问题。 7. 文档和培训:在升级完成后,更新相关文档并提供培训,以确保团队和用户能够顺利使用新系统。 需要注意的是,ISP系统IAP系统升级可能涉及不同的技术和特定的业务需求。因此,在实施升级前,确保充分了解系统的特点和要求,并根据实际情况进行相应的调整和规划。 希望以上信息对您有所帮助!如果还有其他问题,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Cool2Feel

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值