当前位置:文档之家› 嵌入式设备远程在线升级技术的研究_黄绳雄

嵌入式设备远程在线升级技术的研究_黄绳雄


随着 电 子 技术 、 通 信 技术 以 及 计算 机 技 术 的 迅 猛 发 展 , 终端 包 括 基 于 ARM 内 核 的 嵌 入 式 控 制 芯 片 和 Modem 模 块 。
嵌入式系统已经广泛应用于各领域 ,各种行业 对 嵌入 式 设 备 二 者 之 间 通 过 RS232 总 线 连 接 , 服 务 器 与 远 程 终 端 通 过
图 3 Bootloader 工作原理流程 Fig. 3 Procedures of working principle for Bootloader
2.2.2 FLASH 存储器编程及升级流程 远 程 终 端 的 升 级 主 要 是 对 ARM 芯 片 内 部 的 FLASH 存
储器的原始数据进行擦除以及新数据的下载的过程。 本研究 采用 IAP(In-Application Programming)技术进行 FLASH 编程, 在应 用 编 程 IAP 是 从 结 构 上 将 FLASH 存 储 器 映 射 为 两 个 存 储体,当运行一个存储体上的用户程序时,可对另一个存储 体重新编程,之后将程序从一个存储体转向另一个;同时还 可以在应用程序控制下, 对程序某段存储空间进行读取、擦
-172-
黄绳2 在线升级实现流程 Fig. 2 Procedures of online update 处理器是 Luminary Micro 公司生产的 Stellaris 系列微控制器, 该 芯 片 内 部 具 有 256 kB FLASH 和 64 kB SRAM,LM3S6965 芯片能够提供高效的性能,广泛的集成功能,适用于各种关 注成本并明确要求具有过程控制以及连接能力的应用方案, 此微处理器是针对工业的应用方案而设计的,这些方案包括 远程监控、测试和测量设备等。 2.2 嵌入式系统软件设计 2.2.1 Bootloader 工作原理 Bootloader 位 于 FLASH 的 起 始 处 , 主 要 是 用 来 启 动 系 统 ,并 且 装 载 用 户 程 序 执 行 ,如 果 没 有 Bootloader,硬 件 启 动 成 功 后 ,将 直 接 运 行 用 户 应 用 程 序 。 反 之 ,Bootloader 的 启 动 代码将先被执行,进行一系列的初始化操作后,根据预先设 定的条件,选择执行用户应用程序或升级控制程序。 Bootloader 包 含 两 种 不 同 的 操 作 模 式 :“启 动 加 载 ” 模 式 和“下载” 模式。启动加载模式:这种模式也称为“自主”模式。 也就是 Bootloader 从目标 机 上 的某 个 固 态存 储 设 备上 将 操 作 系统加载到 RAM 中运行,整个过程并没有用户的介入。 这种 模式是 Bootloader 的正常 工 作 模式 。 下 载 模式 : 在 这 种模 式 下, 目标机上的 Bootloader 将 通 过 串口 连 接 或网 络 连 接等 通 信手段从 PC 下载文 件 ,比 如:下 载 内 核映 像 和 根文 件 系 统映 像等。 从主机下 载 的 文件 通 常 首先 被 Bootloader 保 存到 目 标 机的 RAM 中,然后再被 Bootloader 写到目标机上的 FLASH 类 固态存储设备中[3]。 Bootloader 工作原理流程图如图 3 所示。
嵌入式系统的运行主要分为工作模式和 升 级 模式 ,其 中 命令头、包序列 、数据单元 、CRC 校验码 、数据包尾标志 、总包
工 作 模 式 为 默 认 模 式 ,工 作 模 式 指 设 备 正 常 工 作 状 态 ,嵌 入 数 等 )[2],嵌 入 式 系 统 每 接 收 到 一 个 数 据 包 ,都 将 返 回 确 认 信
除和写入操作。IAP 的实现极为灵活,可利用单片机的串行口 接到计算机的 RS232 口 ,通 过专 门 设 计的 固 件 程序 来 编 程内 部 存 储器 , 可 以 通过 现 有 的 Internet 或 其 他 通讯 方 式 很 方 便 地 实现 远 程 升级 和 维 护[4]。
为 了 实 现 升 级 将 ARM 芯 片 内 部 的 FLASH 存 储 器 划 分 为 Bootloader 区 (程 序 启 动 区 )、升 级 处 理 区 、用 户 代 码 0 区 、 用户代码 1 区。 如图 4 所示。
收 稿 日 期 :2012-03-11
稿 件 编 号 :201203090
基金项目:贵州省科学技术基金(黔科合 J 字[2010]2134 号)
笔者设计的嵌入式系统,其硬件结构主要包括一个片外 EEPROM、微处理器 LM3S6965 及相应的接口电路。 LM3S6965
作者简介:黄绳雄(1986—),男,福建福州人,硕士研究生。 研究方向:电路系统设计自动化。
DOI:10.14022/ki.dzsjgc.2012.09.037
第 20 卷 第 9 期 Vol.20 No.9
电子设计工程 Electronic Design Engineering
2012 年 5 月 May. 2012
嵌入式设备远程在线升级技术的研究
黄绳雄, 张荣芬 (贵州大学 理学院, 贵州 贵阳 550025)
摘要: 介绍了嵌入 式系 统 远 程在 线 升 级的 工 作 原理 ,并 详 细阐 述 了 系统 硬 件 平台 及 软 件的 设 计 原理 ,提 出 了基 于 In-
ternet 通 信方 式 的 嵌入 式 系 统远 程 在 线升 级 的 方案 ,并 对 该方 案 进 行了 测 试 ,测试 结 果 表明 :该 方 案 具 有 较 高 的 升 级
式是指嵌入式处于升级状态,包括接收服务器发送的程序代 码,以及在 flash 区域固化程序代码等[1]。 1.2 远程在线升级原理
软件的在线升级目的。 在线升级实现流程如图 2 所示。
2 嵌入式系统在线升级的设计
整个 升 级系 统 主 要由 服 务 器和 远 程 终 端 组 成 ,其 中 远 程 2.1 硬件平台
成功率和较快的升级速度。
关键词: 在线升级; TCP 通信协议; 嵌入式系统; 在应用编程
中图分类号: TN8
文献标识码: A
文 章 编 号 :1674-6236(2012)09-0172-03
Research of remote online update for embedded device
HUANG Sheng-xiong, ZHANG Rong-fen (College of Science of Guizhou University, Guiyang 550025, China)
式 系 统 按 预 定 的 程 序 完 成 相 应 的 测 控 任 务 , 并 且 通 过 息,若数据包校验无 误 ,则 在 规 定的 FLASH 区 域 进行 旧 程 序
internet、GPRS 等方式向监控管理中心上报监测参数。 升级模 的 擦 除 以及 新 程 序的 复 制 ,从而 达 到 远程 终 端 的 嵌 入 式 系 统
护成本、提高设备的工作效率具有很重要的现实意义。
升级控制程序,待服务器接收到嵌入式系统的确认升级回复
1 嵌入式系统功能及在线升级原理
后即开始发送升级程序代码,在发送升级程序代码前,服务 器会将这些代码拆分成固定长度的多个数据单元,以每个数
1.1 嵌入式系统的功能
据单元为核心组成数据包 (数据包内容包含数据包头标志、
Abstract: The working principle of remote online update for embedded system is presented. The hardware platform of the system and the design principle of software are introduced. This paper presents the scheme of remote online update for embedded system which is based on the communication mode of Internet and this scheme was tested, the result shows that this scheme has a high rate of success for update and a fast speed for update. Key words: online update; TCP protocol; embedded system; IAP
图 1 系统结构图 Fig. 1 Structure of system 服务器作为软件升级任务的主动发起者,首先向嵌入式
式系统软件远程在线升级技术进行研究,并提出了一种已成 系统发送升级命令,嵌入式系统在硬件启动后,首先执行引
功 验 证 的在 线 升 级实 现 方 法,该 方 法 对减 少 嵌 入 式 设 备 的 维 导程序 Bootloader 进行 一系 列 的 初始 化 操 作, 同 时 选 择执 行
的 系 统 功 能 、性 能 以 及 规 模 的 要 求 都 在 日 益 提 高 ,开 发 者 必 Internet 进行通信。 系统结构如图 1 所示。
须能够针对客户的需求及时对系统进行维护和升级,以延长
系统的使用周期, 改善系统的性能。 目前远程升级方式主要
有: 采用 Boot 加双 Loader 的结构式 设 计 实 现 系 统 的 完 整 升 级 、 基 于 TFTP (Trivial File Transfer Protocol) 协 议 的 ARM 软 件远程更新系统等。 笔者对基于 LM3S6965 微控制器的嵌入
图 4 FLASH 内部划分 Fig. 4 Internal division of FLASH 启动区主要用于存放系统初始化代码以及引导程序 Bootloader,当 CPU 复 位 后 ,自 动 执 行 该 段 程 序 代 码 ,该 程 序 的主要功能是读取片外 EEPROM 中相关标志,判定嵌入式系 统的 运 行 模式 ,若 是 工作 模 式 ,则根 据 片 外 EEPROM 中 其 他 标志,跳转到规定的应用程序区的首地址;若是升级模式,则 进入软件升级处理部分的首地址。 升级处理区主要是负责接收程序代码数据包、 校验、固 化 程 序代 码 等 ;当升 级 完 毕后 ,将 修 改片 外 EEPROM 中 相 关 标志,指示 CPU 复位后的运行模式和复位后应运行的程序区。 用户代码 0 区和用户代码 1 区用于交替存放当前用户 代码以及升级代码,若当前用户代码放在 0 区,则将接收到 的升级代码存放在 1 区,此时用户代码 1 区便成为当前终端 指向的用户程序,而用户代码 0 区则用于存放下次升级时的 新代码。 远程终端 上电 后 首 先进 入 Bootloader 区 进行 系 统 的初 始 化 ,接着 终 端 从片 外 的 EEPROM 中读 取 升 级配 置 ,包 括 升 级 标 志位 ,已 收 到的 最 后 一个 数 据 包的 ID 等 ,若 终 端 处 于 升 级 状态,则发出向服务器索要升级数据的指令,此时指令中将 包含终端上次已接收到的最后一个数 据 包 的 ID,这 样 可 以避 免服务器重复发送数据包, 实现续传的功能。 终端通过 Internet 接 收 数 据 包 并 对 数 据 包 进 行 校 验 判 断 以 保 证 接 收 到 正确的数据。 由于 FLASH 中进行编程的最小单位是页,当接 收 到 的 数 据 达 到 一 页 后 ,通 过 IAP 进 行 编 程 ,编 程 结 束 后 将 最后一条数据包的 ID 保存在 EEPROM 中, 所有升级数据发 送结束并编程成功后,通过 IAP 指示 CPU 复位后应运行的应 用程序区域[5]。 具体的软件升级流程图如图 5 所示。
相关主题