当前位置:首页 > 单片机 > 单片机
[导读]安装交叉编译工具?下载交叉编译工具(本文默认所有软件均下载在用户主目录下)arm-linux-gcc-3.4.1 —— 交叉编译工具URL:ftp://ftp.handhelds.org/projects/toolchain/arm-linux-gcc-3.4.1.tar.bz2?安装 //将压缩包

安装交叉编译工具


?下载交叉编译工具

(本文默认所有软件均下载在用户主目录下)

arm-linux-gcc-3.4.1 —— 交叉编译工具

URL:ftp://ftp.handhelds.org/projects/toolchain/arm-linux-gcc-3.4.1.tar.bz2

?安装

//将压缩包移动至根目录下

#mv arm-linux-gcc-3.4.1.tar.bz2 /

//解压,默认路径为 /usr/local/arm /3.4.1

#tar jxvf arm-linux-gcc-3.4.1.tar.gz2


下载Linux内核


?下载Linux 2.6.14内核

URL:http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.14.tar.bz2

?解压内核

#cd ~

#tar jxvf linux-2.6.14.tar.bz2


建立环境变量


?将交叉编译工具路径和内核路径加入环境变量

#vi ~/.bashrc

export KERNEL=~/linux-2.6.14

export PATH=/usr/local/arm/3.4.1/bin:$PATH


内核移植


?为Flash进行分区

启动开发板,进入vivi,对vivi进行分区操作

vivi>bon part 0 128k 192k 2240k 5312k:m 64704k

分区信息如下所示:

分区

起始地址

分区大小

分区作用

Part0

0x0

0x00020000 (128k)

bootloader

Part1

0x00020000

0x00010000 (64k)

bootloader params

Part2

0x00030000

0x00200000 (2m)

linux kernel

Part3

0x00230000

0x00300000 (3m)

root filesystem

Part4

0x00530000

0x03A00000 (58m)

yaffs filesystem

将vivi写进Flash

vivi>load flash vivi x

?修改Makefile

#vi $KERNEL/Makefile

找到ARCH与CROSS_COMPILE,修改为

ARCH ?= arm

CROSS_COMPILE ?= arm-linux-

?将分区信息加入内核

#vi $KERNEL/arch/arm/mach-s3c2410/devs.c

添加头文件:

#include

#include

#include

添加分区结构:

static struct mtd_partition partition_info[]={

{

name: "loader", //分区名字,任意

size: 0x00020000, //分区大小

offset: 0x0, //分区的起始地址,相对于0x0的偏移

},{

name: "param",

size: 0x00010000,

offset: 0x00020000,

},{

name: "kernel",

size: 0x00200000,

offset: 0x00030000,

},{

name: "rootfs",

size: 0x00300000,

offset: 0x00230000,

},{

name: "yaffs",

size: 0x03A00000,

offset: 0x00530000,

}

};

struct s3c2410_nand_set nandset={

nr_partitions: 5, //分区数量

partitions: partition_info, //分区表

};

struct s3c2410_platform_nand superlpplatform={

//NAND Flash芯片支持

//参数意义可参考S3C2410手册

tacls: 0,

twrph0: 30,

twrph1: 0,

sets: &nandset,

nr_sets: 1,

};

修改s3c_device_nand,以加入NAND Flash驱动:

struct platform_device s3c_device_nand = {

.name = "s3c2410-nand", //设备名称

.id = -1,//有效设备编号,-1表示唯一设备

.num_resources = ARRAY_SIZE(s3c_nand_resource), //寄存器区的个数

.resource = s3c_nand_resource, //寄存器区的首地址

//添加如下信息,表示NAND Flash设备

.dev={

.platform_data=&superlpplatform

}

};

?指定启动时的设备初始化

#vi $KERNEL/arch/arm/mach-s3c2410/mach-smdk2410.c

修改:

static struct platform_device *smdk2410_devices[] __initdata = {

s3c_device_usb,

s3c_device_lcd,

s3c_device_wdt,

s3c_device_i2c,

s3c_device_i

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除( 邮箱:macysun@21ic.com )。
换一批
延伸阅读
关闭