Chinaunix首页 | 论坛 | 博客
  • 博客访问: 445843
  • 博文数量: 67
  • 博客积分: 2468
  • 博客等级: 上尉
  • 技术积分: 1050
  • 用 户 组: 普通用户
  • 注册时间: 2011-01-05 01:21
文章分类

全部博文(67)

文章存档

2013年(1)

2012年(65)

2011年(1)

分类: 嵌入式

2012-06-13 21:18:14

 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

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

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

Nandboot

2) Linux kernel drivers

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]

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

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

阅读(3783) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~