zoukankan      html  css  js  c++  java
  • 路由器系统的内存储布局

    • 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进行压缩(推荐使用这种系统)
  • 相关阅读:
    汤姆大叔的博客
    ajax
    兼容谷歌的光标居中写法
    浅谈服务治理与微服务
    Java线程面试题合集(含答案)
    java设计模式之装饰者模式
    java集合类详解
    java线程-看这一篇就够了
    javaIO详解
    java反射详解
  • 原文地址:https://www.cnblogs.com/ensleep/p/2924175.html
Copyright © 2011-2022 走看看