zoukankan      html  css  js  c++  java
  • Linux内核移植到JZ2440

    一、准备工作:
    1、Linux内核:Linux2.6.22.6,可从www.kernel.org上下载;
    2、交叉工具编译链:arm-linux-gcc-3.4.5-glibc-2.3.6;
    3、yaffs2文件代码;
    4、ubuntu9.10;
    5、JZ2440;
    二、内核移植:

    1、修改Makefile:
    修改内核源码根目录下的Makefile文件

    1 #ARCH        ?= arm
    2 #CROSS_COMPILE    ?=arm-linux-

    2、make s3c2410_defconfig其实就是使用./arch/arm/configs/s3c2410_defconfig配置内核生成根目录下的.config文件,
    以后就可以使用make menuconfig命令来修改配置
    3、使用make uImage生成内核
    4、通过nfs 30000000 192.168.1.20:/work/nfs_root/image/uImage;bootm 30000000,
    结果是乱码:原因是内核配置的晶振时钟不对,开发板V3使用的是12M晶振
    5、修改晶振
    修改arch/arm/mach-s3c2440/mach-smdk2440.c

    1 static void __init smdk2440_map_io(void)
    2 {
    3     s3c24xx_init_io(smdk2440_iodesc, ARRAY_SIZE(smdk2440_iodesc));
    4     s3c24xx_init_clocks(12000000);
    5     s3c24xx_init_uarts(smdk2440_uartcfgs, ARRAY_SIZE(smdk2440_uartcfgs));
    6 }

    6、重新make uImage生成内核并复制到Dram中启动,结果是找不到文件系统。
    7、修改MTD分区://此处需与uboot的分区参数一致,才能让内核找到文件系统
    修改文件 /arch/arm/plat-s3c24xx/common-smdk.c

     1 static struct mtd_partition smdk_default_nand_part[] = {
     2     [0] = {
     3     .name = "bootloader",
     4     .offset = 0,
     5     .size = 0x00040000,
     6     },
     7     [1] = {
     8     .name = "params",
     9     .offset = MTDPART_OFS_APPEND,
    10     .size = 0x00020000,
    11     },
    12     [2] = {
    13     .name = "kernel",
    14     .offset = MTDPART_OFS_APPEND,
    15     .size = 0x00200000,
    16     },
    17 
    18     [3] = {
    19     .name = "root",
    20     .offset = MTDPART_OFS_APPEND,
    21     .size = MTDPART_SIZ_FULL,
    22     }
    23 };

    再修改s3c2410_platform_nand_smdk_nand_info smdk_nand_info = { //此处可不改

    1 2 .tacls = 0,
    3 .twrph0 = 30,
    4 .twrph1=0,

    8、修改支持4.3寸LCD://可先不改,但没有图形界面
    copy JZ2440光盘中的“4.3寸LCD_mach_smdk2440.c”文件覆盖arch/arm/mach-s3c2440/mach_smdk2440.c
    9、向内核打yaffs2补丁
    cd yaffs2
    ./patch-ker.sh c linux-2.6.22.6/
    10、内核配置:
    进入内核目录,cp /arch/arm/configs/s3c2410_defconfig .config
    make menuconfig
    修改配置:
    ①.General setup ---> //可不改
    [*] Configure standard kernel features (for small systems) --->
    ②. System Type ---->
    [*] S3C2410 DMA support [*] Support ARM920T processor
    S3C2410 Machines --->
    [*] SMDK2410/A9M2410
    S3C2440 Machines --->
    [*] SMDK2440
    [*] SMDK2440 with S3C2440 CPU module
    ③.Boot options ---> //可不改
    将 (root=/dev/hda1 ro init=/bin/bash console=ttySAC0) Default kernel command string
    改成 (noinitrd root=/dev/mtdblock2 console=ttySAC0,115200 init=/linuxrc )
    这里要特别注意root=/dev/mtdblock2 这个参数,mtdblock2是你的根文件系统所在的位置,和你在bootloader的分配有关,当然也和上述2。步骤的密切相关。不行的话多试几次。
    ④.[*] Enable loadable module support ---> //可不改
    [*] Module unloading
    [*] Automatic kernel module loading
    选择这两个,剩下的可以去掉
    ⑤.Device Drivers --->
    <*> Memory Technology Device (MTD) support --->
    [*] MTD partitioning support
    <*> NAND Device Support --->
    <*> NAND Flash support for S3C2410/S3C2440 SoC
    [ ] S3C2410 NAND Hardware ECC //这个要去掉

    ⑥.File systems----->
    Miscellaneous filesystems --->
    <*>YAFFS2 file system support

    11、重新make uImage生成内核并复制到Dram中启动,启动成功。//需要在Nand Flash上有fs_qtopia.yaffs2文件系统,还不支持nfs(network file system)

  • 相关阅读:
    SQL Server, Timeout expired.all pooled connections were in use and max pool size was reached
    javascript 事件调用顺序
    Best Practices for Speeding Up Your Web Site
    C语言程序设计 使用VC6绿色版
    破解SQL Prompt 3.9的几步操作
    Master page Path (MasterPage 路径)
    几个小型数据库的比较
    CSS+DIV 完美实现垂直居中的方法
    由Response.Redirect引发的"Thread was being aborted. "异常的处理方法
    Adsutil.vbs 在脚本攻击中的妙用
  • 原文地址:https://www.cnblogs.com/hwli/p/9312225.html
Copyright © 2011-2022 走看看