位置:51电子网 » 技术资料 » 嵌入式系统

嵌入式系统Internet打印的设计与实现

发布时间:2008/5/27 0:00:00 访问次数:402

1 引言

随着嵌入式技术的发展,硬件的性价比越来越高。本文介绍了一种嵌入式系统网络打印的实现方案,把并口打印机连接到能执行ipp(internet printing protocol)协议的嵌入式系统上,实现了网络打印。整个网络打印的模型如图1所示[1]。这种应用方案不仅可以整合到嵌入式系统中用来提供网络打印支持,也可以单独设计成一个嵌入式打印服务器,实现远程打印或对普通打印机提供打印共享支持。

2 ipp因特网打印协议

ipp协议是由互联网工程任务组(ietf,internet engineering task force)于1997年提出来的,目前最高版本为1.1。操作系统windows2000和red hat linux8.0以上提供了对ipp协议的支持。ipp 协议基于客户机/服务器模式,客户在操作系统或应用程序中重定向打印服务到服务器的知名端口631,通过双方会话完成打印任务。客户查找打印机时,只要输入ipp打印机的网址便可获取远程打印机的列表。应用层协议ipp依赖于http协议,双方的会话数据和打印数据嵌在http数据体中完成的。双方会话时须使用post方法,同时启用了新的content-type,即“application / ipp”,用来指出message-body是ipp数据[2]。

3 硬件设计

本方案采用atmel 公司8位芯片中性能最高的atmega128,以及smsc公司的第三代10/100m以太网控制芯片lan91c111。 两种芯片都是little endian字节顺序,且atmega128是8位机,数据线可直接连接。如图1所示[3],外部采用单一的外总线结构,64k外部空间的低32k的分配给sram,另外的32k空间除了8个留给并行打印端口之外,其余地址取连续的16个分配给网卡使用。

lan91c111工作电压是3.3v,但i/o口是5v电平,本方案使用了一片lm3940作电压转换。采用双绞线输出时,必须在rbias引脚接一个下拉偏置电阻。本方案lan91c111没有外接eeprom,将eneep接地,运行参数初始化时由用户通过主cpu写入[4]。

对lan91c111的操作通过其内部的寄存器读写进行。内部的寄存器分为bank0-bank3共四页,页面选择通过页选择寄存器(bank select register, bsr)来进行。不论当前页是哪一页,改变bsr的值就可以切换bank,利用16个字节地址空间映射到i/o口就能实现对整个芯片的操作。

lan91c111内部有一个8k的sram作为发送/接收缓存,由存储管理单元(memory management unit, mmu)管理,方便了用户的编程,减少了主cpu的开销。8k的缓存固定分为4页,编号为0-3,每页为2k。以太帧最大为1518字节,每页完全可以存放一个以太帧。对发送和接收没有固定的分配页,其分配和释放可以通过写寄存器相应的位完成。

3.1 打印接口的设计

centronics并行口虽然速度较慢,但其spp (standard parallel port)模式控制方便,这是许多打印机都支持的接口模式。实验中用atmega128的i/o口作打印数据传输线,其余的信号线最简洁的接法只需连接选通信号nstb和忙信号busy[5]。本方案为节省硬件,只对打印机数据输出采用地址译码的控制方式。atmega128不用的口线较多,可将打印机的缺纸、打印出错等信号状态线也接上。采用中断编程的方法时,要将nack接到atmega128的一根中断请求线上并设置为低电平中断。为避免损坏打印口,减少干扰,中间使用74hc244作为三态缓冲,具体应用时,应注意cmos和ttl电平的匹配,原理图如图3所示。

4 软件设计

4.1 lan91c111复位

可以通过两种方法使芯片(mac&phy)复位。一是将复位引脚置位至少100ns;二是将接收控制寄存器(receive control register)的soft_rst位先写1,至少50ms后再写0使其复位。复位后,物理层模块处于隔离模式(isolation mode),芯片不能收发数据包,必须设置phy层的串行口控制寄存器(control register)的mii_dis位才能使芯片正常工作。

4.2 lan91c111初始化

初始化发送控制寄存器,写入0x8010,打开自动填充符功能和自动添加crc功能。初始化接收控制寄存器,写入0x0000,自动去除帧尾的crc检验码。初始化接收/物理层控制寄存器(receive/phy control register, rpcr),设置为0x3010,选择自动侦察模式,两个led分别设置成连接指示和收发指示。初始化配置寄存器,写入缺省值0xa0b1,本系统无外接e2prom,使用内部物理层模块。初始化基址寄存器,采用缺省地址值300h。初始化芯片物理地址寄存器,此值不能和子网内其它设备重复。初始化控制寄存器,写入初值0x1a10,crc校验有错时,不产生中断信号且所占用的缓存被自动释放, auto_release位置1。 初始化早期接收寄存器,去掉早期接收功能,设置ercv寄存器ercv_threshold位为1fh。只有接收的字节数超过阈值,早期中断才会产生。

4.3 以太帧的收发

4.3.1 以太帧的发送

1 引言

随着嵌入式技术的发展,硬件的性价比越来越高。本文介绍了一种嵌入式系统网络打印的实现方案,把并口打印机连接到能执行ipp(internet printing protocol)协议的嵌入式系统上,实现了网络打印。整个网络打印的模型如图1所示[1]。这种应用方案不仅可以整合到嵌入式系统中用来提供网络打印支持,也可以单独设计成一个嵌入式打印服务器,实现远程打印或对普通打印机提供打印共享支持。

2 ipp因特网打印协议

ipp协议是由互联网工程任务组(ietf,internet engineering task force)于1997年提出来的,目前最高版本为1.1。操作系统windows2000和red hat linux8.0以上提供了对ipp协议的支持。ipp 协议基于客户机/服务器模式,客户在操作系统或应用程序中重定向打印服务到服务器的知名端口631,通过双方会话完成打印任务。客户查找打印机时,只要输入ipp打印机的网址便可获取远程打印机的列表。应用层协议ipp依赖于http协议,双方的会话数据和打印数据嵌在http数据体中完成的。双方会话时须使用post方法,同时启用了新的content-type,即“application / ipp”,用来指出message-body是ipp数据[2]。

3 硬件设计

本方案采用atmel 公司8位芯片中性能最高的atmega128,以及smsc公司的第三代10/100m以太网控制芯片lan91c111。 两种芯片都是little endian字节顺序,且atmega128是8位机,数据线可直接连接。如图1所示[3],外部采用单一的外总线结构,64k外部空间的低32k的分配给sram,另外的32k空间除了8个留给并行打印端口之外,其余地址取连续的16个分配给网卡使用。

lan91c111工作电压是3.3v,但i/o口是5v电平,本方案使用了一片lm3940作电压转换。采用双绞线输出时,必须在rbias引脚接一个下拉偏置电阻。本方案lan91c111没有外接eeprom,将eneep接地,运行参数初始化时由用户通过主cpu写入[4]。

对lan91c111的操作通过其内部的寄存器读写进行。内部的寄存器分为bank0-bank3共四页,页面选择通过页选择寄存器(bank select register, bsr)来进行。不论当前页是哪一页,改变bsr的值就可以切换bank,利用16个字节地址空间映射到i/o口就能实现对整个芯片的操作。

lan91c111内部有一个8k的sram作为发送/接收缓存,由存储管理单元(memory management unit, mmu)管理,方便了用户的编程,减少了主cpu的开销。8k的缓存固定分为4页,编号为0-3,每页为2k。以太帧最大为1518字节,每页完全可以存放一个以太帧。对发送和接收没有固定的分配页,其分配和释放可以通过写寄存器相应的位完成。

3.1 打印接口的设计

centronics并行口虽然速度较慢,但其spp (standard parallel port)模式控制方便,这是许多打印机都支持的接口模式。实验中用atmega128的i/o口作打印数据传输线,其余的信号线最简洁的接法只需连接选通信号nstb和忙信号busy[5]。本方案为节省硬件,只对打印机数据输出采用地址译码的控制方式。atmega128不用的口线较多,可将打印机的缺纸、打印出错等信号状态线也接上。采用中断编程的方法时,要将nack接到atmega128的一根中断请求线上并设置为低电平中断。为避免损坏打印口,减少干扰,中间使用74hc244作为三态缓冲,具体应用时,应注意cmos和ttl电平的匹配,原理图如图3所示。

4 软件设计

4.1 lan91c111复位

可以通过两种方法使芯片(mac&phy)复位。一是将复位引脚置位至少100ns;二是将接收控制寄存器(receive control register)的soft_rst位先写1,至少50ms后再写0使其复位。复位后,物理层模块处于隔离模式(isolation mode),芯片不能收发数据包,必须设置phy层的串行口控制寄存器(control register)的mii_dis位才能使芯片正常工作。

4.2 lan91c111初始化

初始化发送控制寄存器,写入0x8010,打开自动填充符功能和自动添加crc功能。初始化接收控制寄存器,写入0x0000,自动去除帧尾的crc检验码。初始化接收/物理层控制寄存器(receive/phy control register, rpcr),设置为0x3010,选择自动侦察模式,两个led分别设置成连接指示和收发指示。初始化配置寄存器,写入缺省值0xa0b1,本系统无外接e2prom,使用内部物理层模块。初始化基址寄存器,采用缺省地址值300h。初始化芯片物理地址寄存器,此值不能和子网内其它设备重复。初始化控制寄存器,写入初值0x1a10,crc校验有错时,不产生中断信号且所占用的缓存被自动释放, auto_release位置1。 初始化早期接收寄存器,去掉早期接收功能,设置ercv寄存器ercv_threshold位为1fh。只有接收的字节数超过阈值,早期中断才会产生。

4.3 以太帧的收发

4.3.1 以太帧的发送

相关IC型号
版权所有:51dzw.COM
深圳服务热线:13751165337  13692101218
粤ICP备09112631号-6(miitbeian.gov.cn)
公网安备44030402000607
深圳市碧威特网络技术有限公司
付款方式


 复制成功!