用户工具

站点工具


develop:basic_info

SuperWRT开发基础介绍

SuperWRT是一基于Linux的无线路由器系统。

在SuperWRT之前已经有好多的第三方路由器系统,其中OpenWRT、DD-WRT、Tomato、RouterOS较为著名。当然还有一些基于它们开发的,或其它的小众系统。

SuperWRT希望走和之前的系统略有不同的路线,主要是下面几点:

  • 更加稳定,仅提供必要功能,但保证更好的稳定性及性能。
  • 友好的开发接口及扩展架构。
  • 提供配套的集中管理平台。

SuperWRT系统环境

定制版本uboot

SuperWRT为了保证更友好升级特性,及全面的用户体验,开发了定制版本的uboot,SuperWRT系统需要与该uboot配合使用。

定制版本的uboot主要提供了以下特殊功能:

  • SuperWRT系统完整性校验。
  • 传递设备硬件信息(SBI)给SuperWRT系统。
  • 当系统升级失败后,通过读取系统配置,自动通过WAN连接重新尝试升级。
  • 当系统启动失败后,通过读取系统配置,自动通过WAN连接下载恢复升级包并恢复系统。
  • 其它的一些必要的升级及管理功能。

uboot中功能的使用,请参考:uboot使用说明

设备硬件信息

SuperWRT通过SBI(SuperWRT Board Info)存储设备硬件信息。通过使用SBI,SuperWRT系统及定制的uboot,可以适配不同的设备。

目前SBI通过在线定制uboot的系统,与uboot一起打包下载。

当然,SuperWRT系统也支持将SBI信息绑定在系统中。但目前我们不建议使用该方式,主要是因为,这样SuperWRT系统的版本必须针对该设备进行特殊打包处理,不利于后面的长期维护。

SuperWRT系统分区结构

SuperWRT默认使用firmware分区作为系统分区,使用该分区时,可以将linux kernel及rootfs放在一个分区内,在kernel后以8字节对齐方式加入rootfs。

SuperWRT也支持单独的kernel分区和rootfs分区,在升级时,如果发现没有firmware分区,会自动将系统文件拆分到kernel及rootfs分区。

SuperWRT的启动过程

提示:这里主要针对SuperWRT系统特殊的地方进行说明。

首先,通过芯片会运行定制版本的uboot。uboot会进行如下工作:

  • 根据读取到芯片型号,自动进行相应配置(如:时钟频率,DDR,PCIE等)。
  • 加载SBI信息,并进行相应初始化。
  • 全部初始化工作完成后,进入uboot的主任务。
  • 判断复位按键是否长按,如长按则等待,等待5s后,进入网页恢复系统功能。
  • 判断用户是否按键中断系统启动,如是,则进行uboot命令行。
  • 读取配置,判断是否需要使用WAN口升级系统。
  • 解压linux内核到内存,并判断完整性,如正确则启动linux系统,将传递启动信息及SBI给linux系统。如文件破损,则读取配置,看是否有恢复文件URL及WAN连接信息使用,如有则使用WAN口恢复,如无,则进入网页恢复系统功能。

然后,启动时linux kernel会进行如下工作:

  • 读取SBI信息,初始化相应的硬件。
  • 如果使用firmware分区,则尝试定位rootfs位置,找到后设为rootfs用分区。
develop/basic_info.txt · 最后更改: 2016/06/01 01:44 由 terra