1、源码相关
(1)解压源码,打AT91补丁
# tar-jxflinux-2.6.20.tar.bz2
# cd/work/linux-2.6.20 (打补丁一定要在 Linux源码目录下进行)
# zcat ../2.6.20-at91.patch.gz| patch-p1 (注意路径)
# bzcat ../linux-2.6.20-at91-exp.diff.bz2| patch-p1 (注意路径)
(2)源码修改(解决烧写后MAC 无法识别的BUG)
/work/linux-2.6.20/drivers/net/arm/at91_ether.c作以下修改
static void__init get_mac_address(struct net_device *dev)
{
static char def_mac[]={0x00,0x15,0xf2,0x9d,0x66,0x80};
/*Check Specific-Address 1*/
if(unpack_mac_address(dev,
at91_emac_read(AT91_EMAC_SA1H),
at91_emac_read(AT91_EMAC_SA1L))
)
return;
/*Check Specific-Address 2*/
if(unpack_mac_address(dev,
at91_emac_read(AT91_EMAC_SA2H),
at91_emac_read(AT91_EMAC_SA2L))
)
return?
/*Check Specific-Address 3*/
if(unpack_mac_address(dev,
at91_emac_read(AT91_EMAC_SA3H),
at91_emac_read(AT91_EMAC_SA3L))
)
return?
/*Check Specific-Address 4*/
if(unpack_mac_address(dev,
at91_emac_read(AT91_EMAC_SA4H),
at91_emac_read(AT91_EMAC_SA4L))
)
return?
memcpy(dev->dev_addr,&def_mac,6);return;
printk(KERN_ERR"at91_ether:Yourbootloaderdid notconfigurea MAC address./n")?
}
2、配置内核
(1)修改Makefile
ARCH ?= $(SUBARCH)
CROSS_COMPILE ?=
改为
ARCH ?= arm
CROSS_COMPILE ?=arm-linux-
(3)配置内核
# cd/work/linux-2.6.20
# makeat91rm9200dk_defconfig
# makemenuconfig
(4)配置选项(没有提到的选项使用默认设置)
Loadable modulesupport--->
[]Enable loadable module support
Filesystems--->
Network FileSystems-->(如果要通过NFS方式调试,这项
[*]NFSfilesystem support
[*]Rootfilesystem onNFS
3、编译内核
(1)编译zImage
# cd/work/linux-2.6.20
# makezImage
(2)编译uImage (需要有UBoot 的mkimage 工具)
# cd/work/linux-2.6.20
# makeuImage