CH : arm 表示编译支持 ARM 体系结构CROSS_COMPILE 您的交叉编译工具中 arm-Linux 所在目录/arm-Linux-例如:CROSS_COMPILE /up-techpxa270/arm-linux-tools/gcc-3.4.6-glibc-2.3.6/arm-linux/bin/arm-linux- (5)裁剪新内核 在内核源代码目录(up-techpxa270cl/kernel/linux-2.6.9-up-techpxa270cl/)中,拷贝一个已有的默 (认配置文件更名为.config 如果询问是否覆盖, ,后 输入 y) 然 在默认配置基础上, 使用 make menuconfig对内核进行裁减。
rootvm-dev cp up-techpxa270-cl-2008-05-26.config .configrootvm-dev make menuconfig ,说明屏幕不够大,全屏即可。
如果出现“at least 80 columns” 思考:.config 配置文件作用? 按照以下步骤和提示,选中目标机所需的模块支持(使用“上下箭头”移动,使用“Enter”进入,使用“Esc”返回上级) 。
1、选择处理器类型(默认已经选上)System Type --- ARM system type PXA2xx-based --- X PXA2xx-based 2、网卡设备(默认已经选上)Networking support --- Network device support Ethernet 10 or 100Mbit --- Ethernet 10 or 100Mbit DM9000 support 3、矩阵键盘设备(使用空格键切换选择,选中 Atmel 项,按下空格键,可以在,M 和空之间变换,表示编译到内核,M 表示动态模块方式加载,空表示不支持) I2C support --- I2C support I2C Hardware Bus support --- Intel PXA2XX I2C adapter Other I2C Chip support --- Atmel Mega8 MCU on UPTechPXA270-classic platform Matrix Keyboard 4、USB 鼠标支持Input device support --- Mouse interfaceUSB support --- (位置在下方,默认已经选上) USB Human Interface Device full HID support HID input layer support /dev/hiddev raw HID device support 5、声卡支持(默认已经选上)Sound --- Sound card support Open Sound System --- PXA Audio PXA AC97 audio support UCB1X00 core support UCB1X00 touchscreen plugin 退出并保存配置信息。
思考:上面配置选项应该在哪个目录下的哪个文件里(KConfig)?通过 make menuconfig 裁剪完后,.config 文件会有哪些变化?若内核中没有你想要的功能模块选项将怎么办(拷贝驱动程序,修改KConfig 等)?(6)编译新内核 ,执行 make 命令,进行内核 在内核目录下(up-techpxa270cl/kernel/linux-2.6.9-up-techpxa270cl/)的编译。
rootvm-dev make 编译成功后,会在/up-techpxa270cl/kernel/linux-2.6.9-up-techpxa270cl/arch/arm/boot 目录下生成新内核文件 zImage。
rootvm-dev cd /up-techpxa270cl/kernel/linux-2.6.9-up-techpxa270cl/arch/arm/bootrootvm-dev ls(7)烧写新内核 。
0)将已经生成的 zImage 拷贝到/tftpboot 目录下(如果询问是否覆盖,输入 y)rootvm-dev cp –rf zImage /tftpboot 1)配置 tftp 服务 首先请确保 Linux 虚拟机的 tftp 服务已经正确配置,并运行。
①在虚拟机上用 vi 打开“/etc/xinetd.d/tftp” ,做相应的修改。
大部分网络服务都是由它启动的rootvm-dev vi /etc/xinetd.d/tftp ②找到 disable no 这一项看看是不是此状态(默认是),若不是,则改成此状态,保存退出。
③重启 tftp 服务,命令如下:rootvm-dev service xinetd restart ④查看 tftp 服务是否启动:rootvm-dev service xinetd status 2)烧写新内核 给目标机加电后,进入 blob 模式下(按回车之外的任意键) ,首先配置 tftp 服务器的 IP。
blob ifconfig server 192.168.0.10 (因为虚拟机IP前面已经配置为192.168.0.10了,所以此步可不做) 注意:tftp server 的 IP 是 Linux 虚拟机的 IP。
重启 ARM 目标机后可能需要重新配置 tftp server 的 IP。
如果在 blob 下修改 IP 失败或者超时等,可以将 Linux 虚拟机的 IP 修改为 192.168.0.10(默认的 server IP 是192.168.0.10)。
然后将内核 zImage 烧写到 Ram。
blob tdownload kernel出现下面状态表示正确:file: zImage part kerneldownloading zImage to 0xa0200000done 如果出现 ARP timeout 错误,可能是网络原因,可以尝试将 windows 网卡禁用并启用,改 IP,检查网线等。
再将内核 zImage 烧写到 Flash。
blob flash kernel出现下面状态表示正确:Saving kernel to flashfwrite 0xa0200000 0x100000 1597152Erasing 13 blocks at 0x00100000:.............doneFlashing 0x00185ee0 bytes at 0x00100000:.............done (8)测试新内核 重启 ARM 目标机,按回车键,看是否能正常进入 Linux 系统。
无需手动加载驱动,直接通过: ls /dev/Mega8Kbd 命令查看键盘设备节点, 会显示: 通过 cat /proc/devices 查看设备信息,以及运行键盘测试程序 getkey。
看看是否键盘驱动已经直接加入了内核,并且已经自动创建好设备节点,键盘测试程序能够正确获得按键信息。
再次查看当前系统设备情况,结果表明有 Mega8Kbd 键盘设备。
rootIntel kbd_testcat /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 81 video4linux 89 i2c 90 mtd108 ppp128 ptm136 pts161 ircomm180 usb252 Mega8ICcard253 Mega8Kbd254 pcmcia (9)还原系统自带内核 ,并 将 3_kbd_test 目录下的 zImage 拷贝到/tftpboot/目录下。
重新执行(7) 重 启 ARM 目标机,按回车键,看是否能正常进入 Linux 系统。
6. 项目运行 运行结果要求: 1、正确启动 ARM 目标机的系统 2、键盘测试程序正确读取键值信息7. 项目问题1、 说明本次实验中的硬件系统。
2、 嵌入式 Linux 内核的代码构成?设备驱动程序放在什么目录下?3、 说明动态加载模块的命令,卸载模块的命令,创建设备节点的命令。
4、 说明内核裁剪定制的方法。
5、 在配置内核时,通常有三种选择方式: Y:将该功能编译进内核; N:不将该功能编译进内核; M:以模块方式编译,需要时可以动态插入到内核中。
试问,选择 M 和不进行内核配置、编译直接使用 insmod 动态加载模块(第 5 大项步骤 3)有何不同?6、 如何对内核 kernel 进行裁减定制,例如增加一个模块?7、 配置文件主要有哪些?8、 .config 文件作用?内核中有几个.config 文件?9、 Kconfig 文件作用?内核中有几个 Kconfig 文件?10、 Makefile 文件作用?内核中有几个 Makefile 文件?11、 说明 Makefile 文件与.config 的关系?12、 如何编译内核 kernel?13、 内核 kernel 如何烧写到目标机中?8. 项目考核 考核项目 权重 主要考核点 实验预习(个人) 20 实验要求的预习项 实验过程及结果(个人) 40 动手执行能力 解决问题的能力 项目完成程度 实验总结(个人) 40 实验报告检查 提问
上一篇:
新版WIN32汇编开发环境介绍及RadAsm简明教程
下一篇:
关于XX镇中小企业电子商务应用发展趋势的研究