动态加载驱动和Linu内核移植

上传人:s9****2 文档编号:510047662 上传时间:2023-11-07 格式:DOC 页数:12 大小:315KB
返回 下载 相关 举报
动态加载驱动和Linu内核移植_第1页
第1页 / 共12页
动态加载驱动和Linu内核移植_第2页
第2页 / 共12页
动态加载驱动和Linu内核移植_第3页
第3页 / 共12页
动态加载驱动和Linu内核移植_第4页
第4页 / 共12页
动态加载驱动和Linu内核移植_第5页
第5页 / 共12页
点击查看更多>>
资源描述

《动态加载驱动和Linu内核移植》由会员分享,可在线阅读,更多相关《动态加载驱动和Linu内核移植(12页珍藏版)》请在金锄头文库上搜索。

1、项目三:Linux内核移植1. 能力培养目标了解嵌入式Linux内核的构成掌握内核裁减定制的方法掌握内核编译的方法掌握内核烧写的方法2. 项目任务要求(1)项目任务Linux内核的裁剪、编译和烧写。(2)项目来源及应用对于较复杂的嵌入式系统项目,当硬件平台制作好之后,就需要向其移植操作系统,如果移植的 是嵌入式Linux且为GUI应用,那么移植过程一般包含:第一步,移植引导程序(Vivi、BLOB、uBoot等);第二步,移植内核kernel;(本次实验内容)第三步,移植根文件系统;第四步,移植库文件,如 QT库;第五步,运行项目程序。(3)功能需求裁减一个可用的Linux内核选择正确的处理器

2、类型使其支持网卡、小键盘、USB鼠标、声卡等设备成功编译后烧写到目标机上内核能正确加载运行 键盘驱动可用(4)项目开发环境需求硬件宿主机PC机、USB转串口线、网线目标机ARM目标机软件宿主机windows 系统: WinXP Xin7 其他:Linux系统:口 RedHat 9 RHEL4 其他:VMWare虚拟机:口 VMWare Workstation9其他:串口调试工具:口 WinXP自带的超级终端 Linux 自带的 minicom第三方串口工具:目标机嵌入式Linux3. 项目预习(1) 了解项目目标、项目任务要求、项目设计和项目实施步骤。(2) 下载本次实验所需要的软件和代码。将

3、3_kbd_test目录放到linux虚拟机的up-techpxa270cl目录下。(3) 完成内核裁剪及编译好内核映像,即完成第5大项中的步骤(4)-(5)。(4) 回答以下问题如何能够在目标机上访问宿主机上的文件?说明使用mount命令进行文件挂载的方法。说明mount命令执行不成功可能的原因和解决方法。说明本实验所使用的Linux内核版本。说明Linux内核裁减定制的方法。4. 项目设计4.1选择Linux内核裁减方法Linux内核的裁减配置的三种命令:1、make con fig:命令行模式,一行一行的配置,不推荐使用。2、make menuconfig:大多人熟悉的 menuconf

4、ig 菜单。3、make xconfig:基于QT图形化配置,菜单结构清晰。所有内核裁减配置过程,都是通过 Config.in (2.4内核)或Kconfig ( 2.6内核)经由不同脚本解 释器产生.config配置文件。make menuconfig 配置菜单make xconfig配置菜单在配置时,通常有三种选择方式:丫:将该功能编译进内核;N:不将该功能编译进内核; M:以模块方式编译,需要时可以动态插入到内核中。在make menuconfig界面中,用空格键来切换各种选择状态;在 make xconfig界面中,可以 用空格键,也可以使用鼠标来选择。注意:对于陌生选项,请不要修改,

5、保留默认即可。5. 项目实施实验室实验部分(1)将3_kbd_test目录放到linux虚拟机的up-techpxa270cl目录下。3_kbd_test目录中的内容如下:MuiaiuMiBiuuiZKO文件125 KBa. kcBO交件67 KB文件L557 KBinstall_dri sh SH立件1 KB 画其中:getkey为交叉编译生成的可执行程序,用于测试键盘设备;mega8.ko为键盘等控制芯片的驱动程序,i2c-pxa.ko为i2c接口驱动;install_driver.sh 为动态加载 mega.ko和 i2c-pxa.ko 的脚本;zImage为裁剪、编译后的内核。(2)查

6、看ARM目标机自带内核对键盘的支持情况(通过超级终端)查看键盘设备节点/dev/Mega8Kbd是否已经存在? No such file or directory表示不存在。rootl ntel /#ls /dev/Mega8Kbdls: /dev/Mega8Kbd: No such file or directory查看键盘驱动是否以模块形式动态加载?以下结果表示没有动态加载。rootI ntel /#lsmodModuleSize Used byNot tain tedrootI ntel /#查看当前系统设备中是否有Mega8Kbd设备?rootI ntel /#cat /proc/de

7、vicesCharacter devices:1 mem2 pty3 ttyp4 /dev/vc/04 tty4 ttyS5 /dev/tty5 /dev/c on sole5 /dev/ptmx7 vcs10 misc13 in put14 sound21 sg29 fb81 video4li nux89 i2c90 mtd108 ppp128 ptm136 pts161 ircomm180 usb254 pcmcia使用 mount命令挂载,运行键盘测试程序 getkey。查看getkey是否可以运行? Cant open keyboard! 表示不能打开键盘设备。为防止大文件传输失败,在

8、mou nt中加入参数P intr,n olock,rsize=4096,wsize=4096rootl ntel /#ifco nfig eth0 192.168.0.10(些处为了后面烧写内核方便,虚拟机为服务器)rootl ntel /#service nfs restartrootIntel /# mount -nfs -o intr,nolock,rsize=4096,wsize=4096 192.168.0.10:/up-techpxa270cl /mnt/nfsrootI ntel /#cd /mn t/nfs/3_kbd_testrootIntel 3_kbd_test#./g

9、etkeyKBD_Open - Cant open keyboard!Cant ope n keyboard!KBD KEY: Bad file descriptor(3) 在自带内核的基础上,动态加载键盘驱动,并测试使用install driver.sh脚本加载驱动程序:rootIntel 3_kbd_test#./install_driver.shi2c_pxa: module lice nse un specified ta ints kern el.I2C: Slave address 1I2C: En abli ng slave modeI2C: i2c-0: PXA I2C ada

10、pterI2C: Slave address 1I2C: En abli ng slave modeno PS/2 device found on PS/2 Port 0!no PS/2 device found on PS/2 Port 1!rootI ntel 3_kbd_test#注:如果install_driver.sh不能运行,分析原因,若是权限问题可执行命令chmod 777将该目录下的文仅供个人参考件执行权限放开,并再次执行in stall命令。也可以不执行in stall命令而是直接输入以下两条命令(install_driver.sh文件中的内容)。in smod i2c-px

11、a.koin smod mega8.ko如果提示已经存在,可以使用rmmod i2c-pxa.ko和rmmod mega8.ko卸载,然后重新加载。再次查看键盘设备节点是否已经存在?看到 /dev/Mega8Kbd表明已经存在。rootI ntel 3_kbd_test#ls /dev/Mega8Kbd/dev/Mega8Kbd如果看不到设备结点,创建设备结点的命令是mkmod设备名设备类型主设备号从设备号如:mkmod /dev/Mega8kbd c 253 0再次查看键盘驱动是否以模块形式动态加载?结果表明动态加载了驱动。rootI ntel 3_kbd_test#lsmodModuleS

12、izeUsed byTain ted: Pmega8172440i2c_pxa67241 mega8rootI ntel kbd_test#再次查看当前系统设备情况,结果表明有Mega8Kbd键盘设备。root In tel 3_ kbd_test#cat /proc/devicesCharacter devices:1 mem2 pty3 ttyp4 /dev/vc/04 tty4 ttyS5 /dev/tty5 /dev/c on sole5 /dev/ptmx7 vcs10 misc13 in put14 sound21 sg29 fb81 video4li nux89 i2c90 mt

13、d108 ppp128 ptm136 pts161 ircomm180 usb252 Mega8ICcard253 Mega8Kbd254 pcmcia再次运行键盘测试程序:按 ARM目标机上的小键盘,可以正确读取到按键值。rootlntel 3_kbd_test#./getkeywhich key you press is 1which key you press is 2which key you press is 3课堂实验部分(4)检查修改内核源代码目录下的 Makefile文件 命令:rootvm-dev # cd /up-techpxa270cl/kernel/li nu x-2.

14、6.9-uptechpxa270cl打开Makefile文件,找到以下几行:如果不是下面的结果,则按下面内容修改AECH7- armCRQSS COIirILE ?= /iip-techpxaZVO/firm-1 imix-too 1 sygcc-3 .4.6-gl ibc-Z. 3 .&/arm-1 inux/bin/arn-1 inux-其中:ARCH := arm表示编译支持ARM体系结构CROSS_COMPILE =您的交叉编译工具中arm-Linux所在目录/arm-Linux- 例如:CROSS_COMPILE = /up-techpxa270/arm-li nux-tools/gcc-(5)裁剪新内核在内核源代码目录(up-techpxa270cl/kernel/linux-,拷贝一个已有的默认配置文件更名为 .config (如果询问是否覆盖,输入y),然后在默认配置基础上,使用 make menuconfig对内核进行裁减。rootvm-dev # cp up-techpxa270-cl-2008-05-26.co nfig .configrootvm-dev # make menuconfig如果出现“ at least 80 columns,说明屏幕不够大,全屏即可。 思考:.con

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 工作计划

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号