linux内核配置编译

Linux内核配置和编译

资源有:linux-2.6.35.tar.bz2

第一步:

将linux-2.6.35.tar.bz2放到/hyg下面:

$ tar  xvf  linux-2.6.35.tar.bz2

$ cd  linux-2.6.35

修改Makefile(这里主要是配置内核要适应的平台,以及要通过什么编译器来编译)

大约在Makefile190行左右:

Vi Makefile

ARCH ?= arm

CROSS_COMPILE ?= arm-cortex_a8-linux-gnueabi-

//拷贝标准板配置文件(这里的配置文件,平台是指定的,如果是不同的平台,我就不清楚了,自己可以查阅网络)

  $ cp  arch/arm/configs/s5pc100_defconfig   .config 

//配置内核,下面这一步,是要激活.config文件,如果不用下面的话,会出现命令行的配置

  $ make  menuconfig

//该命令执行时会弹出一个菜单,我们可以对内核进行详细的配置。这里我们先查看一下,内核都提供了那些功能!

//编译内核

  $ make  zImage

//通过上述操作我们能够在arch/arm/boot目录下生成一个zImage文件,这就是经过压缩的内核镜像。

第二步:网卡驱动的移植(如果不做该步,将会导致不能通信)

//平台代码修改

  vim  arch/arm/mach-s5pc100/mach-smdkc100.c

//添加需要的头文件

#if defined (CONFIG_DM9000)

#include <linux/dm9000.h>

#include <linux/irq.h>

#endif

//平台设备的添加

/* DM9000 Support */

#if  defined(CONFIG_DM9000)

static struct resource dm9000_resources[] = {

[0] = {

.start        = 0x88000000,

.end         = 0x88000000 + 0x3,

.flags        = IORESOURCE_MEM,

},

[1] = {

.start        = 0x88000000 + 0x4,

.end        = 0x88000000 + 0x4 +0x3,

.flags        = IORESOURCE_MEM,

},

[2] = {

     .start = IRQ_EINT(10),

     .end   = IRQ_EINT(10),

.flags        = IORESOURCE_IRQ | IRQ_TYPE_LEVEL_HIGH,

},

};

 

static struct dm9000_plat_data s5pc100_dm9000_platdata = {

.flags        =   DM9000_PLATF_16BITONLY,

.dev_addr[0]  = 0x00,

.dev_addr[1]  = 0x00,

.dev_addr[2]  = 0x3e,

.dev_addr[3]  = 0x26,

.dev_addr[4]  = 0x0a,

.dev_addr[5]  = 0x00,

};

 

static struct platform_device s5pc100_device_dm9000 = {

.name        = "dm9000",

.id        = -1,

.num_resources        = ARRAY_SIZE(dm9000_resources),

.resource        = dm9000_resources,

.dev = {

.platform_data  = & s5pc100_dm9000_platdata,

}

};

#endif

//平台设备列表的添加:

smdkc100_devices[]结构体数组中添加如下内容:

   #if  defined(CONFIG_DM9000)

   &s5pc100_device_dm9000,

   #endif

//配置内核

$ make menuconfig

//网络配置:

[*] Networking support (NEW)  --->

Networking options  ---> 

<*> Packet socket

<*> Unix domain sockets

[*] TCP/IP networking

[*]   IP: multicasting 

[*]   IP: kernel level autoconfiguration

[*]     IP: BOOTP support 

//网卡驱动配置

Device Drivers  --->  

[*] Network device support  --->

[*]   Ethernet (10 or 100Mbit)  --->

<*>   DM9000 support 

//网络文件系统的配置

File systems  --->  

[*] Network File Systems  --->

<*>   NFS client suppor

[*]     NFS client support for NFS version 3  

[*]       NFS client support for the NFSv3 ACL protocol extension

[*]     Root file system on NFS 

//编译内核,并拷贝到tftpboot目录下

$ make  zImage

$ cp arch/arm/boot/zImage  /tftpboot

//启动开发板,修改内核启动参数,通过NFS方式挂载根文件系统

/上面做完后,在下载到开发时候,可能在挂在nfs时会出现问题:具体问题,自己查阅网路资源(有可能是你的网络配置出现一点问题)

 

 

//-----下载kernel
  $ tftp 0x20008000 zImage   //从tftp服务器里下载内核zImage 到内存20008000地址中   ,tftp服务器的ip地址由serverip 变量确定
  $ nand erase 100000 300000  //擦除nandflash中,从 100000 开始,长度为300000的内容
  $ nand write 20008000 100000 300000   //把内存20008000 中的内容 写入nandflash的100000地址中,长度为300000
  $ setenv bootcmd nand read 20008000 100000 300000 \; go 20008000

 

saveenv

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值