嵌入式系统设计笔记

难点:第五章,第十章三级流水线组织,第十一章

第一章 嵌入式系统导论
1、ARM是RISC架构
2、Cortex,ARM11以后的产品使用Cortex命名,并分为A/R/M三类
3、ARM指令分为数据处理、数据传递、控制指令
4、CM 2835 在树莓派上使用到
5、嵌入式系统有很多的体系架构、多种处理器
6、RS232,传输距离15米,共模传输(容易受干扰),单点传输。RS485,传输距离上千米,差模传输,多点传输,可以组成分布式系统
7、嵌入式系统按复杂度有以下分类:循环轮询系统、有限状态机、前后台系统(就是中断,要重视现场保护和恢复)、单处理器单任务、多处理器多任务
8、单处理器单任务、单处理器多任务(各个任务宏观并行,微观串行)
9、多处理器多任务(宏观和围观上都是并行的,由操作系统调度)

第二章 树莓派概述
10、Rasberry 4b使用ARM Cortex A72 CPU,基于Linux系统,但也可以使用Windows IoT
11、DDR一种超快的RAM
12、必须要有SSH才能使用网络控制Raspberry
13、i2c总线可以很方便地驱动传感器,因此嵌入式系统连接传感器一般使用i2c。现在市面很多传感器也支持i2c
14、Rabpberry只有一个串口,默认是用来给内核进行串口输出的。如果要他用就需要关闭这个默认设置。

第三章 处理器设计导论
15、Linux 多用户、多任务、多线程、多CPU
16、Linux基本思想:一切都是文件夹;每个软件都有特定的用途
17、cisco处于微程序机器级,ARM处于机器语言级(写代码电脑处于汇编语言级的),操作系统虚拟机、汇编系统虚拟机、高级系统虚拟机、应用语言虚拟机。操作系统以上就是虚拟机
18、用户看不到的计算机体系结构:流水线结构、高速缓存(cache)、步行表硬件(table-walking)、转换后缓冲(TLB)
19、振荡周期、时钟周期、机器周期、指令周期
20、硬件中的抽象:晶体管,门电路,寄存器,模块

第四章 ARM体系架构
21、数据处理指令、数据传送指令、控制流指令(改变PC的指令),已经控制处理器执行状态的特殊指令
22、控制流指令:条件转移、子程序调用与返回、系统调用、异常

第五章 ARM汇编语言编程
23、数据处理指令:完成 寄存器数据的算术操作和逻辑操作。(注意:不包含存储器)
24、逻辑与 AND:对两个寄存器进行AND操作,实际上是每一位都进行与操作。
25、ARM的CPSR
26、算术右移:保持高位不变,其他位做逻辑右移。也就是保持正负
27、任何处理指令都能设置条件码,N,Z,C,V。比较操作只设置条件码,没有数据结果
28、数据传送指令:完成寄存器与存储器数据的传送。
29、多寄存器Load/Store LDMIA r1, {r2,r3,r4} ,将r1开始的三个数分别放入r2,r3,r4 。如果是 LDMIA r1, {r4,r3,r2},编译器会先对大括号里面的寄存器排序,也就是还是按照r2,r3,r4的顺序来排序
30、控制流指令,如果子程序有嵌套,就必须保存好r14,因为r14是链接子程序地址
31、著作权的身份权永远属于作者,著作权的经济权在作者死后50年内继承人,如果没有继承人,则无主财产属于国家或集体所有。

第六章 ARM编程模型
32、r13是堆栈寄存器,r14是链接寄存器,r15是PC寄存器
33、ARM模式指令是32位,Thumb模式是64位
34、load/store的对象是寄存器和存储器
35、CPSR(current program state register程序状态寄存器),N/Z/C/V存储在该寄存器内
36、最早的RISC是Stanford大学开发的MIPS处理器。
37、ARM使用37个寄存器,31+6个状态寄存器。ARM有7个处理器工作模式,每个模式使用不同的寄存器
38、SPSR ,Saved Program Status Register,程序状态保护寄存器。每个异常模式下都有一个SPSR
39、R14是Link寄存器,指向程序异常时的地址
40、R15存储PC只有一个,任何模式使用同一个R15。CPSR是程序状态寄存器,所有模式公用一个。记录正常状态
41、R14存储的是异常地址,R15存储的是正常地址PC
42、R13是堆栈寄存器
43、防止中断嵌套的方式:运行中断服务程序时先关闭中断允许;同时允许其他模式的中断
45、五种模式、七种异常
46、快中断不需要跳转指令,因为快中断矢量是七个异常矢量最后一个
嵌入式系统设计笔记_第1张图片
47、在指令的最后添加^符号,表示从spsr中回复cpsr
48、ARM的异常只能在ARM模式下处理,如果Thumb模式发生了异常,就要转换到ARM模式处理异常
49、LDM STM多寄存器指令传送指令 、
50、LR是link register也就是R14
51、SUBS后的S表示从SPSR回复CPSR,而不是set
53、memory-mapped 存储器映射
54、AMBA规范
55、assembler syntax description 集中语法描述
56、AMBA总线的本质是划分出三种速度不同的总线
57、处理器内部有多个master多个slave,但是总线只有一套,由arbiter来决定谁使用总线。
嵌入式系统设计笔记_第2张图片梯形是多路器
58、APB是APB桥当中唯一的主单元,APB/AHB是从单元
嵌入式系统设计笔记_第3张图片

59、.xz和.tar都是压缩文件格式

60、apt-get命令是APT(Advanced Package Tool )命令,在计算机中有一个apt文件,./apt/lists有所有已经安装和未安装的包,./apt/source.list下有源站点。每次运行sduo apt-get update更新lists文件。

61、wget是一个下载工具,类似于迅雷
sudo apt-get install 下载的都是工具包(函数),如果要下载文件的话要使用wget。
62、.c .i预编译后生成的文件 .s .o

63、pwd打印当前绝对路径,以用户登录linux当前路径默认会是在/home/username。

64:命令模式 ESC,编辑模式i,退出 :wq

65、向前兼容和向后兼容。向后兼容更好。
X86是典型的向后兼容,旧的接口可以直接运行在新的系统上,旧的应用可以直接运行在新的系统上。比如xp的程序可以直接在win10上运行。
Linux都是向前兼容

66、ISA(instruction set architecture)
芯片的发展方向:从CPU到SoC。SoC是包括硬件、软件、外设的集成电路。规模比CPU大。

67、LoadB strB 对字节进行Load/Store
68、寄存器是32位的
69、ANSI C ,美国国家标准协会的标准。这一标准char是8位,int 是16位,long int是32位

70、ARM没有除法指令和余数,一般的汇编有除法指令
71、根据地址码的数量,指令有零地址指令、一地址指令、二地址指令、三地址指令、多地址指令。ARM使用三地址指令(不是非得使用三地址),因此ARM的指令比较灵活

72、LoadM和STRM对堆栈进行操作
73、Literal Pool(文字池),ARM在内存中开辟的专门用来存放常量而不是代码的空间。
74、cmp r0, r1
movegt r3,r4大于则mov
movele r3,r5小于则mov
ble小于则跳转
gt是大于则做,le是小于则做

75、STR r0,r1是将r0存到r1;load r0,r1是将r1存到r0
76、叶程序:最底层不会去调用其他程序的程序,一般是库文件

77、ATPCS(arm-thumb procedure call stansard),规定函数如何分开写、如何分开编译
78、C语言的我switch-case在ARM中使用跳转表来进行处理
79、ARM子程序调用通过R0-R3来传递参数
80、子程序使用R4-R11来保存局部变量
81、R13是SP指针,R14是LR,R15是PC
82、传递参数在4个以下是使用R0-R3,超过4个的其他参数使用数据栈传递参数
83、子程序返回结果,如果返回数是32位,则使用R0进行返回。64位使用R0-R1,以此类推。结果为浮点数时,通过浮点运算部件的寄存器f0、f0、s0等返回
84、DDR (double data rate SDRAM)双倍速率同步动态RAM
85、多线程。程序在运行时允许同时创建多个并行的线程同时执行任务。多线程需要占用更多的内存,线程之间容易互相占用资源
86、ARM的SP是FD的方式使用的。

87、在RAM空间中一般由操作系统划分为若干区域,分为堆栈、堆、静态数据、接下来存储代码。
嵌入式系统设计笔记_第4张图片
88、堆是手动分配内存,使用malloc分配,使用free释放。栈是由系统分配的,每进入一个函数都会在栈中开辟一个空间来给栈使用,给部分其他的函数不能使用。如果使用递归容易丢失空间溢出。当函数执行完或者程序执行完,操作系统自动收回栈空间。
堆是不连续的
栈是线性连续的。

89、计算机上电根据BOOT选择启动方式,默认是flash启动。系统把所有的代码搬到RAM上运行,程序执行时的变量都是存储在RAM当中
90、结构体存储。

嵌入式系统设计笔记_第5张图片

压缩结构体

嵌入式系统设计笔记_第6张图片

91、1080p逐行扫描,1080I隔行扫描
92、LDO虽然效率可能比较低,但是纹波性能好。DC-DC(开关电源)虽然效率高,但是纹波比较大,像树莓派未采用DC-DC
93、CSI接口,Camera Serial Interface。是串行接口
94、有源晶振和无源晶振。无源晶振需要外界提供振荡电路(单片机之所以可以使用无源晶振是因为内部有振荡电路),有源晶振只需要外界提供电压即可。
95、AMBA规范:分为APB(Advanced Peripheral Bus) AHB(Advanced High-performance Bus) ASB(Advance d System Bus)

96、三级流水线:取址、译码、操作、回写(可有可无)
五级流水线 :取值、译码、执行(这里没有三级流水线那么多操作,只有移位和ALU操作)、缓冲/数据(访问数据存储器或者NOP)、回写
增加级数能提高主频,因为减小了三级流水线的操作当中的关键路径,每个部件完成的事情越少频率越高。
嵌入式系统设计笔记_第7张图片

97、ARM7三级流水线、ARM9是五级流水线

98、其中访问存储器。译码和执行要紧连,也就是decode和execute要紧连。对于STR执行,calc addr和 data xfer(存到寄存器)是执行过程。执行过程不能同时进行。嵌入式系统设计笔记_第8张图片

99、barrel shifter移位器
incrementer地址自增器

嵌入式系统设计笔记_第9张图片

100、目前CPU的最主要限制是存储器速率,CPU高速运行需要大量访问存储器,但是存储器速度太慢。
嵌入式系统设计笔记_第10张图片

101、回写的作用是方便自动变址,如果指令当中有!,就需要回写到register当中。

**第九章 **
102、LOAD/STORE是ARM的特点
103、MMU(memory management unit)负责处理对处理器的访问请求
104、数据总线、地址总线、控制总线位数是不一样的,CPU位宽指的是数据总线位数。
105、锁存器 latch
106、指令预取,将指令从内存提前存入cache
107、ALU/shift操作的都是register的数据而不是memory的数据,
108、ARM的时钟叫MCLK

第十章 JTAG调试
109、JTAG 联合测试行动组传统测试芯片的方法是“探针”:万用表和示波器JTAG需要有内部芯片和位移寄存器,图中正方形方框就是位移寄存器。Bypass旁路
嵌入式系统设计笔记_第11张图片
110、JTAG的三大功能:下载器、debug、边界扫描JTAG同时可以测试多个元件,只要这些元件宏单元:比逻辑门抽象级别更高的元件,如触发器、寄存器、ALU、移位寄存器边111、界扫描链:是由移位寄存器组成的
112、Micro微小的 macro宏大的
113、JTAG没有标准的接口定义,每家公司的定义不一样,但一般含有TMS/TCLK/TDI/TDO四个引脚

第十三章
114、ARM 7-11和V1-V8的分类是不一样的,ARM 7-11是指核,V1-V8是体系架构
115、流水线分得越细,核的频率更高
116、ARM7TDMI,其中四个字母分别是thumb,线上debug,multiply,ICE断点观察点。
117、ARM7TDMI支持3级流水线,ARM 8开始5级流水线
预取址 = 取址
118、五级流水线:取值、译码读数、执行、访问存储器、回写
MMU(memory management unit) , ALU(agorithm logic unit)
119、六级流水线
120、ARM设计者前十年在干些什么:优化关键路径、降低工艺尺寸、
121、前推逻辑
122、ARM的register是最快的,cache其次
123、cache存放的是使用得最多的程序代码。

第十四章 存储器层次与高速缓存
124、CP15是一个专门用来进行内存管理的协处理器(coprocessor)
125、Domain(页域)是ARM MMU体系结构所特有的,
126、MMU是内存管理单元,有时也称作分页内存管理单元(paged MMU),它的功能是将虚拟地址向物理地址的转换。
**127、为什么需要内存管理?**主要是协调RAM和ROM的关系。比如一台机器的RAM是4MB,ROM是1GB,如果要跑一个16MB的程序,ROM当然是放得下的,但是RAM不行。因此需要操作系统决定如何将程序分成几个部分分开执行。内存管理使得计算机可以处理比内存更大的程序。

128、MMU功能。
(1)决定一个程序只能使用哪一块物理内存。一旦该程序要访问其他程序的物理内存,报告错误,并保护这些数据。
(2)处理器内核取值其实取的是虚拟地址,也成为逻辑地址或者有效地址。
(3)与一个程序相关的内容会被分页,页的大小一般定义为4KB。每次需要运行程序的某一个部分时,就将该页从ROM导入RAM,不需要使用时就导出到ROM。
(4)计算机如何知道页存放在什么位置呢?页的地址是存放在一个高速缓存当中的,称之为对应查找表TLB(TRANSLATION LOOKASIDE BUFFER)。启动操作系统或者启动应用时就需要初始化TLB。
(5)MMU可以支持32个页
(6)在没有虚拟地址的计算机上,地址总线直接连接RAM;在有虚拟地址的计算机上,地址总线通过MMU连接RAM。

129、虚拟地址范围由地址线位数决定,如32位地址线支持的虚拟地址范围为4GB,64位地址线支持虚拟地址范围。

130、为什么要使用协处理器CP15? CP15就是MMU。CPU之所以要使用协处理器COP,是因为在执行一些任务时CPU的效率十分低下。典型例如数字信号处理、神经网络等等。更抽象一层的原因是协处理器的任务是固定的,而且需要频繁使用,并且协处理器和CPU是并行执行,本质上相当遇多了一个人干活




计算机操作系统
题目集:https://blog.csdn.net/qq_35433716/article/details/82778367

1、进程 进程是操作系统进行分配的基本单位,同时也是可以单独运行的基本单位
2、单/多道批处理系统 单道批处理系统每次只能运行一个程序或者执行一次I/O,多道批处理系统每次可以执行多个程序或I/O,同一个时刻有多个程序进行,因此需要特别注意将有限的资源正确地分配给这些进程
3、前趋图 前趋图是有向无环图。前趋图中不能有循环,即回路,否则必然会出现冲突。具有回路,边1要求A在B之前执行,边2要求B在A之前执行,这显然永远不可能实现,即具有冲突。

嵌入式系统设计笔记_第12张图片
嵌入式系统设计笔记_第13张图片
4、并发执行 并发执行的进程是不可再现的,也就是即便在相同的条件下再进行一次,结果可能会不相同。

5、进程
(1)进程是用户才有的概念,运行内核是不需要进程的,代码直接运行。
(2)操作系统是用户进程可以调用的函数。
(3)操作系统内核提供原语,为原语操作正确,原语不允许被中断,即原语具有原子性
(4)挂起要将进程从内存调入磁盘,suspend分为block suspend和ready suspend,两者都存在磁盘当中,但是ready suspend当中的PCB要被修改为ready。一个处于block suspend状态的进程,当它期待的进程完成之后,就会被标记为ready suspend
(5)activate原语。将磁盘中的进程调入到ready当中, ready suspend状态的进程被activate后变为ready状态,block suspend状态的进程被activate后变为block状态。
(6)创建进程。新创建的进程只能有两种状态,分别是ready suspend和ready状态。
(7)PCB。PCB是进程存在的唯一标志,当进程被创建时,就要创建一个PCB。系统根据PCB表来判断当前有几个进程,以及识别当前进程的状态。由于PCB经常被访问,因此存在内存当中,操作系统专门会开辟一个PCB区域。

用户模式和内核模式
(1)所有的操作系统都至少有这两个层级
(2)用户指令在用户模式下执行,当运行到内核指令时切换到内核模式下运行

一些操作系统的进程和线程
嵌入式系统设计笔记_第14张图片

线程共享的资源和独占的资源
嵌入式系统设计笔记_第15张图片

死锁
(1)死锁没有通用的解决办法

进程间通信IPC
(1)进程编号是PID,线程编号是TID。

信号和信号量
(1)信号signal是一种软件级的模拟中断,是异步信号,用来通知进程有事发生
(2)信号量是进程和线程之间同步/互斥的一种方式,保证对公共资源的有序访问。
(3)ctrl+C就是用过信号机制实现的
(4)常用的发送signal的系统函数有kill、alarm
(5)可靠信号和不可靠信号。 给进程发送一个信号,其实这个信号不一定能被正确执行,有可能丢失或者干扰了别的进程,只有在SIGRTMIN和SIGRTMAX之间的signal才能被正确执行。

你可能感兴趣的:(科学)