【vc++精品源码栏目提醒】:以下是网学会员为您推荐的vc++精品源码-动态加载驱动和Linux内核移植 - 其它资料,希望本篇文章对您学习有所帮助。
项目三: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 □第三方串口工具: 目标机 嵌入式 Linux3. 项目预习(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 表示不存在。
rootIntel /ls /dev/Mega8Kbdls: /dev/Mega8Kbd: No such file or directory 查看键盘驱动是否以模块形式动态加载?以下结果表示没有动态加载。
rootIntel /lsmodModule Size Used by Not taintedrootIntel / 查看当前系统设备中是否有 Mega8Kbd 设备?rootIntel /cat /proc/devicesCharacter 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