题目
windows下超级终端的配置。(2)BootLoader的结构分两部分,简述各部分的功能?答:两部分:Stage1:用汇编语言编写,主要进行设备的初始化;Stage2:用C语言编写,增强程序的移植性和可读性。(2)ARM常用的Bootloader程序有哪些?答:U-Boot,Blob,RedBoot,vivi(3)简述生成内核映像文件zImage的步骤。答:1、make config进入命令行;2、make menuconfig内核裁剪;3、make clean清理以前已生成的目标文件;4、make dep编译变量的依赖关系;5、make zImage生成内核镜像文件zImage。(4)BusyBox工具的功能是什么?答:BusyBox工具用来精简基本用户命令和程序, 它将数以百计的常 用UNIX/Linux命令集成到一个可执行文件中。(5)简述根文件系统的创建过程。答:1、建立基本的目录结构;2、交叉编译BusyBox;3、创建配置文件;4、利用cramfs工具创建根文件系统映像文件。5.4练习题1.选择题(1)B (2)D (3)C (4)A (5)C (6)D2.填空题(1)内核态(2)字符设备 块设备(3)主设备号 次设备号(4)静态编译 动态编译(5)insmod说明:用于加载模块化驱动程序的命令是insmod;用于卸载已安装模 块化驱动程序的命令是rmmod;用于查看已安装的模块化驱动程序的 命令是lsmod。3.简答题(1)简述驱动程序的主要功能。答:1、对设备初始化和释放;2、数据传送;3、检测和处理设备出 现的错误。(2)简述驱动程序的组成。答:1、自动配置和初始化子程序;2、服务于I/O请求的子程序;3、 中断服务子程序。(3)简述设备驱动程序与应用程序的区别。答:1、设备驱动程序工作在内核态下,而应用程序工作在用户态下;2、设备驱动程序从module_init()开始,将初始化函数加入内核初始 化函数列表中, 在内核初始化时执行驱动的初始化函数, 从而完成驱 动的初始化和注册,之后驱动便停止工作,等待应用程序的调用;而 应用程序从main()函数开始执行。3、应用程序可以和GLIBC库连接,因此可以包含标准的头文件;驱 动程序不能使用标准的C库,因此不能调用所有的C库函数。(4)简述设备文件、驱动文件、主设备号和次设备号之间的关 系。答:驱动程序加载到内核后有一个主设备号。在Linux内核中,主设 备号标识设备对应的驱动程序, 告诉Linux内核使用哪一个驱动程序 为该设备(也就是/dev下的设备文件)服务,而次设备号则用来标识具 体且唯一的某个设备。(5)简述字符设备驱动程序提供的常用入口点及各自的功能答:open入口点:对将要进行的I/O操作做好必要的准备工作, 如清 除缓冲区等。 如果设备是独占的, 即同一时刻只能有一个程序访问此 设备,则open子程序必须设置一些标志以表示设备处于忙状态。close入口点:当设备操作结束时,需要调用close子程序关闭设备。 独占设备必须标记设备可再次使用。read入口点:当从设备上读取数据时,需要调用read子程序。write入口点:向设备上写数据时,需要调用write子程序。ioctl入口点: 主要用于对设备进行读写之外的其他操作, 比如配置设 备、进入或退出某种操作模式等, 这些操作一般无法通过read或write子函数完成操作。(6)简述逐次逼近型ADC的结构及工作原理。答:逐次逼近型ADC通常由比较器,数模转换器(DAC),寄存器和 控制逻辑电路组成。工作原理:初始化时,先将寄存器各位清空。转换时,先将寄存器的 最高位置1,再将寄存器的数值送入DAC,经D/A转换后生成模拟 量送入比较器中与输入的模拟量进行比较,若VsDAC,经D/A转换后生成的模拟量送入比较器中与输入模拟量进行 比较,若Vs5.编程题S3C2410X通过GPG3端口来控制LED的亮和灭,具体电路如图,请为该字符设备设计一个驱动程序和应用程序,应用程序能够根据用户需要来控制LED的/驱动程序00081 00082 00083000B4 000B5 000B6 000B7 000BB 000B9 00090 00091 00092 00093 00094 00095 00096 00097 00098 00099 00100 00101 00102 00103 00104 00105 00106 00107 00108 00109 00110 00111 00112 00113 00114 00115 00116 00117 00118 00119 0012000121 00122 00123 00124 0012S 00126 00127 00128 00129 00130 00131 00132 00133 00134 00135 00136 00137 00138 0013900140 00141 00142 0014300144 0014S 00146 00147 00148 00149 00150 00151 00152 001S3 00164 00155 00156 00157 001S8 00189 00160default: return・EINVAL;}return0;〃送即数,读取led的状态〃參莎buffer:用来存⑭读取的LED状态〃cost:用乗记来用户读取了多少个字符staticssize.tS3c2410—led_read(structfile"______,char"______,size.t______,loff.t•pos)■4put_user(m_dev.status,(intM)buffer);〃法C LED撲誉return1;■■〃写操作函数•本其例中不倾任何丰佶staticssize_tS3C2410—l©d—Writ© ;structfiley______rchar *buffer,size_t______,loff_tx______)■■get_user(m_dev.statu,(int*)buffer);lf(m_dev.stdtus==0)〃灭s3c2410_Qpio_setpin(S3C2410.GPG3,LED.OFF);elseit(m_dev.stotus==1)〃;?s3c2410_0pio.setpin(S3C2410_GPG3,LED.ON);return1;〃文件棧作结构体,实玫s3c2410_led_open()等函数与open()等系统调用的连接staticstructfile^operationss3c2410_led_fops■*(・owner •THIS_MODULEZ・open ■s3c2410_led_open#.release ■s3c2410_led_release,.locti ■s3c2410_led_ioctlr.read ■s3c2410_led_readr・wnte ■ s3c2410_led_writez〃安装LED设侖的功能函数准设备加變榄快里面调用static voidled setupCdeV(______)intret=if(led_major)舁碎杰分配{devno■MKDEV(/ed_major, led_minor);ret=register_chrdev_region(de^no,1, OEVICE_NAME);lf(ret<0)return-1;))else/{ret■alloc_chrdev_region(8o/evnorled_majort1,DEVICE_NAME);iff(ret<0){phntk(*Line %d:allocchrdevregion infile %s error*n"z_LINE_, _FILE_);return•丄;cdev_init(8jn_dev.cdev,m_dev.cdev.owner=THIS.MODULE;m_dev.cdev.ops-^s3c2410_ led_ fops;f/g上龙幺Jf孝盘程夕余弊淳想器W密ret•cdev^addCfium^dev-cdev,devno,1);〃期jSSiif(ret<0)printkt^Line %d: cdev addinfile %s error*n: _LINE_, _FILE_)return・1;/应用程序6.7练习题1.选择题(1)C(2)D说明:TinyOS是UCB erkeley(加州大学伯克利分校)开发的开放源 代码操作系统(3)C2.填空题(1)X Windows,Micro Windows,MiniGUI(或者Qtopia Core,Qt/Embedded,OpenGUI)(2)X Window Server,Xlib,帧缓存3.问答题(1)简述嵌入式GUI的特点。答:1、轻型,占用资源少。嵌入式GUI要求是轻量型的,这主要是 受限于嵌入式硬件资源。2、可配置。由于嵌入式设备的可定制性,要求相应的GUI系统也是 可以定制的,所以嵌入式GUI一般都具有可裁剪性。3、高性能。耗用系统资源较少,能在硬件性能受限的情况下、尤其 是CPU资源较少的情况下达到相对较快的系统响应速度,同时减少 能源消耗。4、高可靠性。系统独立,能适用于不同的硬件,在高性能的同时保 证高可靠性。(2)简述Qt/X11和Qtopia Core的异同点。答:相同点: 都是嵌入式GUI,也就是在嵌入式系统中为特定的硬件 设备或环境而设计的图形用户界面系统。Qt/X11与Qtopia Core最大的区别在于Qt/X11依赖于X WindowServer或Xlib,而Qtopia Core是直接访问帧缓存。它们所依赖的底 层显示基础是不同的,从而导致了体系结构上的差异。(3)简述信号与槽的作用。答:信号:当某个信号对其客户或所有者发生的内部状态发生改变, 信号被一个对象发射。 只有定义过这个信号的类及其派生类能够发射 这个信号,当一个信号被发射时,与其相关联的槽将会被立刻执行。 槽:槽是普通的C++成员函数, 可以被正常调用, 它们唯一的特殊性 就是很多信号可以与其相关联。 当与其相关联的信号被发射时, 这个 槽就会被调用。槽可以有参数,但槽的参数不能有缺省值。4.编程题编写Qtopia Core程序:在窗口建立两个按钮,单击Show Text按钮时在单行文本框中显示Hello World!!!;单击Quit按钮时关闭窗口。
windows下超级终端的配置。(2)BootLoader的结构分两部分,简述各部分的功能?答:两部分:Stage1:用汇编语言编写,主要进行设备的初始化;Stage2:用C语言编写,增强程序的移植性和可读性。(2)ARM常用的Bootloader程序有哪些?答:U-Boot,Blob,RedBoot,vivi(3)简述生成内核映像文件zImage的步骤。答:1、make config进入命令行;2、make menuconfig内核裁剪;3、make clean清理以前已生成的目标文件;4、make dep编译变量的依赖关系;5、make zImage生成内核镜像文件zImage。(4)BusyBox工具的功能是什么?答:BusyBox工具用来精简基本用户命令和程序, 它将数以百计的常 用UNIX/Linux命令集成到一个可执行文件中。(5)简述根文件系统的创建过程。答:1、建立基本的目录结构;2、交叉编译BusyBox;3、创建配置文件;4、利用cramfs工具创建根文件系统映像文件。5.4练习题1.选择题(1)B (2)D (3)C (4)A (5)C (6)D2.填空题(1)内核态(2)字符设备 块设备(3)主设备号 次设备号(4)静态编译 动态编译(5)insmod说明:用于加载模块化驱动程序的命令是insmod;用于卸载已安装模 块化驱动程序的命令是rmmod;用于查看已安装的模块化驱动程序的 命令是lsmod。3.简答题(1)简述驱动程序的主要功能。答:1、对设备初始化和释放;2、数据传送;3、检测和处理设备出 现的错误。(2)简述驱动程序的组成。答:1、自动配置和初始化子程序;2、服务于I/O请求的子程序;3、 中断服务子程序。(3)简述设备驱动程序与应用程序的区别。答:1、设备驱动程序工作在内核态下,而应用程序工作在用户态下;2、设备驱动程序从module_init()开始,将初始化函数加入内核初始 化函数列表中, 在内核初始化时执行驱动的初始化函数, 从而完成驱 动的初始化和注册,之后驱动便停止工作,等待应用程序的调用;而 应用程序从main()函数开始执行。3、应用程序可以和GLIBC库连接,因此可以包含标准的头文件;驱 动程序不能使用标准的C库,因此不能调用所有的C库函数。(4)简述设备文件、驱动文件、主设备号和次设备号之间的关 系。答:驱动程序加载到内核后有一个主设备号。在Linux内核中,主设 备号标识设备对应的驱动程序, 告诉Linux内核使用哪一个驱动程序 为该设备(也就是/dev下的设备文件)服务,而次设备号则用来标识具 体且唯一的某个设备。(5)简述字符设备驱动程序提供的常用入口点及各自的功能答:open入口点:对将要进行的I/O操作做好必要的准备工作, 如清 除缓冲区等。 如果设备是独占的, 即同一时刻只能有一个程序访问此 设备,则open子程序必须设置一些标志以表示设备处于忙状态。close入口点:当设备操作结束时,需要调用close子程序关闭设备。 独占设备必须标记设备可再次使用。read入口点:当从设备上读取数据时,需要调用read子程序。write入口点:向设备上写数据时,需要调用write子程序。ioctl入口点: 主要用于对设备进行读写之外的其他操作, 比如配置设 备、进入或退出某种操作模式等, 这些操作一般无法通过read或write子函数完成操作。(6)简述逐次逼近型ADC的结构及工作原理。答:逐次逼近型ADC通常由比较器,数模转换器(DAC),寄存器和 控制逻辑电路组成。工作原理:初始化时,先将寄存器各位清空。转换时,先将寄存器的 最高位置1,再将寄存器的数值送入DAC,经D/A转换后生成模拟 量送入比较器中与输入的模拟量进行比较,若VsDAC,经D/A转换后生成的模拟量送入比较器中与输入模拟量进行 比较,若Vs5.编程题S3C2410X通过GPG3端口来控制LED的亮和灭,具体电路如图,请为该字符设备设计一个驱动程序和应用程序,应用程序能够根据用户需要来控制LED的//驱动程序00081 00082 00083000B4 000B5 000B6 000B7 000BB 000B9 00090 00091 00092 00093 00094 00095 00096 00097 00098 00099 00100 00101 00102 00103 00104 00105 00106 00107 00108 00109 00110 00111 00112 00113 00114 00115 00116 00117 00118 00119 0012000121 00122 00123 00124 0012S 00126 00127 00128 00129 00130 00131 00132 00133 00134 00135 00136 00137 00138 0013900140 00141 00142 0014300144 0014S 00146 00147 00148 00149 00150 00151 00152 001S3 00164 00155 00156 00157 001S8 00189 00160default: return・EINVAL;}return0;〃送即数,读取led的状态〃參莎buffer:用来存⑭读取的LED状态〃cost:用乗记来用户读取了多少个字符staticssize.tS3c2410—led_read(structfile"______,char"______,size.t______,loff.t•pos)■4put_user(m_dev.status,(intM)buffer);〃法C LED撲誉return1;■■〃写操作函数•本其例中不倾任何丰佶staticssize_tS3C2410—l©d—Writ© ;structfiley______rchar *buffer,size_t______,loff_tx______)■■get_user(m_dev.statu$,(int*)buffer);lf(m_dev.stdtus==0)〃灭s3c2410_Qpio_setpin(S3C2410.GPG3,LED.OFF);elseit(m_dev.stotus==1)〃;?s3c2410_0pio.setpin(S3C2410_GPG3,LED.ON);return1;〃文件棧作结构体,实玫s3c2410_led_open()等函数与open()等系统调用的连接staticstructfile^operationss3c2410_led_fops■*{・owner •THIS_MODULEZ・open ■s3c2410_led_open#.release ■s3c2410_led_release,.locti ■s3c2410_led_ioctlr.read ■s3c2410_led_readr・wnte ■ s3c2410_led_writez〃安装LED设侖的功能函数准设备加變榄快里面调用static voidled setupCdeV(______)intret=if(led_major)舁碎杰分配{devno■MKDEV(/ed_major, led_minor);ret=register_chrdev_region(de^no,1, OEVICE_NAME);lf(ret<0)return-1;})else//{ret■alloc_chrdev_region(8o/evnorled_majort1,DEVICE_NAME);iff(ret<0){phntk(*Line %d:allocchrdevregion infile %s error*\n"z_LINE_, _FILE_);return•丄;cdev_init(8jn_dev.cdev,m_dev.cdev.owner=THIS.MODULE;m_dev.cdev.ops-^s3c2410_ led_ fops;f/g上龙幺Jf孝盘程夕余弊淳想器W密ret•cdev^addCfium^dev-cdev,devno,1);〃期jSSiif(ret<0)printkt^Line %d: cdev addinfile %s error*\n: _LINE_, _FILE_)return・1;//应用程序6.7练习题1.选择题(1)C(2)D说明:TinyOS是UCB erkeley(加州大学伯克利分校)开发的开放源 代码操作系统(3)C2.填空题(1)X Windows,Micro Windows,MiniGUI(或者Qtopia Core,Qt/Embedded,OpenGUI)(2)X Window Server,Xlib,帧缓存3.问答题(1)简述嵌入式GUI的特点。答:1、轻型,占用资源少。嵌入式GUI要求是轻量型的,这主要是 受限于嵌入式硬件资源。2、可配置。由于嵌入式设备的可定制性,要求相应的GUI系统也是 可以定制的,所以嵌入式GUI一般都具有可裁剪性。3、高性能。耗用系统资源较少,能在硬件性能受限的情况下、尤其 是CPU资源较少的情况下达到相对较快的系统响应速度,同时减少 能源消耗。4、高可靠性。系统独立,能适用于不同的硬件,在高性能的同时保 证高可靠性。(2)简述Qt/X11和Qtopia Core的异同点。答:相同点: 都是嵌入式GUI,也就是在嵌入式系统中为特定的硬件 设备或环境而设计的图形用户界面系统。Qt/X11与Qtopia Core最大的区别在于Qt/X11依赖于X WindowServer或Xlib,而Qtopia Core是直接访问帧缓存。它们所依赖的底 层显示基础是不同的,从而导致了体系结构上的差异。(3)简述信号与槽的作用。答:信号:当某个信号对其客户或所有者发生的内部状态发生改变, 信号被一个对象发射。 只有定义过这个信号的类及其派生类能够发射 这个信号,当一个信号被发射时,与其相关联的槽将会被立刻执行。 槽:槽是普通的C++成员函数, 可以被正常调用, 它们唯一的特殊性 就是很多信号可以与其相关联。 当与其相关联的信号被发射时, 这个 槽就会被调用。槽可以有参数,但槽的参数不能有缺省值。4.编程题编写Qtopia Core程序:在窗口建立两个按钮,单击Show Text按钮时在单行文本框中显示Hello World!!!;单击Quit按钮时关闭窗口。
题目解答
答案
flip buffer count flip count pos void
解析
题目主要涉及嵌入式系统相关知识,包括Windows超级终端配置、BootLoader结构、ARM常用Bootloader、内核映像生成、BusyBox功能、根文件系统创建、驱动程序、嵌入式GUI等内容,同时包含编程题中驱动程序的参数填充。其中编程题需根据给定的驱动程序框架,补充S3c2410_led_read函数的参数,结合Linux字符设备驱动的标准函数原型ssize_t (*read)(struct file *, char __user *, size_t, loff_t *),可确定缺失的参数。