当前位置:文档之家› 实验四 linux-2.6.35内核的编译和配置

实验四 linux-2.6.35内核的编译和配置

实验四 linux-2.6.35内核的编译和配置
【实验目的】
了解内核的编译过程及配置选项的内容
【实验环境】
1、 Ubuntu 10.10发行版
2、 u-boot-2010.03
3、 FS2410平台
4、 交叉编译器 arm-none-linux-gnueabi-gcc-4.3.2
【实验步骤】
实验步骤中的1-4,已经做过就不要重复了
1、 将实验代码中的rootfs.tar.bz2解压到/source 下,已经做过就不要重复了 $ tar xvf rootfs.tar.bz2 –C /source
2、 解压内核并进入内核目录
$ tar xvf linux-2.6.35.tar.bz2
$ cd linux-2.6.35
3、 修改Makefile
修改linux-2.6.35 目录下的Makefile ,找到
ARCH ?= $(SUBARCH)
CROSS_COMPILE
?= 改为
ARCH ?= arm CROSS_COMPILE
?= arm-none-linux-gnueabi-
4、 配置内核 设置平台
设置编译工具
make menuconfig
Kernel Features --->
[*] Use the ARM EABI to compile the kernel
[*] Allow old ABI binaries to run with this kernel (EXPERIMENTAL)
5、添加驱动文件
将实验代码2410GPIO_TEST_26/2410GPIO_TEST_drv.c拷贝到drivers/char下
6、修改对应Kconfig
修改drivers/char/Kconfig,在menu "Character devices"下面
加入如下内容:
config 2410GPIO_TEST_DRV
tristate "S3C2410 test drv Device Support"
depends on ARCH_S3C2410
---help---
support led test device driver on FS2410 develop board
7、修改对应Makefile
在drivers/char/Makefile 中
找到在obj-$(CONFIG_HANGCHECK_TIMER) += hangcheck-timer.o ,
在其下一行添加:
obj-$(CONFIG_2410GPIO_TEST_DRV) += 2410GPIO_TEST_drv.o
8、静态编译内核
Ø配置内核时按“空格”选择,配置完成后保存退出
$ make menuconfig
Device Drivers --->
Character devices --->
<*> S3C2410 test drv Device Support
Ø重新编译内核并把内核拷贝到tftpboot下
$ make zImage
$ cp arch/arm/boot/zImage /tftpboot
Ø 编译应用程序 $ arm-none-linux-gnueabi-gcc 2410GPIO_TEST_APP.c –o 2410GPIO_TEST_APP $ cp 2410GPIO_TEST_APP /source/rootfs
下面的操作开发板上操作
Ø 设置u-boot 环境变量,IP 地址改成自己环境的值
# setenv serverip 192.168.1.2
# setenv ipaddr 192.168.1.3
# setenv bootcmd tftp 33000000 zImage\;go 33000000
# setenv bootargs root=nfs nfsroot=192.168.1.2:/source/rootfs console=ttySAC0,115200 init=/linuxrc ip=192.168.1.3
# savenv
重新启动系统,内核启动进入shell 操作界面后,在开发板上操作
Ø 创建设备节点
# mknod /dev/GPIO_TEST c 252 0
Ø 运行2410GPIO_TEST_APP 并查看开发板LED 状态
# ./2410GPIO_TEST_APP
9、 动态编译内核
Ø 配置内核时按“空格”选择,配置完成后保存退出
$ make menuconfig
Device Drivers --->
Character devices --->
<M> S3C2410 test drv Device Support
Ø 重新编译内核并把内核拷贝到tftpboot 下,并把驱动模块拷贝到/source/rootfs 下 $ make zImage
$ make modules
随便找个地方编译不要在linux 码源文件夹下
生成模块丆要多这一步saveenv
$ cp arch/arm/boot/zImage /tftpboot
$ cp drivers/char/2410GPIO_TEST_drv.ko /source/rootfs
Ø编译应用程序并将它拷贝到/source/rootfs下,前面做过的话就不要重复了$ arm-none-linux-gnueabi-gcc 2410GPIO_TEST_APP.c –o 2410GPIO_TEST_APP $ cp 2410GPIO_TEST_APP /source/rootfs
重新启动系统
Ø创建设备节点
# mknod /dev/GPIO_TEST c 252 0
加载模块
insmod 2410GPIO_TEST_drv.ko
Ø运行2410GPIO_TEST_APP并查看开发板LED状态
# ./2410GPIO_TEST_APP
rmmod 2410GPIO_TEST_drv.o 卸载模块。

相关主题