当前位置:首页 > 单片机 > 单片机
[导读]最近这几天的晚上我在移植2.6的kernel。因为水平很菜,所以不太顺利。 我用的是kernel是2.6.14.2, 这个内核直接支持S3C2410的板子,不必打任何补丁。从www.kernel.org下载了内核。然后找来了3.4.1的GCC交叉编译器(经

最近这几天的晚上我在移植2.6的kernel。因为水平很菜,所以不太顺利。
我用的是kernel是2.6.14.2, 这个内核直接支持S3C2410的板子,不必打任何补丁。从www.kernel.org下载了内核。然后找来了3.4.1的GCC交叉编译器(经典的2.95.3编译2.6内核会出错)。解开内核开始修改。

(该部分转贴自:http://superlp.blogchina.com/blog/1391393.html感谢superlp)
1. 增加nand分区信息
打开arch/arm/mach-s3c2410/devs.c
增加头文件
#include
#include
#include
增加分区数据
/*****************************add here***************************/
static struct mtd_partition partition_info[] ={
{
name: "loader",
size: 0x00020000,
offset: 0,
}, {
name: "param",
size: 0x00010000,
offset: 0x00020000,
}, {
name: "kernel",
size: 0x001c0000,
offset: 0x00030000,
}, {
name: "root",
size: 0x00200000,
offset: 0x00200000,
mask_flags: MTD_WRITEABLE,
}, {
name: "user",
size: 0x03af8000,
offset: 0x00400000,
}
};

struct s3c2410_nand_set nandset ={
nr_partitions: 5 ,
partitions: partition_info ,
};

struct s3c2410_platform_nand superlpplatform={
tacls:0,
twrph0:30,
twrph1:0,
sets: &nandset,
nr_sets: 1,
};
/********************************end add****************************/
struct platform_device s3c_device_nand = {
.name = "s3c2410-nand",
.id = 0xec,
.num_resources = ARRAY_SIZE(s3c_nand_resource),
.resource = s3c_nand_resource,
.dev = {
.platform_data = &superlpplatform //***********add here*****
}
};
(分区部分根据实际情况修改)

2. 打开arch/arm/mach-s3c2410/mach-smdk2410.c
把"&s3c_device_nand"添加到__initdata
3. 打开drivers/mtd/nand/s3c2410.c
把chip->eccmode = NAND_ECC_SOFT;改成chip->eccmode = NAND_ECC_NONE;
4. 修改Makefile, 把设定SUBARCH := arm CROSS_COMPILE ?= arm-linux-(事先得安装交叉
编译器)
接着开始make menuconfig,并且载入arch/arm/configs/def_s3c2410config,保存后就make,如果编译器没有问题得话,应该一次就能编译成功。

接下来编译bootload, 我用vivi, 从www.mizi.com下 载vivi的源代码包,解开后make menuconfig, 载入arch/def-configs/smdk2410, 保存退出后修改arch/s3c2410/smdk.c,修改里面的分区信息和启动参数。分区信息根据实际情况设置,启动参数设置成“noinitrd root=/dev/mtdblock3 init=/linuxrc console=ttySAC0,115200 mac=00:0e:3a:aa:bb:cc”. 保存退出后make, 得到vivi的BIN.

把vivi和kernel的BIN文件烧录到FLASH后给板子上电,发现一个问题,vivi并没有使用我设置好的分区信息和启动参数,而是使用一个默认 的值,要使用命令param reset和part reset才可以重置我设置的值。vivi默认的kernel分区大小是1M,而我的kernel的BIN文件有1.2M,开始尝试了好多次都失败。重置 了参数以后kernel可以执行起来, 但是找不到根文件系统,那是当然的,因为我还没有烧录文件系统。

一.准备必要的文件

我们首先去官方网站下载最新的llinux内核

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

因为linux2.6.14内核需要更新版本的编译器,所以我们需要下载交叉编译器

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

注:这个编译器已经包含在光盘的DISK4linux相关linuxtool目录下面。

二.安装文件

我们把gcc安装在/usr/local/arm/3.4.1目录下,安装方法和安装gcc2.95.3和gcc3.3.2是相同的,(

cd /

tar jxvf arm-linux-gcc-3.4.1.tar.bz2

vi ~/.bash_profile

把arm-linux-gcc的路径/usr/local/arm/3.4.1/bin添加到PATH中)


接下来需要解压linux内核,输入命令:

[root·localhost hfrk]# tar jxvf linux-2.6.14.tar.bz2

内核被解压到linux-2.6.14目录下。

三.修改makefile文件

内核的编译是根据makefile文件的指示进行的,Makefile文件来组织内核的各模块之间的关系,记录了各个模块之间的相互联系和依赖关系。

我们首先修改linux-2.6.14的根目录下的makfile文件,我们须改的主要内容是目标代码的类型和为编译内核指定一个编译器。

我们注释掉以下内容:

#ARCH?= $(SUBARCH)

#CROSS_COMPILE?=

增加如下内容:

ARCH: = arm

CROSS_COMPILE =/usr/local/arm/3.4.1/bin/arm-linux-

四.修改相关的文件。

1.修改archarmmach-s3c2410devs.c文件

增加头文件定义

/***********add here***********/

#include

#include

#include

/**************end add********/





增加nand flash分区信息

/***********add here***********/

static struct mtd_partition partition_info[] ={

{

name: "loader",

size: 0x00020000,

offset: 0,

}, {

name: "param",

size: 0x00010000,

offset: 0x00020000,

}, {

name: "kernel",

size: 0x001c0000,

offset: 0x00030000,

}, {

name: "root",

size: 0x00200000,

offset: 0x00200000,

mask_flags: MTD_WRITEABLE,

}, {

name: "user",

size: 0x03af8000,

offset: 0x00400000,

}

};

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

上海2023年2月16日 /美通社/ -- 近日,诺华中国宣布与中国红十字基金会正式启动"中国地中海贫血救助项目"广西地区专项援助,将在当地定向资助困难家庭地中海贫血患儿,同时通过相关医生培...

关键字: BSP 控制 移植 大众

北京2022年12月7日 /美通社/ -- 2022年12月3日,由高博医学(血液病)广东研究中心南方春富(儿童)血液病研究院、南方医科大学南方医院共同主办的高博医学论坛·华南造血干细胞移植论坛通过线下线上...

关键字: 移植 HD PID 血细胞

捐款近4000万 上海2022年12月7日 /美通社/ -- 2022年12月7日下午,中芯国际"芯肝宝贝计划"十年纪念暨2022年度捐赠仪式在上海仁济医院举行。十年来,该项目捐赠善款总额近4000...

关键字: 中芯国际 移植

北京2022年11月14日 /美通社/ -- 2022年10月,高博医学(血液病)北京研究中心北京高博博仁医院造血干细胞移植科迎来了五周岁"生日"。在吴彤主任带领下,移植科于2017年从无到有,历经五...

关键字: 移植 OS MT CD

上海2022年11月6日 /美通社/ -- 在第五届中国国际进口博览会期间,武田制药携5款创新产品亮相武田罕见遗传与血液疾病领域专场发布会。用于移植后抗巨细胞病毒(CMV)感染或疾病治疗[1]的马立巴韦[2]迎来&quo...

关键字: 移植 BSP CD FDA

亘喜生物科技集团宣布正在中国开展的、旨在全面评估GC007g治疗复发/难治性急性B淋巴细胞白血病效果的1/2期注册性临床试验顺利进入2期研究阶段,首例入组患者已给药。GC007g是亘喜生物旗下的一款靶向CD19的供者来源...

关键字: 移植 CD

北京2022年9月9日 /美通社/ -- 诺诚健华(香港联交所代码:09969)今天宣布,tafasitamab (Minjuvi®)联合来那度胺治疗不适合自体干细胞移植 (ASCT) 条件的复发/难治弥漫性大B...

关键字: VI NJU BSP 移植

苏州2022年8月19日 /美通社/ -- 近日,华中科技大学同济医学院附属协和医院心外科董念国教授团队运用与心擎医疗联合研发的短中期体外全磁悬浮心室辅助装置MoyoAssist®,成功救治三例危重的终...

关键字: 磁悬浮 移植 IC 静脉

上海2022年8月17日 /美通社/ -- 2022年8月16日,聚焦于基因和细胞治疗的上海邦耀生物科技有限公司(以下简称"邦耀生物")宣布,其...

关键字: CD 移植 BSP ISP

苏州2022年6月28日 /美通社/ -- 2022年6月23日,首都医科大学附属北京安贞医院(以下简称安贞医院)与苏州心擎医疗技术有限公司(以下简称心擎)在北京、苏州两地线上连线,隆重召开体外心室辅助系统临床...

关键字: BSP 磁悬浮 创始人 移植
关闭
关闭