0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

浅谈2G NandFlash如何升级4G?

算法&编程学院 来源:网络整理 作者:工程师3 2018-05-13 08:57 次阅读

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

浅谈2G NandFlash如何升级4G?

# 该文件是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 文件已经含有了其他的命令。

这个修改是基于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 文件已经含有了其他的命令。

这个修改是基于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 文件已经含有了其他的命令。

这个修改是基于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 文件已经含有了其他的命令。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 4G
    4G
    +关注

    关注

    15

    文章

    5367

    浏览量

    117107
  • nandflash
    +关注

    关注

    0

    文章

    48

    浏览量

    20113
收藏 人收藏

    评论

    相关推荐

    【飞腾派4G版免费试用】大家来了解飞腾派4G版开发板

    国产高性能、低功耗通用计算微处理器的设计研发和产业化推广。飞腾派是一款面向行业工程师、学生和爱好者的开源硬件,采用飞腾嵌入式四核处理器,兼容ARM V8架构,板载64位 DDR4内存,分为2G4G两个版本
    发表于 01-02 22:43

    浅谈4G内存对笔记本的影响 2G内存刚刚好

    浅谈4G内存对笔记本的 影响2G内存刚刚好随着Intel P3x系列芯片组的发布,DDR3内存的普及日益临近,AMD K10系列处理器AM2+规格也正式支持DDR3内存,明年即将面临淘
    发表于 09-23 18:02

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

        uboot1.1.6/include/s3c6410.h  # s3c6410头文件        注意:修改文件后,重新编译前,需要执行make clean 命令  以上是Uboot代码 2G换成4G
    发表于 03-26 11:23

    按目前趋势发展,2G会在5年内退网?

    当前用户手上的手机基本上都需要更换,新更换的手机基本是4G手机了,5年后用户手机上的手机9成以上支持4g3、4g手机有个特点,基本强制使用小卡,2g用户换手机,基本上都需要换sim卡,
    发表于 08-27 18:52

    wifi信号/2G/3G/4G 信号振幅和功率

    wifi信号/2G/3G/4G 信号都是电磁波,都会有振幅,其振幅应该与功率成正比 功率还和什么相关呢?这几种信号振幅各是什么数量级的?? 请各大神赐教
    发表于 07-26 20:25

    资深软件研发工程师 (Wireless(2G/3G/4G)-合肥

    资深软件研发工程师 (Wireless(2G/3G/4G)-合肥职位描述:1. 1. Android & Embedded Linux Wireless(2G/3
    发表于 11-20 13:49

    G-sensor中的±2g、±4g、±8g代表什么意思啊

    G-sensor中的±2g、±4g、±8g代表什么意思啊
    发表于 05-27 09:29

    4G DTU 知识解答

    达到 100Mbps,上行速率最高可以达到 50Mbps,为客户提供高速互联网接入与无线数据连接等功能,适合大数据量传输的应用,如:串口摄像头图片传输。  通信速度快  4G DTU较2G/3G模块有
    发表于 03-20 16:15

    DM6441支持2G sd卡但不支持4G怎么改进?

    希望能从2G改进到4G,各位有什么好的思路么?
    发表于 01-11 06:35

    寻求一个2G或者4G的BGA封装的NAND FLASH

    想找一个2G或者4G的BAG封装的nand flash ,EMMC的不能要,恳请知道的大神指点一下
    发表于 05-29 05:56

    4G移动通信系统发展到了什么程度?

    第四代(4G)移动通信系统与技术是目前移动通信领域的研究热点。第三代(3G)移动通信系统从2001年起先后在日本和韩国投入商用,但目前大多数国家运营的仍然是2G或2.5G的移动通信系
    发表于 08-13 07:38

    2G手机3G平板4G手持终端日本TELEC认证/JATE认证办理

    2G手机3G平板4G手持终端日本TELEC认证/JATE认证办理短距离无线遥控产品:遥控玩具汽车、遥控报警系统、遥控门铃、遥控开关、遥控鼠标、无线键盘等。专业无线电控制产品(PMR):专业无线对讲机
    发表于 10-15 16:29

    2G、3G要退出历史舞台了?为何3G2G淘汰更快?

    2G老人机、119元的飞利浦E163K型2G老人机等均在售卖中。当2G、3G退网后,2G、3G
    发表于 08-10 14:45

    求大神分享适用于2G/3G/4G的无线终端基带芯片

    本文将从几种无线通信系统对终端基带芯片的需求开始讨论,介绍一种由简约纳电子公司设计完成的适用于2G/3G/4G的软件无线终端基带芯片平台。
    发表于 04-19 08:07

    4G无线采集网关相关资料推荐

    计讯物联4G无线采集网关,数据采集、现场设备接入、设备监控的工业级无线数据采集网关。拥有以太网、RS232、RS485、DI等丰富的接口,支持以太网、2G/3G/4G网络接入方式,可满
    发表于 07-02 07:16