《嵌入式操作系统(复习题)(共9页).doc》由会员分享,可在线阅读,更多相关《嵌入式操作系统(复习题)(共9页).doc(9页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精选优质文档-倾情为你奉上一、填空题1. ARM处理器中断有 快速中断模式(FIQ) 和 外部中断模式(IRQ) 处理模式。2. 典型的ARM基于JTAG调试结构包括哪几个部分?Debug主控端,协议转换器,调试目标机 3. LINUX系统中设备文件通常分为哪几种?字符设备(无缓冲且只能顺序存取)、块设备(有缓冲且可以随机存取)。4. LINUX环境中的变量包括哪几个?path home histsize hostname shell mail ps1 lang/langue 5. gcc编译分成哪4个阶段:预处理(Pre-Processing) 编译(Compling) - 汇编(Assem
2、bling) - 连接(Linking)6. flash memory上的两种技术分别是 NAND 和 NOR 7. MMU是 内存管理单元 ,主要作用有地址映射和 对地址访问进行保护和限制 8. Pxa255拥有 7 级超级流水线,主要由 主流水线、MAC流水线和内存访问流水线部分构成的9. 进程的虚拟内存包括 和 10. 内核(kernel) 是操作系统内部核心程序,它向外部提供了对计算机核心管理调用11. 模块的装入通过insmod命令手工将module载入内核 和 根据需要载入module 12. 嵌入式操作系统要为特定的硬件设备或环境设计符合要求的 图形用户界面GUI 13. 在LI
3、NUX根文件系统中所有的设备文件都放在 目录dev下 或其子目录之下 14. X Windows 最先在Unix上使用的图形界面,由X 服务器 X客户机X 协议 三部分组成15. 内核最后一个初始化动作是 启动初始化程序 (运行/sbin/init可执行文件) 16. 线程 共享资源的程序实体,创建一个线程系统开销要比一个进程 小的多 17. 内核碰到错误时,会显示 处理器 状态,包括cpu寄存器的内容和 页描述表的位置 还有 一些难理解的信息 18. 在ARMLINUX体系中用来处理外设中断的异常模式是中断请求19. 闪存主要由 NOR flash 和 NAND flash 20. 预定义变
4、量:将所有的外部变量表示成内建环境变量,并且将错误信息表示成返回值AS = as 指定汇编器 ASFLAGS AS指令的选项设置 CC = cc =gcc 指定编译器 $* 没有扩展名的当前目标文件 $ 当前目标文件 $ tftp zImage kernel 复制到flash中 XSBASE flash kernel下载文件系统filesysytemXSBASE tftp rootfs.img rootXSBASE flash rootReboot4. gdb编译的步骤命令(填空关键步骤)编译文件:gcc g filename.c -o filename运行: ./filename调试: gd
5、b filename(gdb) file filename (这个命令将载入filename可执行文件,就像你在gdb命令行里装入它一样)运行程序:(gdb) run(gdb) list (三次,列出源代码)设置断点: (gdb) break 23查看断电信息: (gdb) info break运行程序:(gdb ) r单句执行 :(gdb) next继续运行程序: (gdb) c打印变量i : (gdb) p i退出 GDB :(gdb) q5. Makefile 给出几个文件,写出make file的文件(如果不使用预定义变量/使用预定义变量该怎么写)通过vi编译器来创建两个文件hello
6、.c和makefileHello.c Makefile #include “stdio.h” CC=gcc main() hello:hello.o $(CC) hello.o o hello printf(“welcome to shanghai!n”); hello.o:hello.c $(CC) chello.c o hello.oclean: rm rf hello*.o使用预定义变量编译程序MakefielCC=gcchello:hello.o $(CC) $ -o $hello.o:hello.c $(CC) c $ -o $clean: rm rf hello*.o 6. Bus
7、ybox文件系统操作的过程当中一些主要的命令将busybox-1.00-pre5.tar.gz.bz2放在/root/tars下并进行解压缩#mkdir /root/tars#cp busybox-1.00-pre5.tar.gz.bz2 /root/tars#tar jxvf busybox-1.00-pre5.tar.gz.bz2#cd busybox-1.00-pre5#make menuconfig (出现busybox的配置界面)保存后,编译BusyBox#make dep#make#make install编译和安装完后可以在生成_install目录。第一题:tar -cxtzjv
8、fpPN 文件与目录 .参数-c :建立一个压缩文件的参数指令(create 的意思);-x :解开一个压缩文件的参数指令!-t :查看 tarfile 里面的文件!特别注意,在参数的下达中, c/x/t 仅能存在一个!不可同时存在!因为不可能同时压缩与解压缩。-z :是否同时具有 gzip 的属性?亦即是否需要用 gzip 压缩?-j :是否同时具有 bzip2 的属性?亦即是否需要用 bzip2 压缩?-v :压缩的过程中显示文件!这个常用,但不建议用在背景执行过程!-f :使用档名,请留意,在 f 之后要立即接档名喔!不要再加参数!例如使用 tar -zcvfP 生成文件名 目标文件夹就
9、是错误的写法,要写成 tar -zcvPf tfile sfile才对喔!第二题:echo Nameread filenameif -d $filename thencd $filenamebashelseecho NOT Directoryfi第三题:1、TFTP命令下载kernel:tftp zImage kernel2、复制到flash中:flash kernel3、下载filesystem:tftp rootfs.img rootflash root第四题:编译GDB:/usr/local 文件夹下解压tar xvzf gdb-5.3.tar.gzcd gdb-5.3./configu
10、re -target=arm-linux -prefix=/usr/local/arm-gdb -vmakemake intsallGDB客户端编译:cd /usr/local/gdb-5.3export PATH=$PATH:usr/local/arm-linux/bin./configure -target=arm-linux -host=arm-linuxcd gdb/gdbservermake CC=/usr/local/hybus-arm-linux-R1.1/bin/arm-linux-gcc (会出错)修改 gdb/gdbserver/config.h文件注释掉 ,修改为 /#d
11、efine HAVE_SYS_REG_H 1make CC=/usr/local/hybus-arm-linux-R1.1/bin/arm-linux-gccGDB调试:配置IP,使同一网段(目标板0.50,本机0.2)arm-linux-gcc-g test.c -o test下载(zmodem)test和gdbserver到XSBase连接:目标板上命令./gdbserver 192.168.0.2:1234 test 结果显示进程建立成功与进程PID本机命令cp /pxa255/test /usr/local/arm-gdb/bincd /usr/local/arm-gdb/bin./a
12、rm-linux-gdb test连接成功,目标板回显消息:remote debuggingXXXXXXXXlist显示代码 break n设断点,n代表行数cont执行step单步quit退出第五题:CC=gcchello:hello.o$(CC) hello.o -o hellohello.o:hello.c$(CC) hell.c -c hello.oclean:rm -rf *.oCC=gccTARGET=cacuOBJS=add/aa.o add/bb.o sub/cc.o main.oRM=rm -f$(TARGET):$(OBJS)$(CC) -o $(TARGET) $(OBJ
13、S)$(OBJS):%.o:%c将OBJS中所有.o的文件替换成.c文件$(CC) -c $ -o $编译生成目标文件clean-$(RM) $(TARGET) $(OBJS)$*不包含扩展名的目标文件名称。$+所有的依赖文件,以空格分开,并以出现的先后为序,可能包含重复的依赖文件。$第一个依赖文件的名称。$?所有的依赖文件,以空格分开,这些依赖文件的修改日期比目标的创建日期晚。$目标的完整名称。$所有的依赖文件,以空格分开,不包含重复的依赖文件。第六题:(详情见PDF)#tar jxvf busybox-1.00-pre5.tar.gz.bz2#cd busybox-1.00-pre5#ma
14、ke menuconfig# make dep# make # make install建立etc目录:rootlocalhost _install# mkdir etc在etc目录下,建立rc文件:#!/bin/shhostname FIGO mount -t proc proc /proccat /etc/motd改变其文件属性# chmod 777 rc在etc目录下,建立inittab文件:sysinit:/etc/init.d/rcS# Start an askfirst shell on the console (whatever that may be):askfirst:-/b
15、in/sh# Stuff to do when restarting the init process:restart:/sbin/init# Stuff to do before rebooting:ctrlaltdel:/sbin/reboot:shutdown:/bin/umount -a -r:shutdown:/sbin/swapoff -a 在etc目录下,配置motd文件,下面我们用图示的文字表示,也可以使用其它的文字。Welcome to ARM-LINUX WORLD在etc目录下,建立init.d目录,在init.d目录下,建立rc文件的符号连接文件rcS。rootloca
16、lhost etc# ls inittab motd rc rootlocalhost etc# mkdir init.drootlocalhost etc# cd init.drootlocalhost init.d# ln -s ./rc rcSrootlocalhost init.d# file rcSrcS: symbolic link to ./rc在_install目录下,建立dev目录,创建设备文件。在本实验中一些设备文件是必需的,比如系统控制台console,MTD 块设备 mtdblock3等,可以使用mknod命令来创建。#mknod console c 5 1#mknod
17、 mtdblock3 b 31 3除了使用mknod命令来手工创建设备文件外,还可以复制主机平台/dev目录下一些必要的设备文件到/_install/dev目录下:# cp -dpR /dev /root/tars/busybox-1.00-pre5/_install/dev制作JFFS2文件映像在busybox目录下,将文件mkfs.jffs2拷贝到busybox目录下:# cp /pxa255/Filesystem/mkfs.jffs2 ./返回到busybox的根目录下,运行命令mkfs.jffs2# ./mkfs.jffs2 -o rootfs.img -e 0x40000 -r _install -p -l专心-专注-专业