位置:51电子网 » 技术资料 » 嵌入式系统

实时操作系统μC/OS- II在真空炉控制系统中的应用

发布时间:2008/5/27 0:00:00 访问次数:421

真空炉控制系统具有数据采集、处理、动作实施、监控、保护和网络通信等功能。在正常工作时,负责采集真空炉的运行参数,例如温度、真空度、加热元件的电压、电流等相关参数。并对数据进行处理,把处理结果与给定的工艺设置进行比较后,发出相关执行命令,在系统发生故障时,控制系统还提供检测、记录、保护等功能。

该基于arm的工业嵌入式系统价格便宜,功能强大,维护操作简单,运行稳定,安全可靠。软件部分工作,主要包括μc/os-ii的移植以及应用软件的编写。

μc/os-ii的移植

移植μc/os-ii的主要工作是处理器和编译器相关代码及bsp的编写。

前提条件
移植μc/os-ii的微处理器必须满足以下要求:

(1) 处理器的c编译器支持可重人函数;

(2) 程序中打开和关闭中断;

(3) 处理器支持中断,并且能产生定时器中断(uc/os-ii是通过定时器中断来实现多任务的调度,即时间片的产生);

(4) 处理器要具有一定的硬件堆栈数量。

(5) 处理器要有将堆栈指针和其他cpu寄存器存储和读出堆栈(或者内存)的指令。

在此次系统改造中,使用的atmel工业级处理器at91rm9200(arm920t)完全满足以上条件。

bsp设计

ucos肩动中,系统在完成最初的硬件初始化以后便转入由开发者提供的main(),在main()中再调用一个内核函数osinit()来完成内核的初始化,然后在完成了与应用相关的初始化以后,就可以调用一个内核函数osstart()启动内核的进程调度。从上面的过程看出,main()函数其实是一个回调函数,整个系统的人口是建立在特定cpu(汇编语言编写的底层函数和数据结构)硬件初始化环境的程序中。

ucos内核引导装入程序与硬件初始化程序连接,或者说在其上构建内核引导装入程序。

引导程序针对具体的微处理器及其配置,完成系统内存映射、中断向量初始化、系统堆栈空间的分配和c语言变量初始化。最后,通过跳转指令转向c语言主程序main,在主程序中cpu的控制权交给操作系统。其中,内存映射是对系统所使用的外部存储器以及内部使用的所有功能模块的初始化,以便程序能正确地操作。中断向量的初始化是将中断处理程序存储在相应的中断向量位置。系统堆栈空间的分配主要是对处理器的7种工作模式分别设置栈底和堆栈大小,这保证多任务切换或者异常中断时,当前cpu的运行状态被保存,从而保证系统正常运行。

主要包括如下步骤:标志整个代码的初始人口点;设置异常中断向量表;初始化存储系统;初始化mmu;将已经初始化的数据搬运到可写的数据区;初始化各个模式下的数据栈;初始化一些特殊外围接口;中断处理程序;使能irq异常中断等。以上的步骤中根据处理器中相应的寄存器,进行数据的读写即可。

μc/os-ii移植

虽然μc/os-ii的大部分代码是用c语言编写,但还存在了一些与处理器相关的汇编语言代码,从而实现对处理器寄存器的访问以及堆栈的操作。μc/os-ii的体系结构如图1所示,可以看出μc/os-ii操作系统的移植主要是改写如下3个文件:

c语言头文件,os_cpu.h
c语言源文件,os_cpu_c.c
汇编源文件程序,os_cpu_a.asm

os_cpu.h

os_cpu.h包括一系列用#define定义的与处理器相关的数据类型、宏和常量,如关中断、开中断、任务切换和堆栈增长方式等。

(1) 数据类型定义

数据类型的修改与所用的编译器相关,不同的编译器使用不同的字节长度表示同一数据类型。在系统中定义整型数据结构为32位的整数。

(2) 堆栈单位及增长方向

在任务切换时,cpu现场的寄存器将保存在当前运行任务的堆栈中,所以os_stk数据类型应与cpu的寄存器长度一致。

at91rm9200堆栈由高地址向低地址增长。在函数调用时,人口参数和返回地址一般保存在当前任务的堆栈中,编译器的编译选项和由此生成的堆栈指令就会决定堆栈的增长方向。置os_stk_growth为0,表示堆栈从下(低地址)往上递增。

(3) 宏定义

包括开关中断的宏定义,以及进行任务切换的宏定义。

μc/os-ii在处理临界代码时要先关中断,处置完后再打开,这样可保护临界代码不被多任务和中断服务子程序破坏,处理器提供汇编指令os_enter_critical()、os_exit_critical()来开关中断。通过对os_critical_method赋值来选择方式。

os_task_sw()是从低优先级任务切换到高优先级任务时须用到的一个宏。os_task_sw()总是在任务级代码中被调用。

os_gpu_c.c

os_cpu_c.c中包括一系列c语言函数:ostaskstkinit()和

真空炉控制系统具有数据采集、处理、动作实施、监控、保护和网络通信等功能。在正常工作时,负责采集真空炉的运行参数,例如温度、真空度、加热元件的电压、电流等相关参数。并对数据进行处理,把处理结果与给定的工艺设置进行比较后,发出相关执行命令,在系统发生故障时,控制系统还提供检测、记录、保护等功能。

该基于arm的工业嵌入式系统价格便宜,功能强大,维护操作简单,运行稳定,安全可靠。软件部分工作,主要包括μc/os-ii的移植以及应用软件的编写。

μc/os-ii的移植

移植μc/os-ii的主要工作是处理器和编译器相关代码及bsp的编写。

前提条件
移植μc/os-ii的微处理器必须满足以下要求:

(1) 处理器的c编译器支持可重人函数;

(2) 程序中打开和关闭中断;

(3) 处理器支持中断,并且能产生定时器中断(uc/os-ii是通过定时器中断来实现多任务的调度,即时间片的产生);

(4) 处理器要具有一定的硬件堆栈数量。

(5) 处理器要有将堆栈指针和其他cpu寄存器存储和读出堆栈(或者内存)的指令。

在此次系统改造中,使用的atmel工业级处理器at91rm9200(arm920t)完全满足以上条件。

bsp设计

ucos肩动中,系统在完成最初的硬件初始化以后便转入由开发者提供的main(),在main()中再调用一个内核函数osinit()来完成内核的初始化,然后在完成了与应用相关的初始化以后,就可以调用一个内核函数osstart()启动内核的进程调度。从上面的过程看出,main()函数其实是一个回调函数,整个系统的人口是建立在特定cpu(汇编语言编写的底层函数和数据结构)硬件初始化环境的程序中。

ucos内核引导装入程序与硬件初始化程序连接,或者说在其上构建内核引导装入程序。

引导程序针对具体的微处理器及其配置,完成系统内存映射、中断向量初始化、系统堆栈空间的分配和c语言变量初始化。最后,通过跳转指令转向c语言主程序main,在主程序中cpu的控制权交给操作系统。其中,内存映射是对系统所使用的外部存储器以及内部使用的所有功能模块的初始化,以便程序能正确地操作。中断向量的初始化是将中断处理程序存储在相应的中断向量位置。系统堆栈空间的分配主要是对处理器的7种工作模式分别设置栈底和堆栈大小,这保证多任务切换或者异常中断时,当前cpu的运行状态被保存,从而保证系统正常运行。

主要包括如下步骤:标志整个代码的初始人口点;设置异常中断向量表;初始化存储系统;初始化mmu;将已经初始化的数据搬运到可写的数据区;初始化各个模式下的数据栈;初始化一些特殊外围接口;中断处理程序;使能irq异常中断等。以上的步骤中根据处理器中相应的寄存器,进行数据的读写即可。

μc/os-ii移植

虽然μc/os-ii的大部分代码是用c语言编写,但还存在了一些与处理器相关的汇编语言代码,从而实现对处理器寄存器的访问以及堆栈的操作。μc/os-ii的体系结构如图1所示,可以看出μc/os-ii操作系统的移植主要是改写如下3个文件:

c语言头文件,os_cpu.h
c语言源文件,os_cpu_c.c
汇编源文件程序,os_cpu_a.asm

os_cpu.h

os_cpu.h包括一系列用#define定义的与处理器相关的数据类型、宏和常量,如关中断、开中断、任务切换和堆栈增长方式等。

(1) 数据类型定义

数据类型的修改与所用的编译器相关,不同的编译器使用不同的字节长度表示同一数据类型。在系统中定义整型数据结构为32位的整数。

(2) 堆栈单位及增长方向

在任务切换时,cpu现场的寄存器将保存在当前运行任务的堆栈中,所以os_stk数据类型应与cpu的寄存器长度一致。

at91rm9200堆栈由高地址向低地址增长。在函数调用时,人口参数和返回地址一般保存在当前任务的堆栈中,编译器的编译选项和由此生成的堆栈指令就会决定堆栈的增长方向。置os_stk_growth为0,表示堆栈从下(低地址)往上递增。

(3) 宏定义

包括开关中断的宏定义,以及进行任务切换的宏定义。

μc/os-ii在处理临界代码时要先关中断,处置完后再打开,这样可保护临界代码不被多任务和中断服务子程序破坏,处理器提供汇编指令os_enter_critical()、os_exit_critical()来开关中断。通过对os_critical_method赋值来选择方式。

os_task_sw()是从低优先级任务切换到高优先级任务时须用到的一个宏。os_task_sw()总是在任务级代码中被调用。

os_gpu_c.c

os_cpu_c.c中包括一系列c语言函数:ostaskstkinit()和

相关IC型号
版权所有:51dzw.COM
深圳服务热线:13751165337  13692101218
粤ICP备09112631号-6(miitbeian.gov.cn)
公网安备44030402000607
深圳市碧威特网络技术有限公司
付款方式


 复制成功!