




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第1部分 习题部分第1章1.什么是进程?进程是一个具有一定独立功能的程序关于某个数据集合的一次运行活动。它是操作系统动态执行的基本单元,在传统的操作系统中,进程既是基本的分配单元,也是基本的执行单元。:第一,进程是一个实体。每一个进程都有它自己的地址空间,一般情况下,包括文本区域(text region)、数据区域(data region)和堆栈(stack region)。第二,进程是一个“执行中的程序”。2.什么是多道程序系统?多道程序系统是在计算机内存中同时存放几道相互独立的程序,使它们在管理程序控制之下,相互穿插的运行。两个或两个以上程序在计算机系统中同处于开始和结束之间的状态。多道程
2、序技术运行是我特征:多道,宏观上并行,微观上串行3.进程具有那三种基本状态?进程的三种基本状态:就绪(Ready)状态 、运行状态 、阻塞状态4. Linux内核有那些主要功能?处理机调度,内存管理,进程管理,设备管理,文件管理等5.简述内核镜像的构建步骤。(1)构建内核映像vmlinux根据内核源码树目录(/)下.config文件中的配置,将系统核心组件(只任何时候都要编译进内核的组件,如进程调度模块、内存管理模块等)和配置选项为built-in的系统组件进行编译,根据/arch/i386/kernel/(2) vmlinux瘦身及压缩使用objcopy程序(GNU实用工具程序,作用是拷贝一
3、个目标文件中内容到另一个目标文件中)删除vmLinux中包含的多余信息,去掉.note和.comment段,并加vmLinux转化成raw (3)构建包含解压缩代码的vmlinux映像 binary(原始二进制)格式。使用ld将包含压缩的内核核心的文件piggy.o与同一目录下(/arch/(4) vmlinux再次瘦身通过objcopy程序删除上一步生成的vmLinux映像中多余信息,去掉.note这一步中使用内核源代码中提供的内核映像构建工具build将bootsect、setup、vmlinux.bin三个文件一次存放到新建的bzImage文件中。和.comment段,转化成为raw b
4、inary格式。(5)构建内核映像bzImage这一步中使用内核源代码中提供的内核映像构建工具build将bootsect、setup、vmlinux.bin三个文件一次存放到新建的bzImage文件中。6.什么是原子操作?所谓原子操作,就是该操作绝不会在执行完毕前被任何其他任务或事件打断,也就说,它是最小的执行单位,不可能有比它更小的执行单位,因此这里的原子实际是使用r物理学里的物质微粒的概念,主要实现资源计数。第2章1、 XScale的超流水线由具体那几种流水线组成?XScale的超流水线由整数处理(integer),乘加(MAC)和存储(memory) 3条流水线组成2、 Arm Lin
5、ux嵌人式操作系统根据运行的层次,可以划分为哪三大部分?可以划分为启动引导(Boot Loader)(BootLoader是一个嵌人式系统最初运行的一小段程序,它在系统复位时被调用运行), 操作系统内核(Linux Kernel),文件系统(File System)3、对Linux操作系统,BootLoader主要完成的任务有那几项?BootLoader主要完成的任务有初始化处理器及外设的硬件资源配置、建立内存空间的映射图、装载操作系统映像到内存、对Flash编程、运行操作系统、传递系统启动参数、命令行解析和输入输出控制4、 Boot Loader的第一阶段(stage1)主要完成那些任务?硬
6、件设备初始化、为加载Boot Loader的stage2准备内存(主要是SDRAM)空间、复制Boot Loader的stage2到内存空间、设置好堆栈,跳转到stage2的入口点。5、PXA270RP上电复位执行哪个程序?/src/blob/start.s6、start.s程序中的第1条指令是什么指令?reset/复位中断跳转到/src/blob/start.s执行7.称为汇编代码与C代码的结合点的程序是哪个程序?它与C代码的结合点体现在那条指令上?/src/blob/xlli/mainstone/下面的trampoline.S体现在 bl main /跳转到main.c中的main函数/8
7、.请说明下面代码完成的功能。并加上注释?normal_boot:movr7, #0x1000 /检查开始的1M空间,每块4Kmovr6, r7, lsl #8/4KBfile3 把file1,file2连接再重定向到file3。3、显示用户当前工作路径使用什么命令? pwd4、复制文件使用什么命令?cp , cp r 源文件 目的文件5、进出目录使用什么命令? cd 6、写出以超级用户身份执行gdb的命令行。sudo gdb (sudo:以超级用户身份执行)7、 vi有那3种模式?进入vi时处于什么模式?vi有3种状态,即可视命令模式、冒号命令模式及文本编辑模式。进入vi 时,首先进入可视命令
8、方式8、存档并退出vi用什么命令?在vi内,使用存档或退出的指令,先按冒号(:),进入冒号命令模式,用户就可以看见在屏幕左下方,出现冒号“:”,这表示vi经进入冒号命令模式,在此可以完成存档或退出工作。如输入“:q”代表退出,“:w”表示存盘。:wq表示存档并退出9、 写出将main.c subr1.c subr2.c subr3.c编译链接生成可执行文件名为prog的gcc命令行。gcc -o prog main.c subr1.c subr2.c subr3.c10、写出将main.c subr1.c subr2.c subr3.c编译链接生成可执行文件名为prog的名字为mymake的m
9、akefile文件。Prog:main.o subr1.o subr2.o subr3.o gcc o prog main.o subr1.o subr2.o subr3.o main.o: main.c main.h gcc c I o main.o main.c subr1.o:subr1.c gcc c o subr1.o subr1.c subr2.o:subr2.c gcc c o subr2.o subr2.c subr3.o:subr3.c gcc c o subr3.o subr3.c clean: rm f *.o 11、请分别写出退出GDB以及在GDB中运行被调试程序的命令
10、。退出GDB命令:quit运行程序命令:run 12、每个设备驱动程序都具有那三种特性?每个设备驱动程序都具有特性:具有一整套的和硬件设备通信的例程,并且提供给操作系统一套标准的软件接口、具有一个可以被操作系统动态地调用和移除的自包含组件、可以控制和管理用户程序和物理设备之间的数据流。这里所说的设备驱动,主要是针对存储器和外设(包括处理器内部集成的存储器和外设),而不是针对CPU核的。13、 Linux将存储器和外设分为那3大类设备?Linux将存储器和外设分为:字符设备:字符设备必须以串行顺序依次进行访问的设备,是顺序的数据流设备,这些字符连续地形成一个数据流,如触摸屏、鼠标、终端等。块设备
11、: 块设备可以用任意顺序进行访问,以块为单位进行操作,这种设备使用缓冲区来存放暂时的数据,等待条件成熟以后,从缓存一次性写入设备或从设备中一次性读出放入到缓冲区,如硬盘、软驱等。网络设备: 网络设备通过BSD socket接口访问的设备,在系统和驱动程序之间定义有专门的数据结构(skbuff)进行数据的传递。系统里支持对发送数据和接收数据的缓存,提供流量控制机制,提供对多协议的支持.14、解释hello_devp =kmalloc (sizeof(struct hello_dev),GFP_KERNEL);语句的功能。为devp设备开辟了一块大小为sizeof(struct hello_dev
12、)大小的内存单元15、 hello_devp和hello_setup_cdev函数中形参指针dev有什么关系?hello_setup_cdev中cdev指向hello_devp模拟变量,hello_devp是实参,后者是指针第5章1、 Linux字符设备驱动的关键数据结构及作用是什么?cdev及file_operations结构体。在Linux2. 6 下用 cdcv结构体描述字符设备,其中, cdev的成员dev_t 用于定义设备号. file_operation用于定义字符设备驱动提供给虚拟文件系统的接口函数. 2、加载与卸载模块的作用是什么?模块的加载函数首先会调用按键初始化函数来对设备
13、进行初始化,包括设备号申请和设备的注册等,之后会调用中断处理函数申请中断,模块卸载函数的工作则恰好相反,会释放中断并注销设备3、 Linux字符设备驱动有那些具体的接口函数?open入口点,CLOSE.,READ.,SELECT,WRITE.,IOCTL.4、已知PAX270GPIO相关各寄存器和地址如下:GPIO引脚替代功能寄存器:GAFR0_L:0X40E0 0054,GAFR0_U:OX40E0 0058GPIO方向寄存器GPDR0:0x40E0 000CGPIO引脚输出设置寄存器GPSR0:0x40E0 0018GPIO引脚输出状态清除寄存器GPSR0:0x40E0 0018GPIO引
14、脚电平状态寄存器:GPLR0:0x40E0 0000 请编写C程序完成:(1)将GPIO引脚设置为GPIO功能;将GPIO引脚设置为替代功能3; #define gafr0_l(*(volatile unsigned*)0x40e00054)(2)将GPIO引脚设置为GPIO输出,然后通过GPIO引脚输出高电平;再执行1+2+100;然后通过GPIO引脚输出低电平。int i,sum=0;GAFR0_L &= (0X3(15*2);/把15位设置为普通GPIO GPDR0 |= 115;/将GPIO设置成 output GPSR0 | = 115;/将bit15置1 for(i=0;i=100
15、;i+)sum+=i;GPCR0 |=115;/将 bit15置 0第6章1、什么是内存映射?给应用程序提供一个方法,让它能够连续地查看到设备中的内存,这个概念就叫做内存映射。2、什么是I/O内存?通常情况下,设备会提供一组寄存器来用于控制设备、读写设备和获取设备状态,即控制寄存器、数据寄存器和状态寄存器。这些寄存器有可能位于I/O空间,也可能位于内存空间。位于内存空间时,对应的内存空间被称为I/O内存。 I/O内存是简单的一个像RAM的区域,它被处理器用来跨过总线存取设备3、那些处理器中存在着I/O空间的概念,那些处理器中不存在着I/O空间的概念?X86处理器中存在着I/O空间的概念, I/
16、O空间是相对于内存空间而言的。而大多数的嵌入式微控制器如ARM, PowcrPC等中并不提供I/O空间,而仅存在内存空间4、Linux中完成I/O内存映射的是哪个函数?试写出该函数原型并解释之。IoremapVoid*_ioremap(unsigned long offset,unsigned longsize); Ioremap的作用是吧一个屋里内存位置映射为一个内核指针,其长度由size参数指定,Ioremap()需要建立一个新的页表,但是它并不进行内存的分配行为,它返回一个特殊的虚拟地址,可以用来存取特定的物理地址范围5、参考拨码驱动程序,解释下面代码中各语句的作用。 addr_stat
17、us=ioremap(0x08000018,0x0f);/*选择CPLD2*/ outb(0x20,addr_status);/*写I/O端口8字节宽*/ ioremap_addr=ioremap(0x0c014000,0x0f);/*将拨码开关的物理地址映射为内核指针*/6、写出Linux中对I/O端口进行8比特,16比特宽的数据读取的函数的函数原型。unsigned inb(unsigned port);unsigned inw(unsigned port);7、参考LED点阵驱动程序,解释下面代码中各语句的作用。 addr_status=ioremap(0x08000018,0x0f);
18、/选择CPLD2,将LED矩阵的物理地址映射到虚拟地址上 outb(0x20,addr_status);/将addr_status的第6位置1选中CPLD,写IO端口 ioremap_addr=ioremap(0x0c00c000,0x0f);/将LED驱动物理地址映射到0x0c00c000上 outw(0x00ff,ioremap_addr);/打开LED矩阵设备,点亮所有的LED灯第7章1、IIC总线中,当SCI为高电平时SDA由高电平向低电平跳变表示什么信号?表示开始信号/启动信号表示开始信号/启动信号2、接收数据的设备在接收到8位数据后,向发送数据的设备发出的低电平脉冲,表示已收到数据
19、。它表示什么信号?表示应答信号ACK。3、IIC总线中,当SCI为高电平时SDA由低电平向高电平跳变表示什么信号?表示停止信号4、IIC总线仲裁是分那两步进行?首先要进行地址位的比较,如果主器件地址相同的从器件,则仲裁进人数据位的比较。5、PXA27x处理器中,IDBR、ICR、ISR分别是什么寄存器?IDBR、ICR、ISR分别是8位IIC数据缓冲器寄存器、IIC控制寄存器、IIC状态寄存器。6、Linux的IIC体系结构由那几部分组成?由IIC核心、IIC总线驱动、IIC设备驱动三部分组成7、I2c_core.c文件实现了那些功能?实现了IIC core框架,它负责管理总线设备驱动接口,实
20、现IIC设备的注册、删除、通信等功能。8、i2c_dev.c实现了IIC适配器设备文件的那些功能?包括的IIC总线字符设备的打开、关闭、读写、ioctl和lseek等。9i2c驱动中重要的数据结构是那四种?struct i2c_driver, struct i2c_client,; struct i2c_adapter, struct i2c_algorithm 10、i2c_algorithm真正驱动硬件流程的函数是哪个函数?master_xfer()第2部分 补充部分概念部分:1、写出下面各寄存器分别是GPIO的什么寄存器。GPDR0/1/2/3是GPIO的什么寄存器?GPIO管脚方向寄存
21、器GPSR0/1/2/3是GPIO的什么寄存器?GPIO引脚输出寄存器GPCR0/1/2/3是GPIO的什么寄存器?GPIO输出清除寄存器GPLR0/1/2/3是GPIO的什么寄存器?GPIO状态寄存器GRER0/1/2/3是GPIO的什么寄存器?GPIO上升沿检测使能寄存器 GFER0/1/2/3是GPIO的什么寄存器?GPIO下降沿检测使能寄存器GEDR0/1/2/3是GPIO的什么寄存器?GPIO边缘状态检测启动寄存器2、驱动程序通常用哪个函数完成在内核里申请内存空间?写出该函数的函数原型。驱动程序通常用kmalloc()函数完成在内核里申请内存空间,函数原型: void *kmallo
22、c(size_t size,int flags);3、Linux2. 6内核提供了cdcv_init()、cdcv_alloc()、cdcv_add()、cdcv_del()函数用于操作cdcv结构变量,请分别写出这些函数的功能。cdcv_init()函数用于初始化cdev的成员,并建立cdev和file_operations的连接;cdcv_alloc()函数用于动态申请一个cdcv内存;cdcv_add()函数和cdcv_del()函数分别向系统添加和删除一个cdev,完成字符设备的注册和注销。前者一般在加载时使用,后者一般在卸载时使用。编程部分:1、 设有:struct hello_de
23、v struct cdev cdev; unsigned char value;struct hello_dev *hello_devp;请写出使指针hello_devp;指向内核区域中动态创建的hello_devp结构体(结构变量),并且将其初始化为0的代码片段。hello_devp =kmalloc (sizeof(struct hello_dev),GFP_KERNEL);if (!hello_devp)result= - ENOMEM; goto fail_malloc; memset(hello_devp,0,sizeof(struct hello_dev);2、 设为某个驱动程序已
24、经编写了MY_open,MY_read,MY_write,MY_ioctl,MY_release函数,请写出声明一个struct file_operations类型结构体(结构变量)my_fops,并且对其进行初始化的声明语句。struct file_operations hello_fops =.open=MY_open,.read=MY_read,.write=MY_write,.ioctl=MY_ioctl,.release=MY_release,;3、 定义一个宏MKDEV(major,index),形成major占高10位主设备号,index占低20位主次设备号。#define MK
25、DEV(major,index) (major)cdev,&gpio_fops); dev-cdev.owner=THIS_MODULE; dev-cdev.ops=&gpio_fops; err=cdev_add(&dev-cdev,devno,1); /注册LED设备 if(err) printk(KERN_NOTICE Error %d adding gpio%d,err,index);5、设有清除例程(cleanup),让它释放它所分配的核心资源的函数原型声明如下:void gpio_cleanup(void);请设计gpio_cleanup函数。void gpio_cleanup(v
26、oid)cdev_del(&gpio_devp-cdev);/注销LED设备 kfree(gpio_devp);unregister_chrdev_region(MKDEV(gpio_major,0),1); /释放LED设备号 printk(gpio_cleanupn);6、 写出定义等待队列头my_wq,并初始化队列的宏调用。DECLARE_WAIT_QUEUE_HEAD (my_wq);7、已知GPCR3的bit0,bit1为1时将点亮LED1和LED2,GPSR3的bit0,bit1为1时将熄灭LED1和LED2;并且形参cmd为0时要求点亮LED1和LED2,形参cmd为1时要求熄灭
27、LED1和LED2。请根据上述要求在下划线处完善下面GPIO设备驱动的I/O控制函数ssize_t SIMPLE_GPIO_ioctl (struct inode * inode ,struct file * file, unsigned int cmd, unsigned long data) #ifdef OURS_GPIO_DEBUG printk (SIMPLE_GPIO_ioctl -kernel-n); #endif switch(cmd) case 0: case1: default: printk(led control:no cmd runn); return (-ENOTT
28、Y); return 0;8、设有声明unsigned char ch;已知某CPLD的物理地址为0x08000100,向它写0x20表示选中该CPLD;CPLD上与拨码开关对应寄存器的物理地址为0x08000180,请写出将物理地址0x08000100映射到虚拟地址addr_status,将物理地址0x08000180映射到虚拟地址ioremap_addr上,然后选中CPLD并且将与拨码开关对应寄存器中内容读到ch中的代码片段。addr_status=ioremap(0x08000100,0x0f);outb(0x20,addr_status); ioremap_addr=ioremap(0
29、x08000180,0x0f); ch = inb(ioremap_addr);9、已知buf是指向用户空间某字符变量的指针,ioremap_addr是某设备端口物理地址映射后的虚拟地址。下面是从端口一读入数据到tmp0,然后将tmp0拷贝到用户空间buf指针指向变量的部分程序,请在下划线处完善该程序,使其完成指定的任务。ssize_t dip_sw_read (struct file * file ,char * buf, size_t count, loff_t * f_ops) char tmp1;#ifdef OURS_GPIO_DEBUGprintk (dip_sw_read -kernel-n);#endif tmp0=inb(ioremap_addr);/
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025届沂源县三上数学期末质量检测试题含解析
- 水利水电工程毕业生就业方向分析试题及答案
- 规划设计中正确的生活方式
- 燃气中毒的急救
- 礼仪课程设计案例分享
- 公共关系学公共政策试题及答案
- 2025年经济法复习及考题情报
- 隧道堵漏安全培训课件
- 临床横纹肌溶解症发病机制治疗护理措施诊断及健康教育急救护理
- 眼科病人护理概述
- 拆桥补偿合同协议
- 8.2 做中华传统美德的践行者 同步课件 -2024-2025学年统编版道德与法治七年级下册
- 提高盆底康复知识知晓率
- 武汉2025届高中毕业生二月调研考试数学试题及答案
- 2024年山东烟台中考满分作文《连起来》
- 2025年9种体质考试题及答案
- GB/T 45142-2025海洋溢油污染生态修复监测和效果评估技术指南
- 傣族文化知识介绍
- 山东省历年中考语文现代文阅读之非连续性文本阅读20篇(截至2024年)
- 2024年内蒙古呼和浩特中考化学真题卷及答案解析
- 2024年09月全国2024厦门国际银行青年银行家(分行市场类)校园招考笔试历年参考题库附带答案详解
评论
0/150
提交评论