环境:
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 --->
<M> 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
这样就可以了, 非常有成就感。