首页 Bootloader技术在数字信号控制器中的应用

Bootloader技术在数字信号控制器中的应用

举报
开通vip

Bootloader技术在数字信号控制器中的应用 Bootloader技术在数字信号控制器中的应用 摘 要: 介绍了Boot loader(引导加载)技术的原理, 着重讨论了M icroch ip公司的DSP dsp是digital signal processor的简称,即数字信号处理器。它是用来完成实时信号处理的硬件平台, 能够接受模拟信号将其转换成二进制的数字信号,并能进行一定形式的编辑,还具有可编程性。由于强 大的数据处理能力和快捷的运行速度,dsp在信息科学领域发挥着越来越大的作用。 [全文] IC30F系列数字信号控制器( D...

Bootloader技术在数字信号控制器中的应用
Bootloader技术在数字信号控制器中的应用 摘 要: 介绍了Boot loader(引导加载)技术的原理, 着重讨论了M icroch ip公司的DSP dsp是digital signal processor的简称,即数字信号处理器。它是用来完成实时信号处理的硬件平台, 能够接受模拟信号将其转换成二进制的数字信号,并能进行一定形式的编辑,还具有可编程性。由于强 大的数据处理能力和快捷的运行速度,dsp在信息科学领域发挥着越来越大的作用。 [全文] IC30F系列数字信号控制器( DSC)的Boo tloader程序的编写及F lash存储器 运行时自编程( RTSP)技术的 原理, 并实现了电子皮带秤控制仪表程序的在线自编程升级。 1 引 言 当前, 随着MCU MCU Microcontroller(微控制器)又可简称MCU 或μ C,也有人称为单芯片微控制器(Single Chip Microcontroller),将ROM、RAM、 CPU、I/O 集合在同一个芯片中,为不同的应用场合做不同组合控制.微 控制器在经过这几年不断地研究,发展,历经4 位,8 位, 到现在的16 位及32 位,甚至64 位.经过20多年的发 展,其成本越来越低,而性能越来越强大,这使其应用已经无处不在,遍及各个领域。 [全文] 、DSP等高性能集成电路 的广泛应用, 大部分电子设备需要对用户程序进行升级以达到完善、丰富系 统功能的目的。但目前对这类设备的程序升级大多采用开发人员携带编程工具到现场进行操作的方式, 这样做给系统的统一管理和维护造成很大困难。针对这一问 快递公司问题件快递公司问题件货款处理关于圆的周长面积重点题型关于解方程组的题及答案关于南海问题 提出一种基于dsPIC30系列芯片应用 Bootloader技术实现用户程序在线自编程升级的方法, 从而达到了用户程序升级时无须下载器, 操作简 单、快捷的目的。 2 Boo tloader的原理 Bootloader相当于PC主板上的B IOS, 是最底层的引导软件。Boo tloader是一段固化在嵌入式系统 目标系统ROM或者是诸如FLASH 等非易失存储器中的一段程序, 它的主要作用就是引导操作系统或用 户程序的运行。系统上电后Boo tloader将首先接管系统, 在进行一些最基本的上电自检后, Bootloader 将对系统的硬件进行初始化, 为引导操作系统作好准备, 接下来, Bootloader需要将操作系统的代码拷 贝到主存储器的特定地址, 最后Boot loader将控制权交给操作系统, 由操作系统完成接下来的工作;在 不含操作系统的系统中, Bootloader可以完成这样一些操作: 分配程序存储空间; 重新映射复位和中断向 量; 将程序代码从片外加载到程序区, 执行时再将代码加载到RAM 中以便快速执行; 检测是否需要下 载新的用户代码, 若需要则通过某种通信方式接收新代码并将其写入指定程序存储空间中, 若不需要, 则执行原有用户代码。 在嵌入式领域中, Bootloader是严重地依赖于硬件的, 因此想要建立一个通用的Bootloader 几乎是 不可能的。以dsPIC30F系列数字信号控制器为例,深入讨论在该系列芯片中编写Boot loader程序的方 法, 这种方法同样适用于一些其它类型的微控制器 一个微控制器,(也称作微处理器或MCU)就是一个小型的计算机,它由一系列简单的电路和一些 支持CPU作用的简单模块组成,如晶体振荡器,定时器,看门狗,串行和模拟I / O口等等。芯片里包括 非闪烁存储器和OTP ROM 用来存储程序,以及一个很小的读写程序。 [全文] 。 3 Bootloader的操作模式 大多数Bootloader 都包含两种不同的操作模式: “启动加载 ”模式和“下载”模式, 这两种模式的定义如 下: 启动加载( Boot Load ing)模式: 这种模式也称为 自主 ( Autonomous)模式。也即Bootloader从目标机 上的某个固态存储设备上将用户程序加载到RAM 中运行, 整个过程并没有用户的介入。这种模式是Boo tloader的正常工作模式。 下载( Dow nloading) 模式: 在这种模式下, 目标机上的Bootloader将通过串口 串口是计算机上一种非常通用的设备通信 协议 离婚协议模板下载合伙人协议 下载渠道分销协议免费下载敬业协议下载授课协议下载 ,大多数计算机包含两个基于RS232的串口。串口同 时也是仪器仪表设备的通信协议,并可用于获取远程采集设备的数据。 [全文] 等通信手段从PC 机下载文件, 比如: 下载内核映像和根文件系统映像等。从PC机下载的文件通常首先被 Bootloader保存到目标机的RAM中, 然后再被Bootloader写到目标机上的FLASH类固态存储设备中。 Boo tloader的这种模式通常在系统程序更新时使用。工作于这种模式下的Boot loader通常都会向它的终 端用户提供一个简单的接口。 4 dsPIC30F系列芯片简介 M icroch ip公司推出的dsPIC30F 系列数字信号控制器( DSC)可以灵活地运行一个常驻FLASH 的引 导加载程序( Bootloader Prog ram )实现对用户程序的在线自编程升级。可以使用任何可用的数据接口和 相关协议读取代码, 然后将代码写入(编程)到FLASH 存储器中, 从而实现电子设备在线自编程升级程序 代码的目的。dsPIC30F系列数字信号控制器的Boo tloader程序需要自行编写, 并且可以通过SPI、 UART等各种数据接口来接收PC 机发送的数据。显然, 采用了串口( RS232 方式) 与PC 机进行通信最为 方便。 5 dsPIC30F系列芯片FLASH 存储器的运行时自编程( RTSP) dsPIC30F系列数字信号控制器内部包含了用于执行用户代码的FLASH 存储器。用户可以使用两种 方法对此存储器编程:a运行时自编程( Run-T ime Self Programm ing, RTSP ); b 在线串行编程( In- C ircu it Serial Programm ing, ICSP)。其中RTSP方式是由用户软件执行的, 允许用户代码修改闪存程序 存储器的内容, 是实现用户程序在线自编程升级的基础。 dsPIC30F系列芯片对FLASH 存储器的运行时自编程是通过表指令TBLWT、TBLRD 和NVM 寄存器 实现的。FLASH 存储器是由行和板构成的。每行由32 条指令( 96 字节) 组成。通常, 每个板由128行组 成( 4K # 24条指令)。RTSP可以让用户每次擦除一行( 32条指令)以及一次编程32条指令。 程序存储器的每个板包括能够保存32条编程数据指令的写锁存器。这些锁存器不是存储器映射的。 用户访问写锁存器的惟一方法是使用写表指令。在实际编程操作前, 必须先用写表指令将待写数据 装入板写锁存器。待编程入板的数据通常是按以下顺序装入写锁存器的: 指令0, 指令1, 依此类推。所 有的32位写锁存器必须在编程操作期间写入, 以确保覆盖保存在锁存器中的旧数据。 RTSP编程的基本步骤是先建立一个表指针, 然后执行一系列TBLWT 指令以装入写锁存器。编程是 通过将NVMCON 寄存器的特殊位置1 进行的。 需要将32条TBLWTL和32 条TBLWTH 指令装入四条指令。如果需要对多个不连续的程序存储器区 进行编程, 应该为每个区域和下一个要写入的一组写锁存器修改表指针。 6 Bootloader程序编写 6. 1 dsPIC30F系列器件存储空间的分配 在编写Bootloader程序之前, 我们必须首先了解芯片的程序存储空间分配情况。dsPIC30F 系列芯片 包含144K字节的FLASH 程序存储空间, 寻址范围为0x0000100~ 0x017FFE, 图1 ( a)为dsPIC30F系 列芯片的程序存储器地址映射情况。 0x00~ 0x03地址单元是复位向量; 0x04~ 0xFE地址单元是中断向量表和后备中断向量表( IVT /A IVT) ; 在其后的0x100~ 0x17FFE单元为48K指令字的用户闪存程序存储器。原则上, Boot loader程序 可以放在整个程序空间中的任何位置, 但是为了简单方便、具有通用性和尽量减少对用户程序的影响, 本设计使用了0x100 ~ 0x4FE 的一段程序存储器( Boo tloader程序与用户程序的代码总量不能超过 144KB)。Bootloader程序后面便可存放用户程序,但是受到FLASH 存储器页的限制, 用户程序不可紧跟 在Boo tloader程序之后, 它必须从下一个FLASH存储器页的开始处(如0x500) 存放, 如图1 ( b) 所示。 图1 程序存储器地址映射 6. 2 . hex文件的解析 当dsPIC30F系列数字信号控制器的程序编写完成之后, 利用开发平台MPLAB IDE编译后会生成一 个. hex 文件, 将这个. hex 文件烧写到FLASH 存储器中系统才能运行, 因此要完成的任务就是将这个. hex 文件下载到目标系统中。如果直接从PC 端将. hex 文件中的全部内容发送给下位机, 就需要Boot loader程序来解析提取要写入存储器的数据, 这样做势必加大Boo tloader程序代码长度, 也会影响整个 Boo tloader过程的时间, 因此本设计采用在PC机端程序解析. hex 文件的方法。为了正确地将这个. hex 文件下载到下位机中必须对. hex 文件有一个比较深入的了解。. hex文件的格式如下: : BBAAAATTHHHH……HHCC BB: 二位16 进制值, 表示该帧数据的字节长度。 AAAA: 四位16 进制值, 表示随后数据的起始地址, 该地址为字节地址。 TT: 二位16进制值, 表示数据帧类型( 00 : 数据帧; 01 : 结束帧; 04 : 扩展地址帧)。 HH: 16进制值, 表示具体的数据, 即具体程序代码。 CC: 二位16进制的校验码, 使该帧全部以二位16进制相加后总和为0。 一个. hex 文件可分为5部分代码: 复位向量代码、程序代码、中断向量代码、后备中断向量代码和结 束代码, 除结束代码仅含结束帧外, 其余各部分代码都由扩展地址帧和数据帧组成, 其中仅数据帧存储 了用户程序信息。因此PC 机端程序仅保留扩展地址帧和数据帧的内容并按顺序进行发送即可, 下位机接 收数据后根据扩展地址帧可以直接将用户代码写入FLASH 存储器相应的地址单元中, 从而提高了整个 Bootloader的效率。 6. 3 dsPIC30F器件. g ld文件的修改 Bootloader程序运行时, 需要读出用户程序中预先设置好的一个延时值(本设计为1s) 作为下位机等 待PC 机发送升级命令的周期, 还要指定用户程序起始地址以便Boot loader程序执行完毕后可以继续执行 用户程序。为了满足这两个要求, 必须修改用户程序的链接文件( . g ld文件), 以指定用户程序的起始地 址和Bootloader 程序的延时周期。对于. g ld文件的具体修改如图2所示。 图2 . g ld文件的修改。 6. 4 Boot loader程序流程: 系统上电复位后, 在完成各种初始化配置后首先判断0x500地址单元中值是否为0xFF, 如果是, 则说明系统从未下载过用户程序, 系统会一直运行Boot loader程序等待PC 机发送下载命令; 如果 0x500中的值不是0xFF, 则说明系统中已经下载过用户程序了, 这时候根据0x500中的值来设置定时 器 定时器是装有时段或时刻控制机构的开关装置。它有一个频率稳定的振荡源,通过齿轮传动或集成电 路分频计数,当将时间累加到预置数值时,或指示到预置的时刻处,定时器即发送信号控制执行机构。 [全文] T imer2的初值并开始计时, 如果UART2 在指定的自举周期内未接收到PC 机发来的下载命令(说明系统 不需要下载程序), 系统会自动跳出Boo tloader程序而去运行已有的用户代码, 如果UART2在自举周期 内接收到了下载命令, Boo tloader程序会进入循环状态等待PC机发送数据。如图3所示。 图3 程序流程图。 如前文所述, PC 机发送的数据是从. hex 文件中提取的, PC机首先发送扩展地址部分, 下位机接 收保存后会继续等待接收32个指令字( 96字节)并保存到RAM 中, 然后根据接收到的地址擦除FLASH 存 储器中的1行, 擦除FLASH 是通过调用汇编函数E raseMem来进行的, 函数原型如下: mov# 0x4041, NVMCON ; 使NVMCON 寄存器为擦除FLASH模式 mov # 0x55, W 0 movW0, NVMKEY mov # 0xAA, W0 movW 0, NVMKEY ; 将0x55、0xAA 写入密钥寄存器 bsetNVMCON, #WR ; 开始擦除 nop nop return 擦除FLASH存储器的一行后需要把接收到的32个指令字写入到FLASH 存储器写锁存器中, 这一过 程可以通过函数W riteLatch 实现, 函数原型如下: movW0, TBLPAG ; 写表寄存器 tb lw tlW3, [W1] tb lw thW2, [W1] ; 写入锁存器 return 这一步完成之后就可以将接收到的32个指令字写入FLASH 存储器了, 其方法与擦除FLASH 类似, 写完一行后向PC 机发送应答。待FLASH 存储器全部写完之后, PC 机会发送表示结束下载的命令, 下 位机接收后退出Boo tloader程序, 进入新的用户程序继续运行, 从而完成整个在线自编程过程。 7 结束语 dsPIC30F 系列数字信号控制器应用Boot loader实现用户程序在线自编程升级的方法具有很高的应用 dsPIC30F 系列数字信号控制器应用Boot loader实现用户程序在线自编程升级的方法具有很高的应用 价值, 尤其是应用于自主开发的工业自动化仪表时给用户程序的现场升级带来了极大的方便。该方法已 经成功用于电子皮带秤控制仪表系统中, 达到了提高系统软件升级的更换效率、降低升级费用、提高产 品制造商对用户的服务质量满意度的目的。方法虽然仅以dsPIC30F系列芯片为例, 但对于M icrochip公 司生产的其它系列芯片只要略加修改同样适用。 来源:冬虫 该文章来至网络或用户,仅供学习交流之用,版权归原作者所有。 如有侵权,请及时与我们联系! www.dzsc.com http://www.dzsc.com/data/html/2011-1-11/88268.html http://goo.gl/ffgS
本文档为【Bootloader技术在数字信号控制器中的应用】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_834398
暂无简介~
格式:pdf
大小:224KB
软件:PDF阅读器
页数:0
分类:互联网
上传时间:2011-08-26
浏览量:16