路由器的软件构成

路由器的软件构成

从整体来看,路由器是一个典型的嵌入式系统

BootLoader

BootLoader是在操作系统内核运行之前运行。可以初始化硬件设备、建立内存空间映射图,从而将系统的软硬件环境带到一个合适状态,以便为最终调用操作系统内核准备好正确的环境。

Bootlodaer 存储于 Flash 的头部

  • CFE: Common Firmware Environment (基于PMON)

    ​ BCM 使用较多

  • Uboot: Universal Boot Loader

    ​ QCA MTK 使用较多 总体占路由器 70%

Firmware(固件)

固件(Firmware)就是写入EPROM(可擦写可编程只读存储器)或EEPROM(电可擦可编程只读存储器)中的程序。

固件是指设备内部保存的设备“驱动程序”,通过固件,操作系统才能按照标准的设备驱动实现特定机器的运行动作。

固件是担任着一个系统最基础最底层工作的软件。

  • 开源系统

    • Openwrt
    • Tomato
    • DD-WRT
  • 闭源系统

    • 芯片厂商系统 (签保密协议才可以拿到 SDK)

      • 高通 QSDK/LSDK
      • 联发科 ECOS
    • 第三方系统

      • VxWorks系统: TP-Link

      • 基于类Unix系统(Linux/BSD)开发

        • 优倍快网络(UBNT) AirOS
        • MikroTik RouterOS (ROS)
      • 基于开源系统修改

其他

  • bootloader是存储在哪个位置的呢? 上电后cpu是如何从bootloader到固件的运行?

    CPU 上电后加载微码,然后将 Flash 中的前 N 块载入到内存中,在内存中运行

  • 不同种类的 flash 对固件和 bootloader 开发影响有多大?

    性能上有区别,NOR Flash 速度较慢,NAND速度较快,开发上无大影响

  • 市场上的路由器是用NAND FIash的多,还是用NOR Flash的多?

    都不多,SPI 较多(成本几毛钱)

  • openwrt可以在什么样的硬件配置环境下运行? 满足哪些条件就可以了?

    基本上能跑 linux 就能跑openwrt ,主要是移植上的工作。异构移植(如龙芯)需要更改大量的内核代码,同架构则移植性很高。移植工作一般是有实力的厂商来完成,个人很少能做到

  • OpenWrt、DD-WRT、Tomato系统的区别?

    设计理念上:

    Tomato 是日本人写的 (比较精致)

    DD-WRT 是德国人写的 (处于二者之间)

    Openwrt 是美国人写的(比较开放)

    除此之外就是一些软件上的区别

    OP 能适配的设备:BCM、QCA、MTK、RealTek、Malvel、x86 …

    DD 能适配的设备:BCM、QCA、MTK、x86

    TT 能适配的设备:MTK、BCM(比较正统)

    TT 的MTK移植工作由佐须之男完成,BCM下还分ARM和MIPS,ARM由老外移植,MIPS由原作者移植

  • 现在很多cpu (soc)都内置了switch芯片,那如果路由器完全成砖,比如spi或者nand芯片都没了,还能作为交换机用么?

    可以,switch 芯片独立工作,不关心RAM 和 ROM的存在

  • 最好能罗列下当前流行的SOC硬件和和简单性能比较?

    https://wikidevi.com/wiki/Main_Page