由于BOOTLOADRER、PARAMS以及内核、文件系统都在NAND FLASH上,因此分区就得进行统一规划。系统的NAND FLASH分区依赖于u-boot和Linux内核两方面的设置。

U-Boot中的NAND分区

文件:include/configs/开发板.h
这是Phy3250的参数,Phy3250采用32MB的NAND FLASH,扇区大小为16KB:
189 /* Phy3250's NAND FLASH, 32MB, 16K size(Block, Sector) */
190 //#define CFG_ENV_SIZE             0x4000      /* 1 block, 16K */
191 //#define CFG_ENV_OFFSET        0x168000  /* Block 90       */
如下是SmartARM3250的NAND FLASH,K9F2G08,256MB,扇区大小为128K:
193 /* SmartARM3250's NAND FLASH, K9F2G08, 256MB, 128K size(Block, Sector) */
194 #define CFG_ENV_SIZE           0x40000       /* 2 Block, 256K */
195 #define CFG_ENV_OFFSET      0x180000     /* Block 12         */  

Kernel中的NAND FLASH分区

NAND FLASH规划

分     区                                   地址范围                        扇区范围                    大    小                用     途
 Bootloader             0x0000 0000 ~ 0x0018 0000     0 ~ 11          12个扇区,1.50M               S1L和U-Boot
 param                  0x0018 0000 ~ 0x001C 0000      12~13           2个扇区,  256K                 U-Boot参数
保留                    0x001C 0000 ~ 0x0020 0000         14~15
 Linux Kernel           0x0020 0000 ~ 0x0060 0000    16~47           32个扇区,4.00M                 Linux内核
 Rootfs                 0x0060 0000 ~ 0x1000 0000        48~2047         2000个扇区,250M           Linux文件系统

rootfs
2047

48

 
共2000扇区

 Kernel
47

16


共32扇区 

 保留
15

14

 
共2扇区

 param
13
 
12
 
共2扇区
 
Bootlloader
11

0

 
共12扇区

分区实现

在linux-2.6.27.8/arch/arm/mach-lpc32xx/board-smartarm3250.c中的实现代码:
153 #define BLK_SIZE (0x20000) //128KB
154 static struct mtd_partition __initdata smartarm3250_nand_partition[] = {
155     {
156         .name   = "smartarm3250-boot",
157         .offset = 0,
158         .size   = (BLK_SIZE * 12)
159     },
160     {
161         .name   = "smartarm3250-ubt-prms",
162         .offset = (BLK_SIZE * 12),
163         .size   = (BLK_SIZE * 2)
164     },
165     {
166         .name   = "smartarm3250-kernel",
167         .offset = (BLK_SIZE * 16),
168         .size   = (BLK_SIZE * 32)
169     },
170     {
171         .name   = "smartarm3250-rootfs",
172         .offset = (BLK_SIZE * 48),
173         .size   = MTDPART_SIZ_FULL
174     },
175 };

NAND FLASH分区规划相关推荐

  1. u-boot 2016.03支持nand flash boot

    工作背景: 目标板:imx6ul SOC+底板    u-boot:uboot2016.03 nand flash: Micron MT29F8G08ABABAWP 1G kernel启动过程中关于n ...

  2. NAND FLASH

    NAND Flash 以Micron公司的MT29F2G08为例介绍NAND Flash原理和使用. 1. 概述 MT29F2G08使用一个高度复用的8-bit总线(I/O[7:0])来数据传输.地址 ...

  3. 通过mtd读写flash_关于如何在kernel起来之后通过直接dd读写nand flash分区来更新zImage的mtd问题...

    关于如何在kernel起来之后通过直接dd读写nand flash分区来更新zImage的mtd问题 主要是设置struct mtd_partition中的mask_flags标志位 具体含义为: 1 ...

  4. linux读取nand的文件,Linux Kernel 之AP读写Nand Flash上的Yaffs2文件的全过程浅析

    1.1 用top-down的方法分析AP读一个Nand Flash上的file的全过程 我先简单看一个例子,看User Application如何打开一个Yaffs2 file并读写之: int ma ...

  5. 学习 ARM 系列 -- FS2410 开发板上 Nand Flash 到内存的代码搬移

    一.目的    通过将 Nand Flash 前 4K 代码搬移到 SDRAM 中,了解如何初始化并使用 ARM 的内存,    为编写 ARM bootloader 和搬移内核到内存作准备. 二.代 ...

  6. Nand Flash,Nor Flash,BPI Flash,SPI Flash 的区别?

    转载:CFI Flash, JEDEC Flash ,Parellel Flash, SPI Flash, Nand Flash,Nor Flash的区别和联系 简单说就是,Flash,按照内部访问接 ...

  7. S3C2440的内存情况在NAND FLASH或者NOR FLASH启动的情况下

    1,从NANDFLASH启动时,在ARM上电时,ARM会自动把NANDFLASH前4K的内容拷贝到S3C2440内部SRAM中,同时把SRAM的地址映射到0X00000000.ARM上电后会从SRAM ...

  8. 采用NAND Flash设计存储设备的挑战在哪里?

    对于搞电子设计的工程师而言,NAND Flash是再熟悉不过的东西了.在电子设计的时候,NAND Flash通常作为大容量存储介质,可以类比为PC系统中的磁盘.在电子设计领域,对于小容量存储,还可以采 ...

  9. nor flash 和nand flash 的区别

    ROM和RAM指的都是半导体存储器,ROM是Read Only Memory的缩写,RAM是Random Access Memory的缩写.ROM在系统停止供电的时候仍然可以保持数据,而RAM通常都是 ...

最新文章

  1. Codeforces Round #300 A. Cutting Banner 水题
  2. 系统架构师学习笔记_第二章_连载
  3. 谈谈机器学习模型的部署
  4. Laravel 向视图传递变量的3种方法
  5. Django - 分页器
  6. windows版mysql添加远程访问
  7. 山西省计算机商务学校地址,山西计算机等级考试报名地点
  8. paip.python错误解决18
  9. Win10升级后,文件夹背景变成黑色
  10. html 英文花体,七夕花体英文文案
  11. 【Cubase11】音乐工作站:宿主软件 - 基础入门笔记
  12. 编译适配 联想Y1(NewifiMini)的Padavan 固件
  13. java18_【Java】Java_18 方法
  14. 对话 UNIX: 使用 Screen 创建并管理多个 shell
  15. 北大暑期学校学习总结
  16. 关于STM32G071RB的ADC采集误差问题
  17. #pragma omp parallel for
  18. SSR、SSE、SST、R2
  19. ubuntu系统怎么使用ifconfig和开启远程连接
  20. Linux安装FTP服务(Pure-FTPd)

热门文章

  1. 49、剑指offer--把字符串转换成整数
  2. 物理层、数据链路层网络设备工作原理
  3. FileReader/FileWriter复制文件
  4. java.lang.String小测试
  5. gedit搭建c开发环境
  6. Silverlight与WCF之间的通信(5)silverlight应用和wcf服务的发布方法
  7. JAVA中的日志框架-log4j的使用
  8. 操作系统原理之文件系统(第五章)
  9. 第六节:深究事务的相关性质、隔离级别及对应的问题、死锁相关
  10. xml与java对象转换 -- XStreamAlias