基于Linux的嵌入式工业测控系统

发布者:MindfulCreator最新更新时间:2007-05-31 来源: 微计算机信息关键字:实时  接口  存储  串口 手机看文章 扫描二维码
随时随地手机看文章

1、前言

随着网络控制技术的快速发展,工业以太网得到逐步完善,在工业控制领域获得越来越广泛的应用。工业以太网使用了TCP/IP协议,便于联网,并具有高速控制网络的优点。随着32位嵌入式CPU价格的下降,性能指标的提高,为嵌入式系统的广泛应用和Linux在嵌入式系统中的发展提供了广阔的空间。由于Linux的高度灵活性,可以容易地根据应用领域的特点对它进行定制开发,以满足实际应用需要。

2、基于Linux的嵌入式系统在测控系统中的设计

计算机测控系统本质上就是计算机控制系统,为了对被控对象实施控制,对其参数和状态进行检测是必不可少的。

2.1 测控系统整体设计

测控系统以基于Linux的嵌入式系统为核心,应用程序可通过网络进行更新,通过键盘进行人机对话,数据可通过LCD现场显示。重要数据可以文件形式保存在Flash存储器中,数据和报警信息还可通过串口向上位机传输,也可通过以太网口向Inernet发布信息。用户通过显示界面查看设备状态,设置设备参数,实现远程监控、远程维护。

2.2 总体框图[1]

图2-1 嵌入式系统总体框图

2.3 嵌入式系统硬件设计

2.3.1 硬件框图

考虑一般测控系统对嵌入式系统要求比较多的功能有:键盘接口、显示接口、A/D(或D/A)转换单元、可扩展的UO接口、打印机接口、与PC机通信的串行接口、以太网口等。实现的嵌入式系统硬件框图如图2-2所示[3]:

图2-2 嵌入式系统硬件框图

2.3.2 Linux下设备驱动程序的开发

Linux系统中,内核提供保护机制,用户空间的进程一般不能直接访问硬件。Linux设备被抽象出来,所有设备都看成文件。用户进程通过文件系统的接口访问设备驱动程序,设备驱动程序主要完成如下功能:

①探测设备和初始化设备;②从设备接受数据并提交给内核;③从内核接受数据送到设备;④检测和处理设备错误。

3、基于 RTAI-Linux的嵌入式系统的软件实现

3.1 RTAI实时硬件抽象层的实现机理

引入新的数据结构rt_hal,形成了实时硬件抽象层RTHAL(Real Time Hardware Abatract Layer),rt_hal结构体的定义如下:

struct rt_hal

{

struct desc_struct*idt table;

void(*disint)(void);

void(*enint)(void);

unsigned int(*getflags)(void);

void(*setflags)(unsigned int flags);

void(*mask_and_ack_8259A)(unsigned int irq);

void(*unmask_8259A_irq)(unsigned int irq);

void(*ack_APIC_irq)(void);

void(*mask_IO_APIC_irq)(unsigned int irq);

void(*unmask_I0_APIC_irq)(unsigned int irq);

unsigned long *Io_apic_irgs;

void*irq_controller_lock;

void*irq_desc;

int *irq_vector;

void *irq_2_pin;

void* ret_from_intr;

struct desc_struct *gdt_table;

volatile int*idle_weight;

void (*lxrt_cli)(void);

};

在usr/src/Linux/arch/i386/kernel/irq.c中初始化为rthal:

struct rt_hal rthal

{

idt_table,/*中断向量表*/

Linux_cli,/*关中断函数*/

Linux_sti,/*开中断函数*/

Linux_save_flags,/*保存中断前的标志*/

Linux_restore_flags, /*恢复中断前的标志*/

Task_and_ack_8259A, /*中断屏蔽*/

Enable_8259A_irq,/*中断使能*/

Linux_ack_APIC_irq,

(),/*在io_apic.c文件中设置*/

&io_apic_irgs,

&irq_controller_lock,

irq_desc,

irq_vector,

(),/*在io_apic.c文件中设置*/

&ret_from_imr,

gdt_table,/*全局描述符表*/

&idle_weight,

()

};

初始化rthal时,指向函数的指针变量指向实现原来标准Linux中开、关中断等功能的函数如下:

static void linux_cli(void)

{

hard_cli();

}

static void linux_sti(void)

{

hard_sti();

}

static unsigned int linux_save_flags(void)

{

int flags;

hard_save_flags(flags)

turn flags

}

static void linux_restore_flags(unsigned int flags)

{

hard_restore_flags(flags);

}

当加载RTAI模块时,执行rt_mount_rtai函数如下:

void rt_mountes_rtai(void)

{

rthal.disint=linux_cli;

rthal.enint=linux_sti;

rthal.getflags=linux_save_flags;

rthal.setflags=linux_restore_flags;

rthal.mask_and_ack_8259A=trpd_mask_and_ack_irq;

rthal.unmask_8259A_irq=trpd_unmask_irq;

}

rthal中指向函数的指针变量指向了RTAI中实现的同名函数,在RTAI中实现的关中断函数如下:

static void linux_cli(void)

{

processor[hard_cpu_id()].intr_flag=0;

}

在RTAI中引入新的数据结构processor,描述和中断有关的处理器的状态:

static struct cpu_own_status

{

volatile unsigned int intr_flag;

volatile unsigned int linux_intr_flag;

volatile unsigned int pending_irqs;

volatile unsigned int activ_irqs;

}

processor[NR_RT_CPUS];

当执行关中断时,只是将数据结构processor中的中断标志位intr_flag设为0,而不是真正的清除eflags寄存器的IF标志来关中断,解决了Linux中长期关中断的问题。

3.2 采用RTAI增强Linux实时性的实现[4]

通过修改Linux内核相关的源文件,形成实时硬件抽象层。执行insmod命令,挂载上提供实时服务的rtai,rtai_sched,rtai_fifos模块,得到如下信息[2]:

Linux tick at 100Hz

Calibrated cpu frequency 551268530Hz

Calibrated 8254-timer-interrupt-to-scheduler latency 8000ns

Calibrated one shot setup time 3000ns

Module Size Used by

rtai_sched 16608 0 unused

rtai_fifos 33468? 0 unused

rtai 20728? 1 (rati_sched rtai-fifos)

加载上应用程序需要的RTAI模块后,就可以在RTAI-Linux环境下开发应用程序。

3.3 基于RTAI-Linux的应用程序的开发

针对工业测控系统的数据采集、数据处理、控制、通信等具体应用,将应用程序分为实时任务和非实时任务。实时任务利用RTAI提供的API来开发,编写成内核模块,工作在Linux的核心态。用户进程可利用Linux操作系统提供的大量资源,进行TCP/IP网络通信,开发图形用户界面程序等。实时任务之间、实时任务和非实时任务之间可通过Fifo队列和共享内存等方法通信。RTAI-Linux应用程序结构如图3-1所示。

图3-1 RTAI-Linux应用程序结构图

数据采集任务的实现在rt_process.c中的主要函数如下:

static void data_collect()

{

rtf_put(FIFO,&data_value,sizeof(data_value);/*将采集的数据放入实时FIFO中*/

rt_task_wait_period();

}

int int_module(void)

rtime tick_period;

rt_set_periodic_mode(); /*将定时器设置为周期模式*/

rt_task_init(&rt_task,data_collect,l,Stack_size,task_priority,1,0);/*初始化数据采集任务*/

return ()

}

void cleanup_module(void)

{

stop_rt_timer();

rtf_destroy(FIFO);

rt_task_delete(&rt_task);

return;

}

数据显示程序的实现在disaplay.c中的主要函数:

int main(void)

{

if((fifo=open("/dev/rtf()",()_rdonly))<0)

{

fprintf(stderr,"Error opening/dev/rtf()n");

exit(1);

}

read(fifo,&data_value,sizeof(data_value));/*用户进程从实时FIFO中读取数据*/

printf("data%fn",data_value)

}

4、结论

本文给出了一种应用于测控系统的基于Linux的嵌入式系统的设计方案,能保证测控任务完成的实时性、可靠性,可以连到工业以太网,实现远程监控,在工业控制领域有很好的应用前景。

本文作者的创新点:在嵌入式系统软件的设计与实现上,提供了开发实时应用程序的接口;利用实时应用接口(RTAI)来增强Linux的实时性,并引入实时硬件抽象层结构(rthal)、实时调度器、实时FIFO等实时服务;给出了在RTAI-Linux环境下开发工业测控系统中实时应用程序的方法。

参考文献:
[1] 王跃科等.基于网络互联的分布式测控系统开放体系结构与技术[J].计算机测量与控制,2002.10
[2] 须文波.基于Linux的嵌入式系统在测控系统中的设计与应用[D].江南大学硕士学位论文,2003.3
[3] 胡在华等.一种新型嵌入式测控网络的设计与应用[J].微型机与应用,2002.21
[4] 陈继荣,黄建华.Linux操作系统实时性分析及改进策略[J].微计算机信息,2005年第21卷.第11-2期.P67-P69

关键字:实时  接口  存储  串口 引用地址:基于Linux的嵌入式工业测控系统

上一篇:基于Linux的嵌入式工业测控系统
下一篇:基于嵌入式Web的电子交警系统

推荐阅读最新更新时间:2024-05-02 20:36

CAN/RS232接口卡的设计及实现方法
  控制器局域网( Controller Area Network,CAN)属于现场 总线 的范畴,其总线规范已被ISO国际标准化组织制定为国际标准,并被公认为是最有前途的现场总线之一。CAN总线广泛应用于控制系统中的各检测和执行机构之间的数据通信。因为CAN总线数据的传输和处理都由节点的 单片机 完成。这样就使设计者和观察者没有办法以比较直观的方式掌握总线的运行情况。   现在市场上主要有两种CAN的 接口卡 ,使用PCI总线和使用USB接口。前者具有传输速度快的特点,但却要占用一个计算机的插槽,并且设计上十分困难;后者的传输速度也很快,且价格较便宜,但要花费很大的精力进行USB的固件开发和维护,并要编写复杂
[嵌入式]
笔记本电脑四大接口全剖析,不止USB有大作用
随着各种外接数码设备的出现,小小的接口选择变得重要起来。选择笔记本电脑的时候,不仅要关注它的配置、品牌、外观,接口的丰富与否也是一个重要的参考点。今天就解析一下常用的接口。   一、 USB 接口 这个大家都很熟悉了,USB是笔记本电脑使用频率最高的接口。USB是英文Universal Serial Bus的缩写,中文含义是“通用串行总线”。USB经过多年的发展,现在已发展到3.1版本。   目前所售机型大多数USB接口都是2.0标准,USB1.1的产品已经被淘汰。USB2.0理论传输速率480Mbps,大约是60MB/秒,但在实际使用中的传输速度要低于这个理论数值。   目前新的USB 3.1,有着传输速率快的特点,理论上能达到
[嵌入式]
通过stm32cubemax配置与mpu6050通信兵读取数据,将数据串口打印
通过stm32cubemax完成配置,与mpu6050通信并读取数据,将数据通过串口打印出来 单片机源程序如下: /* USER CODE END Header */ /* Includes ------------------------------------------------------------------*/ #include main.h #include i2c.h #include stm32f4xx_hal.h #include usart.h #include gpio.h #include stdio.h /* Private includes -----------------
[单片机]
别小瞧USB Type-C,它在改变一个产业
当使用者购进新的装置时,通用序列汇流排(USB)Type-C可解决大部分用户面临的连接梦靥。这个新的标准将“破坏”(编按:这里用破坏一词是要强调USB Type-C带来的改变将有多大!)USB装置既有的生产和销售方式,但这是一件好事! 如果你有注意到近期Google、三星(Samsung)和苹果(Apple)发布的新产品消息,你可能已经发现这些新装置采用了一个新的、平滑的USB接口,称之为USB Type-C。   首先,三星在行动通讯大会(Mobile World Congress,MWC)发布的新智慧型手机Galaxy S6,内建了USB Type-C;之后苹果介绍了最新、超轻薄的笔记型电脑MacBook,为了满足人们
[嵌入式]
AMS推出具有PSI5接口的新型汽车级磁位置传感器
全球领先的高性能传感器解决方案供应商艾迈斯半导体公司(ams AG,瑞士股票交易所股票代码:AMS)今天宣布推出具备双线PSI5接口的AS5172A/B磁位置传感器,可实现精确旋转位置测量数据的快速及安全传输。 新的AS5172A和AS5172B系统级芯片(SoC)是360度非接触式的旋转磁位置传感器,能够提供14位高分辨率的绝对角度测量。根据汽车安全标准ISO26262,这两款传感器被开发为SEooC设备,并以广泛的片上自诊断系统为特色。这使AS5172A/B成为对安全性有较高要求的汽车应用的理想选择,帮助汽车系统满足最高级别的ASIL安全要求。 此外,AS5172A / B组件中的PSI5接口符合PSI5最新标准1.3
[汽车电子]
AMS推出具有PSI5<font color='red'>接口</font>的新型汽车级磁位置传感器
为您详解实时示波器和采样示波器的区别
  在过去从事工程学工作时,我曾经接手一个研究项目——把D型光纤浸在酸液池中数小时,表征它的光传输特性。我发现有一个全新的示波器,于是选择它作为工具。连续两周我都在开发测试夹具和编写软件,由于缺乏经验,我向一位资深工程师寻求帮助。工程师提出第一个问题:“你为什么要使用采样示波器来完成这项实验?”这个问题让我感到意外。我开始思索采样示波器和实时示波器有什么区别?两者的应用范围有哪些不同,哪些是可以覆盖的?   实时示波器通常被称为DSO(数字存储示波器)或MSO(混合信号示波器)。目前在售的大部分示波器都是实时示波器。实时示波器的带宽范围从几MHz到几十GHz,价位在几百美元到几十万美元不等。采样示波器通常被称为DCA(数字通信分
[测试测量]
为您详解<font color='red'>实时</font>示波器和采样示波器的区别
MSP430系统应用结构设计与选型
1 MSP430 简介 MSP430是TI公司推出的16位单片机系列产品,在电池供电的低功耗应用中具有独特的优势。其工作电压为1.8~3.6 V,正常工作时功耗可控制在200μA左右,低功耗模式可实现2μA甚至O.1μA的低功耗。MSP430系列单片机作为性能优异的MCU在中国已经得到了广泛的应用。MSP430具有高集成度,通常在单个芯片上集成了12位的A/D转换器、比较器、多个定时器,以及片内USART、看门狗、片内DCO等。一般单片就可满足大多数的应用需要。 MSP430单片机的程序存储器是Flash存储器,并且支持JTAG在线编程,可以方便地实现程序的下载、仿真、调试和升级。 目前整合性最好的MSP430F44X系列
[单片机]
基于STM32的模拟UART串口通信工作原理
UART工作原理 UART即通用异步收发器,是一种串行通信方式。数据在传输过程中是通过一位一位地进行传输来实现通信的,串行通信方式具有传输线少,成本底等优点,缺点是速度慢。串行通信分为两种类型:同步通信方式和异步通信方式。 但一般多用异步通信方式,主要因为接受和发送的时钟是可以独立的这样有利于增加发送与接收的灵活性。异步通信是一个字符接着一个字符传输,一个字符的信息由起始位、数据位、奇偶校验位和停止位组成。 每一个字符的传输靠起始位来同步,字符的前面一位是起始位,用下降沿通知收方开始传输,紧接着起始位之后的是数据位,传输时低位在前高位在后,字符本身由5~8位数据位组成。 数据位后面是奇偶校验位,最后是停止位,停止位是用高
[单片机]
基于STM32的模拟UART<font color='red'>串口</font>通信工作原理
小广播
最新嵌入式文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved