linux2.6.34在S3C2440移植1——内核移植
来源:互联网 发布:hits算法的python实现 编辑:程序博客网 时间:2024/06/03 22:40
一、环境平台介绍
1、内核kernel环境:vivilinux-2.6.34 交叉编译器arm-cross4.3.2-EABI(软浮点运算)
2、yaffs文件系统源码包
二、编译过程
0、从lwww.kernel.org下载linux2.6.34内核,解压linux-2.6.34.tar.gz2源码包
1、修改vivi/Makefile文件,在makefile中找到以下两条信息并做修改
ARCH ? =arm
CROSS_COMPILE ?=/usr/local/arm/4.3.2/bin/arm-linux-
2、修改平台输入时钟
修改平台的时钟频率,修改内核源码“arch/arm/mach-s3c2440/mach-smdk2440.c”
把时钟初始化中(S3C24XX_init_clocks(16934400 ))的16934400 改为12000000,因为我们的开发板上为12M
3、修改机器类型ID号
bootloader启动内核时,会传递机器类型ID进来,这里需根据bootloadr传进的ID修改内核ID号
在内核源码的“arch/arm/tools/mach-types”文件查找S3C2440,这里刚好与我们的bootloader相同,所以不用做修改,直接保存退出即可,如果不同则根据bootloader的内容修改此文件,或根据此文件修改boorloader的内容(在vivi中可通过param show查看)。
4、解压yaffs.tar.gz2源码包,进入yaffs2文件夹,给内核打上补丁使内核支持yaffs2
# ./ patch-ker.sh c /home/linux-2.6.34
5、修改内核mtd分区和bootloader(vivi)使其一致
编辑文件arch/arm/plat-s3c24xx/common-smdk.c ,按照以下文件修改,多余的选项删掉
static struct mtd_partition smdk_default_nand_part[] =
{
[0] = {
.name = "vivi",
.size = 0x00030000,
.offset = 0,
},
[1] = {
.name = "kernel",
.offset = 0x00050000,
.size = 0x00300000,
},
[2] = {
.name = "rootfs",
.offset = 0x00350000,
.size = 0x03cac000,
}
};
6、修改文件drivers/mtd/nand/s3c2410.c
将s3c2410_nand_init_chip函数里的NAND_ECC_SOFT改为NAND_ECC_NONE(因为在内核中默认配置不支持ECC校验,当然也可以在内核配置时选中ECC选项)
7、到llinux-2.6.30目录下执行命令
#cp arch/arm/configs/s3c2410_defconfig .config
8、执行make menuconfig,并对选项进行配置
1)System Type --->
S3C2440 and S3C2442 machines --->
仅保留SMDK2440 与SMDK2440 whith S3C2440 CPU module两个选项,将其他的选项全部勾掉
2)Kernel Features --->
[*]Use the arm EABI to compile the kernel(选中该选项)
3)File systems --->
a、把与ext2 ext3 ext4相关的所有选项全部去掉(可选)
b、Miscellaneous filesystems --->
<*>yaffs2 file system support(选中此选项)
c、去除所有与jffs2相关的选项(可选)
保存退出
9、编译
make zImage,在arch/arm/boot下生成编译好的可执行程序
- linux2.6.34在S3C2440移植1——内核移植
- linux2.6.30内核移植到S3C2440——CS8900网卡移植
- 移植linux2.6.25内核到s3c2440详解
- linux内核移植 移植linux2.6.25内核到s3c2440详解
- linux2.6.32 内核移植s3c2440 - DM9000网卡驱动移植
- S3C2440上移植内核之编译Linux2.6.31出现问题
- S3C2440 linux2.6.31移植总结
- Linux2.6.24内核移植
- linux内核移植 s3c2440
- 为S3C2440移植内核
- 移植内核到s3c2440
- ARM-Linux内核移植之(二)——Linux2.6.22内核移植 .
- ARM-Linux内核移植之(二)——Linux2.6.22内核移植
- Linux2.6.14.1内核移植手记
- Linux2.6.39在S3C2440上的移植(三)dm9k驱动的移植
- ARM-Linux移植之(二)——Linux2.6.22内核移植
- S3C2440 linux2.6.32.2 tslib1.4 移植
- TQ2440内核linux2.6.28移植
- 3月8日
- 求助
- matlab中的save使用
- android获取真实分辨率
- 生成COM Dll的tlb文件的两种方法
- linux2.6.34在S3C2440移植1——内核移植
- QT和CSS
- linux下openssl-1.0.0c编写openssl服务器和客户端
- [转]u-boot-2010.12移植到2440(二,移植在RAM中运行)
- android 止横屏和竖屏
- [转]u-boot-2010.12移植到2440(二,移植在RAM中运行)
- [转]u-boot-2010.12移植到2440(二,移植在RAM中运行)
- 一步一步地实现菜单栏(JMenuBar)工具栏(JPopupMenu)组合框(JComboBox)复选框(JCheckBox)单选按钮(JRadioButton)文本域的综合应用(二)
- 名字修饰与调用约定