| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 嵌入式 -> arm第一天 -> 正文阅读 |
|
[嵌入式]arm第一天 |
二、ARM相关概念(重点) 2.1 汇编指令 执行一条汇编指令,可以完成某个特定的功能,例如add 2.2 指令集 很多条汇编指令的集合 2.3 架构 不同指令集的版本命名 1)armv1~armV9架构 2)armv1~armv6架构已经淘汰 3)armv7~armv8架构市面上使用比较多 4)armV9架构:2021年刚刚上市 2.4 内核 根据不同的arm架构,设计出不同的arm内核 arm公司不生产芯片,它只是做技术授权,将相应的内核,卖给相应厂商 2.5 SOC soc:system on chip 片上系统 芯片厂商拿到了arm的授权之后,添加自己需要的外设,就构成了SOC(芯片)
三、ARM发展史 3.1里程碑1------ARM成立 ARM前身为艾康电脑(Acorn),于1978年,英国剑桥成立,大学的孵化物。 1980年代晚期,苹果开始与艾康合作,开发新版ARM核心。 1985年,艾康开发出全球第一款商用RISC处理器,即ARM1,针对于PC市场,还没有嵌入式呢!!! 1990年,艾康财务危机,受苹果和VLSI(最早做超大规模集成电路的公司)的投资,成立独立子公司:Advanced RISC Machines(ARM), ARM公司正式成立面世。 3.2 里程碑2------嵌入式RISC处理器 1991年,ARM推出第一款嵌入式RISC处理器,即ARM6。 1993年,发布ARM7。 1997年,发布ARM9TDMI,三星2440基于此内核。 1999年,发布ARM9E,增强型ARM9。 2001年,ARMv6架构。 2002年,发布ARM11微架构。 3.3 里程碑3------微控制器 2004年,发布ARMv7架构的Cortex系列处理器,同时推出Cortex-M3。 2005年,发布Cortex-A8处理器。 2007年,发布Cortex-M1和Cortex-A9 2009年,实现Cortex-A9、发布Cortex-M0 2010年,推出Cortex-M4(F)、成立Linaro (ARM公司牵头成立的公共组织,专门做ARM处理器在Linux平台上的一些软件的开发和移植), 推出Cortex-A15 MPcore高性能处理器(性能比较高了,但是发热量很大哦)。 3.4 里程碑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-M35P;64位 Cortex-A76 处理器架构。 四、ARM产品分布(了解) 4.1 cortex-A 高端处理器,可以运行linux操作系统 4.2 cortex-R 只要针对于实时性能,主要应用于汽车电子方面较多 4.3 cortex-M 主要应用于物联网上,裸机开发 五、RISC和CISC区别(重点) 5.1 RISC精简指令集 RISC精简指令集:Reduced Instruction Set Computerr---->编译生成:ARM架构 概念:在复杂指令集中选取一些比较常用或者简单的指令集 特点:指令的周期和指令的宽度是固定的 指令周期:执行一条指令所需要的时间 指令宽度:一条机器码占用的代码段空间 验证方式: $:编译代码:arm-linux-gnueabihf-gcc hello.c $生成反汇编:arm-linux-gnueabihf-objdump -D a.out > hello.dis arm指令集:一条指令占用4个字节空间(arm-linux-gnueabihf-gcc -marm hello.c) thumb指令集:一条指令占用2个字节空间 5.2 CISC复杂指令集 CISC复杂指令集:Complex Instruction Set Computer---->编译生成:X86架构 概念:复杂指令集更注重指令的功能性 特点:指令的周期和指令的宽度是不固定的 验证方式: $:编译代码:gcc hello.c $生成反汇编:objdump -D a.out > hello.dis 六、数据类型约定 6.1 arm-V7架构 数据类型 位数 char(字节) 8bits half word(半字) 16bits word(字) 32bits double word(双字) 64bits 6.2 arm-V8架构 数据类查重型 位数 char(字节) 8bits half word(半字) 16bits word(字) 32bits double word(双字) 64bits qual word(全字) 128bits 七、arm-V7架构和arm-V8架构区别 1.arm-V7架构属于32位架构,arm-V8架构属于64位架构,arm-V8架构向下兼容arm-V7架构 2.arm-V7架构一条指令占用4字节空间,arm-V8架构一条指令占用4字节空间 3.arm-V7架构寻址空间:2^32 arm-V8架构寻址空间:2^64 八、arm处理器工作模式(重点) 1.arm处理器一共有七种工作模式,cortex处理器一共有8种工作模式(monitor工作模式:安全监控模式) 2.在特定的工作模式下,执行特定的代码,完成特定的功能 3.这几种工作模式可以进行切换,可以通过软件编写代码来进行切换 4.系统上电处于SVC模式(SWI软中断指令) 九、ARM寄存器组织(重点) static:1.限定作用域2.延长生命周期 extern:外部引用 volatile:1.防止编译器对代码进行优化2.去内存中取值,而不是取cache中进行取值 9.1 寄存器 概念:寄存器是处理器内部的存储器,寄存器个数有限,寄存器是没有地址的,寄存器访问通过编号进行访问 9.2 总结 1.每一个小方块代表一个寄存器,一个寄存器为32位(4个字节); 2.每种工作模式下都有自己的寄存器,user模式和system模式共用一套寄存器 3.寄存器白色背景为公有寄存器,寄存器背景为灰色为私有寄存器 如果某个模式下,没有私有寄存器,则可以访问公有寄存器 如果某个模式下,有私有寄存器,则不可以访问公有寄存器 4.寄存器的空间有限,寄存器的个数有限,寄存器的访问是通过编号进行访问的,r0~r15,CPSR,SPSR 5.arm处理器寄存器个数:37个寄存器 cortex处理器寄存器个数:43个寄存器 十、特殊功能寄存器(重点) 10.1 sp--->the stack pointer (r13)别名sp:栈指针寄存器 作用:用来指向栈空间的地址 10.2 lr--->the linking register r14别名lr:链接寄存器 作用:保存函数的返回地址 10.3 pc--->program counter r15别名PC:程序计数器 作用:保存当前取址指令的地址 10.4 cpsr-->currented program statued register cpsr:当前程序状态寄存器 10.5 spsr-->saved program statued register spsr:保存程序状态寄存器,对CPSR进行备份 十一、CPSR寄存器详解(重点) 1.N[31]:指令的执行结果为负数,N位会被自动置1,否则清0 2.z[30]:指令的执行结果为零,z位会被自动置1,否则清0 3.C[29]: 加法:产生进位,C位会被自动置置1,否则清0 进位:低32位寄存器,向高32位寄存器进行进位 减法:产生借位,C位会被自动置清0,否则置1 借位:低32位寄存器,向高32位寄存器进行借位 4.V[28]:符号位发生变化,V位会被自动置置1,否则清0 5.I[7]:IRQ中断屏蔽位 I=1:中断屏蔽 I=0:不中断屏蔽 6.F[6]:FIQ中断屏蔽位 F=1:中断屏蔽 F=0:不中断屏蔽 7.T[5]:状态位 T=0:ARM状态,执行arm指令集 T=1:thumb状态,执行thumb指令集 8.M[4:0]:模式位 10000 User mode; 10001 FIQ mode; 10011 SVC mode; 10111 Abort mode; 11011 Undef mode; 11111 System mode; 10110 Monitor mode; 10010 IRQ mode; 十二、指令流水线(了解) 作用:提高代码的执行效率 12.1 取址器 根据PC寄存器中的值,完成取址的操作 12.2 译码器 翻译指令的执行功能,给到对应的执行器 12.3 执行器 执行一条指令,完成某个特定的功能,并将指令的执行结果写到对应的寄存器中
|
|
嵌入式 最新文章 |
基于高精度单片机开发红外测温仪方案 |
89C51单片机与DAC0832 |
基于51单片机宠物自动投料喂食器控制系统仿 |
《痞子衡嵌入式半月刊》 第 68 期 |
多思计组实验实验七 简单模型机实验 |
CSC7720 |
启明智显分享| ESP32学习笔记参考--PWM(脉冲 |
STM32初探 |
STM32 总结 |
【STM32】CubeMX例程四---定时器中断(附工 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 | -2024/12/28 17:33:52- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |
数据统计 |