0 引 言
当时,在工业操控范畴,网络操控技能快速开展。网络操控要求测控体系有必要具有两方面的功用:一方面要在现场完结杂乱的测控使命,一般一些使命具有必定的实时性的要求;另一方面要求测控体系能够与某一类型的操控网相连,完结长途监控。而在现在运用的大多数测控体系中,嵌入式体系的硬件选用8/16位的单片机;软件多选用汇编语言编程,仅包含一个简略的循环处理的操控流程;单片机与单片机或上位机之间通讯通过RS232、RS485来组网。这些网络存在通讯速度慢、联网功用差、开发困难的问题。而工业以太网已逐步完善,在工业操控范畴取得越来越多的运用。工业以太网运用了TCP/IP协议,便于联网,并具有高速操控网络的长处。现在,32位嵌入式CPU价格的下降,功用指标的进步,为嵌入式体系的广泛运用供给了可能性。根据上述状况,咱们将嵌入式体系运用于测控体系,可大大进步测控体系的功用,嵌入式体系一般运用嵌入式操作体系来开发。在嵌入式操作体系的挑选上,因为Linux有完好敞开的源代码,可针对详细运用修正和优化体系,内核安稳,适用于多种CPU和多种硬件渠道,支撑网络等特色,因此挑选Linux作为嵌入式操作体系。
1 测控体系整体规划
1.1 规划方针
测控体系以根据Linux的嵌入式体系为中心,规划方针归纳起来首要有以下几点:
(1)测控使命在现场完结。测控体系选用涣散的操控战略,体系正常运转时上位机只起到状况监控的效果。在工业现场完结数据丈量、数据处理、进程操控等多种使命,能确保一些使命完结的实时性。
(2)具有必定的自确诊、自校对的功用,将毛病状况上传给上位机,便于保护人员查错、排错。具有动态显现和数据存储才能。
(3)测控体系可连到工业以太网,通过工业以太网完结长途监控。
1.2 技能道路
嵌入式体系以嵌入式微处理器为中心,运转嵌入式Linux 操作体系。运用程序可通过网络进行更新;通过键盘进行人机对话;数据可通过LCD现场显现;重要数据能够文件方法保存在Flash存储器中;数据和报警信息可通过串口向上位机传输,也可通过以太网口向工业以太网或Inernet发布信息,用户通过显现界面检查设备状况,设置设备参数,完结长途监控、长途保护。
1.3 整体框图
2 根据Linux的嵌入式体系的规划
2.1 硬件规划
考虑一般测控体系对嵌入式体系要求比较多的功用有:键盘接口、显现接口、A/D(或D/A)转化单元、可扩展的I/O接口、打印机接口、与PC机通讯的串行接口、以太网口等。完结的嵌入式体系硬件框图如下:
针对测控体系的运用,挑选Motorola的Coldfire系列的MCF5307.MCF5307是一款高功用、低价位、高集成度的微处理器,为嵌入式操控运用而规划。MCF5307的处理才能达70 MIPS,作业频率88.47 MHz,总线频率44.236 MHz,为运转Linux供给硬件上的支撑,在开发板上还集成有16 M的SDRAM、2 M的FLASH、10 baseT以太网接口、RS232/RS485串口、I/O接口等。
2.2 软件规划
嵌入式操作体系是整个嵌入式体系的中心。咱们挑选Linux,但典型的Linux是为桌面装备的,内核非常巨大,而嵌入式体系的RAM存储容量很小,因此,要把Linux操作体系装入有限的内存,就要对它进行裁剪,在裁剪进程中触及的首要技能有:
(1) 内核的精简。规范Linux是面向PC的,集成了许多PC需求而嵌入式体系并不需求的功用。对一些可独立加上或卸下的功用块,可在编译内核时,仅保存嵌入式体系所需的功用支撑模块,删去不需求的功用。例如,测控体系要连入以太网,就要供给对TCP/IP的支撑,编译时加上TCP/IP栈;而SCSI、 Floppy之类的外设在咱们的嵌入式体系中彻底没有必要,编译时可去掉。这样,从头编译过的内核明显减小。
(2) 虚拟内存机制的屏蔽。通过剖析发现,虚拟内存是导致Linux实时性不强的原因之一。在工业操控中一些使命要满意必定的实时性的要求,屏蔽内核的虚拟内存办理机制能够增强Linux的实时性。当要更改内核的某项机制时,一般不用大规模的改写代码,可选用条件编译的办法。思路是用#ifdef或 #ifndef屏蔽现有句子,在#else宏编译句子中包含自己编写的代码。完结虚拟内存的机制有:地址映射机制、内存分配和收回机制,缓存和改写机制、请页机制、交流机制、内存同享机制,将完结这些机制的数据结构和函数屏蔽或修正,还要修正与之相关的文件。需求改动的文件首要在 /include/linux、/mm、/drivers/char、/fs、/ipc/kernel、/init目录下。首要的改动如下:与虚存有关的首要的数据结构是vm_area_struct,将进程的mm_struct结构中的vm_area_struct去掉,vm_area_struct运用了vm_ops来笼统出对虚拟内存的处理办法,屏蔽与虚拟内存操作有关的函数。内存映射首要由do_mmap()完结,改写此函数的代码。撤销交流操作,屏蔽用于交流的结构和函数声明,以及完结交流的代码。撤销内核看护进程kswapd.
(3) 设备驱动程序的编写。确认了内核的根本功用后,就要为特定的设备编写驱动程序,可按照在Linux下编写驱动程序的规矩编写。编写的设备驱动程序应具有以下功用:①对设备初始化和开释;②把数据从内核传到硬件和从硬件读取数据;③读取运用程序传递给设备文件的数据和回送运用程序恳求的数据;④检测和处理设备呈现的过错。
完结上述过程后,一个小型的Linux 操作体系就结构完结了。结构后的Linux包含进程办理、内存办理和文件办理,支撑多使命并行;开发根据闪存的文件体系,运用程序和重要数据以文件的方法被存放在闪存文件体系中;有完好的TCP/IP协议栈,Linux内建有对以太网操控器的支撑,能够通过以太网口连到工业以太网上,完结长途监控。
还要将裁剪好的内核移植到所用的方针板上,一般移植内核时,首要要将内核编译成针对该处理器的方针代码。而咱们所用的嵌入式微处理器MCF5307 是ColdFire系列,它有一些不同于其它CPU的当地,一些内核程序要改写,触及到编写Linux的引导代码和修正与体系结构相关部分的代码,首要是内存办理和中止处理部分。将Flash作为体系的发动设备,引导代码放在Flash上。体系加电后,由引导代码进行根本的硬件初始化,然后把内核映象装入内存运转。
关于运用程序的开发,针对测控体系的详细运用,运用Linux 供给API接口开发运用程序。测控体系要完结多个使命,因为屏蔽了虚拟内存机制,一切的使命一起享有物理内存,存在于一致的线性空间中。使命中的地址为真实的物理地址,因为不需求进行地址空间映射,在使命切换时的上下文切换时刻大大削减,进步了呼应的速度,实时性增强。Linux选用根据优先级的轮转法调度战略,能够完结多个使命并行。各个使命的实时性要求不同,可通过区分优先级,使实时性要求高的使命区分为实时进程,具有较高的优先级,优先得到调度,确保必定的实时性的要求。使命间通过信号量、音讯行列等机制通讯。
在嵌入式体系中软件开发的首要模块有:数据收集模块,数据处理模块,数据显现模块,通讯和数据发布模块,毛病确诊模块。其间毛病确诊模块完结实时自确诊,在体系作业期间,对体系内部进行部分测验。行将确诊程序设置在嵌入式体系中中止等级最低的中止服务程序,在不影响体系作业的前提下,进行实时确诊。如发现毛病且复诊后仍有错,通过显现界面显现,并上传给上位机,确保体系的可靠性。
在嵌入式Linux的开发中,选用主—从方法,通过串行口或以太网口,使方针板和宿主机相连。运用的是GNU的系列东西,GNU具有免费敞开的源代码,也为咱们开发根据Linux的运用程序供给了便利。它包含一系列的开发调试东西。首要组件有:
gcc:编译器,可做成穿插编译的方法,即在宿主机上开发编译方针机上可运转的二进制文件;
Binutils:一些辅助东西,包含objdump(能够反编译二进制文件)、as(汇编编译器)、ld(连接器)等等;
Gdb:调试器,可运用多种穿插调试方法,如gdbserve(运用以太网络调试)。
最终,将调试好的内核和运用程序烧录到闪存中。裁剪后的Linux已成经功移植到方针渠道上,在开发板上运转杰出。通过测验,已满意一般的实时性要求。
3 结 论
咱们开发的根据Linux 的嵌入式体系运用于测控体系,能满意当时工业操控范畴对测控体系提出的要求,确保测控使命完结的实时性、可靠性,可连到工业以太网完结长途监控。其硬件,接口选用插板的方法,结构简略,易于装卸,便利体系集成和保护。软件方面,用户可针对详细运用作相应修正或删去即可,因此进步了测控体系的开发功率,在工业操控范畴有很好的运用远景。