嵌入式四级资料资料.docx
《嵌入式四级资料资料.docx》由会员分享,可在线阅读,更多相关《嵌入式四级资料资料.docx(18页珍藏版)》请在冰豆网上搜索。

嵌入式四级资料资料
1、嵌入式系统的定义
(1)定义:
以应用为中心,以计算机技术为基础,软硬件可裁剪,适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。
(2)嵌入式系统发展的4个阶段:
无操作系统阶段、简单操作系统阶段、实时操作系统阶段、面向Internet阶段。
(3)知识产权核(IP核):
具有知识产权的、功能具体、接口规范、可在多个集成电路设计中重复使用的功能模块,是实现系统芯片(SOC)的基本构件。
(4)IP核模块有行为、结构和物理3级不同程度的设计,对应描述功能行为的不同可以分为三类:
软核、固核、硬核。
2、嵌入式系统的组成:
硬件层、中间层、系统软件层和应用软件层
(1)硬件层:
嵌入式微处理器、存储器、通用设备接口和I/O接口。
嵌入式核心模块=微处理器+电源电路+时钟电路+存储器Cache:
位于主存和嵌入式微处理器内核之间,存放的是最近一段时间
微处理器使用最多的程序代码和数据。
它的主要目标是减小存储器给微处理器内核造成的存储器访问瓶颈,使处理速度更快。
(2)中间层(也称为硬件抽象层HAL或者板级支持包BSP):
它将系统上层软件和底层硬件分离开来,使系统上层软件开发人员无需关系底层硬件的具体情况,根据BSP层提供的接口开发即可。
BSP有两个特点:
硬件相关性和操作系统相关性。
设计一个完整的BSP需要完成两部分工作:
A、嵌入式系统的硬件初始化和BSP功能。
片级初始化:
纯硬件的初始化过程,把嵌入式微处理器从上电的默认状态逐步设置成系统所要求的工作状态。
板级初始化:
包含软硬件两部分在内的初始化过程,为随后的系统初始化和应用程序建立硬件和软件的运行环境。
系统级初始化:
以软件为主的初始化过程,进行操作系统的初始化。
B、设计硬件相关的设备驱动。
(3)系统软件层:
由RTOS、文件系统、GUI、网络系统及通用组件模块组成。
RTOS是嵌入式应用软件的基础和开发平台。
(4)应用软件:
由基于实时系统开发的应用程序组成。
3、实时系统
(1)定义:
能在指定或确定的时间内完成系统功能和对外部或内部、同步或异步时间做出响应的系统。
(2)区别:
通用系统一般追求的是系统的平均响应时间和用户的使用方便;而实时系统主要考虑的是在最坏情况下的系统行为。
(3)特点:
时间约束性、可预测性、可靠性、与外部环境的交互性。
(4)硬实时(强实时):
指应用的时间需求应能够得到完全满足,否则就造成重大安全事故,甚至造成重大的生命财产损失和生态破坏,如:
航天、军事。
(5)软实时(弱实时):
指某些应用虽然提出了时间的要求,但实时任务偶尔违反这种需求对系统运行及环境不会造成严重影响,如:
监控系统、实时信息采集系统。
(6)任务的约束包括:
时间约束、资源约束、执行顺序约束和性能约束。
4、实时系统的调度
(1)调度:
给定一组实时任务和系统资源,确定每个任务何时何地执行的整个过程。
(2)抢占式调度:
通常是优先级驱动的调度,如uCOS。
优点是实时性好、反应快,调度算法相对简单,可以保证高优先级任务的时间约束;缺点是上下文切换多。
(3)非抢占式调度:
通常是按时间片分配的调度,不允许任务在执行期间被中断,任务一旦占用处理器就必须执行完毕或自愿放弃,如WinCE。
优点是上下文切换少;缺点是处理器有效资源利用率低,可调度性不好。
(4)静态表驱动策略:
系统在运行前根据各任务的时间约束及关联关系,采用某种搜索策略生成一张运行时刻表,指明各任务的起始运行时刻及运行时间。
(5)优先级驱动策略:
按照任务优先级的高低确定任务的执行顺序。
(6)实时任务分类:
周期任务、偶发任务、非周期任务。
(7)实时系统的通用结构模型:
数据采集任务实现传感器数据的采集,数据处理任务处理采集的数据、并将加工后的数据送到执行机构管理任务控制机构执行。
5、嵌入式微处理器体系结构
(1)冯诺依曼结构:
程序和数据共用一个存储空间,程序指令存储地址和数据存储地址指向同一个存储器的不同物理位置,采用单一的地址及数据总线,程序和数据的宽度相同。
例如:
8086、ARM7、MIPS…
(2)哈佛结构:
程序和数据是两个相互独立的存储器,每个存储器独立编址、独立访问,是一种将程序存储和数据存储分开的存储器结构。
例如:
AVR、ARM9、ARM10…
(3)CISC与RISC的特点比较(参照教程22页)。
计算机执行程序所需要的时间P可以用下面公式计算:
P=I×CPI×T
I:
高级语言程序编译后在机器上运行的指令数。
CPI:
为执行每条指令所需要的平均周期数。
T:
每个机器周期的时间。
(4)流水线的思想:
在CPU中把一条指令的串行执行过程变为若干指令的子过程在CPU中重叠执行。
(5)流水线的指标:
吞吐率:
单位时间里流水线处理机流出的结果数。
如果流水线的子过程所用时间不一样长,则吞吐率应为最长子过程的倒数。
建立时间:
流水线开始工作到达最大吞吐率的时间。
若m个子过程所用时间一样,均为t,则建立时间T=mt。
(6)信息存储的字节顺序A、存储器单位:
字节(8位)
B、字长决定了微处理器的寻址能力,即虚拟地址空间的大小。
C、32位微处理器的虚拟地址空间位232,即4GB。
D、小端字节顺序:
低字节在内存低地址处,高字节在内存高地址处。
E、大端字节顺序:
高字节在内存低地址处,低字节在内存高地址处。
F、网络设备的存储顺序问题取决于OSI模型底层中的数据链路层。
6、逻辑电路基础
(1)根据电路是否具有存储功能,将逻辑电路划分为:
组合逻辑电路和时序逻辑电路。
(2)组合逻辑电路:
电路在任一时刻的输出,仅取决于该时刻的输入信号,而与输入信号作用前电路的状态无关。
常用的逻辑电路有译码器和多路选择器等。
(3)时序逻辑电路:
电路任一时刻的输出不仅与该时刻的输入有关,而且还与该时刻电路的状态有关。
因此,时序电路中必须包含记忆元件。
触发器是构成时序逻辑电路的基础。
常用的时序逻辑电路有寄存器和计数器等。
(4)真值表、布尔代数、摩根定律、门电路的概念。
(5)NOR(或非)和NAND(与非)的门电路称为全能门电路,可以实现任何一种逻辑函数。
(6)译码器:
多输入多输出的组合逻辑网络。
每输入一个n位的二进制代码,在m个输出端中最多有一个有效。
当m=2n是,为全译码;当m<2n时,为部分译码。
(7)由于集成电路的高电平输出电流小,而低电平输出电流相对比较大,采用集成门电路直接驱动LED时,较多采用低电平驱动方式。
液晶七段字符显示器LCD利用液晶有外加电场和无外加电场时不同的光学特性来显示字符。
(8)时钟信号是时序逻辑的基础,它用于决定逻辑单元中的状态合适更新。
同步是时钟控制系统中的主要制约条件。
(9)在选用触发器的时候,触发方式是必须考虑的因素。
触发方式有两种:
电平触发方式:
具有结构简单的有点,常用来组成暂存器。
边沿触发方式:
具有很强的抗数据端干扰能力,常用来组成寄存器、计数器等。
7、总线电路及信号驱动
(1)总线是各种信号线的集合,是嵌入式系统中各部件之间传送数据、地址和控制信息的公共通路。
在同一时刻,每条通路线路上能够传输一位二进制信号。
按照总线所传送的信息类型,可以分为:
数据总线(DB)、地址总线(AB)和控制总线(CB)。
(2)总线的主要参数:
总线带宽:
一定时间内总线上可以传送的数据量,一般用MByte/s表示。
总线宽度:
总线能同时传送的数据位数(bit),即人们常说的32位、
64位等总线宽度的概念,也叫总线位宽。
总线的位宽越宽,总线每秒数据传输率越大,也就是总线带宽越宽。
总线频率:
工作时钟频率以MHz为单位,工作频率越高,则总线工作速度越快,也即总线带宽越宽。
总线带宽=总线位宽×总线频率/8,单位是MBps。
常用总线:
ISA总线、PCI总线、IIC总线、SPI总线、PC104总线和CAN总线等。
(3)只有具有三态输出的设备才能够连接到数据总线上,常用的三态门为输出缓冲器。
(4)当总线上所接的负载超过总线的负载能力时,必须在总线和负载之间加接缓冲器或驱动器,最常用的是三态缓冲器,其作用是驱动和隔离。
(5)采用总线复用技术可以实现数据总线和地址总线的共用。
但会带来两个问题:
A、需要增加外部电路对总线信号进行复用解耦,例如:
地址锁存器。
B、总线速度相对非复用总线系统低。
(6)两类总线通信协议:
同步方式、异步方式。
(7)对总线仲裁问题的解决是以优先级(优先权)的概念为基础。
8、电平转换电路
(1)数字集成电路可以分为两大类:
双极型集成电路(TTL)、金属氧化物半导体(MOS)。
(2)CMOS电路由于其静态功耗极低,工作速度较高,抗干扰能力较强,被广泛使用。
(3)解决TTL与CMOS电路接口困难的办法是在TTL电路输出端与电源之间接一上拉电阻R,上拉电阻R的取值由TTL的高电平输出漏电流IOH来决定,不同系列的TTL应选用不同的R值。
9、可编程逻辑器件基础
这方面的内容,从总体上有个概念性的认识应该就可以了。
10、嵌入式系统中信息表示与运算基础
(1)进位计数制与转换:
这样比较简单,也应该掌握怎么样进行换算,有出题的可能。
(2)计算机中数的表示:
源码、反码与补码。
正数的反码与源码相同,负数的反码为该数的源码除符号位外按位取反。
正数的补码与源码相同,负数的补码为该数的反码加一。
例如-98的源码:
11100010B反码:
10011101B补码:
10011110B
(3)定点表示法:
数的小数点的位置人为约定固定不变。
浮点表示法:
数的小数点位置是浮动的,它由尾数部分和阶数部分组成。
任意一个二进制N总可以写成:
N=2P×S。
S为尾数,P为阶数。
(4)汉字表示法,搞清楚GB2318-80中国标码和机内码的变换。
(5)语音编码中波形量化参数(可能会出简单的计算题目哦)采样频率:
一秒内采样的次数,反映了采样点之间的间隔大小。
人耳的听觉上限是20kHz,因此40kHz以上的采样频率足以使人满意。
CD唱片采用的采样频率是44.1kHz。
测量精度:
样本的量化等级,目前标准采样量级有8位和16位两种。
声道数:
单声道和立体声双道。
立体声需要两倍的存储空间。
11、差错控制编码
(1)根据码组的功能,可以分为检错码和纠错码两类。
检错码是指能自动发现差错的码,例如奇偶检验码;纠错码是指不仅能发现差错而且能自动纠正差错的码,例如循环冗余校验码。
(2)奇偶检验码、海明码、循环冗余校验码(CRC)。
12、嵌入式系统的度量项目
(1)性能指标:
分为部件性能指标和综合性能指标,主要包括:
吞吐率、实时性和各种利用率。
(2)可靠性与安全性
可靠性是嵌入式系统最重要、最突出的基本要求,是一个嵌入式系统能正常工作的保证,一般用平均故障间隔时间MTBF来度量。
(3)可维护性:
一般用平均修复时间MTTR表示。
(4)可用性
(5)功耗
(6)环境适应性
(7)通用性
(8)安全性
(9)保密性
(10)可扩展性
性价比中的价格,除了直接购买嵌入式系统的价格外,还应包含安装费用、若干年的运行维修费用和软件租用费。
13、嵌入式系统的评价方法:
测量法和模型法
(1)测量法是最直接最基本的方法,需要解决两个问题:
A、根据研究的目的,确定要测量的系统参数。
B、选择测量的工具和方式。
(2)测量的方式有两种:
采样方式和事件跟踪方式。
(3)模型法分为分析模型法和模拟模型法。
分析模型法是用一些数学方程去刻画系统的模型,而模拟模型法是用模拟程序的运行去动态表达嵌入式系统的状态,而进行系统统计分析,得出性能指标。
(4)分析模型法中使用最多的是排队模型,它包括三个部分:
输入流、排队规则和服务机构。
(5)使用模型对系统进行评价需要解决3个问题:
设计模型、解模型、校准和证实模型。
2014年嵌入式系统开发工程师模拟试题一
来源:
233网校 【233网校:
教育考试门户网站】 2013年9月29日
一、编程开发能力:
1、用预处理指令#define声明一个常数,用以表明一年中有多少秒(忽略闰年问题);写一个“标准”宏MIN函数,这个宏输入两个参数并返回较小的一个。
2、用变量a给出下面的定义:
(1)一个整型数(An integer);
(2)一个指向整型数的指针(A pointer to an integer);
(3)一个指向指针的指针,它指向的指针是指向一个整型数(A pointer to a pointer to an integer);
(4)一个有10个整型数的数组(An array of 10 integers);
(5)一个有10个指针的数组,该指针是指向一个整型数的(A array of 10 pointers to integers);
(6)一个指向有10个整型数组的指针(A pointer to an array of 10 integers);
(7)一个指向函数的指针,该函数有一个整型参数并返回一个整型数(A pointer to a function that takes an integer as an argument returns an integer);
(8)一个有10个指针的数组,该指针指向一个函数,该函数有一个整型参数并返回一个整型数(An array of 10 pointers to functions that take an integer argument and return an integer);
3、关键字volatile有什么含义?
并举出三个不同的例子。
4、嵌入式系统总是要用户对变量或寄存器进行位操作,给定一个整型变量a,写两段代码,第一个设置a 的bit 3,第二个清除a 的bit 3,在以上操作中,要保持其他位不变。
5、嵌入式系统经常具有要求程序员去访问某特定的内存位置的特点,在某工程中,要去设置一绝对地址为0x67a9的整型变量的值为0xaa66。
编译器是一个纯粹的ANSI编译器,写代码去完成这一任务。
6、中断是嵌入式系统中的重要组成部分,这导致了很多编译开发商提供一种扩展——让标准C支持中断,具有代表性的是,产生一个新的关键字:
__interrupt,下面的代码就使用了__interrupt去定义了一个中断子程序(ISR),请评论下这段代码的__interrupt,
double compute_area(double radius) {
double area=PI*radius*radius; print f("\n Area"=%f,area); return area; }
7、尽管不像非嵌入式计算机那样常见,嵌入式系统还是有从堆(heap)中动态分配内存的过程的,那么嵌入式系统中,动态分派内存可能发生的问题是什么?
8、关键字static 的作用是什么?
9、#include 与#include "file.h"的区别?
10、请说出const 与#define 相比,有何优点?
二、嵌入式系统编程:
1、进程与线程有什么区别?
2、操作系统有哪几个特征?
最主要的特征是什么?
虚拟存储器有哪几个特征?
其最本质的特征是什么?
3、库函数的调用和系统调用的区别?
4、Linux进程间通行方式有哪几种以及各自的特点?
5、Linux中四层网络模型?
IP的各种类型的范围?
6、在Linux系统中,造成死锁的原因有哪些?
7、Linux网络编程中主要使用的API有哪些以及网络服务器模型的种类?
8、简述对Linux的认识(特点,优势)。
三、嵌入式平台开发
1、bootloader 是什么?
bootloader的stage1和stage2分别做的工作有哪些?
2、Linux内核版本命名的规则?
3、Linux设备文件有哪几类?
4、Linux文件系统的种类有哪些以及使用特点?
5、嵌入式系统移植的主要工作步骤是什么?
四、编程能力实测
1、编写一个C函数,将“I am from shanghai”倒置为“shanghai from am I”即将句子中的单词位置倒置,并不改变单词内部结构。
2、请编写一个C函数,该函数可以实现将一个整数转为任意进制的字符串输出。
2014年嵌入式系统开发工程师模拟试题二
来源:
233网校 【233网校:
教育考试门户网站】 2013年9月29日
一.1、简答题。
下面的题目必须全部答对才给分(20分):
1、 如何在C中初始化一个字符数组。
2、 如何在C中为一个数组分配空间。
3、 如何初始化一个指针数组。
4、 如何定义一个有10个元素的整数型指针数组。
5、 s[10]的另外一种表达方式是什么。
6、 GCC3.2.2版本中支持哪几种编程语言。
7、 要使用CHAR_BIT需要包含哪个头文件。
8、 对(-1.2345)取整是多少?
9、 如何让局部变量具有全局生命期。
10、C中的常量字符串应在何时定义?
11、如何在两个.c文件中引用对方的变量。
12、使用malloc之前需要做什么准备工作。
13、realloc函数在使用上要注意什么问题。
14、strtok函数在使用上要注意什么问题。
15、gets函数在使用上要注意什么问题。
16、C语言的词法分析在长度规则方面采用的是什么策略?
17、a+++++b所表示的是什么意思?
有什么问题?
18、如何定义Bool变量的TRUE和FALSE的值。
19、C语言的const的含义是什么。
在定义常量时,为什么推荐使用const,而不是#define。
20、C语言的volatile的含义是什么。
使用时会对编译器有什么暗示。
来源:
233网校-计算机四级考试
2014年嵌入式系统开发工程师模拟试题三
来源:
233网校 【233网校:
教育考试门户网站】 2013年9月29日
一.3、分析题。
本题(各5分)。
假设下面代码中的变量都是合法变量,调用外部的函数都是正确的。
回答几个问题:
这些代码意图要干什么?
是否有问题?
如果有问题,该如何修改,或者如何避免类似错误发生?
如果没有问题,如果代码有输出,输出是什么?
1、———————————————————–
int isvowel (char c)
{
return c==’a’’’’’’’’||c==’e’’’’’’’’||c==’i’’’’’’’’||c==’o’’’’’’’’||c==’u’’’’
}
2、———————————————————–
while (c==’\t’||c=’ ‘||c==’\n’)
c=getc(f);
3、———————————————————–
/* 当x=2, y=3, z=?
*/
if (x==0)
if (y==0)
z=-1;
else
z=x+y;
4、———————————————————–
/* 处理网络事件 */
void process_network_code(int x, int y)
{
/* 选择modes_pointer资源 */
switch (line) {
case THING1:
/* 处理异常1#, 使用老的modes_pointer资源 */
doit1();
break;
case THING2:
/* 处理异常2#, 需要重新启动服务 */
if (x == STUFF) {
/* 重新申请modes_pointer资源,没有初始化 */
do_first_stuff();
/* 在这种条件下,有些资源不用重新申请 */
if (y == OTHER_STUFF)
break;
/* 申请剩下的资源,并初始化 */
do_later_stuff();
}
/* 初始化modes_pointer资源 */
initialize_modes_pointer();
break;
default:
/* 处理普通事件, 使用老的modes_pointer资源 */
processing();
}
/* 使用modes_pointer资源,处理事件 */
use_modes_pointer();
}
5、———————————————————–
int is_gb2312_char(char c1, char c2)
{
if (c1 >= 0xa1 && c2 >= 0xa1)
return 1;
else
return 0;
} 来源:
233网校-计算机四级考试
2014年嵌入式系统开发工程师模拟试题四
来源:
233网校 【233网校:
教育考试门户网站】 2013年9月29日
一.4、综合编程题。
要求:
1、完成需求,程序运行正确。
2、工作原理文档,使用文档完整。
3、代码规整优美。
注释得当。
4、运行速度足够快。
5、用工具分析出是哪些代码或函数造成速度瓶颈。
1、———————————————————–
编写一个排序程序。
被排序的文件有8MB大小,一行一个随机整数(ASCII格式)。
要求对这些整数进行排序,并计算平均值,打印出排序所需的时间。
(20分)
2、———————————————————–
用dummy header技巧实现一个链表DEMO。
要求具有create, insert, delete, search功能。
编写一个应用程序,使用上面的函数。
使用dummy header技巧有什么优点。
(20分)
3、———————————————————–
用heapsort算法实现优先队列。
要求具有create, insert, delete功能。
编写一个应用程序,使用上面的函数。
使用heapsort算法有什么优点。
(20分)
用trie(一种多叉树)实现一个字典。
要求具有create, insert, delete, search功能。
编写一个应用程序,使用上面的函数。
使用trie树有什么优点。
(20分)
二.1、简答题。
下面的题目必须全部答对才给分:
(5分)
1、在UNIX环境中,编译流程是什么?
2、ABI,ELF的英文全称是什么
3、一般UNIX的程序有多少段,举一个实际的例子说明。
4、如何在kernel二进制代码中找一个字符串。
5、段地址F000:
FFF0转换为线形地址的值是多少(16进制表达)。
6、在一个UNIX文件系统中,文件的唯一性标志