




已阅读5页,还剩3页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
实验9 Linux文件系统构建实验一、实验目的1、学习Linux下Cramfs文件系统的制作方法;2、学习Busybox工具包的制作方法;3、熟悉Linux文件系统的下载方法。二、实验内容1、制作Busybox工具包:(1)下载Busybox工具制作源码软件包,解压;(2)对Busybox进行配置;(3)对Busybox进行编译。2、制作Cramfs文件系统:(1)下载Cramfs文件系统制作软件包,解压、编译;(2)制作目标板的Linux文件系统;3、下载Cramfs文件系统。三、实验操作方法1、准备制作工具软件包需要准备Linux工具软件包“Busybox”和根文件系统制作软件包“Cramfs”,它们具体分别为:“Busybox”软件包下载地址:/downloads/ ;“Cramfs”软件包下载地址:/projects/cramfs/ 。如下载的软件包分别为:“busybox-1.1.0.tar.tar”和“cramfs-1.1.tar.gz”,为了在Linux操作系统下使用,应该把它们复制到“windows-Linux”共享目录下,或者直接下载到“windows-Linux”共享目录下。windows操作系统与Linux操作系统的共享目录为:Windows下:e:VMwareshareLinux下:/mnt/hgfs/share2、制作Busybox工具包(1)下载Busybox工具制作源码软件包下载地址:/downloads/。(2)解压具体操作为:# tar xjvf busybox-1.1.0.tar.tar # cd busybox-1.1.0 (3)对Busybox进行配置BusyBox的配置方法有以下几种:make allnoconfig在config文件中禁止所有的配置选项make allyesconfig在config文件中启用所有的配置选项make allbareconfig启用所有的applets程序,不包括任何子目录下的选项make config基于文本的配置方式,很少使用这种方式make defconfig设置config配置文件为最大通用配置make menuconfig交互式图形化配置方式,该方式应用最广make oldconfig在config配置文件中配置那些还没有被配置的选项常用的配置方法是使用“make menuconfig”方式。其方法是在“busybox-1.1.0”目录下执行“make menuconfig”指令,出现与配置vivi和Linux相似的配置界面,根据实际需要进行配置。(4)修改Makefile文件配置完BusyBox后,接下来就是编译它。编译之前需要修改BusyBox源代码目录下的Makefile文件,修改的内容有以下两项:ARCH =armCROSS_COMPILE=/usr/local/arm/2.95.3/bin/arm-linux-修改的目的与编译内核是一样的,是基于ARM平台和使用交叉编译环境制作。(5)编译与安装BusyBox编译:在BusyBox源代码目录下执行make命令,即可完成对BusyBox的编译(时间较短)。安装:在BusyBox源代码目录下执行安装命令make install即可。命令执行后,默认情况下,会在_install目录下生成bin、sbin、usr/bin和usr/sbin4个目录,并且在每个目录下都会有许多BusyBox可执行文件的符号连接,BusyBox可执行文件存在bin目录下。将这4个目录下的文件,分别复制到下面将要构建的根文件系统下的相应目录下。3、构建目标系统的根文件系统(1)构建目标系统的根文件系统在PC机上构建目标系统的根文件系统,首先建立名为myrootfs的目录,然后在myrootfs目录下建立所需要的子目录,具体操作如下:# mkdir myrootfs # cd myrootfs # mkdir bin vet etc lib proc sbin tmp usr var # mkdir usr/bin usr/lib usr/sbin 即在myrootfs目录下建立了bin、vet、etc、lib、proc、sbin、tmp、usr、var子目录,并且在usr目录下建立了bin、lib、sbin子目录。这就是目标系统将来的目录结构。(2)对目标文件系统添加文件目录建立好以后,就要给各目录复制相应的文件或库,例如在bin目录下要复制glibc库和内核模块,给etc目录下建立一些配置文件,bin目录下放置常用的命令工具等。然后将上面制作的BusyBox工具集文件添加到文件系统。即把BusyBox/_install目录下4个目录下的文件,分别复制到在前面已经构建的根文件系统下的相应目录下,即myrootfs/bin、myrootfs/sbin、myrootfs/usr/bin和myrootfs/usr/sbin目录下。4、制作Cramfs根文件系统映像(1)制作Cramfs根文件系统工具Cramfs工具包可以从/projects/cramfs/下载,工具包为cramfs-1.1.tar.gz。将其解压,并查看解压后的目录结构如下:# tar xvzf cramfs-1.1.tar.gz # cd cramfs-1.1 利用Cramfs工具包主要是为了生成mkcramfs和cramfsck两个工具,其中mkcramfs工具是用来创建Cramfs文件系统,而cramfsck工具则用来对Cramfs文件系统释放和检查。通过执行make命令,便可生成mkcramfs和cramfsck两个工具。(2)制作Cramfs根文件系统映像首先进入myrootfs目录的上层目录,然后使用mkcramfs工具制作Cramfs根文件系统映像,执行下面命令:# mkcramfs myrootfs myrootfs. cramfs 就会生成名为myrootfs. cramfs的映像文件,被保存在与myrootfs同一个目录下。(4)检查新文件系统的正确性使用mount命令检查,方法如下:# mkdir /mnt/myroot # mount o loop myrootfs.cramfs /mnt/myroot # cd /mnt/myroot # ls 显示所制作的根目录下的子目录及文件# ls usr 显示所制作的usr子目录的子目录和文件从显示的文件结构可以看出,上面所制作的根文件系统是正确的。5、下载Cramfs文件系统可以使用DNW、vivi或其它工具下载。(1)利用vivi接口命令进行下载vivi有两种工作模式,一种是“启动加载”模式,另一种是命令行“下载”模式。利用串行口与主机的连接,可以进行命令行操作。vivi启动后,通过串行口发出如下信息:Press Return to start the Linux now, any other key for vivi按“Enter”键,立即启动Linux操作系统,按下除了“Enter”之外的键,便可进入命令行模式。vivi的接口命令主要有5条。1)load下载文件命令功能:将二进制文件下载到Flash或RAM格式:load | media_type:存储器类型,Flash或RAMpartname:分区名称addr size:下载的地址及占用空间大小x|y|z:文件的传输协议。x表示采用xmodem协议,y表示采用ymodem协议,z表示采用zmodem协议。目前vivi仅支持xmodem协议。例1:viviload flash kernel x表示下载压缩的内核映像文件zImage到flash存储器的内核分区中,采用xmodem传输协议。例2:viviload flash 0x80000 0xc0000 x2)partMTD分区操作命令操作命令:显示、增加、删除、复位、保存MTD分区等。各个命令格式为:part show:显示分区信息part add: 增加新的分区part del :删除指定的分区part reset:恢复分区的默认值part save:在flash中保存分区和参数值增加新的分区格式:part add partname:新分区名称offset:新分区的偏移地址size:新分区的大小flag:新分区的类型,可以是JFFS2、LOCKED、BONFS3)param设置或查看分区参数命令查看分区参数格式:param show设置启动等待按键延迟格式:param set boot_delay n(s)设置通信初始化超时格式:param set xmodem_initial_timeout m (s)4)boot引导内核命令格式:boot media_type | media_type:存储器类型,为flash或RAMpartname:内核所在分区名称addr:内核所在器件的偏移地址size:内核的大小若boot(无参数),则从kernel内核对应的分区中(kernel)读取内核映像,启动操作系统Linux。例如:viviboot nand 0x80000内核在nand flash中引导内核,偏移地址为0x80000,大小为缺省值0xc0000viviboot nor 0x80000内核在nor flash中引导内核,偏移地址为0x80000,大小为缺省值0xc00005)flashflash存储器管理命令擦除flash数据格式:flash erase | 说明:对flash只有擦除命令。例如:flash erase 0x80000 0xc0000实验10 定时器驱动程序实验一、实验目的1、学习Linux下定时器驱动程序的编写方法;2、学习定时器应用程序的编写方法;3、进一步学习Linux内核模块的编译方法;4、学习Linux内核模块的装载、调用、卸载方法。二、实验内容1、编写定时器驱动程序和定时器应用测试程序;2、对驱动程序交叉编译成内核模块,对测试程序交叉编译成可执行文件;3、通过网络或超级终端将内核模块、测试程序下载到实验箱上;4、在实验箱上对驱动程序进行装载、卸载实验,运行应用程序对驱动程序做测试实验。三、实验操作方法1、编写驱动程序和应用测试程序首先在“/home”下建立“module”文件夹,然后切换到“/home/module”文件夹下,分别编写定时器0驱动程序“timer_m.c”、定时器0应用程序“timertest.c”,“timer_m.c”和“timertest.c”内容如最后所列。2、编译驱动程序和应用测试程序(1)复制一些头文件将“/usr/include/linux”下的文件version.h,复制到“/usr/local/arm/2.95.3/arm-linux/include/linux”下面。修改文件version.h的内容,将操作系统的版本号改为实验箱上操作系统的版本号,如改为:2.4.18-rmk7-pxa1。(2)编译驱动程序编译命令如下:arm-linux-gcc D _KERNEL_ -D MODULE I/usr/local/arm/2.95.3/arm-linux/include O2 -Wall O c timer_m.c正确编译后会产生在ARM上运行的驱动程序内核模块“timer_m.o”。 (3)编译定时器应用测试程序编译命令如下:arm-linux-gcc I/usr/local/arm/2.95.3/arm-linux/include o timertest_m timertest.c正确编译后会产生在ARM上运行的程序“timertest_m”。3、通过超级终端下载程序(1)复制下载文件到“windows-Linux共享目录”下windows操作系统与Linux操作系统的共享目录为:Windows下:e:VMwareshareLinux下:/mnt/hgfs/share在PC机端的Linux操作系统下执行:# cp timer_m.o /mnt/hgfs/share (2)下载文件通过超级终端对目标板进行操作,下载文件。首先转到下载欲保存文件的目录“/tmp”。在超级终端执行如下命令:# cd /tmp 然后利用超级终端下载文件。在超级终端进行操作:点击“传送”主菜单、“发送文件”项,在弹出的“发送文件”对话框先后选择“e:VMwareshare”下的“timer_m.o”、“timertest_m”文件,点击“发送”,即可将文件传送到目标板的“/tmp”目录下。4、挂载与卸载驱动程序(1)挂载驱动程序内核模块在目标板上执行如下操作:# cd /tmp # insmod timer_m.o 正确挂载后会显示出:# timer module installed!可以到“/proc”目录下的“devoces”文件查看timer设备是否注册上,查看其设备号和设备名。(2)运行测试程序在目标板上的/tmp目录下执行如下操作:# ./timertest_m n n可以取值:05。数字0使电机停止转动;数字15是控制直流电机运转,1使电机转速最低,数字5使电机转速最高。反复操作,观察实验情况。(3)卸载驱动程序内核模块执行如下操作:# rmmod timer_m.o 正确卸载后会显示出:# timer module exit!四、实验参考程序1、定时器0驱动参考程序timer_m.c#include /在 /usr/local/arm/2.95.3/arm-linux/include 目录下#include #include #include #include #define rTCFG0(*(volatile unsigned *)0x51000000)#define rTCFG1(*(volatile unsigned *)0x51000004)#define rTCON(*(volatile unsigned *)0x51000008)#define rTCNTB0(*(volatile unsigned *)0x5100000c)#define rTCMPB0(*(volatile unsigned *)0x51000010)#define rGPBCON(*(volatile unsigned *)0x56000010)/GPB配置寄存器GPB0为T0out#define rGPBUP(*(volatile unsigned *)0x56000018)/GPB上拉寄存器#define DEVICE_NAME timer/设备名#define TIMER_MAJOR 231/主设备号static devfs_handle_t devfs_handle;/(1)ioctl函数static int timer_ioctl(struct inode *inode,struct file *file,unsigned int cmd, unsigned long arg)if(cmd=0)/判断是否关闭T0rTCON&=0xff;return0;if(cmd=1)rTCMPB0=20;else if(cmd=2)rTCMPB0=40;else if(cmd=3)rTCMPB0=60;else if(cmd=4)rTCMPB0=80;else if(cmd=5)rTCMPB0=95;if(rTCON&0x01)=0)/如果T0没用启动,则启动T0rTCON|=0x02;/手动装载rTCON&=0x02;rTCON|=0x09;/启动T0return0;/(2)open函数static int timer_open(struct inode *inode,struct file *file)printk(“open timer file!n”);return 0;/(3)文件系统接口static struct file_operations timer_fops= owner:THIS_MODULE,open:timer_open,ioctl: timer_ioctl,;/(4)系统入口函数static int _init timer_init(void)int ret;/*注册中断设备*/ret = register_chrdev(TIMER_MAJOR, DEVICE_NAME, &timer_fops);if(ret 0 )printk(DEVICE_NAME can not register major numbern);return ret; /*注册 devfs,从而可以使用 devfs文件系统*/devfs_handle=devfs_register(NULL,DEVICE_NAME,DEVFS_FL_DEFAULT,TIMER_MAJOR,0,S_IFCHR |S_IRUSR |S_IWUSR,&timer_fops,NULL);rTCFG0=(rTCFG0&0
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 宴会部维修管理制度
- 家电维修队管理制度
- 应急医疗包管理制度
- 当当网公司管理制度
- 影视剧公司管理制度
- 心电图规培管理制度
- 快递站各项管理制度
- 怎样对租户管理制度
- 患者安全与管理制度
- 成品库班长管理制度
- 天棚帘施工方案
- 《积极心理学(第3版)》 课件 第4章 乐观
- 户外广告牌施工方案
- 房屋买卖合同范本官方版模板电子版
- 传统文化与生态文明建设智慧树知到期末考试答案章节答案2024年云南大学
- YYT 0698.5-2009 最终灭菌医疗器械包装材料 第5部分:透气材料与塑料膜组成的可密封组合袋和卷材 要求和试验方法
- 广东省佛山市南海区2021-2022学年八年级下学期期末数学试题
- 糖尿病家庭医生:签约讲座计划
- 呼吸衰竭诊疗规范
- MOOC 化工热力学-盐城师范学院 中国大学慕课答案
- (高清版)DZT 0064.88-2021 地下水质分析方法第88部分:14C的测定合成苯-液体闪烁计数法
评论
0/150
提交评论