999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

MCF52223的多用戶在線編程應用設計

2010-08-14 08:03:44錢海亮錢仇圣
單片機與嵌入式系統應用 2010年3期
關鍵詞:程序

錢海亮,錢仇圣

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

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

引 言

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

表1 芯片發展及資源變化

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

本文以飛思卡爾公司推出的內部集成USB2.0模塊的32位微控制器MCF52223為例,在分析監控程序、中斷向量重定位、全局變量訪問等關鍵技術的基礎上,設計并實現了用于機器人開發平臺的多用戶在線編程系統。

1 監控程序設計

監控程序類似于操作系統的內核,是多用戶在線編程的核心技術。復位后首先啟動監控程序,主要負責通過USB接口下載PC機的多用戶程序。監控程序涉及的主要模塊包括:USB通信模塊、Flash擦除與寫入模塊、用戶程序選擇運行模塊、中斷模塊。通過 USB模塊和Flash擦除與寫入模塊下載多個用戶程序,由用戶程序選擇運行模塊選擇某個用戶程序運行,從而實現多用戶在線編程。

1.1 USB通信模塊

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

1.2 Flash擦除與寫入模塊

Flash擦除與寫入模塊負責將用戶程序寫入用戶區所在的Flash中,從而實現多用戶程序的下載。MCF52223擁有256 KB的 Flash,分為32個扇區,每個扇區分為4頁,每頁為2 048字節[4]。擦除的最小單位為一頁,因此在設計多用戶在線編程系統時,給每個用戶分配的空間以頁為單位[3]。系統預留6個大小為32 KB的用戶區,即最多6個用戶在線編程。

1.3 監控程序執行流程

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

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

圖1 監控程序執行流程

2 中斷向量重定位技術

單用戶在線編程系統中每個中斷只有一個中斷服務程序,中斷產生后直接跳轉到該中斷服務程序中運行,實現起來比較簡單[2]。而對于多用戶在線編程系統,每個用戶程序都可以添加自己的中斷服務程序,即對于一個中斷號會有多個不同用戶的中斷服務程序,由原來一對一的關系轉變為一對多的關系。中斷向量重定位技術就是用來解決這個難題的。

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

表2 中斷向量重定位表

圖2 中斷執行流程

每個用戶程序中有一張中斷向量重定位表,用于跳轉到用戶編寫的中斷服務子程序。每個用戶區的中斷服務程序的函數名已經固定好,用于指定入口地址。

舉例說明:在用戶程序2中開啟了 UART1接收中斷。當監控程序將控制權交給用戶程序2后,用戶程序2處于運行狀態(UserFlag=2)。如果此時 UART1接收到數據,就會向MCU發出 UART中斷(0x4E)請求。MCU立即響應該中斷,并跳轉到中斷向量表中該中斷對應的中斷服務程序的入口地址處(_Uart1_handler)運行。在該中斷服務程序中根據UserFlag跳轉到用戶程序2的中斷向量重定位表User2Vector[1](1表示在用戶程序中的中斷重定位號),并開始執行真正的中斷服務程序。

3 全局變量訪問

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

3.1 寄存器

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

3.2 RAM

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

3.3 Flash

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

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

unsigned short*p;

p=(unsigned short*)0x20000400;

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

4 系統試驗評估

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

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

結 語

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

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

[2]殷樹明.嵌入式系統中多用戶程序在線編程技術[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開發板的Flash編程方法與實現[J].計算機工程,2004,30(1):168-170.

[6]Morton Todd D.嵌入式微控制器[M].嚴雋永,譯.北京:機械工業出版社,2005.

猜你喜歡
程序
給Windows添加程序快速切換欄
電腦愛好者(2020年6期)2020-05-26 09:27:33
試論我國未決羈押程序的立法完善
人大建設(2019年12期)2019-05-21 02:55:44
失能的信仰——走向衰亡的民事訴訟程序
“程序猿”的生活什么樣
英國與歐盟正式啟動“離婚”程序程序
環球時報(2017-03-30)2017-03-30 06:44:45
基于VMM的程序行為異常檢測
偵查實驗批準程序初探
我國刑事速裁程序的構建
創衛暗訪程序有待改進
中國衛生(2015年3期)2015-11-19 02:53:32
恐怖犯罪刑事訴訟程序的完善
主站蜘蛛池模板: 国产另类乱子伦精品免费女| 久久一日本道色综合久久| 青青草原国产免费av观看| 她的性爱视频| 99ri精品视频在线观看播放| 国产拍揄自揄精品视频网站| 国产精品亚洲天堂| 欧美精品H在线播放| 久久精品娱乐亚洲领先| 国产理论一区| 毛片网站在线看| 久久国产精品影院| 成人亚洲国产| 亚洲综合色在线| 成人福利在线观看| 999国产精品| 亚洲最大福利视频网| 亚洲国产日韩欧美在线| 激情成人综合网| 欧美日韩综合网| 国产福利一区二区在线观看| 伊人久久大香线蕉影院| 亚洲精品波多野结衣| 国产欧美日韩91| 国产原创自拍不卡第一页| 91色老久久精品偷偷蜜臀| 欧美专区在线观看| 九九九久久国产精品| 精品欧美一区二区三区久久久| 在线a视频免费观看| 国产成人精品免费视频大全五级 | 亚洲国产成人自拍| 99re精彩视频| 国内老司机精品视频在线播出| 色综合久久88色综合天天提莫 | 亚洲视屏在线观看| 野花国产精品入口| 日本高清在线看免费观看| 久久久久免费看成人影片| 免费黄色国产视频| 色婷婷电影网| 香蕉久久国产精品免| 久久久久88色偷偷| 呦女亚洲一区精品| 国产成人高清在线精品| 国产小视频免费观看| 欧美激情首页| 国产啪在线91| 在线无码av一区二区三区| 日韩国产精品无码一区二区三区| 国产乱人伦精品一区二区| 久久精品这里只有国产中文精品| 国产精鲁鲁网在线视频| 波多野结衣无码中文字幕在线观看一区二区 | 无码又爽又刺激的高潮视频| 亚洲国产中文在线二区三区免| 欧美国产视频| 999精品视频在线| 日韩一级二级三级| 精品久久高清| 国产日韩欧美一区二区三区在线 | 曰AV在线无码| 国产无人区一区二区三区| 国产精品微拍| 国产精品私拍在线爆乳| 狠狠色噜噜狠狠狠狠色综合久| 欧美yw精品日本国产精品| 亚洲aaa视频| 亚洲国产第一区二区香蕉| 国产激情第一页| 亚洲欧洲自拍拍偷午夜色| 黄色成年视频| 性激烈欧美三级在线播放| 亚洲天堂视频网| 国产精品免费露脸视频| 国产在线97| 国产00高中生在线播放| 国产va在线观看免费| 久久鸭综合久久国产| 丝袜亚洲综合| 五月婷婷导航| 国产精品永久在线|