当前位置:首页 > 嵌入式 > 嵌入式教程
[导读]嵌入式系统的开发最终需要将编译好的代码下载到具体的微控制器芯片上,而不同厂家的微控制器芯片有不同的下载方式。随着技术的发展和应用需求的更新,用户程序加载趋向于在线编程的方式,越来越多的芯片公司提供和开放了用户更新程序的接口与方式,以提高整个系统的可靠性和可维护性。ST公司基于CortexM3内核的STM32系列产品得到了广泛应用,在许多基

引言

嵌入式系统的开发最终需要将编译好的代码下载到具体的微控制器芯片上,而不同厂家的微控制器芯片有不同的下载方式。随着技术的发展和应用需求的更新,用户程序加载趋向于在线编程的方式,越来越多的芯片公司提供和开放了用户更新程序的接口与方式,以提高整个系统的可靠性和可维护性。ST公司基于CortexM3内核的STM32系列产品得到了广泛应用,在许多基于STM32系列产品的开发过程中不可避免要进行用户程序的加载。本文在介绍IAP技术原理基础上,详细论述使用该技术在STM32F103ZE芯片上实现用户在线更新功能的方法,并具体分析其中可能发生异常的原因。

1 背景综述

1.1 主要程序更新方式

目前,除了直接通过仿真器或烧录器进行程序更新方式外,主要有Bootloader技术、ISP技术以及IAP技术3种更新程序的方法。

(1) Bootloader技术

引导加载程序,是指系统加电时,控制器将一段存储在外部非易失性存储器中的代码载入到内部高速存储器单元(如片内RAM)中执行的过程。

(2) ISP(In System Programming)技术

MCU内部自带Bootloader,通过指定的方式激活,通过通信接口下载或擦除用户代码。需要有外部介入,静态的,在用户代码没有运行时进行下载。

(3) IAP(In Application Programing)技术

单片机内部具有一些可擦写的非易失存储器,如Flash。在微控制器独立运行时,用户利用自己编写的烧写程序通过通信下载或擦除自己的代码。注意不具备IAP功能的单片机并不能对Flash的数据进行修改。无需外部介入,动态的,在用户代码运行时进行下载。

1.2 STM32系列简介

STM32系列微控制器基于CortexM3内核,并在其架构上进行了多项改进,包括在提升性能的同时提高了代码密度的Thumb2指令集,以及大幅度提高中断响应的紧耦合嵌套向量中断控制器,从而大大提高了处理速度,降低了系统功耗。使用新内核的Thumb2指令集,设计人员可以把代码容量降低45%,几乎把应用软件所需内存容量降低了一半。此外,STM32提供丰富的外围接口,目前广泛应用到工业用及家用安全设备、消防和暖气通风空调系统等,以及家电、消费电子、低功耗的可便携式设备等。本文以STM32F103ZE为例来研究及使用IAP技术。

2 IAP技术

2.1 IAP技术原理

首先人为设定单片机内部存储区分为两块:其中一块称为Boot区,用于存储IAP功能程序代码;另外一块称为常态存储区,用于存储除IAP功能外的所有程序代码。IAP技术指的是, MCU在运行的状态下,通过程序(PC)指针不断读取需要执行的程序指令。正常情况下,PC指针只在常态存储区内移动,并读取指令,如图1所示。当用户需要更新或升级程序时,程序指令会将PC指针跳转至Boot区。这段存储区的指令代码的功能是,通过通信等方式接收用户需要更新的程序数据,并通过校验确认接收到的程序数据正确后,根据约定的方式写入常态存储区,如图2所示。当完成用户程序更新后,PC指针再跳回到常态存储区,开始执行存储在其上的用户程序,这样便实现了IAP功能。

图1 通过PC指针读取程序指令 图2 更新存储区代码

2.2 IAP技术关键点

通过研究IAP技术实现用户程序更新的过程,不难发现,在更新过程中必须保证PC指针在Boot区移动,而不能随意跳转至常态存储区。基于这个要求,结合微控制器原理可以得出需要特别注意的几个关键点。

(1) 禁止中断

毫无疑问,中断会使得PC指针跳转至中断服务程序入口地址,因此,在进入Boot区前需要禁止所有中断。

(2) 禁用底层外围接口

对于有些外围接口,比如当采用ADC+DMA的方式进行多通道A/D采样时,采样过程会按照预先设置的通道顺序进行A/D采样。若在PC指针跳转至Boot区前没有禁用,则更新完程序跳回常态存储区时,其存储A/D通道值就可能发生错位的情况。

(3) 使用实时操作系统

如果使用具有抢占式RTOS(即硬实时操作系统),则需要禁止所有任务,并且屏蔽所有的信号量及邮箱,以防止激活某个任务,导致PC指针跳转至常态存储区。

(4) 使用看门狗

在考虑导致PC指针跳转的原因时,看门狗很容易被忽略,而且很多芯片的看门狗一旦使能就不能禁用,所以不能通过禁用的方法达到目的。最安全的方法是,在Boot区中也加入看门狗的喂狗指令。特别要注意的是,当需要擦除、写入大量Flash数据时,需要对其过程所需时间进行定量的估计,有必要时可以在这个过程中多次喂狗。

(5) 存储空间分配

Boot区以及常态存储区的大小可以人为分配,一般而言,尽可能使常态存储区最大化,因为产品的功能是在该区域得到体现;而Boot区尽可能使其代码简洁,避免使用中断以及复杂的底层驱动及算法。

2.3 IAP技术实现

(1) 关闭相关中断及禁用相关外围接口
如定时器中断、SysTick中断、A/D中断、外部I/O中断等。

(2) 设定跳转地址
typedef void (*pFunction)(void);
INT32U JumpAddress;//定义IAP入口地址pFunction Jump_To_Application;//定义指向IAP入口地址程序的函数指针
JumpAddress=*(vu32*)(IAP_ADDR + 4);
Jump_To_Application=(pFunction) JumpAddress;

(3) 喂狗并执行跳转
IWDG_ReloadCounter();//喂狗
__set_MSP(*(__IO uint32_t*) IAP_ADDR);//初始化用户应用程序的堆栈指针
Jump_To_Application();

(4) IAP代码(Boot区代码)
只需要驱动用到的底层接口,尽量不使用中断,尽可能少地占用存储空间,同时需要适时地喂狗。另外对该系列Flash操作会有所不同,比如STM32F103ZE执行擦除操作时,一页为2 KB,而SMT32F103VC6等芯片一页为1 KB,使用其他型号芯片时需要具体查阅相关数据手册。

3 总结

本文从分析IAP技术原理入手,详细论述了利用IAP技术实现用户程序更新的要点。另外,可以想象,如果Boot区加入TCP/IP协议连入互联网,即可借助网络对产品进行在线升级,既可提高系统的可维护性,又可降低产品的维护成本,必将在未来得到更为广泛的应用。

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

全新Balletto™系列无线MCU基于Alif Semiconductor先进的MCU架构,该架构具有DSP加速和专用NPU,可快速且低功耗地执行AI/ML工作负载

关键字: 处理器 微控制器 AI

2024年4月10日 –提供超丰富半导体和电子元器件™的业界知名新品引入 (NPI) 代理商贸泽电子 (Mouser Electronics) 即日起开售NXP Semiconductors的MCX工业和物联网微控制器...

关键字: 微控制器 电机控制 机器学习

中国上海–2024年4月9日–在追求创新的道路上,英飞凌(Infineon)再次领导行业,推出突破性的PSoC™ 4000T 微控制器。全球知名的电子元器件授权代理商富昌电子(Future Electronics)现为各...

关键字: 微控制器 电容式传感板

开放计算项目(OCP)是一个非营利组织,专注于推动各企业在数据中心产品设计及最佳实践方面加强交流。近日,该组织发布了开放机架第三版(ORV3)规范。规范中比较显著的变化在于设计架构从12 V迁移到了48 V。本系列文章重...

关键字: 微控制器 电池 开放计算

【2024年4月8日,德国慕尼黑讯】低碳化和数字化是当今时代人们面临的两大核心挑战,人类社会需要依靠创新和先进的技术,才能破除挑战、推动转型进程。在德国纽伦堡举办的2024国际嵌入式展(Embedded World 20...

关键字: 半导体 微控制器 嵌入式

单片机编程语言是程序员与微控制器进行交流的桥梁,它们构成了单片机系统的软件开发基石,决定着如何有效、高效地控制和管理单片机的各项资源。随着微控制器技术的不断发展,针对不同应用场景的需求,形成了丰富多样的编程语言体系。本文...

关键字: 单片机 微控制器

STM32是由意法半导体公司(STMicroelectronics)推出的基于ARM Cortex-M内核的32位微控制器系列,以其高性能、低功耗、丰富的外设接口和强大的生态系统深受广大嵌入式开发者喜爱。本文将详细介绍S...

关键字: STM32 单片机

单片机,又称为微控制器或微处理器,是现代电子设备中的核心部件之一。它集成了中央处理器、存储器、输入输出接口等电路,通过外部信号引脚与外部设备进行通信,实现对设备的控制和管理。本文将详细介绍单片机的外部信号引脚名称及其功能...

关键字: 单片机 微控制器 中央处理器

2024年3月26日,中国-- 服务多重电子应用领域、全球排名前列的半导体公司意法半导体(STMicroelectronics,简称ST;纽约证券交易所代码:STM)发布了一项基于 18 纳米全耗尽绝缘体上硅(FD-SO...

关键字: 处理器 微控制器 存储器

STM32与51单片机之间有什么差异呢?两者可以说是一场科技与性能的较量了。在科技飞速发展的今天,微控制器(MCU)已广泛应用于各类电子设备和系统中,发挥着举足轻重的作用。其中,STM32和51单片机作为两种常见的微控制...

关键字: STM32 51单片机 MCU
关闭
关闭