您现在的位置: 主页 > MCU > 单片机技术应用 > linux-2.6.22.1在s3c2410移植全过程 -
本文所属标签:
为本文创立个标签吧:

linux-2.6.22.1在s3c2410移植全过程 -

来源: 网络用户发布,如有版权联系网管删除 2018-09-06 

[导读]这两天一直致力于linux 2.6.22.1 的移植工作,虽然遇到过很多困难浪费过很多时间,但是昨晚终于出来了。现将其移植的详细过程贴出来供大家参考,如果按我说的做没有成功,可能与你的开发板以及电脑配置有关系。我还列

这两天一直致力于linux 2.6.22.1 的移植工作,虽然遇到过很多困难浪费过很多时间,但是昨晚终于出来了。现将其移植的详细过程贴出来供大家参考,如果按我说的做没有成功,可能与你的开发板以及电脑配置有关系。我还列出了我在移植过程只能中遇到的种种问题及解决方案,希望对有相同爱好兴趣的你有所帮助。

本文引用地址: http://www.21ic.com/app/mcu/201807/784583.htm


一.各种开发环境介绍

bootloader编译环境:

vivi版本:0.1.4

交叉编译器(CROSS-COMPILE)版本:2.95.3

操作系统:Fedora 6(在VMware 6.0.0 安装的,其实和直接安装没什么区别)

linux内核编译环境:

内核版本:linux2.6.22.1

(下载地址:

交叉编译器(CROSS-COMPILE)版本: 4.2.0

(下载地址:

http://www.codesourcery.com/gnu_toolchains/arm/download.html)

注意:下载选项,要选 ARM EABI 的选项,和 IA32 GNU/linux

操作系统: 同上

文件系统:用自带的root_china.tar.gz

可以到我的网络硬盘中下载http://www.disk1000.cn/?zjksn88

注意:关于所用到的各种交叉编译器我已经都打包放到我的网络硬盘里了,如果需要的话可以下载,希望给你带来一定的方便。

二:搭建交叉编译环境

说明:由于编译交叉编译环境比较繁琐,建议大家用已经编译好的交叉编译环境。

下面以3.3.2的交叉编译环境的搭建为例,其他的两个的编译器环境搭建一样。

1. 解压文件命令:

tar jxvf obsolete-gcc-3.3.2.tar.bz2

(obsolete-gcc-3.3.2.tar.bz2下载地址:http://linux.omap.com/pub/toolchain/)

2. 把解压的文件夹中的 “3.3.2”文件夹拷贝到 /usr/local/arm目录下

(如果没有arm目录就新建arm目录,但是一定要是拷贝到这个目录,不然不能运行)。

3. 在命令窗口输入

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

4. 如果输入 arm- 然后按下tab键能自动补全命令 arm-linux- 说明搭建成功。

三:bootloader 编译

我用的开发板已经把vivi 烧写好了,所以本人没有编译烧写bootloader 。如果你的开发板没有做好的bootloader ,请参考http://bbs.ss.pku.edu.cn/ss/index.php/5836/action_viewspace_itemid_11861.html

四: 内核 编译

1. 修改 Makefile

[root@localhost src]# cd linux-2.6.22

[root@localhost linux-2.6.22.1]# vi Makefile

修改 ARCH 和 CROSS_COMPILE

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

ARCH ?= arm

CROSS_COMPILE?=/usr/local/arm/arm-2007q1/bin/arm-none-eabi-

2. 修改common-smdk.c文件

[root@localhost linux-2.6.22.1]# vi arch/arm/plat-s3c24xx/common-smdk.c

static struct mtd_partition smdk_default_nand_part[] = {

[0] = {

name: "vivi",

size: 0x00020000,

offset: 0,

},

[1] = {

name: "param",

size: 0x00010000,

offset: 0x00020000,

},

[2] = {

name: "kernel",

size: 0x001c0000,

offset: 0x00030000,

},

[3] = {

name: "root",

size: 0x00400000,

offset: 0x00200000,

mask_flags: MTD_WRITEABLE,

},

[4] = {

name: "usr",

size: 0x03a00000,

offset: 0x00600000,

}

/*

[5] = {

.name = "S3C2410 flash partition 5",

.offset = SZ_1M * 14,

.size = SZ_1M * 10,

},

[6] = {

.name = "S3C2410 flash partition 6",

.offset = SZ_1M * 24,

.size = SZ_1M * 24,

},

[7] = {

.name = "S3C2410 flash partition 7",

.offset = SZ_1M * 48,

.size = SZ_16M,

}

*/

};

注意:上边所写的分区信息必须和 vivi 的分区信息相同,否则烧写上的内核不能运行。至于查看vivi 的分区信息就是 在 vivi 目录下输入vim ./arch/s3c2410/smdk.c 命令就可以在

mtd_partition_t default_mtd_partitions[] = { 。。。}

看到vivi的分区信息了。

修改 archarmmach-s3c2410mach-smdk2410.c 文件

Startic struct platform_device *smdk2410_devices[] __initdata={

&s3c_device_usb,

&s3c_device_lcd;

&s3c_device_wdt,

&s3c_device_i2c;

&s3c_device_iis,

&s3c_device_nand, /*add here*/

3. 去掉nand flash 的ECC

[root@localhost linux-2.6.22]# vim drivers/mtd/nand/s3c2410.c

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

1、打开drivers/mtd/nand/s3c2410.c

2、搜索关键字NAND_ECC_SOFT,在s3c2410_nand_init_chip函数里

3、修改NAND_ECC_SOFT为NAND_ECC_NONE

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

4. 支持启动时挂载devfs

为了我们的内核支持devfs以及在启动时并在/sbin/init运行之前能自动挂载/dev为devfs文件系统。

[root@localhost linux-2.6.22]# vi fs/Kconfig



              查看评论 回复



嵌入式交流网主页 > MCU > 单片机技术应用 > linux-2.6.22.1在s3c2410移植全过程 -
 

"linux-2.6.22.1在s3c2410移植全过程 -"的相关文章

网站地图

围观()