|
本帖最后由 佐须之男 于 2013-7-12 22:56 编辑
Tomato 固件开发教程之硬件基础篇
对BCM处理器的了解可以加深对Tomato内核部分的认识,Tomato的内核部分非常晦涩因为BCM并没有公布BCM处理器的资料,有的只有那短短几页的介绍。希望这篇文章能让想开发Tomato的程序员或者广大Tomato爱好者们少走些弯路。本文以BCM5354作为BCM处理器硬件介绍的模板处理器,该文是我从开发Tomato到现在的一些体会和研究心得,真心希望能帮助大家理解BCM处理器和Tomato不为人知的另一面。
1.BCM5354集成的哪些功能?
BCM5354是一款集成度非常高的网络处理器,集成了一块MIPS处理器,54G无线芯片,USB 控制器,10/100M 交换机芯片,SD/DDR 内存控制器,JTAG等等功能。下面是一张BCM5354的部分框图。
2.BCM5354内部的芯片是如何连接的?
上图中用了非常简洁的内部总线来说明BCM5354的总线结构。根据对Tomato源码的分析发现,该总线被称为是“SSB”的一种总线。SSB是Sonnics Silicon Backplan 的缩写。该总线的作用非常类似于PC的主板,不同的是作为用户我们不能随便添加自己想要的芯片并且我们也无法用肉眼看到该总线的存在。通过读取SSB的寄存器或者IO可以知道处理器到底具备了哪些特性或者说了集成了哪些芯片。 Linux在初始化的时候SSB系统的初始化是非常靠前的。因为SSB子系统不初始化好,内部的芯片是无法使用的。通过设置SSB的寄存器可以来开启/关闭特定的芯片。SSB子系统也被广泛用于BCM的无线网卡上。
3.BCM5354交换机芯片中你所不知道的一面
BCM5354的交换机是BCM ROBO 5325系列的。官方成该款芯片的是不管理的交换机芯片的意思是改款芯片基本不能用来做为可管理交换机用,但是仔细研究Tomato的源码后,发现该款芯片不像BCM说的那么弱,至少能支持VLAN。但该款芯片还一个非常具有诱惑力的功能至今未别人发掘出来,那就是出站/入站的端口镜像。并且该功能非常强,能对指定IP和交换机上的端口进行镜像。比通过内核实现的镜像功能无论从功能还是性能上强了很多。
4.GPIO的一些误区
GPIO是 Genel Propose I/O interface 的缩写,和单片机上GPIO定义稍微有些出入。在早期没深入研究Tomato时,认为可以通过编程来点亮和熄灭LAN对应的led。后来才发现LAN的LED直接连接到交换机的,并非使用了CPU的GPIO端口。
5.关于BCM5354 USB速度慢的看法
BCM6358的USB远远高于BCM5354,而主频也才高60MHZ而已。首先猜测的是BCM5354的总线限制了USB的速度,但是BCM6358总线下挂载的芯片远远多余BCM5354,理论上BCM5354的总线能传输的数据量量应该比BCM6358更多,那为什么USB的性能还那么差呢。我个人认为BCM5354的处理器USB速度慢在于BCM的USB控制器设计有问题。BCM5354应该是早前设计的,效率不高可以理解。到了BCM6358后,又增强了USB控制器的性能。但是设计的还是很失败,因为BCM4718(RT-N16) 上的USB性能还是非常差和BCM6358拉不开差距,明明主频相差200MHZ了。所以总结下来,BCM的USB控制器是阿斗啊,人家Atheros比你强太多了。
BCM这方面的资料非常少,基本很难挖掘出来一些实质性的东西。- 专业开发定制和修改有线路由器开发,无线路由器开发,软路由开发等嵌入式Linux,OpenWRT,DD-WRT,Tomato系统固件和系统,拥有业内顶尖的技术和经验,有成熟稳定的Ralink,Broadcom,Atheros,MTK,X86系统方案,和国内外多家知名公司有业务合作关系。
- 软件业务合作联系 一八零一三五八二一二五 陆工
- 网站地址 http://www.router.tw
复制代码 |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
×
评分
-
查看全部评分
|