AT32内核架构概述
AT32F4系列产品是基于Cortex-M4F处理器架构,该处理器是一款低功耗处理器,具有低门数,低中断延迟和低成本调试的特点。支持包括DSP指令集与浮点运算功能,特别适合用于深度嵌入式应用程序需要快速中断响应功能。Cortex-M4F处理器是基于ARMv7-M架构,既支持Thumb指令集也支持DSP指令集。
下图为Cortex-M4F处理器的内部框图,请参阅《ARMCortex-M4 技术参考手册》了解关于Cortex-M4F更详尽信息。
图1. AT32 Cortex-M4F内部框图
本文主要就M4内核自带的位带、硬件浮点运算单元和滴答时钟中断功能进行基础讲解。
案例 位带操作
功能简介
利用位带操作,可以使用普通的加载/存储操作来对单一比特进行读写访问。在Cortex-M4F中提供了两个位带区:SRAM最低1M字节空间和外设区间的最低1M字节空间。这两个区中的地址除了可以像普通存储器一样访问外,还可以通过它们各自的位带别名区来快捷访问这两个区中任意地址的任意比特位,位带别名区将位带区每个比特膨胀成一个32位的字。当你访问位带别名区的一个地址时,等同于直接访问位带区的一个比特位。
图2.位带区与位带别名区的膨胀关系图A
图3. 位带区与位带别名区的膨胀关系图B
位带区:支持位带操作的地址区 位带别名区:对别名区地址的访问最终作用到位带区的访问上 在位带区中,每个比特都映射到别名地址区的一个字(这是只有LSB有效的字)。当一个位带别名区地址被访问时,会先把该地址变换成位带区地址。对于读操作,读取位带区地址中的一个字,再把需要的位右移到LSB,并把LSB返回。对于写操作,把需要写的位左移到对应的位序号处,然后执行一个比特级的“读-改-写”过程。
支持位带操作的两个内存区的地址范围为:
SRAM区中的最低1M字节:0x2000_0000~0x200F_FFFF 外设区间的最低1M字节:0x4000_0000~0x400F_FFFF 对于SRAM位带区的某个比特,如果所在字节地址为A,位序号为n(0<=n<=7),则该比特在别名区的地址为: AliasAddr=0x2200_0000+(A-0x2000_0000)*32+n*4 对于外设区间位带区的某个比特,如果所在字节地址为A,位序号为n(0<=n<=7),则该比特在别名区的地址为: AliasAddr=0x4200_0000+(A-0x4000_0000)*32+n*4 对于SRAM区中,位带区与位带别名区的映射如下表所示:
表1. SRAM区中的位带地址映射
对于外设区中,位带区与位带别名区的映射如下表所示:
表2. 外设区中的位带地址映射
位带操作的优越性最容易想到的是通过GPIO的管脚来单独控制每盏LED的点亮与熄灭。另一方面,也对操作串行接口提供很大的方便。总之,位带操作对于硬件I/O密集型的底层程序最有用处。位带操作还能简化跳转的判断。当跳转依据是某个位时,以前必须这样做:
读取整个寄存器 屏蔽不需要的位 比较并跳转现在只需要: 从位带别名区读取该位的状态 比较并跳转 使代码更简洁,这只是位带操作优越性的初步体现,位带操作还有一个重要的好处是在多任务以及多任务环境中,将以前的读-改-写需要的三条指令,做成了一个硬件级别支持的原子操作,消除了以前读-改-写可能被中断,导致出现紊乱的情况。
注意事项
1) 因各系列的外设IP地址排布的不同,AT32F421xx与AT32F425xx系列的GPIO外设基地址不在位带映射地址范围内。
资源准备
1) 硬件环境 对应产品型号的AT-START BOARD 2) 软件环境 projectat_start_f4xxexamplescortex_m4it_band
软件设计
1) 配置流程 SRAM位带操作
定义全局变量variables=0xA5A5A5A5,
对variables bit0的位带地址写0
检查variables是否修改为0xA5A5A5A4,如果是则表示操作成功
对variables bit0的位带地址写1
检查variables是否修改为0xA5A5A5A5,如果是则表示操作成功
对variables bit16的位带地址写0
检查variables是否修改为0xA5A4A5A5,如果是则表示操作成功
对variables bit16的位带地址写1
检查variables是否修改为0xA5A5A5A5,如果是则表示操作成功
对variables bit31的位带地址写0
检查variables是否修改为0x25A5A5A5,如果是则表示操作成功
对variables bit31的位带地址写1
检查variables是否修改为0xA5A5A5A5,如果是则表示操作成功
外设位带操作
对LED2对应GPIO ODT寄存器bit位的位带地址写0
对LED2对应GPIO ODT寄存器bit位的位带地址写1
循环执行上述操作,实现LED toggle功能
2) 代码介绍
main函数代码描述
宏定义内容描述
实验结果
SRAM位带操作:如果不满足预期,LED4翻转。
外设位带操作:如果满足预期,LED2翻转。
案例 硬件浮点运算单元
功能简介
FPU即浮点运算单元(Float Point Unit)。浮点运算,对于定点CPU(没有FPU的CPU)来说必须要按照IEEE-754标准的算法来完成运算,是相当耗费时间的。而对于有FPU的CPU来说,浮点运算则只是几条指令的事情,速度相当快。
AT32F4属于Cortex M4F架构,带有32位单精度硬件FPU,支持浮点指令集,相对于Cortex M0和Cortex M3等,高出数十倍甚至上百倍的运算性能
注意事项
1) 由各系列应用方向及成本的综合考虑,AT32F415xx、AT32F421xx和AT32F425xx系列不支持硬件浮点运算单元。
资源准备
1) 硬件环境 对应产品型号的AT-START BOARD
2) 软件环境
projectat_start_f4xxexamplescortex_m4fpu
软件设计
1) 配置流程 FPU功能的开启必须要编译器和代码都开启才可以。若只开启编译器FPU,程序会进入 hardfault;若只开启代码中FPU,编译器不会编译出FPU的代码指令。
编译器上开启FPU功能
IAR开启FPU方式如下图
图4. IAR开启FPU方式
MDK开启FPU方式如下图
图5. MDK开启FPU方式
代码中开启FPU功能
在system_at32f4xx.c文件中void SystemInit (void)函数确保有如下粗斜体代码
执行Julia算法函数
比较开启和不开启 FPU 功能的 Julia 运算速度。
2) 代码介绍
main函数代码描述
实验结果
编译器上开启FPU功能,观察LED4翻转速度
编译器上关闭FPU功能,观察LED4翻转速度
对比以上两种情形LED4翻转速度区别
案例 系统滴答时钟中断
功能简介
系统嘀嗒定时器是一个24位递减计数器,递减至零可自动重载计数初值。可产生周期性异常,用作嵌入式操作系统的多任务调度计数器,或对于无嵌入式操作系统,可用于调用需周期性执行的任务。系统嘀嗒定时器校准值固定值9000,当系统嘀嗒时钟设定为9MHz,产生1ms时间基准。
资源准备
1) 硬件环境 对应产品型号的AT-START BOARD
2) 软件环境
projectat_start_f4xxexamplescortex_m4systick_interrupt
软件设计
1) 配置流程
配置systick时钟源
配置systick重载值并开启systick中断
在void SysTick_Handler(void)函数中添加应用代码
2) 代码介绍
main函数代码描述
实验结果
本应配置的是1 ms systick中断,每进200次systick中断LED2翻转一次,因此应该观察到的现象是LED2以200ms一次的频率进行翻转。
审核编辑:汤梓红
-
mcu
+关注
关注
138文章
10951浏览量
337353 -
内核
+关注
关注
3文章
920浏览量
39077 -
Cortex-M4F
+关注
关注
0文章
4浏览量
7473 -
AT32
+关注
关注
1文章
27浏览量
1296
相关推荐
如何实现M4和HIFI4核心之间的通信?
与STM32MP1中嵌入M4内核最接近的STM32 MCU是什么?
如何更快的实现OpenAMP与M4内核的通信?
【名单公布】瑞萨RA4M2(Cortex-M33内核MCU)物联网网关设计挑战赛初审通过名单
有没有办法用cubeMX在cortex M4侧映射外部RAM呢?
如何禁用STM32MP1 cortex M4内核?
请问M7内核运行时对M4有什么影响呢?
全球最强性能Cortex-M0 MCU诞生!
DS13105_多协议 LPWAN 32 位 Arm® Cortex®-M4 MCU、LoRa®、(G)FSK、(G)MSK、BPSK、高达 256KB 闪存、64KB SRAM
DS12960_Arm® Cortex®-M4 32 位 MCU+FPU、170 MHz / 213 DMIPS、128 KB 闪存、32 KB SRAM、丰富的模拟、数学加速器、AES
DS11584 STM32L4A6xG 超低功耗 Arm® Cortex®-M4 32 位 MCU+FPU数据手册
Arm® Cortex®-M4 32 位 MCU+FPU,170 MHz /213 DMIPS,高达 128 KB 闪存,32 KB SRAM,丰富的模拟,数学加速器
DS13047 基于Arm®的Cortex®-M4多协议无线32位MCU带FPU、Bluetooth® 5.3或802.15.4无线电解决方案
DS13258 基于Arm®的Cortex®-M4多协议无线32位MCU,带FPU,蓝牙®5.3无线电解决方案
DS11929 基于Arm®的多协议无线32位MCU Cortex®-M4 带有FPU、Bluetooth® 5.3和802.15.4无线电解决方案
DS13259 基于Arm®的Cortex®-M4带FPU,蓝牙®5.3无线电的多协议无线32位MCU解决方案
RM0434 基于 Arm® 的 Cortex®-M4多协议无线 32 位 MCU ,带有 FPU、Bluetooth® 低功耗和 802.15.4 无线电解决方案
RM0478 基于Arm® Cortex®-M4多协议无线32位MCU Bluetooth5.2解决方案
AT32讲堂034 | AT32 MCU Cortex M4内核入门指南
国内MCU厂商90%都采用的Arm 的Cortex-M系列内核,优点在哪?
干货:对比看看Arm推出的10款Cortex-M系列MCU内核IP
Arm 10款 Cortex-M系列MCU内核对比
基于Arm Cortex-M4 32位RISC内核的STM32G473简介
基于Arm Cortex-M4 RISC内核的通用微控制器GD32E103xx数据手册
非常实在的M4内核32位MCU
记录对TI M4C129 MCU的DMA操作
Arm Cortex-M4 Technical Refere
其他M3内核MCU的库和AT32 pack造成hardfault怎么办呢
兆易创新 GD32 Arm® MCU 快速入门指南
cortex m3/m4处理器的复位设计资料分享
雅特力发布AT32F425系列Cortex®-M4 MCU
TI M4(Cortex M4) MCU DMA 操作
cortex-M3 M4使用THUMB指令
其他M3内核MCU的库和AT32 pack造成hardfault
熟悉一下M4的内核和华大的MCU
STM32MP157(M4内核)使用STM32cubeide软件 模拟spi 驱动DAC8560产生波形
STM32MP157学习笔记(一) ---- M4内核开发基础知识
cortex m3/m4处理器的复位设计
Cortex-M3处理器内核与基于Cortex-M3的MCU关系
Cortex-M7 + M4内核的MCU性能及特点是什么
Cortex-M7 + M4内核的MCU资料大合集
国产MCU,Cortex-M和RISC-V核心
国产MCU,Cortex-M和RISC-V核心
ARM Cortex-M4内核MCU
基于Cortex M4内核架构的STM32F407
STM32F407ZET6 内核:Cortex-M4
Cortex-M入门资料和书籍分享
ARM Cortex-M4内核MCU相关资料下载
ARM Cortex-M3/M4微控制器最大效率设计三秘诀资料下载
Cortex-M7和Cortex-M3/M4的复位序列有什么不一样的吗?
FAQ0089 AT32工程在M3内核芯片上运行 使用注意事项
忘掉MCU吧 解析Cortex-M4的时代 8
Recognize AT32 MCU内核版本、MCU厂商及型号的识别
关于GD32F450系列Cortex®-M4 内核MCU的分析和介绍
关于GD32F330/350系列超值型Cortex®-M4 MCU的性能分析和应用
请问怎么把CORTEX M3的uCOS II代码移植到CORTEX M4芯片上?
是否可以使用平台电缆USB II通过JTAG编程ARM Cortex M4或任何其他ARM内核?
ST 意法 – 提供卓越图形和显示功能的Cortex-M4内核的MCU
Cortex-MO+和M4之间的访问差异
STM32F413/423 基于 Arm® 内核的 32 位高级 MCU
介绍STM32F4在Cortex-M4内核和Cortex-M3内核方面的优势
cortex -m4技术问题,请问CORTEX M4芯片被锁了,怎么解决?
Cortex系列M0-4简单对比
兆易创新发布多款GD32F3系列主流型Cortex®-M4 MCU,全面助力产业升级
兆易创新推出GD32F403系列高性能基本型Cortex-M4 MCU
图书推荐:《ARM Cortex-M4微控制器原理与应用:基于Atmel SAM4系列》
ARM Cortex-M4内核MCU的优势在哪里
ARM Cortex M3/M4微控制器最大效率设计三秘诀
新唐科技在16个城市举办 NuMicro™ Family ARM® Cortex™-M0/M4 32位...
TI推出业界首款65nm Cortex M4 MCU系列Stellaris
AT32 MCU Cortex M4内核入门指南
0
评论