嵌入式系统设计笔记

article/2025/10/24 23:36:10

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

第一章 嵌入式系统导论
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、快中断不需要跳转指令,因为快中断矢量是七个异常矢量最后一个
在这里插入图片描述
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来决定谁使用总线。
在这里插入图片描述梯形是多路器
58、APB是APB桥当中唯一的主单元,APB/AHB是从单元
在这里插入图片描述

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空间中一般由操作系统划分为若干区域,分为堆栈、堆、静态数据、接下来存储代码。
在这里插入图片描述
88、堆是手动分配内存,使用malloc分配,使用free释放。栈是由系统分配的,每进入一个函数都会在栈中开辟一个空间来给栈使用,给部分其他的函数不能使用。如果使用递归容易丢失空间溢出。当函数执行完或者程序执行完,操作系统自动收回栈空间。
堆是不连续的
栈是线性连续的。

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

在这里插入图片描述

压缩结构体

在这里插入图片描述

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)、回写
增加级数能提高主频,因为减小了三级流水线的操作当中的关键路径,每个部件完成的事情越少频率越高。
在这里插入图片描述

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

98、其中访问存储器。译码和执行要紧连,也就是decode和execute要紧连。对于STR执行,calc addr和 data xfer(存到寄存器)是执行过程。执行过程不能同时进行。在这里插入图片描述

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

在这里插入图片描述

100、目前CPU的最主要限制是存储器速率,CPU高速运行需要大量访问存储器,但是存储器速度太慢。
在这里插入图片描述

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旁路
在这里插入图片描述
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之前执行,这显然永远不可能实现,即具有冲突。

在这里插入图片描述
在这里插入图片描述
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)用户指令在用户模式下执行,当运行到内核指令时切换到内核模式下运行

一些操作系统的进程和线程
在这里插入图片描述

线程共享的资源和独占的资源
在这里插入图片描述

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

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

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


http://chatgpt.dhexx.cn/article/5hyE5DUZ.shtml

相关文章

JTAG接口无法连接的问题

题目:JTAG接口无法连接问题 本文包含两部分内容:1)续写TI DSP连接不上的问题;2)顺便提一下Xilinx FPGA的JTAG口连接不上的问题。 一、TI DSP为啥连接不上? 半年前发过一篇博文《DSP为啥连接不上&#xff1…

STM32夺命100问!你知道几个?

点击上方“小麦大叔”,选择“置顶/星标公众号” 福利干货,第一时间送达 1、AHB系统总线分为APB1(36MHz)和APB2(72MHz),其中2>1,意思是APB2接高速设备 2、Stm32f10x.h相当于reg52.…

智能教室控制系统

智能教室控制系统 引言 概述 该系统通过上位机C#控制下位机STM32,实现教室打卡考勤功能,通过打卡对数据库SQLserver进行增删改查,同时能将数据库的数据导出表格,下位机用到RFID的RC522模块,舵机、风扇,w…

基于stm32电梯管理系统设计

基于stm32电梯管理系统设计 这里记录一下以前自己做的嵌入式课程设计,报告中的图片和文字太多了,全部一个一个把搬过来太麻烦了,需要完整文本和代码自行主页私我 摘要关键词一、课题概述1.1市场调研1.2 需求分析 二、课题实施方案2.1 硬件总体方案2.2 性…

基于Xilinx的Kintex-7系列XC7K325T的硬件加速卡

产品型号: B-PCIE-K7F5XILINX的Kintex-7系列FPGA处理器 B-PCIE-K7F5是一款基于PCI Express总线架构的高性能FPGA算法加速卡,该板卡采用Xilinx的高性能28nm 7系列FPGA作为运算节点。Xilinx的28nm 7系列FPGA通过对资源、接口以及时钟的优化,在高性能计算&a…

基于STM32设计的车库监控报警系统

一、前言 随着社会的发展,人们的生活水平不断提高对安防问题的关注度越来越高,因而各类防盗设备也层出不穷,本文采用红外测距传感器、摄像头、STM32单片机以及ESP8266无线通信模块设计一种车库防盗报警器,其可安装在车库的里,通过红外线测距检测是否有人入侵,产生报警信号…

dnw驱动更新,支持全系统(xp,win7,win8/win10)

前言: 本文用于解决win7以上系统使用dnw难装驱动问题,使用新驱动: zadig-2.3.exe,支持xp,win7/win8/win10系统,安装方便、高效,欢迎试用。 对于裸板开发,我们一般使用JTAG工具,比如OpenJTAG、…

jz2440s3c2440 jtag口、串口、usb devices 使用

1.串口: 串口类型: 针串口 、usb串口的使用 1. usb 串口 插入电脑,计算机上设备管理器中其他设备下出现新设备 设备管理器 中查看 2. 安装串口驱动 ,安装驱动以后 系统分配com4 串口 3. windows下载串口连接软件 MobaXterm&…

基于STM32设计的城市绿化云端监控系统(华为云IOT)

一、设计需求 1.1 项目背景 随着科技的蓬勃发展改变了很多传统行业的作业方式,当我们用移动支付代替现金交易时,当我们足不出户就能满足饥饿的身体时,我们的生活方式因为科技而发生了改变;同样科技也在改变着我们周围的点点滴滴,城市绿化养护亦是如此。 通过智慧控制系统…

FPGA的调试-虚拟JTAG

对于FPGA调试,主要以Intel FPGA为例,在win10 Quartus ii 17.0环境下进行仿真和调试,开发板类型EP4CE15F17。主要包括一下几个部分: - FPGA的调试-虚拟JTAG(Virtual JTAG) - FPGA的调试-在线存储器内容编辑…

Win7、Win8、Win10系统USB-Blaster驱动程序无法安装的解决办法

这篇博文是我转载dezhihuang的博文,原文名称和地址如下,并对内容做了适当调整: [原]Win7、Win8系统USB-Blaster驱动程序无法安装的解决办法 第一次用Markdown编辑博客,格式方面真是捉急啊! Win7、Win8、Win10操作系…

avr+开发环境+linux,win7下avr单片机开发环境的搭建

操作系统:win7 professional x86 开发软件:avr studio 4.19 首先下载avr studio 4.19,因为貌似这是atmel官方最后支持jtag ice的开发环境。而且也就只有这个4的版本才支持win7,正好本人有个jtag,所以果断选择这个版本…

IBM Spectrum LSF RTM

IBM Spectrum LSF RTM IBM Spectrum LSF RTM是IBM Spectrum LSF环境的操作仪表板,提供全面的工作负载监视、报告和管理。它使集群管理员在日常活动中更加高效,并提供所需的信息和工具,以提高集群效率,实现更好的用户生产力&#…

IBM Spectrum LSF Suites

IBM Spectrum LSF Suites 高性能计算(HPC)不再仅仅适用于大型组织和技术熟练的用户。在当今竞争激烈的商业环境中,几乎每个行业都需要更短的设计周期和更高质量的结果,HPC适用于任何规模的组织。它是为那些需要从大量数据中进行分析和回答的用户而设计的…

LSF_SPAN

span字符串指定并行作业运行的位置。如果省略span, LSF将从可用的处理器中为作业分配所需的处理器。 一、语法 span[host1]:指示分配给作业的处理器必须位于同一个主机上。 span[blockvalue]:对并行作业来说,LSF将根据block size来分配slot…

集群调度LSF-学习笔记

集群-------多台设备 HPC集群----多台用于计算的设备 集群调度-LSF:LSF 是一种强大的工作负载管理平台,提供基于各种策略的智能调度功能,利用分布式的基础架构资源来提高整体的系统性能。用户通过 LSF可以实现集群间的负载均衡,扩…

IBM Platform LSF在IC行业内的使用

LSF在IC设计中有哪些值得匹配的 1、管理低利用率Job •针对short normal这类队列,查询20分钟以后,Job利用率依然很低的Job信息。 •$bjobs -u all -q short -o ‘id user queue stat ugroup first_host sla idle_factor slots …

IBM Spectrum LSF-手册

在所有规模的企业中,应用程序能力和数据量持续显著增长,推动了对更多计算能力和高性能管理和分析工具的需求。即使在传统的高性能计算(HPC)环境中,多个计算竖井、不均匀处理、设计周期泄漏和延迟结果也是常见的。面对日益严格的经济压力&…

LSF - 提交GUI应用到LSF无法运行,报错Failed to connect to socket /tmp/dbus-xxxxxxxxx: Connection refused

问题描述 提交GUI应用到LSF无法运行,如下所示 问题分析 这种GUI应用,不能以交互式的方式提交。提交命令换成bsub firefox即可。

LSF的使用方法总结

一、LSF 基本介绍 LSF(Load Sharing Facility)是IBM旗下的一款分布式集群管理系统软件,负责计算资源的管理和批处理作业的调度。它给用户提供统一的集群资源访问接口,让用户透明地访问整个集群资源。同时提供了丰富的功能和可定制…