首页 > 编程知识 正文

arm嵌入式系统基础教程 周立功(ARM微控制器与嵌入式系统 基础知识)

时间:2023-05-03 23:45:15 阅读:121766 作者:3760

学习地址

2.1基础概念机器计算

图灵:一个计算问题一定可以分解为有限个计算的集合(可计算性) 01

冯诺依曼结构:运算器、控制器、存储器、输入设备、输出设备

即使将模拟信号连续数字信号离散地量化为若干值也是失真的

一般为电压高低显示01

在ascll计算机上,所有数据分别以高电平和低电平表示1和0,因此在存储和运算中以二进制表示

学习氛围-认知不清晰

2.2从基础概念晶体管到CPU,一切都是数字化的

电压振幅表示0和1逻辑晶体管

逻辑-加法本身是减法(补数)

计算机中的存储元件由触发器组成,触发器只有两种状态。 也就是说,由于是“0”状态和“1”状态,所以只能向各信号线发送一个触发信息。 在一条信号线上连接多个触发器,根据需要将各触发器与信号线连接或断开,连接时传输“0”或“1”,断开时控制不影响信号线上的信息,需要特殊电路。 该电路是三状态输出电路,也称为三状态门。

添加三种状态的门制作取地址的操作

控制流量

组合逻辑时序逻辑

锁存存储器串联移位乘除法

边缘触发

概念CPU:16指令4位宽的CPU原型

助记符号(mnemonic )是人容易记忆、能够描述命令功能和命令操作数的符号,助记符号是表示命令功能的英语单词或其缩写。 汇编语言使用助记符号编写程序,因此比用机器语言的二进制代码编程更方便,编程过程在一定程度上得到了简化。 汇编语言的特点是用符号代替机器指令代码。 助记符与指令代码一一对应,基本保持了机器语言的灵活性。 使用汇编语言,可以面向机器,很好地发挥机器的特性,得到高质量的程序。

编程的本质:指令集的集合

2.3概念CPU、微控MCU和嵌入式系统

2.4八卦电脑史与创新摩托罗拉

6502乔布斯任天堂CPU指令集

68001 32位

C80

2.5纳入不同领域的不同系列

2.6 ARM的历史和MKL25Z128MCU

powerPC IBM摩托罗拉苹果联合设计的高性能,特别是高网络吞吐量和高性能汽车主设备

6800后代coldfire军工电表

苹果飞机的单片机

3.1 CPU的基本结构和运行

ALU的四个要素

标志在哪里?

操作数来自哪里

操作数在哪里?

运算结果在哪里?

运算结果在哪里?

谁掌握这一切运行?

获取命令:完整的CPU

在存储于存储器时钟定时电路的驱动下,依次对控制单元设置指令

PC程序计数器保持接下来执行的指令的地址

这些聪明的计算机是图灵机的高级抽象

3.2.1堆栈概念

堆栈指针寄存器

c语言的编译器可以帮我使用堆栈

a完成中央处理器

数:片上寄存器存储器

命令分析生成逻辑控制单元

在PC指针指导下,从程序的存储器地址空间逐一解析控制数据的流程和来源、进行的运算内容

函数调用嵌套调用跳栈

堆栈溢出

用户程序进入内核火焰,获得不应有的权限

指令集寄存器

公共汽车

3.2.2头体操

NOP汇编语言助记符

SP堆栈指针寄存器

PC pc指针寄存器读取下一个指令的地址

AB片内的数据寄存器组

堆栈初始化

堆栈

JSR跳至子函数SubFunc

跳转到下一个命令的地址

堆栈将被覆盖,不会销毁

RTS从子函数返回

1不能进行微妙的交换

3.3.1 ARM体系结构

R0-R12通用

R13堆栈

R14函数调用子函数返回地址

R15 PC程序指令地址

xPSR维持各种CPU的设置状态,容易读写

打开和关闭PRIMASK中断的

控制CPU的动作模式

打开/关闭故障屏蔽不可屏蔽中断以BASEPRI优先级关闭中断(M3 M4特有) ) )。

什么是32位程序状态寄存器各种状态

令跳转的依据

优先级控制寄存器

CPU的状态 用户态还是特权态

堆栈寄存器指向两个区域:操作系统内核 用户程序 任务跑飞的时候不会使操作系统崩溃

进程模式:mian函数
句柄模式:进中断出中断
M3/M4 分用户态 内核态

3.3.2 头脑体操

32bit

movs r4,#18 把18存到r4寄存器 #代表十进制





一级调用堆栈没有用 LR:末位为0 切换到38指令集 末位为1切换到arm指令集 返回0810(偶数有效)及下一位指令所在地址


pop 弹出一个置给r4寄存器
堆栈的特性 用来做数据交换

3.4.1 中断的概念和机制


中断和轮询

什么是中断


中断的允许/禁止控制

中断的标志位 IF

控制中断的开关

汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。在汇编语言中,用助记符代替机器指令的操作码,用地址符号或标号代替指令或操作数的地址。在不同的设备中,汇编语言对应着不同的机器语言指令集,通过汇编过程转换成机器指令。特定的汇编语言和特定的机器语言指令集是一一对应的,不同平台之间不可直接移植。

中断的工作流程

中断的堆栈占用


中断来后,CPU自动将这些寄存器压入堆栈
效率的平衡 可以手动压

3.4.2中断子程的概念和编程


中断向量表

中断优先级

中断嵌套

中断嵌套时的堆栈

对内存比较大的开销,又可能发生堆栈溢出,嵌套有限。

中断的潜在风险

中断是独立的,为外部元素所触发的函数,快速实时响应一些事情,并且可能由硬件的通知打断任意位置的main函数,依赖堆栈保留现场,但内存里面全局变量是不会被改写的。

3.5 复位、时钟、存储器和总线


中断向量表

0000:堆栈指针向量 ARM厂商 堆栈指针CPU内部寄存器初始地址 SP
0004:开发工具的入口地址填写在这,上电后CPU自动从这里加载,入口函数最后一条指令就是main PC




RAM堆栈 返回地址 临时变量

内部总线接口

CPU内部的寄存器通过指令就可以实现
CPU按地址看外面的

3.6 小结:MCU的总体架构

CPU除了独立的时钟和复位用电路连接外,通过总线以地址的视角看待

区别CPU内部寄存器通过指令访问,而是在外部寄存器通过地址访问,电路与编程的接口



版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。