那曲檬骨新材料有限公司

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

    文章

    5530

    瀏覽量

    119521
  • nandflash
    +關注

    關注

    0

    文章

    48

    瀏覽量

    20270
收藏 人收藏

    評論

    相關推薦

    淺談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

    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

    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

    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

    2G4G GSM到WiMAX 常用通信名詞介紹

    2G4G GSM到WiMAX 常用通信名詞介紹   有不少網友們反映,在一些文章中,出現
    發表于 06-01 20:33 ?3550次閱讀

    2G退網,選NB還是4G?這里幫你解答

    后的今天,2G終于要退出歷史舞臺了。 預計在2019年5G基站也會建設完畢,移動和電信的2G網絡也將退出舞臺。物聯網遠程數據傳輸也會隨之升級,從GPRS
    的頭像 發表于 04-11 16:27 ?1.8w次閱讀

    巴帝電信計劃明年關閉3G網絡只留下2G4G網絡

    “可能到2020年4月,我們將真的只剩下2G4G網絡。這樣我們所有的頻譜都將在4G上,除了管理頻譜在2G上,再加上一小部分運行
    發表于 08-09 09:57 ?751次閱讀

    獨立顯卡2g4g區別_獨立顯卡的作用

    本文首先介紹了獨立顯卡的概念,其次闡述了獨立顯卡2g4g區別,最后介紹了獨立顯卡的作用。
    發表于 03-25 09:05 ?1.4w次閱讀

    用于2G、3G4G、5G蜂窩的方形分形天線

    電子發燒友網站提供《用于2G、3G4G、5G蜂窩的方形分形天線.zip》資料免費下載
    發表于 07-22 10:44 ?14次下載
    用于<b class='flag-5'>2G</b>、3<b class='flag-5'>G</b>、<b class='flag-5'>4G</b>、5<b class='flag-5'>G</b>蜂窩的方形分形天線

    硬件底板不變2G模塊升級4G模塊解決方案

    硬件底板不變2G模塊升級4G模塊解決方案由于工業用戶2G基站逐漸關停,原先的2G模塊底板造成浪費。北京豐彩無線為了解決
    的頭像 發表于 11-04 10:09 ?3672次閱讀
    硬件底板不變<b class='flag-5'>2G</b>模塊<b class='flag-5'>升級</b><b class='flag-5'>4G</b>模塊解決方案
    真人百家乐出售| 百家乐路纸发表区| 属龙人与属虎人做生意| 太阳城百家乐杀祖玛| 澳门百家乐小| 大发888bet娱乐城| 日博娱乐城开户| 池州市| 百家乐官网赌的是心态吗| 英皇百家乐官网的玩法技巧和规则| 百家乐游戏机说明书| 百家乐特殊计| 乌什县| 试玩百家乐官网代理| 百家乐视频游戏双扣| 威尼斯人娱乐场55556| 昌吉市| 百家乐官网走势图解| 娱乐城百家乐打不开| 百家乐桌布呢布| 盐津县| 机械百家乐官网技巧| 真人百家乐赌注| 大发888游戏网站| 建平县| 励骏会百家乐官网的玩法技巧和规则| 网络百家乐必胜投注方法| 大发888 备用6222.co| 任我赢百家乐官网自动投注分析系统 | 太阳神网上娱乐| 百家乐官网网上真钱娱乐平台| 百家乐棋牌正式版| 333娱乐场| 网上百家乐官网是现场吗| 澳门百家乐怎玩| 新2开户| 帝王百家乐官网的玩法技巧和规则| 百樂坊百家乐的玩法技巧和规则| 蓝田县| 百家乐数学规律| 大发888亚付宝充值|