今天用到了linux-2.6.22.6内核,不得不重新编译一遍,把这个过程写下来与大家分享。
环境:
1、 Ubuntu 10.10发行版
2、 u-boot-2010.03
3、 FS2410平台
4、 交叉编译器
arm-none-linux-gnueabi-gcc-4.3.2
【实验步骤】
1、将实验代码中的rootfs.tar.bz2解压到/source下
$ tar xvf rootfs.tar.bz2 –C
/source
2、
解压内核并进入内核目录
$ tar xvf linux-2.6.22.6.farsight.tar.bz2
$ cd linux-2.6.22.6
3、 修改Makefile
修改内核源码目录下的Makefile
修改
ARCH =
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下,并把驱动模块拷贝到/source/rootfs下
$ make zImage
$ cp arch/arm/boot/zImage
/tftpboot
$ cp
drivers/char/2410GPIO_TEST_drv.ko /source/rootfs
Ø
编译应用程序并将它拷贝到/source/rootfs/bin下
$ arm-none-linux-gnueabi-gcc
–o 2410GPIO_TEST_APP 2410GPIO_TEST_APP.c
$ cp 2410GPIO_TEST_APP
/source/rootfs/bin
Ø 设置u-boot环境变量
# 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
重新启动系统
Ø
创建设备节点
# mknod /dev/GPIO_TEST c 252 0
Ø
运行2410GPIO_TEST_APP并查看开发板LED状态
# 2410GPIO_TEST_APP
9、 静态编译内核
Ø 配置内核时按“空格”选择,配置完成后保存退出
$ make menuconfig
Device
Drivers --->
Character
devices --->
S3C2410 test drv Device Support
Ø 重新编译内核并把内核拷贝到tftpboot下
$ make zImage
$ cp arch/arm/boot/zImage
/tftpboot
重新启动系统
Ø
创建设备节点
# mknod /dev/GPIO_TEST c 252 0
Ø
运行2410GPIO_TEST_APP并查看开发板LED状态
# 2410GPIO_TEST_APP
这样就可以了, 非常有成就感。