嵌入式系统实现在系统编程(ISP)

发布者:少年不识愁滋味最新更新时间:2014-08-12 来源: 21ic关键字:嵌入式系统  Flash  ISP  MC68332 手机看文章 扫描二维码
随时随地手机看文章
随着嵌入式系统技术的发展,电可擦除的Flash芯片以容量大、价格低、编程方便等优势得到了广泛的应用。由于同一片Flash作业程序存储器的系统无法直接实现在系统编程(ISP)。为了方便现场调试和程序升级,可以采用集成ISP功能较新的MCU(如AVR、部分ARM芯片等),或者采用双Flash 设计等方法实现ISP功能。但有不少系统仍然使用不具备直接ISP功能的MCU(如M68K、N80C196等),由于印制版面积、成本等原因的考虑也没有采用双Flash芯片,此类系统在程序升级时通常需要如编程器、仿真器等特定工具,在现场应用时不很方便。为解决这些系统的ISP问题,本文以 MC68332平台为例提出了一种通用的ISP方案。
1.png

1 方法分析 对于使用M68K这类不具备ISP功能的MCU系统,进行ISP设计必须满足以下几个条件: (1)程序空间和数据空间统一编址,程序可以在RAM中运行; (2)Flash芯片正确连接了写信号; (3)拥有能放下update程序并让其正常工作的额外程序/数据空间; (4)具备某种通信能力(如以太网、串口、CAN、MODEM等); 满足了这四个条件,就可以按照本文的方法进行ISP设计。针对自编程过程中文件出错、断电等特殊情况的容错程度不同,可以有如下两种方案。 1.1 方案1——自编程过程是安全可靠的,不会出现异常情况 这种情况相对简单一些,整个程序可以分为两个独立的部分完成,一是升级程序(称为update程序),它通过通信接口从主机接收程序数据到RAM空间,并对数据进行CRC校验以保证数据的正确性,在校验正确后将数据写到程序存储器的指定地址空间。如果RAM空间较小,可以接收一页、校验一页、写入一页,分次完成。由于程序存储器写操作过程必须连续,不能被打断,所以update程序必须在链接时指定在RAM地址空间运行。

2.png

另一部分是正常的程序(称为normal程序),这是正常编译的在程序存储器空间运行的程序,除了正常的工作之外它还需判断(通过通信命令或者查询一个输入状态等)是否应该转到升级模式,如果是,则将update程序复制到指定的RAM空间并转去执行update程序。 程序完成需要将update和normal通过编程通过编程工具分别固公到程序存储器上的指定地址(注意:在固化第二个程序时不可损坏第一个程序内容),也可将两个文件合并,一次固化到程序存储器,update程序作为normal程序的数据信息而存在,如图1所示。这样正常运行时程序运行在normal 部分,update程序得不到运行;在升级模式时normal程序把程序存储器中的update部分复制到其运行空间(RAM)并执行。如果在自编程过程中出现灾难性故障,那么程序存储器旧的normal程序已经擦除而新的normal程序还未写入或者未完全写入,这都将导致程序存储器中的程序数据不再完整,此时必须用专用工具写normal程序,才能让系统可再次自编程。 1.2 方案——考虑自编程过程中的异常状况,做到做障保护 这种情况下需要把整个工作分为三部分完成,第一是引导程序(称为BOOT程序);第二是升级程序(update程序);第三是正常程序(normal程序)。BOOT程序负责控制程序的运行模式:升级模式、正常模式。如果进入升级模式,BOOT程序需要将update程序复制到指定的运行空间,并转入执行update程序;如果进入正常模式,BOOT需要做的工作就十分简单,可以直接把控制权交给正常程序。为了使各个程序可以单独调试,不要依赖其它程序来初始化硬件。Update程序所要完成的功能与方案1中的相同,此时要注意update在自编程时不能破坏BOOT程序。此时normal程序不再负有复制update程序到指定运行空间的任务,完全按照正常的模式运行。

3.png

按照这种方案,BOOT程序和update程序是自编程设计的核心内容,只要保证这部分数据的完整性,就能拥有在线编程的能力,要在软件对这部分数据区进行保护,保证在第一次写入程序存储器后就不会再被擦除。这样即使在自编程时发生灾难性故障,BOOT程序和update程序是不会被破坏的,仍然可以继续运行,保证下次仍然可以进行自编程。 同样,程序完成后也必须分别固化到程序存储器的指定空间,以保证程序的正常运行,程序分布如图2所示。 2 在MC68332目标平台上的实现(采用方案2) 目标平台的基本配置如下: CPU为MC68332,Flash为512KB(Am29F400B),RAM为1MB,通信口为10Mbps以太网。 在编写程序之前首先应该设计好程序在Flash和RAM空间的分布,按照方案2的思路考虑平台的硬件配置,具体设计如下: (1)BOOT程序通过MC68332的一个I/O状态判定程序的走向; (2)update程序通过以太网口采用TFTP协议从主机接收程序并进行CRC校验; (3)Flash具体分配如表1所示。 表1 程序空间的分布  代码存储空间代码运行空间可用数据空间 BOOT 0x00000~0x00400 0x000000~0x000400 0x700000~0x800000 update 0x00400~0x10000 0x700000~0x710000 0x710000~0x800000 normal 0x10000~0x80000 0x010000~0x080000 0x700000~0x800000 按照方案2,BOOT程序在系统复位后初始化Flash、RAM片选,把Flash、RAM映射到对应的地址空间,并通过MC68332的一个I/O状态判断应用进入何种运行模式。如果进入正常模式,BOOT程序通过从normal复位向量处取得PC值,转入相应的地址执行;进入升级模式,BOOT程序把 update程序从Flash地址0x00400S~0x10000复制到RAM地址0x700000~0x710000中,然后把控制权转移给 update程序。程序流程如图2。 update程序主要分为三大部分:(1)从网络接口接收主机中的normal程序,为了尽量减小程序的复杂性,采用TFTP协议(TFTP Version 2,RFC 1350)从网络接收程序(这部分也可以通过其他方式,如串口、MODEM等实现);(2)解析出程序数据并进行校验,接收到的程序是Motorola格式的S-Record文件,必须按照S-Record格式进行解析,得到程序数据并进行CRC校验,保证程序的正常性;(3)写到Flash中地址 0x10000~0x80000,验证工作完成后把数据固化到Flash中指定地址,重启并进入正常模式就可运行升级后的程序。程序流程见图4。

4.png

normal程序按照正常需要进行编写,必须链接到0x10000~0x80000空间运行。 这三个程序完成后,编写一个工具程序把三个程序合并到一个文件(注意地址空间的分配),然后利用编程工具烧写到Flash片上,这样这个具备ISP功能的系统就完成了。 该设计的实现方法简单,可以避免生产时不必要的物质和时间上的开销,同时也可以帮助提供更为简易、灵活、经济的现场服务,值得在嵌入式系统中推广使用。

关键字:嵌入式系统  Flash  ISP  MC68332 引用地址:嵌入式系统实现在系统编程(ISP)

上一篇:双向传输设备驱动程序设计
下一篇:微处理器超长启动周期中的外部看门狗管理方案

推荐阅读最新更新时间:2024-03-16 13:39

飞思卡尔 i.MX 平台支持 Flash Player 10.1
使用飞思卡尔半导体的 i.MX 处理器制造智能移动设备的制造商不久便能够支持 Adobe® Flash® Player 10.1 软件,提供包括视频播放、动画、游戏及欣赏其它丰富 web 内容的极佳体验。通过与 Adobe 和 Movial 的紧密合作,飞思卡尔将把 Adobe Flash Player 10.1 引入其 i.MX 平台,支持运行 Linux® 或 Android™ 操作系统并提供卓越的视频和图形功能的消费产品开发。 从飞思卡尔 i.MX51 系列处理器着手,这几家公司将携手加快 Flash Player 10.1 的速度(Flash Player 10.1计划将于 2010 年上半年发布)。基于 i
[嵌入式]
单片机的FLASH引导装载系统设计
  前言   DSP系统的引导装载是指在系统加电时,由DSP将一段存储在外部非易失性存储器中的代码移植到内部高速存储器单元并执行的过程。 FLASH 是一种高密度、非易失性的电可擦写存储器,而且单位存储比特的价格比传统EPROM要低。为此,本文介绍了TMS320C6713浮点DSP芯片和SST公司提供的SST39VF400A FLASH存储器的基本特点,给出了使用该FLASH存储器设计和实现完整的TMS320C6713 DSP引导装载系统的具体方法。   1 硬件设计   1.1 主要芯片介绍   DSP自动引导装载系统主要使用DSP芯片(TMS320C6713)和外扩存储器(SST39VF400A)两种芯片来实现。其
[单片机]
单片机的<font color='red'>FLASH</font>引导装载系统设计
第47章 STM32F429的SPI 总线应用之SPI Flash的MDK下载算法制作
47.1 初学者重要提示 SPI Flash的相关知识点可以看第31章和32章。 SPI Flash下载算法文件直接采用HAL库制作,方便大家自己修改。 47.2 MDK下载算法基础知识 Flash编程算法是一种用于擦除应用程序或将应用程序下载到Flash的程序代码。MDK本身支持的各种器件都自带下载算法,存放在MDK各种器件的软件包里面,以STM32F4为例,算法存放在KeilSTM32F4xx_DFP2.15.0CMSISFlash(软件包版本不同,数值2.15.0不同),但不支持的需要我们自己制作,本章教程为此而生。 47.2.1 程序能够通过下载算法下载到芯片的核心思想 认识到这点很重要:通过MDK创建一批与地址信
[单片机]
第47章 STM32F429的SPI 总线应用之SPI <font color='red'>Flash</font>的MDK下载算法制作
展望未来探讨教育——畅所欲言的嵌入式系统联谊会
——畅所欲言的嵌入式系统联谊会第12次讨论会 自2009年开始,嵌入式系统联谊会已经召开了12次会议。内容涉及嵌入式系统各个方面,包括MCU和操作系统基础技术、嵌入式学科建设和产业发展等大家关心的话题,以及物联网和可编程SoC技术等热点问题。 近日如期在北航召开的第12次会议,是一次围绕嵌入式技术发展前景以及嵌入式教学现状展开的座谈会,与会的各界人士齐聚一堂,结合自身的工作经验和心得体会,畅谈对嵌入式技术、产业和人才培养的理解和展望。 嵌入式技术何去何从? 过去的几年,电子信息产业发生了巨大的变革。互联网和移动终端对传统电子产业的影响已经无处不在,云计算落地应用渐入佳境,物联网在摸索和徘徊中
[嵌入式]
展望未来探讨教育——畅所欲言的<font color='red'>嵌入式系统</font>联谊会
基于EP9312的金融嵌入式系统实现方案
  阐述了采用EP9312来构造银行税务类嵌入式系统的理由,将EP9312与其它嵌入式处理器进行了比较。根据EP9312的特点和系统需求,提出了一种基于EP9312的嵌入式系统硬件设计方案。介绍了系统的技术指标及其所使用的Super I/O、PHY、接口电平转换器、Flash、SDRAM、Boot-loader等各组成部分。该系统主要应用于高端打印机、计算机终端和高端收款机等产品。   1 嵌入式系统的概念与特点   嵌入式系统结合微处理器或微控制器的系统电路与其专属软件,其特性可归纳为下列四项:   (1)通常执行特定功能;   (2)以微电脑与外围构成核心;   (3)严格的时序与稳定性要求;   (4)全自动操作
[单片机]
基于EP9312的金融<font color='red'>嵌入式系统</font>实现方案
STM32双核板的应用设计与ISP的从机软件升级
引言 在单片机的应用设计中,常常会遇到如下问题:其一,某一熟悉类型的单片机功能可用,性价比也很好,但限于某种内部资源(如串口数、A/D路数等)不足,不得不选用更高档或不太熟悉的单片机,造成资源的浪费和开发周期的延长。其二,在海洋远程监测等重要领域,对控制器的可靠性要求较高,而单片机存在死机的可能性,即使可以通过配备看门狗来避免这种情况,但这种“粗暴”的复位方式并不合理(首先,复位打乱了正常的数据采集和处理工作,导致重要数据丢失;其次,即便能记录下复位时间和次数,但复位原因和复位前状态等信息无法侦测,一些本该解决的BUG被掩盖,导致频繁复位)。其三,由于开发周期不足或测试不充分,导致设备投入运行后出现故障,而这些故障往往通过软件
[单片机]
STM32双核板的应用设计与<font color='red'>ISP</font>的从机软件升级
Error:Flash Download Failed-"Cortex-M3" 问题解决
使用原子MINI板的时候,Debug出现如下现象: Error:Flash Download Failed - Cortex-M3 如图: 同时,在windows 窗口出现如下报错信息: 此现象一般是由于Flash的算法有问题,也就是说是由于没有加载Flash算法而导致的。 解决办法: 点击Option for Target-- Utilities选项卡-- Setting,如图: 然后在弹出的选项卡,点击Add,添加芯片所使用的Flash编程算法, MINI:STM32F10X_Med-densityFlash 如图: 然后点击Add添加,最后在Flash Download选项卡里,勾选“Resetand Run”,如图
[单片机]
Error:<font color='red'>Flash</font> Download Failed-
C语言嵌入式系统编程修炼之五:键盘操作!
处理功能键   功能键的问题在于,用户界面并非固定的,用户功能键的选择将使屏幕画面处于不同的显示状态下。例如,主画面如图1: 图1 主画面   当用户在设置XX上按下Enter键之后,画面就切换到了设置XX的界面,如图2: 图2 切换到设置XX画面   程序如何判断用户处于哪一画面,并在该画面的程序状态下调用对应的功能键处理函数,而且保证良好的结构,是一个值得思考的问题。   让我们来看看WIN32编程中用到的 窗口 概念,当消息(message)被发送给不同窗口的时候,该窗口的消息处理函数(是一个callback函数)最终被调用,而在该窗口的
[单片机]
C语言<font color='red'>嵌入式系统</font>编程修炼之五:键盘操作!
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved