AT32 MCU

IAP在线升级原理概述

IAP(In Application Programming)即在应用编程,IAP是用户自己的程序在运行过程中对User Flash的部分区域进行烧写,目的是为了在产品发布后可以方便地通过预留的通信口对产品中的固件程序进行更新升级。通常实现IAP功能时,即用户程序运行中作自身的更新操作,需要在设计固件程序时编写两个项目代码,第一个项目程序不执行正常的功能操作,而只是通过某种通信方式(如USB、USART)接收程序或数据,执行对第二部分代码的更新;第二个项目代码才是真正的功能代码。这两部分项目代码都同时烧录在User Flash中,当芯片上电后,首先是第一个项目代码开始运行,它作如下操作:

1) 检查是否需要对第二部分代码进行更新
2) 如果不需要更新则转到4)
3) 执行更新操作
4) 跳转到第二部分代码执行

“图1.
图1. IAP代码执行流程

在图上图所示流程中,AT32复位后,还是从0X08000004地址取出复位中断向量的地址,并跳转到复位中断服务程序,在运行完复位中断服务程序之后跳转到IAP的main函数,如图标号①所示,在执行完IAP以后(即将新的APP代码写入AT32的FLASH,灰底部分。新程序的复位中断向量起始地址为0X08000004+N+M),跳转至新写入程序的复位向量表,取出新程序的复位中断向量的地址,并跳转执行新程序的复位中断服务程序,随后跳转至新程序的main函数,如图标号②和③所示,同样main函数为一个死循环,并且注意到此时AT32的FLASH,在不同位置上,共有两个中断向量表。

在main函数执行过程中,如果CPU得到一个中断请求,PC指针仍强制跳转到地址0X08000004中断向量表处,而不是新程序的中断向量表,如图标号④所示;程序再根据我们设置的中断向量表偏移量,跳转到对应中断源新的中断服务程序中,如图标号⑤所示;在执行完中断服务程序后,程序返回main函数继续运行,如图标号⑥所示。

通过以上两个过程的分析,我们知道IAP程序必须满足两个要求:
1) 新程序必须在IAP程序之后的某个偏移量为x的地址开始
2) 必须将新程序的中断向量表相应的移动,移动的偏移量为x

AT32 USB MSD IAP简介

USB MSD IAP是一个固件升级工具,它不依赖于其它上位机工具,可直接接入到PC或手机上进行设备的固件升级。

实现原理:将FLASH虚拟成一个存储设备让PC访问。

极其简单的操作步骤:

1) 将USB接口接入PC
2) PC识别到盘符“AT32 IAP”
3) 将需要升级的固件拷贝到AT32 IAP盘符里面
4) 升级完成

AT32 USB MSD IAP设计功能特点

  • IAP目前保留使用20K byte空间,APP的起始地址需在20K以后

  • 使用USB大容量存储设备进行虚拟设备

  • 升级后自动reset USB设备并返回升级状态

  • 支持下载后自动读回进行CRC校验,保证固件正确性

  • 支持设置下载地址(需按照page 2K对齐,并要大于IAP保留地址)

  • 支持各种系统windows,linux,Android等

  • 支持升级完成之后跳转到APP运行

  • 支持BIN文件升级

  • 支持HEX文件升级(后续版本添加)

  • 支持加密文件升级(后续版本添加)

程序设计

地址空间

“表1.
表1. 地址空间分布

升级状态

当连接Host之后,在盘符里面会对应有当前状态的TXT文档,根据文档名称不同来确定当前的状态。

准备升级状态(Ready.TXT)
升级成功(Success.TXT)
升级失败(Failed.TXT)
未知文件或错误(Unknown.TXT)
升级文件大于FLASH大小(Large.TXT)
注意:设备必须在Ready.TXT状态下才能进行升级,否则不会升级。

升级BIN档文件名格式

需指定下载地址(格式1)
文件名格式:(1Byte)A+(6Byte)offset+.BIN
如:要下载一个BIN文件到0x08005000为起始的地址空间去
文件名为:A005000.BIN

注意6Byte的offset地址需要保证在APP可使用的范围之内,否则将使用IAP内部默认的APP起始地址进行升级

当不满足格式1时,IAP 将使用内部默认APP的起始地址进行升级:

如:ABCDEFG.BIN,A11111.BIN,jkakkkddkfj.BIN

升级HEX档文件格式(后缀.HEX)

后续版本添加

升级加密档文件格式(后缀.SEC)

后续版本添加

使用Option Byte标志判断当前是否升级

IAP中使用Option Byte中HID[0]记录升级是否成功,当进入IAP时,设置HID[0]=1,当升级完成时设置HID[0]=0;当设备启动时,会自动判断HID[0]是否已升级固件,如果是,就跳转到APP地址执行,否就继续运行IAP。

跳转到APP code执行

当成功下载固件到FLASH之后,如果需要跳转到用户code执行,有两种方法:

1) Reset
2) 向识别到的AT IAP虚拟磁盘上拷贝一个JUMP.TXT的文件,注意这个文件的大小不能为0

使用AT32 USB MSD IAP进行升级

硬件资源

1) 指示灯LED2/LED3/LED4

2) USB(PA11/PA12)

3) AT-START-F403AV1.0实验板

“图2.
图2. AT-START-F403A

注:该IAP demo是基于AT32F403A的硬件条件,若使用者需要在AT32其他型号上使用,请修改相应配置即可。

软件资源

1) SourceCode

AN0012_SourceCode_V2.0.0\utilities\AN0012_demo,IAP源程序

AN0012_SourceCode_V2.0.0\libraries,AT32外设库

AN0012_SourceCode_V2.0.0\middlewares,其他资源

2) Doc
《AN0012_USB_MSD_IAP_V2.x.x.docx》

Note:所有project都是基于keil 5而建立,若用户需要在其他编译环境上使用,请参考AT32F403A_407_Firmware_Library\project\at_start_f403a\templates中各种编译环境(例如IAR6/7/8,keil4/5)进行简单修改即可。

使用流程

1) 进入IAP Mode方式

如果已经升级过固件,一直按住User按键,再按Reset键,进入IAP模式(LED4闪烁),未升级时直接reset就会进入IAP模式。

“图3.
图3. 进入IAP Mode按键

2) 连接USB设备到PC

“图4.
图4. USB设备与PC连接

3) PC识别到AT32 IAP可看到Ready.TXT

“图5.
图5. PC识别到AT32 IAP

4) 拷贝BIN档到磁盘目录下

“图6.
图6. 拷贝Bin文件

5) 设备升级完成之后将Reset USB

此时重新打开磁盘,会有Success.TXT

“图7.
图7. 设备升级完成提示

6) 升级结束

此时Reset或向识别到的AT IAP虚拟磁盘上拷贝一个大小不为0的JUMP.TXT文件,即可跳转到用户代码。

如果升级一次之后,不管是成功还是失败,如果需要再次升级,需要reset整个设备。设备进入Ready.TXT状态。

来源:AT32 MCU 雅特力科技
免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理(联系邮箱:cathy@eetrend.com)。

围观 76

概述

在使用Artery部分系列MCU时(如AT32F413\AT32F415\AT32F403A\AT32F407),可以使用DMA弹性映射功能。此功能使得DMA的通道配置更加灵活,可以将某外设的DMA请求通道指定到DMA1或者DMA2共14个通道中的任意一个通道。(如:可以将SPI1接受数据的DMA请求指定到DMA1的通道7)。

本指南将介绍如何使用DMA弹性映射请求,从而使得DMA传输变得更加灵活多变。

配置及使用方法

常规DMA使用(DMA固定映射)

常规的DMA使用以及配置方式为:外设的DMA通道已经固定且不可改变,使用时配置好再使能固定通道即可。这就意味着如果想开启某个外设的DMA功能,那么通道是不可改变的,例如想使用SPI1的RX DMA功能,那么就要查看RM的手册,如下:

“表1.
表1. DMA固定映射请求

从表格中可以知道需要开启DMA1的通道2。

DMA弹性映射使用

DMA弹性映射请求功能提供了一种更灵活的使用方式,即外设的DMA通道不固定,可选择DMA1和DMA2中,共14个通道的任意一个通道。

想要使用此功能,需要通过以下几步的设定:

1) 开启DMA弹性映射功能

将DMA的通道来源寄存器1的第24bit写1,即DMA_SRC_SEL1寄存器的DMA_FLEX_EN位。

向通道设置对应的寄存器中写入相应的硬件ID号。

每个外设的DMA请求都分配了一个硬件ID号,只要将这个ID号写进通道来源寄存器中即可。ID号可查看RM中的表格,以403A为例,如下:

“表2.
表2. 403A各个信道的DMA弹性请求一览

上表中的CHx_SRC设定值就是硬件ID号,将这个ID号写进通道来源寄存器中的对应通道bit位就可以了。例如:要将SPI1的RX的DMA请求映射到DMA1的通道7,那么就要将0x09写入到DMA_SRC_SEL1寄存器的CH7_SRC[23:16]。其他配置与常规DMA配置相同通过以上3步的配置,弹性映射功能即可使用。

注:DMA1/2的DMA_FLEX_EN必须要同时设定为1或时,DMA1/2的映像模式必须一致。无法DMA1是固定式映像,DMA2是弹性式映像。

2) DMA弹性映射库函数使用

以上的配置在BSP中的dma.h\dma.c的库文件中有提供相应的库函数,使用者只需调用库函数即可完成DMA弹性映射模式的配置。

库函数说明如下:

“表3.
表3. DMA弹性映射库函数说明

此函数只需在配置好DMA常规功能后调用即可,如下:

“图1.
图1. DMA固定映射库函数调用范例

上图中为设置TIMER1的更新中断为DMA弹性映射请求范例。

例程说明

DMA弹性映射功能在BSP中例程,路径为:
AT32F403A_407_Firmware_Library_V2.x.x\project\at_start_f403a\examples\dma\data_to_gpio_flexible(以403A路径为例)

下面将对这两个例程做一个使用说明。

• data_to_gpio_flexible

例程data_to_jpio_flexible

本例程实现的功能为利用DMA将SRAM的数据传输到GPIO口的输出寄存器中,从而达到控制GPIO口输出的目的。同时配置TMER2产生overflow中断并产生DMA请求,配置次DMA请求为弹性映射模式。
TIMER2每产生一次DMA请求,DMA就从SRAM搬运一笔数据到GPIO口。

DMA相关的配置代码:

“AT32

实验结果可采用逻辑分析仪抓取GPIO口数据查看。

来源:AT32 MCU 雅特力科技
免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理(联系邮箱:cathy@eetrend.com)。

围观 39

IAP在线升级原理概述

IAP(In Application Programming)即在应用编程,IAP是用户自己的程序在运行过程中对User Flash的部分区域进行烧写,目的是为了在产品发布后可以方便地通过预留的通信口对产品中的固件程序进行更新升级。通常实现IAP功能时,即用户程序运行中作自身的更新操作,需要在设计固件程序时编写两个项目代码,第一个项目程序不执行正常的功能操作,而只是通过某种通信方式(如USB、USART)接收程序或数据,执行对第二部分代码的更新;第二个项目代码才是真正的功能代码。这两部分项目代码都同时烧录在User Flash中,当芯片上电后,首先是第一个项目代码开始运行,它作如下操作:

1. 检查是否需要对第二部分代码进行更新
2. 如果不需要更新则转到4
3. 执行更新操作
4. 跳转到第二部分代码执行

“图1.
图1. IAP代码执行流程

在图上图所示流程中,AT32复位后,还是从0X08000004地址取出复位中断向量的地址,并跳转到复位中断服务程序,在运行完复位中断服务程序之后跳转到IAP的main函数,如图标号①所示。在执行完IAP以后(即将新的APP代码写入AT32的FLASH,灰底部分。新程序的复位中断向量起始地址为0X08000004+N+M),跳转至新写入程序的复位向量表,取出新程序的复位中断向量的地址,并跳转执行新程序的复位中断服务程序,随后跳转至新程序的main函数,如图标号②和③所示,同样main函数为一个死循环,并且注意到此时AT32的FLASH,在不同位置上,共有两个中断向量表。

在main函数执行过程中,如果CPU得到一个中断请求,PC指针仍强制跳转到地址0X08000004中断向量表处,而不是新程序的中断向量表,如图标号④所示;程序再根据我们设置的中断向量表偏移量,跳转到对应中断源新的中断服务程序中,如图标号⑤所示;在执行完中断服务程序后,程序返回main函数继续运行,如图标号⑥所示。

通过以上两个过程的分析,我们知道IAP程序必须满足两个要求:

1. 新程序必须在IAP程序之后的某个偏移量为x的地址开始
2. 必须将新程序的中断向量表相应的移动,移动的偏移量为x

AT32 USB HID IAP快速使用方法

硬件资源

文档中是用AT-START-AT32F403A实验板的硬件条件为例,OTA demo源代码还包括AT32其他型号,用户只需编译对应型号工程烧录于AT-START实验板运行即可。

1) 指示灯LED2/LED3/LED4
2) USART1(PA9/PA10)
3) AT-START实验板

软件资源

1. APP_Release

● IAP_Programmer.exe PC机tool

2. SourceCode

● bootloader,IAP源程序,运行LE2闪烁

● app_led3_toggle,app1 LED3闪烁源程序

● app_led4_toggle,app2 LED4闪烁源程序

注:工程基于keil v5和IAR8.2建立,若用户需要在其他编译环境上使用,请参考

AT32F403A_407_Firmware_Library_V2.x.x\project\at_start_f403a\templates中各种编译环境(例如IAR6/7/8,keil 4/5,eclipse_gcc)进行对应修改即可。

IAP Programmer使用

1. 打开bootloader源程序,编译后下载到实验板

2. 打开IAP Programmer.exe
3. 如图,选择USB设备,使用的是HID设备,因此不需要驱动
4. 选择APP下载地址(下载地址需要与IAP设置的下载地址相同)和bin文档,选择是否需要CRC校验,点击Download下载
5. 观察LED2/3/4闪烁,LED2闪烁-bootloader工作,LED3闪烁-app1工作,LED4闪烁-app2工作
6. 支持断电保护,当程序没有download成功时,下次启动还在IAP模式
图2. IAP demo上位机

“AT32

AT32 USB HID IAP程序设置

地址分布

“表1.
表1. 地址分布

Note:bootloader区域最后一个扇区,用于放置防掉电丢失的flag,用户修改bootloader时请勿操作该段地址。

bootloader project设置

1) Keil设置

“”图3.
图3. bootloader project中add1在Keil设置

2) bootloader源程序修改

hid_iap_user.h文件中

“图4.
图4. bootloader project中add2在程序中设置

app设置

该demo提供了2个app程序供测试用,皆以add2(0x800 4000)为起始地址。app1 LED3闪烁,app2 LED4闪烁。以app LED3为例,设计步骤如下:

1. Keil工程设置

“图5.
图5. app project中add2在Keil设置

2. app源程序设置

修改main.c中的中断向量偏移

“图6.
图6. app源程序设置

3. 编译生成bin文件

通过在User选项卡,设置编译后调用fromelf.exe,根据.axf文件生成.bin文件,用于IAP更新。

以上3个步骤,我们就可以得到一个.bin的APP程序,通过bootloader程序即可实现更新。

4. 开启debug app code功能

如果在设计app code过程中需要对app project进行单独调试,请按照以下操作。

● 下载bootloader project

● 第一次使用debug功能需要IAP Programmer.exe成功下载一次app.(成功下载之后会写flag,表示下次从app启动。默认flag会从bootloader启动)

● debug app project

IAP、APP与上位机通信流程

1. 上位机通信流程

“图7.
图7. 上位机通信流程

2. IAP端下位机通信流程

“图8.
图8. IAP端下位机通信流程

注意:具体协议请参考AT32_HID_IAP_Protocol.pdf

USB HID IAP Protocol

本节描述USB HID升级协议,使用此协议与上位机进行通信,达到升级固件的目的。

命令列表

“AT32

注意1:HID MaxPacket=64Byte

注意2:每一个包的前面两个Byte固定为命令

注意3:命令按照MSB,LSB的顺序传输

ACK:0XFF00,NACK:0x00FF

命令详解

1. 0x5AA0进入IAP模式

作为一个特定的命令,当用户APP收到这个命令之后将进入IAP模式。实现方式为收到这个命令之后擦除flag然后reset

上位机:[0x5A,0xA0]

IAP设备响应:[0x5A,0XA0,ACK/NACK]

2. 0x5AA1开始下载

上位机:[0x5A,0xA1]

IAP设备响应:[0x5A,0xA1,ACK/NACK]

3. 0x5AA2设置下载地址

设置下载地址需按照1KB对齐,每下载1Kbyte数据之后,都需要重新设置下载地址。

上位机(命令+地址):[0x5A,0xA2,0x08,0x00,0x40,0x00]

IAP设备响应:[0x5A,0xA2,ACK/NACK]

4. 0x5AA3下载数据命令(1KB对齐多个包发送)

下载数据命令采用 命令+长度+数据的格式进行发送,每包最大数据量为60Byte(64–命令–长度),当发送数据达到1KB时,上位机需要等待设备的ACK响应。此时设备需将1KB的数据写到FLASH。

上位机(命令(2Byte)+长度(2Byte)+数据(nbyte)):[0x5A,0xA3,LEN1,LEN0,DATA0….DATAn]

收完1KB数据后IAP设备响应:[0x5A,0XA3,ACK/NACK]

5. 0x5AA4下载结束

上位机:[0x5A,0xA4]

IAP设备响应:[0x5A,0xA4,ACK/NACK]

7. 0x5AA6跳转命令

跳转命令将跳转到用户代码进行运行

上位机:[0x5A,0xA6,0x08,0x00,0x40,0x00]

IAP设备响应:[0x5A,0xA6,ACK/NACK]

8. 0x5AA7获取IAP设置的app地址

返回IAP设置的app地址

上位机:[0x5A,0xA7]

IAP设备响应:[0x5A,0xA7,ACK/NACK,0x08,0x00,0x40,0x00]

来源:AT32 MCU 雅特力
免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理(联系邮箱:cathy@eetrend.com)。

围观 90

雅特力日前推出一系列丰富的软件工具,包括AT-Link Console、ISP Console、New Clock Configuration、I2C Timing Configuration等;同时发布全新升级版BSP、Pack、ICP、ISP、ISP Multi-Port,相比于之前版本,新增支持雅特力新推出的AT32F435、AT32F437、AT32F425、AT32WB415系列MCU,同时强化并完善软件功能,为开发人员提供全面性集成支持,带来开发效率和成果性能的大幅提升。

“雅特力推出全新开发软件工具,打造更完善的AT32

BSP & Pack

为了让用户高效快速的使用Artery MCU,雅特力官方提供了一套完整的BSP & Pack用于开发。主要包括:外设驱动库、内核相关文件、完整的应用例程以及能够支持Keil_v5、Keil_v4、IAR_v6和IAR_v7、IAR_v8等多种开发环境的Pack文件。

“▲BSP内容结构"
▲BSP内容结构

● document:部分说明文档。
● libraries:

drivers:外设驱动库。
cmsis:内核相关文件。包括Cortex-M4库文件、系统初始化文件、启动文件等。
● middlewares:第三方软件包或公用协议包。如USB协议层驱动、网络协议层驱动、操作系统源码等。

● project:

examples:型号相关的示例demo。
templates:模板工程。
● utilities:各经典应用案例存放目录。

“▲Pack安装包"
▲Pack安装包

● IAR_AT32MCU_AddOn:支援IAR_V6、IAR_V7和IAR_V8的压缩包。

ICP(In-Circuit Programming)

ICP Programmer是为了让用户更方便的使用AT32 MCU而开发的一款图形界面应用程序。使用该应用程序,用户可通过AT-Link仿真器或者J-Link仿真器来操作雅特力的MCU设备。同时可配置AT-Link离线项目,用户可通过AT-Link离线下载实现高效量产烧录。

“▲主界面"
▲主界面

ISP(In-System Programming)

ISP Programmer是基于AT32 MCU Bootloader而开发的一款图形界面应用程序。使用该应用程序,用户可以通过UART端口或者USB端口配置操作雅特力的MCU设备。

“▲操作配置界面"
▲操作配置界面

ISP Multi-Port

ISP Multi-Port Programmer是基于AT32 MCU Bootloader而开发的一款图形界面应用程序。使用该应用程序,用户可以通过UART端口或者USB端口同时配置操作多台雅特力的MCU设备。

ISP Multi-Port Programmer支持连续下载模式,方便客户实现高效量产烧录。
功能操作方面,可对选择设备进行全擦除、扇区擦除、块擦除、下载文件、下载用户系统数据文件、Firmware CRC校验、存储器 CRC、启用保护、禁用保护,以及禁用sLib等功能操作。

“▲功能操作选择"
▲功能操作选择

AT -Link Console & ISP Console

AT-Link Console是一款基于AT-Link操作MCU的命令行应用程序。使用该应用程序,用户可以通过SWD端口配置操作雅特力的MCU设备。

ISP Console是一款基于MCU Bootloader的命令行应用程序。使用该应用程序,用户可以通过UART端口或者USB端口配置操作雅特力的MCU设备。

“▲操作流程"
▲操作流程

New Clock Configuration

协助AT32 MCU CPU/IP的时钟配置,并生成代码。

“▲New
▲New Clock Configuration UI画面

I2C Timing Configuration

协助AT32 MCU CPU/IP的时钟配置,并生成代码。

“▲I2C
▲I2C Timing Configuration UI画面

目前这一系列软件资源已上架至雅特力官网(www.arterytek.com),可支持AT32全系列MCU产品,欢迎大家前往网站下载体验。

关于雅特力

雅特力科技于2016年成立,是一家致力于推动全球市场32位微控制器创新趋势的芯片(MCU)设计公司,专注于ARM ®Cortex®-M4/M0+的32位微控制器研发与创新,全系列采用55nm先进工艺及ARM® Cortex®-M4高效能或M0+低功耗内核,缔造M4业界最高主频288MHz运算效能,并支持工业级别芯片工作温度范围(-40°~105°)。

雅特力目前已累积相当多元的终端产品成功案例:如微型打印机、扫地机、光流无人机、热成像仪、激光雷达、工业缝纫机、伺服驱控、电竞周边市场、断路器、ADAS、T-BOX、数字电源、电动工具等终端设备应用,广泛地覆盖5G、物联网、消费、商务及工控等领域。

来源:AT32 MCU 雅特力科技
免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理(联系邮箱:cathy@eetrend.com)。

围观 80

概述

空中下载技术OTA(Over-the-Air Technology)是用户自己的程序在运行过程中对User Flash的部分区域进行烧写,目的是为了在产品发布后可以方便地通过预留的通信口,对产品中的固件程序进行更新升级。通常实现OTA功能时,即用户程序运行中作自身的更新操作,需要在设计固件程序时编写两个项目代码,第一个项目程序为Bootloader区域,第二个项目程序App代码为真正的功能代码,执行应用和升级。这两部分项目代码同时烧录在User Flash中。

“图1.
图1. OTA代码执行流程

在上图所示流程中,MCU复位后,从0x08000004地址取出复位中断向量的地址,并跳转到复位中断服务程序,在运行完复位中断服务程序之后跳转到Bootloader的main函数,如图标号①所示;在执行完Bootloader以后(App代码为图中FLASH灰底部分App程序的复位中断向量起始地址为0x08000004+N+M),跳转至App程序的复位向量表,取出App程序的复位中断向量的地址,并跳转执行App程序的复位中断服务程序,随后跳转至App程序的main函数,如图标号②和③所示,同样main函数为一个死循环,并且注意到此时AT32的FLASH,在不同位置上,共有两个中断向量表。

在main函数执行过程中,如果CPU得到一个中断请求,PC指针仍强制跳转到地址0x08000004中断向量表处,而不是App程序的中断向量表,如图标号④所示;程序再根据我们设置的中断向量表偏移量,跳转到对应中断源新的中断服务程序中,如图标号⑤所示;在执行完中断服务程序后,程序返回main函数继续运行,如图标号⑥所示。

通过以上两个过程的分析,我们知道OTA程序必须满足两个要求:

1) App程序必须在Bootloader程序之后的某个偏移量为x的地址开始。

2) 必须将App程序的中断向量表相应的移动,移动的偏移量为x。

AT32 USART OTA 快速使用方法

硬件资源

文档中是用AT-START-AT32F403A实验板的硬件条件为例,OTA demo源代码还包括AT32其他型号,用户只需编译对应型号工程烧录于AT-START实验板运行即可。

1) 指示灯LED2/LED3/LED4
2) USART1(PA9/PA10)
3) AT-START实验板

软件资源

1) tool_release

● IAP_Programmer.exe,PC机tool,用于演示OTA升级流程
2) source_code
● Bootloader,Bootloader源程序,运行LED2闪烁
● App_led3_toggle,App1源程序,运行LED3闪烁
● App_led4_toggle,App2源程序,运行LED4闪烁

注:工程基于keil v5建立,若用户需要在其他编译环境上使用,请参考对应BSP目录AT32F403A_407_Firmware_Library_V2.x.x\project\at_start_f403a\templates中各种编译环境(例如IAR6/7/8,keil 4/5,eclipse_gcc)进行对应修改即可。

OTA Demo 使用

本文档描述了两种常用的OTA应用demo,template app和dual app,后面章节会分别介绍。
1) 打开Bootloader工程源程序,选择对应MCU型号的target编译后下载到实验板

2) 打开IAP_Programmer.exe

3) 选择正确的串口、APP下载地址和bin文档,点击Download下载,如下图

4) 观察LED2/3/4闪烁,LED2闪烁-Bootloader工作,LED3闪烁-App1工作,LED4闪烁-App2工作

图2.
图2. IAP demo上位机

Template app OTA程序设置

地址分布

“图3.
图3. Flash地址分配

注:Bootloader区域最后一个扇区,用于存放防止升级过程出错(掉电等异常情况)的flag,用户编译修改Bootloader时,要保证不覆盖flag的地址。

执行流程

OTA分为Bootloader、App和Template三部分,应用在App中执行,Template仅作为新App固件数据的临时存放空间。程序执行整体流程框图如下:

“图4.
图4. 程序执行流程

Bootloader project 设置

1) Keil设置

“图5.
图5. Bootloader project中address 1在Keil设置

2) Bootloader源程序修改ota.h文件中

“图6.
图6. Bootloader project中address 2在程序中设置

App project 设置

OTA demo提供了2个App程序供测试用,皆以address 2(0x800 4000)为起始地址。App1 LED3闪烁,App2 LED4闪烁。以App1为例,设计步骤如下:

1) Keil工程设置

“图7.
图7. App project中address 2在Keil设置

2) App1源程序设置

“图8.
图8. App project向量表偏移在程序中设置

3) 编译生成bin文件

通过User选项卡,设置编译后调用fromelf.exe,根据.axf文件生成.bin文件,用于OTA更新。通过以上3个步骤,我们就可以得到一个.bin的APP程序,通过Bootloader程序即可实现更新。

4) 开启debug app code功能

如果在设计App code过程中需要对App project进行单独调试,请按照以下操作。

● 先下载Bootloader工程
● 再调试App工程

Dual app OTA与程序设置

地址分布

“图9.
图9. Flash地址分配

注:Bootloader区域最后2个扇区,用于存放App是否正常的flag,用户编译修改Bootloader时,要保证不覆盖flag的地址。

执行流程

OTA分为Bootloader、App1和App2三部分,应用在App1或App2中执行。程序执行整体流程框图如下:

“图10.
图10. 程序执行流程

Bootloader project设置

3) Keil设置

“图11.
图11. Bootloader project中address 1在Keil设置

4) Bootloader源程序修改ota.h文件中

“图12.
图12. Bootloader project中address 2在程序中设置

App project设置

OTA demo提供了2个App程序供测试用,app_led3_toggle以0x800 4000为起始地址,app_led4_toggle以0x8080000为起始地址。App1 LED3闪烁,App2 LED4闪烁。以App1为例,设计步骤如下:

5) Keil工程设置

“图13.
图13. App project中address 2在Keil设置

6) App1源程序设置

“图14.
图14. App project向量表偏移在程序中设置

7) 编译生成bin文件

通过User选项卡,设置编译后调用fromelf.exe,根据.axf文件生成.bin文件,用于OTA更新。通过以上3个步骤,我们就可以得到一个.bin的APP程序,通过Bootloader程序即可实现更新。

8) 开启debug App code功能

如果在设计App code过程中需要对App project进行单独调试,请按照以下操作。

● 先下载Bootloader工程
● 再调试App工程

Bootloader/App与上位机串口通信协议

程序与上位机通信,接收固件升级数据,上位机端和嵌入式端通信协议如下:

1) 上位机通信协议

“图15.
图15. 上位机通信协议

2) 嵌入式端下位机通信协议

“图16.
图16. 下位机通信协议

注:ACK:0xCCDD
NACK:0xEEFF
Data:0x31+Addr+数据+chenksum(1byte)
Addr:4bytes,高位在前
Kbytes,下载数据,不足2K内容填充0xFF
Checksum:1byte,4bytes的Addr+2KBytes数据的校验和的低八位

关于雅特力

雅特力科技于2016年成立,是一家致力于推动全球市场32位微控制器创新趋势的芯片(MCU)设计公司,专注于ARM ®Cortex®-M4/M0+的32位微控制器研发与创新,全系列采用55nm先进工艺及ARM® Cortex®-M4高效能或M0+低功耗内核,缔造M4业界最高主频288MHz运算效能,并支持工业级别芯片工作温度范围(-40°~105°)。

雅特力目前已累积相当多元的终端产品成功案例:如微型打印机、扫地机、光流无人机、热成像仪、激光雷达、工业缝纫机、伺服驱控、电竞周边市场、断路器、ADAS、T-BOX、数字电源、电动工具等终端设备应用,广泛地覆盖5G、物联网、消费、商务及工控等领域。

来源:AT32 MCU 雅特力科技
免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理(联系邮箱:cathy@eetrend.com)。

围观 198

概述

IAP(In Application Programming)即在应用编程,IAP是用户自己的程序在运行过程中对User Flash的部分区域进行烧写,目的是为了在产品发布后可以方便地通过预留的通信口对产品中的固件程序进行更新升级。通常实现IAP功能时,即用户程序运行中作自身的更新操作,需要在设计固件程序时编写两个项目代码,第一个项目程序不执行正常的功能操作,而只是通过某种通信方式(如USB、USART)接收程序或数据,执行对第二部分代码的更新;第二个项目代码才是真正的功能代码。这两部分项目代码都同时烧录在User Flash中,当芯片上电后,首先是第一个项目代码开始运行,它作如下操作:

1) 检查是否需要对第二部分代码进行更新

2) 如果不需要更新则转到4)

3) 执行更新操作

4) 跳转到第二部分代码执行

“图1.
图1. IAP代码执行流程

在上图所示流程中,MCU复位后,还是从0x08000004地址取出复位中断向量的地址,并跳转到复位中断服务程序,在运行完复位中断服务程序之后跳转到IAP的main函数,如图标号①所示;在执行完IAP以后(即将新的APP代码写入AT32的FLASH,灰底部分。新程序的复位中断向量起始地址为0x08000004+N+M),跳转至新写入程序的复位向量表,取出新程序的复位中断向量的地址,并跳转执行新程序的复位中断服务程序,随后跳转至新程序的main函数,如图标号②和③所示,同样main函数为一个死循环,并且注意到此时AT32的FLASH,在不同位置上,共有两个中断向量表。

在main函数执行过程中,如果CPU得到一个中断请求,PC指针仍强制跳转到地址0x08000004中断向量表处,而不是新程序的中断向量表,如图标号④所示;程序再根据我们设置的中断向量表偏移量,跳转到对应中断源新的中断服务程序中,如图标号⑤所示;在执行完中断服务程序后,程序返回main函数继续运行,如图标号⑥所示。

通过以上两个过程的分析,我们知道IAP程序必须满足两个要求:

1) 新程序必须在IAP程序之后的某个偏移量为x的地址开始

2) 必须将新程序的中断向量表相应的移动,移动的偏移量为x

AT32 USART IAP 快速使用方法

硬件资源

文档中是用AT-START-AT32F403A实验板的硬件条件为例,IAP demo源代码还包括AT32其他型号,用户只需编译对应型号工程烧录于AT-START实验板运行即可。

1) 指示灯LED2/LED3/LED4
2) USART1(PA9/PA10)
3) AT-START实验板

软件资源

1) tool_release

● IAP_Programmer.exe,PC机tool,用于演示IAP升级流程

2) source_code

● bootloader,bootloader源程序,运行LED2闪烁

● app_led3_toggle,app1源程序,运行LED3闪烁

● app_led4_toggle,app2源程序,运行LED4闪烁

注:工程基于keil v5和IAR8.2建立,若用户需要在其他编译环境上使用,请参考AT32F403A_407_Firmware_Library_V2.x.x\project\at_start_f403a\templates中各种编译环境(例如IAR6/7/8, keil 4/5, eclipse_gcc)进行对应修改即可。

IAP Demo 使用

1) 打开bootloader工程源程序,选择对应MCU型号的target编译后下载到实验板

2) 打开IAP_Programmer.exe

3) 选择正确的串口、APP下载地址和bin文档,点击Download下载,如下图

4) 观察LED2/3/4闪烁,LED2闪烁-bootloader工作,LED3闪烁-app1工作,LED4闪烁-app2工作

“图2.
图2. IAP demo上位机

AT32 USART IAP程序设置

地址分布

“表1.
表1. 地址分布

注:bootloader区域最后一个扇区,用于存放防止升级过程掉电的flag,用户编译修改bootloader时,要保证不覆盖flag的地址。

执行流程

IAP分为Bootloader和App两部分,应用在App中执行,升级过程在bootloader中执行。程序执行整体流程框图如下:

“图3.
图3. 程序执行流程

bootloader project 设置

1) Keil设置

“图4.
图4. bootloader project中address 1在Keil设置

2) bootloader源程序修改Iap.h文件中

“图5.
图5. bootloader project中address 2在程序中设置

app project 设置

IAP demo提供了2个app程序供测试用,皆以address 2(0x800 4000)为起始地址。app1 LED3闪烁,app2 LED4闪烁。以app1为例,设计步骤如下:

1) Keil工程设置

“图6.
图6. app project中address 2在Keil设置

2) app1源程序设置

“图7.
图7. app project向量表偏移在程序中设置

3) 编译生成bin文件

通过User选项卡,设置编译后调用fromelf.exe,根据.axf文件生成.bin文件,用于IAP更新。通过以上3个步骤,我们就可以得到一个.bin的APP程序,通过bootloader程序即可实现更新。

4) 开启debug app code功能

如果在设计app code过程中需要对app project进行单独调试,请按照以下操作。

a) 先下载bootloader工程

b) 再调试app工程

bootloader/app 与上位机串口通信协议

1) 上位机通信协议

“图8.
图8. 上位机通信协议

2) IAP端下位机通信协议

“图9.
图9. IAP端下位机通信协议

注: ACK: 0xCCDD

NACK: 0xEEFF

Data: 0x31+Addr+数据+chenksum(1byte)

Addr: 4bytes,高位在前

Kbytes,下载数据,不足2K内容填充0xFF

Checksum: 1byte,4bytes的Addr+2KBytes数据的校验和的低八位

来源:AT32 MCU 雅特力科技
免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理(联系邮箱:cathy@eetrend.com)。

围观 105

基于广阔的市场空间、5G、IOT、AI等技术快速迭代、新基建的政策红利以及新消费形势的需求,智能家居产业蓬勃发展。当前,传统电灯开关的局限性已经暴露,随着经济水平的发展,消费者对生活的品质产生了强大的提高需求,面对这样的市场需求,便捷的智能开关取代传统开关已经成为大势所趋。

2014年,亚马逊推出了自有的智能语音助手Alexa,直接通过语音便可以下达指令,远程控制实现家居智能化,简单来说,Alexa就相当于智能家居系统的“大脑”。要实现这样理想的智能家居系统,除了Alexa这样的“中枢”,还必须通过底层的硬件-半导体芯片平台去承载和实现,雅特力AT32F415系列MCU已实现支持亚马逊的Amazon Connect Kit (ACK)功能,并在亚马逊的官方产品智能调光开关批量量产。通过支持Alexa的智能音箱或APP应用程序,为墙面开关添加语音控制功能,从传统开关轻松升级为智能开关。

“雅特力AT32

雅特力MCU主要实现墙面开关的控制功能和集成了亚马逊的Wi-Fi简单设置功能,帮助客户以更少的步骤快速连接家用设备,并以其高性能、小体积,满足了墙面开关对元器件小体积的需求。你可以在任何地方实现对灯光亮度的强弱调节、灯光软启动、定时控制、场景设置等功能,无需智能家居集线器,无需额外的智能设备或应用程序,达到安全、节能、舒适、高效的特点。

“雅特力AT32

1月5日,由亚马逊云科技(Amazon Web Service)和江西嘉捷鑫源科技有限公司(Innotech)主办,上海浦东智能照明联合会和深圳跨境电子商务协会协办的《亚马逊云赋能智能家居生态高峰论坛》在深圳福田香蜜湖万豪酒店举办。众多行业伙伴欢聚一堂,深入探讨云端前沿科技,共谋企业实现云端数字化创新与落地实践,展望行业发展未来。雅特力作为战略合作伙伴应邀参加此次峰会,副总经理黄呈俊和产品市场经理林金海先生作为代表出席活动,期待与行业伙伴共同打造智能家居生态体系。

“雅特力AT32

“嘉捷鑫源联合创始人叶建胜(右二)、雅特力科技副总经理黄呈俊(左三)与亚马逊团队合影"
嘉捷鑫源联合创始人叶建胜(右二)、雅特力科技副总经理黄呈俊(左三)与亚马逊团队合影

关于雅特力

雅特力科技于2016年成立,是一家致力于推动全球市场32位微控制器创新趋势的芯片(MCU)设计公司,专注于ARM ®Cortex®-M4/M0+的32位微控制器研发与创新,全系列采用55nm先进工艺及ARM® Cortex®-M4高效能或M0+低功耗内核,缔造M4业界最高主频288MHz运算效能,并支持工业级别芯片工作温度范围(-40°~105°)。

雅特力目前已累积相当多元的终端产品成功案例:如微型打印机、扫地机、光流无人机、热成像仪、激光雷达、工业缝纫机、伺服驱控、电竞周边市场、断路器、ADAS、T-BOX、数字电源、电动工具等终端设备应用,广泛地覆盖5G、物联网、消费、商务及工控等领域。

来源:AT32 MCU 雅特力科技
免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理(联系邮箱:cathy@eetrend.com)。

围观 62

11月11日,由DIGITIMES主办的“D Forum 2021 微控制器论坛”在台北华南银行国际会议中心圆满举行。雅特力科技携消费、工控及电机等多款终端应用产品和解决方案亮相活动现场,并发表了题为“AT32高效能MCU平台 – 持续布局多元化应用市场”的主题演讲。

雅特力产品与行销处长杜立博先生在演讲中首先介绍了公司近几年来取得的成绩,雅特力于2016年成立,2018年正式对外销售,短短五年时间已经取得了十分显著的成绩,业务不断实现新的突破与跨越,目前已经推出8个系列MCU芯片,近200个型号,预计2021年底将突破一亿颗出货记录。

“雅特力携高性能AT32

在演讲中,杜立博先生详细介绍了雅特力产品布局,他讲到,AT32 MCU家族目前已有AT32F421、AT32F415、AT32F403、AT32F413、AT32F403A、AT32F435、AT32F407、AT32F437八大系列产品,涵盖超值型、主流型及高性能三大产品类型,产品已经广泛应用在5G、物联网、消费、商务、电机及工控等领域,可满足目前大部分市场需求。其中AT32F435和AT32F437系列超高性能MCU,工作主频可达288 MHz,创造了Cortex®-M4业界最高的主频运算效能,十分适用于智能扫地机、微打印机、物联网网关、串口服务器、HMI 、 LED显示屏,二维码扫描,工业控制,及5G应用。

雅特力在发展业绩的同时,也不断根据终端市场变革趋势,提前布局产品开发,以满足更多用户的多元化需求。今年年底即将推出的AT32F425系列MCU,特别适用于电竞市场、工业自动化、电机控制、物联网及消费性电子等各种高运算、USB周边应用需求的设计,相比于之前推出的AT32F415系列MCU,AT32F425将性价比推向颠峰,是入门级USB OTG MCU的极致之选。

“雅特力携高性能AT32

最近几年由于人们对环保的重视,市场上开始关注节能低碳的电子产品,对家电等电子产品的低功耗性能也提高了要求,低功耗MCU在家庭的各种电器产品上将占据重要地位。雅特力从市场和用户需求出发,目前已经规划了两款低功耗MCU—AT32L021、AT32L415,其中AT32L021系列已经”蓄势待发“,预计将于2022年第一季度正式发布。

雅特力作为一家致力于推动全球市场32位微控制器(MCU)创新趋势的芯片设计公司,除了研发产品和开拓市场,还秉持服务业的精神持续完善整个生态链,从产品选型、开发设计、试产到量产升级,雅特力配备齐全的选型工具、开发板、BSP、烧录工具、可靠度测试报告等软硬件资源,同时官网提供了大量的应用笔记, 并且支持Keil, IAR, eclipse, RT-Thread Studio等IDE平台与RT-Thread OS, FreeRTOS及LittlevGL等OS/GUI平台。

活动现场,雅特力还展示了包缝机双电机控制、激光雷达、UPS电源、工业变频控制器等十余款应用方案,大会现场人头攒动,吸引了众多电子行业人士前来参观交流。

“雅特力携高性能AT32

“雅特力携高性能AT32

“雅特力携高性能AT32

“雅特力携高性能AT32

“雅特力携高性能AT32

来源:AT32 MCU 雅特力科技
免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理(联系邮箱:cathy@eetrend.com)。

围观 31

8月26日,由Aspencore主办的全球MCU生态发展大会在深圳圣淘沙酒店圆满落幕,本次会议以“把握「芯」基建,共绘MCU生态”为主题,汇聚了众多微控制器领域的技术和应用专家,共同探讨最新处理器技术、边缘AI、新兴应用和生态发展等热门议题。

雅特力业务处长陈佳延在大会发表了题为“雅特力AT32 MCU产品布局与性能突破”的演讲,详细全面的介绍了雅特力最新产品布局,及AT32 MCU在工业控制、汽车电子、商务及消费领域的热门应用。

“AT32

为了满足行业发展及更多用户的多样化需求,雅特力不断进行技术创新,多领域发展完善产品矩阵。即将推出的AT32F425,为超值型MCU产品家族再添一员“大将”,这将是继AT32F421之后推出的第三款超值型MCU,是USB OTG MCU的极致性价比之选。雅特力不仅在原有主流型、超值型MCU产品线的基础上持续开发新产品,还即将拓展高性能、低功耗及无线型三条产品线。其中最受关注的产品当属蓄势待"发"的AT32F435和AT32F437,这两款高效能MCU预计将于今年第四季度正式与大家见面,工作主频可达288 MHz,创造了通用型32位Cortex®-M4 MCU的最高主频运算效能,可实现更快的响应速度和更复杂的算法,满足用户更高性能需求。

雅特力从用户实际需求出发,提供全方位的生态支持,AT32 MCU各个系列产品从产品选型、开发设计、试产到量产升级,配备齐全的选型工具、开发板、BSP、烧录工具、可靠性测试报告等软硬件资源,提供给工程人员便利性,极大的缩短了开发时间。

“热门应用方案
热门应用方案

雅特力在布局产品矩阵的同时,也不断拓展应用领域,除了消费和商务等基础领域,AT32 MCU目前已经大量应用到了工控、汽车电子、电机等更高端领域,出货量也不断创新高。此次会议,陈佳延重点介绍了AT32 MCU在这些领域的热门应用方案,包括工业缝纫机、4G-5G基站控制、电梯、ADAS、光伏、数字电源、串口服务器、安防、电竞鼠标键盘及高速吸尘器等。雅特力沉稳布局、矢志前行,产品品质和性能也在大量应用中也得到了进一步验证和肯定。

“雅特力携高性能AT32

除了精彩的演讲,雅特力还在活动现场首次公开展示了最新的AT-SURF-F437和AT-Link Family,以及基于AT32 MCU开发的十余款应用方案,吸引了大批观众驻足参观交流,现场人气高涨。

“雅特力携高性能AT32

“雅特力携高性能AT32

来源:雅特力科技
免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理(联系邮箱:cathy@eetrend.com)。

围观 29

页面

订阅 RSS - AT32 MCU