基于飛思卡爾MK10N512微控制器及MQX操作系統(tǒng)的電梯主控系統(tǒng)設(shè)計
FlexBus接口具有5個用戶可編程片選信號(FB_CS[5:0]),F(xiàn)B_CS[5:0]片選信號通過片選基址寄存器FB_CSARn和片選掩碼寄存器FB_CSMRn來控制?;芳拇嫫鱂B_CSARn[31:16]設(shè)置訪問地址的高16位,片選掩碼寄存器FB_CSMRn[31:16]用于屏蔽訪問地址的低16位?;芳拇嫫鱂B_CSARn設(shè)置訪問外設(shè)最大空間為216=64kbyte,配合掩碼寄存器設(shè)置訪問外設(shè)最大空間為232=4GByte。本設(shè)計中SRAM容量為512kbyte,位于CS0區(qū)域,故需要配合掩碼寄存器一并設(shè)置,如FB_CSAR0[31:16] = 0x6000;FB_CSMR0[31:16] = 0x0007,其區(qū)域容量為2(16+3)=512Kbyte。而FeRAM容量為32kbyte,位于CS1區(qū)域,只需設(shè)置基址寄存器即可,如FB_CSAR0[31:16] = 0x6010。
本文引用地址:http://m.butianyuan.cn/article/248893.htmFlexBus接口可以連接8位、16位、32位數(shù)據(jù)總線,支持字節(jié)、字和長字操作數(shù)傳輸。FlexBus接口還支持Burst傳輸,實(shí)現(xiàn)一個周期最多可以傳輸16 Byte。本設(shè)計采用8位數(shù)據(jù)總線,為了提高效率,采用Burst傳輸,實(shí)現(xiàn)一個周期傳輸4Byte。MK10N512的FB_AD31-24管腳連接存儲器的數(shù)據(jù)線D7-D0管腳,故數(shù)據(jù)傳輸采用左對齊的方式,控制寄存器FB_CSCR0設(shè)置如下:FB_CSCR0[BLS]=0b,F(xiàn)B_CSCR0[PS]=01b,F(xiàn)B_BSTR0[PS]=1b,F(xiàn)B_CSCR0[BSTW]=1b。
5 主控系統(tǒng)軟件設(shè)計
5.1 開發(fā)環(huán)境
Code Warrior Developer Studio 10.2開發(fā)環(huán)境是飛思卡爾專門針對其微控制器的集成開發(fā)環(huán)境。它是基于eclipse框架的集成開發(fā)環(huán)境,包括項(xiàng)目管理器、文本編輯器、匯編器、C/C++編譯器、連接器和調(diào)試器。通過安裝插件的方式,可以添加MQX實(shí)時操作系統(tǒng)調(diào)試工具。MQX調(diào)試工具能實(shí)現(xiàn)監(jiān)控系統(tǒng)內(nèi)核數(shù)據(jù)、任務(wù)的運(yùn)行情況和占用內(nèi)存、信號量(Semaphores)和事件(Event)等的使用情況,非常便于基于MQX操作系統(tǒng)的程序調(diào)試。相比其他集成開發(fā)環(huán)境,Code Warrior Developer Studio 10.2對飛思卡爾公司開發(fā)的微控制器和MQX實(shí)時操作系統(tǒng),能提供最新、最快、最好的支持。
5.2 軟件架構(gòu)
軟件架構(gòu)如圖5所示,采用分層結(jié)構(gòu),包括PSP(Processor Service Package)、BSP(Board Service Package)、MQX內(nèi)核、定時控制程序、中斷控制程序、電梯控制任務(wù)和通信數(shù)據(jù)處理任務(wù)。PSP和BSP是硬件驅(qū)動層,負(fù)責(zé)初始化CPU、板上外設(shè)、總線接口、通信接口、以及提供訪問硬件的接口。MQX內(nèi)核是操作系統(tǒng)層,提供任務(wù)管理、內(nèi)存管理、任務(wù)間的通信與同步、中斷管理、時間管理等系統(tǒng)級服務(wù)及接口函數(shù)。定時控制程序及中斷控制程序?yàn)橄到y(tǒng)中間層,為電梯任務(wù)與操作系統(tǒng)的中間控制層,是根據(jù)電梯任務(wù)的特點(diǎn),調(diào)用操作系統(tǒng)的任務(wù)接口API實(shí)現(xiàn)對電梯任務(wù)的調(diào)度處理。電梯控制任務(wù)和通信數(shù)據(jù)處理任務(wù)為用戶層。電梯控制任務(wù)負(fù)責(zé)根據(jù)召喚信息控制電梯的運(yùn)行。通信數(shù)據(jù)處理任務(wù)負(fù)責(zé)處理電梯主制系統(tǒng)與調(diào)試工具、召喚系統(tǒng)、大樓智能控制系統(tǒng)的數(shù)據(jù)通信,并把通信數(shù)據(jù)傳輸給電梯控制任務(wù)。
5.3 系統(tǒng)初始化
系統(tǒng)上電后,首先對硬件進(jìn)行初始化,即對MCU的內(nèi)部寄存器和外設(shè)寄存器賦初始值,包括初始化棧指針寄存器SP的值。接著對程序定義的變量進(jìn)行初始化,包括對不帶初始值的變量進(jìn)行清零;對有初始值的變量,把其初始值從ROM賦值到RAM;對程序定義的對象進(jìn)行初始化。完成上述初始化之后,就可以對實(shí)時操作系統(tǒng)MQX進(jìn)行初始化,創(chuàng)建MQX系統(tǒng)內(nèi)存空間,初始化最基本的組件,創(chuàng)建IDLE空閑任務(wù)和Main_task自動運(yùn)行任務(wù),并且進(jìn)入Main_task自動運(yùn)行任務(wù)。至此MQX系統(tǒng)初始化就基本完成,接著可以開始用戶任務(wù)程序初始化。Main_task任務(wù)初始化定時控制程序、中斷控制程序、電梯控制任務(wù)和通信數(shù)據(jù)處理任務(wù)。Main_task任務(wù)完成用戶任務(wù)初始化后,把任務(wù)運(yùn)行的控制權(quán)交給定時控制程序和中斷控制程序,系統(tǒng)開始運(yùn)行電梯控制任務(wù)和通信數(shù)據(jù)處理任務(wù)。系統(tǒng)初始化流程如圖6所示。
linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)單片機(jī)相關(guān)文章:單片機(jī)教程
linux相關(guān)文章:linux教程
單片機(jī)相關(guān)文章:單片機(jī)視頻教程
單片機(jī)相關(guān)文章:單片機(jī)工作原理
評論