2 硬件子系统
Jupiter是韩国ADC公司生产的32位高速双以太网处理器,是一款低成本、高性能、建立在以太网系统基础之上的高性能价格比的处理器。该芯片内含2个10/1 00Mb/s自适应以太网接口,广泛应用于集线器和路由器的设计,其最大优点类似于ARM内核的内建32位EISC处理器,支持uClinux操作系统,是当今市场EISC系列的一个代表产品。Jupiter(EISC结构)与CISC芯片相比具有优化嵌入式应用专长、代码优化,而芯片结构外平相当。Jupiter指令的易操作性使得硬件功能实现变得更简单。
Jupiter处理器工作频率50MHz,采用16位单周期指令集,运算速度快;内含4K Cache、2个10/100Mb/s自适应双以太网控制器、最大支持640×480的彩色STNLCD控制器、2个串行的UART、2个DMA、串行SIO控制器、4个3 2位定时器及可编程I/O口、1个中断控制器、DRAM控制器、ROM/SRAM控制器;芯片系统管理器还包括内部3 2位总线的仲裁器和扩展存储器控制器;有8个3 2MB存储器空间可供用户扩展;处理器内建DHCP Client(含PPPoE、Proxy、DNS)及DHCP Server两项功能,可广泛应用于IP共享器、Sohu网关、工业现场Web服务器和浏览器、家庭网关、ADSL、工控网络控制器等。
韩国ADC公司的Jupiter芯片与其他公司的比较如表1所示。
3 软件结构
传统的嵌入式开发所针对的是一些相对简单的应用。通常只有一个简单(或固定的几个)的应用运行,实现的任务简单,并且是针对具体应用的,所以不需要复杂的任务管理、调度机制。从工程设计够用就行的角度看,使用简单的方法烧写ROM,系统启动后直接执行该程序就可以了,根本不需要操作系统参与,开发人员能够了解所有应用启动,资源管理细节,并能够管理它们。 嵌入式网关根本作用是把嵌入式设备同现有的以太网络连接起来,但又在很大程度上保持原有嵌入式网络的各自功能,所以网关必须具有解析多种协议的能力。对于这种较为复杂的应用,传统嵌入式设计的方法已经无法满足要求,必须寻求操作系统以应付多任务和复杂任务的处理。
uCliux是Linux操作系统的一种,是由Linux2.0内核发展来的,是专为没有MMU的微处理器设计的嵌入式Linux操作系统。因为大多数内核源代码都被重写,uClinux的内核要比原Linux2.0内核小的多,但保留了Linux 操作系统的主要优点:稳定性,优异的网络能力以及优秀的文件系统支持.uClinux中u表示Micr0,小的意思,C表示Cntrol,控制的意思,所以uClinux就是MicrO-C0ntroller-Linux,字面上的理解就是“针对微控制领域而设计的Linux系统”。
uClinux可以通过定制使内棱小型化,还可以加上GUI(图形用户界面)和定制应用程序,并将其放在ROM、RAM、Flash或Disk On Chip中启动。由于嵌入式uClinux操作系统的内核定制高度灵活性,开发者可以很容易地对其进行按需配置,来满足实际应用需要。又由于uClinux是源代码公开的,因此开发人员只要了解内核原理就可以自己开发各类驱动程序。
Jupiter芯片是没有内存管理单元(MMU)的处理器,而uClinux很好地解决了没有MMU内存管理问题,采用存储器的分页管理.系统在启动时把实际存储器进行分页。系统对于内存的访问是直接的(它对地址的访问不需要经过MMU,而是直接送到地址线上输出),所有程序中访问的地址都是实际的物理地址。操作系统对内存空间没有保护(这实际上是很多嵌入式系统的特点),各个进程实际上共享一个运行空间(没有独立的地址转换表)。
4 网关的uCIinux的开发
Jupiter已向用户免费提供了uCinux操作系统源代码及其相关参考通信类源程序。开发板利用串行口与PC机串行口相连接,利用Cygwin仿真Linux操作系统环境,由ADC公司提供的EISCStudio软件包对用户程序进行在线Debg通信与调试。提供C编译器链接、反汇编窗口和存储器窗口、汇编和C源程序调试窗口,可单步、宏单步、断点设置、断点运行、连续运行、全速运行等,通过变量窗口可观察并可修改源程序的变量,软件支持模拟调试和在线调试两种方式。
4.1 uClinux内核的生成
首先安装并运行Cygwin(Windows环境下虚拟Linux系统的软件)
进入X:cygwinhomeadministratoruClinux-eiSCuClInux-24.20(X为Cygwin安装所在分区)
在Cygwin环境下执行
(1)>mike mroper
(2)>make Jupiter_c0nfig
(3)>make 01dconfig
(4)>make dep
(5)>maKe
执行完上述步骤后,生成了romimage.bln文件,其中包括seloader.bin(bootloader文件)、linux.bm(1inux内核文件)和rdgz.bin(压缩的ramdisk文件)
4.2 uClinux内核的移植
通过烧录器将seloader.bin下载到系统的EPROM芯片上后进行如下操作。
①把Jupiter的cOMl口连PC的COM0,启动超级终端,并把JUPiter网口0连到内部网上。启动后,应该在超级终端窗口中看到如下信息:
seloader is se3208 Boot Loader
CPyright(C)2002 ad chips
seloader comes With ABSOLUTELY NO WARRANTY:Read the
GNU GPL for details
AutObOOt abortedTvpe"help"to get a list of commands
seloader>
② 在PC上安装并运行两个服务程序DHCP和TFTPD。
DHCP(动态主机分配协议)是一个简化主机IP地址分配管理的TCP/IP 标准协议。用户可以利用DHCP服务器管理动态的IP地址分配及其它相关的环境配置工作(如DNS、WINS、Gateway的设置); tftpd是第三方的ftp工具,实现TFTP Internet 标准。该标准不要求用户名和密码。
③通过dhcp设置用户网关内部网络设备物理地址。Bootp sever configuration Option->add static address entry:Set the Hardware address by。"00:01:23:45:67:00"At the IP address first three octet must be same with server IPaddress and last octet can be anyone 设置完后自动启动,在状态栏中显示:1istening onport 67。
④ 设置TFTPD.设置tftPd->configure.>homedirectory:为:X: ftpserver。在这目录里存放了 linux.bin,rdgz.bin文件。然后tfptd->start,在状态栏里显示: serveris running。
⑤ 在超级终端中执行bootp命令。命令:seloader>bootp。
⑥执行tftp下载linux.bin命令:seloader>tftp linuxbin kernel。
⑦执行tftp下载rdgz.bin命令:seloader>tftp rdgzbin ramdisk。
⑧执行boot启动uclinux 命令:seloader>boot。
Startingkernel……
inhead-se3208.S
Linux version2.4.20-uc0(administrator@ZENGYU-X14PHIPI)(gccversion egos-2.91
66 19990314(egcs-1.1.2 release)#1 Thu Apr 10 15:43:30 2003
Architecture:eisc-jupiter
.
.
.
Command:hosmamejupiter
Command:mount-t proc proc/proc
command:cat/etc/motd
Welcome to
For further information check:
htto://www.adc.co.kr/
Command:ifconfig eth0 192.168.0.3
Command:ifconfig ethl up
Command:ifconflg ethl 192.168.10.3
Command:roHte add default gw l92.168.0.2
Command:ifconfigl0 127.0.0.1
Command:route add-net l27.0.0.0 netmask 255.0.0.01o
Conwnand:#dhcped-P-a eth0&
Execution Finished,Exiting
Sash command shell(version.1.1.1),(pgid:14)
即在网关上建立了uClinux环境。驱动程序和应用程序的开发即可在LinUX平台下进行。
5 总结
本文介绍了一种基于Jupiter处理器的网关设备·实际上,这些设备还需要针对特定的网络接口进行二次开发。平台提供的是以太网和RS485、RS232端的接入,编译开放环境(编译器、调试器、函数库)。具体的二次开发包括针对特定的嵌入式设备网络接口器件开发驱动程序,针对具体的控制解决方案开发控制程序,实现具体的控制策略。