linux-2.6.35内核移植(s3c2410)

本文详细介绍了如何在Ubuntu 10.10环境下,通过下载、解压内核、安装交叉编译环境、配置内核选项等步骤,完成Linux 2.6.35内核的移植,并实现了yaffs2文件系统和cs8900网卡驱动的添加。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

环境搭建:
宿 主机:ubuntu 10.10
目标 机:s3c2410
交叉 编译 器:arm-none-linux-gnueabi-gcc-4.3.2
交叉编译器路径:/toolchain
要移植 的内核 版本:linux-2.6.35
文件 系统 类型: yaffs2

一、准备工作

1、下载 解压内核
从官网上下载linux-2.6.35的内核, ftp://ftp.kernel.org/pub/linux/kernel/v2.6/ ,文件不大,约85M。
2、移植yaffs2驱动
下载最新的驱动http://www.aleph1.co.uk/cgi-bin/ ... fs2.tar.gz?view=tar  解压在工作目录s3c2440下
进入yaffs2:  cd yaffs2 
给内核打补丁: ./patch-ker.sh  c ../linux-2.6.35
成功后打印信息: Updating /file/fl/linux-2.6.35/fs/Kconfig 
                       Updating /file/fl/linux-2.6.35/fs/Makefile
3、安装交叉编译环境
从http://www.handhelds.org/download/projects/toolchain/ 下载,解压之,
将交叉编译器安装到/toolchain下,更改环境变量,

修改文件/etc/bash.bashrc添加如下内容

export PATH=$PATH:/home/linux/toolchain/bin

二、移植


1、指定目标板machine、编译器和编译器路径

修改linux-2.6.35.3/Makefile,将
ARCH                ?= $(SUBARCH) 
CROSS_COMPILE        ?= 
修改成ARCH                ?= arm 
CROSS_COMPILE        ?= arm-none-linux-gnueabi-
注意:CROSS_COMPILE是指交叉编译器

     2.  配置内核

make menuconfig

Kernel Features  --->

       Kernel Features  --->   //使用EABI工具链这两项是必须选择的

                      [*] Use the ARM EABI to compile the kernel

                     [*]   Allow old ABI binaries to run with this kernel (EXPERIMENTAL) (NEW)

3、修改MTD分区

文件: arch/arm/plat-s3c24xx/common-smdk.c  
需要和bootloader中的分区信息相同(256M),否则,启动时出错。

static struct mtd_partition smdk_default_nand_part[] = {

[0] = {

        .name      = "bootloader u-boot-2010.03",

        .size = SZ_1M,

        .offset     = 0,

},

[1] = {

        .name      = "kernel linux-2.6.35",

        .offset = SZ_1M,

        .size = SZ_4M,

},

[2] = {

        .name      = "rootfs busybox-1.17.3",

        .offset = SZ_1M * 5,

        .size = SZ_8M,

},

[3] = {

        .name      = "usrfs",

        .offset     = SZ_1M * 13,

        .size = SZ_1M * 51,

},

};

 配置内核

Device Drivers  --->

        <*> Memory Technology Device (MTD) support  --->

               <*>   NAND Device Support  --->

                      <*>   NAND Flash support for Samsung S3C SoCs

有几点需要注意:

a、此信息需根据自己的实际分区信息修改

b、这里文件系统所在的分区标号必须与板子上root_fs的号码相同 ,否则启动会出错。因此这里不需要将所有

的分区信息都写进来,只要位置对应即可!

4、下面,开始配置内核。

进入linux-2.6.35目录,把s3c2410的默认配置写入config文件。

make s3c2410_defconfig

make menuconfig

配置文件系统选项
配置yaffs2文件系统 
修改配置如下:

 File systems  ---> 

    [*] Miscellaneous filesystems  --->

        <*>   YAFFS2 file system support 

            -*-     512 byte / page devices

            -*-     2048 byte (or larger) / page devices 

                [*]       Autoselect yaffs2 format 

                [*]     Cache short names in RAM

如果现在编译内核,下载到开发板中,内核就可以正常启动了.有了雏形,继续移植设备驱动。

这里,内核选项*代表编译至内核,M代表编译为模块 

5、移植cs8900驱动

将cs8900.c和cs8900.h两个文件拷贝到linux-2.6.35/drivers/net/arm/下修改Kconfig添加cs8900内核配置项

       修改linux-2.6.35/drivers/net/arm/Kconfig添加如下内容:

       config S3C2410_CS8900

              tristate “CS8900 support”

              depends on NET_ETHERNET && ARM && ARCH_SMDK2410

              ---help---

              support for cs8900 chipset base Ethernet cards, if you have a network card of this type.

       、修改Makefile添加内核编译配置

       修改driver/net/arm/Makefile添加如下内容:

       obj-$(CONFIG_S3C2410_CS8900) += cs8900.o

       、添加地址映射定义

       修改arch/arm/mach-s3c2410/include/mach/map.h文件,添加如下内容:

       /* CS8900a */

       #define pSMDK2410_ETH_IO     __phys_to_pfn(0x19000000)

       #define vSMDK2410_ETH_IO     0xE0000000

       #define SMDK2410_ETH_IRQ    IRQ_EINT9

       、添加平台代码

       修改arch/arm/mach-s3c2410/mach-smdk2410.c文件,添加如下内容:

       static struct map_desc smdk2410_iodesc[] __initdata = {

       /* nothing here yet */

       {vSMDK2410_ETH_IO, pSMDK2410_ETH_IO, SZ_1M, MT_DEVICE} //添加内容

       };

       、配置内核,使之支持cs8900网卡

       $ make menuconfig

                           Device Drivers  --->

                     [*] Network device support  --->

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

                                   <*>   CS8900 support

 

 

 

6、移植看门狗

修改配置

Device Drivers --->

    [*] Watchdog Timer Support --->

         <*> S3C2410 Watchdog


最后:make  zImage

最后编译出来的zImage就2.0M左右。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值