编译该版本内核使用的编译器版本:arm-linux-gcc 3.4.1

1.获取linux-2.6.32.2

2.解压内核

3.切换到刚解压的内核目录下:

cd linux-2.6.32.2

4.修改Makefile

将以下内容修改:

修改前:

ARCH            ?= $(SUBARCH)
CROSS_COMPILE   ?=
修改后:

ARCH            ?= arm
CROSS_COMPILE   ?= arm-linux-

5.使用以下命令生成.config

make s3c2410_defconfig

6.修改平台输入时钟,由于qq2440的输入时钟为12MHz的无源晶振,故修改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(16934400);
        s3c24xx_init_uarts(smdk2440_uartcfgs, ARRAY_SIZE(smdk2440_uartcfgs));
}
修改后:

static void __init smdk2440_map_io(void)
{
        s3c24xx_init_io(smdk2440_iodesc, ARRAY_SIZE(smdk2440_iodesc));
        s3c24xx_init_clocks(12000000);//修改了原来的数据为12000000
        s3c24xx_init_uarts(smdk2440_uartcfgs, ARRAY_SIZE(smdk2440_uartcfgs));
}
7.修改mtd分区信息,修改arch/arm/plat-s3c24xx/common-smdk.c文件的以下内容:

修改前:

static struct mtd_partition smdk_default_nand_part[] = {
        [0] = {
                .name   = "Boot Agent",
                .size   = SZ_16K,
                .offset = 0,
        },
        [1] = {
                .name   = "S3C2410 flash partition 1",
                .offset = 0,
                .size   = SZ_2M,
        },
        [2] = {
                .name   = "S3C2410 flash partition 2",
                .offset = SZ_4M,
                .size   = SZ_4M,
        },
        [3] = {
                .name   = "S3C2410 flash partition 3",
                .offset = SZ_8M,
                .size   = SZ_2M,
        },
 [4] = {
                .name   = "S3C2410 flash partition 4",
                .offset = SZ_1M * 10,
                .size   = SZ_4M,
        },
        [5] = {
                .name   = "S3C2410 flash partition 5",
                .offset = SZ_1M * 14,
                .size   = SZ_1M * 10,
        },
        [6] = {
                .name   = "S3C2410 flash partition 6",
                .offset = SZ_1M * 24,
                .size   = SZ_1M * 24,
        },
        [7] = {
                .name   = "S3C2410 flash partition 7",
                .offset = SZ_1M * 48,
                .size   = SZ_16M,
        }
};

修改后:

static struct mtd_partition smdk_default_nand_part[] = {
        [0] = {
                .name   = "Bootloader",
                .size   = 0x00000000,
                .offset = 0x00030000,
        },
        [1] = {
                .name   = "Kernel",
                .offset = 0x00050000,
                .size   = 0x00200000,
        },
        [2] = {
                .name   = "Root",
                .offset = 0x00250000,
                .size   = 0x03dac000,
        }

};

8.修改s3c2440的机器码,修改arch/arm/tools/mach-types文件的内容如下:

修改前:

s3c2440                 ARCH_S3C2440            S3C2440                 362

修改后:

s3c2440                 ARCH_S3C2440            S3C2440                 782

9.给内核打yaffs2文件系统的补丁,这样就可以让内核支持yaffs2文件系统

9.1从git仓库获取yaffs2源码,获取源码的命令如下:

git clone git://www.aleph1.co.uk/yaffs2

9.2将内核补丁插入内核,使用如下方法:

 a.先进入yaffs2目录下:

  cd yaffs2

 b.yaffs2目录下有一个脚本patch-ker.sh,那么执行该脚本即可:

  ./patch-ker.sh ./patch-ker.sh c m ../linux-2.6.32.2

10.内核配置:

使用以下命令进行配置操作:

make menuconfig

需要修改的配置项如下:

10.1[*] Enable loadable module support  --->

    [*]   Forced module loading                             
    [*]   Module unloading

10.2System Type  --->

    S3C2410 Machines  --->

      [*] SMDK2410/A9M2410 ,该条目下的其他都不选

    S3C2440 Machines  --->

      [*] SMDK2440

      [*] SMDK2440 with S3C2440 CPU module,该条目下的其他都不选

    其余Machines选项下的条目均不选(不选的有s3c2400,s3c2412,s3c2442,s3c2443)

10.3Boot options  --->

    noinitrd root=/dev/mtdblock2 init=/linuxrc console=ttySAC0

10.4Userspace binary formats  --->

     [*] Kernel support for ELF binaries,其余选项均不选

10.5File systems  --->

      [*] Miscellaneous filesystems  --->

        <*>   yaffs2 file system support

        [*]         Lets yaffs do its own ECC

10.6-*- Native language support  --->

      <*>   Codepage 437 (United States, Canada)

      <*>   Simplified Chinese charset (CP936, GB2312)

      <*>   Traditional Chinese charset (Big5)

      <*>   NLS ISO 8859-1  (Latin 1; Western European Languages)

      <*>   NLS UTF-8

11.开始编译内核:

make zImage -j5

11.1出错如下:

In file included from fs/yaffs2/yaffs_guts.c:18:
fs/yaffs2/yaffs_endian.h:32: error: parse error before "swap_loff_t"
fs/yaffs2/yaffs_endian.h:32: error: parse error before "lval"
fs/yaffs2/yaffs_endian.h:33: warning: return type defaults to `int'
fs/yaffs2/yaffs_endian.h:33: warning: function declaration isn't a prototype
fs/yaffs2/yaffs_endian.h: In function `swap_loff_t':
fs/yaffs2/yaffs_endian.h:34: error: `lval' undeclared (first use in this function)
fs/yaffs2/yaffs_endian.h:34: error: (Each undeclared identifier is reported only once
fs/yaffs2/yaffs_endian.h:34: error: for each function it appears in.)
fs/yaffs2/yaffs_endian.h:37: error: `Y_LOFF_T' undeclared (first use in this function)
fs/yaffs2/yaffs_endian.h:38: error: parse error before "vall"
fs/yaffs2/yaffs_endian.h:38: warning: statement with no effect
  CC      fs/proc/uptime.o
make[2]: *** [fs/yaffs2/yaffs_guts.o] 错误 1
make[2]: *** 正在等待未完成的任务....
  CC      fs/proc/version.o
In file included from fs/yaffs2/yaffs_checkptrw.c:16:
fs/yaffs2/yaffs_endian.h:32: error: parse error before "swap_loff_t"
fs/yaffs2/yaffs_endian.h:32: error: parse error before "lval"
fs/yaffs2/yaffs_endian.h:33: warning: return type defaults to `int'
fs/yaffs2/yaffs_endian.h:33: warning: function declaration isn't a prototype
fs/yaffs2/yaffs_endian.h: In function `swap_loff_t':
fs/yaffs2/yaffs_endian.h:34: error: `lval' undeclared (first use in this function)
fs/yaffs2/yaffs_endian.h:34: error: (Each undeclared identifier is reported only once
fs/yaffs2/yaffs_endian.h:34: error: for each function it appears in.)
fs/yaffs2/yaffs_endian.h:37: error: `Y_LOFF_T' undeclared (first use in this function)
fs/yaffs2/yaffs_endian.h:38: error: parse error before "vall"
fs/yaffs2/yaffs_endian.h:38: warning: statement with no effect
make[2]: *** [fs/yaffs2/yaffs_checkptrw.o] 错误 1
make[1]: *** [fs/yaffs2] 错误 2
make[1]: *** 正在等待未完成的任务....

对策:看来不能使用最新的yaffs2,因此从另一个内核linux-2.35.7将fs/yaffs2文件夹的内容都复制到linux-2.6.32.2/fs/中

移植linux-2.6.32.2到qq2440的更多相关文章

  1. 查看linux机器是32位还是64位的方法

    file /sbin/init 或者 file /bin/ls/sbin/init: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dyna ...

  2. 如何查看linux系统是32位还是64位

    1.#uname -a 如果有x86_64就是64位的,没有就是32位的 这是64位的  # uname -a  Linux desktop 2.6.35-23-generic #37-Ubuntu ...

  3. 查看linux库文件32位还是64位

    查看linux库文件32位还是64位 分类: linux2014-09-25 09:46 238人阅读 评论(0) 收藏 举报 objdump -a  *.a objdump -a  *.so

  4. 为AM335x移植Linux内核主线代码

    /********************************************************************** * 为AM335x移植Linux内核主线代码 * 说明: ...

  5. linux内核学习之三:linux中的"32位"与"64位"

    在通用PC领域,不论是windows还是linux界,我们都会经常听到"32位"与"64位"的说法,类似的还有"x86"与"x86 ...

  6. 引用 移植Linux到s3c2410上

    引用 bsky 的 移植Linux到s3c2410上来源:http://www.embed.com.cn/downcenter/Article/Catalog12/4000.htm 移植Linux到s ...

  7. linux中的"32位"与"64位"

    linux内核学习之三:linux中的"32位"与"64位" 在通用PC领域,不论是windows还是linux界,我们都会经常听到"32位" ...

  8. 【故障•监听】TNS-12518、TNS-00517和 Linux Error:32:Broken pipe

    [故障|监听]TNS-12518.TNS-00517和 Linux Error:32:Broken pipe 1.1  BLOG文档结构图 1.2  前言部分 1.2.1  导读和注意事项 各位技术爱 ...

  9. 【Linux】查看所使用的Linux系统是32位还是64 位的方法

    查看所使用的Linux系统是32位还是64 位的方法 方法一:getconf LONG_BIT # getconf LONG_BIT 1 1 我的Linux是32位!!! 方法二:arch # arc ...

  10. Xilinx zynq-7000系列FPGA移植Linux操作系统详细教程

    Xilinx zynq-7000系列FPGA移植Linux操作系统详细教程 一:前言 最近手上压了一块米联客的Miz7035,一块xilinx zynq-7000系列的开发板,想着正好学习一下linu ...

随机推荐

  1. JS-页面操作

    --刷新页面 window.location.reload();

  2. Nginx配置proxy_pass转发的/路径问题

    Nginx配置proxy_pass转发的/路径问题 在nginx中配置proxy_pass时,如果是按照^~匹配路径时,要注意proxy_pass后的url最后的/,当加上了/,相当于是绝对根路径,则 ...

  3. [daily][archlinux][fonts] 在linux下管理字体

    序: linux是社区搞出来, 商业应用也都是服务器场景.社区里又都是技术人员.字体又是细节.而且会英文早成了标配.所以没有很多社区以外的人力来搞字体这个毫无回报的东西. 结果很自然的,装linux桌 ...

  4. JBoss和Tomcat版本、及Servlet、JSP规范版本对应一览 【转】

    原文地址:http://blog.csdn.net/hills/article/details/40896357 JBoss和Tomcat版本.及Servlet.JSP规范版本对应一览 JBossAS ...

  5. xampp使用phpunit

    1.将xampp/php的pear文件夹里面的phpunit文件夹复制到htdocs目录下 2.复制xampp/php的phpunit.bat到需要测试的目录 3.使用cmd命令切换至phpunit. ...

  6. Docker三剑客之Swarm介绍

    DockOne技术分享(二十): 我用swarm在多台物理机调度管理容器,用ovs实现跨主机的容器互联问题 [编者的话]Swarm项目是Docker公司发布三剑客中的一员,用来提供容器集群服务,目的是 ...

  7. http://www.cnblogs.com/0201zcr/p/4987561.html

    http://www.cnblogs.com/0201zcr/p/4987561.html

  8. NSArray倒序

    NSArray倒序 NSArray *tmparr = [[upLoadImageArr reverseObjectEnumerator] allObjects]; ios 正则表达式替换 . 不可变 ...

  9. Vcenter server 5.5添加用户角色及分配权限

    角色:各种角色定义了对此角色可操作细节的权限组合. 用户权限:用户权限是对ESXi 5.0中的对象实例(如ESXi 5.0主机,虚拟机,存储,网络等)进行权限的分配.通过在这些对象上绑定“用户+角色” ...

  10. Adding Swagger to Web API project

    Adding Swagger to Web API project. All source code for this series can be found here. When you creat ...