基于LINUX和CAN总线的工业嵌入式控制系统研究
时间:07-31
来源:作者:陈治湘 李刚 刘少伟
点击:
3.工业嵌入式控制系统的实时性与LINUX操作系统
3.1 实时性是工业系统的基本要求,也是考核嵌入式系统最重要的指标之一。工业控制中的操作系统要求严格的实时性,实时性也是嵌入式系统的主要特征。实时系统要求所有任务在规定的时间内完成,例如现场的数据采集,电力监控与管理,航天器的飞行控制等等。设计实时系统有两个相对的目标:一是保证严格的时间关键截止值;二是充分有效地利用各种资源,并能较好地容错。嵌入式系统在软件的控制下通过硬件高速地获取数据,并进行处理,产生相应地反应。整个过程必须具有严格的时间和可靠性约束。实时操作系统中的重要概念包括:
系统响应时间(system response time)指系统发出处理要求到系统给出应答信号的时间
任务换道时间(context switching time)指任务之间切换而使用的时间
中断延迟(interrupt latency)指计算机接受到中断信号到操作系统作出响应,并完成换道转入中断服务程序的时间
实时操作系统应具有如下功能:任务管理(多任务和基于优先级的任务调度);任务间同步和通信(信号量和邮箱等);存储器优化管理(含ROM的管理);实时时钟服务和中断管理服务。
通常,根据实际应用中截止时间的要求,可将实时进程分为严格满足时间截止的硬实时进程和对截止时间要求只有关联的软实时进程。面向实时的Linux调度策略,应该采用线程作为调度的基本单位。在调度系统中安排一定的调度时钟,以调度时钟作为线程调度的参考。调度时钟依据线程创建时设定的优先级,同时优先级高的线程将一直运行。如果两个线程具有相同的优先级,则采用随机调度的方法。Linux是一个通用的操作系统,内核不支持事件优先级和抢占实时性,因此在将Linux系统作为嵌入系统应用于工业测控领域时,必须开发和扩展实时功能,将Linux提升为一个实时操作系统。
3.2 Linux是由很多体积小且性能高的微内核和部件组成。由于内核代码的完全开放性,不同层次和不同领域的用户可以根据具体的应用需求对内核进行改造与剪裁,以较低的成本设计出满足自己要求的嵌入式操作系统。它有一整套的工具链gcc,用户能够比较容易自行建立与配置嵌入式系统以及在该系统下的开发环境与仿真运行环境,不需要专门的仿真器。它可以支持RISC和CISC结构的芯片,可以支持16位、32位和64位CPU;就目前的流行器件来说,它可以运行在Intel系列CPU上,也可以运行在IBM和Motorola的Power PC 系列CPU以及Alpha和SPARC系列CPU上。Linux的灵活性极好。在一个64兆内存的PIII平台下编写的应用程序,可移植到8兆内存的嵌入式硬件装置中并可靠和稳定地运行。考虑可移植性与可裁减性硬件平台的迅猛发展,为实时应用提供丰富的运行平台(从单片机到DSP,从CISC到RISC结构的各类微处理等)。为了能适应硬件平台的多样化,在设计、开发嵌入式实时操作系统内核时,要认真考虑可移植性问题。能够提供广泛平台支持的操作系统,目前嵌入式Linux是成功的典型。可移植性与实现代码选用的语言有很大关系。如,C语言比实现相同功能的汇编语言具有更好的可移植性。但是,用汇编语言实现的代码具有更高的执行效率和更紧凑的代码空间。所以,为了取得较好的执行效率,节省代码空间,获得较强的可移植性,需要选择一个在代码优化方面做得好的C语言编译器,能对C代码进行良好的优化。
图1LINUX内核体系结构
上图显示了Linux内核体系构建方式。它把Linux内核源代码清晰地分为体系结构相关部分和无关部分。体系结构无关部分定义了与底层,也就是体系结构相关部分的接口。更确切地说,该图能够说明所有期望具有平台无关特性的操作系统。体系结构无关代码并不关心宏的确切定义,把实际负责硬件体系留给相关代码区处理。这种处理的方法提高了代码的重用性、可移植性和可裁减性。然而,由于Linux是采用单内核设计,如果采用微内核设计,那么向其它体系结构上的移植将会更加容易.
4 基于CAN总线工业嵌入式控制系统的设计
基于CAN总线的工业嵌入式控制系统的整个模块如图2所示。
图2基于总线(CAN)工业嵌入式实时控制系统的原理图
总线控制器SJA1000 8000H~801FH 将设计好的PC/104模块作为一独立的控制系统插入专用的应用板,同样的模块可以有若干个,以层叠的方式嵌入同一块应用板,既可以完成类似的功能,也可以完成完全不同的其它功能(如数据采集转换等)。PC/104提供了一个非常紧凑的与标准台式PC或PC/AT结构完全兼容的层叠栈接模块。将台式PC机的全部功能重新包装于一个格式标准统一、稳定可靠、灵活且符合嵌入式系统尺寸的标准模块中,与PC兼容,用于嵌入式系统设计以替代传统的嵌入式微处理器十分适宜。通过PC/104总线,微处理器能够非常方便地和系统通信。为满足大量数据交换的要求,特增加了8kb的RAM以扩展内存。为了增加局部总线的驱动能力,在微处理器和PC104总线之间增加数据/地址驱动电路。为了系统的扩充能力,增加了地址译码电路,译出的地址0300H~031FH以备将来的I/O外设使用。同时为了增加有效的传输距离,采用了Philips公司的高性能CAN总线收发器82C250,它具有高速性(最高可达1Mb/s)、能抗瞬间干扰、保护总线、支持多达110个节点的连接等优点。另外,设计了CAN地址选择电路,以确保CAN总线节点在整个系统中的唯一地址。
3.1 实时性是工业系统的基本要求,也是考核嵌入式系统最重要的指标之一。工业控制中的操作系统要求严格的实时性,实时性也是嵌入式系统的主要特征。实时系统要求所有任务在规定的时间内完成,例如现场的数据采集,电力监控与管理,航天器的飞行控制等等。设计实时系统有两个相对的目标:一是保证严格的时间关键截止值;二是充分有效地利用各种资源,并能较好地容错。嵌入式系统在软件的控制下通过硬件高速地获取数据,并进行处理,产生相应地反应。整个过程必须具有严格的时间和可靠性约束。实时操作系统中的重要概念包括:
系统响应时间(system response time)指系统发出处理要求到系统给出应答信号的时间
任务换道时间(context switching time)指任务之间切换而使用的时间
中断延迟(interrupt latency)指计算机接受到中断信号到操作系统作出响应,并完成换道转入中断服务程序的时间
实时操作系统应具有如下功能:任务管理(多任务和基于优先级的任务调度);任务间同步和通信(信号量和邮箱等);存储器优化管理(含ROM的管理);实时时钟服务和中断管理服务。
通常,根据实际应用中截止时间的要求,可将实时进程分为严格满足时间截止的硬实时进程和对截止时间要求只有关联的软实时进程。面向实时的Linux调度策略,应该采用线程作为调度的基本单位。在调度系统中安排一定的调度时钟,以调度时钟作为线程调度的参考。调度时钟依据线程创建时设定的优先级,同时优先级高的线程将一直运行。如果两个线程具有相同的优先级,则采用随机调度的方法。Linux是一个通用的操作系统,内核不支持事件优先级和抢占实时性,因此在将Linux系统作为嵌入系统应用于工业测控领域时,必须开发和扩展实时功能,将Linux提升为一个实时操作系统。
3.2 Linux是由很多体积小且性能高的微内核和部件组成。由于内核代码的完全开放性,不同层次和不同领域的用户可以根据具体的应用需求对内核进行改造与剪裁,以较低的成本设计出满足自己要求的嵌入式操作系统。它有一整套的工具链gcc,用户能够比较容易自行建立与配置嵌入式系统以及在该系统下的开发环境与仿真运行环境,不需要专门的仿真器。它可以支持RISC和CISC结构的芯片,可以支持16位、32位和64位CPU;就目前的流行器件来说,它可以运行在Intel系列CPU上,也可以运行在IBM和Motorola的Power PC 系列CPU以及Alpha和SPARC系列CPU上。Linux的灵活性极好。在一个64兆内存的PIII平台下编写的应用程序,可移植到8兆内存的嵌入式硬件装置中并可靠和稳定地运行。考虑可移植性与可裁减性硬件平台的迅猛发展,为实时应用提供丰富的运行平台(从单片机到DSP,从CISC到RISC结构的各类微处理等)。为了能适应硬件平台的多样化,在设计、开发嵌入式实时操作系统内核时,要认真考虑可移植性问题。能够提供广泛平台支持的操作系统,目前嵌入式Linux是成功的典型。可移植性与实现代码选用的语言有很大关系。如,C语言比实现相同功能的汇编语言具有更好的可移植性。但是,用汇编语言实现的代码具有更高的执行效率和更紧凑的代码空间。所以,为了取得较好的执行效率,节省代码空间,获得较强的可移植性,需要选择一个在代码优化方面做得好的C语言编译器,能对C代码进行良好的优化。
图1LINUX内核体系结构
上图显示了Linux内核体系构建方式。它把Linux内核源代码清晰地分为体系结构相关部分和无关部分。体系结构无关部分定义了与底层,也就是体系结构相关部分的接口。更确切地说,该图能够说明所有期望具有平台无关特性的操作系统。体系结构无关代码并不关心宏的确切定义,把实际负责硬件体系留给相关代码区处理。这种处理的方法提高了代码的重用性、可移植性和可裁减性。然而,由于Linux是采用单内核设计,如果采用微内核设计,那么向其它体系结构上的移植将会更加容易.
4 基于CAN总线工业嵌入式控制系统的设计
基于CAN总线的工业嵌入式控制系统的整个模块如图2所示。
图2基于总线(CAN)工业嵌入式实时控制系统的原理图
总线控制器SJA1000 8000H~801FH 将设计好的PC/104模块作为一独立的控制系统插入专用的应用板,同样的模块可以有若干个,以层叠的方式嵌入同一块应用板,既可以完成类似的功能,也可以完成完全不同的其它功能(如数据采集转换等)。PC/104提供了一个非常紧凑的与标准台式PC或PC/AT结构完全兼容的层叠栈接模块。将台式PC机的全部功能重新包装于一个格式标准统一、稳定可靠、灵活且符合嵌入式系统尺寸的标准模块中,与PC兼容,用于嵌入式系统设计以替代传统的嵌入式微处理器十分适宜。通过PC/104总线,微处理器能够非常方便地和系统通信。为满足大量数据交换的要求,特增加了8kb的RAM以扩展内存。为了增加局部总线的驱动能力,在微处理器和PC104总线之间增加数据/地址驱动电路。为了系统的扩充能力,增加了地址译码电路,译出的地址0300H~031FH以备将来的I/O外设使用。同时为了增加有效的传输距离,采用了Philips公司的高性能CAN总线收发器82C250,它具有高速性(最高可达1Mb/s)、能抗瞬间干扰、保护总线、支持多达110个节点的连接等优点。另外,设计了CAN地址选择电路,以确保CAN总线节点在整个系统中的唯一地址。
- 基于MSP430系列单片机的CAN总线接口转换卡设计(01-17)
- CAN总线—PROFIBUS-DP总线网关的实现方法(01-17)
- 汽车CAN总线(01-21)
- CAN总线控制器与DSP的接口(01-21)
- 基于ARM的CAN总线智能节点的设计(01-24)
- 基于WinCE的液位遥测系统软件设计(04-13)