×
单片机 > 单片机程序设计 > 详情

基于嵌入式Linux的远程数据采集系统

发布时间:2020-06-23 发布时间:
|

  1 引言

  数据的采集和传输是工业和军事领域的一项关键技术。传统数据采集系统采用以单片机 为核心的设计模式,系统的精确度和运算能力有限,人机交互界面不够直观友好、信息量小, 并且数据传输距离、数据存储容量和实时分析能力都有限。本文设计的嵌入式数据采集系统 采用嵌入式实时操作系统,具有采集速度快,可扩展功能强,并且能通过网络通信进行远程 监控等优点,具有广阔的应用前景。

  2 硬件设计

  2.1 硬件描述

  系统的基本结构如图 1 所示。该系统由核心处理器模块、数据采集模块、键盘输入模 块、显示模块和外部通信模块等组成。


  核心处理器模块由微处理器 S3C2410、NAND Flash 和 SDRAM 共同构建。S3C2410 是 三星公司的一款基于ARM920T 内核的16/32 位RISC 嵌入式微处理器,主要面向手持设 备以及高性价比,低功耗的应用,运行的频率可以达到203MHz。64M 字节 NAND Flash 采用的是K9F1208,可以兼容16M,32M 或128M 字节。64M 字节的SDRAM 由两片 K4S561632 组成,工作在32 位模式下,可以满足嵌入式系统运行的要求。

  2.2 数据采集模块设计

  S3C2410 内核中集成了8 路10 位的模数转换器,但考虑到10 位的精度偏低,所以数据 采集模块使用了一个8 路16 位模数转换芯片ADS8344。该芯片是8 路16 位的带异步串行 口的模数转换器,在5V 的工作电压和IOOK 的工作频率的条件下转换器的功耗是10mW, 参考电压的范围是从500mV 到工作电压VCC,提供的输入电压的范围是从0V 到参考电压。

  ADS8344 和S3C2410 连接,虽然S3C2410X 具有117 个通用的IO 接口,但绝大部分的 IO 线都有第二功能,所以在选择S3C2410 和ADS8344 连接的时候,本文用通用IO 口的第 二功能来表述连线。ADS8344 与S3C2410 的连线情况如图2 所示。[page]


  在 ADS8344 与S3C2410 的连接图中,S3C2410 的连接端都是通用的IO 信号。S3C2410 的IICSCL 接ADS8344 的片选信号,低电平有效。S3C2410 的nCD_SD 信号接ADS8344 的 数据输入信号Din,当片选信号是低电平时,数据将在DCLK 的上升沿被锁存。S3C2410 的 WP_SD 信号接ADS8344 的串行数据输出信号Dout,当片选信号是低电平时,数据将在 DCLK 的上升沿被锁存。S3C2410 的SDDATA3 信号接ADS8344 的忙信号BUSY。S3C2410 的IICSDA 信号接ADS8344 的DCLK 信号,最大的转换频率可达100K[2]。

  2.3 网络接口设计

  系统采用 Cirrus 公司的CS8900 网络接口芯片。CS8900 以太网接口芯片的内部集成 RAM、10BASE-T 收发滤波器,它提供8 位和16 位两种接口,我们选用16 位模式,网卡芯 片复位默认工作方式为I/O 连接,寄存器的默认基址是300H[1]。因为CS8900 占用了S3C2410 的片选线nGCS3,则CS8900 寄存器的基址空间为0X6000000+300H。CS8900 与S3C2410 的 连接如图3 所示。


  3 软件设计

  3.1 系统软件平台配置

  3.1.1 嵌入式Linux 的移植

  首先在一台 PC 机上安装Linux 系统,从网络上下载交叉编译需要的软件包:linux-2.6.16 内核、gcc-3.4.4 编译器、glibc-2.3.3 编译器、binutils-2.16 工具包和gdb-* 调试器。然后一 步步建立交叉编译环境,根据具体目标平台对与体系结构相关的源码进行必要的修改,对内 核裁减、编译,生成一个内核映象文件。最后将内核及根文件系统烧写到目标平台。

  3.1.2 网络设备驱动程序

  CS8900 驱动程序是本系统的重要组成部分。所有的Linux 网络驱动程序都遵循通用的 接口,对每个网络接口都用一个device 数据结构表示,网络设备使用网络接口管理表 dev_base,它是一个device 结构的指针。Linux 网络各层之间的数据传输都通过sk_buff(套 接字缓冲区)完成的,每个sk_buff 包括一些控制方法和一块缓冲区,这个区域存放网络传 输的数据包[3]。内核的驱动程序接口包括:打开函数、关闭函数、探测函数、发送函数、接 收函数、中断处理函数和其它函数;参考CS8900 技术文档,通过编写这样一系列函数来实 现具体的功能。

  3.1.3 Qt/Embedded 开发

  Qt/Embedded 是一个为嵌入式设备上的图形用户接口和应用开发而订做的C++工具开 发包。Qt 的C++类库封装了适应不同操作系统的访问细节,它通常可以运行在多种不同的 处理器上部署的嵌入式Linux 操作系统上。除了类库以外,Qt/Embedded 还包括几个提高开 发速度的工具,使用标准的Qt API,可以熟练的在Windows 和Unix 编程环境里开发应用程 序。下载tmake1.11、Qt/Embedded2.3.7 和Qt2.3.2 for X11 这样几个安装包,根据开发者具体 的开发环境,在Linux 系统的PC 机上建立起Qt/Embedded 开发环境,通过qmake 和Qt designer 这两个工具可以快速的开发出简洁精美的界面。[page]

  3.2 应用软件的开发

  在 Qt/Embedded 开发环境下,用C++语言编写应用程序,主要实现数据采集分析存档 和远程通讯。本系统通过以太网实现主机和客户机的连接,考虑到嵌入式系统有限的软硬件 资源,网络通讯协议不能直接使用现有的TCP/IP 协议族,其过于庞大复杂,我们只需要使 用其中的一部分协议,并对其进行简化。

  嵌入式 Linux 中的网络层次分为用户进程、套接字、网络协议和网络设备4 个层次[4]。 其中BSD 套接字由处理BSD socket 的通用套接字管理软件来处理,并由INET socket 层来 支持,这一层为基于IP 的协议TCP 和UDP 提供端到端传输管理。UDP 是一个无连接协议 而TCP 是个可靠的端对端协议,IP 层包含了实现Internet 协议的代码,这些代码为要传输 的数据加上IP 头,并把传入的IP 包送给TCP 或UDP。在IP 层以下,是支持所有网络应用 的设备层,如PPP、以太网等,建立一个有相应的以太网设备驱动在内的内核后,就可以看 到/dev/eth0。ARP 协议位于IP 层与支持ARP 的底层协议之间,它负责把IP 地址解释成底 层网络设备可以辨认的地址。

  系统加电后就开始运行,系统初始化完成后,就开始接收传感器发送的信号,转换成相 应数据并保存;socket 接口实现通信是基于客户机/服务器模式下进行的,根据客户机的要 求,执行指定的操作或将采集来的数据发送给客户机,实现了远程实时监控,具体流程如图 4 所示。


  4 结论

  本文作者创新点是构建的数据采集系统具有较强的远程数据处理能力和实时性,所使用 的嵌入式Linux 操作系统可支持TCP/IP, PPP 等网络协议,增强了系统的远程分析和监控能 力。以后还需对本系统的嵌入式TCP/IP 协议栈进行改进,并用对多路传感器信号的采集和 处理来验证系统的稳定性和传输采集数据的性能。


关键字:Linux  远程数据采集系统  S3C2410X 

『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
AVR熔丝位操作时的要点和需要注意的相关事项