linux内核移植文件系统,tiny6410: linux内核移植以及文件系统

经过两个星期的坎坎坷坷,终于算是内核启动成功了。

这里主要是参考了网上一篇 6410内核移植的文章,和国嵌的视频。

目标板:tiny6410

宿主机:win7+CentOS

编译器:arm-linux-gcc-4.5.1

之前花了好多时间去移植bootloader,但是没有成功,内心十分着急。所以跳过了这块,直接去移植内核了。。。。

所以,bootloader用的是友善之臂的。

首先,移植内核

1 下载linux-2.6.38的源码

ftp://ftp.kernel.org/pub/linux/kernel/v2.6/linux-2.6.38.tar.bz2

2 解压

tar zxvf  linux-2.6.38.tar.bz2

3 修改根下的Makefile

#vi Makefile

191行改为

ARCH ?=arm

CROSS_COMPILE?=arm-linux- (找到其交叉编译环境)

4 生成默认配置文件

#cparch/arm/configs/s3c6400_defconfig .config

(如果省略的话,后面会找不到SystemType)

5 修改配置项(基本配置)

#makemenuconfig

General setup->(/usr/4.5.1/bin/arm-linux-) Cross-compiler tool

prefix 我将编译器解压到了/opt/Friendly/toolschain/4.5.1/bin目录(如

果第三步中以修改“CROSS.complier?=arm-linux-”此项,这步可

以不作)

SystemType->[*]MINI6410 选上,其他的可以去掉,不确定的可

以参考友善之臂的(这样编译出来的内核是可以被uboot引导的,然后

是增加nandflash支持)

viarch/arm/mach-s3c64xx/mach-mini6410.c

第117行

structmtd_partitionmini6410_nand_part[]={

{

.name ="Bootloader",

.offset =0,

.size =(4*128*SZ_1K),

.mask_flags =MTD_CAP_NANDFLASH,

},

{

.name ="Kernel",

.offset =(4*128*SZ_1K),

.size =(5*SZ_1M),

.mask_flags =MTD_CAP_NANDFLASH,

},

{

.name ="FileSystem",

.offset =MTDPART_OFS_APPEND,

.size =MTDPART_SIZ_FULL,

}

}; //update at2011-8-26经过测试发现,这里改完后根本不起作

用,甚至将整个注释也无妨,估计分区已经固死在后面的

s3c_nand_mlc.fo中

6 拷贝NANDFLASH驱动

(将6410内核中的如下文件拷到相应的目录下)

需拷贝文件:

drivers/mtd/nand/s3c_nand.c

arch/arm/plat-samsung/include/plat/regs-nand.h 覆盖掉

drivers/mtd/nand/s3c_nand_mlc.fo

《s3c_nand_mlc.fo友善没有开源的一个驱动之一,所以不用研究

了,拷过来就是了。》

drivers/mtd/nand/nand_base.c覆盖掉

当然如果想手动修改的话见附件1

drivers/mtd/nand/Kconfig 覆盖掉

详细请见附件2

7drivers/mtd/nand/Makefile中20行增加

obj-$(CONFIG_MTD_NAND_S3C) +=s3c_nand.o

末尾再增加

S3C_NAND_MLC_SRC=$(shellls

drivers/mtd/nand/s3c_nand_mlc.c2>/dev/null)

ifeq ($(S3C_NAND_MLC_SRC),)

obj-$(CONFIG_MTD_NAND_S3C) +=s3c_nand_mlc.fo

else

obj-$(CONFIG_MTD_NAND_S3C) +=s3c_nand_mlc.o

endif

这步要是不愿意改的话,直接拷贝覆盖即可覆盖掉

8然后再make menuconfig

DeviceDrivers--->

MemoryTechnologyDevice(MTD)support--->

[*] MTDpartitioningsupport

[*] Commandlinepartitiontableparsing

DirectchardeviceaccesstoMTDdevices

CachingblockdeviceaccesstoMTDdevices

NANDDeviceSupport--->

<> NANDFlashsupportfor Samsung

S3CSoCs去掉不要选

NANDFlashsupportforS3CSoC

[*] S3CNANDHardwareECC

9编译

Make

如果顺利通过则出现如下信息:

OBJCOPYarch/arm/boot/Image

Kernel:arch/arm/boot/Imageisready

AS arch/arm/boot/compressed/head.o

GZIP arch/arm/boot/compressed/piggy.gzip

AS arch/arm/boot/compressed/piggy.gzip.o

CC arch/arm/boot/compressed/misc.o

CC arch/arm/boot/compressed/decompress.o

SHIPPEDarch/arm/boot/compressed/lib1funcs.S

AS arch/arm/boot/compressed/lib1funcs.o

LD arch/arm/boot/compressed/vmlinux

OBJCOPYarch/arm/boot/zImage

Kernel:arch/arm/boot/zImageisready

Buildingmodules,stage2.

MODPOST16modules

10下载到开发板

Make后生成的内核文件(zimage)在/arch/arm/boot/ 下。将其共

享或者通过其他方式放到window下并将开发板与pc连接利用dns工

具下载至开发板,按b重起开发板,测试内核是否正确编译、移植。

此时可能出现如下问题:

usbcore:registerednewinterface driverusbhid

usbhid:USBHIDcoredriver

VFPsupportv0.3:implementor41architecture1part20variantbrev

5

drivers/rtc/hctosys.c:unabletoopenrtcdevice(rtc0)

VFS:Cannotopenrootdevice"ubi0:FriendlyARM-root"or

unknown-block(0,0)

Pleaseappendacorrect"root="bootoption;herearetheavailable

partitions:

1f00 4096mtdblock0 (driver?)

1f01 8192mtdblock1 (driver?)

1f02 2084864mtdblock2 (driver?)

Kernelpanic-notsyncing:VFS:Unabletomountrootfson

unknown-block(0,0)

[](unwind_backtrace+0x0/0xe4)from[]

(panic+0x50/0x16c)

[](panic+0x50/0x16c)from[]

(mount_block_root+0x238/0x288)

[](mount_block_root+0x238/0x288)from[]

(prepare_namespace+0x88/0x1b4)

[](prepare_namespace+0x88/0x1b4)from[]

(kernel_init+0x108/0x148)

[](kernel_init+0x108/0x148)from[]

(kernel_thread_exit+0x0/0x8)

OK //在此卡住不动

这部分完全按网上的做,然后是文件系统。

我是按照国嵌的视频,制作基于RAM的文件系统 initramfs

先制作根文件系统

创建设备文件

安装/etc

编译内核模块

安装内核模块

配置busybox

编译、安装busybox

配置linux内核,支持initramfs文件系统

加入rootfs路径

vim .config

CONFIG_INITRAMFS_SOURSE="/root/rootfs"

执行ln–s ./bin/busyboxinit     创建软连接

编译内核

ok

9220a7dbaea47a186e25e510345d09cf.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
大学生参加学科竞赛有着诸多好处,不仅有助于个人综合素质的提升,还能为未来职业发展奠定良好基础。以下是一些分析: 首先,学科竞赛是提高专业知识和技能水平的有效途径。通过参与竞赛,学生不仅能够深入学习相关专业知识,还能够接触到最新的科研成果和技术发展趋势。这有助于拓展学生的学科视野,使其对专业领域有更深刻的理解。在竞赛过程中,学生通常需要解决实际问题,这锻炼了他们独立思考和解决问题的能力。 其次,学科竞赛培养了学生的团队合作精神。许多竞赛项目需要团队协作来完成,这促使学生学会有效地与他人合作、协调分工。在团队合作中,学生们能够学到如何有效沟通、共同制定目标和分工合作,这对于日后进入职场具有重要意义。 此外,学科竞赛是提高学生综合能力的一种途径。竞赛项目通常会涉及到理论知识、实际操作和创新思维等多个方面,要求参赛者具备全面的素质。在竞赛过程中,学生不仅需要展现自己的专业知识,还需要具备创新意识和解决问题的能力。这种全面的综合能力培养对于未来从事各类职业都具有积极作用。 此外,学科竞赛可以为学生提供展示自我、树立信心的机会。通过比赛的舞台,学生有机会展现自己在专业领域的优势,得到他人的认可和赞誉。这对于培养学生的自信心和自我价值感非常重要,有助于他们更加积极主动地投入学习和未来的职业生涯。 最后,学科竞赛对于个人职业发展具有积极的助推作用。在竞赛中脱颖而出的学生通常能够引起企业、研究机构等用人单位的关注。获得竞赛奖项不仅可以作为个人履历的亮点,还可以为进入理想的工作岗位提供有力的支持。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值