路由器的软件构成
路由器的软件构成
Zelas2Xerath路由器的软件构成
从整体来看,路由器是一个典型的嵌入式系统
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硬件和和简单性能比较?