欢迎来到天天文库
浏览记录
ID:12367675
大小:66.50 KB
页数:6页
时间:2018-07-16
《嵌入式驱动复习资料》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、嵌入式驱动复习资料1、请指出USB总线的四种传输类型,并指出每一种传输类型的基本特点。答:四种传输类型:控制传输、批量传输、中断传输和等时传输控制传输:双向,纠错,查询、配置设备信息;批量传输:单向,纠错,大块无结构数据,延迟不定;中断传输:单向,纠错,小块无结构数据,延迟确定;等时传输:单向,无纠错,大块无结构数据,延迟确定。2、简述uClinux内核的配置剪裁和编译命令。答:(1)Linux移植准备,下载UCLinux2.X.0内核及其关于ARM平台的补丁。(2)准备交叉编译环境。交叉编译环境工具链一般包括binutils(含AS汇编器,LD链接器等),arm-g
2、cc,glibc等。(3)修改uClinux内核源码。uClinux的移植主要包含启动代码的修改,内核的链接及装入,参数传递,内核引导几个部分。(4)uCLinux内核裁减。利用“makeconfig”/“makemenuconfig”/“makexconfig”对内核配置。(5)内核的编译。执行以下几条命令就行:a.makecleanc.makezImageb.makedepd.makeinstall3、简述uClinux源程序的目录结构及其含义。答:(1)kernel目录下文件实现了大多数Linux系统的核心函数,其中最重要、最主要的文件当属sched.c。(2)
3、mm/nommu目录,Linux中独立于CPU体系结构特征的内存管理文件几乎都集中在此目录下。如页式存储管理、内存的分配和释放等等。在nommu目录下是没有mmu的内存管理。(3)(3)fs目录源程序涵盖各种类型的文件系统和文件操作。(4)(4)arch目录包括与CPU类型相关的子目录和文件。(5)(5)include目录容纳Linux源程序的所有头文件(headerfile)。(6)(6)net目录存放的是和Linux网络相关的C文件。(7)(7)drivers目录存放各种设备的驱动程序嵌入式相关资料4、简述linux和uClinux在进程管理方面的区别。答:uCl
4、inux和Linux之间最大的区别在于平面存储器模型。LINUX提供fork、vfork系统调用;而UCLINUX系统提供系统调用vfork。在vfork调用完成后父子进程事实上共享同一块存储器(在子进程调用exec或是exit之前),因此子进程可以更改父进程的数据及堆栈信息,因此vfork系统调用完成后,父进程进入睡眠,直到子进程执行exec或exit。当子进程正确开始执行后,将唤醒父进程,使得父进程继续往后执行。所以,在uClinux中,想让父子进程同时运行同一个程序是不可以的。5、简述编写uClinux驱动程序的步骤。答:首先,要根据设备功能的需要,编写file
5、_operations结构中的操作函数。其次,要向系统注册该设备,包括字符设备的注册,devfs节点的注册与中断响应函数的注册。然后,设备驱动程序编译和安装。如果没有应用设备文件系统,则需要手工为设备添加文件节点。最后,就可以利用对应的文件进行设备操控。6、画出Bootloader启动的详细流程图。答:7、写出为uclinux添加字符设备驱动的关键步骤。答:(1)把原文件放在linux-2.4.x/driver/char/(2)设备驱动原文件必须包括这样的一个函数:voidiof_init(void){register(254,'xyz',&xyz_fops);//驱
6、动程序里必须包含这句注册语句}(3)修改linux-2.4.x/driver/char/Makefile在适当位置添加一行:obj_$(CONFIG_IOF)+=iof.o嵌入式相关资料(4)修改linux-2.4.x/driver/char/Config.in,添加一行:bool'iof-drieverbyxxx'CONFIG_IOF(5)修改linux-2.4.x/driver/char/mem.c在文件头部的声明部分,添加:#ifdefCONFIG_IOFexternintiof_init(void);#endif然后,在chr_dev_init()函数里添加:
7、{#ifdefCONFIG_IOFiof_init();#endif}(6)修改目标板文件夹里相应的Makefile(7)makemenuconfig提示:iof-driverbyxxx时输入x,回车;makedepmake8、为下列Bootloader部分代码添加注释。……IMPORTImage$$RO$$Limit;①RW代码段的结束地址IMPORTImage$$RW$$Base;②RAM中需要初始化数据的首地址IMPORTMain;③主程序入口……BResetHandler;④复位异常……VECTOR_BRANCH……ResetHandlerL
此文档下载收益归作者所有