mini2440 移植Linux2.6.30.10 及yaffs2文件系统

发布者:自由漫步最新更新时间:2024-06-28 来源: elecfans关键字:mini2440  移植  Linux2  6 手机看文章 扫描二维码
随时随地手机看文章

究了四天linux内核移植和文件系统制作,总算移植成功,在这里和大家分享一下,我是一个初学者,有不对的地方,请大家指点。

一,准备工作
1,内核版本:2.6.30.10
busybox 1.13.0
编译器:arm-linux-3.4.1
文件系统:yaffs2
平台:mini2440
2,移植linux
1)Linux 2.6.30.10的下载地址:
http://www.kernel.org/

2)yaffs2文件系统的下载地址:
http://www.aleph1.co.uk/cgi-bin/viewcvs.cgi/
点击Download GNU tarball,下载cvs-root.tar.gz
3)busybox的下载地址:
http://www.linuxidc.com/Linux/2011-02/32615.htm
我用的是busybox-1.13.0.tar.bz2
4)下载mkyaffs2image
http://www.linuxidc.net/thread-2226-1-1.html

二、移植内核
1,解压内核源码包
# tar jxvf linux-2.6.30.10.tar.bz2 -C /opt/FriendlyARM/mini2440/

2,进入内核目录
# cd /opt/FriendlyARM/mini2440/linux-2.6.30.10

3,修改顶层Makefile
# gedit Makefile
在193行
ARCH ?= $(SUBARCH)
CROSS_COMPILE ?=
修改为
ARCH ?=arm
CROSS_COMPILE ?=arm-linux-

4,修改机器码
# gedit arch/arm/tools/mach-types
在379行
s3c2440 ARCH_S3C2440 S3C2440 362
修改为
s3c2440 ARCH_S3C2440 S3C2440 782
与supervivi传入的机器码参数一致即可!

5,修改时钟频率
# gedit arch/arm/mach-s3c2440/mach-smdk2440.c
在160行

static void __init smdk2440_map_io(void)
{
s3c24xx_init_io(smdk2440_iodesc, ARRAY_SIZE(smdk2440_iodesc));
//s3c24xx_init_clocks(16934400); //注释这句,加入下一句
s3c24xx_init_clocks(12000000);
s3c24xx_init_uarts(smdk2440_uartcfgs, ARRAY_SIZE(smdk2440_uartcfgs));
}

6,修改Nand Flash分区
# gedit arch/arm/plat-s3c24xx/common-smdk.c
在109行

static struct mtd_partition smdk_default_nand_part[] = {
[0] = {
.name = 'supervivi',
.size = 0x00030000,
.offset = 0,
},
[1] = {
.name = 'Kernel',
.offset = 0x00050000,
.size = 0x00200000,
},
[2] = {
.name = 'root',
.offset = 0x00250000,
.size = 0x03dac000,
}
};

7,加入对yaffs2文件系统的支持

1,解压yaffs2文件系统源码包
# tar zxvf cvs-root.tar.gz -C /opt/FriendlyARM/mini2440/

2,进入yaffs2源码目录
# cd /opt/FriendlyARM/mini2440/cvs/yaffs2

3,打补丁
# ./patch-ker.sh c ../../linux-2.6.30.10
Updating ../../linux-2.6.30.10/fs/Kconfig
Updating ../../linux-2.6.30.10/fs/Makefile

8,配置内核
# cp arch/arm/configs/s3c2410_defconfig .config
# make menuconfig
1,机器类型只选以下三项:

System Type ---> S3C2410 Machines ---> [*] SMDK2410/A9M2410
S3C2440 Machines ---> [*] SMDK2440
[*] SMDK2440 with S3C2440 CPU module

2,我用得编译器是3.4.1没有配置Kernel Feature


3,File systems ---> [*] Miscellaneous filesystems ---> <*> YAFFS2 file system support

4,Boot options-
noinitrd root=/dev/mtdblock2 init=/linuxrc console=ttySAC0

9,重新编译内核
# make zImage
注意:如果是重新编译内核需要遵守以下步骤:
1、make dep
make dep的意思就是说:如果你使用程序A(比如支持特殊设备),而A需用到B(比如B是A的一 个模块/子程序)。而你在做 make config的时候将一个设备的驱动 由内核支持改为module,或取消支持,这将可能影响到B的一个参数的设置,需重新编译B,重新编译或连接A....如果程序数量非常多, 你是很难手工完全做好此工作的。make dep实际上读取配置过程生成的配置文件,来创建对应于配置的依赖关系树,从而决定哪些需要编译而那些不需要编译。所以,你要make dep。
2、make clean
清除一些以前留下的文件,比如以前编译生成的目标文件,这一步必须要进行。否则,即使内核配置改动过,编译内核时还是将原来生成的目标文件进行连接,而不生成改动后的文件。
3、make zImage
Linux内核有两种映像:一种是非压缩内核,叫 Image,另一种是它的压缩版本,叫zImage。根据内核映像的不同,Linux内核的启动在开始阶段也有所不同。zImage是Image经过压缩形成的,所以它的大小比 Image小。但为了能使用zImage,必须在它的开头加上解压缩的代码,将 zImage解压缩之后才能执行,因此它的执行速度比Image要慢。但考虑到嵌入式系统的存储空容量一般比较小,采用zImage可以占用较少的存储空间,因此牺牲一点性能上的代价也是值得的,所以一般的嵌入式系统均采用压缩内核的方式。
编译完成后,会在内核目录arch/arm/boot/下生成zImage内核映像文件。


关键字:mini2440  移植  Linux2  6 引用地址:mini2440 移植Linux2.6.30.10 及yaffs2文件系统

上一篇:mini2440 实现u-boot的usb slave下载功能
下一篇:成功移植DHCP客户端到mini2440

推荐阅读最新更新时间:2026-03-20 16:47

u-boot-2009.08在mini2440上的移植 增加yaffs2文件系统
移植环境 1,主机环境:VMare下CentOS 5.5 ,1G内存。 2,集成开发环境:Elipse IDE 3,编译编译环境:arm-linux-gcc v4.4.3,arm-none-eabi-gcc v4.5.1。 4,开发板:mini2440,2M nor flash,128M nand flash。 5,u-boot版本:u-boot-2009.08 5.1,添加Yaffs2镜像烧写功能 由于现在很多使用Nand Flash 的系统,在Linux 下都用Yaffs2作为存储数据的文件系统,甚至是根文件系统。所以在BootLoader 下能够烧写Yaffs2 映像文件变得很必要。对于Yaffs2 映像烧写的支持其实
[单片机]
制作yaffs2文件系统移植到ok6410开发板上
1.解压: tar -jxvf yaffs_source_util_larger_small_page_nand.tar.bz2 生成了一个 文件夹 第2、3步的前提是你内核里不支持yaffs2文件系统,及在内核/fs/下没有一个yaffs2目录。 2.拷贝 文件夹至Kernel根目录下的 文件夹下: cp yaffs2 /usr/src/linux-2.6.36/fs/ 3.操作: ./patch-ker.sh c /usr/src/linux-2.6.36/ 上面命令完成下面三件事: (1) 修改内核fs/Kconfig 增加一行:source fs/yaffs2/Kconfig (2) 修改内核fs/Kconfi
[单片机]
Ubuntu 11.10移植 madplay 到 mini2440
今天为了学习移植madplay 花了半天时间,多亏了有丰富的网络资源才让我在一个又一个问题中得到解决的方法。 逛街回来后,马上在 Ubuntu 11.10 下进行madplay 对mini2440的移植,由于有了早上移植madplay的经验之后,晚上的移植工作做得还是比较顺手。 1、解压源代码包 # cd tarball # for f in $(ls *.tar.gz); do tar -zxvf $f –C ../src-arm; done 2、编译madplay及其所依赖的库文件 (1)设定编译器环境变量 在ubuntu命令行下输入 # export CC=arm-linux-gcc (2)编译zlib,因为libid3ta
[单片机]
linux-2.6.32在mini2440开发板上移植 移植UDA1341 音频驱动
1 在初始化文件中加入UDA1341 设备结构 Linux-2.6.32.2 已经完美的支持UDA1341 音频芯片的驱动, 我们只要在arch/arm/mach-s3c2440/mach-mini2440.c 文件中注册UDA1341 平台设备的控制端口就可以了,打开mach-mini2440.c,添加如下内容: ;在文件首部添加头文件 #include sound/s3c24xx_uda134x.h ;在LCD 平台设备后面添加UDA1341 设备结构 static struct s3c24xx_uda134x_platform_data s3c24xx_uda134x_data = { .l3_clk =
[单片机]
linux-2.6.32在mini2440开发板上移植 SD卡驱动移植
编者:这个驱动还是比较复杂的,先移植着,以后在分析吧。 SD卡驱动移植 1 在内核中注册SD 设备驱动 Linux-2.6.32.2 已经自带了S3C2440 芯片的SD 卡驱动,我们只需在初始化代码中加入SD 平台设备结构就可以,打开arch/arm/mach-s3c2440/mach-mini2440.c,在nand flash 平台结构后面添加如下红色代码: ;在mini2440.c 的顶部添加SD 卡设备结构所需的头文件 #include linux/mmc/host.h #include plat/mci.h static struct platform_device mini2440_device_eth = { .n
[单片机]
u-boot-2011.03在mini2440/micro2440上的移植 支持Nand Flash
5.1 添加s3c2440_nand.c $ touch drivers/mtd/nand/s3c2440_nand.c $ cat drivers/mtd/nand/s3c2440_nand.c #include common.h #if 0 #define DEBUGN printf #else #define DEBUGN(x, args ...) {} #endif #include nand.h #include asm/arch/s3c24x0_cpu.h #include asm/io.h #define __REGb(x) (*(volatile unsigned char *)(x)) #define
[单片机]
u-boot-2011.03在<font color='red'>mini2440</font>/micro2440上的<font color='red'>移植</font> 支持Nand Flash
成功移植DHCP客户端到mini2440
1,下载源码:http://gd.tuwien.ac.at/infosys/servers/isc/dhcp/ ,选中 dhcp-3.1.3.tar.gz; 2,解压 tar -zxvf dhcp-3.1.3.tar.gz,然后进入./dhcp-3.1.3/,运行配置./configure,之后生成work.linux-2.2文件夹,进入work.linux-2.2/client/,输入make CC=arm-linux-gcc -static ,将编译生成dhclient。 3,拷贝生成的dhclient到mini2440开发板上,为方便使用,可以放在/usr/bin/下;拷贝另外两个配置文件到开发板,分别是 /dhcp-
[单片机]
Sqlite移植mini2440
一、开发环境: Mini2440, Linux_2.6.32.2内核, Fedora 9 arm-linux-gcc-4.3.3 二、移植步骤 下载源码 http://www.sqlite.org/sqlite-autoconf-3070701.tar.gz 为3.7.7.1版 1.解压数据库源文件并进入解压后的目录,如下: tar -zxvf sqlite-autoconf-3070701.tar.gz cd sqlite-autoconf-3070701 2.创建一个目录build并进入该目录,用于在这个目录中进行交叉编译,如下: mkdir build cd build 3.在build目录中运行sqlite-au
[单片机]
小广播
最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

厂商技术中心

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

 
机器人开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2026 EEWORLD.com.cn, Inc. All rights reserved