伊宁市住房与城乡建设局网站,小程序登录怎么退出账号,前端网站开发心得体会,wordpress 必装插件一、ARM课程大纲 二、ARM课程学习的目的
2.1 为了找到一个薪资水平达标的工作#xff08;单片机岗位、驱动开发岗位#xff09; 应用层(APP) 在用户层调用驱动层封装好的API接口#xff0c;编写对应的API接口 ----------------------------------------------------…一、ARM课程大纲 二、ARM课程学习的目的
2.1 为了找到一个薪资水平达标的工作单片机岗位、驱动开发岗位 应用层(APP) 在用户层调用驱动层封装好的API接口编写对应的API接口 ------------------------------------------------------------------- 嵌入式工程师需要做的事 驱动层(DRIVER) 1、分析电路图为了查看对应外设的硬件连接核引脚 2、分析芯片手册为了控制对应的外设寄存器实现外设的工作 3、编写驱动代码HAL_GPIO_WritePin -------------------------------------------------------------------- 硬件层HAL FS-MP1A 主控芯片STM32MP157AAA Cortex-A7核 * 2 Cortex-M4核 | | LED FAN BEEP 温湿度传感器 心率/脉搏传感器 应用层(APP) 用户/程序员是需要看懂硬件的电路图给对应引脚高电平还是低电平然后调用API接口 就能实现对硬件的控制 ------------------------------------------------------------------- 驱动代码对应的API接口由芯片厂商ST公司已经封装好了 驱动层(DRIVER) 芯片厂商封装的是标准库一些公司使用的HAL库 -------------------------------------------------------------------- 硬件层HAL FS-MP1A 主控芯片STM32MP157AAA Cortex-A7核 * 2 Cortex-M4核 | | LED FAN BEEP 温湿度传感器 心率/脉搏传感器 2.2 为了之后的系统移植和驱动开发打基础
三、ARM课程学习完的目标 1、熟悉ARM相关的概念寄存器、串行接口 2、能看懂汇编指令汇编指令的格式、功能 3、能看懂电路图/原理图 4、能够独立分析纯英文芯片手册尽量 四、ARM相关的概念
4.1 机器码 机器计算机 / 芯片能够识别的以 0和1 组成的编码 gcc分布编译中汇编过程最后生成的文件 4.2 汇编指令 通过gcc分布编译中的编译流程将c代码转换为汇编代码 a b c ---------------------------------------------- add r0, r1, r2 由c代码生成的对应的汇编指令 4.3 汇编指令集 多条汇编指令组成的集和 如x86指令集、arm指令集、Mips指令集。。。。。 4.4 架构 可以说是汇编指令集的别名也可以说是由不同的汇编指令集设计出了不同的架构 ARM汇编指令集 设计出了 ARM架构 X86汇编指令集 设计出了 X86-64/32J架构 Mips汇编指令集 设计出了 Mips架构 ARM-V1~V6架构已经被淘汰了 ARM-V7架构32位的架构支持32位的汇编指令集 ARM-V8架构既支持32位的汇编指令集也支持64位的汇编指令集向下兼容V7架构 ARM-V9架构最新的架构未来十来的主流架构 四大主流的芯片架构 架构 ARM架构 x86架构 RISC-V架构 Mips架构 芯片厂商 ST inter nivida 龙芯中科龙架构 芯片厂商ST意法半导体、STM32、高通骁龙8gen3、TI德州仪器、NXP恩智浦、台积电、MTK联发科 华为海思、小米澎湃、阿里平头哥、中芯国际、兆易创新GD32 4.5 内核 由不同的架构设计出来不同的内核 ARM公司基于不同的ARM架构设计出了不同的内核 Cortex-M核 - MCU 单片机只能运行小型操作系统FreeRTOS Cortex-A核 - MPU可以运行大型的操作系统Linux操作系统 4.6 处理器 CPU中央处理器 MCU微控制器 MPU微处理器 SOCsystem on-chip片上系统 ARM公司在创建前期是做芯片开发自研内核、自研芯片但是到了后期ARM公司不在生产芯片只做内核的授权 ARM公司基于不同的ARM架构v7架构、v8架构、v9架构设计出不同的内核Cortex-M核、Cortex-R核、Cortex-A核 ARM公司将这些内核授权给不同的芯片厂商芯片厂商在基于这些内核设计出不同的芯片 企业购买这些芯片焊制PCB板加上很多的外设做出一个产品 如ARM公司把Cortex-A核和Cortex-M核授权给ST意法半导体公司ST公司基于这两个内核设计出了STM32MP157AAA的芯片 华清远见从ST公司购买了STM32MP157AAA的芯片这款芯片华清远见的研发部焊制了PCB板并外加了很多外设最终得到了FS-MP1A产品 五、ARM公司的历史 里程碑1——ARM成立 ARM前身为艾康电脑Acorn于1978年英国剑桥成立大学的孵化物。 1980年代晚期苹果开始与艾康合作开发新版ARM核心。 1985年艾康开发出全球第一款商用RISC精简指令集处理器即ARM1针对于PC市场还没有嵌入式呢 1990年艾康财务危机受苹果和VLSI最早做超大规模集成电路的公司的投资成立独立子公司Advanced RISC MachinesARMARM公司正式成立面世。 里程碑2——嵌入式RSIC处理器 1991年ARM推出第一款嵌入式RISC处理器即ARM6。 1993年发布ARM7。 1997年发布ARM9TDMI三星2440基于此内核。 1999年发布ARM9E增强型ARM9。 2001年ARMv6架构。 2002年发布ARM11微架构。 里程碑3——微控制器 2004年发布ARMv7架构的Cortex系列处理器同时推出Cortex-M3。 2005年发布Cortex-A8处理器。 2007年发布Cortex-M1和Cortex-A9 2009年实现Cortex-A9、发布Cortex-M0 2010年推出Cortex-M4(F)、成立LinaroARM公司牵头成立的公共组织专门做ARM处理器在Linux平台上的一些软件的开发和移植推出Cortex-A15 MPcore高性能处理器性能比较高了但是发热量很大。 里程碑4——64位处理器时代 2011年推出32位 Cortex-A7 处理器ARMv8发布 2012年开始推出64位处理器。 推出 Cortex-M0、ARM 首款64位处理器架构 Cortex-A53、Cortex-A57 架构。全球第一款64位ARM手机iPhone5s。 2013年推出32位 Cortex-A12 处理器架构 2014年推出 Cortex-M7(F) 微控制器架构32位 Cortex-A17处理器架构。 2015年推出64位 Cortex-A35、Cortex-A72 处理器架构。 2016年推出 Cortex-M23 、Cortex-M33(F) 微控制器架构32位 Cortex-A32 处理器架构64位 Cortex-A73 处理器架构。 2017年推出64位 Cortex-A55 、Cortex-A75 处理器架构。 2018年推出微控制器 Cortex-M35P64位 Cortex-A76 处理器架构。 六、精简指令集和复杂指令集
6.1 精简指令集 指令相对来说比较简单易懂 特点精简指令集的指令宽度和指令周期固定 指令宽度精简指令集下的每一条指令所占用的空间固定ARM指令集的指令宽度为32位4个字节 指令周期执行一条汇编指令的时间固定 精简指令集ARM指令集、RISC指令集、Mips指令集、PowerPC指令集 上图现象说明 ARM处理器默认使用的是Thumb指令集 Thumb指令集是ARM指令集的子集儿子 Thumb指令集的指令宽度默认为16位2个字节同时存在Thumb2指令集的指令宽度为32位4个字节 ARM指令集的指令宽度默认为32位4个字节 6.2 复杂指令集 特点复杂指令集的指令周期和指令宽度不固定 x86指令集是复杂指令集 七、框图总结 八、寄存器相关概念 六大存储类型auto static const extern volatile register volatile(异变)的作用防止编译器对代码进行优化直接从内存中读取或者写入变量值 register(内核寄存器)的特点访问速度快、不允许取地址只能通过寄存器编号进行访问R0-R15 核内寄存器在内核中的寄存器没有地址只能通过编号进行访问 核外寄存器是内存地址的映射存在地址可以通过地址访问 定义变量的过程 auto int a 存储类型 数据类型 变量名 寄存器存储器是一块可以用于存储的特殊空间 九、ARM处理器的工作模式
9.1 Cortex-M核的工作模式 线程模式运行main函数 异常模式对应不同的异常的异常处理函数 9.2 Cortex-A核的工作模式 十、寄存器的位置 十一、寄存器组织 根据上图所示 1、每个小方块代表一个寄存器每个寄存器占32位4个字节的空间 2、USER、SYS模式下有17个寄存器 3、FIQ、IRQ、SVC、ABT、UDF、MON模式下有18个寄存器 4、HYP模式下有19个寄存器 5、可控制的寄存器一共有43个 注意 1、深色字体是实际存在的寄存器浅色字体是虚拟的寄存器 2、白色底的小方块代表着公用寄存器蓝色底的小方块代表着私有寄存器 公有寄存器这个寄存器可以被所有模式使用 私有寄存器这个寄存器只能被对应的模式使用 十二、特殊功能寄存器重要
12.1 R13寄存器 R13寄存器 --- spthe stack pointer寄存器 --- 栈指针寄存器 SP寄存器的作用保存了一块栈空间的地址 在ARM中栈空间的作用压栈保存现场、出栈恢复现场 不同场景下的栈 1、c语言中的栈区0-4G虚拟内存中的一块空间用于保存局部变量、函数参数等。。。。。 2、数据结构中的栈是一种典型的数据结构用于保存数据 3、ARM中的栈保存了一块栈空间中的地址 不管栈应用在任何场景下都是一种存储数据的方式并且所有的栈都遵循FILO先进后出 12.2 R14寄存器 R14寄存器 --- LRthe linking register寄存器 --- 链接寄存器 LR寄存器的作用用于保存函数的返回地址 12.3 R15寄存器 R15寄存器 --- PCthe program counter寄存器 ----- 程序计数寄存器 PC寄存器的作用用于保存下一条取值指令的地址 12.4 CPSR寄存器 CPSR寄存器 -------- the current program statue register ------ 当前程序状态寄存器 CPSR寄存器的作用用于保存当前程序的状态 12.5 SPSR寄存器 SPSR寄存器 -------- the saved program statue register ----- 备份程序状态寄存器 SPSR寄存器的作用用于备份程序的状态 12.6 CPSR寄存器中的位高4位、低8位 N[31]位 负数标志位 当指令的执行结果为负数时N位被置1否则清0一般用于比较大小 Z[30]位 零标志位 当指令的执行结果为0时Z位被置1否则清0一般用于判断两个数是否相等 C[29]位 进位/借位标志位 进位 当指令的执行结果需要进位时当低32位数向高32位数进位时C位被置1否则清0 借位 当指令的执行结果需要借位时当高32位数向低32位数借位时C位被清0否则置1 V[28]位 符号标志位 当符号位发生变化时V位被置1否则清0 I[7]位 IRQ普通中断屏蔽位 I 0, 不屏蔽IRQ I 1, 屏蔽IRQ F[6]位 FIQ快速中断屏蔽位 F 0, 不屏蔽FIQ F 1, 屏蔽FIQ T[5]位 状态位 T 0时, 进入ARM状态相当于使用ARM汇编指令集 T 1时, 进入Thumb状态相当于使用Thumb汇编指令集 M[4:0]位 模式位 10000 User mode; 10001 FIQ mode; 10011 SVC mode; 10111 Abort mode; 11011 Undfined mode; 11111 System mode; 10110 Monitor mode; 10010 IRQ;