当前位置: 首页 > news >正文

ARM+LINUX移植攻略(七)Linux 2.6.30.4移植TE2440II开发板

哈尔滨理工大学软件工程专业08-7李万鹏原创作品,转载请标明出处

http://blog.csdn.net/woshixingaaa/archive/2011/02/14/6184884.aspx

宿主机:ubuntu9.10
目标机:s3c2440
交叉编译器:arm-linux-gcc-4.3.2
交叉编译器路径:/usr/local/arm/4.3.2
移植内核版本:linux-2.6.30.4
文件系统类型: yaffs2

步骤包括:

1)linux内核打上yaffs2补丁

2)修改机器码

3)修改目标板的arch和编译器路径,

4)增加devfs文件管理器支持

5)修改晶振频率

6)修改MTD分区

7)关闭ECC校验

8)修改nandflash驱动

9)配置内核

首先,从官网上下载linux-2.6.30.4的内核。
ftp://ftp.kernel.org/pub/linux/kernel/v2.6/
可以找到。

新建目录mkdir /home/haker,将内核源码包解压到hacker/目录下

tar –zxvf linux-2.6.30.4.tar.gz

1)给内核打jaffs2补丁

下载最新的驱动http://www.aleph1.co.uk/cgi-bin/ ... fs2.tar.gz?view=tar

解压到/home/hacker/

tar –zxvf yaffs2.tar.gz

进入目录

cd yaffs2

给内核打补丁

./patch-ker.sh c /home/hacker/linux-2.6.30.4

加上c 他会自动解压到后面的目录中

成功后会打印信息:

Updating /home/hacker/linux-2.6.30.4/fs/Kconfig

Updating /home/hacker/linux-2.6.30.4/fs/Makefile

2)修改机器码

暂时我使用的是飞凌的boot,自己的boot还没有完全做好,飞凌boot的默认机器码是193,修改arch/arm/tools/mach-types,将

s3c2410 ARCH_S3C2410 S3C2410 193 删掉

然后将

s3c2440 ARCH_S3C2440 S3C2440 362

修改为
s3c2440 ARCH_S3C2440 S3C2440 193

3)修改目标板的arch和编译器路径

修改linux/2.6.30.4下的Makefile

ARCH = $(SUBARCH)

CROSS_COMPILE ?=

修改成

ARCH ?= arm

CROSS_COMPILE ?= /usr/local/arm/4.3.2/bin/arm-linux-

4)增加devfs文件管理器支持

修改fs/Kconfig,找到

menu “Pseudo filesystems”

添加

config DEVFS_FS

bool “/dev file system support (OBSOLETE)”

default y

config DEVFS_MOUNT

bool “Automatially mount at bool”

default

depends on DEVFS_FS

5)修改晶振频率

arch/arm/mach-s3c2440/mach-smdk2440.c

/*s3c24xx_init_clocks(16934400);*/ s3c24xx_init_clocks(12000000);

6)修改MTD分区,由于自己的uboot还没有完全做好,暂时用飞凌的boot的分区,

修改文件arch/arm/plat-s3c24xx/common-smdk.c

static struct mtd_partition smdk_default_nand_part[] = {

[0] = {

.name = "Boot",

.size = 0x00100000,

.offset = 0

},

[1] = {

.name = "MyApp",

.size = 0x003c0000,

.offset = 0x00140000,

},

[2] = {

.name = "Kernel",

.size = 0x00300000,

.offset = 0x00500000,

},

[3] = {

.name = "fs_yaffs",

.size = 0x03c00000, //60M

.offset = 0x00800000,

},

[4] = {

.name = "WINCE",

.size = 0x03c00000,

.offset = 0x04400000,

}

};

7)关闭ECC校验

文件drivers/mtd/nand/s3c2410.c

函数:s3c2410_nand_init_chip

/*chip->ecc.mode = NAND_ECC_SOFT; */ chip->ecc.mode = NAND_ECC_NONE;

这个有两个 软件校验和硬件校验都要关掉

8)修改nandflash驱动,修改drivers/mtd/nand下面的nand_bbt.c文件:

static struct nand_bbt_descr largepage_memorybased = {

.options = 0,

.offs = 0,

.len = 1, // 原数值为2,支持2K每页的flash修改为1K9F1G08K9F2G082k每页的flash

.pattern = scan_ff_pattern

};

static struct nand_bbt_descr largepage_flashbased = {

.options = NAND_BBT_SCAN2NDPAGE,

.offs = 0,

.len = 1, //原数值为2,支持2K每页的flash修改为1K9F1G08K9F2G082k每页的flash

.pattern = scan_ff_pattern

};

9)配置内核

make menuconfig

首先加载s3c24xx系列的通用配置,然后在此基础上修改

配置完后将配置文件保存为.config,这样方便下次make menuconfig时默认加载上次配置过的文件

交叉编译内核

make zImage

如果没有任何错误,编译出来的内核在arch/arm/boot/目录下,文件zImage即是。

相关文章:

  • Pillow  OpenCV安装
  • cassandra 3.x官方文档(3)---gossip通信协议及故障检测与恢复
  • ARM+LINUX移植攻略(八)基于busybox1.15.0的yaffs2文件系统移植TE2440II开发板
  • JDBC官方用法
  • ArcGIS API for Android 案例教程 2
  • ios 项目的.gitignore
  • HTML5标准将在2014年完成
  • mysql 性能优化方案 (转)
  • php+mysql
  • SQL SERVER 2008 的数据库还原
  • RabbitMQ配置文件
  • 查看Oracle数据库版本
  • Sequence(组合数学,集合不同元素的个数)
  • c#操作EXCEL
  • Super Mario 树状数组离线 || 线段树
  • ES6--对象的扩展
  • Git的一些常用操作
  • java架构面试锦集:开源框架+并发+数据结构+大企必备面试题
  • JS+CSS实现数字滚动
  • Linux编程学习笔记 | Linux多线程学习[2] - 线程的同步
  • mockjs让前端开发独立于后端
  • 百度贴吧爬虫node+vue baidu_tieba_crawler
  • 纯 javascript 半自动式下滑一定高度,导航栏固定
  • 关于字符编码你应该知道的事情
  • 欢迎参加第二届中国游戏开发者大会
  • 理解 C# 泛型接口中的协变与逆变(抗变)
  • 罗辑思维在全链路压测方面的实践和工作笔记
  • 区块链技术特点之去中心化特性
  • 使用docker-compose进行多节点部署
  • 思考 CSS 架构
  • 想晋级高级工程师只知道表面是不够的!Git内部原理介绍
  • 在electron中实现跨域请求,无需更改服务器端设置
  • ​马来语翻译中文去哪比较好?
  • # 达梦数据库知识点
  • # 数据结构
  • #pragma pack(1)
  • (1)(1.9) MSP (version 4.2)
  • (C语言)求出1,2,5三个数不同个数组合为100的组合个数
  • (Matlab)基于蝙蝠算法实现电力系统经济调度
  • (第27天)Oracle 数据泵转换分区表
  • (第9篇)大数据的的超级应用——数据挖掘-推荐系统
  • (附源码)计算机毕业设计ssm本地美食推荐平台
  • (区间dp) (经典例题) 石子合并
  • (三)mysql_MYSQL(三)
  • (十五)Flask覆写wsgi_app函数实现自定义中间件
  • (四)Linux Shell编程——输入输出重定向
  • (原+转)Ubuntu16.04软件中心闪退及wifi消失
  • (转)fock函数详解
  • (转)Sublime Text3配置Lua运行环境
  • *p=a是把a的值赋给p,p=a是把a的地址赋给p。
  • *setTimeout实现text输入在用户停顿时才调用事件!*
  • .NET Remoting学习笔记(三)信道
  • .net 怎么循环得到数组里的值_关于js数组
  • .net2005怎么读string形的xml,不是xml文件。
  • .NetCore Flurl.Http 升级到4.0后 https 无法建立SSL连接