linux arm 内核编译 配置,[3]-Linux Kernel的交叉编译与配置

1.假定内核源码包在 /root 下, 首先解压源码:

#cd /root

#tar xjf linux-2.6.14.tar.bz2

2.进入内核目录:

#cd linux-2.6.14

修改此目录下的 Makefile, 将

ARCH          ?= $(SUBARCH)

CROSS_COMPILE ?=

改为

ARCH          ?= arm

CROSS_COMPILE ?= /usr/local/arm/3.4.1/bin/arm-linux-

3.生成默认的内核配置文件(for s3c2410):

#make s3c2410_defconfig

4.为内核添加 cs8900(见附件) 网卡驱动,以支持 NFS 挂接:

(1)复制 cs8900 驱动到 drivers/net/arm 目录

#cp cs8900.c drivers/net/arm

#cp cs8900.h drivers/net/arm

(2)修改 drivers/net/arm 目录下的 Kconfig 文件, 在最后添加:

config ARM_CS8900

tristate "CS8900 support"

depends on NET_ETHERNET && ARM && ARCH_SMDK2410

help

Support for CS8900A chipset based Ethernet cards. If you have a network

(Ethernet) card of this type, say Y and read the Ethernet-HOWTO, available

from as well as .To compile this driver as a module, choose M here and read.

The module will be called cs8900.o.

注:在运行 make menuconfig 命令时就会出现: [ ] CS8900 support 这一选项

(3)修改 drivers/net/arm 目录下的Makefile文件,在最后添加如下内容:

obj-$(CONFIG_ARM_CS8900) += cs8900.o

注:2.6 版本内核的 Makefile 也与 2.4 的有所不同, 添加以上语句, 就会使内核在

编译的时候根据配置将cs8900A的驱动程序以模块或静态的方式编译到内核当中。

(4)修改 arch/arm/mach-s3c2410/mach-smdk2410.c

在此文件中找到 smdk2410_iodesc[] 结构数组,添加如下如下内容:

{vSMDK2410_ETH_IO,pSMDK2410_ETH_IO, SZ_1M, MT_DEVICE}

修改之后变成:

static struct map_desc smdk2410_iodesc[] __initdata = {

/* nothing here yet */

/* Map the ethernet controller CS8900A */

{vSMDK2410_ETH_IO,pSMDK2410_ETH_IO, SZ_1M, MT_DEVICE}

};

并且添加一个头文件引用:

#include

(5)在 arch/arm/mach-s3c2410/include/mach/ 目录下创建文件 smdk2410.h

#ifndef _INCLUDE_SMDK2410_H_

#define _INCLUDE_SMDK2410_H_

#include

#define pSMDK2410_ETH_IO 0x19000000

#define vSMDK2410_ETH_IO 0xE0000000

#define SMDK2410_ETH_IRQ IRQ_EINT9

#endif

5.修改内核文件,配置内存的物理地址

修改 arch/arm/mach-s3c2410/include/mach/map.h

#define S3C2410_CS6 (0x30000000UL)

to

#define S3C2410_CS6 (0xC0000000UL)

修改 arch/arm/mach-s3c2410/include/mach/memory.h

#define PHYS_OFFSET (0x30000000UL)

to

#define PHYS_OFFSET (0xC0000000UL)

6.裁剪/定制内核

(1)#make menuconfig

(2)设置内核启动参数

Boot options ---> Default kernel command string:

mem=32M console=ttySAC0 root=/dev/ram initrd=0xc0800000,0x00800000 ramdisk_size=8192 rw

(3)设置 CS8900 的支持

Device Drivers --->

Network device support --->

Ethernet (10 or 100Mbit)  ---> []   CS8900 support

选中 [*]   CS8900 support

(4)设置 initrd 的支持

Device Drivers ---> Block devices  ---> [ ] RAM disk support

下面三项必须设置:

1.确保 RAM disk support 被选中

2.相应的将默认的 (4096) Default RAM disk size (kbytes) 改成 8192;

3.Initial RAM disk (initrd) support 一定要选中, 切记!(5)设置 NFS 的支持

File systems  ---> Network File Systems  --->

至少确保下面两项被选中:

[*] NFS file system support

[*]   Provide NFSv3 client support

(6)设置 ROM file system 的支持

File systems  ---> [*] ROM file system support

确保 [*] ROM file system support 被选中

(7)设置 ext2 的支持

File systems  ---> [*] Second extended fs support

确保 [*] Second extended fs support 被选中

7.编译

#make

编译完成后会有个 vmlinux 在当前目录下, 这就是我们要的 arm-linux 内核了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值