• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      飛思卡爾S12X系列單片機(jī)協(xié)處理器的應(yīng)用

      2016-09-13 07:58:36吳成加安徽安凱汽車股份有限公司合肥230051
      客車技術(shù)與研究 2016年4期
      關(guān)鍵詞:信號(hào)量內(nèi)核寄存器

      吳成加,徐 川(安徽安凱汽車股份有限公司,合肥 230051)

      飛思卡爾S12X系列單片機(jī)協(xié)處理器的應(yīng)用

      吳成加,徐川
      (安徽安凱汽車股份有限公司,合肥230051)

      介紹飛思卡爾16位微處理器S12X(E)系列單片機(jī)協(xié)處理器(XGATE)的基本特性、中斷及優(yōu)先級(jí)設(shè)置、代碼在RAM中運(yùn)行、信號(hào)量的互鎖,以及利用其實(shí)現(xiàn)CAN信息中斷接收的應(yīng)用實(shí)例,從而減輕CPU的負(fù)擔(dān)以增強(qiáng)汽車電子軟件系統(tǒng)的數(shù)據(jù)吞吐能力。

      飛思卡爾單片機(jī);協(xié)處理器;XGATE;S12X系列

      與S12系列微處理器相比,F(xiàn)reescale公司推出的S12X(E)系列16位微處理器的性能有全面的提升。HCS12X系列單片機(jī)是HCS12系列的增強(qiáng)型產(chǎn)品,基于S12 CPU內(nèi)核,增加了172條指令,可以執(zhí)行32位運(yùn)算,總線頻率最高可達(dá)50 MHz,并且改進(jìn)了中斷處理能力[1]。以汽車電子產(chǎn)品開發(fā)應(yīng)用中廣泛使用的MC9S12X EQ512為例,該處理器集成了中斷控制器,具有豐富的尋址方式。有7個(gè)中斷優(yōu)先級(jí),并且內(nèi)核支持優(yōu)先級(jí)的調(diào)度,最多可以有120個(gè)中斷源。其最大特點(diǎn)是增加了一個(gè)并行處理的外圍協(xié)處理器XGATE模塊,下面主要介紹其基本特性及具體應(yīng)用。

      1 XGATE的基本特性

      XGATE是一個(gè)獨(dú)立于主處理器(CPU12X)的可編程RISC內(nèi)核,可作為一個(gè)高效的DMA控制器使用,能夠自主地實(shí)現(xiàn)外設(shè)與RAM之間的高速數(shù)據(jù)傳輸,或在數(shù)據(jù)傳送的過(guò)程中進(jìn)行靈活的數(shù)據(jù)處理,同時(shí)將處理的結(jié)果放在XGATE和主核共享RAM區(qū)變量中,以實(shí)現(xiàn)CPU12X和XGATE之間共享數(shù)據(jù)。它還可以作為一個(gè)單獨(dú)的算法單元完成某些運(yùn)算,如通信協(xié)議的處理等[2]。

      XGATE的16位的精簡(jiǎn)指令集內(nèi)核,擁有8個(gè)16位通用寄存器R0~R7,1個(gè)程序計(jì)數(shù)器PC,1個(gè)4位的條件碼寄存器CCR,其中R0恒為0,可用于對(duì)變量的快速清零或置位。R1為數(shù)據(jù)指針寄存器,R7為堆棧指針寄存器。XGATE響應(yīng)中斷時(shí),硬件將中斷向量表中對(duì)應(yīng)通道的1個(gè)16位字裝載到R1(通常用做數(shù)據(jù)指針),將棧指針裝載到R7。

      XGATE共有72條獨(dú)立的指令,指令時(shí)鐘最高可達(dá)100 MHz,其大部分指令是對(duì)通用寄存器的操作,為單周期指令。訪問(wèn)存儲(chǔ)器的指令為雙周期指令。跳轉(zhuǎn)指令視條件而定可能為1或2個(gè)周期指令。XGATE有一些特殊的比特提取及插入的單周期指令,特別適用于串行通信協(xié)議使用。

      如圖1所示,XGATE最多可以訪問(wèn)處理器內(nèi)部的64 KB空間。這64 KB空間包括2 KB片上外設(shè)寄存器、30 KB的FLASH空間(最低地址0x780800向上延伸的30 KB FLASH空間)、最大 32 KB的片內(nèi) RAM (0x0F8000~0xFFFFF)。片內(nèi)的EEPROM空間或片外資源XGATE無(wú)法訪問(wèn)。XGATE的訪問(wèn)內(nèi)存空間完全包含在HCS12X主處理器CPU12X的訪問(wèn)空間之內(nèi)。地址仲裁的規(guī)則是,HCS12X主處理器的優(yōu)先級(jí)總是高于XGATE。在實(shí)際的代碼運(yùn)行過(guò)程中,HCS12X主處理器CPU12X的代碼在FLASH中運(yùn)行,若XGATE的代碼也在FLASH中運(yùn)行,有可能會(huì)導(dǎo)致總線沖突。此外,XGATE的運(yùn)行速度較HCS12X主處理器CPU12X要高,XGATE的總線頻率是HCS12X主處理器CPU12X的兩倍[1]。

      圖1 XGATE存儲(chǔ)空間地址映射

      XGATE的代碼執(zhí)行是由中斷事件驅(qū)動(dòng)的,通過(guò)產(chǎn)生中斷來(lái)觸發(fā)XGATE運(yùn)行。當(dāng)沒(méi)有中斷時(shí),XGATE不執(zhí)行任何指令,也沒(méi)有功耗。XGATE的代碼就相當(dāng)于是一組中斷服務(wù)程序,沒(méi)有主程序或空閑時(shí)的循環(huán)程序。XGATE的中斷服務(wù)程序也稱線程。

      主處理器CPU12X與XGATE之間常用的通信方式是共享資源。由于這兩個(gè)內(nèi)核都可以獨(dú)立異步地訪問(wèn)內(nèi)存及片上外設(shè),這就會(huì)產(chǎn)生數(shù)據(jù)完整性問(wèn)題。為了保證共享數(shù)據(jù)的完整性,XGATE集成了8個(gè)硬件互斥信號(hào)量(Semaphore)。用戶可以通過(guò)硬件信號(hào)量來(lái)同步兩個(gè)內(nèi)核對(duì)共享數(shù)據(jù)的訪問(wèn)。信號(hào)量有3種狀態(tài):釋放、主處理器CPU12X鎖定和XGATE鎖定。每個(gè)內(nèi)核在訪問(wèn)共享資源前,應(yīng)當(dāng)首先鎖定相應(yīng)的信號(hào)量;在訪問(wèn)結(jié)束后應(yīng)當(dāng)釋放相應(yīng)的信號(hào)量[3-5]。

      2 XGATE的應(yīng)用

      設(shè)計(jì)人員在新建項(xiàng)目工程文件時(shí)(如車身電子控制單元、數(shù)字組合儀表、發(fā)動(dòng)機(jī)電控單元等),可以在XGATE Setup選項(xiàng)中選擇 Multi Core(HCS12X and XGATE)項(xiàng),即可在工程文件中,使用XGATE功能模塊,反之,當(dāng)選擇Single Core(HCS12X)項(xiàng)時(shí),則不使用XGATE功能模塊,由于HCS12X和XGATE的指令集不同,CodeWarrior用兩個(gè)編譯器分別對(duì) CPU12X和XGATE的代碼進(jìn)行編譯,編譯的代碼要分別放在.c和.cxgate的文件中,需要XGATE執(zhí)行或調(diào)用的所有代碼都必須要放在工程文件中的xgate.cxgate文件中。

      2.1XGATE的中斷及優(yōu)先級(jí)設(shè)置

      MC9S12XEQ512中包括預(yù)留的中斷一共有120個(gè)中斷位,對(duì)中斷優(yōu)先級(jí)寄存器的分配,系統(tǒng)采用分組設(shè)置的方法,將120個(gè)中斷分為15個(gè)組,每組8個(gè)中斷。設(shè)置中斷時(shí),先將需要的組別設(shè)置到相應(yīng)的寄存器,再設(shè)置8個(gè)中斷優(yōu)先級(jí)寄存器的某一個(gè),即可完成中斷的設(shè)置。中斷的優(yōu)先級(jí)共劃分為七個(gè)中斷優(yōu)先級(jí),每一個(gè)中斷源都有一個(gè)可以設(shè)置的級(jí)別,同一優(yōu)先級(jí)的中斷同時(shí)觸發(fā)時(shí),高地址(中斷號(hào)較小)的中斷先響應(yīng)。分組的規(guī)則是這樣的:中斷地址位7到位4相同的中斷為一組,比如MC9SXEQ512.h中,Vcan0tx、Vcan0rx、Vcan0err、Vcan0wkup、Vflash、Vflashfd、Vspi2、Vspi1為不同的中斷向量,其地址定義分別為0xFFB0U、0xFFB2U、0xFFB4U、0xFFB6U、0xFFB8U、0xFFBAU、0xFFBCU、0xFFBEU。

      這些中斷的位7到位4都為B,它們就被分成了一組。中斷向量表從1~F正好15個(gè)組。用來(lái)設(shè)置組別的寄存器可通過(guò)INT_CFADDR寄存器來(lái)進(jìn)行設(shè)置,如圖2示。

      圖2 中斷組配置地址寄存器

      需要設(shè)置某個(gè)組別的中斷時(shí),只要寫入最后8位地址就行了,比如設(shè)置Vcan0rx的中斷優(yōu)先級(jí),就寫入0xB2即可。HCS12X的中斷既可以運(yùn)行在內(nèi)核CPU12X中,也可以運(yùn)行于XGATE中,中斷的選擇可以通過(guò)INT_CFDATA0-7的RQST位來(lái)進(jìn)行選擇,當(dāng)RQST置為1時(shí),選擇中斷服務(wù)程序在XGATE中運(yùn)行,反之則選擇中斷服務(wù)程序在HCS12X處理器中運(yùn)行,如圖3所示[6]。

      圖3 XGATE的中斷配置及中斷響應(yīng)示意圖

      設(shè)置好組別之后,需要對(duì)中斷優(yōu)先級(jí)和中斷寄存器進(jìn)行設(shè)置,INT_CFDATA0-7的[2:0]位為該中斷的優(yōu)先級(jí)選擇位,中斷優(yōu)先級(jí)為0~7。向INT_CFDATAx低地址中寫入0~7就能設(shè)置相應(yīng)的中斷優(yōu)先級(jí)。

      圖4所示的是某一組中斷寄存器INT_CFDATA0~I(xiàn)NT_CFDATA7,一共有8個(gè),每個(gè)都代表中斷組中的一個(gè)中斷。中斷寄存器的設(shè)置規(guī)則是,該中斷地址的低4位除以2,比如設(shè)置Vcan0rx的中斷向量為0xB2,它的低4位為2,除以2后為1,那么我們就需要對(duì)INT_CFDATA1進(jìn)行設(shè)置,假如Vcan0rx的中斷優(yōu)先級(jí)設(shè)為1,我們向INT_CFDATA1的[2:0]位寫入1即可。

      圖4 中斷請(qǐng)求配置及優(yōu)先級(jí)選擇

      2.2XGATE的中斷代碼的運(yùn)行

      如果CPU12X、XGATE運(yùn)行的代碼都放在FLASH中,兩者都訪問(wèn)總線時(shí),就有可能造成總線沖突。CPU12X訪問(wèn)片內(nèi)RAM時(shí)只占用總線帶寬的一半,為了降低總線沖突的概率,同時(shí)增加系統(tǒng)的運(yùn)行效率,設(shè)計(jì)人員經(jīng)常會(huì)將XGATE的代碼放在RAM中運(yùn)行,這樣在每個(gè)CPU12X的RAM訪問(wèn)周期中,總能讓出一個(gè)XGATE的RAM訪問(wèn)周期。要實(shí)現(xiàn)上述功能,設(shè)計(jì)人員需要對(duì)XGATE的代碼重定位,即將中斷代碼從XGATE_CODE_FLASH段重新定義到XGATE_CODE _RAM段。

      XGATE在FLASH中的地址映射在工程文件的Prm文件中,XGATE在FLASH中的空間映射如下。其中XGATE存儲(chǔ)空間的 2 KB外設(shè)寄存器(0x00000~0x007FF)直接對(duì)應(yīng)FLASH全局地址的0xE08000~0xE087FF;30 KB的FLASH空間共劃分為兩塊,低地址14 KB存儲(chǔ)空間PAGE_E0映射到FLASH全局空間的0xE08800~ 0xE0BFFF、高地址 16 KB存儲(chǔ)空間PAGE_E1映射到 FLASH全局空間的 0xE18000~0xE1BFFF位置。

      PAGE_E0_0=READ_ONLYDATA_FAR IBCC_FAR 0xE08000 TO 0xE087FF;//不映射到XGATE;PAGE_ E0=READ_ONLY DATA_FAR IBCC_FAR 0xE08800 TO 0xE0BFFF ALIGN 2[1:1];//PAGE_E0空間映射,PAGE_ E1=READ_ONLY DATA_FAR IBCC_FAR 0xE18000 TO 0xE1BFFF ALIGN2[1:1];//PAGE_E1空間映射。

      XGATE在RAM中的空間映射如下,在該工程中,處理器RAM最大空間為32 KB,XGATE對(duì)其中24 KB RAM空間進(jìn)行映射,XGATE存儲(chǔ)空間中的地址范圍為0x8000~0xFFFF;在Prm文件中將RAM劃分為6塊,每個(gè)RAM塊為4 KB,映射到RAM空間中對(duì)應(yīng)的地址分別 為 0xF81100~0xF81FFF、0xF91000~0xF91 FFF、0xFA1000~0xFA1FFF、0xFB1000~0xFB1FFF、0xFC1000 ~0xFC1FFF、0xFD1000~0xFD1FFF。

      在系統(tǒng)中XGATE代碼默認(rèn)是指向PAGE_E0、PAGE_E1位置,即XGATE_CODE_FLASH段,只需要將其重新定義到RAM_F8、RAM_F9、RAM_FA、RAM_FB位置,XGATE_CODE_RAM即可實(shí)現(xiàn)CODE_SEG段代碼在RAM中運(yùn)行。圖5中顯示了同一段代碼分別在FLASH(左側(cè))中和RAM(右側(cè))中運(yùn)行的地址映象。當(dāng)XGATE_CODE在FLASH中運(yùn)行時(shí),仿真停止后它的指令指向地址為0xE08xxxFLASH空間;而在RAM中運(yùn)行時(shí),仿真停止后它的指令指向地址空間為0xF81xxx的RAM空間。

      圖5 XGATE CODE在FLASH和RAM中運(yùn)行匯編代碼

      2.3XGATE的信號(hào)量互鎖

      CPU12X與XGATE之間通信方式是通過(guò)資源共享實(shí)現(xiàn)數(shù)據(jù)交互。由于兩個(gè)內(nèi)核都可以隨時(shí)獨(dú)立訪問(wèn)內(nèi)存和片上外設(shè),這樣就會(huì)產(chǎn)生數(shù)據(jù)的完整性問(wèn)題。為了保證數(shù)據(jù)的完整性,XGATE集成了8個(gè)硬件互斥信號(hào)量(Semaphore)。系統(tǒng)可以通過(guò)硬件信號(hào)量同步兩個(gè)內(nèi)核對(duì)共享數(shù)據(jù)的訪問(wèn)。信號(hào)量有3種狀態(tài),即釋放、CUP12X鎖定、XGATE鎖定。每一個(gè)內(nèi)核在訪問(wèn)共享數(shù)據(jù)之前,首先對(duì)相應(yīng)的信號(hào)量進(jìn)行鎖定,在訪問(wèn)結(jié)束后釋放該信號(hào)量。信號(hào)量在三種狀態(tài)之間進(jìn)行轉(zhuǎn)換,如圖6所示,XGATE通過(guò)ssem加上一個(gè)3 bit立即數(shù)來(lái)鎖定或釋放某個(gè)信號(hào)量,CPU12X通過(guò)信號(hào)量寄存器XGSEMG來(lái)鎖定或釋放某個(gè)信號(hào)量[7]。

      圖6 信號(hào)量狀態(tài)轉(zhuǎn)換

      2.4XGATE的應(yīng)用實(shí)例

      假如要通過(guò)XGATE對(duì)汽車總線上的CAN信息(如電流、溫度、壓力、扭矩、速度等信息)進(jìn)行接收,并將接收到的數(shù)據(jù)放入到CPU12X和XGATE共享的RAM變量中,可以在RAM共享區(qū)中定義一組變量。該組變量在運(yùn)行過(guò)程中,兩個(gè)內(nèi)核都可以訪問(wèn)它。

      然后對(duì)XGATE及中斷進(jìn)行配置。在初始化XGATE模塊中,開通了兩個(gè)中斷源,其中一個(gè)PIT0中斷處理函數(shù)位于CPU12X的代碼中,中斷優(yōu)先級(jí)設(shè)為2,CAN0接收中斷運(yùn)行在XGATE中,中斷優(yōu)先級(jí)為1。

      static void SetupXGATE(void)

      {//初始化塊和XGATE向量設(shè)置XGVBR寄存器的起始地址

      XGVBR=(unsigned int)(void*__far)(XGATE_VectorTable-XGATE_VECTOR_OFFSET);

      ROUTE_INTERRUPT(PIT0_VEC,0x02);//運(yùn)行在CPU12X內(nèi)核中

      ROUTE_INTERRUPT(CAN0RX_VEC,0x81);//運(yùn)行在XGATE內(nèi)核中

      XGMCTL=0xFBC1;//使能XGATE模塊和中斷

      最后要初始化XGATE中斷向量表以指向函數(shù)。XGATE向量表是完全獨(dú)立于CPU的向量表,有兩個(gè)項(xiàng),分別服務(wù)于每一個(gè)向量。第一個(gè)項(xiàng)是指向中斷函數(shù)的指針,如CAN0中斷的服務(wù)函數(shù)CAN0RX_XSR();第二個(gè)項(xiàng)是當(dāng)發(fā)生中斷時(shí)將被傳遞的參數(shù)值,如下所示:

      const XGATE_TableEntryXGATE_VectorTable[]={

      {ErrorHandler,0x09},//通道9-保留

      ……

      {CAN0RX_XSR,0x59},//通道59-CAN0接收中斷

      ……

      {ErrorHandler,0x79},//通道79-IRQ中斷};

      3 結(jié)束語(yǔ)

      實(shí)踐證明,XGATE通過(guò)一些特殊的比特提取及插入的單周期指令,特別適用于串行通信協(xié)議使用。協(xié)處理器可以獨(dú)立異步地訪問(wèn)內(nèi)存及片上外設(shè),在系統(tǒng)應(yīng)用中可減輕主處理器CPU12X的負(fù)擔(dān),以增加系統(tǒng)的數(shù)據(jù)吞吐能力;訪問(wèn)RAM方面XGATE也有其自己的優(yōu)勢(shì),在單片機(jī)及嵌入式系統(tǒng)開發(fā)中,展現(xiàn)出其獨(dú)特的優(yōu)勢(shì)。

      [1]飛思卡爾9S12X系列雙核中的協(xié)處理器XGATE使用方法[DB/OL].電子工程世界,2012.[2016-01-15].http://download. eeworld.com.cn/detail/Timson/1504.

      [2]張陽(yáng).單片機(jī)原理及嵌入式系統(tǒng)開發(fā)[M].北京:電子工業(yè)出版社,2011.9.

      [3]張陽(yáng),吳曄,滕勤.MC9S12XS單片機(jī)原理及嵌入式系統(tǒng)開發(fā)[M].北京:電子工業(yè)出版社,2011.9.

      [4]王威.HCS12微控制器原理及應(yīng)用[M]北京:北京航空航天大學(xué)出版社,2007.

      [5]邵貝貝.單片機(jī)嵌入式應(yīng)用的在線開發(fā)方法[M].北京:清華大學(xué)出版社,2004.10.

      [6]Freescale Company.MC9S12XEP100 Reference Manual CoversMC9S12XE Family[DB/OL].[2016-01-15].http://cache.free scale.com/files/microcontrollers/doc/data_sheet/MC9S12XEP100 RMV1.

      [7]Freescale Company.How to Configure and Use the XGATE on S12X Devices[DB/OL].[2016-01-15].http://cache.nxp.com/files /microcontrollers/doc/app_note/AN2685.pdf?fsrch=1&sr=2&pageNum=1.

      修改稿日期:2016-02-01

      Application of Freescale S12X Series Microcomputer Coprocessor

      Wu Chengjia,Xu Chuan
      (Anhui Ankai Automobile Co.,Ltd,Hefei 230051,China)

      The authors introduce the basic characteristics,interrupt and prioritysetting,code operation in RAMand signal interlockingofthe Freescale 16-bit microprocessor series S12X(E)single chip processor(XGATE).Theyalso present the application instance ofusingcoprocessor implementation CAN information interrupt receivingin order to reduce the burden ofCPUand enhance the data throughput ofthe vehicle electronic software system.

      Freescale micro-computer;coprocessor;XGATE;S12Xseries

      U463.6

      B

      1006-3331(2016)04-0055-04

      吳成加(1971-),男,工程師;研究方向:新能源汽車電驅(qū)動(dòng)及控制系統(tǒng)核心零部件關(guān)鍵技術(shù)研究。

      猜你喜歡
      信號(hào)量內(nèi)核寄存器
      基于STM32的mbedOS信號(hào)量調(diào)度機(jī)制剖析
      萬(wàn)物皆可IP的時(shí)代,我們當(dāng)夯實(shí)的IP內(nèi)核是什么?
      強(qiáng)化『高新』內(nèi)核 打造農(nóng)業(yè)『硅谷』
      Lite寄存器模型的設(shè)計(jì)與實(shí)現(xiàn)
      基于嵌入式Linux內(nèi)核的自恢復(fù)設(shè)計(jì)
      Linux內(nèi)核mmap保護(hù)機(jī)制研究
      Nucleus PLUS操作系統(tǒng)信號(hào)量機(jī)制的研究與測(cè)試
      分簇結(jié)構(gòu)向量寄存器分配策略研究*
      μC/OS- -III對(duì)信號(hào)量的改進(jìn)
      Linux操作系統(tǒng)信號(hào)量機(jī)制的實(shí)時(shí)化改造
      宁蒗| 赤峰市| 梓潼县| 甘泉县| 遂昌县| 英超| 馆陶县| 金山区| 高州市| 通州区| 南漳县| 龙门县| 常宁市| 周口市| 青田县| 嘉兴市| 珲春市| 皋兰县| 固原市| 长海县| 内黄县| 武胜县| 横山县| 苍溪县| 柳江县| 康保县| 保亭| 当阳市| 宁波市| 德惠市| 吉木乃县| 台南市| 宜宾市| 义马市| 玛纳斯县| 九台市| 陆河县| 凉山| 长阳| 色达县| 盘山县|