Linux内核移植简记
2012-02-15 21:42
260 查看
***************************************************************
Linux:2.6.30.4
编译器:4.3.3
硬件平台:S3C2440
***************************************************************
1.下载Linux内核 ftp://ftp.kernel.org/pub/linux/kernel/ ------>V2.6(文件夹)------>linux-2.6.30.4.tar.gz 或者(linux-2.6.30.4.tar.bz2)
2.解压Linux内核
tar -zxvf linux-2.6.30.4.tar.gz -C /目录
或者 tar xvfj linux-2.6.30.4.tar.bz2 -C /目录
3.添加对arm的支持
修改解压后linux源码包中的Makefile文件,(约193行) 修改为:
ARCH = arm
CROSS_COMPILE = arm-linux-
4.修改arm的运行时钟(个人觉得不改可能会影响与时钟参数有关设备,如串口等)
修改 arch/arm/mach-s3c2440/mach-smdk2440.c 文件中第163行 修改为:
s3c24xx_init_clocks(12000000); (原始值为:16934400)
5.修改系统配置
make menuconfig 弹出配置菜单项(需要启动编译器支持功能:source /etc/profile (需先配置profile文件))
5.1 选择“Load an Alternate Configuration File”---> Enter
.config---修改为--->arch/arm/configs/s3c2410_defconfig (添加s3c2440 的默认配置) --->退出到主菜单
5.2 选择“System Type”--->
S3C2440 Machines--->配置如下
[ ]Simtec Electronic ANUBIS
[ ]Simtec IM2440D20(OSIRIS)module
[ ]HP iPAQ rx3715
[*]SMDK 2440
[ ]NexVision NEXCODER 2440 Light Board
[*]SMDK2440 With S3C2440 CPU Module
[ ]Avantech AT2440EVB development Board
5.3 选择“General Setup”--->配置如下
(-EmbedSky)Local version -append to kernel release(天嵌出的驱动模块在加载时会校验该信息)
(17)kernel log buffer size
5.4 选择“Kernel Feature”--->配置如下(编译器是4.3.3的版本需要添加,低版本不需添加配置)
[*]USE the ARM EABI to Compile the kernel
[*]Allow old ABI binaries to run with this kern(EXPERIMENTAL)(NEW)
[ ]Add LRU List to track non-evictable pages
5.5 选择“Device Drivers”--->配置如下 (修改NandFlash配置,其他驱动先不管)
<*> Memory Technology Device(MTD)Support------>
< >RedBoot partition table parsing
[ ]Command line partition table parsing
<*>NAND Device Support ------>
[ ]S3C2440 NAND Hardware ECC (有的资料建议选择该项,这里先不先Flash校验)
5.6 选择“Save an Alternate Configuration File”------>
保存为 .config文件,保存后退出。
6.修改机器码
修改arch/arm/tools/mach-types文件中的第379行,修改后如下(将原始值362修改为168)
S3C2440 ARCH_S3C2440 S3C2440 168
注:这里需要将机器码修改和U-boot中的机器码一样,也可将U-boot中修改和这里的一样
7.修改Flash配置
修改 arch/arm/plat-s3c24xx/common-smdk.c (约109行)
static struct mtd-patition smdk_default_nand_part[ ]={
[0] = { .name = "U-Boot",
.size = 0x00040000,
.offset = 0, }
[1] = { .name = "Kernel",
.size = 0x00300000,
.offset = 0x00200000, }
[2] = { .name = "yaffs2",
.size = MTDPART_SIZ_FULL, //默认是剩余空间
.offset = 0x00500000, }
} //注:空间分配也可自己定义 [3]\[4]\[5]\[6]\[7]几项可以删除
修改 NandFlash操作时间,时间可以自己设定(这项可以不改) (约165行)
8.修改软件中的NandFlash校验设置
修改 drivers/mtd/nand/s3c2410.c (约 752行) 修改为
chip-ecc.mode = NAND_ECC_NONE; //原始值 NAND_ECC_SOFT;
9.编译内核
make zImage
之后会在arch/arm/boot目录下面生成 zImage
到此可以编译支持S3C2440处理器的基本内核(不带驱动,不支持yaffs2文件系统)。
---------------------------------------------------------------------------------------------------------------------------------
以下是添加Linux对yaffs2文件系统的支持功能
1.下载yaffs2补丁包
下载 CVS-root.tar.gz------>解压 tar xvfz cvs-root.tar.gz--->进入解压后的文件,进入到 yaffs2 文件夹下执行
./patch-ker.sh c /linux安装目录下面
执行后在Linux的fs目录下发现多了yaffs2目录,同时fs下面的Kconfig和Makefile文件中添加了对yaffs2的支持
2.配置Linux对文件系统的支持
make menuconfig
File System---> 配置如下
< >second Extended fs support
< >Ext3 journalling file system support
< >Kernel automounter support
< >Kernel automounter version (aslo supports V3)
< >FUSE (Filesystem in Userspace) support
CD-ROM/DVD Filesystem------>
[ ] Microsoft Joliet CDROM extensions
< >UDF file system support
DOS/FAT/NT Filesystems------>
< >NTFS file system support
Pseudo filesystems------>
[ ]Tmpfs POSIX Access Control Lists
<*>Userspace-driven configuration filesystem
<*> Miscellaneous filesystems------>
<*> YAFFS2 file system support(NEM)
[ ]Cache short names in RAM (NEW)
-*- Native Language support
<*> Simplified Chinese charset (CP936,GB2312)
<*>NLS UTF-8
保存设置 “Save an Alternate Configuration File”------>保存为 .config 文件
make zImage
即可生成支持 YAFFS2文件系统的Linux内核了!
Linux:2.6.30.4
编译器:4.3.3
硬件平台:S3C2440
***************************************************************
1.下载Linux内核 ftp://ftp.kernel.org/pub/linux/kernel/ ------>V2.6(文件夹)------>linux-2.6.30.4.tar.gz 或者(linux-2.6.30.4.tar.bz2)
2.解压Linux内核
tar -zxvf linux-2.6.30.4.tar.gz -C /目录
或者 tar xvfj linux-2.6.30.4.tar.bz2 -C /目录
3.添加对arm的支持
修改解压后linux源码包中的Makefile文件,(约193行) 修改为:
ARCH = arm
CROSS_COMPILE = arm-linux-
4.修改arm的运行时钟(个人觉得不改可能会影响与时钟参数有关设备,如串口等)
修改 arch/arm/mach-s3c2440/mach-smdk2440.c 文件中第163行 修改为:
s3c24xx_init_clocks(12000000); (原始值为:16934400)
5.修改系统配置
make menuconfig 弹出配置菜单项(需要启动编译器支持功能:source /etc/profile (需先配置profile文件))
5.1 选择“Load an Alternate Configuration File”---> Enter
.config---修改为--->arch/arm/configs/s3c2410_defconfig (添加s3c2440 的默认配置) --->退出到主菜单
5.2 选择“System Type”--->
S3C2440 Machines--->配置如下
[ ]Simtec Electronic ANUBIS
[ ]Simtec IM2440D20(OSIRIS)module
[ ]HP iPAQ rx3715
[*]SMDK 2440
[ ]NexVision NEXCODER 2440 Light Board
[*]SMDK2440 With S3C2440 CPU Module
[ ]Avantech AT2440EVB development Board
5.3 选择“General Setup”--->配置如下
(-EmbedSky)Local version -append to kernel release(天嵌出的驱动模块在加载时会校验该信息)
(17)kernel log buffer size
5.4 选择“Kernel Feature”--->配置如下(编译器是4.3.3的版本需要添加,低版本不需添加配置)
[*]USE the ARM EABI to Compile the kernel
[*]Allow old ABI binaries to run with this kern(EXPERIMENTAL)(NEW)
[ ]Add LRU List to track non-evictable pages
5.5 选择“Device Drivers”--->配置如下 (修改NandFlash配置,其他驱动先不管)
<*> Memory Technology Device(MTD)Support------>
< >RedBoot partition table parsing
[ ]Command line partition table parsing
<*>NAND Device Support ------>
[ ]S3C2440 NAND Hardware ECC (有的资料建议选择该项,这里先不先Flash校验)
5.6 选择“Save an Alternate Configuration File”------>
保存为 .config文件,保存后退出。
6.修改机器码
修改arch/arm/tools/mach-types文件中的第379行,修改后如下(将原始值362修改为168)
S3C2440 ARCH_S3C2440 S3C2440 168
注:这里需要将机器码修改和U-boot中的机器码一样,也可将U-boot中修改和这里的一样
7.修改Flash配置
修改 arch/arm/plat-s3c24xx/common-smdk.c (约109行)
static struct mtd-patition smdk_default_nand_part[ ]={
[0] = { .name = "U-Boot",
.size = 0x00040000,
.offset = 0, }
[1] = { .name = "Kernel",
.size = 0x00300000,
.offset = 0x00200000, }
[2] = { .name = "yaffs2",
.size = MTDPART_SIZ_FULL, //默认是剩余空间
.offset = 0x00500000, }
} //注:空间分配也可自己定义 [3]\[4]\[5]\[6]\[7]几项可以删除
修改 NandFlash操作时间,时间可以自己设定(这项可以不改) (约165行)
8.修改软件中的NandFlash校验设置
修改 drivers/mtd/nand/s3c2410.c (约 752行) 修改为
chip-ecc.mode = NAND_ECC_NONE; //原始值 NAND_ECC_SOFT;
9.编译内核
make zImage
之后会在arch/arm/boot目录下面生成 zImage
到此可以编译支持S3C2440处理器的基本内核(不带驱动,不支持yaffs2文件系统)。
---------------------------------------------------------------------------------------------------------------------------------
以下是添加Linux对yaffs2文件系统的支持功能
1.下载yaffs2补丁包
下载 CVS-root.tar.gz------>解压 tar xvfz cvs-root.tar.gz--->进入解压后的文件,进入到 yaffs2 文件夹下执行
./patch-ker.sh c /linux安装目录下面
执行后在Linux的fs目录下发现多了yaffs2目录,同时fs下面的Kconfig和Makefile文件中添加了对yaffs2的支持
2.配置Linux对文件系统的支持
make menuconfig
File System---> 配置如下
< >second Extended fs support
< >Ext3 journalling file system support
< >Kernel automounter support
< >Kernel automounter version (aslo supports V3)
< >FUSE (Filesystem in Userspace) support
CD-ROM/DVD Filesystem------>
[ ] Microsoft Joliet CDROM extensions
< >UDF file system support
DOS/FAT/NT Filesystems------>
< >NTFS file system support
Pseudo filesystems------>
[ ]Tmpfs POSIX Access Control Lists
<*>Userspace-driven configuration filesystem
<*> Miscellaneous filesystems------>
<*> YAFFS2 file system support(NEM)
[ ]Cache short names in RAM (NEW)
-*- Native Language support
<*> Simplified Chinese charset (CP936,GB2312)
<*>NLS UTF-8
保存设置 “Save an Alternate Configuration File”------>保存为 .config 文件
make zImage
即可生成支持 YAFFS2文件系统的Linux内核了!
相关文章推荐
- Linux内核移植 part1:Exynos 4412 uboot 调试
- Linux内核移植 part2:uboot设备树--生成过程分析
- Uboot移植,Linux内核裁减及根文件系统定制
- Linux内核移植之刨根问底
- linux内核的移植
- <2012 12 06> FL2440开发板的U-boot-2010.09版本移植(十一)U-boot引导内核设置、编译linux内核、编译文件系统、加载...
- linux内核配置编译移植(基于x86的)
- Linux内核版本和系统启动过程以及具体内核移植和根文件系统的制作
- 移植Linux内核(2.6.30.4)和文件系统到mini2440(Nand Flash 256M)
- Linux内核移植
- Linux内核移植和根文件系统制作(详细步骤精讲)
- linux内核移植关键结构
- Linux内核中DM8168的网口驱动移植
- 为linux内核添加新驱动,并添加到menuconfig菜单【实践简记】
- linux内核移植到mini2440:
- linux内核移植笔记
- Linux内核移植(1)
- Linux内核移植 part1:Exynos4412时钟模块以及UART时钟配置
- 【嵌入式Linux学习七步曲之第三篇 Linux系统bootlaoder移植】U-BOOT全线移植分析系列之四--U-boot如何引导Linux内核启动?
- linux内核移植的问题