国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

MCF52223的多用戶在線編程應(yīng)用設(shè)計

2010-08-14 08:03:44錢海亮錢仇圣
關(guān)鍵詞:用戶程序服務(wù)程序多用戶

錢海亮,錢仇圣

(1.大連理工大學(xué),大連116620; 2.蘇州大學(xué))

錢海亮(本科生)、錢仇圣(碩士研究生),研究方向為嵌入式系統(tǒng)應(yīng)用。

引 言

目前,大多數(shù)嵌入式系統(tǒng)編程是針對單用戶程序,即芯片中只有一個程序。有些情況下,用戶希望在芯片中駐留多個用戶程序,并能方便更新和選擇運行,這就提出了多用戶在線編程的需求。隨著制造工藝的進(jìn)步,芯片由8位發(fā)展到16位、32位,集成的Flash和 RAM也越來越大。這給多用戶在線編程提供了基礎(chǔ),而集成的Flash模塊給在線編程提供了可能[1]。芯片的發(fā)展及資源變化如表1所列。

表1 芯片發(fā)展及資源變化

嵌入式系統(tǒng)中的多用戶在線編程是指,在芯片中駐留一個監(jiān)控程序,負(fù)責(zé)下載PC機(jī)編譯后的用戶程序到指定的Flash區(qū)域,以及根據(jù)用戶的選擇來運行指定的用戶程序。多用戶在線編程與單用戶在線編程的區(qū)別是,多用戶程序共享系統(tǒng)資源,極大地提高了資源的利用率,但某一時刻只有監(jiān)控程序或一個用戶程序運行。

本文以飛思卡爾公司推出的內(nèi)部集成USB2.0模塊的32位微控制器MCF52223為例,在分析監(jiān)控程序、中斷向量重定位、全局變量訪問等關(guān)鍵技術(shù)的基礎(chǔ)上,設(shè)計并實現(xiàn)了用于機(jī)器人開發(fā)平臺的多用戶在線編程系統(tǒng)。

1 監(jiān)控程序設(shè)計

監(jiān)控程序類似于操作系統(tǒng)的內(nèi)核,是多用戶在線編程的核心技術(shù)。復(fù)位后首先啟動監(jiān)控程序,主要負(fù)責(zé)通過USB接口下載PC機(jī)的多用戶程序。監(jiān)控程序涉及的主要模塊包括:USB通信模塊、Flash擦除與寫入模塊、用戶程序選擇運行模塊、中斷模塊。通過 USB模塊和Flash擦除與寫入模塊下載多個用戶程序,由用戶程序選擇運行模塊選擇某個用戶程序運行,從而實現(xiàn)多用戶在線編程。

1.1 USB通信模塊

MCF52223集成了USB 2.0模塊[3],可方便、高效地與PC機(jī)通信,下載多用戶程序。檢驗正確后,將接收到的用戶程序交給Flash擦除與寫入模塊處理。數(shù)據(jù)包協(xié)議格式如下(數(shù)據(jù)長度小于512字節(jié)):

1.2 Flash擦除與寫入模塊

Flash擦除與寫入模塊負(fù)責(zé)將用戶程序?qū)懭胗脩魠^(qū)所在的Flash中,從而實現(xiàn)多用戶程序的下載。MCF52223擁有256 KB的 Flash,分為32個扇區(qū),每個扇區(qū)分為4頁,每頁為2 048字節(jié)[4]。擦除的最小單位為一頁,因此在設(shè)計多用戶在線編程系統(tǒng)時,給每個用戶分配的空間以頁為單位[3]。系統(tǒng)預(yù)留6個大小為32 KB的用戶區(qū),即最多6個用戶在線編程。

1.3 監(jiān)控程序執(zhí)行流程

監(jiān)控程序是多用戶在線編程的核心,是芯片首先執(zhí)行的代碼。其主要功能是初始化USB通信模塊和Flash擦除與寫入模塊,并通過USB下載用戶程序,如圖1所示。

在全局變量初始化中聲明unsigned char UserFlag=0,聲明指針unsigned short*Time=(unsigned short*)0x20000400。UserFlag用于保存選擇的用戶程序。指針Time所指向的區(qū)域用于保存定時器中斷次數(shù),使得用戶區(qū)和監(jiān)控程序能共享全局變量。

圖1 監(jiān)控程序執(zhí)行流程

2 中斷向量重定位技術(shù)

單用戶在線編程系統(tǒng)中每個中斷只有一個中斷服務(wù)程序,中斷產(chǎn)生后直接跳轉(zhuǎn)到該中斷服務(wù)程序中運行,實現(xiàn)起來比較簡單[2]。而對于多用戶在線編程系統(tǒng),每個用戶程序都可以添加自己的中斷服務(wù)程序,即對于一個中斷號會有多個不同用戶的中斷服務(wù)程序,由原來一對一的關(guān)系轉(zhuǎn)變?yōu)橐粚Χ嗟年P(guān)系。中斷向量重定位技術(shù)就是用來解決這個難題的。

當(dāng)選擇某個用戶程序運行時,全局變量UserFlag記錄了用戶號,產(chǎn)生中斷后會從監(jiān)控程序的中斷向量表中查找中斷服務(wù)程序的入口地址。但由于是多用戶編程,還需根據(jù)當(dāng)前用戶程序標(biāo)志UserFlag查找中斷向量重定位表,得到當(dāng)前用戶程序的相應(yīng)中斷程序入口地址,并跳轉(zhuǎn)到當(dāng)前用戶相應(yīng)中斷程序執(zhí)行(即由傳統(tǒng)的直接跳轉(zhuǎn)轉(zhuǎn)變成多級間接跳轉(zhuǎn)),如表2所列。中斷執(zhí)行流程如圖2所示。

表2 中斷向量重定位表

圖2 中斷執(zhí)行流程

每個用戶程序中有一張中斷向量重定位表,用于跳轉(zhuǎn)到用戶編寫的中斷服務(wù)子程序。每個用戶區(qū)的中斷服務(wù)程序的函數(shù)名已經(jīng)固定好,用于指定入口地址。

舉例說明:在用戶程序2中開啟了 UART1接收中斷。當(dāng)監(jiān)控程序?qū)⒖刂茩?quán)交給用戶程序2后,用戶程序2處于運行狀態(tài)(UserFlag=2)。如果此時 UART1接收到數(shù)據(jù),就會向MCU發(fā)出 UART中斷(0x4E)請求。MCU立即響應(yīng)該中斷,并跳轉(zhuǎn)到中斷向量表中該中斷對應(yīng)的中斷服務(wù)程序的入口地址處(_Uart1_handler)運行。在該中斷服務(wù)程序中根據(jù)UserFlag跳轉(zhuǎn)到用戶程序2的中斷向量重定位表User2Vector[1](1表示在用戶程序中的中斷重定位號),并開始執(zhí)行真正的中斷服務(wù)程序。

3 全局變量訪問

在多用戶編程系統(tǒng)中還需解決的問題是,監(jiān)控程序中定義的變量如何在多用戶程序中共享。在用戶程序中可能需要訪問監(jiān)控程序中定義的全局變量,但由于用戶程序和監(jiān)控程序是分開編譯的,所以用戶程序無法直接訪問監(jiān)控程序中定義的全局變量。例如,將MCF52223的定時器中斷設(shè)為1 ms,用戶程序希望通過查詢系統(tǒng)時鐘的方式控制小燈每隔1 s亮滅一次。因此,必須在監(jiān)控程序中添加全局變量,以記錄中斷的次數(shù)。用戶程序查詢該全局變量,記錄第一次的值t1,并將再次讀得的值t2和 t1比較。當(dāng)t2-t1>=1 000時便點亮小燈,同時更新t1的值t1=t2。有以下3種方法可實現(xiàn)全局變量的訪問。

3.1 寄存器

在MCF52223中可以使用的數(shù)據(jù)寄存器有D0~D7[3],主要用來保存操作數(shù)或運算結(jié)果等信息。它們的存在節(jié)省了存取操作數(shù)所需占用總線和訪問存儲器的時間。寄存器資源比較少,而且寄存器是CPU使用的,因此用戶程序在使用前需要將寄存器的值進(jìn)棧,用完后立即恢復(fù)。由于用戶程序是不定期地訪問寄存器,所以需要頻繁地進(jìn)出棧,而且在C語言工程中直接操作寄存器需要嵌入?yún)R編代碼,使用起來不方便,還會破壞程序的整體風(fēng)格。

3.2 RAM

RAM是指隨機(jī)存取存儲器,存儲單元的內(nèi)容可按需隨意取出或存入,且存取的速度與存儲單元的位置無關(guān)。這種存儲器在斷電時將丟失其存儲內(nèi)容,故主要用于存儲短時間使用的程序。每個單片機(jī)上都集成了一定容量的RAM,用于程序的運行、變量的存儲以及系統(tǒng)堆棧的開辟。程序中定義的全局變量都是在RAM中分得的一塊空間,而變量名只是地址的代號,因而可以使用地址直接存取RAM。

3.3 Flash

對Flash存儲器的讀寫不同于一般的RAM讀寫,需要專門的編程。Flash有兩種基本操作:擦除(Erase)和寫入(Program)。擦除操作的含義是將存儲單元的內(nèi)容由二進(jìn)制的0變成1;而寫入操作的含義,是將存儲單元的內(nèi)容由二進(jìn)制的1變成0。對Flash的寫入相當(dāng)于對其執(zhí)行邏輯與的操作,邏輯與的結(jié)果即Flash的內(nèi)容。在執(zhí)行寫入操作之前要確保該區(qū)域是空白的(存儲單元內(nèi)容為$FF),即同一塊Flash擦除后只能寫一次。因此,在寫Flash之前一般都要先執(zhí)行擦除操作。

雖然RAM的效率較寄存器低,但是比Flash提升了很多,而且可以用變量或指針來操作,使用比較簡單。因而,最終確定使用RAM來實現(xiàn)多用戶在線編程的全局變量共享。實現(xiàn)方法:定義unsigned short類型的指針指向地址為0x20000400所在的RAM區(qū)。

unsigned short*p;

p=(unsigned short*)0x20000400;

系統(tǒng)每毫秒產(chǎn)生一次定時器中斷,在中斷服務(wù)程序中將指針的值加1,即(*p)++。在用戶程序中也可以定義指針,同樣指定到地址為0x20000400所在的RAM區(qū),也可以跟監(jiān)控程序一樣使用地址來共享。

4 系統(tǒng)試驗評估

隨著機(jī)器人教育的普及,采用多用戶程序在線編程技術(shù)的教育機(jī)器人開發(fā)平臺隨之而產(chǎn)生。教育機(jī)器人開發(fā)平臺分為3部分:外圍設(shè)備、主控板及軟件平臺。學(xué)生通過軟件平臺生成多個用戶程序,通過 USB將編譯后的用戶程序下載到主控板的不同用戶空間中??梢岳冒存I選擇不同的用戶程序運行,搭配外圍設(shè)備即可實現(xiàn)用戶的功能。

在分析并解決了前面幾個關(guān)鍵問題后,設(shè)計的監(jiān)控程序完全能滿足多用戶在線編程的要求。通過使用指針的方法在多用戶程序中共享監(jiān)控程序中定義的全局變量,如本設(shè)計中的系統(tǒng)時鐘。本文使用了USB接口,因而支持即插即用,并且高通信速率和有效的校驗保證了用戶程序快速、高效的下載,為多用戶在線編程提供了高可靠性。

結(jié) 語

多用戶程序在線編程技術(shù)建立在監(jiān)控程序的基礎(chǔ)上,是對單用戶程序在線編程技術(shù)的一種改進(jìn),使硬件資源得以充分利用。文中以MCF52223芯片為例設(shè)計的多用戶程序在線編程系統(tǒng),可穩(wěn)定地應(yīng)用于教育機(jī)器人開發(fā)平臺。實踐表明,多用戶在線編程運行穩(wěn)定、方便更新,具有一定的推廣價值。但是有關(guān)在線編程技術(shù)的文獻(xiàn)資料比較少,特別是多用戶程序在線編程方面,因此,涉及的相關(guān)細(xì)節(jié)還需進(jìn)一步研究。

[1]王宜懷.嵌入式應(yīng)用在線編程開發(fā)系統(tǒng)的研制[J].計算機(jī)工程,2002,28(12):22-24.

[2]殷樹明.嵌入式系統(tǒng)中多用戶程序在線編程技術(shù)[J].計算機(jī)工程,2009,35(5):37-39,43.

[3]Freescale.Freescale MCF52223 MCF52223RM[OL].2004[2009-11].http://www.freescale.com,2004.

[4]Freescale.Freescale MCF52223 DataSheet[OL].2004[2009-11].http://www.freescale.com.

[5]鄧宗明,蔣祺明.基于PowerPC開發(fā)板的Flash編程方法與實現(xiàn)[J].計算機(jī)工程,2004,30(1):168-170.

[6]Morton Todd D.嵌入式微控制器[M].嚴(yán)雋永,譯.北京:機(jī)械工業(yè)出版社,2005.

猜你喜歡
用戶程序服務(wù)程序多用戶
安泰科多用戶報告訂閱單
基于移動終端的人事信息員工自助服務(wù)系統(tǒng)設(shè)計
基于移動終端的人事信息員工自助服務(wù)系統(tǒng)設(shè)計
安泰科多用戶報告訂閱單
安泰科多用戶報告訂閱單
基于C#的進(jìn)程守護(hù)程序的設(shè)計
視聽(2020年3期)2020-06-11 14:28:18
安泰科多用戶報告訂閱單
變速箱控制系統(tǒng)Bootloader設(shè)計與實現(xiàn)
嵌入式設(shè)備遠(yuǎn)程升級方案設(shè)計
基于CCS5.5的TMS320C6000程序Flash上電自舉設(shè)計及三種固化方法對比
深圳市| 金华市| 时尚| 洛浦县| 乌恰县| 酒泉市| 永仁县| 德州市| 长阳| 景德镇市| 托克托县| 都江堰市| 博野县| 保康县| 肇庆市| 渝北区| 曲水县| 张掖市| 宝鸡市| 江达县| 榕江县| 贵定县| 郎溪县| 大同县| 都兰县| 大埔县| 道真| 巩义市| 图片| 青神县| 安义县| 手游| 茶陵县| 大化| 安达市| 崇州市| 莎车县| 读书| 双柏县| 开江县| 平凉市|