0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于嵌入式Internet技术实现网络打印服务器系统的软硬件设计

牵手一起梦 来源:网络整理 作者:佚名 2020-01-22 10:47 次阅读

随着信息技术的发展和网络时代的到来,基于TCP/IP协议的嵌入式Internet技术越来越受到人们的关注。目前,大多数嵌入式设备仍处于孤立应用阶段,为了实现多个MCU之间的信息共享和交流,通常利用CANRS232RS485等总线组网。但是这些网络的有效半径较短,并且孤立于Internet网络以外,如果能把嵌入式设备直接接入Internet,就可以用方便、低廉的方式实现信息的共享。因此,研究和应用嵌入式Internet技术具有非常重要的意义。

传统的网络打印有两种方法:一种是采用“网络共享方式”,另一种是使用专用网络打印机。专用网络打印机成本很高,普通用户难以承受。若采用“网络共享方式”打印,网内必须有一台计算机来充当打印服务器,若这台计算机出现故障或关机,网内的其它计算机就无法打印,使用起来很不方便。嵌入式网络打印服务器解决了这个问题,使普通打印机不再是依附于主机的一外设,而成为网络中一个孤立的设备,使用起来更加灵活方便。本文在研究嵌入式Internet技术的基础上,设计了基于TCP/IP协议的嵌入式网络打印服务器,普通打印机通过此嵌入式打印服务器可直接接在Hub上,升级为一台“网络打印机”。客户端可在局域网内部实现网络打印,远端客户可通过网关实现远程打印。其具体结构如图1所示。

基于嵌入式Internet技术实现网络打印服务器系统的软硬件设计

1 、系统总体结构

1.1 硬件电路

嵌入式打印服务器的硬件电路如图2所示。该电路主要包括以下四部分:①微处理器;②以太网控制器;③打印机接口电路;④串口通讯电路。

嵌入式打印服务器需要处理复杂的TCP/IP协议和以太网驱动程序,程序代码较长,但系统要求快速地处理以太网帧,顺利完成数据收发任务。基于以上考虑,微处理器采用***Winbond公司的W77E58,此芯片内核与51系列兼容,内含32K FLASH ROM,指令的执行速度很快,是普通51系列单片机的3~4倍,时钟频率最高可设置为40MHz。此芯片内含三个16位的定时/计数器,两个全双工串行口,一个软件可编程看门狗定时器。采用软件看门狗技术,可用来提高本系统的抗干扰能力,防止程序跑飞。

网卡接口芯片采用性价比较高的全双工的RTL8019AS。此芯片为10M ISA以太网控制器芯片,为100个引脚PQFP封装,内部集成有16MB SRAM,与NE2000兼容,16位数据总线,可配置为8位DMA方式进行数据传输,与8位单片机接口方便[2]。

基于嵌入式Internet技术实现网络打印服务器系统的软硬件设计

图2 嵌入式网络打印服务器总体设计框图

另外,系统还扩展一片62256 RAM和一片24C02 E2PROM。RAM的作用有两个:一是用来缓存从网卡芯片接收下来的数据帧,二是用作打印数据的缓冲和串口通讯数据的缓冲,以提高数据的吞吐率。24C02为串行E2PROM,其容量为2KB,可通过I2C总线与单片机通信,其接口非常简单,只需要通过SCL和SDA两条线与单片机相连即可。其作用是用来存储上位机通过RS232串口下载下来的一些重要参数,如主机的IP地址、子网俺码、网关IP地址等。这里采用MAX232作为RS232的电平转换芯片,完成TTL电平到RS232电平的转换,实现上位PC机与单片机之间的通讯。

1.2 软件设计

软硬件开发工具分别选用Keil C51编译器和伟福6000仿真器。程序主要包括以下四部分:①以太网驱动程序;②TCP/IP协议解析程序;③打印机接口程序;④串口通讯中断服务程序。图3为主程序流程图。

1.2.1 以太网驱动程序

首先对RTL8019AS进行复位操作。复位操作有两种方法:冷复位和热复位。

(1) 冷复位

将W77E58的T0引脚接RTL8019AS的复位端RSTDRV进行复位操作,高电平有效。复位过程将执行一些基本操作,至少需要1μs的时间,推荐等待更久的时间如100ms之后才对它操作,以确保芯片完全复位。

基于嵌入式Internet技术实现网络打印服务器系统的软硬件设计

(2) 热复位

直接将RST8019AS的复位端RSTDRV与单片机的RESET引脚相连,单片机复位的时候,RST8019AS也复位。RST8019AS中地址为18H~1FH的寄存器端口均为复位端口。对以上端口俺数地址读或得写入任何数,都会使网卡芯片复位。

复位以后对RST8019AS芯片中某些寄存器进行配置,确定其工作方式。配置好后,就可以开始接收或发送数据了。

接收数据包时,采用查询方式将查询程序放在一个大循环中,反复查询是否有新数据包到达,若有则接收下来。编程时应该特别注意的是:RST8019AS接收到的数据包的帧格式与以太网帧格式并不一致[3],RST8019AS自动填加了接收状态、下一页指针、以太网帧长度三个字段(四个字节),其结构如表1所示。所以编程时需要按照此格式才能正确地接收数据。

表1 RTL8019AS接收到的数据包的帧格式

基于嵌入式Internet技术实现网络打印服务器系统的软硬件设计

1.2.2 TCP/IP协议解析程序

TCP/IP协议族实际上是许多相关协议的组合,分为不同的层次,每一层分别具有不同的通信功能。TCP/IP协议通常被认为是一个四层的协议系统,

基于嵌入式Internet技术实现网络打印服务器系统的软硬件设计

包括链路层、网络层、传输层和应用层。在设计中,根据网络打印服务器的具体要求,对TCP协议进行了适当的裁剪,仅实现了图4所示的四个协议:ARP、IP、ICMP、TCP。

(1) 链路层协议

以太网上数据包的传输是采用网络的MAC地址来进行识别的,这就要求系统能够实现IP地址到MAC地址的转换,即ARP(地址解析)协议。

(2) 网络层协议

网络层主要负责按网络标准形式封装数据包,然后进行IP路由选择。网络层协议包括IP(网际协议)、ICMP(控制报文协议)和IGMP(组管理协议)。IP协议使网络之间的通信成为可能,如果嵌入式Internet需要跨越不同的网络进行通信,就必须实现IP协议,所以IP协议需要完整实现。IP包最大为65K,可以分段传输,但在嵌入式系统中根本无法容纳如此大的数据包,因此不支持分段传输。单片机一般采用发送小数据包的方式,以避免分段传输。

ICMP协议主要用于传递差错报文以及其它需要注意的信息。ICMP中规定了多种协议类型和代码,如果完全实现要浪费不少的系统资源,对于普通的嵌入式Internet应用而言,能够测试网络的连接情况即可,因此只需实现ICMP中类型号为0、代码为0的Ping应答协议即可。

(3) 传输层协议

传输层主要为两台主机上的应用程序提供端到端的通信。传输层有两种不同的传输协议:TCP(传输控制协议)和UDP(用户数据包协议)。TCP是一种面向连接的协议,它能提供高可靠性服务。通过使用序列号和确认信息,TCP协议能够向发送方提供到达接收方的数据包的传送信息。UDP协议没有保证可靠性的机制,其数据传输率高,可以实现全速发送数据包,但是容易丢包、失序。这里因为是打印服务,对数据的可靠性要求很高。所以必须采用TCP协议。

基于嵌入式Internet技术实现网络打印服务器系统的软硬件设计

1.2.3 打印机接口程序

打印机接口有SPP、EPP和ECP三种标准[5],其中EPP和ECP的数据传输速度较快。SPP为标准的并行接口标准,目前任何打印机都支持此接口标准,考虑到兼容性的问题,这里采用了SPP接口标准。此接口程序比较简单,编程时可以采用查询方式不断检测打印机的工作状态(BUSY信号),若不忙则输出数据,发出数据选通脉冲(STROBE),通知打印机取数据打印。

1.2.4 串口通讯程序

串口通讯程序是主要用来完成程序的调试以及嵌入式打印服务器的IP地址、网关和子网俺码等参数的修改。图5为嵌入式系统参数设置界面。

基于嵌入式Internet技术实现网络打印服务器系统的软硬件设计

基于嵌入式Internet技术实现网络打印服务器系统的软硬件设计

2 、测试结果

在此使用VB6.0编写相应的测试程序。实验证明,此测试程序可以动态地修改嵌入式打印服务器的IP地址等参数,能够顺利PING通,往返时间小于10ms,可以完成数据的打印任务。

为了程序调试方便,还编写了串口通讯程序,测试结果和数据可通过串口显示出来,也可以将输出数据保存到硬盘中仔细分析研究。图6为使用串口通讯程序截获的打印输出数据。

为了进一步研究,使用Etherdetect Packet Sinffer软件截获了打印过程中通过网络传输的TCP数据,如图7所示。其中的52 54 4c 30 2e 2f为嵌入式打印服务器的MAC地址,192.137.8.178为其IP地址。

本文介绍了嵌入式网络打印服务器的设计与实现,分析了其硬件结构和软件设计方法。网络打印服务器只是嵌入式以太网技术的一个具体应用,实际上嵌入式以太网技术还可以在远程控制、数据采集、视频监控等诸多领域大显身手,其应用前景相当广泛。当然,以太网技术也存在一些缺陷,例如其数据包的传输时延不定、受网络性能的影响较大等,现阶段还很应用到实时控制领域,这些问题需要在以后的研究中重要解决。

责任编辑:gt

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 单片机
    +关注

    关注

    6032

    文章

    44525

    浏览量

    633225
  • 嵌入式
    +关注

    关注

    5071

    文章

    19025

    浏览量

    303482
  • 服务器
    +关注

    关注

    12

    文章

    9029

    浏览量

    85203
收藏 人收藏

    评论

    相关推荐

    嵌入式学习建议

    对广大渴望学习嵌入式系统的学子提出几点基础阶段的学习建议: ①嵌入式系统软件硬件密切相关,一定要打好
    发表于 10-22 11:41

    嵌入式系统服务器有什么区别

    嵌入式系统服务器在多个方面存在显著的差异,这些差异主要体现在设计目标、硬件配置、软件系统、应用领域、
    的头像 发表于 09-29 16:37 312次阅读

    嵌入式系统硬件架构

    嵌入式系统是一种专用的计算机系统,它以应用为中心,以现代计算机技术为基础,能够根据用户的具体需求(如功能、可靠性、成本、体积、功耗、环境等)灵活裁剪
    的头像 发表于 09-29 16:29 326次阅读

    嵌入式软硬件开发实战师资培训通知

    随着物联网和智能系统的快速发展,嵌入式成为当前最热门最有发展前途的IT应用领域之一。在移动通讯、移动办公、智能传感、穿戴设备、物联网、到数据中心、大数据管理、云计算、边缘计算,人工智能等各个领域
    的头像 发表于 09-24 08:06 271次阅读
    <b class='flag-5'>嵌入式</b><b class='flag-5'>软硬件</b>开发实战师资培训通知

    嵌入式系统硬件组成部分

    嵌入式系统硬件组成部分是构成其独立运作能力的关键要素,这些部分协同工作,以实现对外部环境的感知、处理及响应。以下是对嵌入式
    的头像 发表于 09-02 15:27 799次阅读

    嵌入式系统是什么?

    嵌入式系统是是一个功能完备、几乎不依赖其他外部装置就可以独立运行的系统。该系统包含软件和硬件,以应用为中心,以计算机为基础,能够根据需求灵活
    的头像 发表于 08-29 16:26 327次阅读

    专家力荐|《嵌入式系统原理与开发——基于RISC-V和Linux系统》新书发售

    当前,嵌入式系统已成为智能设备的核心之一,RISC-V+Linux的开源力量为嵌入式系统注入强大的创新动力。作为中国RISC-V软硬件生态领
    的头像 发表于 07-24 08:20 531次阅读
    专家力荐|《<b class='flag-5'>嵌入式</b><b class='flag-5'>系统</b>原理与开发——基于RISC-V和Linux<b class='flag-5'>系统</b>》新书发售

    嵌入式系统怎么学?

    一系列课程和技术,包括但不限于以下内容: 1、基础知识:学习计算机组成原理、数字电路、模拟电路等基础知识,建立对计算机硬件的认知与理解。 2、编程语言:掌握至少一种嵌入式系统常用的
    发表于 07-02 10:10

    嵌入式系统基础

    嵌入式系统是以应用为中心,以计算机技术为基础,软硬件可裁剪,适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机
    的头像 发表于 06-19 09:10 426次阅读
    <b class='flag-5'>嵌入式</b><b class='flag-5'>系统</b>基础

    从事嵌入式方向,一定要软硬件通吃?

    嵌入式系统开发领域,软件和硬件的界限常常模糊不清。一个常见的问题是,嵌入式软件工程师是否需要了解硬件。本文将探讨这一问题的重要性,并分析
    的头像 发表于 06-05 08:10 1092次阅读
    从事<b class='flag-5'>嵌入式</b>方向,一定要<b class='flag-5'>软硬件</b>通吃?

    嵌入式系统软硬件基础知识大全

    作为一种广泛应用于各个领域的技术,其软硬件基础知识对于开发者来说至关重要。在本文中,我们将详细探讨嵌入式系统的软件基础知识,以帮助读者深入了解这一领域。实时操作
    发表于 05-09 14:12

    Linux系统下对硬件寄存调试的应用设计研究

    嵌入式系统广泛应用于生活中的各行各业,嵌入式软硬件复杂度也在不断增加,嵌入式系统开发与维护变得越
    的头像 发表于 03-12 13:59 730次阅读
    Linux<b class='flag-5'>系统</b>下对<b class='flag-5'>硬件</b>寄存<b class='flag-5'>器</b>调试的应用设计研究

    嵌入式软件开发应该掌握哪些知识?

    掌握的知识 1.基础知识 1.1 c/c++编程语言和数据结构 C/C++ 是嵌入式系统中常用的编程语言,因为它们提供了直接访问硬件的能力。通过使用特定的编译和调用
    发表于 02-19 11:23

    嵌入式学习步骤

    开发板上测试固件以及在实际设备上进行测试。 嵌入式系统的多样化发展,它将更为广泛地应用于各个领域,实现智能化、网络化、自动化的目标。同时,随着人工智能和机器学习
    发表于 02-02 15:24

    嵌入式硬件和软件哪个好?

    嵌入式硬件和软件哪个好? 嵌入式软硬件工程师哪个更有前途呢?一起来看看。 嵌入式是分为软硬件工程
    发表于 12-05 15:17