以ARMLinux为基础的嵌入式资讯网系统平台之设计与实作_第1页
以ARMLinux为基础的嵌入式资讯网系统平台之设计与实作_第2页
以ARMLinux为基础的嵌入式资讯网系统平台之设计与实作_第3页
以ARMLinux为基础的嵌入式资讯网系统平台之设计与实作_第4页
以ARMLinux为基础的嵌入式资讯网系统平台之设计与实作_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、以ARMLinux為基礎的嵌入式資訊網系統平台之設計與實作家庭保全系統應用以ARMLinux為基礎的嵌入式資訊網系統平台之設計與實作家庭保全系統應用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國立台北科技大學電子工程系摘 要嵌入式系統 (Embedded Systems) 不但充滿在我們的日常生活中,而且扮演著

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

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

4、、系統晶片。投稿受理時間: 93年3月15日 審查通過時間: 93年6月30日PAGE 2臺北科技大學學報第三十七之二期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).壹、緣由與目的嵌入式計算系統具有特定的功能及嚴格的非功能需求:價格、體積、性能和功率消耗等限制。而SoC技術可以將複雜的電路整合在一個矽晶片上,具有輕巧、價廉、性能佳和低功率消耗等優點89。因此以嵌入式處理器為核心,開發一個實用的嵌入

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

25、及本系黃文增副教授提供寶貴的意見,在此一併致謝。參考文獻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上建構具服務品質保證之網路環境,國立成功大學工程科學研究所碩士論文,民89。附录资料:不需要的可以自行删除ARM经典40问答第1问:Q:请问在初始化CPU堆栈的时候一开始在执行mov r0, LR这句指令时处理器是什么模式A:复位后的模式,即管理模式。第2问: Q:请教:MOV中的8位图立即数,是怎么一回事 0 xF0000001是怎么来的 A:是循环右移

31、,就是一个0255 之间的数左移或右移偶数位的来的,也就是这个数除以4一直除, 直到在0-255的范围内它是整数就说明是可以的! A:8位数(0-255)循环左移或循环右移偶数位得到的,F0000001既是0 x1F循环右移4位,符合规范,所以是正确的。这样做是因为指令长度的限制,不可能把32位立即数放在32位的指令中。移位偶数也是这个原因。可以看一看 HYPERLINK t _blank arm体系结构(ADS自带的英文文档)的相关部分。第3问: Q:请教: HYPERLINK t _blank arm微控制器基础与实战2.2.1节关于第2个操作数的描述中有这么一段:#inmed_8r常数表

32、达式。该常数必须对应8位位图,即常熟是由一个8位的常数循环移位偶数位得到。 合法常量:0 x3FC,0,0 xF0000000,200,0 xF0000001. 非法常量:0 x1FE,511,0 xFFFF,0 x1010,0 xF0000010. 常数表达式应用举例: LDR R0,R1,#-4 ;读取 R1 地址上的 HYPERLINK / t _blank 存储器单元内容,且 R1 = R1-4 针对这一段,我的疑问: 1. 即常数是由一个8位的常数循环移位偶数位得到,这句话如何理解 2. 该常数必须对应8位位图,既然是8位位图,那么取值为0-255,怎么0 x3FC这种超出255的数

33、是合法常量呢 3. 所举例子中,合法常量和非法常量是怎么区分的 如0 x3FC合法,而0 x1FE却非法0 xF0000000,0 xF0000001都合法,而0 xF0000010又变成了非法 4. 对于汇编语句 LDR R0,R1,#-4,是先将R1的值减4结果存入R1,然后读取R1所指单元的 值到R0,还是先读取R1到R0,然后再将R1减4结果存入R1 A:提示,任何常数都可用底数*2的n次幂 来表示。 1. HYPERLINK t _blank arm结构中,只有8bits用来表示底数,因此底数必须是8位位图。 2. 8位位图循环之后得到常数,并非只能是8位。 3. 0 xF00000

34、10底数是9位,不能表示。 4. LDR R0, R1, #-4 是后索引,即先读,再减。 可以看一看 HYPERLINK t _blank arm体系结构对相关寻址方式的说明。第4问: Q:在程序移植的过程中,什么代码段处于什么样的模式,这可真是一个困扰人的大难题,有没有一种标志或办法能够识别代码段处于什么样的模式 A:读取 CPSR ,任何时候都是可以读。第5问: Q:为什么保护现场时,总是保护 R0-R3,R12,为什么不保护R4-R11A:请看一看 HYPERLINK t _blank arm-thumb过程调用标准这个文档。第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的操作数为8位位图数。第7问: Q:在 HYPERLINK t _blank arm7TDMI(-S)处理器内部有37个用户可见的寄存器: 问题:用户可见应该怎样理解 这37个寄存器是否是37个不同的物理寄存器, 例如R8与R8_fiq应该是两个不同的物理寄存器吧 A:用户可见是指用户可以通过程序操作的。R8与R8_fiq是两个

36、不同的寄存器。第8问: Q: USR模式,SVC模式,IRQ模式分别有哪些限制 A:对于外设操作限制与芯片设计有关。USR模式不能设置CPSR寄存器。 用户模式下无SPSR寄存器,代码可以为 HYPERLINK t _blank arm,Thumb.第9问: Q:请问在初始化堆栈时就决定了工作模式是什么意思 如何决定工作模式的 A:设置CPSR寄存器。第10问: Q:请问: HYPERLINK t _blank arm汇编程序设计中所谓的文字池作何理解 A:可以理解为常量数组,文字池中保存的是常量,这些常量可以是正常的常量,也可以是地址。第11问: Q:为什么在中断向量表中不直接LDR PC,

37、异常地址.而是使用一个标号,然有再在后面使用DCD定义这个标号 A:因为LDR指令只能跳到当前PC 4kB范围内,而B指令能跳转到32MB范围,而现在这样在LDR PC, xxxx这条指令不远处用xxxxDCD定义一个字,而这个字里面存放最终异常服务程序的地址,这样可以实现4GB全范围跳转。 Q: LDR 不是可以全空间跳转的吗 HYPERLINK t _blank arm微控制器基础与实战程序清单5.3. A: LDR伪指令通过设置指令缓冲池才能实现全范围跳转,而LDR指令则只能实现4KB范围跳转。第12问: Q: ARM7TDMI-S和 HYPERLINK t _blank arm7TDM

38、I有何区别 A: ARM7TDMI-S是ARM7TDMI的可综合(synthesizable)版本(软核)。 对应用工程师来说,除非芯片生产厂商对ARM7TDMI-S进行了裁减,否则ARM7TDMI-S与ARM7TDMI没有太大的区别,其编程模型与 HYPERLINK t _blank arm7TDMI一致。第13问: Q: DCD伪指令的疑惑。 StackUsr DCD UsrStackSpace + (USR_STACK_LEGTH - 1) * 4 这句话是什么意思 DCD后面的程序标号或数字表达式是何意 A:它的内容是初始化递减堆栈的最高地址,看 HYPERLINK t _blank

39、arm微控制器基础与实战2.3.2节。 第2章 编译器与语言第14问: Q:00254: Unimplemented RDI message是什么错误提示 我的设置连接都正常,是不是芯片烧了 A:是JTAG的问题。可以先使用ISP操作试试就知道了,如果能ISP,说明LPC2104没有损坏,还能正常运行程序。第15问: Q:请教:我在调试程序的时候在AXD中出现这样的提示信息: RDI Warning 00159:could not open specified device port. 我是根据配套教程的步骤设置的。 A:请按照光盘easy HYPERLINK t _blank arm_dri

40、vereadme.txt安装驱动程序。第16问: Q:我用实验程序运行经常出现下列信息! 程序不能 HYPERLINK / t _blank 下载到目标板。 Warnning! interrupt vectors data is not correct! Program you downloaded can not run freely! A:1.仿真器配置一定要正确,即Easy HYPERLINK t _blank arm Configuration设置窗口中的FLASH项中选择Erase Flash when need; 2.向量表累加和要为0; 3.可以先在RAM调试一个程序(运行),然

41、后STOP,再使用File-Load Image加载要 HYPERLINK / t _blank 下载到FLASH的调试文件。第17问: Q:在ADS中是否可以进行软件调试基于UCOS-II的程序 A:ADS软件调试只能调试 HYPERLINK t _blank arm的内核,不能调试外设。但是取消 PLL 锁定检测后,可以调试任务切换,最终到空闲任务上。开始移植时软件仿真是最好的工具。第18问: Q: HYPERLINK t _blank armulate软件是干什么的 2104不是用EasyJTAG.dll来仿真吗 A:软件仿真只能仿真 HYPERLINK t _blank arm 核。第

42、19问: Q:有关LPC2106.INC的问题。我无法在project引用lpc2106.inc文件,只能引用lpc2106.h文件, 这是什么原因 且当我的主程序用汇编编写时,不能引用lpc2106.h,用lpc2106.inc则无法加入project,请问汇编器应如何设置 A:不用加2106.inc只要该文件在你的工程文件夹中,就可以直接在汇编程序的开始处加 include 2106.inc. 注意:该文件是汇编文件定义的头文件,定义内部寄存器。第20问: Q:入口点是什么意思 我在使用LPC2106上移植UCOS-II,每次MAKE时总是提示我 Image does not have a

43、n entry point,可是我是把光盘的vetctors.s 复制过来的,而且仔细看了看,已经声明了ENTERY,这是怎么回事A:需要在ADS中设置入口。第21问: Q:请教:如何定义不被初始化变量 A:让编译器不知道有这个内存地址即可。 A:如用分散加载文件分配RAM故意预留一部分RAM不分配,用它来存您不需要初始化的东西。或者不调用编译器提供的启动代码,不过这样可能编程会麻烦一些。第22问: Q:我直接通过JTAG口 HYPERLINK / t _blank 下载EasyArm板带的Ext1_test程序到 HYPERLINK t _blank arm中,出现中断向量的告警: inte

44、rrupt vector is not correct HYPERLINK t _blank arm is not running freely. 果然复位后芯片不能运行。但是我用串口 HYPERLINK / t _blank 下载后芯片能正常工作,中断也行的。 并且我用JTAG仿真的话,芯片能正常工作,中断也行的,唯独JTAG口 HYPERLINK / t _blank 下载不行。 不知道是什么原因 A:仿真器配置中要设置Erase Flash when need.也可以这样试试: 1.可以先打开一个工程在RAM中调试运行; 2.stop程序; 3.使用File-Load Image重新加载

45、Ext1_test生成的*.axf文件。 Q:仿真器配置中我是设置了Erase Flash when need,但照你说的话,那不是在RAM下调试吗 在RAM下调试我是可以的,但是下载后出现interrupt vector data is not correct. 我又看了几篇文章,是不是跟中断向量表的累加和不为零有关系啊 A:是的,是向量表的累加和不为零。 因为如果用ISP下载能运行,说明向量表的累加和已为零,而用JTAG下载不能运行的情况可能是 没有正常下载代码。先在RAM中调试,目的是为了后面正确下载程序到FLASH.第23问: Q:用Scatter怎样将某个函数或文件定位在Flash的

46、某个位置 第24问: Q:我在仿真时遇到这样的提示: Error, Flash is protected by user configation! 怎么写到flash里面呢 A:看配套 HYPERLINK t _blank arm微控制器基础与实战附录一。第25问: Q:我在移植实验中想到了两个问题,如下: 1.Debug和Release以及DebugRel有什么不同,为什么在作2104移植实验时,要用Release 2.在Release中为什么要将RW Base设置为0 x40000040 我将其设置为0 x40003000, 为什么不能工作 A:都只是一个问题,内存空间的使用,因为跑OS要

47、比较大的内存空间,所以要腾出点地方。第26问: Q:请问没有MMU的 HYPERLINK t _blank arm芯片是否支持使用malloc()函数动态分配内存 A:是否支持malloc()函数与芯片没有多大关系,主要与编译器有关。 Q:再问:如果没有操作系统支持呢 A:也支持。第27问: Q:在I2C实验程序中,我想查看数据缓冲区DataBuf的值,怎么查看 A:watch窗口或鼠标停留在要查看的变量名上。 Q:我查询的是写入DataBuf缓冲区的值,鼠标在上面根本就不会出现他的值,即使在watch中加入, 结果也是name not found. A:变量被优化,调试时可以把该变量定义为全

48、局变量查看。第28问: Q:仿真软件和2104开发板连接不上 DBE Warning 00041: !An unspecified Debug Toolbox call failed 电源和开发板都连好,错误和没接开发板一样,驱动也安装了,安装时按确定键时,软件很长时间才有如上反应,请帮忙 A:1.并口是否正常 2.在其它操作系统(如98)下或其它台式PC下试试。第29问: Q:如何生成32位hex文件 我在Release Setting- HYPERLINK t _blank arm fromELF-Output Format中设置为Intel 32bit HEX,可是好像没有生成hex文件

49、 A:试试这种方法: Target-Target Setting- ost Link中选择 HYPERLINK t _blank arm fromELF加上你上面设的应该不成问题。第30问: Q:请问关于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 可读/写段,即数据变量空间; ZI 清零变量段,即需要清零初始化的数据变量空间。第32问: Q:如何在ADS里

50、面看任务执行的一些情况 比如堆栈。 A:多任务环境下的堆栈,内存等信息需要调试软件的支持才可以实现。 ucos下有一个统计功能的模块可以间接实现部分功能。第33问: Q:请问向flash烧数据时出现:exceeds flash limitation 请予赐教! A:要写入的flash地址超过了范围。如果不是代码太大的问题,可以检查scf文件是否正确。第34问: Q:在LPC2214之类的芯片中如何实现数组的绝对地址定位,比如51的_at_的用法。 A:*(char*)0 x40000300)类似访问 Q:谢谢,但这样做就无须定义数组变量,访问也不便,还有高招吗 A:可以使用分散加载。第35问: Q:请问 ADS编译错误L6221E:Execution

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论