答:冯诺依曼结构是一种程序指令存储器和数据存储器合并在一起的存储器结构。
哈佛体系结构是一种将程序指令存储和数据存储分开的存储器结构。
Intel处理器采用冯诺依曼结构。
2、除了可靠性以外,请简述其他(至少四个)用于评价嵌入式系统性能的指标,并请指出MTBF的具体含义。
答:性能指标,包含吞吐率,实时性,资源利用率;可维护性;可用性;功耗;环境适应性;通用性;安全性;保密性;可扩展性;MTBF,全称为Mean Time Between Failures, 平均故障间隔时间。
3、嵌入式系统总体上可分为软件系统和硬件系统。在开发的过程中,两者往往是并行的关系。在软件的开发过程中,经常会采用交叉开发环境。请简述交叉开发环境包含的两个部分,并请简要叙述一下交叉开发的过程。
答:交叉编译环境和交叉连接器。在宿主机上的通用操作系统开发环境下书写程序代码后,使用针对目标系统体系结构的编译器进行编译,并采用交叉链接器对目标代码进行链接,生成的应用程序进过重定向,下载到目标机器。
4、你现在某从事嵌入式产品开发的公司工作,被要求开发一通用的数字电视接收控制器,即通常所说的“机顶盒”,对于机顶盒的开发,请你结合嵌入式系统的设计流程叙述一下将采取的设计开发流程。(整个流程需包括从产品定义到产品测试和发布)
答:嵌入式系统的设计流程:
1)产品定义;
2)硬件与软件部分划分;
3)迭代与实现;
4)详细的硬件与软件设计;硬件设计,软件设计;
5)硬件与软件的集成;
6)系统测试与开发;
5、嵌入式GUI的实现一般要划分为几个模块?简述各个模块的功能。
1)GUI用户接口模块:为上层应用软件开发人员提供方便、易用的API接口函数。
2)GUI对象模块:GUI对象模块对窗口环境中的逻辑对象进行组织管理。
3)GUI基本图形模块:在该模块中实现了对显示输出设备的操作,如画点、画线、画矩形等基本功能,还有对字符的解析输出以及对图形的解析输出。
4)GUI消息驱动模块:该模块是GUI系统的通信模块,负责GUI的消息接收和与其他任务的通信以及消息队列的维护。
6、Qtopia Core的底层图形接口是什么?它的驱动程序的实现分为哪两个方面?
1) FrameBuffer
2) 一方面是对LCD以及其相关部件的初始化,包括画面缓冲区的创建和对DMA通道的设置。另一方面是对画面缓冲区的读写
7、简述VxWorks的启动过程
第一阶段 1代码已经位于RAM中2系统处于不会发生中断的静止状态(必须包括处理器中断被禁止和各个设备中断被禁止)在该阶段,“处理器初始化”和“代码装入”即通常所说的引导代码。
第二阶段 1、激活多任务的内核2、安装设备驱动3、各种组件初始化
8、简述VxWorks下中断处理过程
当设备产生IRQ(中断请求)时,中断当前任务并取中断类型号2在中断应答期间,系统决定哪个设备需要服务(计算中断向量地址)3为设备调用适当的函数(系统注册的设备中断服务程序)4在VxWorks定义的中断包裹函数里,保存寄存器值及调用用户定义的中断服务程序5中断处理结束后,从中断服务器程序返回并恢复寄存器值6如果执行中断服务程序后,没有高优先级的任务运行,则恢复被中断任务的执行
9、简述各各嵌入式微处理器之间的特点以及微处理器与微控制器之间的优劣。
1).RAM微处理器的一般特点。大量寄存器,绝大操作都在寄存器中,寻址方式简单,固定长度的指令格式。
2).MIPS 其机制是尽量利用软件方法避免流水线中的数据相关。
3).PowerPC独特的分支出来单元可以让指令预期效率大大提高;超标量的设计;可处理“字节非对齐”的数据存储。
4).微处理器与微控制单元区别:微控制单片化,体积大大减少,从而功耗和成本下降、可靠性提高。
10、简述SoC设计的三种方法
系统集成法 部分集成法 IP集成法
11、简述软硬件划分的原则
软硬件划分的基本原则是高速,低功耗由硬件实现;多品种、小批量由软件对应,处理器和专用硬件并用以提高处理速度和降低功耗。
12、描述总线性能的有哪些参数?什么样的情况会导致总线冲突?后果是什么?采用什么样的技术来避免这种情况的发生?
描述总线性能的参数有总线带宽、总线宽度、总线的单元时钟频率和总线的负载能力
如果两个设备正好同时把数据放到总线上,就可能发生总线冲突
后果是可能会使设备失效
采用三态门
13、可编程门阵列由哪几部分组成?各自的作用是什么?
可编程门阵列由可编程逻辑宏单元(CLB)、可编程输入输出宏单元(IOB)、互连资源和重构逻辑的程序存储器组成。各自的作用分别是用于编程、输入输出、内部互连、存储配置程序。
14、BIOS的作用和功能是什么?
1)加电自检、初始化、引导操作系统;
2)程序服务
3)设定中断
15、南桥和北桥的主要功能各是什么?
1)北桥连接高速数据传输设备。北桥芯片负责与CPU的联系并控制内存、AGP、PCI数据在北桥内部传输,提供对CPU的类型和主频、系统的前端总线频率、内存的类型(SDRAM,DDR SDRAM以及RDRAM等等)和最大容量、ISA/PCI/AGP插槽、ECC纠错等支持,整合型芯片组的北桥芯片还集成了显示核心。
2)南桥连接低速数据传输设备。南桥芯片负责I/O总线之间的通信,如PCI总线、USB、LAN、ATA、SATA、音频控制器、键盘控制器、实时时钟控制器、高级电源管理等。
16、请简述ARM处理器的堆栈寻址和块拷贝寻址模式,并比较它们的不同点。
堆栈寻址: 按先入先出的方式工作。
块拷贝寻址: 一种多寄存器传送指令,用于将一块数据从存储器的某一块位置拷贝到多个寄存器中或相反。
主要不同点:两者存放数据的顺序相反。
17、函数strncpy的作用是将长度为n的数组s拷贝至d
void strncpy(char *s, const char *d, int n)
{
int c;
__asm
{
loop:
CMP n, #0
BEQ out
LDRB c, [s], #1
STRB c, [d], #1
SUB n, n, #1
B loop
out:
}
}
18、嵌入式的软件调试方法有哪些?
插桩调试法,直接调试法,ROM仿真法,模拟器法
19、简述Linux的slab分配器作用和原理
1) 内核通常依赖于对小对象的分配,它们会在系统生命周期内进行无数次分配;slab 缓存分配器通过对类似大小的对象进行缓存而提供这种功能,从而避免了常见的碎片问题。
2) slab 分配器还支持通用对象的初始化,从而避免了为同一目而对一个对象重复进行初始化。
3) slab 分配器还可以支持硬件缓存对齐和着色,这允许不同缓存中的对象占用相同的缓存行,从而提高缓存的利用率并获得更好的性能
20、请简述用户自定义一个Linux系统调用的步骤过程。
1)/usr/src/linux/kerner/sys.c中添加自定义系统函数,如:
asmlinkage int sys_mysyscall(int a)
{
return a;
}
2)定义系统调用号,/usr/src/linux/include/asm-i386/unistd.h,如:
#define _NR_sysmycall 318 //不能与前面已有的重复
#define _NR_syscalls 319//修改系统中所用系统调用数目
3)在系统调用向量表里添加自定义的系统调用函数入口位置,
/usr/src/linux/arch/i386/kernel/syscall_table.S,以前老版本是entry.s
.long sys_mysyscall最后重编译内核。