微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 基于飞思卡尔MK10N512微控制器及MQX操作系统的电梯主控系统设计

基于飞思卡尔MK10N512微控制器及MQX操作系统的电梯主控系统设计

时间:06-26 来源:电子产品世界 点击:

问地址的高16位,片选掩码寄存器FB_CSMRn[31:16]用于屏蔽访问地址的低16位。基址寄存器FB_CSARn设置访问外设最大空间为216=64kbyte,配合掩码寄存器设置访问外设最大空间为232=4GByte。本设计中SRAM容量为512kbyte,位于CS0区域,故需要配合掩码寄存器一并设置,如FB_CSAR0[31:16] = 0x6000;FB_CSMR0[31:16] = 0x0007,其区域容量为2(16+3)=512Kbyte。而FeRAM容量为32kbyte,位于CS1区域,只需设置基址寄存器即可,如FB_CSAR0[31:16] = 0x6010。

FlexBus接口可以连接8位、16位、32位数据总线,支持字节、字和长字操作数传输。FlexBus接口还支持Burst传输,实现一个周期最多可以传输16 Byte。本设计采用8位数据总线,为了提高效率,采用Burst传输,实现一个周期传输4Byte。MK10N512的FB_AD31-24管脚连接存储器的数据线D7-D0管脚,故数据传输采用左对齐的方式,控制寄存器FB_CSCR0设置如下:FB_CSCR0[BLS]=0b,FB_CSCR0[PS]=01b,FB_BSTR0[PS]=1b,FB_CSCR0[BSTW]=1b。

5 主控系统软件设计

5.1 开发环境

Code Warrior Developer Studio 10.2开发环境是飞思卡尔专门针对其微控制器的集成开发环境。它是基于eclipse框架的集成开发环境,包括项目管理器、文本编辑器、汇编器、C/C++编译器、连接器和调试器。通过安装插件的方式,可以添加MQX实时操作系统调试工具。MQX调试工具能实现监控系统内核数据、任务的运行情况和占用内存、信号量(Semaphores)和事件(Event)等的使用情况,非常便于基于MQX操作系统的程序调试。相比其他集成开发环境,Code Warrior Developer Studio 10.2对飞思卡尔公司开发的微控制器和MQX实时操作系统,能提供最新、最快、最好的支持。

5.2 软件架构

软件架构如图5所示,采用分层结构,包括PSP(Processor Service Package)、BSP(Board Service Package)、MQX内核、定时控制程序、中断控制程序、电梯控制任务和通信数据处理任务。PSP和BSP是硬件驱动层,负责初始化CPU、板上外设、总线接口、通信接口、以及提供访问硬件的接口。MQX内核是操作系统层,提供任务管理、内存管理、任务间的通信与同步、中断管理、时间管理等系统级服务及接口函数。定时控制程序及中断控制程序为系统中间层,为电梯任务与操作系统的中间控制层,是根据电梯任务的特点,调用操作系统的任务接口API实现对电梯任务的调度处理。电梯控制任务和通信数据处理任务为用户层。电梯控制任务负责根据召唤信息控制电梯的运行。通信数据处理任务负责处理电梯主制系统与调试工具、召唤系统、大楼智能控制系统的数据通信,并把通信数据传输给电梯控制任务。

5.3 系统初始化

系统上电后,首先对硬件进行初始化,即对MCU的内部寄存器和外设寄存器赋初始值,包括初始化栈指针寄存器SP的值。接着对程序定义的变量进行初始化,包括对不带初始值的变量进行清零;对有初始值的变量,把其初始值从ROM赋值到RAM;对程序定义的对象进行初始化。完成上述初始化之后,就可以对实时操作系统MQX进行初始化,创建MQX系统内存空间,初始化最基本的组件,创建IDLE空闲任务和Main_task自动运行任务,并且进入Main_task自动运行任务。至此MQX系统初始化就基本完成,接着可以开始用户任务程序初始化。Main_task任务初始化定时控制程序、中断控制程序、电梯控制任务和通信数据处理任务。Main_task任务完成用户任务初始化后,把任务运行的控制权交给定时控制程序和中断控制程序,系统开始运行电梯控制任务和通信数据处理任务。系统初始化流程如图6所示。

5.4 任务设计

由图5可知,用户任务包括通信数据处理任务和电梯控制任务。任务按优先级顺序运行,高优先级任务能够抢占低优先级任务。

通信数据处理任务的特点是代码量小,实时性要求高。通信数据处理任务的优先级设置高于电梯控制任务,由中断控制程序调用MQX任务调度API函数实现对其运行控制。

电梯控制任务为电梯控制应用程序的主要构成部分,特点是代码量大、占用大量的内存和CPU资源。为了使各部分程序能按要求实时运行,把电梯控制任务划分为不同周期运行的任务(详见5.6 电梯运行控制设计)。实时性要求较高的电梯运行控制处理,则运行周期短,如设定20ms的运行周期。而实时性要求较低的电梯运行状态信息处理,则运行周期长,如设定200ms的运行周期。周期任务的运行调度由定时控制程序调用MQX任务调度API函数来实现。为了保证周期任务运行的实时性,定时控制程序监控周期任务的运行时间,当其运行时间超过预先设定的超时时间,则说明CPU的负荷率过高,定时控制

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top