以ARMLinux為基礎(chǔ)的嵌入式資訊網(wǎng)系統(tǒng)平臺之設(shè)計與實作_第1頁
以ARMLinux為基礎(chǔ)的嵌入式資訊網(wǎng)系統(tǒng)平臺之設(shè)計與實作_第2頁
以ARMLinux為基礎(chǔ)的嵌入式資訊網(wǎng)系統(tǒng)平臺之設(shè)計與實作_第3頁
以ARMLinux為基礎(chǔ)的嵌入式資訊網(wǎng)系統(tǒng)平臺之設(shè)計與實作_第4頁
以ARMLinux為基礎(chǔ)的嵌入式資訊網(wǎng)系統(tǒng)平臺之設(shè)計與實作_第5頁
已閱讀5頁,還剩14頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、以ARMLinux為基礎(chǔ)的嵌入式資訊網(wǎng)系統(tǒng)平臺之設(shè)計與實作家庭保全系統(tǒng)應(yīng)用以ARMLinux為基礎(chǔ)的嵌入式資訊網(wǎng)系統(tǒng)平臺之設(shè)計與實作家庭保全系統(tǒng)應(yīng)用1Design and Implementation of ARMLinux Platform-based Embedded Web System A Home Intruder Alarm System Application蕭榮修*R. S. Hsiao*張國基K. C. Chang史義男Y. N. Shi林 玫May Lin國立臺北科技大學(xué)電子工程系摘 要嵌入式系統(tǒng) (Embedded Systems) 不但充滿在我們的日常生活中,而且扮演著

2、重要的角色。傳統(tǒng)的嵌入式系統(tǒng)為獨立作業(yè)平臺的裝置,不具備網(wǎng)際網(wǎng)路連線及組態(tài)介面 (configuration interface) 的設(shè)定功能,其應(yīng)用範(fàn)圍受到相當(dāng)大的限制。隨著網(wǎng)際網(wǎng)路 (Internet) 應(yīng)用的普及,具有可連上資訊網(wǎng)的 (Web-enabled) 的嵌入式系統(tǒng)之需求日漸殷切。本研究的主要目的即為設(shè)計一個可連上資訊網(wǎng)的ARMLinux嵌入式系統(tǒng)平臺,以補(bǔ)足傳統(tǒng)嵌入式平臺在網(wǎng)路上的不足,並提供系統(tǒng)晶片 (System-on-Chip, SoC) 整合內(nèi)容之參考。藉由此平臺所提供的網(wǎng)路設(shè)備,我們可以使嵌入式系統(tǒng)裝置連線上網(wǎng),達(dá)到遠(yuǎn)端資訊存取及組態(tài)設(shè)定功能。為驗證此嵌入式平臺之可用

3、性,我們以開放原始碼 (open source) 的方式來實作一個低成本高效能家庭保全系統(tǒng)。使用者可在任意計算平臺之客戶端 (client-side) 執(zhí)行瀏覽器 (browser) 後,與伺服器 (server) 取得連線,並藉由伺服器端所傳給的Java applet及其socket通訊機(jī)制,設(shè)定家中的保全系統(tǒng)狀態(tài),並由遠(yuǎn)端接收監(jiān)控資訊。透過實作與效能評估,我們得到一個主要的結(jié)論,使用Java來實作非行動式 (固定式) 的嵌入式系統(tǒng)是一種浪費,因為虛擬機(jī)器 (Java Virtual Machine, JVM) 會消耗很大的計算與記憶體資源,JVM的跨平臺特性不具任何意義。關(guān)鍵詞:嵌入式系統(tǒng)

4、、系統(tǒng)晶片。投稿受理時間: 93年3月15日 審查通過時間: 93年6月30日PAGE 2臺北科技大學(xué)學(xué)報第三十七之二期ABSTRACTEmbedded systems are omnipresent and play significant roles in our daily lives. In the past, embedded systems have functioned in isolation without any functions of networking and configuration interface. Therefore, the application r

5、ange is very limited. Since the Internet becomes very popular, the Web-enabled embedded systems will be more expected. The goal of this study is to develop a Web-enabled ARMLinux embedded system development platform to provide the functions of networking and configuration interface and to be used fo

6、r the consideration of SoC contents integration. To use this facility, which the development platform provides, the embedded device can be connected to the Internet achieving functions of remote information access and configuration setup.To verify the validation of development platform, we adopt ope

7、n source method to implement a low-cost and high-performance home intruder alarm system. User can run a browser at any computing platform to connect with the server from which the browser receives a Java applet from the server. User uses the Java applet and the socket mechanism to configure and rece

8、ive the information from the remote home intruder alarm system. Through the implementation and evaluation of performance, we get a conclusion that to use Java for the implementation of the non-mobile embedded system is a waste because the Java Virtual Machine (JVM) consumes a large of computation an

9、d memory resources. The cross-platform feature of JVM is meaningless for the non-mobile embedded system.Keywords:Embedded Systems, ARMLinux, Embedded-Web Server, System-on-Chip (SoC).壹、緣由與目的嵌入式計算系統(tǒng)具有特定的功能及嚴(yán)格的非功能需求:價格、體積、性能和功率消耗等限制。而SoC技術(shù)可以將複雜的電路整合在一個矽晶片上,具有輕巧、價廉、性能佳和低功率消耗等優(yōu)點89。因此以嵌入式處理器為核心,開發(fā)一個實用的嵌入

10、式計算系統(tǒng)原型 (prototype),再以系統(tǒng)晶片技術(shù)製成一顆嵌入式積體電路是目前行動裝置、通訊及資訊家電等嵌入式產(chǎn)品最迫切的需求。以ARMLinux為基礎(chǔ)的嵌入式資訊網(wǎng)系統(tǒng)平臺之設(shè)計與實作家庭保全系統(tǒng)應(yīng)用3為預(yù)防與降低家庭竊案的發(fā)生,大部份的家庭會選擇使用保全服務(wù)。但保全服務(wù)將增加家庭的經(jīng)濟(jì)壓力,而且保全服務(wù)無法深入家中進(jìn)行更細(xì)微的感測,這種只能對進(jìn)入口 (如窗和門) 進(jìn)行保護(hù)的限制,已經(jīng)不足應(yīng)付家庭保全的需求了。此外,大量的資訊家電進(jìn)入家庭生活中,使用網(wǎng)路做遠(yuǎn)端控制將是必然的趨勢,這點也是一般保全服務(wù)在考慮隱私及服務(wù)能力所難以實踐的。每個家庭的環(huán)境不盡相同,應(yīng)有一個能配合改變的系統(tǒng)組態(tài)方

11、案。組態(tài)方式如能利用網(wǎng)際網(wǎng)路無遠(yuǎn)弗界的特性,進(jìn)行隨時隨地的調(diào)整並監(jiān)控家庭中的保全系統(tǒng),甚至在行動設(shè)備上進(jìn)行監(jiān)控,都將使保全系統(tǒng)更具實用價值。綜觀市面上具有類似功能的產(chǎn)品,都以桌上型電腦作為實作平臺。固然桌上型電腦的技術(shù)已經(jīng)相當(dāng)成熟,但對家庭而言,成本依然太高,並有高耗電、體積大等缺點。另一類的產(chǎn)品則搭配軟體的安裝,不必另購一部桌上型電腦,雖然減少了硬體成本,但卻把許多與系統(tǒng)無關(guān)的軟體與保全系統(tǒng)軟體置於同一計算平臺之上,造成保全系統(tǒng)的可靠度大為降低。綜合上述,家庭保全系統(tǒng)是一個專用系統(tǒng),一個特定系統(tǒng),甚至是一個容錯系統(tǒng),比起一般電腦系統(tǒng)或消費性電子產(chǎn)品需要有更多的非功能性需求。嵌入式系統(tǒng)的特性正

12、能符合家庭保全系統(tǒng)的需求。貳、研究方法與成果一、文獻(xiàn)探討由於ARM的低耗電高效能特性,以及Linux的開放原始碼、高移植性 (portability) 等優(yōu)點,使用ARM-Linux做為系統(tǒng)平臺者極為普遍。但是許多系統(tǒng)平臺並沒有考慮到嵌入式系統(tǒng)的資源限制。成大研究生萬林明12選用的ARM-Linux其kernel及Ramdisk需2.5M位元組 (Byte, 簡稱B) 以上,對一個要兼顧成本的嵌入式系統(tǒng)而言,將是一個沉重的負(fù)擔(dān)。以Web為基礎(chǔ)的嵌入式系統(tǒng)之實作以美國UCSC Montague等人56所研發(fā)的Javacam最具代表性,其平臺選擇一個客製的OSJava Nanokernel(JN)

13、,結(jié)合TCP/IP程式等,總共需要45KB的記憶體,而加上Java Virtual Machine (JVM) 共需2MB以上的龐大記憶體。再者,Java的執(zhí)行速度慢,進(jìn)行較為複雜的應(yīng)用,性能將大為降低,同時Java執(zhí)行所需的時間較長,功率消耗跟著大為增加。與一般多用途的行動式嵌入式系統(tǒng)不同,對固定式的嵌入式系統(tǒng),為達(dá)到成本及效益的最佳化,系統(tǒng)的軟硬體平臺在研發(fā)初期就已確定。因此,JVM的跨平臺特性將不具任何意義。二、系統(tǒng)分析與設(shè)計(一)作業(yè)系統(tǒng)的選擇我們選用Linux作業(yè)系統(tǒng),主要是因為Linux能符合我們下列的需求:(1) Linux可以免費或以低廉的價格取得;(2) Linux是以開放原

14、始碼的形式釋出,我們可以調(diào)整Linux以完全符合本應(yīng)用特殊的記憶體及通訊介面需求;(3) Linux支援的硬體元件相當(dāng)多;(4)強(qiáng)健且完善的網(wǎng)路協(xié)定;(5)完整且價廉的發(fā)展工具7。4臺北科技大學(xué)學(xué)報第三十七之二期Linux是一個符合POSIX標(biāo)準(zhǔn)的核心,應(yīng)用程式都具備平行的移植性。在硬體系統(tǒng)還未建置完成前,先透過符合POSIX標(biāo)準(zhǔn)的桌上型(desktop) Linux進(jìn)行應(yīng)用程式的開發(fā),之後再進(jìn)行核心移植的工作。在此同時,可以尋找符合POSIX標(biāo)準(zhǔn)的程式來加速軟體的開發(fā),以達(dá)到軟體硬體同時開發(fā)的目的。雖然使用Linux需要付出root file-system約500KB的代價11,但檔案系統(tǒng)有

15、助於組態(tài)資料的儲存,提高系統(tǒng)存取資料的效率,以方便系統(tǒng)組態(tài)及設(shè)定的實現(xiàn)7。因此,Linux必須使用檔案系統(tǒng)才能運(yùn)作的特性,反而使得上述的優(yōu)點無需額外的軟體就得以實現(xiàn),這是其他的嵌入式作業(yè)系統(tǒng)所缺少。減少系統(tǒng)軟體對記憶體的需求,將有效的降低硬體建置的複雜度與成本,有助於SoC的發(fā)展。為了達(dá)到這個目的,我們選定了uCLinux作為作業(yè)系統(tǒng)核心,uCLinux對記憶體的需求,僅需500KB11,並且可以保有所有Linux的通訊能力。(二)處理器的選擇雖然家庭監(jiān)控事務(wù)所需的計算量不高,但所監(jiān)控的項目卻頗為繁雜。因此,一般8位元單晶片微控制器是無法勝任的,加上系統(tǒng)有可能進(jìn)行一些智慧型的控制,需要一個32

16、位元單晶片微控器才能達(dá)到較好的效果。此外,家庭監(jiān)控事務(wù)項目繁多,硬體的介面自然相對增多,過多的額外電路,將在成本優(yōu)勢上大打折扣,所以高度整合週邊電路的32位元SoC是本系統(tǒng)最佳的選擇,硬體平臺的比較如表(一)。表(一)本系統(tǒng)與其他硬體平臺的比較平臺PC-based單晶片微控器本系統(tǒng) (SoC)成本US$30US$1US$4體積較大較小較小耗電2A/5V35mA/5V500mA/5V整合性難以整合難以整合整合度較高 穩(wěn)定性較低較高較高網(wǎng)際網(wǎng)路具備無具備32-bit RISC架構(gòu)的CPU是最能符合體積小、高效能,與低耗電需求的最佳選擇。本系統(tǒng)選擇以ARM作為嵌入式處理器,ARM的核心是以矽智產(chǎn) (

17、Silicon Intellectual Property, SIP) 方式授權(quán)給多家半導(dǎo)體廠商,我們可挑選以ARM為核心且符合系統(tǒng)需求的高度整合系統(tǒng)晶片。此外,ARM的SIP品質(zhì)管控相當(dāng)嚴(yán)謹(jǐn),所以在進(jìn)行核心移植時,遇到的問題會比較少,使得軟體硬體的開發(fā)工作可以同時進(jìn)行,不必?fù)?dān)心將來把軟體移植到硬體時,會有軟硬體不相容的情形發(fā)生3。在這些考量下,ARM是在使用Linux核心下的最好選擇。(三)網(wǎng)路軟體的考量Embedded Web server負(fù)責(zé)儲存網(wǎng)頁,並與client端的瀏覽器交談。選用現(xiàn)有的Web server可節(jié)省大量開發(fā)時間,並可藉由使用者熟悉的GUI縮短學(xué)習(xí)曲線10。此外,選擇以

18、標(biāo)準(zhǔn)化為存取方法 HTTP和HTML之產(chǎn)品,可排除嵌入式系統(tǒng)裝置及網(wǎng)路的異質(zhì)性2。以ARMLinux為基礎(chǔ)的嵌入式資訊網(wǎng)系統(tǒng)平臺之設(shè)計與實作家庭保全系統(tǒng)應(yīng)用5Java applet在網(wǎng)頁間具有優(yōu)良的互動性,且具有跨平臺、安全性高等優(yōu)點。因此,以Java applet 作為嵌入式系統(tǒng)的組態(tài)介面是極佳的選擇。嵌入式系統(tǒng)平臺本身不需支援JVM,Java applet可以由Web server透過網(wǎng)際網(wǎng)路傳遞給client端,藉由任意計算平臺的瀏覽器即可執(zhí)行。而且,藉由Java applet可建立TCP/IP socket連接,提供client與server間的互動機(jī)制。至於控制嵌入式系統(tǒng)平臺與受控裝

19、置間通訊的程式,則宜選用Linux C/C+語言,以精準(zhǔn)地控制整個系統(tǒng)、簡省開發(fā)時間與記憶體的需求並提昇系統(tǒng)性能1。採用了Java applet,使用者只需要安裝Web browser,便可以在任一平臺上使用家庭監(jiān)控事務(wù)。當(dāng)客戶端連線至伺服器時,Java applet才被下載至客戶端並且執(zhí)行。整個下載及執(zhí)行的過程,使用者只知道自己開啟了一個網(wǎng)頁,完全感受不到系統(tǒng)已經(jīng)安裝了能接取伺服器服務(wù)的軟體。配合瀏覽器上的JVM,下載後的軟體將與作業(yè)系統(tǒng)完全隔離,使之能跨越各種軟硬平臺,不受限制的執(zhí)行。安全性的考量下,如圖(一)所示,Java applet只能與伺服器端進(jìn)行連線,其他種類的網(wǎng)路連線將被完全禁

20、止。綜合上述的系統(tǒng)考量,本系統(tǒng)與Javacam之比較如表(二)。圖(一)Java applet在瀏覽器上的安全性表(二)本系統(tǒng)與Javacam之比較平臺Javacam本系統(tǒng)系統(tǒng)軟體規(guī)模JN, JVM(大約2MB)uCLinux(大約 1MB)效率較低較高記憶體需求較大較小程式語言JavaC/C+, Perl, etc 軟體資源較少較多 (GNU、Linux community)參、系統(tǒng)實作與成果系統(tǒng)架構(gòu)如圖(二)所示,當(dāng)遠(yuǎn)端的使用者利用瀏覽器登入到本系統(tǒng)時,若輸入的帳號與密碼正確無誤,Embedded Web Server會將一個內(nèi)嵌Java applet的網(wǎng)頁傳回給使用者,瀏覽器執(zhí)行這個Ja

21、va applet後,利用socket連線與家庭控制器建立一個溝通的通道,使用者即可利用Java applet將組態(tài)指令傳給家庭控制器 (Home Controller)。使用者的操作流程,如圖(三)。家庭控制器收到使用者的資料 (命令) 後,便會遵循與受控裝置通信的協(xié)定,將使用者需求的命令透過UART介面或其他的協(xié)定傳給受控裝置4,如圖(四)。這些受控裝置可能是將來的資訊電冰箱、空調(diào)系統(tǒng)、電話、門窗門禁系統(tǒng)、等資訊家電(IA)。受控裝置接收到家庭控制器的資料(命令)後,進(jìn)行組態(tài)工作,並傳回結(jié)果給家庭控制器,如圖(五)。家庭控制器在收到結(jié)果後,再經(jīng)由socket將資料傳回給Java apple

22、t,最後再由Java applet將收到的結(jié)果呈現(xiàn)給使用者,如此完成家庭監(jiān)控的動作。系統(tǒng)實際運(yùn)作情形如圖(六)所示。6臺北科技大學(xué)學(xué)報第三十七之二期圖(二)系統(tǒng)架構(gòu)圖(四)家庭控制器運(yùn)作流程Home Devices圖(五)受控裝置反應(yīng)流程以ARMLinux為基礎(chǔ)的嵌入式資訊網(wǎng)系統(tǒng)平臺之設(shè)計與實作家庭保全系統(tǒng)應(yīng)用7(a) 使用者登入畫面(b) 受控裝置組態(tài)畫面圖(六) 本系統(tǒng)實際運(yùn)作情形肆、結(jié) 論本研究的主要目是要建構(gòu)出一個可靠度高、成本低,且具可跨平臺特性的嵌入式資訊網(wǎng)系統(tǒng)平臺,在系統(tǒng)發(fā)展的過程中,我們探討出快速且適合於嵌入式系統(tǒng)的發(fā)展環(huán)境 ARMLinux平臺。在此發(fā)展環(huán)境中,我們區(qū)分兩種嵌

23、入式系統(tǒng),一種是行動式的多用途手持裝置,另一種是非行動式的網(wǎng)際網(wǎng)路系統(tǒng)平臺。兩者的實作考量是截然不同的,對一個不須具備行動性的嵌入式系統(tǒng)而言,採用JVM是消耗系統(tǒng)資源且得不到任何優(yōu)點的作法。換句話說,在固定式的平臺上,應(yīng)該使用該平臺原本所專屬的語言 (如C/C+)。在我們的系統(tǒng)中,所有軟體都採開放式架構(gòu),兼具功能及成本的彈性,避免落入封閉的軟體架構(gòu)的限制。硬體方面,系統(tǒng)可以選擇的硬體平臺幾乎是不受限制的,透過Linux的移植,我們自行發(fā)展的軟體無須改寫就可以順利在不同的硬體平臺繼續(xù)執(zhí)行。綜合上述,我們的系統(tǒng)有以下幾個特色:1.較小的軟體核心、2.使用上,不需安裝任何軟體、3.友善的使用者介面、

24、4.跨平臺、5.低成本及豐富的效能、6.高度擴(kuò)充性、7.支援多種硬體及標(biāo)準(zhǔn)、8.開放式的軟硬架構(gòu)、9.方便SoC實行、10.資訊家電的發(fā)展原型及框架。伍、未來工作本研究雖有初步成果,但若要進(jìn)行需即時處理的更複雜應(yīng)用,就顯得不足。因此,如何利用real-time OS kernel提出解決方案,是一個很有價值的研究方向。另外,如何藉由一個簡單且不會造成系統(tǒng)及網(wǎng)路負(fù)擔(dān),又兼具安全性的網(wǎng)路認(rèn)證機(jī)制,也是個刻不容緩的研究議題。8臺北科技大學(xué)學(xué)報第三十七之二期誌 謝本研究承蒙國家科學(xué)委員會工程處之”晶片系統(tǒng)架構(gòu)及開發(fā)平臺研究之推動計畫”贊助,計畫編號: NSC91-2218-E-002-041/010,

25、及本系黃文增副教授提供寶貴的意見,在此一併致謝。參考文獻(xiàn)1Mitchell Bunnell, “Mixing Java and C in Embedded Systems,” Available in the site of: HYPERLINK http:/www.omimo.be/magazine http:/www.omimo.be/magazine/98q1/1998q1_p050.pdf 2Peter Doudley, “Beyond the Embedded Web Server,” Available in the site of: /eiw/98eiw/dudley-v/dud

26、ley.html3Steve Furber, ARM System-On-Chip Architecture, 1st Ed., Addison-Wesley, Massachusetts, 2000.4Craig Hollabaugh, Embedded Linux: Hardware, Software, and Interfacing, Pearson Education, Indianapolis, 2002.5Charles E. McDowell, Bruce R. Montague, Michael R. Allen, Elizabeth A. Baldwin, and Marc

27、elo E. Montoreano, “Javacam: Trimming Java down to size,” IEEE Internet Computing, Vol 2, No 3, pp. 53-59, May/June 1998.6Bruce R. Montague, Michael R. Allen, Elizabeth A. Baldwin, Marcelo Montoreano, and Charles E. McDowell, “Design and Implementation of an Embedded-Java Web-Camera , “ Works- hop o

28、n Embedded Web Technologies, Sixth International World Wide Web Conference, Santa Clara, April 7-11 1997.7Greg Ungerer, “Building Low Cost, Embedded, Network Appliances with Linux,” Available in the site of: /lisoleg/embedded/embedded_vpn.pdf8Frank Vahid and Tony Givargis,Embedded System Design A Un

29、ified Hardware/Software Introduction, Danvers, John Wiley & Sons, 2002.9Wayne Wolf, Computer as Components Principles of Embedded Computing System Design, Morgan Kaufmann, San Francisco, 2001.10Nick Witchey, “Designing an Embedded Web Server,” Available in the site of: HYPERLINK /white /white_papers

30、/webserver.pdf11“ucLinux-Embedded Linux Microcont- roller Project”, Available in the site of: /description/12萬林明,ARMLinux上建構(gòu)具服務(wù)品質(zhì)保證之網(wǎng)路環(huán)境,國立成功大學(xué)工程科學(xué)研究所碩士論文,民89。附錄資料:不需要的可以自行刪除ARM經(jīng)典40問答第1問:Q:請問在初始化CPU堆棧的時候一開始在執(zhí)行mov r0, LR這句指令時處理器是什么模式A:復(fù)位后的模式,即管理模式。第2問: Q:請教:MOV中的8位圖立即數(shù),是怎么一回事 0 xF0000001是怎么來的 A:是循環(huán)右移

31、,就是一個0255 之間的數(shù)左移或右移偶數(shù)位的來的,也就是這個數(shù)除以4一直除, 直到在0-255的范圍內(nèi)它是整數(shù)就說明是可以的! A:8位數(shù)(0-255)循環(huán)左移或循環(huán)右移偶數(shù)位得到的,F(xiàn)0000001既是0 x1F循環(huán)右移4位,符合規(guī)范,所以是正確的。這樣做是因為指令長度的限制,不可能把32位立即數(shù)放在32位的指令中。移位偶數(shù)也是這個原因??梢钥匆豢?HYPERLINK t _blank arm體系結(jié)構(gòu)(ADS自帶的英文文檔)的相關(guān)部分。第3問: Q:請教: HYPERLINK t _blank arm微控制器基礎(chǔ)與實戰(zhàn)2.2.1節(jié)關(guān)于第2個操作數(shù)的描述中有這么一段:#inmed_8r常數(shù)表

32、達(dá)式。該常數(shù)必須對應(yīng)8位位圖,即常熟是由一個8位的常數(shù)循環(huán)移位偶數(shù)位得到。 合法常量:0 x3FC,0,0 xF0000000,200,0 xF0000001. 非法常量:0 x1FE,511,0 xFFFF,0 x1010,0 xF0000010. 常數(shù)表達(dá)式應(yīng)用舉例: LDR R0,R1,#-4 ;讀取 R1 地址上的 HYPERLINK / t _blank 存儲器單元內(nèi)容,且 R1 = R1-4 針對這一段,我的疑問: 1. 即常數(shù)是由一個8位的常數(shù)循環(huán)移位偶數(shù)位得到,這句話如何理解 2. 該常數(shù)必須對應(yīng)8位位圖,既然是8位位圖,那么取值為0-255,怎么0 x3FC這種超出255的數(shù)

33、是合法常量呢 3. 所舉例子中,合法常量和非法常量是怎么區(qū)分的 如0 x3FC合法,而0 x1FE卻非法0 xF0000000,0 xF0000001都合法,而0 xF0000010又變成了非法 4. 對于匯編語句 LDR R0,R1,#-4,是先將R1的值減4結(jié)果存入R1,然后讀取R1所指單元的 值到R0,還是先讀取R1到R0,然后再將R1減4結(jié)果存入R1 A:提示,任何常數(shù)都可用底數(shù)*2的n次冪 來表示。 1. HYPERLINK t _blank arm結(jié)構(gòu)中,只有8bits用來表示底數(shù),因此底數(shù)必須是8位位圖。 2. 8位位圖循環(huán)之后得到常數(shù),并非只能是8位。 3. 0 xF00000

34、10底數(shù)是9位,不能表示。 4. LDR R0, R1, #-4 是后索引,即先讀,再減。 可以看一看 HYPERLINK t _blank arm體系結(jié)構(gòu)對相關(guān)尋址方式的說明。第4問: Q:在程序移植的過程中,什么代碼段處于什么樣的模式,這可真是一個困擾人的大難題,有沒有一種標(biāo)志或辦法能夠識別代碼段處于什么樣的模式 A:讀取 CPSR ,任何時候都是可以讀。第5問: Q:為什么保護(hù)現(xiàn)場時,總是保護(hù) R0-R3,R12,為什么不保護(hù)R4-R11A:請看一看 HYPERLINK t _blank arm-thumb過程調(diào)用標(biāo)準(zhǔn)這個文檔。第6問: Q:請問 mov R1,#0 x00003DD0

35、錯誤: out of the range of operation是怎么回事情 我就是想IODIR=0 x00003dd0,匯編就是 LDR R0,=IODIR MOV R1,#0 x00003dd0 STR R1,R0 編譯時候說是超出操作范圍 A:使用ldr,mov的操作數(shù)為8位位圖數(shù)。第7問: Q:在 HYPERLINK t _blank arm7TDMI(-S)處理器內(nèi)部有37個用戶可見的寄存器: 問題:用戶可見應(yīng)該怎樣理解 這37個寄存器是否是37個不同的物理寄存器, 例如R8與R8_fiq應(yīng)該是兩個不同的物理寄存器吧 A:用戶可見是指用戶可以通過程序操作的。R8與R8_fiq是兩個

36、不同的寄存器。第8問: Q: USR模式,SVC模式,IRQ模式分別有哪些限制 A:對于外設(shè)操作限制與芯片設(shè)計有關(guān)。USR模式不能設(shè)置CPSR寄存器。 用戶模式下無SPSR寄存器,代碼可以為 HYPERLINK t _blank arm,Thumb.第9問: Q:請問在初始化堆棧時就決定了工作模式是什么意思 如何決定工作模式的 A:設(shè)置CPSR寄存器。第10問: Q:請問: HYPERLINK t _blank arm匯編程序設(shè)計中所謂的文字池作何理解 A:可以理解為常量數(shù)組,文字池中保存的是常量,這些常量可以是正常的常量,也可以是地址。第11問: Q:為什么在中斷向量表中不直接LDR PC,

37、異常地址.而是使用一個標(biāo)號,然有再在后面使用DCD定義這個標(biāo)號 A:因為LDR指令只能跳到當(dāng)前PC 4kB范圍內(nèi),而B指令能跳轉(zhuǎn)到32MB范圍,而現(xiàn)在這樣在LDR PC, xxxx這條指令不遠(yuǎn)處用xxxxDCD定義一個字,而這個字里面存放最終異常服務(wù)程序的地址,這樣可以實現(xiàn)4GB全范圍跳轉(zhuǎn)。 Q: LDR 不是可以全空間跳轉(zhuǎn)的嗎 HYPERLINK t _blank arm微控制器基礎(chǔ)與實戰(zhàn)程序清單5.3. A: LDR偽指令通過設(shè)置指令緩沖池才能實現(xiàn)全范圍跳轉(zhuǎn),而LDR指令則只能實現(xiàn)4KB范圍跳轉(zhuǎn)。第12問: Q: ARM7TDMI-S和 HYPERLINK t _blank arm7TDM

38、I有何區(qū)別 A: ARM7TDMI-S是ARM7TDMI的可綜合(synthesizable)版本(軟核)。 對應(yīng)用工程師來說,除非芯片生產(chǎn)廠商對ARM7TDMI-S進(jìn)行了裁減,否則ARM7TDMI-S與ARM7TDMI沒有太大的區(qū)別,其編程模型與 HYPERLINK t _blank arm7TDMI一致。第13問: Q: DCD偽指令的疑惑。 StackUsr DCD UsrStackSpace + (USR_STACK_LEGTH - 1) * 4 這句話是什么意思 DCD后面的程序標(biāo)號或數(shù)字表達(dá)式是何意 A:它的內(nèi)容是初始化遞減堆棧的最高地址,看 HYPERLINK t _blank

39、arm微控制器基礎(chǔ)與實戰(zhàn)2.3.2節(jié)。 第2章 編譯器與語言第14問: Q:00254: Unimplemented RDI message是什么錯誤提示 我的設(shè)置連接都正常,是不是芯片燒了 A:是JTAG的問題。可以先使用ISP操作試試就知道了,如果能ISP,說明LPC2104沒有損壞,還能正常運(yùn)行程序。第15問: Q:請教:我在調(diào)試程序的時候在AXD中出現(xiàn)這樣的提示信息: RDI Warning 00159:could not open specified device port. 我是根據(jù)配套教程的步驟設(shè)置的。 A:請按照光盤easy HYPERLINK t _blank arm_dri

40、vereadme.txt安裝驅(qū)動程序。第16問: Q:我用實驗程序運(yùn)行經(jīng)常出現(xiàn)下列信息! 程序不能 HYPERLINK / t _blank 下載到目標(biāo)板。 Warnning! interrupt vectors data is not correct! Program you downloaded can not run freely! A:1.仿真器配置一定要正確,即Easy HYPERLINK t _blank arm Configuration設(shè)置窗口中的FLASH項中選擇Erase Flash when need; 2.向量表累加和要為0; 3.可以先在RAM調(diào)試一個程序(運(yùn)行),然

41、后STOP,再使用File-Load Image加載要 HYPERLINK / t _blank 下載到FLASH的調(diào)試文件。第17問: Q:在ADS中是否可以進(jìn)行軟件調(diào)試基于UCOS-II的程序 A:ADS軟件調(diào)試只能調(diào)試 HYPERLINK t _blank arm的內(nèi)核,不能調(diào)試外設(shè)。但是取消 PLL 鎖定檢測后,可以調(diào)試任務(wù)切換,最終到空閑任務(wù)上。開始移植時軟件仿真是最好的工具。第18問: Q: HYPERLINK t _blank armulate軟件是干什么的 2104不是用EasyJTAG.dll來仿真嗎 A:軟件仿真只能仿真 HYPERLINK t _blank arm 核。第

42、19問: Q:有關(guān)LPC2106.INC的問題。我無法在project引用lpc2106.inc文件,只能引用lpc2106.h文件, 這是什么原因 且當(dāng)我的主程序用匯編編寫時,不能引用lpc2106.h,用lpc2106.inc則無法加入project,請問匯編器應(yīng)如何設(shè)置 A:不用加2106.inc只要該文件在你的工程文件夾中,就可以直接在匯編程序的開始處加 include 2106.inc. 注意:該文件是匯編文件定義的頭文件,定義內(nèi)部寄存器。第20問: Q:入口點是什么意思 我在使用LPC2106上移植UCOS-II,每次MAKE時總是提示我 Image does not have a

43、n entry point,可是我是把光盤的vetctors.s 復(fù)制過來的,而且仔細(xì)看了看,已經(jīng)聲明了ENTERY,這是怎么回事A:需要在ADS中設(shè)置入口。第21問: Q:請教:如何定義不被初始化變量 A:讓編譯器不知道有這個內(nèi)存地址即可。 A:如用分散加載文件分配RAM故意預(yù)留一部分RAM不分配,用它來存您不需要初始化的東西?;蛘卟徽{(diào)用編譯器提供的啟動代碼,不過這樣可能編程會麻煩一些。第22問: Q:我直接通過JTAG口 HYPERLINK / t _blank 下載EasyArm板帶的Ext1_test程序到 HYPERLINK t _blank arm中,出現(xiàn)中斷向量的告警: inte

44、rrupt vector is not correct HYPERLINK t _blank arm is not running freely. 果然復(fù)位后芯片不能運(yùn)行。但是我用串口 HYPERLINK / t _blank 下載后芯片能正常工作,中斷也行的。 并且我用JTAG仿真的話,芯片能正常工作,中斷也行的,唯獨JTAG口 HYPERLINK / t _blank 下載不行。 不知道是什么原因 A:仿真器配置中要設(shè)置Erase Flash when need.也可以這樣試試: 1.可以先打開一個工程在RAM中調(diào)試運(yùn)行; 2.stop程序; 3.使用File-Load Image重新加載

45、Ext1_test生成的*.axf文件。 Q:仿真器配置中我是設(shè)置了Erase Flash when need,但照你說的話,那不是在RAM下調(diào)試嗎 在RAM下調(diào)試我是可以的,但是下載后出現(xiàn)interrupt vector data is not correct. 我又看了幾篇文章,是不是跟中斷向量表的累加和不為零有關(guān)系啊 A:是的,是向量表的累加和不為零。 因為如果用ISP下載能運(yùn)行,說明向量表的累加和已為零,而用JTAG下載不能運(yùn)行的情況可能是 沒有正常下載代碼。先在RAM中調(diào)試,目的是為了后面正確下載程序到FLASH.第23問: Q:用Scatter怎樣將某個函數(shù)或文件定位在Flash的

46、某個位置 第24問: Q:我在仿真時遇到這樣的提示: Error, Flash is protected by user configation! 怎么寫到flash里面呢 A:看配套 HYPERLINK t _blank arm微控制器基礎(chǔ)與實戰(zhàn)附錄一。第25問: Q:我在移植實驗中想到了兩個問題,如下: 1.Debug和Release以及DebugRel有什么不同,為什么在作2104移植實驗時,要用Release 2.在Release中為什么要將RW Base設(shè)置為0 x40000040 我將其設(shè)置為0 x40003000, 為什么不能工作 A:都只是一個問題,內(nèi)存空間的使用,因為跑OS要

47、比較大的內(nèi)存空間,所以要騰出點地方。第26問: Q:請問沒有MMU的 HYPERLINK t _blank arm芯片是否支持使用malloc()函數(shù)動態(tài)分配內(nèi)存 A:是否支持malloc()函數(shù)與芯片沒有多大關(guān)系,主要與編譯器有關(guān)。 Q:再問:如果沒有操作系統(tǒng)支持呢 A:也支持。第27問: Q:在I2C實驗程序中,我想查看數(shù)據(jù)緩沖區(qū)DataBuf的值,怎么查看 A:watch窗口或鼠標(biāo)停留在要查看的變量名上。 Q:我查詢的是寫入DataBuf緩沖區(qū)的值,鼠標(biāo)在上面根本就不會出現(xiàn)他的值,即使在watch中加入, 結(jié)果也是name not found. A:變量被優(yōu)化,調(diào)試時可以把該變量定義為全

48、局變量查看。第28問: Q:仿真軟件和2104開發(fā)板連接不上 DBE Warning 00041: !An unspecified Debug Toolbox call failed 電源和開發(fā)板都連好,錯誤和沒接開發(fā)板一樣,驅(qū)動也安裝了,安裝時按確定鍵時,軟件很長時間才有如上反應(yīng),請幫忙 A:1.并口是否正常 2.在其它操作系統(tǒng)(如98)下或其它臺式PC下試試。第29問: Q:如何生成32位hex文件 我在Release Setting- HYPERLINK t _blank arm fromELF-Output Format中設(shè)置為Intel 32bit HEX,可是好像沒有生成hex文件

49、 A:試試這種方法: Target-Target Setting- ost Link中選擇 HYPERLINK t _blank arm fromELF加上你上面設(shè)的應(yīng)該不成問題。第30問: Q:請問關(guān)于settings中r0 base rw base的意思 A:ro:read only,rw:read and write.第31問: Q:編譯成功后的信息第一行,code,R0 data,RW data,ZI data,debug分別代表什么 A:R0 只讀段,即程序代碼空間; RW 可讀/寫段,即數(shù)據(jù)變量空間; ZI 清零變量段,即需要清零初始化的數(shù)據(jù)變量空間。第32問: Q:如何在ADS里

50、面看任務(wù)執(zhí)行的一些情況 比如堆棧。 A:多任務(wù)環(huán)境下的堆棧,內(nèi)存等信息需要調(diào)試軟件的支持才可以實現(xiàn)。 ucos下有一個統(tǒng)計功能的模塊可以間接實現(xiàn)部分功能。第33問: Q:請問向flash燒數(shù)據(jù)時出現(xiàn):exceeds flash limitation 請予賜教! A:要寫入的flash地址超過了范圍。如果不是代碼太大的問題,可以檢查scf文件是否正確。第34問: Q:在LPC2214之類的芯片中如何實現(xiàn)數(shù)組的絕對地址定位,比如51的_at_的用法。 A:*(char*)0 x40000300)類似訪問 Q:謝謝,但這樣做就無須定義數(shù)組變量,訪問也不便,還有高招嗎 A:可以使用分散加載。第35問: Q:請問 ADS編譯錯誤L6221E:Execution

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論