STMCU小助手
发布时间:2021-11-22 21:03
|
1.ARM架构简单介绍 - Q& k1 G ^3 U 市场上成百上千种的 ARM 芯片,如果我们去看它们的内核,却只有不多的几种。 从时间上来看,从1985年设计的 26 位地址总线的 ARMv1, 到 ARMv2, 一直发展到最近支持64位地址总线的 ARMv8。. S9 h, ?1 V' A j% b% W ! e' w5 r" k# [* ~7 S7 |$ X 最近这几年,在每一代 ARMvx 核心的基础上,根据不同的应用场景,又做了扩充或裁剪,形成三大架构: * |; f( {5 K% K$ E6 s ]) j8 e A(Applications) 高性能,一般需要运行Linux等操作系统。/ h5 A& }' X3 ~) | R(Real-time) 需要实时处理的系统,一般应用与网络处理器,嵌入式控制系统。) W9 `3 _! D0 ^1 y + h3 s; T* I+ x9 r- r% a$ e' V M(Microcontroller) 小体积,低功耗,一般应用于嵌入式系统。 ARMv1 - ARMv5 已经成为历史了。我们对最新的 ARMv6 - ARMv8 做一个简要区分: . q, T; n5 U9 F ARMv8-A 2 i) ^; V; R8 R9 ^! c" M ~8 a 高性能,支持64位指令集,同时兼容以前的32/16位指令集。针对安全应用引入Trustzone。 典型芯片如华为的麒麟系列,Kirin990 内部集成了4颗 Cortex-A76,4颗 Cortex-A55,每一颗频率都可以跑到 2GHz以上。同样高通的骁龙865也是集成8颗 ARMv8-A 架构的内核。 ARMv8-M/ S0 H% W" @9 r8 W$ X* n 针对嵌入式应用,支持32位指令集,兼容以前指令集。引入Trustzone。加解密运算通过硬件加速。- u! F L+ y4 B, A. x: q : |; c7 h1 `2 K; Z: J 典型芯片如 STM32L552 (Cortex-M33 内核)。主频可以跑到 110 MHz。 : ~" s4 x0 B+ j3 v: C% K ARMv7-A. r8 I) [' | n! ^4 @1 Y+ {5 r 支持 arm 和 Thumb 指令集,支持虚拟地址存储管理(Virtual Address Support in the Memory Management Unit)。跑 Linux 这类操作系统一般需要 MMU。这种架构主要面向复杂应用。' t$ m% r. J3 r 典型芯片如 STM32MP151 (Cortex-A7 内核) 。主频可以跑到 650 MHz。$ M5 k/ y3 r1 f. k ARMv7-R ( `/ b0 G4 ?4 C% r% R% R 支持 ARM 和 Thumb 指令集,但不支持虚拟地址管理。 典型芯片如 RM41L232 (Cortex-R4 内核)。主频可以跑到 80 MHz。6 b) v" s! f( c1 A1 S9 z ARMv7-M 只支持 Thumb 指令集。简化的流水线,更快的中断响应,针对嵌入式应用。/ L" n: B. n( L# k# g- C 典型芯片如 STM32F103 (Cortex-M3 内核)。主频可以跑到72MHz。8 Q: @. c% q/ K0 H/ k ! O" V' ^7 Z9 W$ E7 T0 } ARMv6-M ARMv6-M 是 ARMv7-M 的一个子集。架构做了进一步简化,但是保持和 ARMv7-M 兼容。& p8 { n# B! s4 h# @; Y + r4 _5 B) v, n7 A0 p$ w 典型芯片如 STM32F030 (Cortex-M0 内核)。主频可以跑到48MHz。$ K, | [! D3 N ARMv5 及以前版本/ C7 K3 }* `- h# U" z, ]7 W7 t2 @& q 早期架构,已不推荐使用。 ) ]+ y" O5 T9 I0 J 典型芯片: ARM926 (ARMv5) 2 G2 |: A8 k6 [# U9 h9 q- m. n ARM7TDMI (ARMv4)# v- ?- y- [# r0 e1 I 2.STM32F030芯片简介( a' V! S" v( z' M STM32F030 的内核,采用了 ARMv6-M 架构的 Cortex-M0。这个系列提供了从 16K Flash, 4K RAM, TSSOP20 封装,到 256K Flash, 32K RAM, LQFP64封装的多种选择。 同时这颗芯片集成了最常用的 UART,I2C, USART, ADC 等模块。在掌握了它的开发方法后,很容易拓展到其它的芯片。3 @1 j" f& A& T8 _+ }* d% A! F ! o- N5 W4 @+ I7 @- r) u 3.开发版 硬件可以选用官方的 NUCLEO-F030R8 ! Y: @, E+ C3 @) J! Q3 @
如图,这个板子由两部分组成。上半部分是一个集成的下载调试工具 ST-LINK/V2,下半部分板子带一颗 STM32F030R8T6,简单的 32k 晶振,两个按键和一个LED 指示灯。它把所有的引脚都用排针引了出来,可以方便用户扩展电路做评估。 上半部分的调试器部分可以从板子上切割下来单独使用,调试用户做的板子。用户也可以从网上单独购买 ST-LINK/V2调试器。/ O& j# F4 O5 ^ ~. I* { 4.集成开发环境(IDE) 对于 STM32F0/L0/G0, 在 ST 的官方网站上可以下载到正版免费的 Keil。 D% L/ S+ H+ ~+ C- B 9 d% U) ~9 V" D" C: Z# ~+ G1 R Arm Keil MDK for STM32F0, STM32L0 and STM32G0& Q) I1 ]/ q g : Z: N: b' @' e" Y* V) { 这个版本没有时间限制,但是代码有 32K 的限制,对一般应用来说也够了。 t- Q# @! P) X6 j* A
; E" O* ~% j+ t+ T3 d6 I K 5.软件代码# m9 D, g1 {; n, o5 g " N! C. h4 _) Y; E4 f! e2 S ST早期的代码都是基于 Standard Peripheral Library,最近ST的软件逐渐统一于 STMCube。它对软件进行了更科学的分层管理,更易于在不同的平台间移植。可以极大的缩短开发时间。如果是新项目,可以从 STMCube 入手。以前的软件库将逐渐淘汰。( x, L. ~' V+ [3 Z8 d( L 对于STM32F030来说,对应的是 STM32CubeF0,在官网可以直接下载:; @# o2 B' w4 H, p2 T0 Q0 d$ G
; T) [, m& {6 @* s8 j2 B" o2 h% A2 b . a/ t5 M1 K8 a7 U5 b1 Q* T |
微信公众号
手机版
感谢分享,学习了,期待更深入的:)
感谢分享~~~