STM32双核板的应用设计与ISP的从机软件升级

发布者:快乐的天使最新更新时间:2021-04-01 来源: 21ic关键字:ISP 手机看文章 扫描二维码
随时随地手机看文章

引言


在单片机的应用设计中,常常会遇到如下问题:其一,某一熟悉类型的单片机功能可用,性价比也很好,但限于某种内部资源(如串口数、A/D路数等)不足,不得不选用更高档或不太熟悉的单片机,造成资源的浪费和开发周期的延长。其二,在海洋远程监测等重要领域,对控制器的可靠性要求较高,而单片机存在死机的可能性,即使可以通过配备看门狗来避免这种情况,但这种“粗暴”的复位方式并不合理(首先,复位打乱了正常的数据采集和处理工作,导致重要数据丢失;其次,即便能记录下复位时间和次数,但复位原因和复位前状态等信息无法侦测,一些本该解决的BUG被掩盖,导致频繁复位)。其三,由于开发周期不足或测试不充分,导致设备投入运行后出现故障,而这些故障往往通过软件升级的方式可以解决,但由于设备的应用场所比较特殊(如水下),导致软件升级的成本很高[1]。


针对上述3种情况,在实际的项目应用中设计了基于STM32的双核板,较好地解决了资源不足、稳定性差和基于CAN总线的远程升级等问题,具有性价比高、开发周期短等优点。


1双核板设计


STM32系列单片机具有高性能CortexM3内核和外设,功耗低,集成度高,性价比高。另外,ST公司还提供了外设的标准库函数,屏蔽了底层硬件细节,能够使开发人员轻松完成产品的开发,缩短系统开发时间[2]。正因为如此,STM32系列单片机得到了开发者的青睐,其应用领域和客户群不断扩大。其中的STM32F107属于互联型系列,具有以太网和CAN总线接口,在数据通信方面具有独特的优势。一种基于STM32F107的双核板如图1所示。


图1中,两个STM32F107最小系统模块分别称为ACORE和MCORE,ACORE具有外看门狗,为主机模块;MCORE不具有外看门狗,但其RST/BOOT0引脚受ACORE的控制,可以通过串口实现ISP总线升级,为从机模块。由于ACORE和MCORE均具有电源系统、复位电路和下载接口等调试所需的基本要素,因此可以预先焊接和调试好。在具体项目的开发应用中,将双核板作为一个独立的元件嵌入,一些软件可以提前验证和编写,大大缩短了产品的开发周期。


在正常工作时,主从机两个模块独立工作,两者通过SPI总线相互通信。SPI接口传输速率可达到18 Mbps,比I2C和UART通信要快得多。由于采用双核,通用I/O引脚显著增多,不仅可以完成更加复杂的设计,而且降低了布局布线的难度。对于熟悉STM32的开发者来说,开发难度基本不变,而可使用的资源却几乎成倍增加。


在该双核板的设计中,还考虑了ACORE对MCORE的在线升级问题。图1中MCORE的RST、BOOT0两个引脚受ACORE控制,来实现MCORE的复位和复位地址选择;而ISPATMR和ISPARMT两个引脚则是作为USART接口,实现对MCORE的ISP升级。


2可靠性设计


在本文的应用中,ACORE和MCORE分工合作。ACORE主要完成系统的管理工作,如人机交互、数据存储、通信等;MCORE主要完成信息采集、外部设备控制等功能,这样设计的优点是功能分明、负荷分担。负责采集控制的MCORE可以集中精力完成数据采集和辅助的控制工作;而负责管理的ACORE除了完成人机交互、数据存储和通信外,还需要定期发起与MCORE的通信,以保证相互监督。


MCORE收到ACORE的指令后,会将当前的工作状态报告给ACORE,再由ACORE通过CAN总线等手段上传给更高层的通信主机。如果ACORE发现MCORE不能正常回复信息,则说明MCORE处于不正常状态,必要时可实现对MCORE的“危机干预”。例如,在连续多次均不能正常通信的情况下,可以认为MCORE已处于死机状态,ACORE将复位MCORE。ACORE和MCORE的状态转换图如图2所示。

显然,这种双核结构和定时通信机制,可以使每个MCU知道对方的工作情况。虽然在结构上分出了ACORE和MCORE,但由于每个MCU都有CAN总线与通信主机相连,因此每个MCU都可以单独通向主机汇报工作状态,汇报的内容都可以通过CAN总线接收到,因此起到了相互监督的作用。


3基于CAN总线的软件升级


具备远程软件升级的设备具有更广泛的适用性,可以在设备安装到位后,通过软件升级在线修复一些问题,不但节省人力物力,也可以使设备的功能逐步完善[3]。


双核板具有CAN总线,该总线不但是数据交换的通道,也是软件升级的通道。上位机可以通过CAN总线将需要升级的程序代码下传到ACORE,ACORE控制MCORE的RST/BOOT0引脚,使MCORE复位并进入ISP状态,从而完成在线升级。由此可见,要实现基于CAN总线的在线软件升级,需要3个条件:一是待升级系统MCORE本身具有ISP功能,能通过串口实现程序的下载;二是ACORE本身集成CAN总线,可通过CAN总线接收上位机发送的待升级程序代码;三是ACORE可以控制MCORE的RST/BOOT0引脚,完成在线升级。


3.1STM32的ISP升级


ISP(InSystem Programming)方式相对于传统的并行编程方式有了极大的进步,无需将单片机从电路板上卸下就可进行编程。STM32系列芯片复位时,可以通过BOOT1和BOOT0的逻辑电平来决定系统的启动模式,见表1所列。



表1STM32启动模式配置


系统复位时,CPU根据这两个引脚的逻辑电平把相应模式的起始地址映射到启动空间(0x 0000 0000)。在启动延迟之后,CPU从位于0x0开始的启动存储区执行代码[4]。由于实际应用中很少从内嵌SRAM中启动,故可将BOOT1引脚直接设置为低电平,只通过判断BOOT0引脚的高低电平来选择从用户闪存或系统存储器中启动。若复位时BOOT0的逻辑电平为高,则复位后从系统存储器启动,可通过USART1与Bootloader进行通信。


STM32芯片具有开放式的在线烧录ISP协议,允许第三方根据该协议编写ISP下载软件,对STM32芯片进行FLASH的更新操作。在进行ISP方式升级时,先发送0x7F实现自动波特率匹配,能够识别最高115 200 bps的串口波特率。如果正确回应0x79,表示命令执行正常。握手正确后,就可以通过ISP命令实现对STM32的ISP操作,完成FLASH的擦除和编程。


3.2FLASH分区存储


STM32F107片内集成256 KB FLASH和64 KB SRAM,FLASH由主存储块(Main Block) 和信息块( Information Block) 组成。主存储块用于存放用户程序,每页2 KB,共128页,容量为32K×64位,地址范围为0x 0800 0000~0x 0803 FFFF;信息块容量为2 360×64位,分为启动程序代码和用户选择字节[5]。启动程序代码从 0x 1FFF B000~0x 1FFF F7FF,共18 KB,用户选择字节从0x 1FFF F800~0x 1FFF F80F,共16字节。


ACORE的FLASH存储器分区如图3所示。



0x0800 0000~0x0800 1FFF,共8 KB空间,为Bootloader代码空间。


0x0800 2000~0x0801 FFFF,为120 KB空间,存放ACORE自身程序。


0x0802 0000~0x0803 FFFF,为128 KB空间,存放MCORE应用程序。


上述空间分配,虽然升级程序的空间受到了限制,但在大多数情况下是可行的,因为ACORE和MCORE任务分担,其本身的程序量均不足总FLASH容量的一半。如果出现了空间不足的现象,完全可以换用更大容量的MCU。


3.3软件升级流程


要完成ACORE对MCORE的软件升级,其过程可以分为两个阶段:基于CAN总线的数据传输和基于USART的ISP过程。


(1) 基于CAN总线的数据传输


当MCORE需要更新用户程序时,上位机将编译成功的MCORE升级程序的HEX文件通过CAN总线发送到ACORE。上位机先发送升级指令,ACORE接收到升级指令后,将FLASH中MCORE升级程序区(0x 0800 2000~0x 0801 FFFF)擦除,擦除成功后回复上位机,若回复错误信息,则退出升级;上位机接收到回复后,按行发送HEX文件内容,ACORE接收到数据后,依次写入ACORE的MCORE升级程序区(0x 0800 2000~0x 0801 FFFF)中,接收完毕后向上位机发送写入完毕指令[6]。


(2) 基于USART的ISP过程


当ACORE接收到上位机发送的升级执行指令后,升级流程如下:


① 置MCORE的BOOT0引脚为高电平,然后置RST引脚为低电平,复位MCORE,使其从系统的内存模式启动,然后将RST引脚拉高。


② ACORE向MCORE发送0x7F,MCORE接收该数据,并根据该数据与ACORE自动匹配波特率,进行回复。若回复0x79,则表示可以进行相关擦除和写FLASH操作了,若回复 0x1F,则升级失败。


③ ACORE收到正确的应答,则发送0x44+0xBB,根据程序大小擦除FLASH,根据 STM32F107内部固有的Bootloader串口协议,擦除完成后回复ACORE。


④ ACORE等待接收MCORE的回复,收到正确的应答之后,发送0x31+0xCE,把存储到ACORE FLASH中的MCORE升级程序区的内容写到MCORE的相应FLASH中,一次写256个字节,直到把所有的用户程序写入用户存储区。


⑤ ACORE控制BOOT0引脚,并控制RST为低电平,对MCORE进行硬件复位,MCORE重新初始化程序,从而运行刚刚更新的用户程序。


软件升级交互流程如图4所示。

图4 软件升级流程图


结语


基于STM32的双核板可以有效解决单个微处理器内存资源不够的问题,在基本不增加开发难度的基础上,使系统资源加倍增加,可以完成更为复杂的应用设计;通过ACORE和MCORE相互监控,提高了整个系统的可靠性,能够有效发现软硬件隐患;通过双核有效的任务分工,减小了单个MCU的负担,使系统运行更加可靠;基于ISP和CAN总线的远程升级系统,有效利用了CAN总线通信速率高、抗干扰能力强、传输距离远的特点以及STM32系列自身具有的ISP功能,在设备安装以后仍能够升级程序,既方便了智能设备的开发,又降低了维护成本。


关键字:ISP 引用地址:STM32双核板的应用设计与ISP的从机软件升级

上一篇:实现输出两路频率1x、2x的方波
下一篇:一款基于STM32的便携式二氧化碳监测仪设计

推荐阅读最新更新时间:2024-11-20 20:39

STM32ISP升级详解
最近在做一个给STM32用ISP升级的项目,接触到STM32厂家烧录的Bootloader工作流程,具体官方文档稍后上传供大家参考,也可去ST官网下载文档。接下来针对文档中部分内容分析其工作过程: 一、要进入该模式,需把STM32硬件上的BOOT0引脚拉高(置1),BOOT1拉低(置0),对此部分不明白的可以查阅STM32BOOT引脚的资料(网上一搜一大堆),不过多阐述。两个引脚配置好对STM32复位,其在4个时钟周期内会自动检测BOOT引脚相应的配置情况,进入相应模式(原厂Bootloader模式)下工作,此时已经到达此次旅行的起点——USART Bootloader 模式 此处要特别注意的是硬件上一定要用原厂规定的串口
[单片机]
<font color='red'>STM32</font>的<font color='red'>ISP</font><font color='red'>升级</font>详解
麒麟9000终亮相,150亿晶体管+四核心ISP
Mate 40系列来了,麒麟9000也终于来了! 这是全球第一颗、也是唯一一颗5nm工艺制造的5G SoC,集成多达153亿个晶体管,首次突破150亿大关,是目前晶体管最多、功能最完整的5G SoC。 CPU部分为八核心,包括一个3.13GHz A77大核心、三个2.54GHz A77中核心、四个2.04GHz A55小核心,略微超过骁龙865 Plus 3.1GHz,是目前频率最高的手机处理器。 同时集成24核心的Mali-G78 GPU,世界第一次,架构超过麒麟990 Mali-G76,核心数也多了一半,性能提升60%。 AI方面集成两个大核、一个微核的NPU,性能提升100%,还有四核心ISP。 5G方面
[嵌入式]
麒麟9000终亮相,150亿晶体管+四核心<font color='red'>ISP</font>
ISP技术在《数字电路》课程设计中的应用
1 ISP技术 在系统编程(In-System-Programming,ISP)技术是美国Lattice半导体公司首先提出来的一种能在产品设计、制造过程中的每个环节具有对其器件、电路或整个数字系统的逻辑和功能随时进行组态或重组能力的最新技术。在可编程逻辑器件(Programming Logic Device,PLD)及其技术中,ISP是一种新的概念、新的标准。传统的编程技术是将PLD器件插在编程器上编程的,ISP技术则可不用编程器,直接在用户自己设计的目标系统中或线路板上对PLD器件编程。常规PLD在使用中通常是先编程后装备,而采用ISP技术的PLD则是先装备后编程,成为产品后还可反复编程。ISP硬件灵活且易于软件修改,便于设计
[应用]
小米MIX5 Pro解密:自研澎湃C2 ISP加持
不同于小米11,小米12系列首发仅有两款,看起来这一代数字系列的产品策略发生了比较大的变化,所以,所谓“小米12 Ultra”被小米MIX5 Pro取代的爆料似乎并非“危言耸听”。   日前,有博客晒出所谓小米MIX 5 Pro的相关代码信息,内容显示,摄像头部分出现了“MIPISEL”字段,此前只在MIX Fold上见过,猜测对应的是小米自研澎湃ISP。   由于是换代产品,合理的答案可能是澎湃C2芯片。 专利机构绘制的小米MIX5 Pro渲染,仅供参考   关于小米MIX5 Pro的相机参数,传言是5000万像素光学防抖主摄(IMX707)、4800万像素5倍光变镜头以及5000万像素超广角,构型或是圆形模组。  
[手机便携]
ISP图像处理芯片
FH8510是一款针对CIS(CMOSImageSensor)的图像信号处理芯片,它内置强大图像处理引擎,CMOS图像传感器接口,TV编码器,D/A转换器,提供NTSC/PAL的输出,同时也提供ITU.BT65610Bit的输出,主要应用于中低端标清模拟CCTV摄像机、车载后视摄像机及楼宇对讲摄像机。FH8510可以支持多种CMOS图像传感器,具有功耗低、分辨率高、配置灵活、定制化程度高等特点。FH8510的缺省配置可以支持OV7740、OV7725,通过外接EEPROM还可以配置更多的CMOS图像传感器。FH8510的OSD采用硬件图像数据解压缩技术,全部的OSD数据可放置在EEPROM内。FH8510提供了一个IRLED和IR
[家用电子]
小广播
设计资源 培训 开发板 精华推荐

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

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

更多开源项目推荐
换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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