加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

i.mx53 nand flash partitions

发布时间:2020-12-15 18:23:49 所属栏目:百科 来源:网络整理
导读:i.MX53 NAND Flash 最近在做i.mx53,对于将所有的映像烧进NAND Flash,有N多不理解。通过上网查资料和自己的总结,写了一下,如下: 因为 bootloader , kernel parameter , kernel , rootfs 都需要存储在 NAND Flash 上,故 NAND Flash 就得统一规划。将

i.MX53 NAND Flash

最近在做i.mx53,对于将所有的映像烧进NAND Flash,有N多不理解。通过上网查资料和自己的总结,写了一下,如下:

因为bootloaderkernel parameterkernelrootfs都需要存储在NAND Flash上,故NAND Flash就得统一规划。将一整个大的空间分成N个分区,哪一个分区放什么,不能乱放。Uboot将内核参数放在指定的地址上,然后将控制权交给内核,内核也是去指定的地址读取传递给它的参数。所以NAND Flash的分区,uboot和内核要统一!

?

Uboot中对NAND Flash的划分

定义在uboot/include/configs/board.h

/*phy3250’s NAND Flash,32MB 16K size(Block,Sector)*/

#define CFG_ENV_SIZE????? 0x4000??? /*1 block,16k*/

#define CFG_ENV_OFFSET?????? 0x168000? /*90 blocks in total*/

这里uboot32MBNAND分成一个扇区为16K(0x4000),则总共有32MB/16K=90个扇区。

Uboot以扇区为单位对NAND进行操作。

另例:

/*SmartARM NAND Flash,K9F2G08,256MB,128K size(Block,Sector)*/

#define CFG_ENV_SIZE????? 0x40000? /*2 block,256K*/

#define CFG_ENV_OFFSET?0x180000? /*6 blocks in total*/

这里uboot以每2个扇区为单位进行操作,即128K*2=256K0x40000B/1024=256KB

而这块NAND Flash总共会被划分出256MB/0x40000=6个扇区。

?

Kernel中对Nand Flash的划分

分区用途?????????????? 地址划分?????????????? 扇区范围?????????????? 大小

Bootloader??????????? 0x0000_0000~0x0018_0000? 0~11?block? 总共12个扇区,1.5MB

Kernel parameter?? 0x0018_0000~0x001C_0000 12~13 block?? 总共2个扇区uboot传给内核的参数

reserved?????????????? 0x001C_0000~0x0020_0000 14~15 block ??保留2个扇区

kernel ????????????????? 0x0020_0000~0x0060_0000??? 16~47 block?? 总共32个扇区,4MB

rootfs?????????????????? 0x0060_0000~0x1000_0000??? 48~2047 block 总共2000个扇区,250MB

从内核arch/arm/mach-mx5/mx53_ard.c中找到了NAND的分区信息:

/*MX53 ROM require the boot FCB/DBBTsupport which need more space to store such info on NAND boot partition.16Mshould cover all kind of NAND boot support on MX53*/

/*NAND Flash Partitions*/

Static struct mtd_partitionnand_flash_partitions[]={

?????? {

????????????? .name=”bootloader”,

????????????? .offset=0,

????????????? .size=16*1024*1024},

?????? {

????????????? .name=”nand.kernel”,

????????????? .offset=MTDPART_OFS_APPEND,

????????????? .size=5*1024*1024},

?????? {

?????? {

????????????? .name=”nand.rootfs”,

????????????? .size=256*1024*1024},

?????? {

????????????? .name=”nand.userfs1”,

?????? {

????????????? .name=”nand.userfs2”,

????????????? .size=MTDPART_SIZ_FULL},

};

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读