动态加载驱动和Linux内核移植
更新时间:2023-10-05 23:37:01 阅读量: 综合文库 文档下载
仅供个人参考
项目三:Linux内核移植
1. 能力培养目标
? 了解嵌入式Linux内核的构成 ? 掌握内核裁减定制的方法 ? 掌握内核编译的方法 ? 掌握内核烧写的方法
2. 项目任务要求
(1)项目任务
Linux内核的裁剪、编译和烧写。 (2)项目来源及应用
对于较复杂的嵌入式系统项目,当硬件平台制作好之后,就需要向其移植操作系统,如果移植的是嵌入式Linux且为GUI应用,那么移植过程一般包含:
第一步,移植引导程序(Vivi、BLOB、uBoot等); 第二步,移植内核kernel;(本次实验内容) 第三步,移植根文件系统; 第四步,移植库文件,如QT库; 第五步,运行项目程序。 (3)功能需求
裁减一个可用的Linux内核 ? 选择正确的处理器类型
? 使其支持网卡、小键盘、USB鼠标、声卡等设备 ? 成功编译后烧写到目标机上 ? 内核能正确加载运行 ? 键盘驱动可用 (4)项目开发环境需求
硬件 软件 宿主机 目标机 宿主机 PC机、USB转串口线、网线 ARM目标机 windows系统:□WinXP □Xin7 其他: Linux 系统:□RedHat 9 □RHEL4 其他: VMWare虚拟机:□VMWare Workstation9 其他: 串口调试工具:□WinXP自带的超级终端 不得用于商业用途
仅供个人参考 □Linux自带的minicom □第三方串口工具: 目标机 嵌入式Linux 3. 项目预习
(1)了解项目目标、项目任务要求、项目设计和项目实施步骤。
(2)下载本次实验所需要的软件和代码。将3_kbd_test目录放到linux虚拟机的up-techpxa270cl目录下。 (3)完成内核裁剪及编译好内核映像,即完成第5大项中的步骤(4)-(5)。 (4)回答以下问题
如何能够在目标机上访问宿主机上的文件? 说明使用mount命令进行文件挂载的方法。
说明mount命令执行不成功可能的原因和解决方法。 说明本实验所使用的Linux内核版本。 说明Linux内核裁减定制的方法。
4. 项目设计
4.1选择Linux内核裁减方法
Linux内核的裁减配置的三种命令:
1、make config:命令行模式,一行一行的配置,不推荐使用。 2、make menuconfig:大多人熟悉的menuconfig菜单。 3、make xconfig:基于QT图形化配置,菜单结构清晰。
所有内核裁减配置过程,都是通过Config.in(2.4内核)或Kconfig(2.6内核)经由不同脚本解释器产生.config配置文件。
不得用于商业用途
仅供个人参考
make menuconfig配置菜单
make xconfig配置菜单
在配置时,通常有三种选择方式: ? Y:将该功能编译进内核; ? N:不将该功能编译进内核;
? M:以模块方式编译,需要时可以动态插入到内核中。
在make menuconfig界面中,用空格键来切换各种选择状态;在make xconfig界面中,可以用空格键,也可以使用鼠标来选择。
不得用于商业用途
仅供个人参考 注意:对于陌生选项,请不要修改,保留默认即可。 5. 项目实施
=======================================
实验室实验部分
=======================================
(1)将3_kbd_test目录放到linux虚拟机的up-techpxa270cl目录下。3_kbd_test目录中的内容如下:
其中:
? getkey为交叉编译生成的可执行程序,用于测试键盘设备;
? mega8.ko为键盘等控制芯片的驱动程序,i2c-pxa.ko为i2c接口驱动; ? install_driver.sh为动态加载mega.ko和i2c-pxa.ko的脚本; ? zImage为裁剪、编译后的内核。
(2)查看ARM目标机自带内核对键盘的支持情况(通过超级终端)
查看键盘设备节点/dev/Mega8Kbd是否已经存在?No such file or directory表示不存在。
[root@Intel /]#ls /dev/Mega8Kbd ls: /dev/Mega8Kbd: No such file or directory 查看键盘驱动是否以模块形式动态加载?以下结果表示没有动态加载。
[root@Intel /]#lsmod Module Size Used by Not tainted [root@Intel /]# 查看当前系统设备中是否有Mega8Kbd设备?
[root@Intel /]#cat /proc/devices Character devices: 1 mem 2 pty 3 ttyp 4 /dev/vc/0 4 tty 4 ttyS 不得用于商业用途
仅供个人参考 5 /dev/tty 5 /dev/console 5 /dev/ptmx 7 vcs 10 misc 13 input 14 sound 21 sg 29 fb
81 video4linux 89 i2c 90 mtd 108 ppp 128 ptm 136 pts 161 ircomm 180 usb 254 pcmcia
使用mount命令挂载,运行键盘测试程序getkey。查看getkey是否可以运行?Can't open keyboard!表示不能打开键盘设备。为防止大文件传输失败,在mount中加入参数–o intr,nolock,rsize=4096,wsize=4096
[root@Intel /]#ifconfig eth0 192.168.0.10 (些处为了后面烧写内核方便,虚拟机为服务器) [root@Intel /]#service nfs restart [root@Intel /]# mount –t nfs –o intr,nolock,rsize=4096,wsize=4096 192.168.0.10:/up-techpxa270cl /mnt/nfs [root@Intel /]#cd /mnt/nfs/3_kbd_test [root@Intel 3_kbd_test]#./getkey KBD_Open - Can't open keyboard! Can't open keyboard! KBD KEY: Bad file descriptor (3)在自带内核的基础上,动态加载键盘驱动,并测试 使用install_driver.sh脚本加载驱动程序: [root@Intel 3_kbd_test]#./install_driver.sh i2c_pxa: module license 'unspecified' taints kernel. I2C: Slave address 1 I2C: Enabling slave mode I2C: i2c-0: PXA I2C adapter I2C: Slave address 1 I2C: Enabling slave mode no PS/2 device found on PS/2 Port 0! no PS/2 device found on PS/2 Port 1! [root@Intel 3_kbd_test]# 注:如果install_driver.sh不能运行,分析原因,若是权限问题可执行命令chmod 777将该目录下的文不得用于商业用途
正在阅读:
动态加载驱动和Linux内核移植10-05
高清-六宫格-数独-中级-180题02-02
秦晖:中国模式思辨11-30
省级三甲医院感染及传染病管理手册(2012最终版) - 图文10-22
浙江省温州市十校联合体2013-2014学年高二上学期期末联考英语试06-17
浙江省磐安县第二中学高二语文《外国小说欣赏》练习题11-29
体育训练相关论文体育锻炼论文12-25
高考数学选做题11-08
2021年农业优势特色产业发展情况报告08-17
- 冀教版版五年级科学下册复习资料
- 微生物学复习提纲
- 2013—2014学年小学第二学期教研组工作总结
- 国有土地转让委托服务合同协议范本模板
- 我的固废说明书
- 企业管理诊断报告格式
- 东鼎雅苑施工组织设计
- 谈谈如何做好基层党支部书记工作
- 浮梁县环保局市级文明单位创建工作汇报
- 管理学基础知识
- 大学物理实验报告23 - PN结温度传感器特性1
- 计算机网络实践
- 酒桌上这四种情况下要坐牢,千万别不当回事……
- 国家康居示范工程建设技术要点
- 中国贴布行业市场调查研究报告(目录) - 图文
- 新课标下如何在高中物理教学中培养学生的创新能力初探
- 营养师冬季养生食谱每日一练(7月4日)
- 关注江西2017年第3期药品质量公告
- 建设海绵城市专题习题汇总
- 10万吨年环保净水剂建设项目报告书(2).pdf - 图文
- 内核
- 移植
- 加载
- 驱动
- 动态
- Linux