嵌入式考试三级笔记
本文总结了嵌入式系统开发中的关键知识点,涵盖硬件架构、软件设计、网络协议、实时操作系统等多个方面。主要内容包括: 硬件基础:嵌入式处理器分类(ARM、MIPS等)、SOC芯片设计、存储器类型(NOR/NAND Flash)及其特性、外设接口(UART、SPI、I2C等)的工作原理。 软件架构:引导加载程序(U-Boot)、实时操作系统(uC/OS-II、VxWorks等)的任务调度机制、Linux
以下内容,全都是自己学习总结的小知识点
一点点手敲的,呕心沥血,侵权必究
1,路由器,数码相机是高端嵌入式
Digital Camera数码相机
2,时钟频率是10Ghz,但是实际工作频率达不到
3,SOC芯片可以有多个cpu和dsp(digital siginal processer)
4,灵活可移植的话软核好点,性能好开发少是硬核最好
5,C51是冯,arm7也是冯,其他的都是哈佛
6,各类型的(比如压力)传感器是机机交互
7,IP核按照IC设计文件类型可以分类:软固硬
8,ASCII(American Standard Code for Information Interchange)包括96个可打印字符核32个控制字符,有拉丁字母,阿拉伯数字和标点符号
9,超文本就是html网页那种的www.网页
10,pdf是国际的也是我们国家的国标
11,GB18030和UCS/Unicoded都有日韩文字,但是他们之间的汉字编码不同(后者有两种)
并且UTF8和UTF16一个是单字节编码(三个字节编码汉字),一个是双字节编码(四个字节编码汉字)2312是双字节和18030是双字节或四字节编码汉字
12,DI(digital image )数字图像:扫描,分色,取样,量化
13,图像数据量是,1x1x深度值/8,/8是为了字节变成比特B
14,JPEG是大多数有损,在数码相机中储存
15,1600万真彩色就是24位的,算的时候把这个带上,还有后面的压缩比也要除掉,别忘 了还有比特/8
16,静态图像格式PNG
17,音频我们的范围是20Hz~20kHz的模拟信号,取样频率是44.1kHz
电话的数字语音范围300~3400Hz的,电话的通信语音取样频率8kHz
18,波形码率,也就是目前的比特率,比特率=取样频率量化位数x声道数/压缩比
19,MPEG-2用于数字卫星电视转播和数字有线电视(Move Picture Experts Grop运动图像专家组)
mp4也是MPEG格式,asf适用于流媒体应用,流媒体能够更实时的在互联网上传输和播放
20,MP3用的是MPEG1进行压缩编码,使用的时候需要mp3播放器进行解码
21,WAV是未经压缩的数字音频,音质和CD相当
UTF16并不是等长编码,因为有一部分生僻字是四字节
22,光波通过光导纤维它是物理传输(有线)
无线通信分:中波,短波,超短波,微波,,
23,微波它越微越直线传播,不会绕
24,第几代的移动通信就是几G
我们的4G,5G这种都是微波通信,并且我们常用的wifi也是微波通信,,但是我们的调频广播主要是用短波和超短波
25,信源,信宿,信道
26,电话交换机是电路交换技术(独占),还有一种是分组交换(非独占)
27,IEEE802.11,wifi,
这些我们说的MAC地址(以太局域网,通过交换机组成交换式以太网),wifi(无线局域网缩写是WLAN)什么的都是局域网
28,以太局域网(以集线器和交换机为中心)发送采用帧,发送MAC,接收MAC,控制信息,有效荷载(数据类型),校验信息(确保准确)
29,中国移动就是第一层ISP,大公司是第二层,校园网和企业网是第三层ISP
30,IPv4是32位,用完了,IPv6是128位几乎无限大
IP地址由网络号和主机号两部分组成,路由器可以动态获取IP地址进行交换(里面有很多IP)
路由器:将多个异构或同构的物理网络进行互连,他也是一种分组交换机
31,无线接入点AP是用来将有线通信网络和无线网络互连
32,ADSL(Asymmetric Digital Subscriber Line不对称数字用户线)接入,利用普通电话线作为介质,传输距离3km到5km,ADSL不需要额外的电话费
有线电视网接入(CATV)采用HFC(Hybrid Fiber Coaxial,光纤同轴电缆混合网)来传输电视节目
光纤接入主要是光纤为主的传输介质的互联网接入系统
无线接入:无线局域网WLAN(wifi无线网卡,有无线接入点(AP)()的热点(起到无线路由器的作用)区域),4G,5G(4G无线网卡等)
33,CPU的时钟频率还是达不到10GHz,但是集成电路在某些领率可以达到
34,SOC是一种超大规模集成电路
35,嵌入式处理器的字长是处理器中通用寄存器和定点运算器的二进制宽度
36,大规模集成电路的出翔让处理器的所有部分可以zhi做在一块儿大小仅有几cm2的半导体芯片上,但是嵌入式处理芯片大部分属于超大规模VLSI和极大规模集成电路ULSI
37,微控制器没有集成全部的电路,但是soc集成了
38,数码相机b=包括前断和后端,前端负责图像获取,后端负责图像处理,后端通常是是DSP为核心的SOc芯片,此外还有是一个用来操作控制的一个超低功耗的8位MCU
39,像素就是最高分辨率下面的两个相乘
数据量=分辨率x像素深度➗8
40,静态图像格式主要有BMP,JPE,GIF可以用于简短动画或者静态图像,APE,FLAC,AAC是流行数字音乐无损
41,GB2312表示汉字两个字节,其中每个字节的最高位固定是1,ASCII是7位编码
0开头的是ASCII字符
41,字节就是B就是byte,就是8位
42,ip地址通常采用4个十进制数来表示
43,数字图像参数中位平面数目也是其中的参数
数字图像的位平面数目:像素颜色分量额数目
44,固定电话中通常使用的PCM编码的码率是64kb/s,取样频率是8kHz
45,字符的形状有两种描述方法,点阵法和轮廓法
46,音频数字化过程;取样,量化,编码
47,测量每个取样点的每个分量的亮度值的过程称之为采样
量化是每个像素点采样后的灰度值从模拟量转化为离散量的操作
48,GIF是无损压缩图像文件格式
49,IP地址C类运用的最多,主要是小规模局域网络,只能包含254台计算机,DE类作为组播地址和备用地址
IP数据包可以克服不兼容异构性,由头部信息和数据区组成(所有tcp/ip网络中传输的数据都必须封装或者拆分位ip'数据报)
头部信息包括:发送ip,接受ip,ip版本号(大量使用ipv4),数据包长度,服务类型
数据区,1B到64B(含头部信息在内)
50,A类ip地址最高位肯定是0
51,分组交换中的数据包:包括头部和有效荷载,先传的是头部
52,短波具有较强的电离层反射能力,因此适合环球通信
53,按照指令集分嵌入式处理器:RISC和CISC
按照存储是哈佛和冯,
按照CPU核分MIPS,ARM等,
60,51是CISC,MSP430是冯诺依曼,ARM7是冯诺依曼
61,ARMv6主要是ARM11系列,11之后的就分Cortex了
Thumb-2是ARMv7才开始使用的新状态
Cortex都是thumb2,其中CortexA53/57用ARMv8A他用thumb,arm,还有A64
62,ARM7和9都用ARMv4T系列,其中ARM920T支持ARM和Thumb,5级流水
63,CortexM只支持Thumb-2指令集的子集,CM3有硬件除法指令(哈佛,三级流水,armrv7)
64,嵌入式处理器包括M和R系列的Cortex
65,ARM体系中可以三种状态,ARM,Thumb,调试状态,Cortex没有ARM这个状态
66,操作寄存器的最低为设置为0就是ARM,1就是Thumb,Thumb中异常处理会先到ARM中然后处理完再回来
68,ARM处理器共有37个寄存器,其中R7~R0是公用的通用寄存器
无论何时R15用作PC,CPSR是当前的程序状态寄存器
67,ARM7个工作模式,由程序状态寄存器CPSR低5位控制
其中低678位R5到R7是TFI,分别是ARM和Thumb切换等于1是Thumb,快速中断FIQ=1是禁止,外部中断IRQ控制位I=1是禁止
(每个异常中断向量占据4个字节,不同类型的异常中断他的中断服务程序的入口地址不同)
往后是R13是SP(Stack Pointer)堆栈指针,R14是LR(Link Register)链接寄存器,
R15是PC(Program Counter)程序计数器
高5位分别是 R31~R27分别是N(符号标志,1是负数)Z(全0的时候Z=1)C(进借位标志,加法进位是1,减法借位是0)V(溢出标志位,有溢出就是1)Q(增强DSP运算指令溢出,1就是溢出)
31 30 29 28 27 ````````` 7 6 5 4 3 2 1 0
所以从大到小分别是N Z C V Q 状态保留 I F T M4 M3 M2 M1 M0
里面有SPSR是发生异常的时候先暂时转换到的一个状态,CPSR的值保存到这个SPSR里面起到保护,恢复之后再返回CPSR当前的状态
中止模式处理存储器故障,系统模式高权限,
68,程序正常的时候每一条ARM指令PC+4,一条Thumb的时候指令PC+2
69,ARM体系结构中有7种异常:
复位最高优先级,复位的时候PC指向0x00000000开始去执行第一条指令
引起异常的指令的下一条地址(断点地址)保存到新的异常工作模式的LR(R14链接寄存器)让异常处理指令结束之后正常返回原来的程序,,(复位异常无需返回)
异常向量地址会写入PC程序计数器R15里
70,大端模式就是地址的高位放在后面存放地方的低位1234,大端的话变成了3412
71,ARM处理器数据类型:字节8位,半字16位,字32位三种数据类型、
72,存储保护单元是MPU(Mermory Protection Unit内存保护单元),虚拟地址到物理地址的映射是MMU(Mermory Management Unit 内存管理单元)
73,MMU是CPU管理虚拟存储器,物理存储器的控制线路,MMU是存储器管理部件
MMU控制存储器访问顺序,MMU控制存储器的访问权限,MMU通过查TLB把虚拟地址得到物理地址,MMU对Flash,SRAM等不同的存储器进行统一管理
74,ARM指令集分六大类:分支指令,数据处理指令,程序状态寄存器CPSR处理指令,加载/储存指令,协处理器指令,异常产生指令
数据处理类包括:算数和逻辑还有比较类型的
算法指令)ADD加法,ADC带位加法,SBC带借位的减法,MLA乘法运算
逻辑指令)AND逻辑与,BIC位清零指令,EOR异或指令,MOV数据传送
比较指令)CMP比较指令
测试指令)TEQ测试指令,TST就是AND一下,结果是0就把Z变1
分支类指令:B跳转指令,BL.带返回的跳转指令(函数调用),BLX带返回和状态切换的跳转指令,BX带状态切换的跳转指令
协处理器类:CDP协处理器数据操作指令,STC协处理器寄存器写入存储器指令
加载/存储类指令:LDR存储器到寄存器的数据发送指令(TDR也是,都是右边给左边,STR是左边给右边),
32位的东西,LDRB是字节数据加载指令,也就是只有8位,上面32位都清零
LDRH是半字数据加载指令,是16位的一般传送过去,上面16位都是清零
程序状态寄存器与通用寄存器传输类:MRS(Move to Register from System)传送CPSR或SPSR到通用寄存器指令,MSR反之
75,#imm8m在ARM里面是由8位立即数经过循环右移任意偶数位次形成的32位操作数,
Thumb是左移任意位次得到的32位操作数
76,指令:EQ相等Z置位,NE不相等清零,VS是V置位也就是溢出,VC是V清零不溢出
MI是N置位负数,PL是N清零正数或零,HI是无符号数大于,CC是无符号数小于,CS是无符号大于等于,LS是无符号数小于等于、LT是带符号小于,LE是带符号小于等于,GT是带符号大于,,GE是大于等于
(MI是负数,PL是0和正数)
77,#是立即数符号,!是更新寄存器,R0-R7就是0~7
78,LSL逻辑左移(0填充),LSR逻辑右移(0来填充),
其中ASL算数左移和LSL一样(0填充),但是ASR算数右移中左端的需要用31位来填充
79,立即寻址:(除了SWI 0x01这种之外都有#)
寄存器简介寻址:【】
基址加变址寻址such as:LDR R0,[R1,#3](只有LDR和STR,并且有【】的才是)
相对寻址:BL Subroutine_A;跳转到子程序Subroutine_A出执行
堆栈寻址:FILO先进后出方式
块拷贝寻址:

80,MOV,LDR,TDR都是右边load给左边
81,测试指令:TST R1, #0x01,就是把他们AND一下,结果是0就把Z置1,反之
TEQ R1,R2,就是把他们EOR异或一下,结果是0就把Z置1
82,一个字节是2个16进制数
83,NOP是空操作
84,指令都对应硬件里面的一连串的数字,但是伪指令是找不到的或者不断变化的
85,数据定义伪指令:
DCB一片字节存储单元(1的倍数)
DCW一片半字存储单元(2的倍数)
DCD一片连续的字存储单元(4的倍数),(一次分配四个字节)
DCQ一片连续的双存储单元(8的倍数个字节)
在32位中一个字是4个字节 ,64位中一个字是8个字节(是字不是字节也不是汉字)
字节就是比特,,一个汉字两个字节
87,LEN是返回字符串长度,CHR是字节整数转换成字符运算符:数值转ASII码
88,嵌套向量中断控制器是NVIC,还有VIC是向量中断,,一般来说ARM内核的嵌入式芯片中断控制器支持这两个
处理中断有两种形式:标准中断控制器(不区分优先级)和向量中断控制器VIC
89,用于子程序返回指令使用的寄存器有:LR,PC
90,WIC是唤醒中断控制器
91,能够访问内存及外设的指令或者伪指令就选带的有【】的
92,数据访问目标地址不在的时候,执行指令会产生数据访问终止DABT,
复位异常的中断向量地址是0,
管理模式SVS是操作系统的保护,处理软中断SWI,
中止模式ABT是处理存储器故障,实现虚拟存储和存储器保护
93,第一优先级是复位,第二是数据中止,第三是快速中断,第四是外部中断,第五是预取指令终止ABT,第六是软件中断SWI和未定义指令UND
94,ARM指令的条件域,条件域中有16种条件码,只有15种可以用,通常CMP指令用来产生条件,AL表示无条件执行
95,BIC清除是对应的那个1给清除了
96,B用于跳转,不是子程序的调用
MOV PC,LR用于子程序的返回,PC可以用R15代替
97,EQU定义符号test的值为50(test EQU 50)
98,处理异常的时候自动进去ARM状态
99,基于ARM内核的嵌入式芯片的中断控制器挂在AMBA的系统总线上
100,LDR R1=0x0000是将地址装入
LDR,R1,#0x0000是将内存地址处的数据加载进jR0寄存器中
101,ARM汇编语言必须用AREA伪指令定义代码段,ENTY是汇编语言的入口,必须以END结尾,必须有一个特定的名称,至少有一个代码段可以没有数据段
EXPORT是全局标号声明伪指令,EXPORT Reset就是,说明Reset在本源文件中,并且其他文件可以引用标号Reset
IMPORT是声明外部的这个子程序不在调用的同一个文件中,引用一个其它文件中的标号
EXTERN是外部标号引用伪指令
102,STM IA是传送后递增,IB是传送前递增,DA是传送后递减,DB是传送前递减
I是增,D是减,A是后,B是前
103,STR R2,[R0],#4就是R2的值写入R0对应的地址,之后R0加4
104,Thumb2相比于Thumb密度相同的情况下可以性能提高38%
105,VFP是浮点运算的部件
106,一个字32位,必须以4字节对齐,就是说低两位地址始终是0,因为它是4的倍数,4就是0x100
107,EQU可以定义一个常量,或者标号等定义一个等效的字符名称,但是不能规定常量的位数,位数具体取决于值的大小和应用场景 test EQU 2000就无法判断是 16位还是32位
但是 test EQU 20000就可以断定是32位
DCB 0xAC 是分配一个比特也是一个字节,不是一个字,要注意
108,嵌入式最小系统包括:1,嵌入式处理器,2,复位电路,3,时钟电路,4,电源电路,5,存储器,6,调试测试接口
109,稳压器包括:普通稳压器,低压差稳压器LDO
110,和嵌入式系统并联的是内部的时钟信号发生器(大多数嵌入式处理器都是内置的),串联的是外部的(Xtal就是晶体振荡器,晶振有的是有源的,有的是无源的)
111,nRESET必须若干个处理器时钟周期才能复位,也就是常说的长摁
112,JTAG是一种国际标准测试协议,主要芯片内部仿真和调试,里面封装了专门的测试电路并提供测试访问口(TestAccess Port ,TAP)可以对内部节点进行测试
多个器件通过JTAG接口串联形成JTAG链,实现各个器件的测试
113,嵌入式系统硬件一般由:嵌入式最小硬件系统,前向通道,后向通道(I/O接口,隔离电路),人机交互通道,相互通信通道(通信协议什么的),机机交互(传感器)
A/D转换是前向通道,D/A是后向通道
114,AMBA先进微控制器总线结构,是用于连接和管理片上系统SOC中功能模块的开放标准和片上互连规范
规定了ARM处理器内核与处理器内部高宽带RAM,DMA以及高带宽外部存储器等快速组件的接口,我们叫做系统总线
内核与ARM处理器内部外围端口以及慢速设备接口组件的接口标准
AMBA1主要是ARM7,AMBA2主要是ARM9,10还有CortexM,
AMBA3主要是ARM11和CotexR和CortexA(不含A15)一些如今的AMBA4是CotexA15(3之后就不只有两个总线了,就有更多了)
AHB核APB2之间用桥接器连接
115,片内的程序存储器通常是Flash ROM,片内的数据存储器通常是SRAM(Cache的还有少量程序代码)因为数据是随机访问存取,程序是一次性的非易失的
116,中断来的时候,中断控制器VIC会先请求然后再进入,NVIC可以直接进去先处理CortexM支持这个
117,DMA控制器:可以取代CPU搬运的活,他可搬数据,可以降低处理器负荷
ARM通信的时候可以用ARM内核控制传输,也可以DMA控制器来运输(数据量大)
118,ARM芯片内部电源管理模式有:正常模式(暂时不用的可以关闭),复位自动到正常工作
,慢时钟模式(MPLL关闭不适用,不通过锁相环电路)
(空闲模式)掉电模式(断开内部电源,除非唤醒逻辑有效否则内核不产生功耗)
,休眠模式(尽断开内核时钟FCLK,外围硬件组件还是有时钟),掉电和休眠中断就会回到正常
(深度休眠模式)等,一般只有四种工作模式,比如S3C2410就只有四种
119,时钟控制器负责对时钟的分配,可以通过桥接器之后若干分频得到慢时钟供APB总线上的各个接口作为同步信息
120,GPIO的引脚可以是多功能的,为了减少面积和引脚
121,WDT看门狗定时器,系统的定时复位软件或硬件,处理器出现错误后一段时间复位保证稳定
RTC(实时钟计数器)可以直接提供年月日时分秒,在APB上,
Timer通用定时器(S3C2410里面的是16位的),,,,PWM是脉冲宽度调制器
122,ARM处理器里面的模拟组件:ADC,DAC还有比较器,比较器可以对模拟的电压信号和基准信号比较,检测是否出现异常
123,UART通用异步发生器
IIC集成电路总线SCL时钟线,SDA数据线,同步半双工串行,用于板级芯片间的低俗短距离通信
IIS多媒体应用音频串行总线,用于数字音频设备(多对多)
SPI,是串行外设接口,四根线,MISO,MOSI,SSL芯片选择,SCK时钟,全双工同步串行通信,也是用于板级芯片之间的短距离通信(一对多)(很少多对多)
CAN是控制局域网,有CANH和CANL两根信号线,采用差分传输的方式,可以远距离多机通信,
用于要求抗干扰能力强的工业控制领域,可以多主多从
USB是通用串行总线,采用差分方式传输 ,速度快,效率高,是目前应用最广的串行接口形式
Ethernet是以太网通信接口,在许多ARM中都加了这个,外部连接一个RJ-45就可以
124,USB主机的速度很高,也在系统总线上
125,ADC的A/D的转换精度和ADC的位数有关,位数越大精度越高
126,NXP公司(荷兰恩智浦半导体公司,主要提供半导体芯片系统解决方案和软件)基于ARM7TDMI-S核的LPC2000系列
127,韩国三星主要是:ARM7TDMI内核的S3C44B0,专为手持设备使用
128,嵌入式处理器内部的Cache(CPU中最频繁的少量程序)
主存储器(内存),片(芯片)内部的SRAM和Flash以及片外的(扩展)DRAM和Flash(正在运行的程序)
外部存储器(外寸),SD卡之类的(等待运行的未运行的程序和数据)(虚拟内存)
129,PROM是一次编程
NOR Flash是以字节为单位的随机存储 ,应用程序可以直接在Flash ROM中执行,不用吧代码预先写在RAM中了(写入和擦除较慢)
NAND Flash ROM是以页(行)为单位来随机存储,容量和寿命都有较大优势,但是他的读出速度稍慢,变成较为复杂,多数用于数据存储器使用,体积小巧的U盘是这个NAND Flash存储的
130,FRAM和MRAM铁电和磁性都是非易失去的,所以有RAM和ROM的特点
131,地址线条数是n,总单元是m,那么2的n次方就是m,
133,微硬盘带有数据缓存,有利于提高数据的传输速率,
USB接口的时候不需要外加电源
134,输入缓冲,输出缓存:GPIO
135,IIC总线中所有器件不用总线的时候就会把SCL和SDA各自的电平拉高,都处于高电平
第一字节是地址,
多主总线,使用总线仲裁
136,UART先进先出FIFO,也可以是普通模式,发送的时候先到发送缓冲寄存器里面,之后通过移位寄存器在控制单元的作用下通过TXDn一位一位的顺序发送过去
137,UART不支持多机通信,UART速度比SPI传输速度低
UART以起始位开始以停止位结束,UART传输信息一次数据可以5到8位
138,USB即插即用和热拔插,(HDMI也是即插即用)
主从方式通信,OTG可以摆脱主机,内置电源
USB2.0是半双工差分方式,同名端相连,
USB3.0以上都是全双工
USB3.0达到5Gb/s也就是640MB/s
139,八段数码管显示,0到9对应abcdefgh,dp,,判断亮不亮的时候要注意共阴还是共阳
如果GPIO引脚改变的话并不会改变LED,还要有UI控制
140,DVI,HDMI,VGA都是LCD的接口标准
LCD显示模块包括LCD显示屏,控制器和驱动模块,有字符型有图形点阵型
PC机通常是LCD显示屏,除了具备显示屏之外还包括驱动器,控制器以及外壳,是完整的LCD显示设备
141,S3C2419采用ARM920T,32位嵌入式处理器,五级指令流水线,内置MMU
有16KB的指令Cache和16KB的数据Cache
内部集成存储器控制器,外部存储器控制器的地址空间一共1GB有8个BANK,一个是128K,
其中BANK0只能是16和32位总线宽度的访问,其他的BANK可以8,16,32位
ARM芯片为核心的嵌入式系统采用I/O与存储器采用统一编址方式
S3C2410存储器控制组件包括存储器控制器,总线控制器,外部主控器,NAND Flash控制器
142,LPC1700基于Cortex-M3内核
143,S3C2410,内部有时钟振荡电路,经过主锁相环电路的到更加固定的锁相后的时钟在时钟控制器,电源控制器以及USB控制器控制下,产生有很多时钟信号,如HCLK是AHB上的外围高速组件使用的时钟,PCLK时钟(连接到APB总线上的外围组件使用的时钟),
内核时钟FCLK
MPLL输入时钟(锁相环时钟)可以由引脚OM【3:2】选择外部时钟EXTCLK还是外接晶体利用内部振荡电路输出的时钟
144,ARM内核处理器的异常分为7种,每种异常对应一个异常向量,每个异常向量占4个字节,指出种端处理服务程序的入口地址
(下面这些基本都是32位的)INTMOD 中断模式寄存器,决定中断源的中断是普通种端IRQ还是快速种端FIQ ,1是快速FIQ
INTMASK 中断屏蔽寄存器, 屏蔽中断源的中断请求,0是允许,1是不允许也就是屏蔽中断
SRCPND源中断挂起寄存器 记录中断源中断请求的挂起状态,0就是无中断,1就是由中断请求
INTPND 中断挂起寄存器
SUBSRCPND子源中断挂起寄存器,记录子中断源中断请求的挂起状态:0无,1有
中断源可以有子寄存器也可以没有
当多个中断源请求服务的时候,SPCRND写入1,通过优先级仲裁当前最高优先权的中断源对应的INTPND位写入1,如果中断没有被屏蔽,CPU将处理该中断/
一共有23中外部可屏蔽中断
145,S3C2410复位之后除了屏蔽寄存器初始值全为1(不允许)之外,其他的寄存器初始值全为0
146,RTC是单独的供电引脚和单独的时钟源,输出是BCD的年月日
RTC的寄存器读写有一个使能位,这是为了保护系统的实时时钟不受误写,
RTC组件的寄存器只可以8位访问
RTC不可以通过编程进行修改内部的时钟分频器的分频系数,编程可以修改年月日
147,S3C2410有一系列的8个端口,GPA,GPB,一直到GPH
他的各个GPIO有完全不同的功能,
对应的GPIO都有相应的控制寄存器,数据寄存器以及上拉寄存器
148,波特率除数寄存器UBRDIV1的值是时钟/(波特率x16)-1
149,S3C2410中的:
UART的线路控制寄存器可以决定改UART的一次传送的发送数据的位数,5678
UART有三个接口UART0,UART1,UART2,
下面的特殊功能寄存器分别对应
线路控制寄存器ULCON0,ULCON1,ULCON2,确定了传输帧的格式,也可以决定它通信是否选择奇偶校验
定时器控制寄存器UCON0,UCON1,UCON2,可以控制中断是否允许,时钟选择,发送接收模式
发送/接收状态寄存器UTRSTAT0接收缓冲器数据状态,UTRASTAT1发送缓冲器状态,UTRSTAT2发送移位寄存器状态
UART有三个状态:1,,2,,3,
UART数据寄存器分发送缓冲寄存器UTXHn和接收缓冲寄存器URXHn,发送数据放在缓冲器中,接受也放在缓冲器中
UART控制寄存器可以选择波特率发生器是对PCLk还是UEXTCLK进行分频获得通信所需的波特率
150,S3C2410中的IIC总线
IIC有两种从地址形式一种是7位,一种是10位
读写位,1是读,0是写
铁电存储器FM24CL64中:GPE14配置SCL,GPE15配置位SDA,(作用在主模式下发哦送接收就可以正常读写了)
151,看门狗定时器最快的计数频率是PCLK/16,最慢的是PCLK/256/128
152,RS485是主从式多机(但是不能多主)通信系统,主机可以采用轮询方式与各从机建立通信连接(UART组成的RS232和485,232比较短15m左右,485几千米)
153,CAN可以多主多机,CAN网络的节点在网络空闲时候均可主动的向网络发送信息(内部有CRC校验)
CAN总线的数据帧是由7个不同的域组成,按顺序是:帧起始,仲裁域,控制欲,数据域,校验域,应答域,帧结尾
数据域的长度可以选0~8B,每字节包含8位,
154,S3C2410以太网通信接口,MAC层+PHY层收发器+RJ45插座
如果没有内置的以太网控制器以太网接口,需要外加DM9000,它实现了PHY和介质访问层MAC
155,S3C2410无线通信接口:
GPS全球卫星定位系统,民用的GPS定位精准只有100m。嵌入式系统由GPS模块
GPRS是GSM移动电话用户可以使用的一种移动数据业务,封装方式及进行传输,费用比较高
,我们通常使用AT命令进行呼叫
WIFI,IEEE820.11,Wireless Fidelity即无线保真,,
蓝牙一般在10m内,采用分散式网络结构以及快跳频和短包技术,一般1Mb/s,支持点对点,点对多
156,定时器也在AMBA的外围总线APB上面
中断控制器在AMBA的AHB系统总线上面
157,SWD是CortexM内核的一种调试测试接口
AMBA1的系统总线还是ASB
158,内置了时钟信号发生器的嵌入式处理器仍然需要外接一个石英晶体振荡器和两只电容才可以工作
嵌入式处理器的功耗和时钟电路的工作频率有关,,,运行速度也和他的工作频率有关
159,78xx是一种常用的直流稳压芯片,如7805可以提供5V的直流电压
低压交流电不可以直接给嵌入式处理器供电
160,ARM7芯片内部包括外部存储器的管理部件
161,AMBA支持的最大数据宽度是1024,建议不要超过256
162,AMBA系统总线包括高宽带的组件中有ARM内核以及测试接口
163,DDR2,DDR3,DDR4都是双倍速率数据技术
164,S3C2410各个GPIO端口具有完全不同的功能
165,存储器的带宽是每秒可传输的最大数据总量
带宽与总线频率和数据位数以及每个总线周期的数据传输次数都有关
166,系统总线通过桥接器变成外围总线
167,ARM芯片中包括GPIO接口,以及电源管理和时钟控制器
168,嵌入式有线性键盘和矩阵键盘两种,
电阻式和电容式触摸屏两种常用
169,RS232采用负逻辑传输(还是单端输出),逻辑0就是3~15v,逻辑1就是-3~-15v
170,外部存储器接口不能访问片内的,但是片内的可以访问片外的
171,处理器内部的通用寄存器最快,比Cache还快
172,电压屏是点电压的
电容屏是可以多点触摸和滑动
173,在GPRO引脚引出发光二极管的时候,中间加一个电阻限流,然后还要有一个反向驱动器
174, 在八位共阴数码管中 0是1是亮
175,触摸屏分为两种,一种是电阻式,一种是电容式。其中电阻式又称之为软屏,电容式称之为硬屏。我们常用的手写笔触摸屏,它其实是电阻式的,因为我们的电容是支持多点触摸以及滑动,就像手机屏幕一样,它是支持多眼触摸的,我们的手写笔只支持一个点,所以它是电阻式的
176,我们常使用和看到的都是矩阵键盘(行扫描法),比如说8个按键,就可以控制16个点,其实是4×4
而点阵键盘(线性键盘,非编码键盘,一对一)16个点的话 需要16个按键,也就是一个按键控制一个点
177,一般情况下 SPI 包含低电平有效的从机选择线
178,存储器的工作速率常用存储时间来衡量
179,IIC,USB2,CAN都是半双工
180,UART接收器会先把信息放在缓冲区内,缓冲区满了或者达到了指定接收字符的个数才会发生中断
181,S3C2410内部只集成了LCD,没有集成HDMI
182,UART起始位0,终止位1,不能通过编程修改
183,定时计数缓冲寄存器,定时器比较寄存器都是16位的
S3C2410有五个定时器,4个具备PWM波输出
184,IIC每次发送的字节不受限,但是每个字节要8位,并且每字节后面要有一个第九位应答位ACK
IIC第一个字节的第一位是起始标志位,后面七位是通信地址
185,NAND Flash的地址线和数据线都是复用的,ALE是地址锁存允许,CE是低电平有效芯片使能,RE是低电平有效读使能,R/B是准备就绪/忙输出
186,UBRDIVn是除数寄存器
187,HDMI长度最长30可以长于DVI最长15,,其中VGA可以更长但是需要额外的信号放大器来维持清晰度
188,差分信号传输的,IIC,USB,CAN,HDMI,RS485
半双工的:IIC,CAN,USB2.0,
异步的:UART(RS232(负逻辑),RS485),CAN(自同步的异步协议),USB(异步的,但是通过协议变成了同步)
189,UART通信的时候如果通信电路是空闲状态,那么逻辑电平是1
IIC也是,不用总线的时候两根线都是1,,,SPI也是低电平有效的从机选择线
190,实时系统按照时限对系统性能的影响的任务分:
硬实时,软实时,准实时(的概念和时限的长短没有关系
实时系统按照响应时间分:强实时,普通实时,弱实时
硬时限:明确的时限给响应(必须),,,准时限):时限内给响应(允许偶尔可出错),,,软时限:时限内尽量给响应(超出也基本没事儿,但是尽量别出错)
动车自动驾驶属于硬实时
191,R/W是一位,1为读,0为写
192,S3C2410内置的ADC分辨率为10位,内置的是一个逐次逼近型ADC,他的ADC的AD转换结果是并行方式输出的,有8个模拟通道,转换结束会产生中断请求,结果暂存在ADC数据寄存器里
193,驱动二极管的时候要看有没有驱动作用的反相器反相
194,看门狗定时器WDT是一个倒计时计数器,也就是减法的
195,自由软件就是一种可以不受限制的使用,复制,研究,修改和分发的软件,不代表是免费
大部分自由软件不收费,自由软件必定是开源的,自由软件一旦按照GPL授权发布,它将永远有GPL授权
196,Linux跟Unix是完全不同的,对于不同体系的CPU,Linux内核的源代码不一样
197,CAN采用的是csc冗余校验
198,RTC的滴答时钟不是固定1Hz,是灵活的,是可配置的
199,占空比等于TCMPBn/TCNTBn,(P就是PWM这样好记)
200,SPI,IIC,UART,低电平有效,高电平空闲
201,硬件抽象层HAL和板级支持包BSP都是嵌入式系统的底层软件
硬件抽象层HAL(包括:引导程序,硬件配置程序,硬件访问代码)是操作系统层(操作系统内核)和硬件之间设置的独立的接口软件层,是所有直接依赖于硬件的软件,隐藏了硬件的差异性
引入HAL是为了对硬件进行抽象,并且支持上层软件在不同体系结构和硬件之间移植(改善了可移植性)(上层代码通过BSP访问底层硬件)
板级支持包可以看作是硬件抽象层在特定的操作系统下的具体实现,有些不区分HAL和BSP
202,BSP有硬件相关性又有操作系统相关性,,必须针对特定硬件专门编写,,包含硬件相关的设备驱动程序
与硬件平台直接相关,BSP的调试有最小系统的调试和外围设备驱动程序的调试
BSP在复位之后:硬件初始化(所需的硬件),引导加载操作系统(引导加载程序bootloader,设置嵌入式处理器的工作模式,设置中断向量表配置),为操作系统提供硬件相关的驱动程序(所有外设的驱动程序)
主要完成(加电自检,外设存在自检,初始化外围设备,加载和启动操作系统)
203,Nios ll是Altera公司推出的一个系列,是32位RISC嵌入式处理器(硬件)不是操作系统,用于支持FPGA期间上实现可编程片上系统SoPC。不是免费和开源的。
WEC7是微软的,在硬件和内核层之间的就是BSP
204,引导加载程序(bootloader),相同操作系统硬件不同则不同的bootloader
bootloader 是底层软件的一部分,上电复位之后首先运行引导加载程序,它负责系统的上电自检,硬件初始化(包括外围设备,初始化出一个硬件环境,不会初始化所有的外设),加载和启动操作系统。(配置系统参数,简历存储空间映射,建立上层软件的运行空间)
bootloader执行的第一条指令一般会放在ROM上,为了非易失
205,U -boot(Universal boot loader ) 是公认功能最强最具弹性以及更新最快的开源bootloader是遵循GPL的
它支持启动加载也支持下载模式
Xenomai是Linux的发行版
206,bootloader里面的两个步骤(一般都是两个,比如Uboot就是两个)
stage1里面:基本的寄存器设置,系统基本参数设置,时钟初始化
(与处理器体系结构相关的硬件初始化和板级初始化等通常在第一阶段)
CPU的体系结构代码通常在这一步,
stage2里面:调用内核代码,相操作系统内核传递启动参数,将内核代码和根文件系统影响从ROM存储器复制到RAM,,stage2主要通过C语言实现以便实现操作系统加载功能
207,设备驱动程序device driver是直接与硬件相互作用并控制硬件的软件,
只能被高层软件调用而无法自行运行(不是BSP哦别搞混了),对上层软件屏蔽硬件细节,对下层硬件直接操作
初始化操作在系统上电或复位的时候初始化硬件,打开设备操作让设备处于工作状态,设备读取和写入,数据的收发可以采用擦查询,中断,DMA方式
208,小型的操作系统如uC/OS-II只包括操作系统内核,包括设备驱动程序,而编写设备驱动程序没有统一的框架(也就是没有标准设备驱动程序)
大的操作系统比如WinCE,Linux,VxWorks等,定义了统一的设备驱动程序的框架(也就是有标准)
Linux,(VxWorks,iOS)等类Unix操作系统还会把I/O设备抽象成设备文件
209,VxWorks操作系统里,BSP,网络驱动程序和USB驱动程序等构成了硬件抽象层。
设备驱动程序分:初始化部分,,函数功能部分,,中孤单服务程序,,
其中函数功能部分包括7个基本的I/O操作函数(创建create,打开open,读取read,写入write,关闭close,移除remove,其他控制命令ioctl,,,,,,,,,读写开关创建移除其他),他们在设备驱动程序中都有对应的实现函数
210,实时系统:必须在有限和确定时间内对外部时间做出相应的信息系统
时限(dealdline 最后期限),分相对时限和绝对时限
211,嵌入式系统不都是实时系统,实时系统也不一定都是嵌入式系统
硬实时操作系统:VxWorks ,RTENS,QNX,uC/OS-II ,Nucleus,,他们都是微内核
实时系统的特征:时间约束性,可预测性(硬件延迟,软件执行的可预测),可靠性,交互性
实时操作系统RTOS,规定时间内正确完成时间,完成任务的时间和硬件,操作系统,应用软件都有关系(能满足确定性时限是硬实时操作系统,否则是软实时操作系统)
评价实时系统的实时性最重要的指标是响应时间,是系统从事件请求开始到任务完成的时间间隔
不存在绝对的指标说实时性
212,高铁购票系统是软实时系统,飞机是强实时
213,实时操作系统必须具备的特征:事件驱动,抢占式调度,多级中断嵌套处理,异步IO和中断处理能力,任务切换时间和中断延迟时间确定
RTOS响应时间具体指标:中断延迟时间,任务切换时间,进程切换时间,存储器延迟时间
214,ARM指令长度固定,单周期
215,选择嵌入式系统软件结构的基本原则是可以满足响应时间的最简单结构
216,中间件软件是除了操作系统内核,设备驱动程序和应用软件之外的系统软件
(中间件式具有标准程序接口和协议的通用服务)
217,Uboot 是能最强、最具弹性,更新最快开放源码引导加载程序(不是BSP,是一种bootloader),,PMON是开源的bootloader,还有 LILO,ViVi,GRUB,
(RTAI是实时应用接口,是Linux发行版,不是bootloader)
218,民航飞机操作系统大多数都是具有时间约束性,并不是硬实时系统
飞行空气器是强实时系统
219,字符形状的两种方法,一种是点阵法,一种是轮廓法。点阵法就是一个X轴,一个Y轴对应的那个东西,,,轮廓法是直线或者曲线的起点和终点以及控制点的坐标
220,双绞线的特点是误码率高、成本低、传输有限,易受外部高频电磁波干扰,主要用于固定电话回路和计算机局域网
221,两种短距离无线通信技术,WiFi采用跳频扩频技术,Blue tooth是蓝牙个人局域无线网协议802.15的基础
222,对于S3C2410而言,TCNTBn决定PWM的周期,TCMPBn决定PWM信号的占空比,
如果TCNTBn=100,TCMPBn=60,那么一个周期有100个定时器输入时钟周期,一个PWM波信号周期内的低电平的宽度是40个定时器输入时钟周期
223,2的n次方,就是n条地址总线,2的n次方*数据线条数==存储器的容量
224,嵌入式正常工作的时候启动方式是从非易失存储介质中引导和加载系统代码,叫做启动加载模式,,,,,调试或维护更新阶段使用的系统启动方式是通过通信端口从调试主机上下载操作系统的映像叫做下载模式
225,目前网上用的最多的音频编码格式:MP3,最新也是应用最多的视频编码格式MPEG-4
226,以太网采用的通信协议是802.3
227,EORNES是不相等逻辑异或放置,并更新程序存储器的状态位
228,嵌入式系统,固化存储,可裁剪性,实时性等
硬实时操作:Vxworks,pSOS uC/OS-II等强实时性,
软实时或者非实时的主要用于PC手持设备,WinCE,多户嵌入式Linux,智能移动电话,安卓,MP3等
开发方式:专门为嵌入式环境开发的嵌入式操作系统,
从通用计算机操作系统移植而来的嵌入式操作系统
商业模式:免费的嵌入式操作系统,公开,研究的人多,稳定性和技术支持差,如RTEMD,eCOS,FreeRTOS
商业嵌入式操作系统:稳定性好,可靠性强,有完善的技术支持和售后服务,但是比较昂贵
VxWorks(微内核硬实时)(按照开发版本授权数量收授权费,后面产品还会收版权费),uC/OS系列(收一次性)
229,与计算机操作系统相比嵌入式操作系统的特点:
实时性,抢占式多任务处理,可裁剪性
230,单内核(宏内核)结构:
内核内的各个功能模块整合在一起,模块之间交互通过直接调用其他模块的函数,执行效率高,性能好,,,,,,
整体结构:可自由调用,,但是他们相互关联,耦合度高,维护和升级困难
分层结构:结构清晰,接口简单,系统的正确性得到保证,利于开发和维护
但是每一层都要向上层提供通信机制影响系统的效率
231,单内核优点性能好,功能切换和通信开销比较小,,,缺点是不哦她那个的功能组件也在里面,占用资源多,维护工作量大
单内核(宏内核)结构的操作系统有:Unix,Linux,Windows 9x,Android,MacOS
232,微内核结构:仅将必须的基本功能(任务调度,任务间通信,低级存储管理,中断处理)放入内核,运行在核心态,,,其他功能都在内核之外,由用户态运行的服务
操作系统的各种功能都以服务器方式时限,向客户机提供服务
优点:内核结构很小,开发和维护方便,接口一致,有自己的内存空间,可扩展性和可配置性强很适合可裁剪要求,支持分布式系统,动态更新服务模块,可靠性高
缺点:通信和上下文切换的开销增大,各个功能之间松散耦合,只完成服务功能个,系统管理功能交给一个或多个特权服务程序
使用微内核的操作系统的有:QNX,VxWorks(有标准设备驱动程序),uC/OS-II,iOS(可以属于宏内核,实质上是微内核),Nuclesu PLUS(Nucleus RTOS),RTEMS(是GPL开源的微内核抢占式实时系统,非常稳定并且余小宁速度快,提供完整的TCP/IP协议栈,支持多处理器,是一个开源无版税RTOS),
分层和模块化相结合的结构将操作系统分为:应用软件层,中间件层,操作系统层和硬件抽象层。。移植工作集中在硬件抽象层。
233,VxWorks可靠性高,实时性强开发环境友好,高度符合POSIX基本(甚至最新版本完全符合)标准和实时标准
QNX,符合POSIX基本标准和实时标准,内核提供四种服务,进程调度,进程间的通信,底层网络通信和中断处理,
234,TinyOS是(UC Berkely开发的)开源嵌入式操作系统(uC/OS-II,Linux,ECOS都是开源的),专门为硬件资源,为有限的无线传感器网络应用而量身定制的。有两级调度和轻量级线程技术,主动消息和事件驱动,组件化编程,。
235,eCOS,主要应用在低成本和便携式的消费电子,电信,车载设备,手持设备等
236,FreeRTOS,完全免费且源码公开,是轻量级的开源迷你实时操作系统内核
237,Unix支持多用户和多任务,网络和数据库功能强大,支持多种处理器架构,依靠可靠性和可伸缩性等在巨型机,服务器工作站等多种硬件平台是主流
商业版的Unix有AIX,UnixWare
Linux(遵循GPL授权许可,保护软件的自由性),是完全重新编写,模仿了Unix系统有Unix的全部功能,自由软件,源代码始终公开,
238,一个典型的Linux发行版除了Linux内核之外,还有安装工具,实用程序,命令行程序shell,图形用户界面(不属于Linux内核),常用的应用程序,以及一些其他的自由软件
Linux发行版最早的最有名的是GNU/Linux操作系统,是可移植性最好的操作系统内核,从游戏机,掌上计算机到大型机和巨型机都可以移植使用
239,Linux是一种“类Unix”系统,,,Unix是优秀的主流操作系统,,,
Linux的运行效率还是没有超过Unix,,不同体系的CPU对应的Linux内核源代码各不相同
尽管Linux和Unix的源代码完全不同,但是他们的函数名称和参数十分相同
240,Linux是参照Minix开发的,但是没有采用Minix微内核设计,而是采用了Unix相同的单内核结构
Linux支持动态装载内核模块和内核线程,LInux内核运行在单独的内核地址空间
Linux操作系统由用户进程,OS服务组件和Linux内核3个部分组成
Linux内核()空间分三个层次:
最上层是系统的调用接口,是内核和应用程序的唯一接口,应用程序/GLIBC通过系统调用访问内核中的特定函数
中间层是内核的核心部分,主要是管理(管理模块向上返回统一的访问接口)系统资源,确保系统安全和隔离保护各个用户,内核种有初始化组件,内存管理器(MM),进度调度器(SCHED),设备驱动程序,可加载模块,虚拟文件系统(VFS,在系统调用接口和内核所支持的文件系统之间提供了一个交换层,,是Linux的通用文件系统模型),进程之间的通信(IPC),网络接口(IPC)
网络功能强大,适用于小型路由器的操作系统
最下层是BSP,用于支持特定体系结构的处理器和特定的硬件平台,例如引导加载程序,以及DMA,MMU设置,中断处理相关的代码
241,Linux的改造方式,
内核补丁方式:保留了Linux应用编程模式,实时任务和普通的同样的编程方式的API,实例:MontaVista Linux
双内核方法:在系统中增加微内核形态的第二个内核,并作为硬件和通用Linux内核之间的抽象接口。
超微内核方式:硬件抽象层使得实时内核和非实时内核之间由紧耦合关系变成松耦合关系,对系统的稳定性和代码维护都非常有利,实例如操作系统自适应域环境ADEOS
242,基于Linux内核构建嵌入式Linux,成本低,内核版本更新及时,但是定制和裁剪工作量大,实时性差
基于Linux发行版构建嵌入式Linux,实时性高,定制和裁剪工作量小,针对性强
国际上比较有代表性的uCLinux,RTLinux,Linux,MontaVista Linux等,国内的红旗嵌入式Linux,中软实时嵌入式Linux
243,Android系统:是智能手机和平板电脑等移动设备的软件包,他的核心是Linux内核为基础的半开放源代码操作系统
免费和开放的系统,无需支付版税,对第三方软件完全开放的平台,UI用户界面更好
244,Android系统组成和结构采用堆层式软件架构,四层
从高到底是:应用程序,应用程序框架,系统运行库,Linux内核
245,Android主要用于移动便捷设备,谷歌公司不对基于Android操作系统把关
使用不同的软件开发包,则使用的汇编语言也可以不同
246,IOS操作系统是以类Unix的Darwin开源操作为基础的,也属于Unix的商业操作系统
它分四个层次:核心操作系统层,核心服务层,媒体层,触控界面层
247,IOS系统应用程序由用户代码和苹果公司提供的Framework组成,框架包括方法资源库,是帮助应用程序完成各个特定功能的软件库。。
系统框架是访问底层硬件的唯一途径,,应用程序通过框架的应用编程接口API调用这些功能,API指定可用的类,数据结构和协议,使用框架既省时又省力
Android是国内外目前最流行的手持设备操作系统,,
WinCE源代码数量庞大,API函数丰富
248,uC/OS-II主要特点:公开代码,实时内核,可以指,可裁剪,可固化, (嵌入式系统的基本要求)抢占式内核,时间确定性,多任务,多系统服务,管理64个任务,8个给系统,56个给用户,不同任务的优先级不同,不支持时间片轮转调度机制
249,uC/OS-II基本功能中不包括文件系统。每个任务都有自用栈
(只包括操作系统内核不包括设备驱动程序)
251,uC/OS-II是最小内核之一,提供基本功能:任务调度,任务之间的通信,同步,任务管理,时间管理,内存管理等
252,uC/OS-II中,任务是操作系统的基本调度单位,任务之间通过使用系统服务进行同步和通信
任务三部分组成,程序代码,任务堆栈,任务控制块
程序代码:一个没有返回值的c函数,通常定义一个void类型指针作为任务函数的入口参数
任务堆栈:每个任务都有自己的栈空间,每个任务的栈空间大小不同
任务控制块TCB,用于保存任务状态和属性的数据结构,在任务创建时被初始化
内容包括:指向任务堆栈栈顶的指针,任务的优先级,任务的状态字
多个任务的TCB构成双向循环链表
uC/OS-II任务状态有5种:休眠态,任务代码驻留在内存还没交给内核调度的状态
就绪态,任务准备好,可以运行,但是因为别的高优先级在运行
运行态, 等待态(挂起态):正在运行的任务因为等待某一件事情的发生而把处理器的使用权让出去而自身挂起的状态。等待可以是外设的IO操作,时间信号量,共享资源被释放,超时时间到达等
(等待一个信号,这个时候是等待态,信号来了,这个时候可以就绪了,但是有更高的优先级的状态在,如果你的优先级高就可以中断其他的东西,其他的东西就叫做被中断态)
被中断态:因为处理器执行中断服务程序而被暂时运行的任务状态
软件结构有四层:应用软件层,API层,内核层,设备驱动层
253,uC/OS-II可以管理64个任务,用户有56个,它预定义了两个系统任务为应用程序服务:
空闲任务:每个应用系统都必须使用空闲任务,系统总是把最低优先级固定赋给空闲任务,该任务在没有其他的任务处于就绪态的时候运行
统计任务:可选的统计任务每秒钟运行一次
当程序进入临界区的时候,不希望系统进行任务调度和处理器转入中断服务程序,在uC/OS-II种有两种解决方法,利用宏OS_ENTER_CRIT()(进入临界区,保护共享资源,防止任务或中断)和OS_EXIT_CRITICAL实现关中断和开中断,宏OS_ENTER_CRITICAL()让系统进入临界状态,则OS_EXIT_CPITICAL退出临界状态
利用OSSchedLock()和OSSchedUnlock给调度器上锁和解锁
uC/OS-II,任务调度(跟保存当前任务的上下文没关系)的时候,内核选择当前的所有就绪任务中最高优先级的任务转运行态,,
内核通过OS_TASK_SW()进行任务级的任务切换,保存当前任务的上下文,并恢复新的任务的上下文
254,uC/OS-II中断服务执行过程:
保存全部的CPU寄存器,调用OSIntEnter()或OSIntNesting直接加1,,执行用户中断服务代码,,调用OSIntExit(),恢复所有CPU寄存器,执行中断返回指令
中断嵌套层可以达到255层,在中断处理中不允许进行任务管理,事件管理以及任务调度,中断返回之前必须调用退出中断函数void
255,uC/OS-II的事件控制块可以用于对信号量的管理
(就绪任务放在就绪任务表里面)
uC/OS-II完成任务切换所需的时间取决于任务的自用栈的大小
256,虽然是抢占式,任务调度的时候也得是就绪的才能运行,等待态是不行的是不能运行的
任务调度需要满足的条件:调度没有被禁止,就绪表查到的优先级比现在运行的高,中断已经执行完毕,,,
257,uC/OS-II通过系统函数进行任务管理,并以优先级作为任务的标识
258,任务创建:任务可以在调用OSSart之前就创建,也可以在其他任务运行过程被创建,但不能由中断服务程序创建,函数OSTaskCreate()和OSTaskCreateExt()都可以创建任务。
OSQCreat()是创建事件控制块
任务删除:删除任务的操作将使任务转入休眠状态,不再被内核调度,函数OSTaskDel()既可以删除任务自身,也可以删除器其他任务
任务挂起和任务恢复:调用OSTaskSuspend()函数可以挂起一个任务,而被挂起的任务只能等待其他任务调用OSTaskResume()函数才能实现任务回复,如果任务在被挂起的时候正在等待延时,则挂起操作将被取消
259,uC/OS-II的时钟节拍(在10Hz~100Hz)和时间管理服务:
用户必须在调用OSSart()启动多任务调度以后再开启时钟节拍器,调用OSSart()之后做的第一件事情就是初始化定时器中断
处于运行态的任务可以通过调用OSTimeDly()或OSTimeDlyHMSM()延迟一段时间,运行态任务将再调用函数之后转入等待状态,直到等待时间到达,OSTim-Tick()将使该任务转入就绪态
参数hours,minutes等等,实际的延时时间使时钟节拍的整数倍
某个任务因调用OSTimeDly()或OSTimeDlyHMSM()函数进入延时等待状态,其他任务可以调用void OSTimeDlyResume(INT8U prio)将其唤醒,参数prio表示欲唤醒的任务的优先级
260,uC/OS-II再任务共享数据和实现任务间通信的方法:信号量,消息邮箱和消息队列,互斥信号量mutex和事件标志组,任务调度器上锁和解锁(不包括任务就绪表)
任务或者中断子服务程序可以通过事件控制块ECB向其他任务发出信号,
任务也可以在ECB上等待其他任务或者中断服务程序发送信号,但中断服务程序不能等待信号
用户必须在多任务调度启动之后再使能时钟节拍中断。
互斥信号量通常用于实现对共享资源的独占访问,话可以解决优先级反转问题,
OSSemPost释放信号量,OSSmePend用于等待一个信号量
261,内核提供任何功能之前必须调用OSInit()函数进行内核初始化
OSInit()对内核使用的所有变量和数据结构进行初始化,创建空闲任务OS_Taskldle()并使之处于就绪态
OSSart()将启动多任务调度并从就绪态任务中选择高优先级的任务转入运行态,故主函数main()调用OSSart()之前那必须至少创建一个用户任务
262,uC/OS-III多加了事件片轮转电镀,内核数量无限制,任务级的时钟节拍处理,增强的内置性能测试功能,时间戳
uC/OS-II是开源的,但是升级uC/OS-III就是商用的
263,Linux系统调用访问内核,驱动访问硬件
264,RTOS的实时指标包括:吞吐量,生存时间,响应时间
265,嵌入式软件要求时空效率要求高,实时性要求高,软件可裁剪,尽可能去除冗余。
软件受限于功能和具体应用环境
266,带中断的轮询结构叫做前后台结构。
万用表控制软件适合采用简单的轮询结构,结构简单便于编程,软件在每一次循环检查旋转开关位置和摁键的状态然后执行相应的分支程序
267,嵌入式系统带中断的轮询结构:前台由若干个中断服务程序组成,,又称之为中断驱动结构,又叫做前后台结构
268,BSP和调试工具无关,,降低BSP的复杂度可以渐进的方法,BSP的调试分为最小系统的调试和外围设备驱动程序的调试,,,
269,BSP上电复位之后才可以进行系统软硬件的初始化,BSP一般是嵌入式软件开发人员进行开发,而HAL一般由操作系统厂商提供,BSP是操作系统层和硬件层之间的,嵌入式系统的软件层和中间层不需要BSP
bootROM不仅仅存储引导加载程序bootloader,而且还存储操作系统映像,应用程序代码和用户配置数据等信息
270,真正实现任务切换的是OSCtxSw()
任务级的调度是由函数OSSched()完成(任务调度的前导函数)
中断级的调度是由函数 OSIntExit()完成
271,任务调度满足需要:OSIntNesting=0;;OSLockNesting=0也就是没有中断,也没有锁住
272,空闲任务永远不会处于挂起态,因为只要其他任务都没运行,他就上
273,BootLoadeer的实现依赖于CPU的体系结构
274,WEC的BSP通常有:boot loader OEM适配层,设备驱动程序,内核独立传输层,镜像配置文件等组成
275,LInux内核主要的作用:进程管理和调度,内存管理,文件管理,网络接口和进程间的调度。、为用户提供了一个虚拟的接口,每个用户都使用自己的虚拟空间。
276,就软件而言,对硬件设备的访问通过设备接口内的寄存器实现
某些操作系统允许用户代码绕过操作系统直接访问硬件
驱动程序常常以若干函数的集合的形式出现,这些函数封装了对硬件(包括虚拟硬件)的操作
在不使用操作系统的嵌入式系统中,驱动程序和高层软件之间没有严格的界限
bootROM是用来存储bootloader程序的非易失存储器
VxWorks操作系统有四种操作类型:宿主机移植,体系结构移植,目标板移植,BSP升级
277,Linux最新版本是3.0
278,驱动程序通常位于软件的最下层
279,OS_CPU_C.C是创建任务的自用栈空间
280,Dalvik是谷歌等厂商开发的用于Android平台的Java虚拟机,允许在有限的内存中运行多个虚拟机实例
281,IOS的前身是UNIX-BSD
282,嵌入式LInux发行版产品是在LInux内核的基础上进行了嵌入式改造,主要是小型化和实时性增强
超微内核方式是在实时内核和非实时内核之外增加了一个功能进一步缩减的超微内核,专门负责处理中断
双内核的优点是微内核可以提供硬件实时支持,缺点是微内核与标准的Linux共存,实时任务需要按照微内核提供的另一套API进行设计
283,如果任务挂起时候正在等待延时,那么挂起操作取消
删除任务的操作将使任务转入休眠态,不再被内核调度
284,单次执行的任务通常执行三步操作:任务准备工作,任务实体,自我删除
285,MontaVistaLinux使抢占优先级内核
286,大多数uc/OS-II服务的执行时间与系统中运行的任务个数无关。
287,系统设计阶段,必须确定那些功能由硬件完成,哪些由软件完成
288,被中断态不可能直接转入等待态
289,挂起的任务,其他任务可以用OSTaskResume恢复
OSSchedLock()可以锁定调度器
OSSemPost()用来释放信号量
OSFlagCreate()只能被任务调用,而不能被中断服务程序调用
OSQAccept()在没有接收到信息的时候不会挂起任务,因而可以在中断服务中调用。
运行态调用OSSenDly()后将转入等待态
OSTaskResume()实现挂起态的恢复,会进入就绪态
调用OSTimeDly()会让uc/OS-II进行一次任务调度
290,休眠的任务在中断返回后进入就绪态
291,Linux其实是基于Linux内核的GNU操作系统
292,硬实时操作系统一般和人的交互性要求相对较弱
293,内核是操作系统中的一组核心程序模块,作用是管理系统资源,支持多任务并发执行
294,宏内核分单体结构和分层结构
295,消息邮箱只能接收一条信息
中断服务程序只能用OSSemAccept()请求信号量
如果在中断服务程序中调用OSSemPost()函数,并不会立即发生任务切换
函数OSFlagAccept()在事件标志未被释放时不会挂起任务,而是会立即返回
296,最简单的软件结构是轮询结构
22分+37分=59
填空题:
1,局域网采用分组____交换__技术,发送设备必须把传输的数据分成小块称之为__帧__
2,在MySub子程序处理完之后,返回原调用程序处的语句是:___MOV PC,LR__
3,系统将控制权从低优先级任务转移到高优先级任务所花费的事件称之为任务__抢占__时间,,
从接收到可屏蔽中断请求信号到操作系统做出响应并转入中断服务程序所需要的最长时间即__中断延迟__时间
4,Android系统堆栈式软件架构,分四层,从低到高依次是,Linux内核层,__系统运行层__,应用程序框架层和应用程序层。其中高两层主要用__Java__语言实现
5,基本功能放入内核,运行在核心态;其他功能都在内核以外,由在用户态运行的__服务__来完成,这种内核结构称之为__微__内核结构
6,中断嵌套计数器___OSIntNesting__-1
7,通过JTAG接口可以访问CPU的内部__寄存器__。
8,给定时间内系统可以处理的事件总数__吞吐量__
超过这个事件再给也不能给出有用的输出数据,这个时间是__生存时间__
9,嵌入式系统的核心部分式__内核__,对硬件设备进行控制和管理的程序模块称为__驱动程序__
10,嵌入式系统__复位_的时候,所有微处理器从CPU制造商预先安排的地址上取指令。
CPU第一条指令就是__引导加载程序__的第一条指令
11,引导加载程序在引导加载操作系统的时候,设置相关的寄存器和资源,跳转到__操作系统__所在的空间,执行引导,这个过程可以给__操作系统/内核__传递参数,可以控制系统启动的模式
12,U-Boot是一种通用的引导加载程序,对__PowerPC__系列处理器支持最为丰富,,对__Linux__操作系统的支持最为完善
13,所谓驻留监控软件是一段固化在__目标机__ROM中的程序。
它是一种成本比较低的调试方式,不需要专门的硬件调试和__仿真__设备
14,目前数码相机中用于触存储所拍摄的相片大多数__Flash__存储器
15,Thumb -2指令集提供的专门用于开关中断的专用指令,关外部中断使用的指令是:__CPSID I__,开外部中断的指令是:__CPSIE I__
16,半导体存储器芯片的而存储容量取决于该芯片的__地址__总线的条数和__数据__总线的位数
17,媒体播放器等软件运用在嵌入式系统上,往往有内部结构精简,__代码__轻量化,占用储存资源少
18,__任务执行预设__时间,又叫做任务最快完成时间。
19,实时系统对时间约束要求的严格性,让___可预测性___成为实时系统的一项重要性能要求。
20,嵌入式系统的开发过程按顺序可以分为__需求__分析与规格说明,系统设计,__构件__设计,系统集成与测试。
21,NOR,NAND
22,MISO__主机输入从机输出__,MOSI__主机输出从机输入__
23,uc/OS-II内核只提供任务调度,任务之间的 通信,任务管理,时间管理和__存储__管理等
24,加电自检
25,WEB中,构件设计阶段需要设计支持以太网通信的电路,包括以太网控制电路和以太网__去驱动__电路。。
26,R14是___程序链接寄存器___
27,通用输入输出接口,英文__GPIO__
28,引导加载程序主要完成内存加电自检,外设存在自检,__内存地址__映射,初始化外围设备,内存寻址定位,加载和启动操作系统
29,就绪任务登记在__就绪__表
30,常见的嵌入式Linux进程通信机制包括:信号,管道,__消息队列__,共享内存和__套接字__
31,__GCC__是编译器,__GDB__是调试器工具
32,__802.11n__协议是最快的,108Mbps甚至更高
33,S3C2410的4种工作模式下,__慢速__模式下不使用PLL时钟,由外部晶体或外部时钟直接提供给其他组件使用
34,BootLoader执行main()的时候依次执行三个主要函数:OSInt,OSTaskCreate(),OSStart()。
35,启动linux的时候bootloader提供的几种OS装载方式:__以太网__,__接口__,USB接口装载
36,OSIntExit将中断嵌套层数计数器的值__-1__
37,嵌入式应用程序经过交叉工具链生成映像文件之后,需要下载到__目标机__进行调试,,
调试完之后映像文件必须由专用的工具烧写到ROM中去,这种烧写工具俗称为__编辑器__
38,GIF__256__种颜色
39,热点的正式名称是__无线接入点__,它实际上是一个无线交换机或者__无线路由器__
40,存储器带宽和存储器总线工作__频率__有关,也与数据线的__位数__以及每个 总线周期的传输次数有关
41,SPI的四条线,串行__时钟__线,,,,从机__选择 __线
42,__截止时间__和__任务执行预设时间__是实时系统的任务时限的两种类型
43,,,虚拟机管理软件,,指令集模拟器,,,仿真软件,,都是仿真平台
44,精细衡量快速中断时间一致性变化的术语是__抖动__
45,JTAG标准的TAP接口具有__5__根线,必须的是4根
46,gcc将源文件编程可执行文件有四个步骤:预处理,编译,汇编,连接
47,PCM编码的主要应用是固定电话通信
48,IP分ABC类称之为网络号,它包括网络号和主机号,10.8.1.4第一位在0~127之间是A类,主机号16进制表示是080104
把第一位换成2进制,首位是0就是A,开始是10就是B,110开始就是C类,C的话就只有一个是主机号了
49,GPRS接入速度最慢
50,除法可以用,LDR#
51,启动总线让SCL产生时钟,SDA发送数据,的条件是SCL线1,SDA线从1到0
52,看门口WDT
53,中断延迟时间包括两部分:最长关中断时间,处理中断到开始执行第一条指令
54,uc/os-ii中,低优先级阻塞高优先级的现象是:优先级反转。。可以由互斥信号量解决
55,虚拟文件系统,逻辑文件系统,驱动
56,IP地址,前面
57,uc/os-II中多任务之间传递信息的不同类型信号称之为:事件
呕心沥血,字字斟酌
openvela 操作系统专为 AIoT 领域量身定制,以轻量化、标准兼容、安全性和高度可扩展性为核心特点。openvela 以其卓越的技术优势,已成为众多物联网设备和 AI 硬件的技术首选,涵盖了智能手表、运动手环、智能音箱、耳机、智能家居设备以及机器人等多个领域。
更多推荐



所有评论(0)