mini2440 NAND Flash 上的分区

来源:互联网 发布:移动网络能玩lol吗 编辑:程序博客网 时间:2024/05/18 03:05

 1. 存储资源

SDRAM: SDRAM地址空间:0x30000000 ~ 0x34000000

 

NORFLASH:

NANDFLASH

 

SRAM:

mini2440里有一个内置的SRAM,叫做stepping stone(垫脚石,很形象…),系统启动加电后,会把nand flash上的起始4KB的内容拷贝到SRAM里执行,这样就实现了从nand flash启动。如果bootloader小于4KB的话(像vboot),在SRAM里就能boot,大于4KB的话(u-bootvivi),在SRAM里做一些基本初始化后,再把bootloader的剩余部分拷贝到SDRAM里(>0x30000000)。

==========================================================================

2. 嵌入式Linux软件结构与分布

一般情况下嵌入式Linux系统中的软件主要分为以下几部分:

1) 引导加载程序:其中包括内部ROM 中的固化启动代码和BootLoader 两部分。

内部固化ROM是厂家在芯片生产时候固化的,作用基本上是引导BootLoader

有的芯片比较复杂,比如Omap3flash中没有代码的时候有许多启动方式:

USBUART或以太网等等。而S3C24x0则很简单,只有Norboot

Nandboot

2) Linux kerneldrivers

3) 文件系统。包括根文件系统和建立于Flash内存设备之上的文件系统(EXT4

UBICRAMFS等等)。它是提供管理系统的各种配置文件以及系统执行用户应

用程序的良好运行环境及载体。

4) 应用程序。用户自定义的应用程序,存放于文件系统之中。

Flash存储器中,他们的分布一般如下:

但是以上只是大部分情况下的分布,也有一些可能根文件系统是initramfs,被一起压缩到了内核映像里,或者没有Bootloader参数区,等等。

 ==========================================================================

3. 地址空间分配和片选信号定义

S3C2440支持两种启动模式:一种是从Nand Flash启动(MINI2440即是此种);一种

是从Nor Flash启动。在此两种启动模式下,各个片选的存储空间分配是不同的,如下图:


上图中,

左边是nGCS0片选的Nor Flash启动模式下的存储分配图;

右边是Nand Flash启动模式下的存储分配图;

说明:SFR Area为特殊寄存器地址控制

下面是器件地址空间分配和其片选定义

在进行器件地址说明之前,有一点需要注意,nGCS0片选的空间在不同的启动模式下,映射的器件是不一样的。由上图可以知道:

NAND Flash启动模式下,内部的4K Bytes BootSram被映射到nGCS0片选的空间;

Nor Flash启动模式下(Nand Flash启动模式),与nGCS0相连的外部存储器Nor Flash 就被映射到nGCS0 片选的空间

SDRAM 地址空间:0x30000000 ~ 0x34000000

==========================================================================

4. 内核中NAND Flash的分区

在移植好的内核中,/arch/arm/match-s3c2440/match-mini2440.c中可以看到:


点击(此处)折叠或打开

  1. static struct mtd_partition friendly_arm_default_nand_part[]={
  2.          [0]={
  3.                    .name = "supervivi",
  4.                    .size = 0x00040000,
  5.                    .offset = 0,
  6.          },
  7.          [1]={
  8.                    .name = "param",
  9.                    .offset = 0x00040000,
  10.                    .size = 0x00020000,
  11.          },
  12.          [2]={
  13.                    .name = "Kernel",
  14.                    .offset = 0x00060000,
  15.                    .size = 0x00500000,
  16.          },
  17.          [3]={
  18.                    .name = "root",
  19.                    .offset = 0x00560000,
  20.                    .size = 1024 * 1024 * 1024, //
  21.          },
  22.          [4]={
  23.                    .name = "nand",
  24.                    .offset = 0x00000000,
  25.                    .size = 1024 * 1024 * 1024, //
  26.          }
  27. };

==========================================================================

5 这些地址是如何联系起来的呢?
在《mini2440U-boot移植详细手册-20100419》4.3 下载与烧写

使用U-boot 将映像文件烧写到板上的Flash,一般步骤是:
(1)通过网络、串口、U 盘、SD 卡等方式将文件传输到SDRAM;
(2)使用Nand Flash 或Nor Flash 相关的读写命令将SDRAM 中的数据烧入Flash。

下面是烧写范例:
如果使用 SD 卡和U 盘形式更新U-boot,那么首先SD 卡和U 盘中必须有FAT32 文件系统,并在里面存放了u-boot.bin 文件。

4.3.1 通过 SD 卡烧入Nand Flash:

点击(此处)折叠或打开

  1. [u-boot@MINI2440]# mmc init
  2. mmc: Probing for SDHC ...
  3. mmc: SD 2.0 or later card found
  4. trying to detect SD Card...
  5. Manufacturer: 0x00, OEM "Product name: " ", revision 0.0
  6. Serial number: 7864775
  7. Manufacturing date: 11/2006
  8. CRC: 0x4f, b0 = 1
  9. READ_BL_LEN=6, C_SIZE_MULT=7, C_SIZE=4095
  10. size = 0
  11. SD Card detected RCA: 0x2 type: SD
  12. mmc1 is available
  13. [u-boot@MINI2440]# fatload mmc 1 0x30008000 u-boot.bin
  14. reading u-boot.bin
  15. 256220 bytes read
  16. [u-boot@MINI2440]# nand erase 0 0x40000
  17. NAND erase: device 0 offset 0x0, size 0x40000
  18. Erasing at 0x2000000000004 -- 0% complete.
  19. OK
  20. [u-boot@MINI2440]# nand write 0x30008000 0 0x40000
  21. NAND write: device 0 offset 0x0, size 0x40000
  22. Writing at 0x2000000020000 -- 100% is complete. 262144 bytes written: OK

    使用u-boot烧写一遍就很清楚了。supervivi则省去了让我们从SDRAM写入数据到nand flash上。

==========================================================================

参考:

[1] mini2440U-boot移植详细手册-20100419

[2] mini2440用户手册 -20100925

[3]uboot移植之命令烧写ubootzImage.imgroot .

[4]uboot与系统内核中 MTD分区的关系

[5] mini2440Nor Flash启动与Nand Flash启动

原创粉丝点击