采用ARM Linux架構(gòu)的基于CAN總線和MiniGUI的虛擬儀表設(shè)計(jì)_第1頁
采用ARM Linux架構(gòu)的基于CAN總線和MiniGUI的虛擬儀表設(shè)計(jì)_第2頁
采用ARM Linux架構(gòu)的基于CAN總線和MiniGUI的虛擬儀表設(shè)計(jì)_第3頁
采用ARM Linux架構(gòu)的基于CAN總線和MiniGUI的虛擬儀表設(shè)計(jì)_第4頁
采用ARM Linux架構(gòu)的基于CAN總線和MiniGUI的虛擬儀表設(shè)計(jì)_第5頁
已閱讀5頁,還剩14頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、采用ARM+Linux架構(gòu)的基于CAN總線和MiniGUI的虛擬儀表設(shè)計(jì)當(dāng)今發(fā)達(dá)國(guó)家普遍使用全數(shù)字式汽車儀表,且絕大部分是步進(jìn)電動(dòng)機(jī)式汽車儀表,并準(zhǔn)備向更高方向發(fā)展。由于受到成本的限制,目前國(guó)內(nèi)顯示汽車儀表只能選用字段顯示方式的顯示屏,無法選用顯示分辨率更高的點(diǎn)陣式顯示屏,因此其視覺效果和顯示精度還不能令人滿意。ECU性能不斷提高,抗強(qiáng)電磁干擾、工作溫度范圍和對(duì)工作電源穩(wěn)定性要求等方面得到較大的改善,同時(shí)價(jià)格大幅度降低,因而目前有條件在汽車儀表上使用ECU控制的全數(shù)字儀表,國(guó)內(nèi)汽車儀表界一致看好全數(shù)字式汽車儀表1。隨著現(xiàn)代電子技術(shù)的發(fā)展,要求汽車儀表與汽車上其他裝置交換數(shù)據(jù),即要求接入到汽車的

2、計(jì)算機(jī)系統(tǒng)總線上,因此本文設(shè)計(jì)了一個(gè)基于嵌入式系統(tǒng)、CAN總線技術(shù)和TFT LCD液晶顯示技術(shù)的全數(shù)字式汽車儀表系統(tǒng)。1 系統(tǒng)軟硬件平臺(tái)的選擇 本文選取Intel公司的PXA270為微處理器,選配MiniARM270核心板;64 MB SDRAM為系統(tǒng)運(yùn)行隨機(jī)存儲(chǔ)器;256 MB NAND Flash程序存儲(chǔ)器;MCP2515 CAN控制器負(fù)責(zé)CAN報(bào)文的接收與發(fā)送;8英寸640480真彩TFT液晶屏顯示GUI圖形界面;Linux為嵌入式操作系統(tǒng)2。選用目前較為流行的嵌入式GUI系統(tǒng)MiniGUI進(jìn)行應(yīng)用程序界面的編寫。運(yùn)用ZLG/BOOT啟動(dòng)Jflashmm、Flash FXP軟件進(jìn)行內(nèi)核的

3、燒寫與移植。軟件編制調(diào)試完畢后,進(jìn)行操作系統(tǒng)內(nèi)核定制,裁減出最小操作系統(tǒng),并將應(yīng)用程序與最小系統(tǒng)在仿真環(huán)境下進(jìn)行聯(lián)合調(diào)試。虛擬儀表系統(tǒng)結(jié)構(gòu)如圖1所示。 2 MiniGUI的程序開發(fā)和移植 將MiniGUI及應(yīng)用程序移植到目標(biāo)機(jī)上需要經(jīng)歷編寫相應(yīng)的驅(qū)動(dòng)程序、交叉編譯MiniGUI及應(yīng)用程序、安裝MiniGUI到目標(biāo)系統(tǒng)、在目標(biāo)系統(tǒng)上運(yùn)行MiniGUI應(yīng)用程序等幾個(gè)步驟。 MiniGUI程序是建立在MiniGUI和ANSIC庫之上,所以程序的編寫要按照MiniGUI的程序框架來定,并通過調(diào)用ANSIC庫以及MiniGUI自身提供的API函數(shù)來實(shí)現(xiàn)。MiniGUI程序的入口點(diǎn): int MiniGU

4、IMain(int argc,const cha r * argv ) 。其風(fēng)格類似于Win32 ,也是基于窗口、事件驅(qū)動(dòng)編程。事件通過消息機(jī)制傳遞,當(dāng)事件發(fā)生時(shí),MiniGUI將事件轉(zhuǎn)換為一個(gè)消息,并將消息發(fā)送到MiniGUI應(yīng)用程序的消息隊(duì)列之中。窗口過程函數(shù)是MiniGUI應(yīng)用程序必不可少的函數(shù),用于接收和處理消息,是一個(gè)回調(diào)函數(shù),由MiniGUI調(diào)用,在應(yīng)用程序中不能直接調(diào)用,其函數(shù)原型如下:static int WindowProc (HWND hWnd, int message, WPARAM wParam,LPARAM lParam)。每個(gè)MiniGUI應(yīng)用程序的初始界面一般都是

5、MiniGUI主窗口,然后在主窗口的基礎(chǔ)上再建立子窗口或?qū)υ捒虻?。主窗口使用CreateMainWindow函數(shù)實(shí)現(xiàn),在這個(gè)函數(shù)里可以設(shè)置主窗口的風(fēng)格、大小、句柄、標(biāo)題以及窗口過程函數(shù)等6,8-9。 本文有兩個(gè)顯示界面,分別對(duì)應(yīng)流程圖里面的子程序1和子程序2。應(yīng)用程序流程圖如圖2所示。 本文采用arm-linux-gcc-3.4.3交叉編譯器對(duì)驅(qū)動(dòng)程序和應(yīng)用程序進(jìn)行編譯。安裝交叉編譯器步驟:將交叉編譯器安裝包arm-linux-3.4.3.tar.bz2復(fù)制到當(dāng)前目錄下,進(jìn)行解壓安裝并指定安裝路徑:#tar xjvf arm-linux-3.4.3.tar.bz2 C /usr/local/a

6、rm。為了便于使用,安裝完畢后,通常都將交叉編譯器的路徑添加到系統(tǒng)的搜索路徑中。這樣要編譯文件時(shí)就很簡(jiǎn)單,不用每次都指定路徑,系統(tǒng)會(huì)自動(dòng)搜索。在這里介紹的一種方法是修改/etc/profile文件:打開/etc/profile文件,在最后一行添加pathmunge /usr/local/arm/3.4.3/sbin,保存退出,在終端輸入執(zhí)行:#. Profile(“點(diǎn)+空格+文件名”)。可通過在終端輸入:arm-linux-gccv 檢驗(yàn)用戶編譯器版本。arm-linux-gcc編譯出來的程序,不能在PC機(jī)上運(yùn)行,必須下載到ARM系統(tǒng)中才能運(yùn)行。 MiniGUI在Linux系統(tǒng)中有兩種運(yùn)行模式

7、:fbcon(Frame Buffer Console)和qvfb(Qt Virtual Frame Buffer)。fbcon在控制臺(tái)下運(yùn)行,這種模式下不能開Linux的X圖形界面。qvfb則是帶幀緩沖的虛擬控制臺(tái),MiniGUI程序在qvfb中運(yùn)行就像圖形界面下的終端(Terminal)中運(yùn)行命令一樣。通過對(duì)gal_engine賦值來設(shè)置運(yùn)行模式。3 信號(hào)采集電路 CAN總線的智能節(jié)點(diǎn)一般由主控制器、CAN總線控制器、CAN總線驅(qū)動(dòng)器以及具體的功能單元組成。主控制器用來通過訪問CAN總線控制器來實(shí)現(xiàn)對(duì)CAN總線的訪問。CAN總線控制器實(shí)現(xiàn)CAN協(xié)議的數(shù)據(jù)鏈路層和物理層功能,對(duì)外具有與主控制

8、器和總線驅(qū)動(dòng)器的接口功能。CAN總線驅(qū)動(dòng)器提供CAN總線控制器與物理總線之間的接口。 本文選用Microchip公司生產(chǎn)的MCP2515作為CAN總線控制器。MCP2515是一款獨(dú)立的CAN協(xié)議控制器,完全支持CAN 2.0B技術(shù)規(guī)范。MCP2515與主控制器的連接是通過標(biāo)準(zhǔn)串行外設(shè)接口SPI(Searial Peripheral Interface)實(shí)現(xiàn)的。主控制器選擇了Microchip公司的PIC16F913,該單片機(jī)為高性能的RISC CPU,內(nèi)部具有4 KB的可編程可擦除的Flash存儲(chǔ)器、256 B的RAM、256 B的EEPROM,帶有標(biāo)準(zhǔn)的SPI接口,也能夠方便地和CAN總線控

9、制器MCP2515進(jìn)行連接。CAN總線驅(qū)動(dòng)器選擇Microchip公司的MCP2551,是一個(gè)可容錯(cuò)的高速CAN器件4,10。數(shù)據(jù)采集用的CAN總線接口電路如圖3所示。 4 CAN總線驅(qū)動(dòng)程序的方案設(shè)計(jì)與實(shí)現(xiàn) 設(shè)備驅(qū)動(dòng)程序是介于硬件和Linux內(nèi)核之間的軟件接口,是一種低級(jí)的、專用于某一硬件的軟件組件。設(shè)備驅(qū)動(dòng)也可以理解為操作系統(tǒng)的一部分,對(duì)于一個(gè)特定的硬件設(shè)備來說,其對(duì)應(yīng)的設(shè)備驅(qū)動(dòng)程序是不同的,比如網(wǎng)卡、鍵盤、鼠標(biāo)、顯卡、電位器、電機(jī)等。操作系統(tǒng)本身沒有對(duì)各種硬件設(shè)備提供持久不變的“驅(qū)動(dòng)設(shè)備”,沒有驅(qū)動(dòng),操作系統(tǒng)就控制不了底層的設(shè)備,對(duì)于操作系統(tǒng)來說,掛接的設(shè)備越多,需要的設(shè)備驅(qū)動(dòng)程序也越多

10、。 在Linux操作系統(tǒng)中,把所有外設(shè)都當(dāng)成文件看待,使用操作文件的方法來操作設(shè)備,通過驅(qū)動(dòng)程序,Linux操作系統(tǒng)才能以文件夾的方式來管理設(shè)備。因此驅(qū)動(dòng)程序的編寫開發(fā)具有十分重要的地位。Linux設(shè)備驅(qū)動(dòng)程序運(yùn)行在Linux內(nèi)核空間,是Linux內(nèi)核中聯(lián)系硬件設(shè)備和應(yīng)用程序的橋梁。Linux系統(tǒng)硬件、設(shè)備驅(qū)動(dòng)和應(yīng)用程序的關(guān)系如圖4所示7。 MagicARM270實(shí)驗(yàn)箱采用SJA1000 CAN控制器擴(kuò)展了1路CAN接口,SJA1000是PHILIPS公司經(jīng)典的CAN控制器,支持CAN 2.0 A、B協(xié)議。結(jié)合應(yīng)用程序、驅(qū)動(dòng)程序、內(nèi)核程序,CAN驅(qū)動(dòng)流程圖如圖5所示。5 測(cè)試結(jié)果與驗(yàn)證 選取廣

11、州致遠(yuǎn)電子有限公司生產(chǎn)的Magic ARM270實(shí)驗(yàn)箱進(jìn)行仿真2。通過CAN總線實(shí)現(xiàn)汽車上各種信息的采集和測(cè)量,并將采集的結(jié)果送到ARM進(jìn)行處理,最后通過TFT顯示出來,設(shè)置CAN總線傳輸速度波特率為125 KB/s,圖6所示為捕捉的一個(gè)界面。 隨著信息技術(shù)的快速發(fā)展,現(xiàn)場(chǎng)總線技術(shù)在汽車上得到了越來越多的應(yīng)用。本文在測(cè)試系統(tǒng)下采用CAN總線接口提取車速、發(fā)動(dòng)機(jī)轉(zhuǎn)速、機(jī)油壓力、油量、水溫、傳動(dòng)箱壓力及其他車況等信息。實(shí)驗(yàn)表明采用虛擬儀表技術(shù)完全能夠滿足車輛運(yùn)行參數(shù)和狀態(tài)顯示的要求,可擴(kuò)充性好,配置方便。本文來源:電子技術(shù)應(yīng)用作者:尹玉梅 劉建新 田東亮 李金超 匡平章附錄資料:不需要的可以自行刪

12、除ARM經(jīng)典40問答第1問:Q:請(qǐng)問在初始化CPU堆棧的時(shí)候一開始在執(zhí)行mov r0, LR這句指令時(shí)處理器是什么模式A:復(fù)位后的模式,即管理模式。第2問: Q:請(qǐng)教:MOV中的8位圖立即數(shù),是怎么一回事 0 xF0000001是怎么來的 A:是循環(huán)右移,就是一個(gè)0255 之間的數(shù)左移或右移偶數(shù)位的來的,也就是這個(gè)數(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ī)范,所以是正確的。這樣做是因?yàn)橹噶铋L(zhǎng)度的限制,不可能把32位立即數(shù)放在32位的指令中。移位偶數(shù)也是這個(gè)原因???/p>

13、以看一看 HYPERLINK t _blank arm體系結(jié)構(gòu)(ADS自帶的英文文檔)的相關(guān)部分。第3問: Q:請(qǐng)教: HYPERLINK t _blank arm微控制器基礎(chǔ)與實(shí)戰(zhàn)2.2.1節(jié)關(guān)于第2個(gè)操作數(shù)的描述中有這么一段:#inmed_8r常數(shù)表達(dá)式。該常數(shù)必須對(duì)應(yīng)8位位圖,即常熟是由一個(gè)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

14、/ t _blank 存儲(chǔ)器單元內(nèi)容,且 R1 = R1-4 針對(duì)這一段,我的疑問: 1. 即常數(shù)是由一個(gè)8位的常數(shù)循環(huán)移位偶數(shù)位得到,這句話如何理解 2. 該常數(shù)必須對(duì)應(yīng)8位位圖,既然是8位位圖,那么取值為0-255,怎么0 x3FC這種超出255的數(shù)是合法常量呢 3. 所舉例子中,合法常量和非法常量是怎么區(qū)分的 如0 x3FC合法,而0 x1FE卻非法0 xF0000000,0 xF0000001都合法,而0 xF0000010又變成了非法 4. 對(duì)于匯編語句 LDR R0,R1,#-4,是先將R1的值減4結(jié)果存入R1,然后讀取R1所指單元的 值到R0,還是先讀取R1到R0,然后再將R1減

15、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 xF0000010底數(shù)是9位,不能表示。 4. LDR R0, R1, #-4 是后索引,即先讀,再減。 可以看一看 HYPERLINK t _blank arm體系結(jié)構(gòu)對(duì)相關(guān)尋址方式的說明。第4問: Q:在程序移植的過程中,什么代碼段處于什么樣的模式,這可真是一個(gè)困擾人的大難題,有沒有一種標(biāo)志或辦法能夠識(shí)別代碼段處于什么樣的模式 A:讀取 CPSR ,任何

16、時(shí)候都是可以讀。第5問: Q:為什么保護(hù)現(xiàn)場(chǎng)時(shí),總是保護(hù) R0-R3,R12,為什么不保護(hù)R4-R11A:請(qǐng)看一看 HYPERLINK t _blank arm-thumb過程調(diào)用標(biāo)準(zhǔn)這個(gè)文檔。第6問: Q:請(qǐng)問 mov R1,#0 x00003DD0 錯(cuò)誤: out of the range of operation是怎么回事情 我就是想IODIR=0 x00003dd0,匯編就是 LDR R0,=IODIR MOV R1,#0 x00003dd0 STR R1,R0 編譯時(shí)候說是超出操作范圍 A:使用ldr,mov的操作數(shù)為8位位圖數(shù)。第7問: Q:在 HYPERLINK t _blank

17、 arm7TDMI(-S)處理器內(nèi)部有37個(gè)用戶可見的寄存器: 問題:用戶可見應(yīng)該怎樣理解 這37個(gè)寄存器是否是37個(gè)不同的物理寄存器, 例如R8與R8_fiq應(yīng)該是兩個(gè)不同的物理寄存器吧 A:用戶可見是指用戶可以通過程序操作的。R8與R8_fiq是兩個(gè)不同的寄存器。第8問: Q: USR模式,SVC模式,IRQ模式分別有哪些限制 A:對(duì)于外設(shè)操作限制與芯片設(shè)計(jì)有關(guān)。USR模式不能設(shè)置CPSR寄存器。 用戶模式下無SPSR寄存器,代碼可以為 HYPERLINK t _blank arm,Thumb.第9問: Q:請(qǐng)問在初始化堆棧時(shí)就決定了工作模式是什么意思 如何決定工作模式的 A:設(shè)置CPSR

18、寄存器。第10問: Q:請(qǐng)問: HYPERLINK t _blank arm匯編程序設(shè)計(jì)中所謂的文字池作何理解 A:可以理解為常量數(shù)組,文字池中保存的是常量,這些常量可以是正常的常量,也可以是地址。第11問: Q:為什么在中斷向量表中不直接LDR PC,異常地址.而是使用一個(gè)標(biāo)號(hào),然有再在后面使用DCD定義這個(gè)標(biāo)號(hào) A:因?yàn)長(zhǎng)DR指令只能跳到當(dāng)前PC 4kB范圍內(nèi),而B指令能跳轉(zhuǎn)到32MB范圍,而現(xiàn)在這樣在LDR PC, xxxx這條指令不遠(yuǎn)處用xxxxDCD定義一個(gè)字,而這個(gè)字里面存放最終異常服務(wù)程序的地址,這樣可以實(shí)現(xiàn)4GB全范圍跳轉(zhuǎn)。 Q: LDR 不是可以全空間跳轉(zhuǎn)的嗎 HYPERLI

19、NK t _blank arm微控制器基礎(chǔ)與實(shí)戰(zhàn)程序清單5.3. A: LDR偽指令通過設(shè)置指令緩沖池才能實(shí)現(xiàn)全范圍跳轉(zhuǎn),而LDR指令則只能實(shí)現(xiàn)4KB范圍跳轉(zhuǎn)。第12問: Q: ARM7TDMI-S和 HYPERLINK t _blank arm7TDMI有何區(qū)別 A: ARM7TDMI-S是ARM7TDMI的可綜合(synthesizable)版本(軟核)。 對(duì)應(yīng)用工程師來說,除非芯片生產(chǎn)廠商對(duì)ARM7TDMI-S進(jìn)行了裁減,否則ARM7TDMI-S與ARM7TDMI沒有太大的區(qū)別,其編程模型與 HYPERLINK t _blank arm7TDMI一致。第13問: Q: DCD偽指令的疑惑

20、。 StackUsr DCD UsrStackSpace + (USR_STACK_LEGTH - 1) * 4 這句話是什么意思 DCD后面的程序標(biāo)號(hào)或數(shù)字表達(dá)式是何意 A:它的內(nèi)容是初始化遞減堆棧的最高地址,看 HYPERLINK t _blank arm微控制器基礎(chǔ)與實(shí)戰(zhàn)2.3.2節(jié)。 第2章 編譯器與語言第14問: Q:00254: Unimplemented RDI message是什么錯(cuò)誤提示 我的設(shè)置連接都正常,是不是芯片燒了 A:是JTAG的問題。可以先使用ISP操作試試就知道了,如果能ISP,說明LPC2104沒有損壞,還能正常運(yùn)行程序。第15問: Q:請(qǐng)教:我在調(diào)試程序的時(shí)

21、候在AXD中出現(xiàn)這樣的提示信息: RDI Warning 00159:could not open specified device port. 我是根據(jù)配套教程的步驟設(shè)置的。 A:請(qǐng)按照光盤easy HYPERLINK t _blank arm_drivereadme.txt安裝驅(qū)動(dòng)程序。第16問: Q:我用實(shí)驗(yàn)程序運(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:

22、1.仿真器配置一定要正確,即Easy HYPERLINK t _blank arm Configuration設(shè)置窗口中的FLASH項(xiàng)中選擇Erase Flash when need; 2.向量表累加和要為0; 3.可以先在RAM調(diào)試一個(gè)程序(運(yùn)行),然后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 鎖定檢測(cè)后,可以調(diào)試任務(wù)切換,最終到

23、空閑任務(wù)上。開始移植時(shí)軟件仿真是最好的工具。第18問: Q: HYPERLINK t _blank armulate軟件是干什么的 2104不是用EasyJTAG.dll來仿真嗎 A:軟件仿真只能仿真 HYPERLINK t _blank arm 核。第19問: Q:有關(guān)LPC2106.INC的問題。我無法在project引用lpc2106.inc文件,只能引用lpc2106.h文件, 這是什么原因 且當(dāng)我的主程序用匯編編寫時(shí),不能引用lpc2106.h,用lpc2106.inc則無法加入project,請(qǐng)問匯編器應(yīng)如何設(shè)置 A:不用加2106.inc只要該文件在你的工程文件夾中,就可以直接在

24、匯編程序的開始處加 include 2106.inc. 注意:該文件是匯編文件定義的頭文件,定義內(nèi)部寄存器。第20問: Q:入口點(diǎn)是什么意思 我在使用LPC2106上移植UCOS-II,每次MAKE時(shí)總是提示我 Image does not have an entry point,可是我是把光盤的vetctors.s 復(fù)制過來的,而且仔細(xì)看了看,已經(jīng)聲明了ENTERY,這是怎么回事A:需要在ADS中設(shè)置入口。第21問: Q:請(qǐng)教:如何定義不被初始化變量 A:讓編譯器不知道有這個(gè)內(nèi)存地址即可。 A:如用分散加載文件分配RAM故意預(yù)留一部分RAM不分配,用它來存您不需要初始化的東西。或者不調(diào)用編譯

25、器提供的啟動(dòng)代碼,不過這樣可能編程會(huì)麻煩一些。第22問: Q:我直接通過JTAG口 HYPERLINK / t _blank 下載EasyArm板帶的Ext1_test程序到 HYPERLINK t _blank arm中,出現(xiàn)中斷向量的告警: interrupt vector is not correct HYPERLINK t _blank arm is not running freely. 果然復(fù)位后芯片不能運(yùn)行。但是我用串口 HYPERLINK / t _blank 下載后芯片能正常工作,中斷也行的。 并且我用JTAG仿真的話,芯片能正常工作,中斷也行的,唯獨(dú)JTAG口 HYPERL

26、INK / t _blank 下載不行。 不知道是什么原因 A:仿真器配置中要設(shè)置Erase Flash when need.也可以這樣試試: 1.可以先打開一個(gè)工程在RAM中調(diào)試運(yùn)行; 2.stop程序; 3.使用File-Load Image重新加載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:是的,是向量表的

27、累加和不為零。 因?yàn)槿绻肐SP下載能運(yùn)行,說明向量表的累加和已為零,而用JTAG下載不能運(yùn)行的情況可能是 沒有正常下載代碼。先在RAM中調(diào)試,目的是為了后面正確下載程序到FLASH.第23問: Q:用Scatter怎樣將某個(gè)函數(shù)或文件定位在Flash的某個(gè)位置 第24問: Q:我在仿真時(shí)遇到這樣的提示: Error, Flash is protected by user configation! 怎么寫到flash里面呢 A:看配套 HYPERLINK t _blank arm微控制器基礎(chǔ)與實(shí)戰(zhàn)附錄一。第25問: Q:我在移植實(shí)驗(yàn)中想到了兩個(gè)問題,如下: 1.Debug和Release以及D

28、ebugRel有什么不同,為什么在作2104移植實(shí)驗(yàn)時(shí),要用Release 2.在Release中為什么要將RW Base設(shè)置為0 x40000040 我將其設(shè)置為0 x40003000, 為什么不能工作 A:都只是一個(gè)問題,內(nèi)存空間的使用,因?yàn)榕躉S要比較大的內(nèi)存空間,所以要騰出點(diǎn)地方。第26問: Q:請(qǐng)問沒有MMU的 HYPERLINK t _blank arm芯片是否支持使用malloc()函數(shù)動(dòng)態(tài)分配內(nèi)存 A:是否支持malloc()函數(shù)與芯片沒有多大關(guān)系,主要與編譯器有關(guān)。 Q:再問:如果沒有操作系統(tǒng)支持呢 A:也支持。第27問: Q:在I2C實(shí)驗(yàn)程序中,我想查看數(shù)據(jù)緩沖區(qū)DataB

29、uf的值,怎么查看 A:watch窗口或鼠標(biāo)停留在要查看的變量名上。 Q:我查詢的是寫入DataBuf緩沖區(qū)的值,鼠標(biāo)在上面根本就不會(huì)出現(xiàn)他的值,即使在watch中加入, 結(jié)果也是name not found. A:變量被優(yōu)化,調(diào)試時(shí)可以把該變量定義為全局變量查看。第28問: Q:仿真軟件和2104開發(fā)板連接不上 DBE Warning 00041: !An unspecified Debug Toolbox call failed 電源和開發(fā)板都連好,錯(cuò)誤和沒接開發(fā)板一樣,驅(qū)動(dòng)也安裝了,安裝時(shí)按確定鍵時(shí),軟件很長(zhǎng)時(shí)間才有如上反應(yīng),請(qǐng)幫忙 A:1.并口是否正常 2.在其它操作系統(tǒng)(如98)下或

30、其它臺(tái)式PC下試試。第29問: Q:如何生成32位hex文件 我在Release Setting- HYPERLINK t _blank arm fromELF-Output Format中設(shè)置為Intel 32bit HEX,可是好像沒有生成hex文件 A:試試這種方法: Target-Target Setting- ost Link中選擇 HYPERLINK t _blank arm fromELF加上你上面設(shè)的應(yīng)該不成問題。第30問: Q:請(qǐng)問關(guān)于settings中r0 base rw base的意思 A:ro:read only,rw:read and write.第31問: Q:編譯

31、成功后的信息第一行,code,R0 data,RW data,ZI data,debug分別代表什么 A:R0 只讀段,即程序代碼空間; RW 可讀/寫段,即數(shù)據(jù)變量空間; ZI 清零變量段,即需要清零初始化的數(shù)據(jù)變量空間。第32問: Q:如何在ADS里面看任務(wù)執(zhí)行的一些情況 比如堆棧。 A:多任務(wù)環(huán)境下的堆棧,內(nèi)存等信息需要調(diào)試軟件的支持才可以實(shí)現(xiàn)。 ucos下有一個(gè)統(tǒng)計(jì)功能的模塊可以間接實(shí)現(xiàn)部分功能。第33問: Q:請(qǐng)問向flash燒數(shù)據(jù)時(shí)出現(xiàn):exceeds flash limitation 請(qǐng)予賜教! A:要寫入的flash地址超過了范圍。如果不是代碼太大的問題,可以檢查scf文件是否

32、正確。第34問: Q:在LPC2214之類的芯片中如何實(shí)現(xiàn)數(shù)組的絕對(duì)地址定位,比如51的_at_的用法。 A:*(char*)0 x40000300)類似訪問 Q:謝謝,但這樣做就無須定義數(shù)組變量,訪問也不便,還有高招嗎 A:可以使用分散加載。第35問: Q:請(qǐng)問 ADS編譯錯(cuò)誤L6221E:Execution region ER_RO overlays with Execution region ER_ZI 該如何解決 A:請(qǐng)用我們網(wǎng)站上的工程模板試一試,最大的可能是因?yàn)槟愕腞ELEASE或者DEBUG選項(xiàng)里面沒有正確設(shè)置,按照參考 HYPERLINK t _blank arm微控制器基礎(chǔ)與

33、實(shí)戰(zhàn)上面的設(shè)置,是不會(huì)有這個(gè)問題的。第36問: Q:請(qǐng)教一下:將程序?qū)懭雈lash,再用從JTAG方式調(diào)試寫入之后再復(fù)位程序沒什么反映。 看了很多以前的帖子,說memmap寄存器要為1,我用的是一個(gè)很簡(jiǎn)單的控制led的例子,改動(dòng)了參數(shù)之后寫入flash的。在這個(gè)程序的vectors中找不到關(guān)于memmap寄存器操作的部分啊,這是怎么回事,該怎么辦呢 A: HYPERLINK t _blank arm微控制器基礎(chǔ)與實(shí)戰(zhàn)上附錄有常見問題,列舉了幾點(diǎn)程序?qū)懙紽LASH不能運(yùn)行的原因。 memmap操作可以在target.c中的TargetResetInit()函數(shù)內(nèi)添加。第37問: Q:HEX文件。EASY2100配套 HYPERLINK t _blank arm微控制器基礎(chǔ)與實(shí)戰(zhàn)上講:把項(xiàng)目編譯成HEX文件,我不會(huì)呀,咋辦 A:Target-target settings設(shè)置Post-linker并且設(shè)置Linker-f

溫馨提示

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

評(píng)論

0/150

提交評(píng)論