
1.在宿主机上开启tftp服务时,所要修改的配置文件为( )
A./etc/exports
B./etc/xinetd.d
C.以上都不对
D./etc/xinetd.d/tftp
答案:D
2.内核在配置结束后,会将用户的选择结果保存在文件( )中
A.defconfig
B.config
C.default
D..config
答案:D
3.u-boot指令中,下载文件的命令是( )
A.setenv
B.reset
C.tftp
D.ping
答案:C
4.Kconfig文件中生成新的配置菜单使用( )
A.menu
B.help
C.default
D.config
答案:A
5.在内核解压缩目录的Makefile文件中修改的ARCH变量实际是在指定( )
A.优化参数
B.目标系统架构
C.交叉编译器
D.编译参数
答案:B
6.在构建嵌入式linux平台过程中,具备开发能力的计算机我们称之为( )
A.计算机
B.宿主机
C.服务器
D.目标系统
答案:B
7.内核在编译时所依赖的编译规则文件是( )
A..config
B.Makefile
C.Make
D.File
答案:B
8.linux下所使用的串口调试工具是( )
A.gcc
B.nfs
C.minicom
D.tftp
答案:C
9.内核配置菜单生成时所依赖的文件是( )
A.config
B.Kconfig
C.Makefile
D.kconfig
答案:B
10.U-Boot下tftp下载文件到目标系统的内存当中,在内存当中默认的地址是( )
A.0x30000000
B.0x30008000
C.0x30000100
D.0x30080000
答案:B
11.在操作过程中,内核编译所生成的内核压缩可执行文件是( )
A.s3c2440
B.linux-2.6.32.2
C.zImage
D.选项均不真确
答案:C
12.系统环境变量中用来作为可执行文件搜索路径的变量是( );
A.PWD
B.HISTORY_SIZE
C.LD_LIBRARY_PATH
D.PATH
答案:D
13.创建设备文件有手动创建与自动创建之分,那么手动创建时标示设备所属种类时是用( )来区分的。
A.次设备号
B.num
C.-m
D.主设备号
答案:D
14.嵌入式系统是面向( )、实现特定功能的、软硬件可裁剪的计算机控制系统;
A.家庭
B.特定领域
C.工厂
D.学校
答案:B
15.在Linux下,打补丁时所使用的命令是( )
A.patch
B.make
C.tftp
D.path
答案:A
16.声卡在/dev下的设备文件主设备号是( )
A.12
B.10
C.14
D.11
答案:C
17.在嵌入式linux系统中为了保证内核能够正常启动运行,( )是必不可少的
A.根文件
B.系统库
C.显卡驱动
D.声卡驱动
答案:A
18.嵌入式系统对产品的体积、功耗、( )等有着苛刻的要求;
A.U盘
B.性价比
C.CPU
D.硬盘
答案:B
19.在linux内核启动代码head.S中,在启动初期我们可以用( )来传递目标系统在在内核当中的代码。
A.R0
B.R2
C.R3
D.R1
答案:D
20.内核启动参数中,指定内核根文件挂载方式的参数是( )
A.console
B.root
C.nfsroot
D.init
答案:B
21.为了通过devfs文件系统访问设备,需要创建设备文件,那么创建设备文件的指令是( )
A.mkdir
B.mknode
C.make
D.mknod
答案:D
22.U-Boot在加载并引导内核的时候,可以通过( )将启动参数传递给内核
A.bootargs
B.args
C.boot
D.delay
答案:A
23.U-Boot下擦除nand flash的指令是( )
A.nand write
B.erase nand
C.erase
D.nand erase
答案:D
24.根文件中用来配置系统环境变量的脚本是( )
A.fstab
B.etc
C.profile
D.linuxrc
答案:C
25.交叉编译器安装时需要配置环境变量,那么临时导出环境变量使用( );
A.export
B.env
C.exportfs
D.linuxrc
答案:A
26.U-Boot是( )
A.引导程序
B.内核
C.文件系统
D.内核驱动
答案:C
27.下面的编译器( )是交叉编译器
A.gcc
B.arm-linux-gcc
C.gdb
D.g++
答案:B
28.在菜单配置文件中,添加一个新的菜单选项所使用的关键字是( )
A.menuconfig
B.help
C.default
D.config
答案:D
29.下列文件系统适合做嵌入式linux系统根文件系统的是( )
A.cramfs
B.ext3
C.fat32
D.ext2
答案:A
30.内核启动参数中init这个参数指定的是( )
A.内核位置
B.库位置
C.系统初始化文件
D.根文件位置
答案:C
31.能够在嵌入式linux平台上运行的GUI应用程序是( )
A.WPS Office
B.Madplay
C.QQ
D.MPlayer
答案:D
32.u-boot指令中,对NandFlash进行操作的指令不包括( )
A.nand clean
B.nand write
C.nand erase
D.nand read
答案:A
33.查看当前系统搜索路径的方法是( );
A.¥PATH
B.&PATH
C.SPATH
D.$PATH
答案:D
34.在minicom串口调试工具中,若需要显示配置菜单所要使用的快捷键为( )
A.Ctrl+A+Z
B.Ctrl+A+C
C.Ctrl+A+X
D.Ctrl+A+O
答案:D
35.U-Boot设置环境变量的指令是( )
A.set env
B.printenv
C.setenv
D.saveenv
答案:C
36.U-Boot查看环境变量的指令是( )
A.printenv
B.sysinfo
C.env
D.printf
答案:A
37.操作系统菜单生成时所依赖的配置文件是( )
A.kconfig
B.以上都不对
C.menuconfig
D..config
答案:A
38.配置内核时,所使用的配置菜单生成指令是( )
A.make menuconfig
B.make clean
C.make zImage
D.make
答案:A
39.在编译出现错误时,可以使用命令( )清楚编译所生成的相关文件。
A.make menuconfig
B.make zImage
C.以上都不对
D.makeclean
答案:D
40.构建嵌入式linux平台过程中,待开发软件的硬件平台我们称之为( )
A.评估板
B.实验系统
C.目标系统
D.开发板
答案:C
二、多项选择题
1.使用JFlash烧录前,需要做以下哪些准备( )
A.必须将宿主机的并口与目标系统的JTAG口连接
B.JFlash必须支持目标系统中相应型号的Nandflash操作
C.串口线必须连接
D.虚拟机中必须存在并口,并且是物理并口
答案:D,A,C,B
2.连接宿主机与目标系统的硬件连线主要包括( )
A.网线
B.并口线
C.串口接线
D.JTAG接线
答案:D,A,C
3.完成驱动程序模块注册与卸载的宏是( )
A.module_init()
B.init_module()
C.module_exit()
D.exit_module()
答案:A,C
4.下列函数中专属于内核驱动程序使用的有( )
A.printf
B.copy_to_user
C.copy_from_user
D.printk
答案:D,B,C
5.下列选项中,关于文件系统描述正确的是( )
A.它是管理软件
B.文件系统种类很多
C.它维护磁盘或磁盘分区上的文件
D.cramfs文件系统适合作为嵌入式linux系统的根文件系统
答案:C,A,B,D
6.在dev目录下注册液晶驱动设备节点,标示主次设备号使用到的数字有( )
A.12
B.0
C.29
D.28
答案:B,C
7.Busybox软件为我们提供的功能有( )
A.QT GUI库
B.常用的linux指令
C.内核引导
D.Linux系统初始化服务
答案:D,B
8.能作为Kconfig文件保留字描述菜单内容的有( )
A.config
B.menu
C.obj-$
D.help
答案:A,D,B
9.下列函数中属于file_operations( )结构体的函数指针有( )
A.write
B.open
C.close
D.read
答案:D,A,B,C
10.根文件系统包括的几个重要组件是( )
A.系统库文件
B.重要的工作目录如:/、/etc、/mnt等
C.常用的指令如:vi、ls、cat等
D.重要的配置文件与脚本如:linuxrc、profile、fstab等
答案:B,D,C,A
11.u-boot的常用指令包括( )
A.setenv
B.nand read
C.grep
D.tftp
答案:A,B,D
12.下列目录用来存放内核驱动程序的是( )
A../arch
B../drivers
C../kernel
D../sound
答案:B,D
13.TFTP服务的配置与启动过程有( )
A.启动xinetd服务
B.配置/etc/xinetd.d/tftp
C.启动tftp服务chkconfig tftp on
D.安装tftp server软件
答案:B,D,A
14.下列参数可作为启动参数使用的是( )
A.ip
B.root
C.init
D.console
答案:C,B,A,D
15.根文件系统的组成包括( )
A.指令
B.重要的配置文件
C.重要目录
D.系统库文件
答案:C,B,A,D
16.NFS服务的配置与启动过程有( )
A.启动nfs service nfs start
B.配置/etc/exports
C.查看nfs是否启动 netstat -a | grep nfs
D.启动 nfs service nfs stop
答案:B,A,C
17.构建嵌入式linux软件平台所必须的组件有( )
A.User File System
B.File System
C.Kernel
D.Bootloader
答案:D,C,B
18.操作系统提供的最基本功能有( )
A.内存管理
B.设备管理
C.CPU管理
D.任务管理
答案:B,C,A,D
19.下列选项中用来生成设备文件的选项有( )
A.主设备号
B.次设备号
C.设备操作权限
D.设备类型
答案:C,D,A,B
20.操作系统的作用有哪些( )
A.设备管理
B.内存管理
C.CPU管理
D.任务管理
答案:C,B,A,D
三、填空题
1.Linux的驱动程序有(___________)、块设备驱动程序、套接字驱动程序、杂项驱动程序
答案: 字符设备驱动程序
2.用来从内核态下拷贝数据到用户态下的函数是(___________)
答案: copy_to_user
3.字符设备驱动函数注册结构体是(___________)
答案:module_exit()
4.cramfs文件系统是(___________)、压缩的文件系统,可以作为嵌入式linux系统的根文件系统。
答案: 只读
5.内核打印信息函数是(___________)
答案: printk
6.硬件连线、目标系统、(___________)三部分构成了嵌入式系统开发的硬件环境;
答案: 宿主机
7.内核态下的程序指令执行效率一定要(___________);
答案: 高
8.脚本文件中“ echo"Start do it" ”命令的含义是(___________)
答案:向标准输出终端打印输出内容“Start do it ”
9.在目标系统中,启动系统时所使用的命令是(___________)
答案:go 0x30008000
10.字符设备驱动程序需要完成三类接口:驱动与硬件设备的接口、驱动与用户应用程序的接口、驱动与(___________)的接口;
答案: 内核
11.Madplay是基于字符控制台的MP3音乐播放软件,调节音量放大的方法是输入(___________)键;
答案: +
12.(___________)是运行在后台的一种特殊进程,它于控制终端并且周期性地执行某种任务或等待处理某些发生的事件
答案: 守护进程
13.在linux下,杂项驱动程序的主设备号是(___________);
答案: 10
14.用tar指令解压缩“**.bz2”文件时所使用的参数为(___________)
答案:zxvf
15.驱动程序维护的三个接口是(___________)接口、用户接口、内核接口
答案: 设备
16.系统中,没有父进程的子进程称为孤儿进程,孤儿进程将自动的被系统中的 (___________)号进程收养。
答案:1
17.字符设备驱动程序加载宏是(___________)
答案: module_init()
18.目标系统用来作为信息交互与指令下达的硬件设备是(___________)
答案: 串口
19.为系统设备创建挂载节点时所使用的命令是(___________)
答案:mknod
20.通过U-Boot指令下载u-boot.bin的方法是(___________);
答案:tftp u-boot.bin
21.进入操作系统的配置菜单所使用的命令为(___________)
答案:make menuconfig
22.U-Boot用来作为参数设置的指令是(___________);
答案:setenv
23.根文件系统的作用是(____________________)
答案:维护重要系统目录文件与普通配置文件
24.编译内核所使用的命令是(___________)
答案:make zImage
25.文件系统是指(___________)
答案:用来管理磁盘或磁盘分区上的文件的数据结构和算法。
26.编译内核所使用的指令是(___________)
答案:make zImage
27.开启tftp服务时,需修改“/etc/xinetd.d/tftp”配置文件,其中将“disable=yes”改为(___________)
答案:disable=no
28.(___________)是控制、传递内核启动模式与重要控制参数的途径;
答案: 启动参数
29.为了能够将宿主机上的程序运行在目标系统上,必须经过(___________)编译过程;
答案:交叉
30.内核配置的时候,我们可以使用make menuconfig指令来生成配置菜单,那么配置菜单生成时所依赖的文件是(___________)
答案: Kconfig
31.制作补丁文件时所使用的命令为(___________)
答案:diff
32.创建守护进程时,父进程退出后,原子进程编程(___________)进程;
答案:孤儿
33.可以通过(___________) |grep nfs 来查看 NFS服务是否启动 ;
答案: netstat -a
34.在内核中,为了控制2440通用输入输出端口输出数据,可以使用s3c2410_gpio_(___________);
答案: setpin
35.根文件系统的组成包括(___________)、(___________)、(___________)、(___________)四部分。
答案:重要目录、重要配置文件、指令、系统库文件
36.驱动程序注册函数misc_(___________)
答案: register
37.驱动程序卸载函数misc_(___________)
答案: deregister
38.手动创建设备文件的指令是(___________)
答案: mknod
39.u-boot命令中,保存所设置的环境变量时所使用的命令为(___________)
答案:saveenv
40.嵌入式Linux软件平台的组成为:引导系统、(___________)、根文件系统、(___________)、用户文件系统
答案:内核、库及应用程序
41.我们需要使用(___________)作为某设备的此设备号,以此来标明让系统为该设备自动分配一个次设备号。
答案: 255
42.内核配置时用来保存用户配置选项的文件是(___________);
答案:.config
43.用来从用户态下拷贝数据到内核态下的函数是(___________)
答案: copy_from_user
44.导出环境变量时所使用的shell命令是(___________)
答案:export
45.创建设备挂载节点的命令是(___________)
答案:mknod
46.驱动程序中的内存映射函数是(___________);
答案: mmap
四、判断题
1.( )键盘驱动程序不可以使用中断模式编写。
答案:N
2.( )内核在输出信息时可以使用printk函数完成,该函数的使用方法与printf类似。
答案:Y
3.( )键盘驱动程序不属于字符型设备驱动程序。
答案:N
4.( )当执行自动挂载过程时可以通过mount -a完成,自动挂载所遵循的配置文件是fstab。
答案:Y
5.( )文件系统就是用来管理磁盘或磁盘分区上文件的程序。
答案:Y
6.( )在嵌入式linux系统当中可以使用yaffs2文件系统作为用户文件系统。
答案:Y
7.( )NOR flash存储器可以作为嵌入式系统的永久存储器,但由于它的价格昂贵了它的使用。
答案:Y
8.( )在位嵌入式linux系统开发软件的时候,我们不能在宿主机上完成测试工作,必须时刻将程序下载到目标系统测试运行效果。
答案:N
9.( )嵌入式linux系统当中,根文件系统是不能烧录在目标系统的nand flash中的。
答案:N
10.( )file_operations结构体对于字符设备驱动程序来说可以不使用。
答案:N
11.( )在嵌入式linux系统当中,所有的驱动程序都不需要开发,因为都已经做好了。
答案:N
12.( )函数misc_register是杂项设备驱动注册函数。
答案:Y
13.( )补丁文件是通过diff指令比较两个文件,然后将结果输出到指定文件而生成的,它常用的参数组合是-urNa。
答案:Y
14.( )动态加载驱动程序模块的指令insmod,也可以使用modprobe来可靠加载驱动程序。
答案:Y
15.( )在内核解压缩目录下./drivers/char下存放的是字符型设备驱动程序。
答案:Y
16.( )驱动程序必须要编译并链接进内核,才能够被正确的加载并运行。
答案:N
17.( )当在U-Boot下,无法通过tftp下载内核文件的时候说明网线肯定断了。
答案:N
18.( )busybox是专门为嵌入式系统定制的一套linux指令软件包。
答案:Y
19.( )打补丁指令是patch,参数-pN,其中N是大于等于零的数,表示在补丁路径上移除的‘/’的数目。
答案:Y
20.( )内核态是CPU执行内核代码时所处的位置状态。
答案:Y
21.( )Linux操作系统中,驱动程序分为字符设备驱动、块设备驱动、套接字设备驱动。
答案:N
22.( )内核空间的数据可以通过用户应用程序直接访问
答案:N
23.( )我们可以通过mknod -m 660 console b 5 1来为串口创建设备文件。
答案:N
24.( )内核态与用户态的变量可以使用相同的RAM空间。
答案:N
25.( )用户态是CPU执行用户应用程序代码时所处的位置状态。
答案:Y
26.( )miscdevice结构体中有file_operations结构体对象指针变量存在。
答案:Y
27.( )在宿主机上开发的QT应用程序不能够移植到嵌入式linux目标系统上。
答案:N
28.( )在嵌入式linux系统当中系统引导程序是必须要有的。
答案:Y
29.( )在s3c2440上不能够运行Window CE操作系统。
答案:N
30.( )如果使目标系统通过NFS来挂载根文件系统,必须要制定root参数,还要制定nfsroot参数,最后还要为目标系统设定ip值。
答案:Y
五、简答题
1.简述NorFlash和NandFlash的区别
答案:NorFlash:以字节为单位进行操作,接口相对复杂,地址资源使用量大,集成度低,容量小,成本高,软件操作简单,访问速度快。
NandFlash:接口统一,简单,芯片集成度高,容量大,成本低,一块为单位进行操作,软件控制读写,访问速度相对慢,访问操作复杂。
2.简述tftp服务的配置和启动过程
答案:1、创建tftp服务目录:“ /tftpboot ”
2、配置tftp启动脚本:“ /etc/xinetd.d/tftp ”
修改:(1)disable = no
(2)server_argc = -s/tftpboot
3、启动tftp服务:chkconfig tftp on
3.简述在目标系统上挂载根文件系统的过程
答案:1、创建根文件目录:“ /nfs/rootfs ”
将根文件压缩文件拷贝到上述目录并加压缩到以上目录
2、配置启动参数:make menuconfig->boot options->配置启动参数
3、在宿主机中启动NFS服务
4、在“ /nfs/rootfs/dev ”下创建设备节点:
mknod -m 660 console c 5 1
4.通过tftp不能够下载内核映像,是分析一下出现该错误的原因是什么
答案:1、Tftp服务软件没有安装;
2、Tftp服务没有配置;
3、Tftp服务没有启动;
4、Selinux软件没有关闭;
5、宿主机网卡没有配置正确;
6、宿主机与目标系统网线没有连接正确;
5.简述交叉编译环境的搭建过程
答案:1、将交叉编译器压缩文件拷贝到“/s3c2440/tools”下
2、解压缩“arm-linux-gcc.*.*.*.tar.gz”
tar jxvf arm-linux-gcc.*.*.*.tar.gz -C /
3、设置环境变量
export PATH=/usr/local/arm/*.*.*/bin
4、在终端下查看环境变量设置是否成功,若成功则可使用编译器
6.简述声卡驱动程序的移植过程
答案:1、修改“./arch/arm/mach_s3c2440/mach-smdk2440.c”
添加头文件和结构体
2、make menuconfig 修改启动参数
3、编译内核:make zImage
4、创建声卡设备节点:mknod -m 660 dsp c 14 3
7.描述一下tftp服务的配置与启动过程
答案:1、创建目录:/tftpboot
2、配置tftp启动脚本:“/etc/xinetd.d/tftp”
disable = no
server_argc = -s/tftpboot
3、启动tftp服务:chkconfig tftp on
4、查看服务是否启动:netstat -a |grep tftp
8.简述nfs服务的配置与启动过程
答案:1、创建NFS服务目录:/nfs/rootfs
2、配置NFS服务:vi /etc/exports
3、启动NFS服务:service nfs start
9.简述linux系统的启动过程
答案:1、运行引导程序(bootloader)
2、引导程序向内核传递启动参数
3、启动内核,驱动设备,挂载根文件系统:运行配置脚本等
4、进入到控制台接收用户指令
10.试描述字符类设备驱动程序重要的接口函数的功能与作用;
copy_to_user:
copy_from_user:
struct file_operations:
struct miscdevice:
misc_register:
misc_deregister:
答案:copy_to_user:从内核态向用户态发送数据
copy_from_user:从用户态向内核态读取数据
struct file_operations:驱动服务函数注册结构体
struct miscdevice:杂项驱动设备注册结构体
misc_register:杂项驱动设备注册函数
misc_deregister:杂项驱动设备卸载函数
11.描述一下根文件系统的手动创建过程
答案:1、重要目录创建,如:/、/etc、/mnt、/lib等;
2、创建重要脚本与配置文件,如:linuxrc、profile、fstab;
3、生成系统指令;
4、创建系统库文件;
12.简述守护进程的创建过程;
答案:1、父进程创建子进程,父进程退出;
2、创建新的会话;
3、改变当前工作目录为根目录;
4、重设文件权限掩码;
5、关闭文件描述符;
13.根文件系统不能够通过NFS挂载,试描述可能出现该错误的原因;
答案:1、NFS服务没有启动;
2、Selinux软件没有关闭;
3、NFS开放目录没有配置;
4、目标系统与宿主机网线没有连接正确;
5、宿主机网卡不是桥接形式;
6、宿主机网卡参数没有配置正确;
14.简述文件系统的概念,试分析cramfs文件系统与yaffs2文件系统各自的优缺点
答案:1、文件系统:用来管理磁盘或磁盘分区上的文件的数据结构与算法。
2、cramfs文件系统与yaffs2文件系统各自的优缺点
(1)cramfs文件系统:只读,体积小,磁盘空间利用率高,压缩的文件系统,边使用边解压,内存空间占用小;缺点是:文件系统访问速度稍慢。适合用于管理嵌入式系统的根文件系统。
(2)yaffs2文件系统:可读写,体积小,非压缩文件系统,使用时访问速度快。适合用于管理嵌入式系统的用户文件系统。
15.描述一下下面启动参数的含义:
noinitrd root=/dev/nfs nfsroot=192.168.1.188:/nfs/rootfs ip=192.168.1.187 console=ttySAC0,115200 init= nuxrc;
答案:noinitrd :内核不执行自身的初始化过程
root=/dev/nfs:指明根文件系统的挂载方式
nfsroot=192.168.1.188:/nfs/rootfs :指明根文件的位置
ip=192.168.1.187:目标系统的IP地址
console= ttySAC0,115200: 指定串口0为这个设备的信息交互设备, 波特率115200
init= /linuxrc:指明系统初始化文件
16.描述一下什么是SELinux软件,我们如何关闭掉这个服务?
答案:关闭SELinux的方法:
修改/etc / selinux/config文件中的SELINUX="" 为 disabled ,然后重启
17.试说明mmap函数的形参个数与各自所代表的含义
答案:函数:void *mmap(void *start,size_t length,int prot,int flags,int fd,off_t offsize);
参数start:指向欲映射的内存起始地址,通常设为 NULL,代表让系统自动选定地址,映射成功后返回该地址。
参数length:代表将文件中多大的部分映射到内存。
参数prot:映射区域的保护方式。可以为以下几种方式的组合:
参数flags:影响映射区域的各种特性。
参数fd:要映射到内存中的文件描述符。
参数offset:文件映射的偏移量,通常设置为0,代表从文件最前方开始对应,offset必须是分页大小的整数倍。
18.试说明设备文件中设备类型、主设备号、次设备号各自作用
答案:1、设备类型描述设备所属种类,如:字符类设备、块设备、套接字设备;
2、主设备号描述设备所属设备分类:如:硬盘类、声卡类、显卡类等等;
3、次设备号描述设备在设备分类中的序号,如:硬盘类的第一块硬盘等等;
六、编程题
1.完成下面没有完成的led灯驱动程序
#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #define DEVICE_NAME "leds" static unsigned long led_table [] = { S3C2410_GPB(5), S3C2410_GPB(6), S3C2410_GPB(7), S3C2410_GPB(8), }; static unsigned int led_cfg_table [] = { S3C2410_GPIO_OUTPUT, S3C2410_GPIO_OUTPUT, S3C2410_GPIO_OUTPUT, S3C2410_GPIO_OUTPUT, }; MODULE_LICENSE("GPL"); MODULE_AUTHOR("FriendlyARM Inc."); 答案:static int sbc2440_leds_ioctl( struct inode *inode, struct file *file, unsigned int cmd, unsigned long arg) { switch(cmd) { case 0: case 1: if (arg > 4) { return -EINVAL; } s3c2410_gpio_setpin(led_table[arg], !cmd); return 0; default: return -EINVAL; } } static struct file_operations dev_fops = { .owner = THIS_MODULE, .ioctl = sbc2440_leds_ioctl, }; static struct miscdevice misc = { .minor = MISC_DYNAMIC_MINOR, .name = DEVICE_NAME, .fops = &dev_fops, }; static int __init dev_init(void) { int ret; int i; for (i = 0; i < 4; i++) { s3c2410_gpio_cfgpin(led_table[i], led_cfg_table[i]); s3c2410_gpio_setpin(led_table[i], 0); } ret = misc_register(&misc); printk (DEVICE_NAME"\initialized\\n"); return ret; } static void __exit dev_exit(void) { misc_deregister(&misc); } module_init(dev_init); module_exit(dev_exit); 2.试编写控制led灯的守护进程。要求led灯在系统启动后以1秒钟的时间间隔闪烁。Led灯的设备文件为/dev/leds0,可以使用ioctl函数接口控制,该函数第一个参数为设备描述符、第二个参数为led灯序号(0、1、2、3四个等,可任选一个作为控制对象)、第三个参数为led等亮灭控制(0灭,非零亮)。 答案:#include #include #include #include #include #include #include #define MAXFILE 65535 int main() { pid_t pid; int i; pid = fork(); if(pid < 0) { printf("Create pid error!\\n"); exit(1); } else if(pid == 0) { if (setsid() == -1) { exit(1); } chdir("/"); umask(0); for(i = 0; i < MAXFILE; i++) { close(i); } int fd; char buf[10],led = 0; fd = open("/dev/leds",O_RDWR); while(1) { if (fd < 0) { exit(0); } led = !led; ioctl(fd,0,led); sleep(1); } } else { exit(0); } } 3.试编写s3c2440 4路led流水灯控制程序。要求led灯流水控制时间间隔1秒钟。Led灯的设备文件为/dev/leds0,可以使用ioctl函数接口控制,该函数第一个参数为设备描述符、第二个参数为led灯序号(0、1、2、3四个等,可任选一个作为控制对象)、第三个参数为led等亮灭控制(0灭,非零亮)。 答案:#include #include #include #include #include #include #include int main() { int fd; char buf,i; fd = open("/dev/leds",O_RDWR); if (fd <= 0) { perror("open\\n"); exit(1); } else { printf("open success\\n"); } for (i = 0;i < 4;i++) { for (j = 0;j < 4; j++) ioctl(fd,j,0); ioctl(fd,i,1); sleep(1); } close(fd); exit(0); } 4.Led灯的字符设备驱动程序led.c已经开发完成,现欲将其添加进内核的配置菜单选项,由使用者决定是否选择该驱动程序,我们需要修改字符设备驱动程序目录中的Kconfig与Makefile文件,那么这两个文件该如何修改?写出详细过程(用标准的Kconfig与Makefile脚本实现)。 答案:1、Kconfig config S3C2440_LEDS bool "s3c2440 leds support" default y ---help--- This is a driver for s3c2440 leds! 2、Makefile obj-$(CONFIG_S3C2440_LEDS) += led.o 七、论述题 1.简述“linux-2.6.32.2内核”的完整配置及启动过程 答案:1、将内核压缩文件加压到“/s3c2440/kernel”下 2、进入加压后的“linux-2.6.32.2” 3、修改“Makefile”文件 ARCH ?= arm CROSS_COMPILE ?= arm-linux- 编译:make s3c2410_defconfig 4、修改“./arch/arm/kernel/head.S”文件 在“stext”下添加: mov r0, #0 ldr r1, =0x16a ldr r2, =0x30000100 5、为内核打补丁 将扑丁文件拷到“/s3c2440/kernel”下 patch -p0 < *.patch 7、编译内核:make zImage 8、将编译好的内核压缩可执行文件“zIamge”文件拷贝到“/tftpboot”中 9、进入目标系统操作界面,下载zImage 文件 tftp zImage 10、启动目标系统:go 0x30008000 2.简述Linux内核配置编译过程(Linux-2.6.32.2内核配置和编译过程) 答案:1、解压缩内核文件 2、进入加压缩后的内核文件 3、修改Makefile文件,标明目标系统类型和编译器 4、编译 make s3c2410_defconfig 生成内核可执行文件“zImage” 5、修改"./arch/arm/kernel/head.S"文件 在“stext”下添写: mov r0, #0 ldr r1, =0x16a ldr r2, =0x30000100 保存退出 6、编译内核 make zImage
