学习地址
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寄存器
堆栈的特性 用来做数据交换
中断和轮询
什么是中断
中断的允许/禁止控制
中断的标志位 IF
控制中断的开关
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。在汇编语言中,用助记符代替机器指令的操作码,用地址符号或标号代替指令或操作数的地址。在不同的设备中,汇编语言对应着不同的机器语言指令集,通过汇编过程转换成机器指令。特定的汇编语言和特定的机器语言指令集是一一对应的,不同平台之间不可直接移植。
中断的工作流程
中断的堆栈占用
中断来后,CPU自动将这些寄存器压入堆栈
效率的平衡 可以手动压
中断向量表
中断优先级
中断嵌套
中断嵌套时的堆栈
对内存比较大的开销,又可能发生堆栈溢出,嵌套有限。
中断的潜在风险
中断是独立的,为外部元素所触发的函数,快速实时响应一些事情,并且可能由硬件的通知打断任意位置的main函数,依赖堆栈保留现场,但内存里面全局变量是不会被改写的。
3.5 复位、时钟、存储器和总线
中断向量表
0000:堆栈指针向量 ARM厂商 堆栈指针CPU内部寄存器初始地址 SP
0004:开发工具的入口地址填写在这,上电后CPU自动从这里加载,入口函数最后一条指令就是main PC
RAM堆栈 返回地址 临时变量
内部总线接口
CPU内部的寄存器通过指令就可以实现
CPU按地址看外面的
CPU除了独立的时钟和复位用电路连接外,通过总线以地址的视角看待
区别CPU内部寄存器通过指令访问,而是在外部寄存器通过地址访问,电路与编程的接口