zoukankan      html  css  js  c++  java
  • OK6410移植linux3.3.1

    本文为原创,转载请注明:http://www.cnblogs.com/tolimit/

    首先修改资源代码,进入arch/arm/mach-s3c64xx/目录,在这里我们使用mini6410的资源配置文件,首先复制一份mach-mini6410.c为mach-ok6410.c,修改mach-ok6410.c.

    把文件中所有mini6410改为ok6410

    :%s/mini6410/ok6410/g

    :%s/MINI6410/OK6410/g

    修改struct mtd_partition结构体内容,此结构体用于保存nandflash分区信息 

     1 static struct mtd_partition ok6410_nand_part[] = {
     2 
     3          [0] = {
     4 
     5                    .name = "Bootloader",
     6 
     7                    .size = (1 * SZ_1M),
     8 
     9                    .offset = 0,
    10 
    11                    .mask_flags = MTD_CAP_NANDFLASH,
    12 
    13          },
    14 
    15          [1] = {
    16 
    17                    .name = "Kernel",
    18 
    19                    .size = (5 * SZ_1M),
    20 
    21                    .offset = (1 * SZ_1M),
    22 
    23                    .mask_flags = MTD_CAP_NANDFLASH,
    24 
    25          },
    26 
    27          [2] = {
    28 
    29                    .name = "Root File System",
    30 
    31                    .offset = (6 * SZ_1M),
    32 
    33                    .size = (5 * SZ_1M),
    34 
    35          },
    36 
    37          [3] = {
    38 
    39                    .name  = "User",
    40 
    41                    .size = (120 * SZ_1M),
    42 
    43                    .offset = (11 * SZ_1M),
    44 
    45          },
    46 
    47 };

    这里有个bug我们需要屏蔽掉

    进入driver/mtd/nand/目录,打开nand_base.c文件,找到3265行附近的

    1          Case 128:
    2 
    3                    Chip->ecc.layout = &nand_oob_128;
    4 
    5                    Break;

    在此行下添加

    1          Case 218:
    2 
    3                    Chip->ecc.layput = &nand_oob_128;
    4 
    5                    Break;


    我们需要关闭ECC校验

    进入driver/mtd/nand/目录,修改s3c2410.c文件

    找到

    chip->ecc.mode = NAND_ECC_SOFT;

    改为

    chip->ecc.mode = NAND_ECC_NONE;


    然后我们需要增加devfs文件管理器的支持,修改fs/Kconfig,找到menu "Pseudo filesystems"

    在之后添加

    config DEVFS_FS

             bool "/dev file system support (OBSOLETE)"

             default y   

    config DEVFS_MOUNT

    bool "Automatically mount at boot"

    default y

    depends on DEVFS_FS

    修改arch/arm/mach-s3c64xx/Kconfig文件

    找到config MACH_SMDK6410

    cp一整段config MACH_SMDK6410

    把新的MACH_SMDK6410改为MACH_OK6410

    添加ok6410的硬件码

    进入arch/arm/tools目录

    打开mach-types文件

    添加一行:ok6410                      MACH_OK6410                 OK6410                       1626

    修改arch/arm/mach-s3c64xx/Makefile文件

    添加一行obj-$(CONFIG_MACH_OK6410)         +=mach-ok6410.o

    回到内核源代码顶层目录,修改顶层目录的Makefile,找到….

    修改为 ARCH     ?= arm

    CROSS_COMPILE     ?=(你的交叉编译器所在目录,注意最后需要加arm-linux- 若为eabi编译器则为arm-unknown-linux-gnueabi-我的是:/usr/local/arm/4.4.1/bin/arm-linux-)

    进入arm/arm/configs目录

    在这里我们使用s3c6400的默认配置文件将s3c6400_defconfig复制到源代码顶层目录,并重命名为.config

    在源代码根目录中执行make menuconfig

    (我只列出必选项,必须禁止选项会特殊说明,一般我们只增不减)

    进入System type --->

            ARM system type(Samsung S3C64XX)   //这项一定要正确

            ………………

           *** System MMU ***

            [*]OK6410                          //在System MMU中选择ok6410

           ………………

    进入Device Drivers --->

        <*>Memory Technology Device (MTD) support --->

           ………………

           <*> Caching block device access to MTD devices

           ………………

           <*> NAND Device Support --->

               <*> NAND Flash support for Samsung S3C SoCs

     

    进入与 <*>Memory Technology Device (MTD) support ---> 同一等级列表的Block devices  选上<*> RAM block device support

     

    退回到主界面,进入File systems,在这里自己选择需要的文件系统,

    进入File systems的 Pseudo filesystems--->

    选上 [*] /dev file system support(OBSOLETE)

             [*]   Automatically mount at boot

    (这两项即为之前我们添加的devfs 文件管理器支持)

     

    回到主界面,进入Boot options,里面有一行是需要我们自己手动填写的,是linux启动参数,在这里我初略说一下

     

    noinitrd   

    不使用临时的根文件系统

     

    root=…          

    该参数告诉内核启动时使用哪个设备作为根文件系统。比如第3分区作为根文件系统:root=/dev/mtdblock2

     

    rootfstype=…   

    根文件系统类型(比如rootfstype=cramfs)

     

    ro/rw        

    ro以只读方式加载根文件系统,rw以读写方式加载(rw为默认值)

     

    init=..      

    初始化进程名(使用busybox制作的根文件系统这一项一般为init=/linuxrc)

    console=…

    字面意思:控制台,就是控制台信息输出到哪,这里OK6410填ttySAC0,115200

     

    我的启动参数为noinitrd root=/dev/mtdblock2 rootfstype=cramfs console=ttySAC0,115200 init=/linuxrc

     

    设置完毕,保存信息,编译内核吧.

  • 相关阅读:
    Linux 用户和用户组配置文件
    Linux su和sudo的区别
    4-selenium-xpath定位
    3-selenium-元素定位
    1-selenium3安装
    vim 查看行数
    java学习day27-JavaScript
    java学习day26-CSS定位
    java学习day26-CSS(2)-布局+属性
    java学习day26-CSS(1)
  • 原文地址:https://www.cnblogs.com/tolimit/p/4310247.html
Copyright © 2011-2022 走看看