路由器系统的内存储布局

  • FLash存储布局
    • RAW FLASH:闪存芯片直接连接到CPU上
    • FTL FLASH:闪存芯片通过其它芯片连接到CPU上
    • 【】一般嵌入式系统中的芯片都是raw,因为都是直接连接到cpu上
    • 【】存储分区由MTD与文件系统来控制,传统用MBR或PBR来控制,嵌入式设备中用linux kernel即内核来控制(有时候单独由bootloader来控制)。
  • 例子:TP-LINK WR1043ND的flash布局
    •  
      TP-Link WR1043ND Flash Layout
      Layer0 m25p80 spi0.0: m25p64 8192KiB
      Layer1 mtd0 u-boot 128KiB mtd5 firmware 8000KiB mtd4 art 64KiB
      Layer2   mtd1 kernel 1280KiB mtd2 rootfs 6720KiB  
      mountpoint     /  
      filesystem     mini_fo  
      Layer3       mtd3 rootfs_data 5184KiB  
      Size in KiB 128KiB 1280KiB 1536KiB 5184KiB 64KiB
      Name u-boot kernel   rootfs_data art
      mountpoint none none /rom /overlay none
      filesystem none none SquashFS JFFS2 none
      1. 第0层Layer0: 对应Flash芯片,8MiB大小, 焊接在PCB上,连接到CPU(SoC)SoC – 通过SPI (Serial Peripheral Interface Bus)总线.
      2. 第1层Layer1: 我们把存储空间"分区"为 mtd0 给 bootloader, mtd5 给 firmware/固件使用, 并且, 在这个例子中, mtd4给ART (Atheros Radio Test/Atheros电波测试) - 它包含MAC地址和无线系统的校准信息(EEPROM). 如果该部分的信息丢失或损坏,ath9k (无线驱动程序) 就彻底罢工了.
      3. 第2层Layer2: 我们把mtd5 (固件) 进一步分割为 mtd1 (kernel/内核) and mtd2 (rootfs); 在固件的一般处理流程中 (参考obtain.firmware.generate) Kernel 二进制文件 先由LZMA打包, 然后用gzip压缩 之后文件被 直接写入到raw flash (mtd1)中 而不mount到任何文件系统上!
      4. 第3层Layer3: 我们把rootfs更进一步分割成 mtd3 (rootfs_data) 和剩下的 未命名 部分 - 未来用来容纳SquashFS-分区.
  • 文件系统:
    • mini_fo:迷你散列覆盖文件系统
    • SquashFS:压缩过的只读文件系统,一般通过LZMA打包,然后由gzip压缩,直接写入flash,比jffs2小20%~30%,修改的话,要copy一份新的到第二分区,浪费空间。
    • JFFS2:可读写的压缩文件格式,带有日志和平均擦写技术,用LZMA进行压缩(推荐使用这种系统)
posted @ 2013-02-24 13:49  ensleep  阅读(640)  评论(0编辑  收藏  举报