当前位置:首页 > 单片机 > 单片机
[导读]摘要:针对没有集成ISP功能的MCU系统,提出了一种通用的嵌入式系统Flash在线编程(ISP)方案。该方案借用RAM作为ISP的程序存储器,可降低系统成本并具有较大的灵活性。以MC68332平台为例,详细介绍了这种ISP方案的具体

摘要:针对没有集成ISP功能的MCU系统,提出了一种通用的嵌入式系统Flash在线编程(ISP)方案。该方案借用RAM作为ISP的程序存储器,可降低系统成本并具有较大的灵活性。以MC68332平台为例,详细介绍了这种ISP方案的具体实现过程。 关键词:嵌入式系统 Flash ISP MC68332 随着嵌入式系统技术的发展,电可擦除的Flash芯片以容量大、价格低、编程方便等优势得到了广泛的应用。由于同一片Flash作业程序存储器的系统无法直接实现在系统编程(ISP)。为了方便现场调试和程序升级,可以采用集成ISP功能较新的MCU(如AVR、部分ARM芯片等),或者采用双Flash 设计等方法实现ISP功能。但有不少系统仍然使用不具备直接ISP功能的MCU(如M68K、N80C196等),由于印制版面积、成本等原因的考虑也没有采用双Flash芯片,此类系统在程序升级时通常需要如编程器、仿真器等特定工具,在现场应用时不很方便。为解决这些系统的ISP问题,本文以 MC68332平台为例提出了一种通用的ISP方案。


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


另一部分是正常的程序(称为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程序到指定运行空间的任务,完全按照正常的模式运行。


按照这种方案,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。


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

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

台湾新竹 – 2024年4月23日 – 著名的微控制器供货商新唐科技公司,与全软件开发生命周期提供跨平台解决方案的全球软件公司Qt Group宣布深化合作,扩展新唐科技人机界面(HMI)平台支持「Qt for MCUs」...

关键字: 微控制器 嵌入式系统 MCU

随着物联网、嵌入式系统以及微控制器技术的飞速发展,微控制器已成为众多智能设备和系统不可或缺的核心组件。而微控制器的正常工作,离不开烧录器的精准操作。C8051F021烧录器,作为一款高效、稳定、易用的微控制器烧录工具,在...

关键字: c8051f021烧录器 联网 嵌入式系统

为增进大家对嵌入式系统的认识,本文将对嵌入式系统、嵌入式系统的特点予以介绍。

关键字: 嵌入式 指数 嵌入式系统

2024年4月18日,国民技术第四代可信计算芯片NS350 v32/v33系列产品正式发布并开始量产供货。NS350 v32/v33是一款高安全、高性能、超值可信密码模块2.0 (TCM 2.0)安全芯片,适用于PC、服...

关键字: PC 服务器平台 嵌入式系统

无论您是在研究如何使用 10GigE 还是寻求所需考虑事项的建议,本文均提供有实践,帮助确保单相机 10GigE 视觉系统设置顺利并拥有良好性能。 我们列出了主机系统配置、布线和相机设置的实践。

关键字: 视觉系统 CPU 存储器

2024年,嵌入式系统将走向何方?如何才能走在趋势的前沿?从工厂到家电,从医院里昂贵的医疗设备,到随处可见的可穿戴设备,我们身边的联网设备越来越多,生活更加绿色低碳,嵌入式系统功不可没。ST于3月19日成功举办STM32...

关键字: 嵌入式系统 可穿戴设备

存储器是计算机系统中的关键组件,负责存储程序指令和数据,是实现计算和信息处理的基础。根据其工作原理、存储容量、访问速度、稳定性以及持久性等诸多特性,存储器可以被细分为多个类别。本篇文章将详细介绍存储器的主要分类,并探讨各...

关键字: 存储器 RAM

在嵌入式系统开发、调试和测试过程中,J-Link作为一种高效的调试工具,为开发者提供了极大的便利。然而,要想充分发挥J-Link的功能,首先需要正确安装其驱动程序。本文将详细介绍J-Link驱动的安装过程,并深入解析其中...

关键字: jlink 嵌入式系统 嵌入式开发

Apr. 03, 2024 ---- 4月3日7时58分在台湾花莲县海域(北纬23.81度,东经121.74度)发生7.3级地震,震源深度12千米。根据全球市场研究机构TrendForce集邦咨询于第一时间调查各厂受损及...

关键字: 存储器 晶圆代工

随着科技的飞速发展,单片机和嵌入式系统在现代电子设备中的应用越来越广泛。它们不仅提高了设备的智能化水平,还推动了各行各业的创新与发展。在单片机和嵌入式系统的开发中,编程语言的选择至关重要。本文将深入探讨单片机和嵌入式系统...

关键字: 单片机 嵌入式系统 电子设备
关闭
关闭