1 PICl8F97J60网络单片机
1.1 网络特性
PICl8F97J60系列器件具有嵌入式以太网控制器模块。这是一个完整的连接解决方案,完全实现了介质访问控制(Media ACCess Control,MAC)和物理层收发器(Physical Layer Transcei、ver,PHY)模块,只需使用2个脉冲变压器和一些无源元件就可以将单片机直接与以太网相连。以太网模块符合IEEE 802.3中所有关于双绞线网络10Base—T连接的规定。它在内部实现了一些数据包过滤机制,用于限制传入的数据包。它提供了一个用于实现快速数据吞吐的内置DMA模块,以及硬件IP校验和计算;另外还提供了2个用于指示链路和网络活动的LED输出。以太网模块包含以下5个主要功能模块:
①PHY收发器模块——对传输双绞线接口上的模拟数据进行编码和解码,并通过网络发送和接收;
②MAC模块——实现了符合IEEE 802.3规范的MAC逻辑,并提供了用于控制PHY的MIIM(Media In—dependent Interface Management);
③独立的8 KB RAM缓冲区——用于存储已经接收和将要发送的数据包;
④判优器——在单片机内核、DMA、发送和接收模块发出请求时,控制对RAM缓冲区的访问;
⑤寄存器接口——用作以太网模块和单片机特殊功能寄存器(SFR)之间命令和内部状态信号的译码器。
1.2 应用实例
图1表明,基于互联网的远程控制系统是由连接互联网的主PC机和监测装置构成的。其中,监测装置代表某个接入网络的嵌入式系统,它既可以是工控应用中的温度、压力及流量等监控设备,也可以是家庭应用中的网络家电等。网络单片机为该监测装置的核心,其不仅可以采集和处理温度或流量等传感器数据,还具有嵌入式网关的功能,可以实现监测装置的网络接入。互联网上的主PC机通过Web形式访问监测装置,实现远程监控。
2 开发工具
2.1 PICDEM.net2开发板
PICDEM.net.2开发板除了包含PICl8F97J60核心器件外,与网络接入有关的功能还包括:串行EEPROM提供256 Kb(32 KB)存储空间,可以用来存储网页和一些配置信息;可以通过SPI接口编程;RJ一45(10Base一T)标准连接器,其J1连接到PICl8F97J60;RJ一1l(6线)标准连接器,用于通信和器件编程或调试的USB连接;串口RS232,可以用来配置芯片的IP和以太网地址,也可以用来下载新的网页到EEPROM等。
此外,开发板还提供了Mirochip公司的独立以太网控制器ENC28J60,用来开发不带以太网控制器的单片机,可通过标准的SPI接口连接。开发板提供的其他设备包括LCD显示器、LED指示灯、按钮开关、温度传感器、用于连接扩展卡的插座或边缘连接器、实验用布线区(面包板)及电源等。
通过PICDEM.net2开发板可以方便地开发各种定制的PICl8F97J60应用系统,经裁剪或扩充,完成应用系统的硬件电路设计。
2.2 在线调试器MPLAB ICD2
选择MPLAB ICD2作为在线调试器和烧写器。Microchip公司提供的在线调试器MPIAB ICD2是一款功能强大而成本低的运行时开发工具,通过RS232或高速USB接口与主PC机相连。与ICE相比,其仿真功能有一些限制,但有如下突出的优点:在产品量产后,只要保留6芯插针,就可直接与ICD2相连;ICD2可以在目标应用中对固件再编程,而不需要其他在线烧写器设备。通信方式使用默认的USB接口方式。为了避免目标板负载过重对ICD2带来损害,应采用目标板独立供电。
2.3 Microchip TCP/IP协议栈
Microchip公司提供免费的TCP/IP软件栈,为应用开发提供了便利。Microchip TCP/IP协议栈是一套程序,它服务于标准的、基于TCP/IP的应用程序,或者应用在定制的、基于TCP/IP的应用程序中。本应用系统使用的是该协议栈的4.02版本。
类似于TCP/IP参考模型,Microchip TCP/IP协议栈将TCP/IP协议栈分为多层,如图2所示。每层的实现代码驻留在一个独立的源文件中,而服务和应用程序编程接口(API)是通过头文件或包含文件定义的。与TCP/IP参考模型不同的是,Microchip TCP/IP协议栈中的许多层可以直接访问在它下面的一层或多层。关于一个层是否绕过相邻模块来获得所需的服务,主要根据开销的大小,以及服务是否需要智能处理后才能传递到下一层来决定。与传统TCP/IP协议栈实现方法的不同之处是添加了2个新模块:StackTask和ARPTask。Stackrrask管理协议栈及其所有模块的操作,而ARPTask管理地址解析协议(Address ResohJtion Protocol,ARP)层的服务。Microchip TCP/IP协议栈使用了协同式多任务处理技术。在协同式多任务处理系统中,同时存在多个任务,每个任务执行自己的作业然后交回控制权,这样下一个任务才能够执行作业。StackTask和ARPTask都是协同式任务。Microchip TCP/IP协议栈尽管没有实现通常TCP/IP协议栈中的所有模块,但是在需要时可以将它们作为单独的任务或模块来实现。
2.4 Stack Manager
Microchip TCP/IP协议栈由多个模块组成。在使用模块之前,用户必须查阅并了解它的用途和API。函数的语法、参数、返回值、前提条件等具体问题可以在编程时针对具体的问题单独查阅。
使用Microchip TCP/IP协议栈的任何应用程序都必须执行一定的步骤,以确保在适当的时间调用相应的模块(例如IP、TCP、UDP和ICMP)。无论主应用程序逻辑如何,管理协议栈模块的任务都始终相同。
为了减轻主应用程序管理各个模块的负担,Micro—chip TCP/IP协议栈使用了一个特殊的应用程序层模块,称为“StackTask”或“Stack Manager”。Stack Manager以协同式任务处理方式来实现。被赋予处理时间后,它将轮询MAC层是否存在有效的数据包。若接收到一个包,它将对其进行解码并路由到相应的模块做下一步的处理。
Stack Manager。不是Mirochip TCP/IP协议栈的一部分,它与协议栈一起提供给用户。这样主应用程序除了自己的工作以外,不需要管理协议栈模块。执行StackManager任务之前,必须通过调用StackInit()函数来对其进行初始化。这个函数按正确的顺序初始化Stack Man—ager变量和各个模块。一旦调用Stacklnit(),主程序就必须定期调用StackTask()函数,以确保及时处理所有进入的包,以及所有的超时和错误条件。
2.5 MicrOChip HTTP服务器
Microehip HTTP服务器以协同式任务处理方式实现,它与Microchip TCP/IP协议栈以及用户的主应用程序共存。这个服务器自身在源文件“HTTP.c”中实现,使用一个用户应用程序实现2个回调函数。
这里提供的HTTP服务器不会实现所有的HTTP功能,它是面向嵌入式系统的最小型服务器。用户可以按需要方便地添加新功能。HTTP服务器主要功能包括:支持位于内部程序存储器或外部串行EEPROM中的网页、简单文件系统(MPFS)、动态网页内容生成和基于PC的程序,以及从给定目录创建MPFS映像等。
对于Microchip协议栈及其HTTP服务器,特定格式是MPFS。如果MPFS映像要存储在外部EEPROM中,则可能需要在应用程序中包含编程方法。HTTP服务器使用文件“index.htm'’作为它的缺省网页。这要求所有应用程序都将名为“index.htm"的文件作为它们MPFS映像的一部分。
3 系统开发过程
3.1 动态HTTP页面生成
本应用系统实例中服务器端网页的设计涉及2项网页开发技术:AJAX和CGI。篇幅所限,网页编程代码略。AJAX全称为“Asynchronoous JavaScript and XML”(异步JavaScript和XML),是指一种创建交互式网页应用的网页开发技术。与传统的Web应用不同,AJAX应用可以仅向服务器发送并取回必需的数据,它使用SOAP或其他一些基于XML的web service接口,并在客户端采用JavaScript处理来自服务器的响应。因为在服务器和浏览器之间交换的数据大量减少,因此就能看到响应更快的应用。同时,很多的处理工作可以在发出请求的客户端机器上完成,所以web服务器的处理时间也缩短了。
CGI(Common Gate Interface,通用网关接口)是Web服务器与客户端HTML页面的接口。通俗地讲,CGI就像是一座桥,把网页和Web服务器中的执行程序连接起来,把HTML接收的指令传递给服务器,同时把服务器执行的结果返还给HTML页。CGI可以实现处理表格、据库查询、送电子邮件等许多操作,常见的cGI就是计数器。CGI使网页不再是静态的,而变成是交互式的。
3.2 集成环境设计
MPLAB IDEv8.OO提供了一个编程环境,由于使用C语言编程,故下载并安装了免费的C编译器MPLAB—C18一Student Edition—v3_16.exe。MPLAB集成环境是Micro—chip公司为其所有的开发工具研发的,使用前需要选择MPLAB ICD2。ICD2可以充当调试器和烧写器,debug—ger和programmer在菜单中都可以进行选择。在debug—ger模式下,Program按钮表示把目标文件和监控程序一起烧写入待调试的MCU中。
MPLAB ICD2通过USB线连接主机,但不能使用默认的驱动。手动在MPLAB IDE软件中找到ICD2_USB驱动。这个路径包含1CD2W2K.INF、ICD2W2K.SYS、ICD2W2K L.SYS等文件。
运行MPLAB.exe后,选择PICl8F97J60及MPLABICD2,则系统可下载配合该芯片使用的硬件操作系统。完成下载后,系统会检查ICD2的连接情况。
建立工程项目包括下载安装Microchip TCP/IP协议栈、修改编译选项等。要将TCP/IP协议栈集成在主应用程序中,较容易实现且节省存储空间的方法是调用堆栈文件。但是当集成很多的应用程序时,使用该专用协议栈可能会产生特殊问题。本系统应用只是进行数据采集等简单应用,因此不必考虑此问题,只需要修改主应用程序MainDemo.c。这是Demo Application的核心文件,用来调用标准的Microehip TCP/IP堆栈文件。
主应用程序MainDemo.c是服务器端程序执行的入口。它首先配置硬件,然后调用TCP/IP堆栈,运行检测程序,并等待客户端的请求。通过编译主程序生成.0结尾的目标文件,连接生成.hex和.cof文件。最后,结合Microchip公司的编程工具ICD2将映像烧写到单片机。
Microchip HTTP服务器使用简单文件系统(Micro—chip文件系统或MPFS)来存储网页。MPFS映像可以存储在片上程序存储器或外部串行EEPROM中,它采用特殊的格式在给定的存储介质上存储多个文件。
Microchip提供了MPFS.exe程序将网页转换为MPFS映像。在创建MPFS映像之前,用户必须先创建所有的网页和相关文件,并保存在同一个目录中。如果文件扩展名是“htm”,则Image Builder将去掉所有回车和换行字符来减小MPFS映像的大小。需要注意的是,生成的映像文件大小不要超过32 KB。接着需要把MpfsHan—Img.bin映像使用堆栈所提供的ftp服务上传到EEP-
ROM。也可以利用超级终端,通过串口将MPFS映像传送到EEPROM。
此外,还要通过串口对单片机进行IP地址的设定,这样就完成了整个系统架构的设计。打开主PC机浏览器,输入远程单片机的IP地址,可以看到主控制监测页面,通过网页即可实现对远程单片机监测装置的控制,以及对温度、流量等信息的监测等。