0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Bootloader技术的原理及在dsPIC30F系列数字信号控制器的应用

电子设计 来源:郭婷 作者:电子设计 2018-12-24 09:26 次阅读

1 引 言

当前, 随着MCUDSP等高性能集成电路的广泛应用, 大部分电子设备需要对用户程序进行升级以达到完善、丰富系统功能的目的。但目前对这类设备的程序升级大多采用开发人员携带编程工具到现场进行操作的方式, 这样做给系统的统一管理和维护造成很大困难。针对这一问题提出一种基于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程序的方法, 这种方法同样适用于一些其它类型的微控制器

3 Bootloader的操作模式

大多数Bootloader 都包含两种不同的操作模式: “启动加载 ”模式和“下载”模式, 这两种模式的定义如下:

启动加载( Boot Load ing)模式: 这种模式也称为 自主 ( Autonomous)模式。也即Bootloader从目标机上的某个固态存储设备上将用户程序加载到RAM 中运行, 整个过程并没有用户的介入。这种模式是Boo tloader的正常工作模式。

下载( Dow nloading) 模式: 在这种模式下, 目标机上的Bootloader将通过串口等通信手段从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) 所示。

Bootloader技术的原理及在dsPIC30F系列数字信号控制器的应用

图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所示。

Bootloader技术的原理及在dsPIC30F系列数字信号控制器的应用

图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所示。

Bootloader技术的原理及在dsPIC30F系列数字信号控制器的应用


图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系列芯片为例, 但对于M icrochip公司生产的其它系列芯片只要略加修改同样适用。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 芯片
    +关注

    关注

    447

    文章

    47816

    浏览量

    409190
  • 控制器
    +关注

    关注

    112

    文章

    15237

    浏览量

    171219
  • 数字信号
    +关注

    关注

    2

    文章

    797

    浏览量

    47221
收藏 人收藏

    评论

    相关推荐

    Microchip推出基于dsPIC® DSC的新型集成电机驱动器将控制器、栅极驱动器和通信整合到单个器件

    为了在空间受限的应用中实现高效、实时的嵌入式电机控制系统,MicrochipTechnologyInc.(微芯科技公司)推出基于dsPIC数字信号控制器(DSC)的新型集成电机驱动器
    的头像 发表于 03-08 08:22 168次阅读
    Microchip推出基于<b class='flag-5'>dsPIC</b>® DSC的新型集成电机驱动器将<b class='flag-5'>控制器</b>、栅极驱动器和通信整合到单个器件

    Microchip推出基于dsPIC数字信号控制器的新型集成电机驱动器系列

    为了在空间受限的应用中实现高效、实时的嵌入式电机控制系统,Microchip Technology Inc.(微芯科技公司)推出基于dsPIC数字信号控制器(DSC)的新型集成电机驱动
    的头像 发表于 02-27 16:03 496次阅读
    Microchip推出基于<b class='flag-5'>dsPIC</b><b class='flag-5'>数字信号</b><b class='flag-5'>控制器</b>的新型集成电机驱动器<b class='flag-5'>系列</b>

    数字信号电缆测试的重要性 数字信号电缆测试的方法和技术

    数字信号电缆测试的重要性 数字信号电缆测试的方法和技术 数字信号电缆测试的重要性: 随着现代通信技术的发展,
    的头像 发表于 02-01 15:48 190次阅读

    数字信号为啥比模拟信号更清晰和稳定?

    数字信号为啥比模拟信号更清晰和稳定? 数字信号相比模拟信号更清晰和稳定的原因,主要是由于数字信号的特性以及
    的头像 发表于 02-01 09:45 577次阅读

    数字信号与模拟信号的优缺点简述

    通过无限数量的不同电压、电流或频率来表示,其数值表示的是实际物理量。而数字信号则是在一系列固定的时间点上离散取值的信号,其数值表示为离散的数字序列。
    的头像 发表于 12-25 11:21 2013次阅读

    单片机和数字信号控制器解决方案

    电子发烧友网站提供《单片机和数字信号控制器解决方案.pdf》资料免费下载
    发表于 11-17 11:36 0次下载
    单片机和<b class='flag-5'>数字信号</b><b class='flag-5'>控制器</b>解决方案

    数字信号控制器在汽车设计中应用说明

    电子发烧友网站提供《数字信号控制器在汽车设计中应用说明.pdf》资料免费下载
    发表于 11-17 09:27 0次下载
    <b class='flag-5'>数字信号</b><b class='flag-5'>控制器</b>在汽车设计中应用说明

    数字信号控制器(DSC)响应节能倡议

    电子发烧友网站提供《数字信号控制器(DSC)响应节能倡议.pdf》资料免费下载
    发表于 11-16 14:48 0次下载
    <b class='flag-5'>数字信号</b><b class='flag-5'>控制器</b>(DSC)响应节能倡议

    如何使用 Microchip的 dsPIC® 数字信号控制器和模拟器件来实现高精度脉冲血氧仪

    电子发烧友网站提供《如何使用 Microchip的 dsPIC® 数字信号控制器和模拟器件来实现高精度脉冲血氧仪.pdf》资料免费下载
    发表于 11-15 14:07 0次下载
    如何使用 Microchip的 <b class='flag-5'>dsPIC</b>® <b class='flag-5'>数字信号</b><b class='flag-5'>控制器</b>和模拟器件来实现高精度脉冲血氧仪

    数字信号控制器在汽车设计中的应用

    随着汽车系统对功能性、连通性和数学运算能力的要求越来越高,如Microchip dsPIC30F系列等16位数字信号控制器将是用在许多汽车子系统中的处理器架构的理想之选。
    的头像 发表于 10-31 16:12 263次阅读

    数字信号处理MATLAB版资料分享

    数字信号处理,或者说对信号数字处理,是60年代前后发展起来的一门新兴学科。进入70年代以来,随着电子计算机,大规模集成电路(LSI)和超大规模集成电路(VLSI),以及微处理
    发表于 09-28 06:34

    仿真PIC18和PIC24单片机及dsPIC数字信号控制器的数据EEPROM

    电子发烧友网站提供《仿真PIC18和PIC24单片机及dsPIC数字信号控制器的数据EEPROM.pdf》资料免费下载
    发表于 09-19 15:17 0次下载
    仿真PIC18和PIC24单片机及<b class='flag-5'>dsPIC</b><b class='flag-5'>数字信号</b><b class='flag-5'>控制器</b>的数据EEPROM

    数字信号处理—理论、算法与实现

    数字滤波器设计(IIR、FIR及特殊形式的滤波)等;下篇内容包括信号的正交变换(正交变换的定义与性质、K-L变换、DCT及其图像压缩中的应用)、
    发表于 09-19 08:01

    数字信号和光信号的抗干扰性详解

    数字信号和光信号的抗干扰性详解 数字信号和光信号是现代通信技术的两大核心。数字信号是通过
    的头像 发表于 09-07 14:51 1240次阅读

    数字信号和模拟信号的区别

    什么是数字信号,以上是数字信号和模拟信号的区别介绍。随着电子技术的飞速发展,数字信号的应用日益广泛。很多现代的媒体处理工具,尤其是需要和计算
    的头像 发表于 06-25 09:18 2769次阅读