基于PC104总线的嵌入式以太网卡设计
扫描二维码
随时随地手机看文章
引言
近几年来,PC机技术向嵌入式应用领域渗透的步伐逐渐加大,嵌入式PC机以其超小的体积、极低的功耗散热,无需机箱和底板就可直接叠装组合成各种系统而受到用户的欢迎,因而具有巨大的应用潜力。早期的嵌入式PC机产品是基于8位和16位的ISA总线的标准化母板的PC机,后来又开发出多种小型化嵌入式PC产品。当前,国际上小型化嵌入式PC产品中,较有代表性的当数PC104,其尺寸仅为9.14cm×9.65cm,不用插板和总线母板,模块之间采用层叠式封装。PC104与ISA规范完全兼容。因此,用户能够充分利用目前被广泛认可的PC结构体系、现有的软硬件资源,提供自己的需求组合成更多的功能,开发出新型的PC104产品,以大大缩短产品开发周期及成本。
随着信息网络技术的发展,工业现场应用中往往存在大量的设备上网的需求。目前,为了实现网络化系统,工业设备都必须以网络终端的形式出现在系统中。由于工业控制系统设备的多样性和分布性,智能模块方式的嵌入式终端已成为主流设备控制方式,而这种网络终端大多用单片机或数字信号处理器来实现。在功能单一及性能要求不高的情况下,采用8位或16位的MCU往往满足了现场要求。随着硬件成本的降低及市场上需要更大功率、复杂而功能丰富的嵌入应用的增加,在嵌入式处理器的高端产品市场上,32位机器得到了很大的成长空间。典型的有Advanced RISC Machines公司的ARM系列、IBM及Motorola公司的PowerPC、Silicon Graphics公司的MIPS芯片等。Intel公司也在它原有的X86系列中专门增加了一种产品系列386EX,其软件与其它X86微处理器保持完全一致。基于此,本文提出了一种利用Intel 386EX嵌入式微处理器设计智能以太网扩展模块NP104的方法。利用此模块,可以实现工业现场应用中基于PC104或工业PC的智能电子设备快速上网的需求。
1 基本组成及功能概述
NP104是一款支持PC104总线的智能以太网扩展模块。NP104占用PC104总线(或ISA总线)上的一段存储器空间(约4KB),通过高速双口RAM与主系统交换数据。NP104智能网络扩展模块的主要功能包括以下两方面:实时接收系统CPU提交的数据,按照TCP/IP协议进行封装,通过板的以太网控制接口发往目的地;自动接收网络上发来的数据,并进行解包得到应用数据,放入双口RAM供系统CPU读取。
NP104主要针对基于PC104或工业PC的智能电子设备,需要快速实现设备网络化的应用领域而设计的。由于是通过双口RAM与系统CPU交换数据,客户只需在现有设备中加插1张NP104板卡,在程序中增加简单的几行代码,即可实现通过网络传送数据的目的,最大限度地缩短新产品的入市时间。另外,NP104支持DOC2000大容量电子盘,可实现嵌入式Web服务器等高级网络应用。
图1是NP104的硬件功能框图。从图1可知,NP104是一个基于Intel 386EX的完整嵌入式系统,其主要技术指标如下:
*仅使用PC104的XT总线部分,可与所有PC104主板或带PC104接口的工控PC主板配合使用;
*系统CPU对NP104上的双口RAM读写速度不低于500 KB/s,保证PC104读写速度不影响网络传输速度;
*NP104上386EX的工作时钟为40MHz,一般指令周期100ns,满足绝大部分应用的需求;
*标准10Mbps以太网接口,10Base-T连接方式;
*双口RAM占用的存储器空间可配置;
*可使用PC104的IRQ5中断资源,以便快速响应通信请求;
*标准PC104板卡尺寸(96mm×90mm)。
NP104内部主要技术指标为:
*48MHz Intel386EX高性能、32位微处理器;
*512KB Flash存储器,带磁盘文件驱动软件接口;
*10Base-T以太网控制接口,NE2000兼容;
*1个标准RS232C串口(9线);
*可直接支持M-System公司的DiskOnChip2000系列大容量电子盘芯片;
*供电电压:5(1±0.05)V,工作电流570mA;
*标准PC104尺寸:96mm×90mm,提供标准安装孔;
*工作温度-10~65℃,工作湿度为5%~95%,满足国际GB7261第21章规定的电子产品湿热试验要求;
*NP104可保证不影响其嵌入的整机对图像GB6162规定的干扰试验以及国际GB/T14598.10规定的参级快速瞬变干扰试验的通过。
2 系统设计说明
NP104内部是一个以386EX为核心的嵌入式系统,通过双口RAM与PC104主CPU进行数据交换。以下把NP104扩展板内CPU称为386EX,PC104上的系统CPU称为主CPU。作为10 Mbps以太网接口,采用8位数据总线宽度即可满足应用需求。双口RAM器件选用4K×8bit的IDT7134LA,器件封装为PLCC52。
双口RAM数据区定义如表1所列。
从表1可看出,双口RAM被分成2个基本部分,分别对应主CPU从NP104板中读取来自于网络的应用数据,以及主CPU把应用数据写入NP104缓冲区,NP104按照命令作相应的操作。以下详细描述每一数据段的功能定义。
表1
地址偏移 | 基本描述 | 主CPU | 386EX |
0x0000x03f | 状态字节,输入数据包准备好;硬件敏感 | 可读、写 | 可读、写 |
0x0400x07f | 控制字节,主CPU中断使能;硬件敏感 | 可读、写 | 只读 |
0x0800x0bf | 保留;硬件敏感 | ||
0x0c00x0ff | 保留;硬件敏感 | ||
0x1000x103 | 输入缓冲区初始化状态(=0x2345678) | 只读 | 可读、写 |
0x1080x10f | 信号灯字节(0:空闲,1:忙):先读后写 | 可读、写 | 可读、写 |
0x1100x1ff | 返回参数区,240字节 | 只读 | 可读、写 |
0x2000x7ff | 输入数据缓冲区,1 536字节 | 只读 | 可读、写 |
0x8000x83f | 状态字节,输出数据包准备好;硬件敏感 | 可读、写 | 只读 |
0x7400x87f | 控制字节,386EX中断使能;硬件敏感 | 可读、写 | 只读 |
0x8800x8bf | 保留;硬件敏感 | 可读、写 | 只读 |
0x8c00x8ff | 保留;硬件敏感 | 可读、写 | 只读 |
0x9000x903 | 输出缓冲区初始化状态(=0x12345678) | 可读、写 | 只读 |
0x9080x90f | 信号灯字节(0:打开,1:锁定):先读后写 | 可读、写 | 可读、写 |
0x90f0x9ff | 输出参数,240字节 | 可读、写 | 只读 |
0xa000xfff | 输出数据缓冲区,1 536字节 | 可读、写 | 只读 |
(1)初始化过程
主CPU对输入缓冲区进行初始化,顺序如下:①输入数据包准备好状态字节清零;②信号灯字节清零,即空闲;③根据需要设备中断使能位;④初始化状态置为0x12345678。386EX对输出缓冲区进行初始化,顺序如下:①输出数据包准备好状态字节清零;②信号灯字节清零,即空闲状态;③根据需要设备中断使能位;④初始化状态置为0x12345678。
(2)信号灯和状态字节的定义及操作
为了保证双边CPU都充分发挥其作用,发生在NP104板上双口RAM的数据通信,不采用阻塞式的握手线方式,而是采用非阻塞式的信号灯的通信方式。基本操作原则为:当CPU要对某一缓冲区数据进行读或写操作时,需首先检查相应的信号灯字节,若信号灯处于空闲,则把信号灯设置为忙。之后,就可对相应缓冲区进行操作了,操作完成后,再把信号灯设置为空闲。如果仅仅是查询状态,不需要操作信号灯。对缓冲区进行任何操作的前提是缓冲区的初始化状态字(长整型)已被设置为0x12345678。
(3)系统主CPU与386EX数据通信过程
在PC104系统主CPU与NP104通信过程中,主CPU与386EX通过双口RAM进行数据的收发工作。系统CPU向输出缓冲写入数据,则386EX从输出缓冲区读取数据。相应地,386EX从网络中接收数据并写放输入缓冲区中,然后,系统CPU从输入缓冲区中读取数据。这里,输入及输出缓冲区都是相对于系统主CPU而言的。
(4)中断使能字节及使用
NP104卡支持主CPU采用中断方式来读取输入缓冲区的数据,之前主CPU需进行设置相应的中断使能位为1的操作。当386EX把RcvDatRdy置1时,NP104卡有专门的硬件逻辑检测这一操作,从而设置对主CPU的中断请求线IRQ#为1;当主CPU把RcvDatRdy清0时,NP104卡将使中断请求线IRQ#复0。相应地,386EX也可以采用中断方式来读取输出缓冲区的数据,之间386EX需进行设置相应的中断使能位1的操作。当主CPU把SndDatRdy置1时,NP104卡有专门的硬件逻辑检测这一操作,并设置对386EX的中断请求线INT3(IRQ7)为1;当386EX把SndDatTdy清0时,NP104卡将使中断请求线INT3复为0。
(5)资源分配说明
双口RAM在386EX的存储空间映射区域为A8000H~A8FFFH;双口RAM在PC104空间映射区域为D8000H~D8FFFH;512K电子盘的页地址寄存器口地址为0X300H。
3 模块驱动程序设计及测试
嵌入式应用软件典型的开发方式是“宿主机/目标机”方式。首先,利用宿主机上丰富的资源及良好的开发环境开发和仿真调试目标机上的软件。然后,通过串行口或网络将交叉编译生成的目标代码传输并装载到目标机上。最后,目标机在特定的环境下运行。
PC104正常工作必须要有驱动程序的支持。此驱动程序采用ANSI C语言编写,由于系统PC兼容的程序运行环境,因此可以充分利用PC上现有的廉价软件资源,而无需专门的开发调试系统。程序在Borland C3.0集成开发环境下实现。通过与封装好的TCP/IP协议栈的链接,NP104提供了双口RAM的驱动程序。驱动程序由包含几个源文件的工程文件通过编译连接TCP/IP协议栈而生成.EXE文件,通过BC远程下载到NP104硬件系统的电子盘中。系统BIOS对此.EXE文件进行调用,一旦嵌入式扩展模块的设备正常运行,系统就具备了网络通信能力,其基本的程序流程框图如图2所示。由此可见,在系统正常工作状态下,NP104一直处于循环检查以太网及中断响应主系统命令的状态,以保证主系统设备与网络的正常通信。相应地,对于主系统而言,NP104的接口驱动程序包括12个功能调用,即双口RAM初始化、初始化以太网接口、建立与关闭TCP连接、读取TCP/IP网络接口数据及发送数据至TCP/IP网络接口等功能。本系统中的软件是在基于DOS操作系统之上运行的,另外本系统亦可提供基于多任务RTOS如VRTX、DeltaOS的应用环境。
系统测试时,NP104与PC104主板构成基本环境,NP104与局域网相接,PC104主板上的测试程序(采用BC编写)通过调用NP104接口程序,与LAN上的上位机进行通信。同时,在LAN上连接上位PC机,运行相应的测试程序(采用VC编写),以检验NP104的通信功能。在系统测试过程中,尽可能地考虑了通信过程中可能出现的各种异常情况,并采取了相应的处理措施。比如在通信过程中,NP104运行异常中止并重新复位运行后,此时PC104能够及时检查到NP104的复位信息;另外,当PC104主机出现异常重新启动后,可使用InitNP104()函数重新启动NP104。在此函数中,通过软件的方式实现了硬件的复位,以确保NP104正常通信。
结束语
利用Intel嵌入式微处理器386EX设计的基于PC104总线的智能网络扩展模块可以满足基于PC104总线或工业PC的智能电子设备的快速上网需求,在中国电力科学研究院电力电子公司的现场应用中,利用此方法设计的模块已能正常运行。随着嵌入式应用的日益深入,各种现场应用对高性能及实时性的求也不断增加,RTOS将在嵌入式系统设计中占据主导地位,嵌入式Linux也将在嵌入式系统中得到越来越广泛的应用。基于PowerPC、MIPS、StrongARM微处理器的产品也将不断出现在未来的现场应用中。