请 登录 后使用快捷导航

没有帐号?注册

阅 4622|回 2

最后登录2013-8-22

在线时间22 小时

威望2878分

芯积分608分(兑换)

E金币好友

发表于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金币好友

发表于2009-9-22 15:59

学习一下!

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

发表于2009-10-23 22:41

成功了吗 发图上来吧

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

发表回复

回帖后跳转到最后一页

资源大师勋章

在下载中心贡献超过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变换器”制作

关闭

站长推荐 1/8

电子工程世界版权所有

京ICP证060456号

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

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

  1. Linux下imx6dl开发板从镜像的烧写、内核源码编译到第一个驱动运行的详细步骤

    文章目录 前言 一.对开发板烧写镜像 1.镜像烧写 2.串口测试 二.搭建交叉编译环境 1.Ubuntu下搭建交叉编译环境 2.WSL下搭建交叉编译环境 三.编译Linux内核源码 1.Ubuntu下 ...

  2. arduino蓝牙linux,Arduino Tian 开发板 Arduino yun升级 wifi 蓝牙 Linux限量

    通知: 2016 Arduino Tian 强势登场,集成32位ARM Cortex M0核心.ARM SAMD21G18微控制器 高通AtherosAR9342 74kc MIPS Linux处理器 ...

  3. 对国产板子有阴影这些软硬件开源的ARM开发板可以学习Linux驱动

    对国产板子有阴影?这些软硬件开源的ARM开发板可以学习Linux驱动开发 为了点亮一块MIPI屏幕,我们除了要了解MIPI DSI的工作原理之外,大前提要了解整个MIPI DSI图显系统的组成,更需要 ...

  4. linux板卡支持USB键盘,让linux2.6.24内核在开发板支持usb鼠标

    让linux2.6.24内核在开发板支持usb鼠标 发布时间:2008-03-27 16:06:22来源:红联作者:Inwind 今天下午,对以前移植的linux2.6.24内核不能检测USB鼠标进行 ...

  5. 在VIM3开发板上运行无修改的iOS内核镜像

    在VIM3开发板上运行无修改的iOS内核镜像 之前在网上有看到过人使用QEMU成功的把IOS内核运行起来且成功挂载根文件系统的相关文章.理论上能在QEMU上跑成功,在真实的ARMv8开发板上运行起来也 ...

  6. 《Linux设备驱动开发详解(第3版)》(即《Linux设备驱动开发详解:基于最新的Linux 4.0内核》)网购链接

    <Linux设备驱动开发详解:基于最新的Linux 4.0内核> china-pub   天猫     dangdang   京东 China-pub 8月新书销售榜 推荐序一 技术日新月 ...

  7. imx6板载linux登录时间,大干货!迅为IMX6开发板丨Android丨Ubuntu丨Linux丨三大系统全开源.doc...

    大干货!迅为IMX6开发板丨Android丨Ubuntu丨Linux丨三大系统全开源.doc (5页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 9.90 ...

  8. 烧写linux系统到开发板中,【嵌入式开发】向开发板中烧写Linux系统

    作者 : 万境绝尘 终于拿到板子了, 嵌入式开发正式开启. 板子型号 : 三星 S3C6410 基于ARM11, 指令集基于arm6指令集; 为毛不是 Cortext A9的板子; 烧写内容 : Bo ...

  9. 在Vmware下linux与ARM开发板的NFS系统搭建【ZT】

    终于在Vmware下将arm_linux平台搭建好了,也不知道花了多少时间,查了多少资料.其实是很简单的,走了不少的弯路,现在总结下,希望对后学者有所帮助. 基本环境: 主机OS:Windows XP ...

最新文章

  1. Java线程如何转储
  2. S4 HANA物料凭证表MATDOC
  3. 收藏!这些 IDE 使用技巧,你都知道吗
  4. python 安装 pip,setuptools
  5. windows Nvidia GPU指令
  6. css 透明背景_css 中多种边框的实现小窍门
  7. Apache Camel 2.14中的更多指标
  8. python元祖迭代_如何在Python中迭代元组的堆栈
  9. 再见,金庸;再见,江湖
  10. 产品设计思维工具(2019年做产品的一点总结)
  11. 计算机上的科学计算器怎么使用,电脑自带的科学计算器怎么使用?
  12. MySQL从查找数据库表到删除全过程
  13. mysql学生管理系统毕业设计_学生成绩管理系统设计与实现(MySQL)
  14. 8、MySQL Workbench导入数据库提示Failed to open required defaults file:xxx.cnf
  15. 使用python程序抓取天眼查,企查查和爱企查上的企业基本信息
  16. 关于hadoop运行成功但是无法链接web页面
  17. 使用Tand自动化您的机器学习工作流程
  18. Luminati怎么玩,为用户解决什么问题?
  19. 华为u8825d手机root和google play安装有教程和相关文件
  20. 【Pandas】- pandas入门

热门文章

  1. python爬虫真假网址,python爬取福利网站图片完整代码,懂得人都懂
  2. ipaddress 模块介绍
  3. 学术论文中的图表一般用什么软件来画?哪个最专业?
  4. 【解题报告】【】交谊舞
  5. js计算给定日期顺延工作日后的日期
  6. 浅谈基于UDS的ECU刷写方案(Bootloader刷新)
  7. 微生物是如何影响身体健康的
  8. iMovie剪辑技巧一
  9. JAVA对接微信公众号(服务号、订阅号)实现模板消息推送功能
  10. 《首席执行官》观后感