版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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为裁剪
6、、编译后的内核。(2)查看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 /#
7、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 mtd108 ppp128 ptm136 pts161 ircomm180 usb254 pcmcia使用 mount命令挂载,运行键盘测试程序 getkey。查看getkey是否可以运行? Can't open keyboard! 表示不能打开
8、键盘设备。为防止大文件传输失败,在mou nt中加入参数P intr,n olock,rsize=4096,wsize=4096rootl ntel /#ifco nfig eth0 0(些处为了后面烧写内核方便,虚拟机为服务器)rootl ntel /#service nfs restartrootIntel /# mount -nfs -o intr,nolock,rsize=4096,wsize=4096 0:/up-techpxa270cl /mnt/nfsrootI ntel /#cd /mn t/nfs/3_kbd_testrootInt
9、el 3_kbd_test#./getkeyKBD_Open - Can't open keyboard!Can't 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
10、 ng slave modeI2C: i2c-0: PXA I2C adapterI2C: 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命令而是直接输入以下两条命令(in
11、stall_driver.sh文件中的内容)。in smod i2c-pxa.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再次查看键盘驱动是否以模块形式动态加载?结果表明动态加载了
12、驱动。rootI ntel 3_kbd_test#lsmodModuleSizeUsed 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 soun
13、d21 sg29 fb81 video4li nux89 i2c90 mtd108 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 #
14、cd /up-techpxa270cl/kernel/li nu x-2.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_CO
15、MPILE = /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',说明屏幕不够大,全屏即可。
16、思考:.config配置文件作用?按照以下步骤和提示,选中目标机所需的模块支持(使用“上下箭头”移动,使用“Enter”进入,使用“ Esc”返回上级)。1、选择处理器类型(默认已经选上)System Type ->ARM system type (PXA2xx-based)(X) PXA2xx-based一>2、网卡设备(默认已经选上)Networki ng support ->* Network device support不得用于商业用途Ethernet (10 or 100Mbit) ->* Ethernet (10 or 100Mbit)<*> D
17、M9000 support3、 矩阵键盘设备(使用空格键切换选择,选中Atmel项,按下空格键,可以在* , M和空之间变 换,*表示编译到内核,M表示动态模块方式加载,空表示不支持)I2C support -><*> I2C supportI2C Hardware Bus support -><*> In tel PXA2XX I2C adapterOther I2C Chip support -><*> Atmel Mega8 MCU on UPTechPXA270-classic platform* Matrix Keyboard4、
18、USB鼠标支持In put device support -><*> Mouse in terfaceUSB support ->(位置在下方,默认已经选上)<*> USB Human In terface Device (full HID) support* HID input layer support* /dev/hiddev raw HID device support5、声卡支持(默认已经选上)Sound -><*> Sound card supportOpen Sound System -><*> PXA Au
19、dio<*> PXA AC97 audio support<*> UCB1X00 core support<*> UCB1X00 touchscreen plugi n退出并保存配置信息。思考:上面配置选项应该在哪个目录下的哪个文件里( KConfig)?通过make menuconfig裁剪完 后, .config文件会有哪些变化?若内核中没有你想要的功能模块选项将怎么办 (拷贝驱动程序,修改 KConfig 等)?(6)编译新内核在内核目录下(up-techpxa270cl/kernel/linux-,执行make命令,进行内核的编译。rootvm-de
20、v #make编译成功后,会在 /up-techpxa270cl/kernel/linux-rootvm-dev# cd /up-techpxa270cl/kernel/linux-rootvm-dev# ls(7)烧写新内核0)将已经生成的zlmage拷贝到/tftpboot目录下(如果询问是否覆盖,输入y)。rootvm-dev #cp -f zImage /tftpboot仅供个人参考1)配置tftp服务首先请确保Linux虚拟机的tftp服务已经正确配置,并运行。 在虚拟机上用vi打开“/etc/xinetd.d/tftp”做相应的修改。(大部分网络服务都是由它启动的)rootvm-d
21、ev #vi /etc/xi netd.d/tftp 找到disable = no这一项,看看是不是此状态(默认是),若不是,则改成此状态,保存退出。 重启tftp服务,命令如下:rootvm-dev #service xin etd restart 查看tftp服务是否启动:rootvm-dev #service xin etd status2)烧写新内核给目标机加电后,进入blob模式下(按回车之外的任意键),首先配置tftp服务器的IP。blob> ifconfig server(因为虚拟机IP前面已经配置为,所以此步可不做)注意:tftp server的IP是Linux虚拟机的I
22、P。重启ARM目标机后可能需要重新配置 tftp server的IP。如 果在blob下修改IP失败或者超时等,可以将 Linux虚拟机的IP修改为IP是然后将内核zImage烧写到Ram。blob> tdow nl oad kernel出现下面状态表示正确:file: zImage, part kerneldownl oadi ng zImage to 0xa0200000done如果出现ARP timeout错误,可能是网络原因,可以尝试将windows网卡禁用并启用,改IP,检查网线等。再将内核zImage烧写到Flash。blob> flash kernel出现下面状态表示
23、正确:Saving kernel to flashfwrite 0xa0200000 0x100000 1597152Erasi ng 13 blocks at 0x00100000:doneFlashing 0x00185ee0 bytes at 0x00100000:done(8)测试新内核重启ARM目标机,按回车键,看是否能正常进入Linux系统。无需手动加载驱动,直接通过:ls /dev/Mega8Kbd命令查看键盘设备节点,Zdev/MegaSKbd通过cat /proc/devices查看设备信息,以及运行键盘测试程序getkey。看看是否键盘驱动已经直接加入了内核,并且已经自动创
24、建好设备节点,键盘测试程序能够正确获得按键信息。再次查看当前系统设备情况,结果表明有Mega8Kbd键盘设备。root In tel kbd_test#cat /proc/devices Character 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 usb252 Mega8
25、ICcard253 Mega8Kbd254 pcmcia(9) 还原系统自带内核将3_kbd_test目录下的zImage拷贝到/tftpboot/目录下。重新执行(7),并重启ARM目标机,按 回车键,看是否能正常进入Linux系统。6. 项目运行运行结果要求:1、正确启动ARM目标机的系统loqinl789: root login on ttySOProcessing /etc/profile.;. Done running pxd270 demo QT& ing rooiQIntel /Ulx timeout dn9300: resetlingdn9000: enteringrootSIntel /Jtt2、键盘测试程序正确读取键值信息rootSIntel kbd.test1H./getkey which kev you press is 1. which key you press is 2 vuluch key you press is 37. 项目问题1、说明本次实验中的硬件系统。2、嵌入式Linux内核的代码构成?设备驱动程序放在什么目
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 克朗斯验瓶机细脉冲调整
- 《GB-T 32377-2015纤维增强复合材料动态冲击剪切性能试验方法》专题研究报告
- 《GBT 34595-2017 汽车零部件再制造产品技术规范 水泵》专题研究报告
- 《AQ 7015-2018氨制冷企业安全规范》专题研究报告
- 2026年黑龙江旅游职业技术学院单招职业适应性测试题库附答案详解
- 票据承兑连带责任保证担保协议
- 中式烹调师技师(初级)考试试卷及答案
- 住宅小区行业消防设施知识考试试卷及答案
- 单位2025年秋冬季园林绿化养护工作总结情况报告文稿
- 2025年氧化锆纤维隔膜布项目建议书
- T-CNHC 4-2025 昌宁县低质低效茶园改造技术规程
- 雨课堂学堂在线学堂云《芊礼-谦循-送给十八岁女大学生的成人之礼(中华女子学院 )》单元测试考核答案
- 2025年手术室护理实践指南试题(含答案)
- 智慧农贸市场建设项目报告与背景分析
- 护理部竞选副主任
- 【10篇】新版部编六年级上册语文课内外阅读理解专项练习题及答案
- 2026年中国经济展望:风鹏正举
- 老年健康服务中的多学科团队协作
- 上市公司部门组织架构及岗位职责大全
- 公司纺粘针刺非织造布制作工合规化技术规程
- 雨课堂学堂云在线《人工智能原理》单元测试考核答案
评论
0/150
提交评论