linux-3.2.18菜鸟的移植笔记

开发板:TQ2440 V2.0核心板 ,256MB NAND ,2MB NOR,64MB SDRAM,东华3.5‘屏...

操作系统:Ubuntu 12.04 lts

编译器:arm-linux-gcc-4.4.3(friendlyarm)

uboot:tq官方u-boot-1.1.6_W35_20100601.bin

kernel源码:linux-3.2.18( 通过3.2.17升级)

rootfs:目前是nfs,基于busybox-1.20.0构建

串口调试:minicom (ubuntu version)

TFTP服务器:TFTPD(ubuntu verison)

USB下载工具:dwn2(手动编译)

工作目录:/opt/yee/

用户组&用户:yee:yee

edit.

----------------------------

一.让你的板子飞起来



1.ubuntu下建立交叉编译环境:

arm-linux-gcc-4.4.3.tgz 安装最终编译路径:

/opt/yee/toolchain/4.4.3/bin/........

添加环境变量:

$ vim /home/yee/.bashrc,在末尾行添加

PATH=$PATH:/opt/yee/toolchain/4.4.3/bin

2.安装内核源代码:

$ cd /opt/yee

$ tar -jxvf linux-3.2.17.tar.bz2


edit: 后续更新到3.2.18:

将patch-3.2.18.bz2,patch-3.2.17.bz2放置到/opt/yee

$ cd linux-3.2.17

$ bzcat ../patch-3.2.17.bz2|patch -p1 -R #降级到patch-3.2

$ bzcat ../patch-3.2.18.bz2|patch -p1    #升级到3.2.18

$ cd ../

$ mv linux-3.2.17 linux-3.2.18


3.修改Makefile
a. arch/arm/boot/目录Makefile中添加如下的一行

     $(call if_changed,objcopy)
         @cp -f arch/arm/boot/zImage zImage.bin 
         @echo '  Kernel: $@ is ready'


b. 根目录Makefile
大约195行

ARCH            ?= arm#$(SUBARCH)
CROSS_COMPILE   ?= arm-linux-#$(CONFIG_CROSS_COMPILE:"%"=%)

4.修改时钟参数

$ vim arch/arm/mach-s3c2440/mach-smdk2440.c

static void __init smdk2440_map_io(void)
{
        s3c24xx_init_io(smdk2440_iodesc, ARRAY_SIZE(smdk2440_iodesc));
        s3c24xx_init_clocks(12000000);
        s3c24xx_init_uarts(smdk2440_uartcfgs, ARRAY_SIZE(smdk2440_uartcfgs));
}

3.修改机器码和uboot里一致。

$ vim arch/arm/tools/mach-types

在内核文件arch/arm/mach-s3c2440/mach-smdk2440.c中的 MACHINE_START(S3C2440,”SMDK2440”)中要使用该机器码,同时它还应该与uboot中的机器码一致。

s3c2440                 ARCH_S3C2440            S3C2440                 168

4.修改NAND FLASH分区表,同时禁止ecc校验。

$ vim arch/arm/plat-s3c24xx/common-smdk.c

修改下面两个结构体

分区表:0-256KB用于uboot,256KB-2MB用于uboot的环境变量的存放,2MB-5MB用于内核,5MB以后用于根文件系统。

这个分区表也要和uboot一致。

注意:MTDPART_SIZ_FULL 在include/linux/mtd/partitions.h理有定义,MTDPART_SIZ_FULL 代表所有的可用空间
#define MTDPART_SIZ_FULL    (0)

/* NAND parititon from 2.4.18-swl5 */

static struct mtd_partition smdk_default_nand_part[] = { 
        [0] = { 
                .name   = "dengwy_uboot",
                .size   = 0x00040000,
                .offset = 0x00000000,
        },  
        [1] = { 
                .name   = "dengwy_kernel",
                .offset = 0x00200000,
                .size   = 0x00300000,
        },  
        [2] = { 
                .name   = "dengwy_yaffs2",
                .offset = 0x00500000,
                .size   = MTDPART_SIZ_FULL,
        }   

};

static struct s3c2410_nand_set smdk_nand_sets[] = { 
        [0] = { 
               .disable_ecc    = 1,//禁止ecc校验
                .name           = "NAND",
                .nr_chips       = 1,
                .nr_partitions  = ARRAY_SIZE(smdk_default_nand_part),
                .partitions     = smdk_default_nand_part,
        },  
};
5.添加内核yaffs支持

在工作目录下用git命令下载最新的yaffs

git clone git://www.aleph1.co.uk/yaffs2

完成后打补丁,进入下载的yaffs目录,

$ ./patch-ker.sh c m ../linux-3.2.18

6.配置内核

获取默认配置。在内核源码根目录下:

$ cp arch/arm/configs/s3c2410_defconfig .config

用make menuconfig配置linux内核,注意配置。

7.编译内核

make zImage

成功后会在根目录生产一个zImage.bin

下载测试。



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值