嵌入式linux接口操作设备,基于嵌入式Linux操作系统和ARM处理器的接口转换方案...

硬件系统设计

硬件平台基于ARM920T的处理器AT91RM9200,该处理器不仅有丰富的片上资源和标准接口,而且有低功耗、低成本、高性能、支持多种主要的嵌入式操作系统等特点,其采用5级整数流水线结构,性能高达200

此方案的硬件系统结构设计如图1所示,主要包括AT91RM9200处理器、GPIB模块、JTAG接口、网络模块、32M S

740cb641f47c1249cc2b3414897eb674.png

软件系统设计

Linux系统的移植

Linux操作系统是可以运行在不同类型

Boot Loader 就是在操作系统内核运行之前运行的一段小程序。通过这段小程序,可以初始化硬件设备、建立内存空间的映射图,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统内核准备好正确的环境。

本方案中Linux内核采用Linux2.6.16版的kernel。因为本方案需要访问U盘,所以内核中必须加上支持U盘的模块,包括S

文件系统是用户模式进程与内核模式进程交互的纽带,制作具有特定的功能的文件系统是移植嵌入式系统不可缺少的部分。本方案利用Busybox软件工具包构造EXT2文件系统,此软件包集成了Linux常用命令,可根据需求裁减,极大的方便了嵌入式系统的开发。[page]

应用程序的具体实现

数据在多个接口之间的转换主要是在用户态的应用程序中实现。此应用程序主要完成的功能是两个USB主口(一个接USB仪器,一个接U盘)、一个USB从口、GPIB口和网口之间的数据交换。程序自动检测接口是否处于连接状态:如果是,便监听是否有数据需要传送,并将监听到的数据传给其他处于连接状态的接口。整个应用程序的框架如图2所示。

9c2aff7c705c448d6e84fab09141aa05.png

各个子进程的功能如下:

子进程1:USB从口的实现主要依靠内核中的USB RNDIS gadget模块的支持,当USB从口连接至PC时,在PC上模拟以太网接口,用TCP/IP网络协议传输数据;

子进程2:USB主口1专用于USB设备的USB端口;

子进程3:USB主口2专用于U盘,将U盘实际连接,当有数据传给U盘时,便在Linux操作系统上挂载U盘,并以二进制方式将数据

子进程4:网口是以TCP/IP网络协议传输数据。子进程1和子进程4分别实现了网络服务器功能;

子进程5:在Linux操作系统中为GPIB口准备一个中断例程,当GPIB口有动作时,会首先产生一个中断,应用程序立即跳转中断处理执行程序相关操作。

由于接口总线协议的解析都在Linux驱动中完成,所以子进程间的数据传输直接代表了接口总线的通信。子进程创建了自己专用的管道F

每个子进程都有一个主线程,完成端口的连接状态检测,主线程的流程图如图3所示。端口输出数据的处理主要由线程readfifo完成,它读取该进程的专用管道FIFO的数据,如果从FIFO中读到了数据,并且该端口连接标志位flag为1(表示该端口处于连接状态),便将此数据填入该端口的输出缓冲区,否则将读到的数据舍去。端口输入数据的处理由另一个线程完成,如果该端口处于连接状态,主线程就会创建该子线程实时读取该端口的输入数据,并将数据通过专用管道传给其他进程。

40e0f59cd507c77f99f30c807006a006.png

在整个应用程序中,各个端口的数据转发利用了Linux进程间的

结语

本文介绍了基于AT91RM9200平台和嵌入式Linux的一种接口转换卡的软硬件设计,它实现了USB、GPIB和网络之间的数据通信。此转换卡具有广泛的实际应用价值,如PC通过网络远程控制USB设备或GPIB主机控制USB设备等等。目前本方案已成功应用于

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值