基于嵌入式Linux的接口转换卡设计
发布时间:2008/6/3 0:00:00 访问次数:447
接口总线为一群互相连接的设备提供一种有效的通信方式,它是自动测试系统发展的标志,可以说接口总线技术发展的历史就是自动测试系统发展史,接口总线技术发展的水平标志着自动测试发展的水平。本文提出的接口转换方案解决了包括usb总线、gpib总线、网络等几种通用标准接口之间的相互转换。本方案以嵌入式linux操作系统和arm处理器为软硬件平台,在自动测试系统的应用中取得了良好的应用效果。
硬件系统设计
硬件平台基于arm920t的处理器at91rm9200,该处理器不仅有丰富的片上资源和标准接口,而且有低功耗、低成本、高性能、支持多种主要的嵌入式操作系统等特点,其采用5级整数流水线结构,性能高达200mips,具有标准的armv4存储器管理单元(mmu),内部集成两个usb2.0全速(12mb/s)主机端口、一个usb2.0全速(12mb/s)器件端口和10/100 base-t型以太网接口。该芯片具有多种工作模式,其低功耗待机模式下电流仅3.1ma。
此方案的硬件系统结构设计如图1所示,主要包括at91rm9200处理器、gpib模块、jtag接口、网络模块、32m sdram、16m flash、串口、usb主从口等部分。其中gpib模块通过cpld器件epm1270逻辑控制gpib接口芯片nat9914实现,网络模块通过外接dm9161实现10/100m自适应网络连接。另外,处理器内置的双主机收发器可连接usb设备。
图1 硬件系统结构
软件系统设计
linux系统的移植
linux操作系统是可以运行在不同类型计算机上的一种操作系统的“内核”,它提供命令行或者程序与计算机硬件之间接口的软件核心部分。嵌入式linux系统从软件角度分为4个层次,分别为引导加载程序(boot loader)、内核、文件系统和用户程序。
boot loader 就是在操作系统内核运行之前运行的一段小程序。通过这段小程序,可以初始化硬件设备、建立内存空间的映射图,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统内核准备好正确的环境。
本方案中linux内核采用linux2.6.16版的kernel。因为本方案需要访问u盘,所以内核中必须加上支持u盘的模块,包括scsi support、scsi disk support、usb mass storage support、vfat(windows95)support、msdos partition tables等。usb器件端口与usb主机通信,可以有三种方式:一些功能最完备结构也最复杂的设备,采用用户定制的内核模块实现在标准usb总线上运行复杂的高级协议,由usb主机上相应的用户驱动程序和应用程序来完成连接;另一些基于linux系统的usb设备则利用usb总线来实现该设备与主机之间的简单点对点串行连接,主机上的应用程序实际上是利用了主操作系统所提供的usb编程接口,但实现的是串行通信协议;最后一种是设备将主计算机作为网关,将usb设备连接到办公局域网或互联网上,从而usb设备构成了一个模拟以太网接口。本方案采用最后一种方式,配置了内核中的usb rndis gadget模块,该模块利用usb接口作为物理媒介,模拟出一个虚构的以太网设备。
文件系统是用户模式进程与内核模式进程交互的纽带,制作具有特定的功能的文件系统是移植嵌入式系统不可缺少的部分。本方案利用busybox软件工具包构造ext2文件系统,此软件包集成了linux常用命令,可根据需求裁减,极大的方便了嵌入式系统的开发。
应用程序的具体实现
数据在多个接口之间的转换主要是在用户态的应用程序中实现。此应用程序主要完成的功能是两个usb主口(一个接usb仪器,一个接u盘)、一个usb从口、gpib口和网口之间的数据交换。程序自动检测接口是否处于连接状态:如果是,便监听是否有数据需要传送,并将监听到的数据传给其他处于连接状态的接口。整个应用程序的框架如图2所示。
图2 应用程序整体框架
各个子进程的功能如下:
子进程1:usb从口的实现主要依靠内核中的usb rndis gadget模块的支持,当usb从口连接至pc时,在pc上模拟以太网接口,用tcp/ip网络协议传输数据;
子进程2:usb主口1专用于usb设备的usb端口;
子进程3:usb主口2专用于u盘,将u盘实际连接,当有数据传给u盘时,便在linux操作系统上挂载u盘,并以二进制方式将数据存储到u盘的linux.txt文件中,15s内没有数据传输就会卸载u盘;
子进程4:网口是以tcp/ip网络协议传输数据。子进程1和子进程4分别实现了网络服务器功能;
子进程5:在linux操作系统中为gpib口准备一个中断例程,当gpib口有动作时,会首先产生一个中断,应用程序立即跳转中断处理执行程序相关操作。
<接口总线为一群互相连接的设备提供一种有效的通信方式,它是自动测试系统发展的标志,可以说接口总线技术发展的历史就是自动测试系统发展史,接口总线技术发展的水平标志着自动测试发展的水平。本文提出的接口转换方案解决了包括usb总线、gpib总线、网络等几种通用标准接口之间的相互转换。本方案以嵌入式linux操作系统和arm处理器为软硬件平台,在自动测试系统的应用中取得了良好的应用效果。
硬件系统设计
硬件平台基于arm920t的处理器at91rm9200,该处理器不仅有丰富的片上资源和标准接口,而且有低功耗、低成本、高性能、支持多种主要的嵌入式操作系统等特点,其采用5级整数流水线结构,性能高达200mips,具有标准的armv4存储器管理单元(mmu),内部集成两个usb2.0全速(12mb/s)主机端口、一个usb2.0全速(12mb/s)器件端口和10/100 base-t型以太网接口。该芯片具有多种工作模式,其低功耗待机模式下电流仅3.1ma。
此方案的硬件系统结构设计如图1所示,主要包括at91rm9200处理器、gpib模块、jtag接口、网络模块、32m sdram、16m flash、串口、usb主从口等部分。其中gpib模块通过cpld器件epm1270逻辑控制gpib接口芯片nat9914实现,网络模块通过外接dm9161实现10/100m自适应网络连接。另外,处理器内置的双主机收发器可连接usb设备。
图1 硬件系统结构
软件系统设计
linux系统的移植
linux操作系统是可以运行在不同类型计算机上的一种操作系统的“内核”,它提供命令行或者程序与计算机硬件之间接口的软件核心部分。嵌入式linux系统从软件角度分为4个层次,分别为引导加载程序(boot loader)、内核、文件系统和用户程序。
boot loader 就是在操作系统内核运行之前运行的一段小程序。通过这段小程序,可以初始化硬件设备、建立内存空间的映射图,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统内核准备好正确的环境。
本方案中linux内核采用linux2.6.16版的kernel。因为本方案需要访问u盘,所以内核中必须加上支持u盘的模块,包括scsi support、scsi disk support、usb mass storage support、vfat(windows95)support、msdos partition tables等。usb器件端口与usb主机通信,可以有三种方式:一些功能最完备结构也最复杂的设备,采用用户定制的内核模块实现在标准usb总线上运行复杂的高级协议,由usb主机上相应的用户驱动程序和应用程序来完成连接;另一些基于linux系统的usb设备则利用usb总线来实现该设备与主机之间的简单点对点串行连接,主机上的应用程序实际上是利用了主操作系统所提供的usb编程接口,但实现的是串行通信协议;最后一种是设备将主计算机作为网关,将usb设备连接到办公局域网或互联网上,从而usb设备构成了一个模拟以太网接口。本方案采用最后一种方式,配置了内核中的usb rndis gadget模块,该模块利用usb接口作为物理媒介,模拟出一个虚构的以太网设备。
文件系统是用户模式进程与内核模式进程交互的纽带,制作具有特定的功能的文件系统是移植嵌入式系统不可缺少的部分。本方案利用busybox软件工具包构造ext2文件系统,此软件包集成了linux常用命令,可根据需求裁减,极大的方便了嵌入式系统的开发。
应用程序的具体实现
数据在多个接口之间的转换主要是在用户态的应用程序中实现。此应用程序主要完成的功能是两个usb主口(一个接usb仪器,一个接u盘)、一个usb从口、gpib口和网口之间的数据交换。程序自动检测接口是否处于连接状态:如果是,便监听是否有数据需要传送,并将监听到的数据传给其他处于连接状态的接口。整个应用程序的框架如图2所示。
图2 应用程序整体框架
各个子进程的功能如下:
子进程1:usb从口的实现主要依靠内核中的usb rndis gadget模块的支持,当usb从口连接至pc时,在pc上模拟以太网接口,用tcp/ip网络协议传输数据;
子进程2:usb主口1专用于usb设备的usb端口;
子进程3:usb主口2专用于u盘,将u盘实际连接,当有数据传给u盘时,便在linux操作系统上挂载u盘,并以二进制方式将数据存储到u盘的linux.txt文件中,15s内没有数据传输就会卸载u盘;
子进程4:网口是以tcp/ip网络协议传输数据。子进程1和子进程4分别实现了网络服务器功能;
子进程5:在linux操作系统中为gpib口准备一个中断例程,当gpib口有动作时,会首先产生一个中断,应用程序立即跳转中断处理执行程序相关操作。
<