基于ATM9TDMI+Linux的SOHO 路由器设计方案
DM9000 与S3C2410X、RJ45 接口电路如图2 所示,DM9000E 芯片的引脚INT 与S3C2410X 芯片的外部中断信号EINT14 相连,S3C2410X 片选信号nGCS4 和地址线MA2分别连接DM9000 的AEN 引脚和CMD 引脚。SA6 到SA0 对应地址总线,而SA9 与SA8引脚设置为高电平,SA7 引脚设置为低电平,用来片选DM9000;3C2410X 的nOE 引脚连接DM9000 的读引脚IOR#,nWE 引脚连接DM9000 的写引脚IOW#,并将S3C2410X 数据线MD[0..15]与DM9000 的数据线SD[0..15]连接,实现数据传输。将 RTL8305S 第5 端口设定为一个MII 接口与以太网控制芯片DM9000R MII 接口相连,RTL8305S 与四端口隔离变压器和RJ45 接口与图2 类似。
3 系统软件构建
软件构建主要包括Linux操作系统移植和NAT 技术实现。
3.1Linux操作系统移植
(1) Bootloader 移植
Bootloader 是与系统硬件高度相关的初始化代码,担负着初始化硬件和引导操作系统的双重责任。本文使用在嵌入式系统开发中应用最广的引导代码U―BOOT。移植具体步骤:1 针对目标平台对各配置文件做相应的修改。2 建立相应地配置文件。3 修改U―BOOT的makefile 文件,在其中加入对目标系统的编译支持,并运行以下命令$make clean、$makesmdk2410-config、$make all 生成目标文件。最后通过JTAG 接口将u-boot.bin 文件烧写到Flash 的零地址,复位后就可以引导系统。
(2)Linux内核构建、移植与根文件系统实现
1 修改makefile 文件。2 使用make manuconfig 命令来配置内核。3 使用make dep、makezImage 命令对内核进行编译,得到内核压缩镜像文件zImage 件。4 Bootloader 引导程序通过以太网接口把Linux 内核移到目标系统的Flash 上。5 构建根文件系统。
3.2 Netfilter 框架分析与NAT 技术实现
Netfilter 是Linux2.4 内核实现数据*滤、数据包处理和NAT 功能的框架。它为每种网络协议(IPv4, IPv6 等)定义一套钩子函数(IPv4 有5 个钩子函数),内核中任何模块可以对协议中的钩子函数进行注册与挂接,这些钩子函数在数据包流经协议栈时被调用,注册后的模块可以检查、修改、丢弃数据包及指示Netfilter 将数据包传入用户空间队列,进行异步处理。一个数据包按图3 所示的过程通过Netfilter 系统。
数 据 包 从 左 边 进 入 系 统 , 进 行 IP 校验后, 数据包经过第一个钩子函数NF_IP_PRE_ROUTING[1]进行处理;然后就进入路由代码,其决定该数据包是需要转发还是发给本机的;若该数据包是发给本机的,则该数据经过钩子函数NF_IP_LOCAL_IN处理后传递给上层协议;若该数据包应该被转发则它被NF_IP_FORWARD[3]处理;经过发的数据包经过最后一个钩子函数NF_IP_POST_ROUTING[4]处理后,再传输到网络上。
本地产生的数据经过钩子函数NF_IP_LOCAL_OUT[5]处理后,进行路由选择处理,然后经过NF_IP_POST_ROUTING[4] 处理以后发送到网络上。Netfilter 框架支持多种NAT,NAT 一般可分为源NAT 与目的NAT。源NAT 在数据包经过NF_IP_POST_ROUTING 时修改数据包的源地址,伪装是一个特殊的SNAT,目的NAT在数据包经过F_IP_LOCAL_OUT 或NF_IP_PRE―ROUTING 时修改数据包目的地址。
本文利用 IPtables 实现IP 伪装、Port Forward 端口转发、ALG。IPtables 是一个在Linux2.4内核中基于Netfilter 框架的数据包选择系统。地址转换会导致许多对NAT 敏感的应用协议无法正常工作,而地址转换应用网关(NAT ALG, Application Level Gateway),对载荷中的IP地址和端口号进行替换,从而实现对该协议的透明中继。IPtables 要求数据包流经指定的规则表,其中设定的规则用于实现数据*滤,网络地址转换及数据包处理,从而实现多台主机共享一个合法的IP 地址访问因特网,并实现*滤防火墙。
4 结束语
本文作者创新点:提出了一种基于嵌入式 Linux 操作系统的SOHO路由器设计方案。与现有设计方案相比,本文采用ATM9TDMI+Linux 构架设计SOHO路由器,能满足高速接入网用户需求,具有更高地系统稳定性和用户安全性。
linux操作系统文章专题:linux操作系统详解(linux不再难懂)
评论