嵌入式操作系统复习提纲(共3页)_第1页
嵌入式操作系统复习提纲(共3页)_第2页
嵌入式操作系统复习提纲(共3页)_第3页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、精选优质文档-倾情为你奉上嵌入式操作系统复习提纲1. 嵌入式系统的特点?专用性强、实时性好、可裁剪性好、可靠性高和功耗低等2. ARM的运行模式和工作状态?特权模式和非特权模式?工作状态: 第1种:ARM状态。处理器执行32位的字对齐的ARM指令。 第2种:Thumb状态。处理器执行16位的半字对齐的Thumb指令。 运行模式: 用户模式(usr)  快速中断模式(fiq)  外部中断模式(irq) 管理模式(svc)  数据访问中止模式(abt)  系统模式(sy

2、s) 未定义指令中止模式(und) 在这7种运行模式,除了用户模式外,其他6种处理器模式都为特权模式。 在这6种特权模式中,除了系统模式外的其他5种特权模式又称为异常模式。 3. ARM和S3C2410的关系?S3C2410的内核?S3C2410是韩国三星公司生产的嵌入式处理器,它采用了ARM公司的ARM920T(即ARM9)内核4. Make和Makefile的关系?make是一种命令,是根据Makefile文件的规则决定如何编译和连接程序或其他的动作。Makefile的普通变量与预定义变量有什么不同?预定义变量有哪些?它们分别表示什么意思? 

3、;答:普通变量:引用变量时,只需在变量前面加上$符;预定义变量:已经定义好,直接引用即可。 预定义变量有:$、$、$<。 $:表示完整的目标文件名;$:表示所有的依赖文件;$<:表示依赖文件列表中的第一个文件5. BootLoader的作用和意义?常用的BootLoader?BootLoader的结构分为两部分, Stage1:用汇编语言编写,主要进行设备的初始化;Stage2:用C语言编写,增强程序的移植性和可读性。BootLoader是系统加电后运行的第一段代码,通过这段小程序,可以初始化硬件设备、建立内存空间的映射图,从而使系统的软硬件环境达到合适的状态。

4、ARM常用的Bootloader程序有U-Boot,Blob,RedBoot,vivi,ARMboot6. Linux内核文件映像?根文件系统映像文件?内核映像文件zImage。 根文件系统:root.cramfs7.设备驱动程序和设备文件的关系?驱动程序加载到内核后有一个主设备号。在Linux内核中,主设备号标识设备对应的驱动程序,告诉Linux内核使用哪一个驱动程序为该设备(也就是/dev下的设备文件)服务,而次设备号则用来标识具体且唯一的某个设备8.GCC编译器常用的选项?gcc编译器的常用参数:-o,-I,-L,-E,-S,-c 功能:-o表示编译成一个可执行程序;

5、-I表示指定头文件目录;-L表示指定库文件目录选项;-E表示对源代码进行预编译;-S表示编译成汇编代码;-c表示把.c文件转换为以.o为扩展名的目标文件。9.Vivi程序的2个阶段?两种工作模式:启动加载模式,下载模式Vivi结构分为两个阶段:Stage1:1. 关闭WatchDog;2. 禁止所有中断3. 初始化系统时钟4. 初始化内存控制寄存器5. 检查是否从掉电模式唤醒,如果是,则调用wakeupStart函数进行处理6. 点亮所有LED7. 初始化UART08. 将vivi的代码从NAND Flash复制到SDRAM中Stage2完成如下任务:1. 打印vivi的信息2. 调用初始化函

6、数3. boot_or_vivi():判断是够按下Enter键,若按下则进入vivi shell;若没有执行boot命令启动内核4. boot命令执行后找到kernel分区,并找他的偏移量和大小,执行boot_kernel()函数,复制内核映像5. 调用Linux启动参数,打印Now Booting Linux6. 调用call_linux函数启动内核 10.信号和槽的连接机制?信号:当某个信号对其客户或所有者发生的内部状态发生改变,信号被一个对象发射。只有定义过这个信号的类及其派生类能够发射这个信号,当一个信号被发射时,与其相关联的槽将会被立刻执行。 槽:槽是普通的C+成员函数,可

7、以被正常调用,它们唯一的特殊性就是很多信号可以与其相关联。当与其相关联的信号被发射时,这个槽就会被调用。槽可以有参数,但槽的参数不能有缺省值1. 一个信号可以连接到多个槽2. 多个信号可以连接到同一个槽3. 一个信号可以和另一个吸纳好项链4. 连接可以被删除12.(1)嵌入式交叉开发环境搭建的意义和步骤?(2)内核映像文件的生成步骤?(1).在嵌入式软件开发时, 由于嵌入式系统的硬件资源有限,不能安装编译所需要的资源调试器和被调试的程序分别运行在不同的平台,增加了程序调试的难度,交叉环境搭建就解决了这样的难题1交叉编译工具链的安装;2、安装配置TFTP服务;3、安装配置NFS服务;4、C-Ke

8、rmit的安装配置;5、minicom的安装配置;6、windows下超级终端的配置(2). 生成内核映像文件zImage的步骤。 1、make config   进入命令行; 2、make menuconfig 内核裁剪; 3、make clean 清理以前已生成的目标文件;4、make dep 编译变量的依赖关系;5、 make zImage 生成内核镜像文件zImage。13.驱动程序和应用程序的区别和联系?第一:主动与被动的区别。应用程序

9、有一个main函数,总是从些函数开始主动执行一个任务,而驱动程序安装之后,便停止工作,并等待被应用程序调用。第二:使用的库函数不同第三:程序运行的区域不同。驱动程序工作在内核态;应用程序工作在用户态。14.常用的一些ARM指令?(第2章课后习题程序题部分)(1) 分析下列每条语句,并说明程序实现的功能。 CMP  R0, #0  /判断R0是否等于0 MOVEQ  R1, #0  /当R0等于0,则R1等于0OVGT  R1,#1  /

10、当R0为正数时,则R1等于1  此功能码段可以判别R0中的值为正数还是0。(2) 写一条ARM指令,分别完成下列操作。 R0 = 16              MOV  RO, #16 R0 = R1 / 16          

11、;MOV RO,R1,LSR#4 R1 = R2 * 4          ADD R1,R2.R2.LSL#1R0 = - R0            RSB RO,RO,#0(3) 写出实现下列操作的ARM指令。 当Z=1时,将存储器地址为R1的

12、字数据读入寄存器R0。  MOVEQ  R0, R1 当Z=1时,将存储器地址为R1+R2的字数据读入寄存器R0。   LDREQ  R0, R1,R2 将存储器地址为R1-4的字数据读入寄存器R0。 LDR   R0,R1,#-4  将存储器地址为R1+R6的字数据读入寄存器R0,并将新地址R1R6 写入R1。 LDR   R0,R1,R6! (

13、4) 写出下列指令所实现的操作。 LDR     R2 ,R3,-2! 将存储器地址为R3-2的字数据读入R2,并将地址R3-2写入R3   LDR     R0 ,R0,R1 将存储器地址为R0的字数据读入R0,并将地址R0+R1写入R0   LDR     R1 ,R0,R2,LSL #2! 将存储器地址

14、为R0+R2*4的字数据读入R1,并将地址R0+R2*4写入R0   STRB   R1 ,R2,#0xB0   R0的低8位存入存储器地址为 R2+0xB0字节中 LDMIA   R0 ,R1,R2,R8 将内存单元R0所指向的地址单元以字为单位递减方式读取到R1,R2,R8 中,低地址编号的字数据内存单元对应低编号寄存器 STMDB   R0!, R1R5,R8,

15、R9 R1R5,R8,R9存储到以R0为起始地址的递减内存中,最终R0 指向存放 R9的地址单元15.目录下多个文件生成一个可执行文件的Makefile文件编写分析?(现有7个文件分别是m.c,m.h,study.c,listen.c,visit.c,play.c,watch.c。利用这7个程序生成一个名为m的可执行程序,如何编写Makefile文件)CC=gccTARGET=AllOBJECTS= m.o visit.o listen.o watch.o study.o play.o$(TARGET):$(OBJECTS)$(CC) $(OBJECTS) o m

16、m.o:m.c m.h$(CC) c m.c o m.ovisit.o:visit.c$(CC) c visit.c o visit.olisten.o:listen.c$(CC) c listen.c o listen.owatch.o:watch.c$(CC) c watch.c o watch.ostudy.o:study.c$(CC) c study.c o study.oplay.o:play.c$(CC) c play.c o play.oclean:rm *.o16.驱动程序的加载、系统调用和卸载过程?17.嵌入式开发调试时的串口工具?超级终端?Minicom?Minicom是l

17、inux操作系统下的串口通信软件.超级终端是Windows操作系统下的串口通信软件18.驱动程序加载、驱动模块安装和查看指令?加载,安装指令是:#insmod file_name 查看指令是:lsmod卸载指令是:rmmod module_name19.嵌入式内核裁剪和配置后,内核编译的步骤和指令?使用make menuconfig命令进行裁剪1、make menuconfig 内核裁剪2、make clean 清理以前已生成的目标文件3、make dep 编译变量依赖关系4. make zImage 生成内核映像文件zImage20.驱动demo.c的驱动程序框架?在内核空间开一个40个字节的缓存区drv_buf,要求设计2个

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论