博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
i.mx53 nand flash partitions
阅读量:4059 次
发布时间:2019-05-25

本文共 1795 字,大约阅读时间需要 5 分钟。

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”,

              .offset=MTDPART_OFS_APPEND,

              .size=256*1024*1024},

       {

              .name=”nand.userfs1”,

              .offset=MTDPART_OFS_APPEND,

              .size=256*1024*1024},

       {

              .name=”nand.userfs2”,

              .offset=MTDPART_OFS_APPEND,

              .size=MTDPART_SIZ_FULL},

};

 

 

 

转载地址:http://kjzji.baihongyu.com/

你可能感兴趣的文章
Selenium-WebDriverApi接口详解
查看>>
Selenium-ActionChains Api接口详解
查看>>
Selenium-Switch与SelectApi接口详解
查看>>
Selenium-Css Selector使用方法
查看>>
Linux常用统计命令之wc
查看>>
测试必会之 Linux 三剑客之 sed
查看>>
Socket请求XML客户端程序
查看>>
Java中数字转大写货币(支持到千亿)
查看>>
Java.nio
查看>>
函数模版类模版和偏特化泛化的总结
查看>>
VMware Workstation Pro虚拟机不可用解决方法
查看>>
iOS 对象序列化与反序列化
查看>>
iOS 序列化与反序列化(runtime) 01
查看>>
iOS AFN 3.0版本前后区别 01
查看>>
iOS ASI和AFN有什么区别
查看>>
iOS QQ侧滑菜单(高仿)
查看>>
iOS 扫一扫功能开发
查看>>
iOS app之间的跳转以及传参数
查看>>
Android(三)数据存储之XML解析技术
查看>>
Spring JTA应用之JOTM配置
查看>>