[APM32F4]【技术分享】APM32F411为什么要有ISP,你知道多少?

1 背景

翻阅APM32F411的手册,竟然发现它是支持ISP启动的。

我们都知道对flash编程的方式有:

1. ICP:在电路中编程,利用jlink、stlink、Geehylink、烧录器这些都属于在电路中编程。
2. IAP:在应用中编程,利用自留的bootloard程序对应用代码(APP)进行更新程序,属于IAP。
3. ISP:在系统中编程,这个是指在系统中编程。

以上是基本概念,网上有许多这个资料,我就不一一赘述,本文档的一个目的主要是解决一个问题:MCU为什么要有ISP?这个是之前一个小伙伴问的。

2 编程的阶段

在正文开始之前我们先回顾一下,对MCU编程flash一般的场景有哪些,这里我简单总结一下:

1. 开发阶段,为开发工程师在进行一些样品研发阶段,特点是对一个MCU进行多次编程,且需要进行在线仿真测试验证。
2. 量产阶段,为产品批量生产阶段,此时一般是几百上千甚至上万的货品进行出货,特点是量大。
3. 维护阶段,为产品到客户端的时候,要进行的一些产品功能升级等操作。

以上三个阶段基本涵盖了我们的MCU的编程阶段,分清以上阶段,有利于我们在什么时候考虑使用何种编程方式。

3 ISP优劣势对比

3.1 资源使用上

首先我们先看一下ISP对比另外两种编程方式,它的bootloard程序由厂家提供,编程方式一般是厂家提供的基础协议以完成:对flash、选项字节的擦、写、读等功能。常用的通信端口是串行总线:I2C/USART/USB/SPI等。

从上面我们知道,ISP:

1. bootloard程序,不占用额外的flash。
2. 通信端口非常常用,通信端口在下载程序后也可在应用中进行二次利用。

3.2 编程阶段上

上文我们了解了完编程阶段,我们下面讨论一下ISP对比其他两种编程方式时在不同的编程阶段的优劣势。

1. 首先是开发阶段,由于考虑到我们是有仿真需求的,所以我们这个阶段其实大部分人都使用的是ICP。这个阶段ICP的重量级基本是无可撼动。

2. 然后是量产阶段,量产阶段中ICP对ISP的优势就不那么明显了,因为ICP需要额外的烧录接口(SWD/JTAG),对板卡是布线有要求,且这个烧录接口仅是在程序烧录的时候使用到了,在我们的产品使用阶段,是无法使用到的。再者,一般的烧录器均是要大价格的,淘宝我找一下:
    


     若是多线并行烧录,便要采购大量的烧录器,这对成本是一个不小的挑战。若使用ISP程序,则会省下购买烧录器的成本以及布线的PCB损耗。
     当然,若是使用烧录器,成本也会随着产品量的后续增加而均摊到每一个产品上的变小。这个需要取舍。

3. 最后是维护阶段,由于维护的时候一般产品是在客户手上,此时一般而言是使用IAP进行编程,因为IAP的协议可自定义,升级也更便捷。但也有特殊情况:

   1. MCU的flash不够用,但又不想额外购置spi flash(说白了是因为成本)。
   2. MCU做控制芯片,联网的主控另有“其人”,此时从网络端拿到MCU固件再下发给MCU。

   以上两种情况,若使用ISP则可以解决一定的困扰,由于ISP不占用flash,MCU的全部flash均可以保存产品的应用程序。当MCU做从控制器时,主机在板卡内部发送升级的数据给MCU,反而也简单,因为协议有现成的,不用自己构思。

通过以上我的分析,相信大家对什么时候使用ISP有了大概的认识。那接下来我们就来看看Geehy的APM32F411的ISP功能支持什么样子的编程吧。

4 APM32F411的ISP

4.1 如何启动

通过查阅APM32F411xCxE手册,它有三种启动方式,而我们所使用的ISP启动方式就是:BOOT1设置0,BOOT1设置1。

 



且它的系统存储器地址是 0x1FFF0000。我们设置一下BOOT1设置0,BOOT1设置1。

4.2 支持的串行总线

通过查阅APM32F411xCxE手册,这款芯片支持USART/I2C/SPI/USB对其进行编程flash。

 



4.3 如何使用

为了能够顺利使用APM32F411VC的bootloard,我们需要相应的评估软件:

在这个软件,我们看到Geehy给我们准备了评估USART/USB的功能。

4.3.1 USART

评估这个功能我们直接使用APM32F411VCTINI板上的GEEHYLINK预留出来的端口就行。

 



然后我们在GeehyProg选择COM,然后选择波特率(我的是115200),就可以连接上APM32F411了。

 



4.3.2 USB

评估这个功能我们首先得按照一下Geehy的DFU驱动:https://www.geehy.com/uploads/tool/dfu%E9%A9%B1%E5%8A%A8%E5%AE%89%E8%A3%85.zip。安装完驱动,设置相应的BOOT引脚后,连接板卡上的USB接口(注意不是Geehy-Link的接口):

 



我们可以看到设备管理器的界面:

 



然后我们在GeehyProg选择USB,然后点击连接,就可以看到我们连接上了APM32F411。

 



4.3.3 程序下载与运行

由于USART和USB在使用GeehyProg操作的时候界面是一致的,我这里选择USART进行。

我们选择“更新”选项卡,选择我们要下载进APM32F411的程序,然后选择相应的操作:

1. 擦除使用空间:擦除我们程序使用到的flash空间;擦除全部空间,擦除APM32F411的全部flash。一般产线下载程序都是擦除全部空间。
2. 写入校验,用于校验我们写入的数据跟芯片内容是否一致,这个也是必不可少。
3. 写入芯片后运行,这个用来写完程序后直接运行,这个一般看使用场景。如果是在客户端,可以使用这个方式,重启我们的“产品”。让客户感知升级已经完成。

我这里的设置如界面所示。 


点击“更新”,会发现程序下载尽进了flash,并开发板上LED2、LED3交替持续闪烁(可以使用“读取”功能)。

5 总结

Geehy带来的APM32F411自带Bootloard,让我们后续的产品更新上有了新思路。本分享只是有了简单使用的分享,其他支持的I2C/SPI还没有涉及,更多内容欢迎大家一起讨论。

下载的LED闪烁程序在这里: 

 411_SysTick_TimeBase.zip (4.28 KB)。
---------------------
作者:kai迪皮
链接:https://bbs.21ic.com/icview-3342284-1-1.html
来源:21ic.com
此文章已获得原创/原创奖标签,著作权归21ic所有,任何人未经允许禁止转载。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值