linux内核移植开发板,mini2440学习之(一)-------移植linux内核

请 登录 后使用快捷导航

没有帐号?注册

阅 4622|回 2

最后登录2013-8-22

在线时间22 小时

威望2878分

芯积分608分(兑换)

E金币好友

ab272afd221ee54211a36489932ff35a.png

发表于2009-9-22 15:02

mini2440学习之(一)-------移植linux内核

[复制链接]

此内核移植参考Tekkaman Ninja 的文章 在此向他表示感谢

前提准备:开发板mini2440开发板

linux内核为linux-2.6.22.2

NOR FLASH为superVIVI

注:本人仅仅是从网上搜集的材料然后根据自己的板子情况一点调试修改的

其中可能有些错误或不必要修改的地方,(本人也是新手所以谅解下吧)

转载请注明出处-----------------hongshaoone

一、将Linux2.6.22.2内核源码放到工作目录的kernel文件夹下,并解压

二、修改内核源码根目录下的Makefile文件

#ARCH        ?= arm

#CROSS_COMPILE    ?=arm-linux-

三、修改arch/arm/plat-s3c24xx/common-smdk.c文件,修改Nand Flash的分区信息和Nand Flash的硬件信息。

(1)

static struct mtd_partition smdk_default_nand_part[] = {

[0] = {

.name = "vivi",

.size  = SZ_16K*20,

.offset = 0,

},

[1] = {

.name = "kernel",

.offset = SZ_16K*20,  //SZ_16K*20开始为SZ_32K*10,不过make时出错,换成为SZ_16K*20就OK了  不知道为什么

.size = SZ_2M,

},

[2] = {

.name = "yaffs2",

.offset = SZ_2M+SZ_16K*20,

.size = SZ_2M*20,      //  SZ_2M*20  是我随便写的  不想再算了  呵呵

},

此处的分区一定要与supervivi的分区一致  我是用的  [x] bon part 0 320k 2368k    所以只分了三个区

(2)

static struct s3c2410_platform_nand smdk_nand_info = {

.tacls        = 0,

.twrph0        = 30,      //这 三个数字要改的 以前是20 60 20

.twrph1        = 0,

.nr_sets    = ARRAY_SIZE(smdk_nand_sets),

.sets        = smdk_nand_sets,

};

四、 修改drivers/mtd/nand/s3c2410.c,去掉nand flash 的ECC。

我的内核是通过U-BOOT写到Nand Flash的, U-BOOT 通过的软件ECC算法产生ECC校验码, 这与内核校验的ECC码不一样, 内核中的ECC码是由S3C2410中Nand Flash控制器产生的。所以,我在这里选择禁止内核ECC校验。 //此段引用别人的  我只是照此修改了

搜索关键字NAND_ECC_SOFT,在s3c2410_nand_init_chip函数里,修改NAND_ECC_SOFT为NAND_ECC_NONE

五、增加Yaffs2文件系统的支持

解压Yaffs2并将其加入Linux内核(打补丁的方式)

#cd yaffs2

#./patch-ker.sh c /mnt/linux-2.6.22.2/

六、系统初始化时的芯片晶振频率的修改,修改arch/arm/mach-s3c2440/mach-smdk2440.c

......

static void __init smdk2440_map_io(void)

{

s3c24xx_init_io(smdk2440_iodesc, ARRAY_SIZE(smdk2440_iodesc));

s3c24xx_init_clocks(12000000);

s3c24xx_init_uarts(smdk2440_uartcfgs, ARRAY_SIZE(smdk2440_uartcfgs));

}

七、配置内核

先拷贝s3c2410开发板的默认配置到内核根目录下,以简化配置过程

# cp arch/arm/configs/s3c2410_defconfig .config

# make menuconfig

1.General setup  --->

Configure standard kernel features (for small systems)  --->

选上这项,否则文件系统中的一些选项不会出现

2. System Type ---->

S3C2410 DMA support      Support ARM920T processor

S3C2410 Machines --->

SMDK2410/A9M2410

S3C2440 Machines --->

SMDK2440

SMDK2440 with S3C2440 CPU module

3.Boot options  --->

将 (root=/dev/hda1 ro init=/bin/bash console=ttySAC0) Default kernel command string

改成  (noinitrd root=/dev/mtdblock2  console=ttySAC0,115200 init=/linuxrc )

可能根据个人板子的设置会不一样,我的是从Nand Flash中加载文件系统,其中mtdblock2是存放我的Linux文件系统的分区。

4.Enable loadable module support --->

Module unloading

Automatic kernel module loading

选择这两个,剩下的可以去掉

5.Device Drivers --->

Memory Technology Device (MTD) support --->

MTD partitioning support

NAND Device Support --->

NAND Flash support for S3C2410/S3C2440 SoC

[ ]    S3C2410 NAND Hardware ECC    //这个要去掉

Network device support --->

Ethernet (10 or 100Mbit) --->

DM9000 support

< > Real Time Clock --->  //这个去掉

6.File systems----->

Miscellaneous filesystems --->

YAFFS2 file system support

我的文件系统为YAFFS2  ,如果不选此,则出现Kernel panic: VFS: Unable to mount root fs on unknown-block(31,2)

八、编译 make zImage

写的比较详细了, 基本包括了内核移植几个最重要的步骤, 但有些东西还是需要重新考虑的, 我列在下面, 如果你觉得有什么不对的, 欢迎来反驳我:)

引用offset = SZ_16K*20,  //SZ_16K*20开始为SZ_32K*10,不过make时出错,换成为SZ_16K*20就OK了  不知道为什么

那多半是因为SZ_32K没有定义把:)

引用此处的分区一定要与supervivi的分区一致  我是用的  [x] bon part 0 320k 2368k    所以只分了三个区

与supervivi分区保持一致是对的, 但supervivi用的并不是bon分区, 而是MTD分区, 在superviv下用part命令可以看到相关参数和信息。

引用.twrph0        = 30,      //这 三个数字要改的 以前是20 60 20

这三个NAND Flash Controller的参数要根据当前使用的NAND Flash芯片手册和CPU芯片手册相关部分来计算, 而且和NAND Flash Controller所用的HCLK频率有关

引用我的内核是通过U-BOOT写到Nand Flash的, U-BOOT 通过的软件ECC算法产生ECC校验码, 这与内核校验的ECC码不一样, 内核中的ECC码是由S3C2410中Nand Flash控制器产生的。所以,我在这里选择禁止内核ECC校验。

内核支持通用的软件ECC算法和S3C210 NAND Flash Controller的硬件ECC算法, 这里你应该根据U-boot使用的算法选择内核所用的ECC算法, 不要为了图简单就关掉ECC, 这是网上很多移植S3C2410内核的人犯的错误。

来源:百问网

最后登录2019-3-8

在线时间1349 小时

威望77274分

芯积分E金币好友

3302d95ef2ba617b711ee7df8f99bde6.png

发表于2009-9-22 15:59

学习一下!

个人签名处处留心皆学问!

发表于2009-10-23 22:41

成功了吗 发图上来吧

您需要登录后才可以回帖 登录 | 注册

8e9dfbe55bd58cf2dd5bfc5f8fa0c5ca.gif

发表回复

回帖后跳转到最后一页

资源大师勋章

在下载中心贡献超过4000份资料

荣誉会员勋章

曾经的版主且威望大于2000,或对EEWORLD论坛有突出贡献的坛友

【活动时间】即日起—5月25日

【礼品设置】

幸运礼:50元京东卡20份、30元京东卡20份

分享礼:30元京东卡5份、20元京东卡5份

【直播时间】5月19日上午10:00-11:30

【礼品设置】

预约礼:100元京东卡5份、50元京东卡19份;

提问礼:50元京东卡5份、30元京东卡10份

【活动好礼】商务背包、保温杯、小米65W氮化镓适配器、米家转换器、温湿度计

【主题展区】两轮智慧出行、智能驾驶、人工智能、智能驾驶、中大功率电源转换、电感

【活动时间】即日起——6月19日

【活动好礼】华为 Mate40 Pro、Apple iPad Air、Apple iWatch SE、500元京东卡、100元京东卡、安富利100周年限量版转换器、数据线、50元京东卡

浏览活动页面,储备工业大机器健康知识!

将从答对3道题及以上的网友中抽取幸运者,随机派送下方奖品!

3份小米小爱触屏音箱、10份米家声波电动牙刷、20张30元京东卡、50本《新概念模拟电路3》

在本次直播中,PI将为您带来集成额定电压900V的初级MOSFET的三个开关IC系列,可满足工业和公用事业计量的电源需求:LinkSwitch-TN2 IC可以为简单的降压拓扑设计提供电源解决方案;LinkSwitch-XT2 IC面向的是物料清单(BOM)比较简单的小功耗反激式电源;InnoSwitch3-EP IC则支持更大功率的应用。

介绍民用超声波水表计量原理及开发超声波水表过程中需要进行的测试。主要包括初始配置,零漂测试,温漂测试,瞬时流量测试和校准测试等。

更有好礼等着你!

从前期调研,制定课题,整理需求,拓扑选型,原理图和PCB绘制,电源仿真,焊接制作,测试调试...像完成一个项目一样,电源达人带你一步一步完成“高效率双向DCDC变换器”制作

关闭

站长推荐8217fdb18825e7c00471862df4b65348.gif 1/8

559e73423d712c7066b3301dbd780280.gif

电子工程世界版权所有

京ICP证060456号

Copyright © 2005-2021 EEWORLD.com.cn, Inc. All rights reserved

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值