linux内核版本 2.6.14,移植vivi引导linux2.6.14.7内核修改的地方

一.下载一个纯净版的vivi主要修改几个地方

1.LINUX_INCLUDE_DIR = /kernel/include/(改成你存放linux kernel源代码的地址,因为编译vivi需要用到kernel源代码的部分头文件)----我本来是要把内核升级成2.6的,但是包含2.6的 include就是有问题,只好把他改成2.4的,我的linux就是2.4的,不过这个关系不大.

2.CROSS_COMPILE = arm-linux-(改成你存放交叉编译工具的路径,通常交叉编译工具的路径都已经在profile文件中声明,所以一般直接写arm-linux-)

3.ARM_GCC_LIBS =/usr/local/2.95.3/arm-linux/lib/gcc-lib/arm-linux/2.95.3(改成你安装交叉编译工具的相应路径)- ---用3.4.1的编译器会报错:说什么mshort-load-bytes选项无效,搞了好久不弄明白,只好用2.95.3,我弄了两个编译环 境!:) 然后就是配置选项了,在make menuconfig之前,建议先make clean,先把原来试验产生的目标文件清除.

二.我移植到了开发版里的vivi的版本为1.4.现在讲一下具体修改的过程.

1.首先是拷贝vivi源代码到/home目录,解压缩.然后是修改makefile,具体是:

a. 修改为“LINUX-INCLUDE-DIR = /kernel/include/(改成你存放linux kernel源代码的地址,因为编译vivi需要用到kernel源代码的部分头文件)----我本来是要把内核升级成2.6的,但是包含2.6的 include就是有问题,只好把他改成2.4的,我的linux就是2.4的,不过这个关系不大.

b. 修改为“CROSS-COMPILE = /usr/local/arm/2.95.3/bin/arm-linux-”

c. 修改为"ARM_GCC_LIBS =/usr/local/arm/2.95.3/lib/gcc-lib/arm-linux/2.95.3"

在这里我遇到一个问题,我用3.3.2和3.4.1的编译器编译vivi会报很多错误,比如什么:invalid option "no-fpu"之类的,但是用2.95.3就没这么多问题,只是在make head.s文件时不能产生head.o件。不知道是只有我一个人有这个问题还是大家都有,总之网上没有人提到具体怎么解决这个问题。不是说换个vivi就是说换个版本的交叉编译工具,就是这个小 问题卡了我将尽两天,浪费了大量的精力,真是受不了。最后我把vivi解压后的arch/s3c2410/head.o文件先保存,再make clean后,重新make时再把它cp回来。总算是过了,不过还没从根本上解决,只好等有时间再回来好好研究了。

2. 然后是修改arch/s3c2410/smdk2410.c与引导内核保持一致

我将要移植的内核是linux-2.6.14.7,对它分区如下:

古在此将smdk2410.c修改为

#ifdef CONFIG_S3C2410_NAND_BOOT

mtd_partition_t default_mtd_partitions[] = {

{

name: "vivi",

offset: 0x00000000,

size: 0x00020000,

flag: 0

}, {

name: "param",

offset: 0x00020000,

size: 0x0010000,

flag: 0

}, {

name: "kernel",

offset: 0x0030000,

size: 0x001c0000,

flag: 0

}, {

name: "root",

offset: 0x00200000,

size: 0x00200000,

flag: 0

//flag: MF_BONFS

}, {

name: "user",

offset: 0x00400000,

size: 0x03ef8000,

flag: 0

}

};

#endif

3. 修改cmd_line,因为我是用linux2.6的内核,还想使用ramdisk,所以设置为:

“char linux_cmd[] = "initrd root=/dev/mtdblock/3

init=/linuxrc console=ttySAC0,115200 mem=64M";”

你也可以设为:

“char linux_cmd[] = "initrd root=/dev/mtdblock/3 init=/linuxrc console=ttySAC0””

4. 然后make menuconfig,主要是去掉ecc。其他的设置就不细说了。

5. 最后,make vivi 就可以的到一个名为vivi的文件,烧到nandflash里

当把vivi烧进去后,可以通过输入part show查看MTD分区情况,这个分区表应该和后面kernel中的MTD分区保持一致,但现在并不是一致的,为什么呢?这是因为刚才你修改的只是vivi第一次启动时候默认的分区设置。具体分区情况要使用bon part命令来分。重新bon分区flash,这是十分必要的,相当于重新分区并格式化了整个flash区,当bon分区后flash里面的数据将全部丢失,所以要再把前面 新生成的vivi烧入目标板上,当然现在就可以只通过串口把vivi烧写进去,不用像第1步那样操作烧写vivi,但是注意bon命令重新分区后千万不要 断电了再烧写vivi,否则就不能通过串口烧vivi了,具体步骤如下:

(1)这里将flash分成4个区(vivi和param只占一个区),输入bon分区命令:

#bon part 0 192K 2M

注:一开始我按网上提供的#bon part 0 192K 2M 4M分区,可总不成功,最后去掉后面的4M就成功了,我也不知道是啥原因。

解释一下上面的命令:

第1个分区从0开始;

第2个分区从0x30000(即192K)开始;

第3个分区从0x200000(即2M)开始;

第4个分区从0x400000(即4M)开始.

(2)分区成功后,可以通过命令bon part info或者part show来查看bon分区信息,接下来不要断电,直接通过串口下载vivi,但是要注意的是,在linux下用xmodem协议下载文件很有可能出现传输过程中断线或者连不上的情况,但是在windowsXP的附件中的超级终端下通过xmodem传输文件过程却是十分的理想,所以我建议从前面的第3步一开 始就都在windowsXP环境下的超级终端里进行操作(不过我是在linux下操作的),输入命令:

#load flash vivi x

然后点击终端窗口中的传送下的发送文件,采用xmodem协议,选择要下载的vivi码即可.

(3)等待文件传输完毕后,输入boot重启目标板,并按住空格键重新进入vivi模式下,输入命令:

#part show

即可看到重新的分区表:

vivi> part show

mtdpart info. (5 partitions)

name offset size flag

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

Vivi正常启动后输出信息如下:

此至,VIVI移植圆满完成,在引导内核时我们将根据须要通过param set 命令重新设置内核引导参数。

注:

1.这次修改成功后,下次再烧写vivi时只要烧写这次修改后编译成功的vivi目标代码就可以了,无须再对烧进后的vivi更新了。

2.将kernel烧到nandflash里的时候出现invalid mtd info.信息,就是在使用vivi的load命令的时候出现的问题.用param save也会出现问题.总之就是不能往flash里写东西.看了一下vivi的启动信息,并且和网上

人的启动信息比较了一下,发现在memory mapping的时候都是正常的,但是我的启动信息里没有nandflash的id,厂商等信息.于是在windows下用sourceinsight这 个软件将vivi添加到一个工程里,查看main.c(里面可以看出了vivi的启动过程),发现对mtd的初始化等依赖于smc功能,然而我在编译的时 候是把smc掉的.重新编译vivi,make menuconfig,选中smc支持.编译,出错,说什么在mtd.o里什么mtd_nand_ecc没有定义之类的,抱着瞎试的态度,把smc支持下 的关于ecc的项选中,编译通过.然后烧到板子上,启动,果然出现了nandflash的厂商信息,load命令也可以正常使用了.

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值