曙海教育集团论坛嵌入式硬件开发专区嵌入式硬件技术讨论专区 → 基于嵌入式系统的网络硬件防火墙的实现


  共有7668人关注过本帖树形打印

主题:基于嵌入式系统的网络硬件防火墙的实现

美女呀,离线,留言给我吧!
wangxinxin
  1楼 个性首页 | 博客 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:青蜂侠 帖子:1393 积分:14038 威望:0 精华:0 注册:2010-11-12 11:08:23
基于嵌入式系统的网络硬件防火墙的实现  发帖心情 Post By:2010-11-19 10:03:49

在本系统中,软件一共分为两个部分:即嵌入式系统实现部分和PC机用户界面实现部分。嵌入式系统实现部分主要完成对网络封包的过滤以及完成与PC的人机界面的接口。用户可以通过USB2.0接口对网络硬件防火墙进行设置,然后嵌入式系统根据用户设置的安全规则来完成对网络封包进行过滤。

  3.1  底层软件的实现

  这部分软件是网络硬件防火墙实现的关键,它主要完成四个方面的工作,即对网络封包的过滤,日志的记录并发送,对用户的报警以及跟PC机的接口。在本系统中我们采用实时操作系统UCOS,配合自己编写的TCP/IP协议栈来实现对各个网络层次封包的过滤。

  3.1.1   UC/OSII在ARM7下的移植

  UCOSII是一个完整、可移植、可固化及可剪裁的占先式实时多任务内核。它用ANSI C编写,包含一小部分汇编代码,使之可以供不同架构的微处理器使用。移植该实时操作系统是实现底层软件的第一步。移植操作系统其实是一件不简单的事情,它必须要求开发人员对目标硬件平台有很深的了解;对UCOS的原理有相当的了解;对所使用的编译器有较深入的了解。只有具备以上三点,才能成功移植该实时操作系统。要移植UCOS,只要编写三个文件即可,它们分别是:OS_CPU.H,OS_CPU_C.C,OS_CPU_A.ASM。下面就简单介绍该移植的实现过程。

  第一个是编写OS_CPU.H。在该文件中主要完成以下几个方面的工作。首先是几个数据类型的定义,如INT8U、INT16U、INT16S等,之所以这样做是因为ANSI C中并没有明确定义short、int等数据类型的实际长度,它与处理器的类型有关,隐含着不可移植性。代之以移植性强的INT8U、INT16U等数据类型,即直观又可移植。其次就是完成两个中断处理宏的定义,一个是关中断宏OS_ENTER_CRITICAL( ),另一个就是开中断宏OS_EXIT_CRITICAL( )。考虑到不是所有版本的C语言都支持C语言级的开关中断,所以编写此宏来实现C语言级的开关中断。最后就是定义栈生长方向和栈的宽度,它们分别用变量OS_STK_GROWTH和OS_STK。

  第二个是编写OS_CPU_C.C。在该文件中主要完成函数OSTaskStkInit( )的编写,该函数主要完成任务堆栈的的初始化工作,如初始化各个寄存器的状态,以及用户添加的一些任务变量等。

  第三个是编写OS_CPU_A.ASM。该文件的是移植的关键所在,在本文件中必须完成四个函数的编写工作,它们分别为OSIntCtxSw( ),OSCtxSw( ), OSStartHighRdy( )和OSTickISR( )。其中前两个函数是重中之重,它们必须用汇编语言编写,主要完成任务环境的切换工作。

<!--ecms.*-->

  在ARM7硬件平台下移植UCOSII要注意几个问题,首先是在移植系统函数或者系统宏时要尽量的调用软件中断,这样有助于简化移植工作;其次在初始化任务堆栈时,可以添加任务变量OSEnterSum这个变量来监视中断开关次数,这是关于移植的一个技巧;最后要注意为了方便编写中断服务程序,在移植时还要提供相应的汇编宏来简化用户层代码的编写。

  3.1.2 TCP/IP协议栈在UCOSII下的实现

  TCP/IP协议分为四层,分别为应用层、传输层、网络层,物理层。本系统中物理层主要包括8019的驱动程序,网络层包括IP协议和ARP协议,传输层主要包括TCP协议和UDP协议,应用层主要包括FTP、HTTP、SNMP和一些用户应用程序。由于该协议实现很复杂,这也是本系统实现的难点,下面给出该协议栈实现的函数框图:<!--工控自动化,autooo.net-->


基于嵌入式系统的网络硬件防火墙的实现

支持(0中立(0反对(0单帖管理 | 引用 | 回复 回到顶部

返回版面帖子列表

基于嵌入式系统的网络硬件防火墙的实现








签名