打印

发一个OK6410 2G NandFlash升级到4G的办法(Linux/Android)

[复制链接]
2846|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
forlinx2013|  楼主 | 2013-3-26 10:20 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
K9LBG08U0D11.part1.rar (900 KB)

K9LBG08U0D11.part2.rar (611.44 KB)

















这个修改是基于OK6410 Linux2.6.28/3.0.1
Uboot代码修改

common 文件夹修改内容:

  uboot1.1.6/common/cmd_nand.c
# 该文件主要实现Uboot操作NandFlash的命令集合,如执行nand write.uboot 会调用该文件
   
   uboot1.1.6/common/main.c  
  #用于实现启动菜单显示
  
   uboot1.1.6/common/env_nand.c
   #执行 saveenv命令将调用该文件,用于存储环境变量到NandFlash
   
cpu文件夹修改内容

uboot1.1.6/cpu/s3c64xx/nand.c
 # 该文件是NandFlash修改重要文件,定义8位硬件ECC功能。
   
   uboot1.1.6/cpu/s3c64xx/nand_cp.c
  # 该文件实现NandFlash 启动系统关键代码,比如把Uboot代码拷贝到内存运行。
   
  uboot1.1.6/cpu/s3c64xx/usbd-otg-hs.c
# 用于菜单形式实现DNW烧写系统功能,这部分与NandFlash关系不大,但跟Uboot菜单项相关。
 
driver文件夹修改内容

  uboot1.1.6/drivers/nand/nand_base.c
# NandFlash驱动重要文件,实现NandFlash的读写功能。
   
   uboot1.1.6/drivers/nand/nand_ids.c
# NandFlash ID 定义文件,里面定义了我们目前支持的NandFlash类型,当然里面有一些类型是系统自带的。
   
   uboot1.1.6/drivers/nand/nand_util.c
   #NandFlash 驱动文件,实现NandFlash读写辅助功能。
   
include 文件夹修改内容
  
  uboot1.1.6/include/configs/smdk6410.h
#NandFlash相关的宏定义
  
  uboot1.1.6/include/linux/mtd/nand.h
  # 定义NandFlash 页最大空间,OOB最大空间
  
  uboot1.1.6/include/s3c6410.h
  # s3c6410头文件
  
  
  
  注意:修改文件后,重新编译前,需要执行make clean 命令
  以上是Uboot代码 2G换成4G需要修改的地方,下面说一下Linux3.0内核需要修改的文件。
  
Linux内核修改文件
  
  Linux-3.0.1/arch/arm/mach-s3c64xx/mach-smdk6410.c
  
   # 该文件是6410平台重要文件,实现平台设备的添加,初始化工作,
    这个文件里面有一个重要地方,就是对NandFlash的分区信息,
    
   struct mtd_partition ok6410_nand_part[] = {
           {
                   .name                = "Bootloader",
                   .offset                = 0,
                   .size                = (2 * SZ_1M),
                   .mask_flags        = MTD_CAP_NANDFLASH,
           },
           {
                   .name                = "Kernel",
                   .offset                = (2 * SZ_1M),
                   .size                = (5*SZ_1M) ,
                   .mask_flags        = MTD_CAP_NANDFLASH,
           },
           {
                   .name                = "User",
                   .offset                = (7 * SZ_1M),
                   .size                = (200*SZ_1M) ,
           },
           {
                   .name                = "File System",
                   .offset                = MTDPART_OFS_APPEND,
                   .size                = MTDPART_SIZ_FULL,
           }
   };
   
   注意:
   这个结构体把NandFlash分成了四个分区,之前飞凌发布的文件系统里面, /etc/init.d/rcS脚本把第四个分区挂载到了 /mnt目录下面,这个可根据自己的需求,如果NandFlash仍然使用三个分区,可以不更改这个文件。如果更改了这个文件,采用4个分区,不要忘了更改 /etc/init.d/rcS文件,把第四个分区挂载到/mnt目录下面。
   
   更改之前先确认一下文件系统里面 /etc/init.d/rcS文件 有没有挂载第四个分区,或者执行mount 命令看一下目前的系统是三个分区还是四个分区,根据具体情况来修改。
   
   
Linux-3.0.1/arch/arm/plat-samsung/dev-nand.c
# Nandflash 设备描述信息。

  
Linux-3.0.1/drivers/mtd/nand/nand_base.c
  # NandFlash 驱动文件,实现基本的读写操作

Linux-3.0.1/drivers/mtd/nand/nand_ids.c
# NandFlash ID信息描述文件,与Uboot代码中的nand_ids.c文件类似,但不相同.

Linux-3.0.1/drivers/mtd/nand/s3c_nand.c
# NandFlash驱动文件,实现NandFlash驱动的注册,NandFlash设备扫描等重要。

Linux-3.0.1/include/mtd/mtd-abi.h
# NandFlash驱动头文件


注意:修改文件后,重新编译前,需要执行make clean 命令


文件系统:
    文件系统部分不需要任何的改动,使用2G 版本的Yaffs2的制作工具
  mkyaffs2image-256DDR 即可制作适用4G NandFlash.的rootfs.yaffs2.


注意:完成以上操作,系统成功运行后可以在超级终端或者DNW中执行 df –h 命令,此时就可以看到NandFlash空间大小了。


Android2.3  2G NandFlash升级4G NandFlash的办法

   需要注意的是,三星6410平台不适合使用Android2.3系统进行产品研发,如果在产品中使用Android系统,建议使用三星210处理器或者更高主频的A8,A9处理器。貌似6410的安卓是开发板厂商多是自己做的,学习可以,也基本只是学习用吧...
Uboot代码修改

common 文件夹修改内容:

  uboot1.1.6/common/cmd_nand.c
# 该文件主要实现Uboot操作NandFlash的命令集合,如执行nand write.uboot 会调用该文件
   
   uboot1.1.6/common/main.c  
  #用于实现启动菜单显示
  
   uboot1.1.6/common/env_nand.c
   #执行 saveenv命令将调用该文件,用于存储环境变量到NandFlash
   
cpu文件夹修改内容

uboot1.1.6/cpu/s3c64xx/nand.c
 # 该文件是NandFlash修改重要文件,定义8位硬件ECC功能。
   
   uboot1.1.6/cpu/s3c64xx/nand_cp.c
  # 该文件实现NandFlash 启动系统关键代码,比如把Uboot代码拷贝到内存运行。
   
  uboot1.1.6/cpu/s3c64xx/usbd-otg-hs.c
# 用于菜单形式实现DNW烧写系统功能,这部分与NandFlash关系不大,但跟Uboot菜单项相关。
 
driver文件夹修改内容

  uboot1.1.6/drivers/nand/nand_base.c
# NandFlash驱动重要文件,实现NandFlash的读写功能。
   
   uboot1.1.6/drivers/nand/nand_ids.c
# NandFlash ID 定义文件,里面定义了我们目前支持的NandFlash类型,当然里面有一些类型是系统自带的。
   
   uboot1.1.6/drivers/nand/nand_util.c
   #NandFlash 驱动文件,实现NandFlash读写辅助功能。
   
include 文件夹修改内容
  
  uboot1.1.6/include/configs/smdk6410.h
#NandFlash相关的宏定义
  
  uboot1.1.6/include/linux/mtd/nand.h
  # 定义NandFlash 页最大空间,OOB最大空间
  
  uboot1.1.6/include/s3c6410.h
  # s3c6410头文件
  
  
  
  注意:修改文件后,重新编译前,需要执行make clean 命令
  以上是Uboot代码 2G换成4G需要修改的地方,以下是Android2.3内核需要修改的文件。
  
Linux内核修改文件
  
  android2.3_kernel_v1.01/arch/arm/mach-s3c64xx/mach-smdk6410.c
  
   # 该文件是6410平台重要文件,实现平台设备的添加,初始化工作,
    这个文件里面有一个重要地方,就是对NandFlash的分区信息,
    
   struct mtd_partition ok6410_nand_part[] = {
           {
                   .name                = "Bootloader",
                   .offset                = 0,
                   .size                = (2 * SZ_1M),
                   .mask_flags        = MTD_CAP_NANDFLASH,
           },
           {
                   .name                = "Kernel",
                   .offset                = (2 * SZ_1M),
                   .size                = (5*SZ_1M) ,
                   .mask_flags        = MTD_CAP_NANDFLASH,
           },
           {
                   .name                = "User",
                   .offset                = (7 * SZ_1M),
                   .size                = (200*SZ_1M) ,
           },
           {
                   .name                = "File System",
                   .offset                = MTDPART_OFS_APPEND,
                   .size                = MTDPART_SIZ_FULL,
           }
   };
   
   注意:
   这个结构体把NandFlash分成了四个分区,以前发布的Android系统为三个分区,修改这个文件后注意不要忘了修改文件系统,文件系统部分需要把第四个分区挂载到/mnt/disk下面。
   
   
android2.3_kernel_v1.01/arch/arm/plat-samsung/dev-nand.c
# Nandflash 设备描述信息,定义NandFlash 寄存器地址范围,是NandFlash驱动中最基本的文件。

  
android2.3_kernel_v1.01/drivers/mtd/nand/nand_base.c
# NandFlash 驱动文件,实现基本的读写,擦除操作,是NandFlash驱动中重要文件,

android2.3_kernel_v1.01/drivers/mtd/nand/nand_ids.c
# NandFlash ID信息描述文件,与Uboot代码中的nand_ids.c文件类似,但不相同.

android2.3_kernel_v1.01/drivers/mtd/nand/s3c_nand.c
# NandFlash驱动文件,实现NandFlash驱动的注册,NandFlash设备扫描,硬件ECC等重要功能。

android2.3_kernel_v1.01/include/linux/mtd/nand.h
# NandFlash宏,及重要结构体定义文件,是NandFlash 驱动中非常重要的头文件之一。
android2.3_kernel_v1.01/include/mtd/mtd-abi.h
# NandFlash驱动头文件,里面定义一些辅助的结构体。


注意:修改文件后,重新编译前,需要执行make clean 命令


文件系统:
 文件系统部分稍微修改一下,把/mnt/disk文件夹挂载到 /dev/block/mtdblock3块设备处,
 修改文件:
 android2.3.4_32bit/vendor/forlinx/OK6410/init.rc
  修改内容如下:
 on fs
 # mount mtd partitions
     # Mount /system rw first to give the filesystem a chance to save a checkpoint
       mount yaffs2 mtd@system /system
       mount yaffs2 mtd@system /system rw remount
       mount yaffs2 mtd@userdata /data nosuid nodev
       mount yaffs2 mtd@cache /cache nosuid nodev
       mount yaffs2 /dev/block/mtdblock3 /mnt/disk   
   最后一行为新增命令,init.rc 文件已经含有了其他的命令。






















相关帖子

沙发
forlinx2013|  楼主 | 2013-3-26 10:27 | 只看该作者
上面资料没有发完整  接下来是补充的资料。欢迎大家分享。有问题,请轻拍~~谢谢啊~:):)

K9LBG08U0D.part2.rar

611.44 KB

K9LBG08U0D.part1.rar

900 KB

使用特权

评论回复
板凳
forlinx2013|  楼主 | 2013-3-26 10:29 | 只看该作者
资料继续补充~

Uboot1.1.6修改文件-Android.rar

84.6 KB

Uboot1.1.6修改文件.rar

84.6 KB

Linux3.0内核修改文件.rar

35.33 KB

Android2.3内核修改文件.rar

41.91 KB

使用特权

评论回复
地板
forlinx2013|  楼主 | 2013-3-26 10:34 | 只看该作者
终于发全了~太不容易了!!!

MT29F8G08ABABAWP(1).part3.rar

185.73 KB

MT29F8G08ABABAWP(1).part2.rar

900 KB

MT29F8G08ABABAWP(1).part1.rar

900 KB

使用特权

评论回复
5
shuimu999| | 2013-3-27 18:52 | 只看该作者
谢谢分享

使用特权

评论回复
6
hardfire| | 2013-3-28 10:06 | 只看该作者
8错,支持下

使用特权

评论回复
7
hiid365| | 2013-9-12 10:50 | 只看该作者
谢谢分享呀,

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

25

主题

40

帖子

3

粉丝