拿起手术刀 深入剖解路由器的“心脏”技术

时间:2018-09-06来源:网络

⑵以太网交换电路设计介绍

以太网交换电路主要是采用五口交换芯片RTL8305SB来实现。RTL8305SB是一个集成了片内存储器,五个MAC层接口,五个物理层(PHY)接口的l0M/l00M自适应的五口交换芯片,该集成芯片具有低功耗,可灵活配置为五口小型办公及家用(SOHO)交换机,家用网关,xDSL路由器及其它智能应用。要实现必要的网络功能,这部分的电路是关键中的关键。

操作系统介绍

1、Linux

Linux是一个诞生于网络,成长于网络且成熟于网络的奇特的操作系统。1991年,芬兰大学生Linus Torvalds萌发开发了一个自由的UNIX操作系统的想法,并将Linux通过Internet进行发布。从此一大批编程人员加入到开发过程中来,Linux逐渐成长起来。Linux一开始要求所有的源代码必须公开,后来转向GPL( GNUG eneral Public Licence),成为GUN的阵营的主要一员。只要遵守GPL的规定,就可以免费获得复制,因此Linux是一个免费软件。同样,Linux下遵循GPL规定的C, C++, Java等一系列的工具开发包,从功能的角度上看并不亚于商用的开发包,但却可以极大的降低开发成本,这一优势是其它商用操作系统无法比拟的。

Linux 操作系统最突出的是网络部分,基本上所有的网络协议和网络接口都可以在Linux上找到,Linux的内核比标准的UNIX处理网络协议更加高效,系统的网络吞吐性能更好,这也是Linux网络服务器市场上占据较大的市场分额的重要原因。对于一般的小型的SOHO路由器,Linux的网络技术无疑是其开发运行的最佳选择,Linux完全能对给其提供全方位的网络技术支持。Linux作为互联网的产物,许多关于Linux的文档可以在Internet上下载到。

2、uClinux操作系统

uclinux是嵌入式Linux的一个分支,在uClinux这个英文单词中u表示Micro,小的意思,C表示Control,控制的意思,所以uclinux就是Micro-Control-Linux,字面上的理解就是“针对微控制领域而设计的Linux系统”。同标准的Linux相比,由于uClinux自身不支持MMU,多任务的实现就需要技巧了。但是,在uClinux上运行的绝大多数的用户程序并不需要多任务。另外,针对uclinux内核的二进制代码和源代码都是经过了重新编写,以紧缩和裁剪基本的代码。这就使得uClinux的内核同标准的Linux内核相比非常之小,但是它仍保持了Linux操作系统的主要的优点,如稳定性、强大的网络功能和出色的文件系统支持等。uclinux包含Linux常用的API、小于512K的内核和相关的工具。操作系统所有的代码加起来小于900KB。

uClinux简介

uClinux的基本架构

在PC机上开发应用程序的用户都会有这样的感觉,PC机有完善的操作系统并提供应用程序接口(API),开发好的应用程序可以直接在操作系统上运行。虽然嵌入式系统的应用程序完全可以在裸板上运行,但为了使系统具有任务管理、定时器管理、存储器管理、资源管理、事件管理、系统管理、消息管理、队列管理和中断处理的能力,提供多任务处理,更好的分配系统资源的功能,用户就需要针对自己的硬件平台和实际应用选择适当的嵌入式操作系统(Embedded Operating System,以下简称EOS)。

由于本文实例中的硬件平台是以不含MMU (Memory Management Unit,内存管理单)的S3C4510B为核心的,因此采用不带MMU的ARM 微处理器的嵌入式操作系统uclinux。uclinux 是一个完全符合GNUIGPL公约的操作系统,完全开放代码,现在由Line。公司支持维护。uClinux从Linux 2.0(2.4内核派生而来,沿袭了主流Linux的绝大部分特性。它是专门针对没有MMU的CPU,并且为嵌入式系统做了许多小型化的工作.适用于没有虚拟内存或内存管理单元(MMU )的处理器,例如ARM7TDMI。

它通常用于具有很少内存或Flash的嵌入式系统。uclinux是为了支持没有MMU的处理器而对标准Linux作出的修正。它保留了操作系统的所有特性,为硬件平台更好的运行各种程序提供了保证。在GNU通用公共许可证(GNU GPL)的保证下,运行uClinux操作系统的用户可以使用几乎所有的Linux API函数,不会因为没有MMU而受到影响。由于uClinux在标准的Linux基础上进行了适当的裁剪和优化,形成了一个高度优化的、代码紧凑的嵌入式Linux,虽然它的体积很小,uClinux仍然保留了Linux的大多数的优点:稳定、良好的裁剪性、优秀的网络功能、完备的对各种文件系统的支持、以及标准丰富的API等。

BootLoader:负责uCLinux内核的启动,它用于初始化系统资源,包括SDRAM。这部分代码用于建立uCLinux内核运行环境和从Flash中装载初始化内核镜象。

内核初始化:uCLinux内核的入口点是start kernel() 函数。它初始化内核的其他部分,包括捕获,IRQ通道,调度,设备驱动,标定延迟循环,最重要的是能够fork init进程,以启动整个多任务环境。

系统调用函数/捕获函数:在执行完“init”程序后,内核对程序流不再有直接的控制权,此后,它的作用仅仅是处理异步事件(例如硬件中断)和为系统调用提供进程。

设备驱动 :设备驱动占据了uCLinux内核很大部分。同其他操作系统一样,设备驱动为它们所控制的硬件设备和操作系统提供接口。

文件系统 :uCLinux最重要的特性之一就是对多种文件系统的支持。这种特性使得uCLinux很容易地同其他操作系统共存。文件系统的概念使得用户能够查看存储设备上的文件和路径而无须考虑实际物理设备的文件系统类型。ucLinux透明的支持许多不同的文件系统,将各种安装的文件和文件系统以一个完整的虚拟文件系统的形式呈现给用户。uClinux带有一个完整的TCP/IP协议,同时它还支持许多其他网络协议。uclinux对于嵌入式系统来说是一个网络完备的操作系统。

3、uClinux开发环境

⑴GNU开发套件

GNU软件包括C编译器GCC,C ++编译器G++,汇编器AS,链接器LD,二进制转换工具(OBJCOPY,OBJDUMP),调试工具(GDB.GD BSERVER,KGDB)和基于不同硬件平台的开发库。在GNU GCC支持下用户可以使用流行的C/C++语言开发应用程序,满足生成高效率运行代码、易掌握的编程语言的用户需求,这些工具都是按GPL版权声明发布,任何人可以从网上获取全部的源代码,无需任何费用。

1 2 3 4 5 6 7

关键词:

加入微信
获取电子行业最新资讯
搜索微信公众号:EEPW

或用微信扫描左侧二维码

相关文章

查看电脑版