版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、基于ARM9的CMOS圖像采集系統(tǒng)的設(shè)計與實現(xiàn)系統(tǒng)簡介采用32位ARM微處理器、CMOS圖像傳感器和CPLD為核心器件,設(shè)計實現(xiàn)面向機器視覺領(lǐng)域的CMOS圖像采集系統(tǒng),主要功能模塊有SDRAM存儲單元、圖像采集單元、以太網(wǎng)傳輸模塊、UART串口通信模塊、Flash模塊、電源模塊等;與傳統(tǒng)的“圖像采集卡-PC-終端控制設(shè)備”模式的機器視覺系統(tǒng)相比,具有體積小、成本低、功耗低、實時性強、設(shè)計靈活等優(yōu)點。該系統(tǒng)可應(yīng)用于視頻圖像監(jiān)控、圖像自動檢測、醫(yī)療及軍事檢測等場所,具有良好的應(yīng)用前景。機器視覺在國民經(jīng)濟、科學(xué)研究以及國防建設(shè)等領(lǐng)域都有著廣泛的應(yīng)用。在大批量工業(yè)生產(chǎn)過程中,用人工視覺檢查產(chǎn)品質(zhì)量效率
2、低且精度不高,用機器視覺可以提高生產(chǎn)效率和自動化程度。圖像采集系統(tǒng)是機器視覺系統(tǒng)的重要組成部分,目前圖像采集常用的兩種圖像傳感器為CCD與CMOS圖像傳感器。CCD一般輸出帶制式的模擬信號,需要經(jīng)過視頻解碼器得到數(shù)字信號才能傳入微處理器中,而CMOS圖像傳感器直接輸出數(shù)字信號,可以直接與微處理器進行連接。不同的CMOS圖像傳感器有不同的性能,主要表現(xiàn)在圖像分辨率大小不同、幀速率不同、曝光方式不同等,CMOS圖像傳感器可直接通過I2C來設(shè)置圖像分辨率大小及曝光、增益等參數(shù),而CCD圖像傳感器則需要對視頻解碼器進行設(shè)置來控制圖像的曝光、增益等參數(shù)信息。相對于CCD圖像傳感器,CMOS圖像傳感器具有
3、低功耗、小體積、高速數(shù)據(jù)傳輸和方便控制等優(yōu)點,因此,CMOS圖像傳感器更適用于嵌入式系統(tǒng)應(yīng)用中1。本文從實際應(yīng)用出發(fā),采用32位ARM9微處理器S3C2410A作為CPU來控制其他功能模塊,設(shè)計實現(xiàn)面向機器視覺的CMOS圖像采集系統(tǒng),主要功能模塊有SDRAM存儲單元、圖像采集單元、以太網(wǎng)傳輸模塊、UART串口通信模塊、Flash模塊、電源模塊等。與傳統(tǒng)的“圖像采集卡-PC-終端控制設(shè)備”模式的機器視覺系統(tǒng)相比,具有體積小、成本低、功耗低、實時性強、設(shè)計靈活等優(yōu)點。1 系統(tǒng)結(jié)構(gòu)典型的機器視覺系統(tǒng)一般包括圖像采集模塊、圖像數(shù)字化模塊、數(shù)字圖像處理模塊、光源系統(tǒng)、智能判斷決策模塊和機械控制執(zhí)行模塊2
4、。其中圖像采集和數(shù)字圖像處理模塊的速度是評價嵌入式視覺系統(tǒng)硬件設(shè)計的性能指標,文獻36分別給出了目前常見的四種嵌入式視覺系統(tǒng)結(jié)構(gòu):(1) 采用USB接口攝像頭結(jié)構(gòu)3:圖像采集部分的硬件用USB接口的CMOS攝像頭,攝像頭應(yīng)可與集成的USB的CPU接口直接相連。USB接口可以實現(xiàn)高速的串行通信,但USB攝像頭要開發(fā)專門的驅(qū)動,大大增加了軟件的開發(fā)量和難度。(2)引入異步FIFO結(jié)構(gòu)4:在圖像傳感器和主控CPU間采用異步FIFO解決傳感器輸出數(shù)據(jù)頻率和主控CPU采集頻率不匹配的問題,當FIFO滿時CPU再快速讀取FIFO數(shù)據(jù)。異步FIFO可以是雙口RAM或者在FPGA內(nèi)開辟。(3) CPLD為核心
5、的圖像采集結(jié)構(gòu)5:直接由CPLD根據(jù)圖像傳感器輸出的時序信號,控制SRAM的讀寫,當一幀數(shù)據(jù)信息采集完畢后向CPU發(fā)送采集完畢信號;CPU需要對圖像進行處理時,再通過CPLD到SRAM里讀取數(shù)據(jù)。(4) 由外部中斷實現(xiàn)圖像采集結(jié)構(gòu)6:圖像傳感器的幀同步、行同步和像元同步信號分別與CPU的一個外部中斷連接,CPU根據(jù)中斷次數(shù)來判斷一幀圖像是否采集完成。通過對幾種方案的對比分析,綜合實際應(yīng)用及開發(fā)難度等因素,確定系統(tǒng)結(jié)構(gòu)如圖1所示,系統(tǒng)由圖像采集、圖像緩沖和圖像處理三部分組成。在圖像緩存中,CPLD將圖像傳感器采集的10位數(shù)據(jù)移位成32位,再通過外部請求DMA的辦法,由主控CPU的DMA控制器將3
6、2位數(shù)據(jù)送到RAM保存。這樣可以減少常見中低速圖像采集的資源浪費,又避免了CPU響應(yīng)滯后的缺點。 圖1 圖像采集系統(tǒng)框圖2 硬件設(shè)計系統(tǒng)總體硬件結(jié)構(gòu)圖如圖2所示。其中,圖像采集器采用柯達公司的CMOS單色圖像傳感器KAC9638;圖像的緩存由CPLD芯片XC95144和外擴SDRM(HY57V561620)組成;圖像處理核心部分采用Samsung公司的ARM9(S3C2410A),并外擴了UART、以太網(wǎng)通信接口、USB口及LCD人機接口,方便系統(tǒng)調(diào)試和與其他設(shè)備交換數(shù)據(jù)。 圖2 系統(tǒng)硬件結(jié)構(gòu)框圖 硬件系統(tǒng)工作流程是:(1)系統(tǒng)上電后ARM9通過I2C接口直接對圖像傳感器進行初始化,然后等待上
7、位機命令;(2)接收到上位機命令后,ARM9先進行DMA初始化,然后向CPLD發(fā)送采集命令。CPLD啟動圖像采集并申請ARM9的DMA,將一幀圖像的數(shù)據(jù)保存到ARM9的SDRAM中;(3)完成圖像采集后ARM9進入DMA完成,進行圖像處理并將結(jié)果通過串口輸出。2.1 存儲器選擇S3C2410A芯片外部可尋址的存儲空間是1 GB,被分成8個存儲塊,每塊128 MB,各個存儲塊由片選信號nGCS0nGCS7譯碼產(chǎn)生。數(shù)據(jù)總線引腳為DATA0DATA31共32根,可配置成8 bit/16 bit/32 bit的數(shù)據(jù)寬度;地址總線引腳為ADDR0ADDR26共27根,支持128 MB空間。S3C241
8、0A是32位的微處理器,外部總線也是32位,要充分發(fā)揮其32位總線性能優(yōu)勢,應(yīng)采用32位的存儲系統(tǒng)。方法是采用兩片16位數(shù)據(jù)寬度的Flash存儲器芯片并聯(lián)或一片32位數(shù)據(jù)寬度的Flash存儲器芯片。本設(shè)計采用了兩片Intel的E28F128J3A組成了16M32bit的NOR Flash,其中一片為高16位,另一片為低16位。采用三星公司的兩片半字SDRAM (HY57V561620)共同組成一個16 M32 bit的SDRAM系統(tǒng),提高了其與CPU的通信效率。2.2 通信接口設(shè)計2.2.1 UART及USB接口設(shè)計S3C2410A的UART提供了三個獨立的異步串行I/O口,每個串行口可以獨立
9、地工作在中斷模式和DMA模式。UART使用系統(tǒng)時鐘,支持最高230.4 kb/s波特率的數(shù)據(jù)通信。每個UART串行口提供兩個16 B的FIFO分別用來做發(fā)送和接收緩沖。本系統(tǒng)采用MAX202芯片作為RS-232的接收器/驅(qū)動器,將UART0和UART1連接到9DB接頭與DSP和PC通信。S3C2410A有2個USB主設(shè)備和1個USB從設(shè)備,USB設(shè)備控制器允許DMA模式的批量傳輸、中斷傳輸和控制傳輸。在系統(tǒng)設(shè)計中,USB設(shè)備用來和PC機通信供調(diào)試用,因此使用從設(shè)備口(兼容USB Ver1.1標準)。2.2.2 以太網(wǎng)接口電路設(shè)計S3C2410A片上沒有以太網(wǎng)口,因此必須外加以太網(wǎng)控制器才能擴展
10、。系統(tǒng)采用16位以太網(wǎng)控制器CS8900A,該芯片的特點是:符合IEEE802.3標準,支持全雙工收發(fā)可達10 Mb/s,內(nèi)置SRAM收發(fā)緩沖,減輕了對主處理器的開銷。以太網(wǎng)電路如圖3所示,S3C2410A通過16位數(shù)據(jù)線,20位地址線連接CA8900A。片選信號為nGCS3,即將CS8900A的內(nèi)部寄存器和幀緩沖區(qū)映射到S3C2410A的Band4中連續(xù)4 KB的存儲區(qū)中,主機可以通過這個存儲空間直接訪問CS8900A的內(nèi)部寄存器和幀緩沖區(qū)。CS8900A與RJ-45接口直接連接一個網(wǎng)絡(luò)變壓器,起到電平轉(zhuǎn)換及電氣隔離的作用。此外,CS8900A提供兩種操作模式:I/O模式和內(nèi)存模式,本系統(tǒng)通
11、過CPLD選擇其工作模式。FB2022網(wǎng)絡(luò)變壓器RJ-45接口CPLD CS8900A控制邏輯 S3C2410A D0-d15 A0-a19 nCSC3 R/W 圖3 以太網(wǎng)口連接電路結(jié)構(gòu)圖2.3 圖像采集模塊電路設(shè)計圖像傳感器采用柯達公司生產(chǎn)的CMOS單色圖像傳感器KAC9638。KAC9638是高性能、低功耗、SXGA CMOS有源像元傳感器,具有以下特點:(1)KAC9638是1/2英寸,1 0241 280有效圖像陣列的CMOS圖像傳感器,在滿足應(yīng)用場合所需的分辨率條件下,還具有良好的動態(tài)范圍(55 dB),最小照度(2.40/Lux-sec)等性能;(2)KAC9638內(nèi)置10位的A
12、/D轉(zhuǎn)換器,直接輸出8位或10位的數(shù)字灰度值,在保證精度的同時不需另外接A/D轉(zhuǎn)換器,大大簡化外圍電路;(3)KAC9638具有良好的電源管理功能和低功耗特性。數(shù)據(jù)傳送時芯片的總功耗為150 mW。此外,為進一步降低系統(tǒng)的功耗,芯片還具有可編程“上電”和“下電”模式。CMOS圖像傳感器目前普遍采用I2C總線,本系統(tǒng)通過S3C2410A的I2C總線與KAC9638的SCL、SDA連接。由S3C2410A直接完成對圖像傳感器的初始化。KAC9638內(nèi)部嵌入了一個10位A/D轉(zhuǎn)換器,因而可以同步輸出10位的數(shù)字視頻流,但是S3C2410A具有32位的外部總線,直接將10位數(shù)據(jù)接到總線上會造成資源浪費
13、,降低CPU效率,因此,KAC9638和S3C2410A之間連接CPLD,由CPLD完成10位視頻數(shù)據(jù)到32位的轉(zhuǎn)換,圖像采集接口電路結(jié)構(gòu)框圖如圖4所示。 圖4 圖像采集接口電路結(jié)構(gòu)框圖為使S3C2410A能像訪問內(nèi)存一樣讀取圖像傳感器的數(shù)據(jù),將CPLD映射到S3C2410A的存儲單元上。CPLD上的圖像緩存片選信號nGCS4,地址映射到S3C2410A的Bank4,地址范圍:0 x200000000 x27ffffff。實際只用其中的一個地址0 x20000000(即DMA的源地址)。圖像傳感器由S3C2410A的clockout0引腳提供。此外,PCLK、HREF、VSYNC分別為像素、行
14、、幀同步信號;OE為圖像傳感器啟動采集信號;XINT是ARM9與CPLD的外部中斷聯(lián)絡(luò)信號;XDREQ和XDACK為S3C2410A的DMA的請求和握手信號。3 系統(tǒng)驅(qū)動軟件設(shè)計3.1 I2C串行總線通信協(xié)議I2C總線是嵌入式系統(tǒng)常見的網(wǎng)絡(luò)接口,由SCL(串行時鐘)和SDA(串行數(shù)據(jù))兩根總線構(gòu)成。該總線有嚴格的時序要求,總線工作時,由串行時鐘線SCL傳送時鐘脈沖,由串行數(shù)據(jù)線SDA傳送數(shù)據(jù)??偩€必須由主設(shè)備控制,主設(shè)備產(chǎn)生串行時鐘控制總線的傳輸方向,并產(chǎn)生起始和停止條件。I2C總線傳輸一個字節(jié)的時序如圖5所示。當主設(shè)備寫從設(shè)備時,傳輸?shù)臄?shù)據(jù)要跟有從設(shè)備的地址。從設(shè)備不能主動執(zhí)行數(shù)據(jù)傳輸,所以
15、主控設(shè)備讀從設(shè)備時必須發(fā)送一個帶有從設(shè)備地址的讀請求。本系統(tǒng)中ARM9是主設(shè)備,圖像傳感器是從設(shè)備,ARM9通過I2C總線改寫KAC9638寄存器的值完成初始化。根據(jù)I2C通信協(xié)議,改變某個寄存器的值的過程是:先發(fā)送CMOS傳感器特定寫地址(7位地址+0),緊接著發(fā)送需要寫的寄存器的地址,再發(fā)送數(shù)據(jù);而要讀取某個寄存器的值的過程是:先發(fā)送CMOS傳感器特定寫地址,緊接著發(fā)送需要讀的寄存器的地址,再發(fā)送CMOS傳感器特定讀地址(7位地址+1),最后接收數(shù)據(jù)。 圖5 I2C總線一個字節(jié)的傳輸時序 3.2 圖像采集CPLD時序控制CPLD采集兩個10位像元數(shù)據(jù)組合成32位(不夠的位用0補充)可以提高
16、圖像采集效率。并且設(shè)計中使用DMA的方式保存圖像數(shù)據(jù),可以減少CPU的開銷。以CPLD為核心器件設(shè)計的圖像采集邏輯結(jié)構(gòu)圖如圖6所示。圖6 圖形采集邏輯結(jié)構(gòu)圖邏輯結(jié)構(gòu)圖的工作原理如下:(1) CLKOUT0為S3C2410A的輸出時鐘引腳,根據(jù)S3C2410A內(nèi)部寄存器MisCCR中46位的不同設(shè)置可以輸出不同的時鐘,如系統(tǒng)時鐘FCLK、AHB(內(nèi)部)總線時鐘HCLK和APB(外部)總線時鐘PCLK等。系統(tǒng)將其作為CMOS圖像傳感器的主時鐘輸入MCLK。(2) 啟動信號START為S3C2410A的一個I/O,高電平有效,由于KAC9638的啟動信號OE是低電平有效,所以它們之間要連接一個非門。
17、(3) VSYNC為傳感器的幀同步信號,輸出一幀有效圖像時該信號一直為高電平,用該信號連接S3C2410A的外部中斷XINT,使CPU能控制一幀圖像的開始和結(jié)束。(4) D9:0為圖像傳感器輸出的數(shù)據(jù)流,D15:10位用0填充,組成16位數(shù)據(jù)輸入到緩沖。緩沖的寫入允許信號是啟動信號START和幀有效信號VSYNC的邏輯與。在緩沖內(nèi)兩個周期移位成32位數(shù)據(jù)。(5) 緩沖寫入時鐘WRCLK由傳感器的像元輸出時鐘PCLK提高,一個周期寫入一個10位A/D值,所以一次輸出32位數(shù)據(jù)時,輸出時鐘周期是PCLK的二分頻。并將PCLK的二分頻作為S3C2410A外部DMA的請求信號XDREQ。(6) 片選信
18、號線nGCS4:作為32位緩沖的控制線,低電平有效。在進行數(shù)據(jù)采集時將DMA方式的源地址設(shè)置在BANK4范圍內(nèi),讀操作時即選中該緩沖。3.3 DMA方式采集圖像數(shù)據(jù)程序設(shè)計系統(tǒng)采集一幀圖像數(shù)據(jù)的流程圖如圖8所示。圖8 采集圖像數(shù)據(jù)流程圖 啟動圖像采集:主控CPU從串口或其他通信口接收到采集命令后,通過START信號線通知CPLD采集信號,CPLD再通過硬件引腳OE啟動KAC9638采集圖像數(shù)據(jù)。 DMA初始化:包括DMA的源地址、目標地址、DMA次數(shù)等初始化。 開外中斷:當一幀數(shù)據(jù)采集完成后,通過外部中斷通知CPU。 DMA數(shù)據(jù)傳輸無需CPU干預(yù),一幀圖像完成后產(chǎn)生中斷。(5) DMA中斷產(chǎn)生
19、并且外部中斷產(chǎn)生才算是一幀圖像采集完成,然后交由主控CPU進行處理。若只有其中一個中斷產(chǎn)生,并且等待另一個中斷超時,則是在采集過程中丟失了數(shù)據(jù),采集圖像失敗。4 硬件調(diào)試4.1 硬件調(diào)試環(huán)境在系統(tǒng)硬件調(diào)試中,使用集成開發(fā)環(huán)境配合JATG仿真器進行調(diào)試是目前采用最多的一種調(diào)試方式7。集成開發(fā)環(huán)境選用ARM公司的ADS1.2。JTAG仿真器也稱為JTAG調(diào)試器,是通過ARM芯片的JATG邊界掃描口進行調(diào)試的設(shè)備。屬于完全非插入式(即不使用片上資源)調(diào)試。4.2 硬件調(diào)試步驟(1)BootLoad系統(tǒng)引導(dǎo)測試先使用英蓓特公司開發(fā)的Flash燒寫工具將BootLoad程序燒寫到Flash,若在PC超級
20、終端上能正確接收目標板的串口返回的啟動信息,表明系統(tǒng)正常運行,可以用ADS下載程序到SDRAM進行調(diào)試。(2)圖像傳感器測試I2C配置測試將ADS編譯好的bin文件下載到目標板的SDRAM,超級終端接收到返回的圖像傳感器ID正確,則表明I2C通信正常。通過I2C配置圖像大小為3(H)5(V),用示波器測量傳感器幀同步(vsync)、行同步(hsync)及像元時鐘(pclk)的關(guān)系。圖像采集測試為方便檢驗采集到的圖像,將ARM采集到的圖像數(shù)據(jù)通過UART口發(fā)送到PC終端,再將數(shù)據(jù)組合成圖像顯示。5、應(yīng)用前景采用CMOS圖像傳感器、CPLD和ARM9的DMA結(jié)合完成圖像的采集是本系統(tǒng)的特點。該方法
21、提高了圖像的采集速度,減少了CPU的開銷。CMOS圖像傳感器價格適中,外圍簡單,且集成I2C接口便于編程控制;CPLD將CMOS傳感器輸出數(shù)據(jù)移位成32位數(shù)據(jù),可以使傳感器以更高的速度輸出;ARM9的DMA負責圖像采集,使得CPU可以解放出來處理其他任務(wù)。實驗測試結(jié)果證明,該圖像采集系統(tǒng)硬件平臺方案設(shè)計合理、可行。該系統(tǒng)在實際中可以應(yīng)用于視頻圖像監(jiān)控、圖像自動檢測、醫(yī)療及軍事檢測等場所,具有良好的應(yīng)用前景。參考文獻1 李繼軍,杜云剛,張麗華等.CMOS圖像傳感器的研究進展J.激光與光電子學(xué)進展,2009(04):45-52.2 付斌,王科俊,陸揚.基于USB2.0的CMOS圖像采集系統(tǒng)的實現(xiàn)J
22、.微計算機信息,2009(10):96-98.3 李洪宇機器視覺圖像采集設(shè)計與研究D大慶:大慶石油學(xué)院,2007.4 龍再川,趙凱生,洪明堅,等ARM系統(tǒng)中DMA方式在數(shù)據(jù)采集中的應(yīng)用J國外電子元器件,2007(2):66-69.5 林志琦,張修謙,富麗,等基于TMS320F2812和CPLD的200萬像素數(shù)字圖像采集系統(tǒng)接口的設(shè)計J長春理工大學(xué)學(xué)報,2007,30(2):39-41.6 葉權(quán)來,鄭黎明ARM9平臺下的CMOS圖像傳感器數(shù)據(jù)采集系統(tǒng)J電子工程師,2007,33(6):70-72.7 符意德,陸陽嵌入式系統(tǒng)原理及接口技術(shù)北京:清華大學(xué)出版社,2007附錄資料:不需要的可以自行刪除
23、ARM經(jīng)典40問答第1問:Q:請問在初始化CPU堆棧的時候一開始在執(zhí)行mov r0, LR這句指令時處理器是什么模式A:復(fù)位后的模式,即管理模式。第2問: Q:請教:MOV中的8位圖立即數(shù),是怎么一回事 0 xF0000001是怎么來的 A:是循環(huán)右移,就是一個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ù)也是這個原因??梢?/p>
24、看一看 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ù)表達式。該常數(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ù)表達式應(yīng)用舉例: LDR R0,R1,#-4 ;讀取 R1 地址上的 HYPERLINK /
25、 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ù)是合法常量呢 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
26、結(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)對相關(guān)尋址方式的說明。第4問: Q:在程序移植的過程中,什么代碼段處于什么樣的模式,這可真是一個困擾人的大難題,有沒有一種標志或辦法能夠識別代碼段處于什么樣的模式 A:讀取 CPSR ,任何時
27、候都是可以讀。第5問: Q:為什么保護現(xiàn)場時,總是保護 R0-R3,R12,為什么不保護R4-R11A:請看一看 HYPERLINK t _blank arm-thumb過程調(diào)用標準這個文檔。第6問: Q:請問 mov R1,#0 x00003DD0 錯誤: 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
28、arm7TDMI(-S)處理器內(nèi)部有37個用戶可見的寄存器: 問題:用戶可見應(yīng)該怎樣理解 這37個寄存器是否是37個不同的物理寄存器, 例如R8與R8_fiq應(yīng)該是兩個不同的物理寄存器吧 A:用戶可見是指用戶可以通過程序操作的。R8與R8_fiq是兩個不同的寄存器。第8問: Q: USR模式,SVC模式,IRQ模式分別有哪些限制 A:對于外設(shè)操作限制與芯片設(shè)計有關(guān)。USR模式不能設(shè)置CPSR寄存器。 用戶模式下無SPSR寄存器,代碼可以為 HYPERLINK t _blank arm,Thumb.第9問: Q:請問在初始化堆棧時就決定了工作模式是什么意思 如何決定工作模式的 A:設(shè)置CPSR寄
29、存器。第10問: Q:請問: HYPERLINK t _blank arm匯編程序設(shè)計中所謂的文字池作何理解 A:可以理解為常量數(shù)組,文字池中保存的是常量,這些常量可以是正常的常量,也可以是地址。第11問: Q:為什么在中斷向量表中不直接LDR PC,異常地址.而是使用一個標號,然有再在后面使用DCD定義這個標號 A:因為LDR指令只能跳到當前PC 4kB范圍內(nèi),而B指令能跳轉(zhuǎn)到32MB范圍,而現(xiàn)在這樣在LDR PC, xxxx這條指令不遠處用xxxxDCD定義一個字,而這個字里面存放最終異常服務(wù)程序的地址,這樣可以實現(xiàn)4GB全范圍跳轉(zhuǎn)。 Q: LDR 不是可以全空間跳轉(zhuǎn)的嗎 HYPERLIN
30、K 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 arm7TDMI有何區(qū)別 A: ARM7TDMI-S是ARM7TDMI的可綜合(synthesizable)版本(軟核)。 對應(yīng)用工程師來說,除非芯片生產(chǎn)廠商對ARM7TDMI-S進行了裁減,否則ARM7TDMI-S與ARM7TDMI沒有太大的區(qū)別,其編程模型與 HYPERLINK t _blank arm7TDMI一致。第13問: Q: DCD偽指令的疑惑。
31、 StackUsr DCD UsrStackSpace + (USR_STACK_LEGTH - 1) * 4 這句話是什么意思 DCD后面的程序標號或數(shù)字表達式是何意 A:它的內(nèi)容是初始化遞減堆棧的最高地址,看 HYPERLINK t _blank arm微控制器基礎(chǔ)與實戰(zhàn)2.3.2節(jié)。 第2章 編譯器與語言第14問: Q:00254: Unimplemented RDI message是什么錯誤提示 我的設(shè)置連接都正常,是不是芯片燒了 A:是JTAG的問題??梢韵仁褂肐SP操作試試就知道了,如果能ISP,說明LPC2104沒有損壞,還能正常運行程序。第15問: Q:請教:我在調(diào)試程序的時候
32、在AXD中出現(xiàn)這樣的提示信息: RDI Warning 00159:could not open specified device port. 我是根據(jù)配套教程的步驟設(shè)置的。 A:請按照光盤easy HYPERLINK t _blank arm_drivereadme.txt安裝驅(qū)動程序。第16問: Q:我用實驗程序運行經(jīng)常出現(xiàn)下列信息! 程序不能 HYPERLINK / t _blank 下載到目標板。 Warnning! interrupt vectors data is not correct! Program you downloaded can not run freely! A:1
33、.仿真器配置一定要正確,即Easy HYPERLINK t _blank arm Configuration設(shè)置窗口中的FLASH項中選擇Erase Flash when need; 2.向量表累加和要為0; 3.可以先在RAM調(diào)試一個程序(運行),然后STOP,再使用File-Load Image加載要 HYPERLINK / t _blank 下載到FLASH的調(diào)試文件。第17問: Q:在ADS中是否可以進行軟件調(diào)試基于UCOS-II的程序 A:ADS軟件調(diào)試只能調(diào)試 HYPERLINK t _blank arm的內(nèi)核,不能調(diào)試外設(shè)。但是取消 PLL 鎖定檢測后,可以調(diào)試任務(wù)切換,最終到空
34、閑任務(wù)上。開始移植時軟件仿真是最好的工具。第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文件, 這是什么原因 且當我的主程序用匯編編寫時,不能引用lpc2106.h,用lpc2106.inc則無法加入project,請問匯編器應(yīng)如何設(shè)置 A:不用加2106.inc只要該文件在你的工程文件夾中,就可以直接在匯
35、編程序的開始處加 include 2106.inc. 注意:該文件是匯編文件定義的頭文件,定義內(nèi)部寄存器。第20問: Q:入口點是什么意思 我在使用LPC2106上移植UCOS-II,每次MAKE時總是提示我 Image does not have an entry point,可是我是把光盤的vetctors.s 復(fù)制過來的,而且仔細看了看,已經(jīng)聲明了ENTERY,這是怎么回事A:需要在ADS中設(shè)置入口。第21問: Q:請教:如何定義不被初始化變量 A:讓編譯器不知道有這個內(nèi)存地址即可。 A:如用分散加載文件分配RAM故意預(yù)留一部分RAM不分配,用它來存您不需要初始化的東西。或者不調(diào)用編譯器
36、提供的啟動代碼,不過這樣可能編程會麻煩一些。第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ù)位后芯片不能運行。但是我用串口 HYPERLINK / t _blank 下載后芯片能正常工作,中斷也行的。 并且我用JTAG仿真的話,芯片能正常工作,中斷也行的,唯獨JTAG口 HYPERLI
37、NK / t _blank 下載不行。 不知道是什么原因 A:仿真器配置中要設(shè)置Erase Flash when need.也可以這樣試試: 1.可以先打開一個工程在RAM中調(diào)試運行; 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:是的,是向量表的累
38、加和不為零。 因為如果用ISP下載能運行,說明向量表的累加和已為零,而用JTAG下載不能運行的情況可能是 沒有正常下載代碼。先在RAM中調(diào)試,目的是為了后面正確下載程序到FLASH.第23問: Q:用Scatter怎樣將某個函數(shù)或文件定位在Flash的某個位置 第24問: Q:我在仿真時遇到這樣的提示: Error, Flash is protected by user configation! 怎么寫到flash里面呢 A:看配套 HYPERLINK t _blank arm微控制器基礎(chǔ)與實戰(zhàn)附錄一。第25問: Q:我在移植實驗中想到了兩個問題,如下: 1.Debug和Release以及De
39、bugRel有什么不同,為什么在作2104移植實驗時,要用Release 2.在Release中為什么要將RW Base設(shè)置為0 x40000040 我將其設(shè)置為0 x40003000, 為什么不能工作 A:都只是一個問題,內(nèi)存空間的使用,因為跑OS要比較大的內(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ū)DataBu
40、f的值,怎么查看 A:watch窗口或鼠標停留在要查看的變量名上。 Q:我查詢的是寫入DataBuf緩沖區(qū)的值,鼠標在上面根本就不會出現(xiàn)他的值,即使在watch中加入, 結(jié)果也是name not found. A:變量被優(yōu)化,調(diào)試時可以把該變量定義為全局變量查看。第28問: Q:仿真軟件和2104開發(fā)板連接不上 DBE Warning 00041: !An unspecified Debug Toolbox call failed 電源和開發(fā)板都連好,錯誤和沒接開發(fā)板一樣,驅(qū)動也安裝了,安裝時按確定鍵時,軟件很長時間才有如上反應(yīng),請幫忙 A:1.并口是否正常 2.在其它操作系統(tǒng)(如98)下或其
41、它臺式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:請問關(guān)于settings中r0 base rw base的意思 A:ro:read only,rw:read and write.第31問: Q:編譯成
42、功后的信息第一行,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)試軟件的支持才可以實現(xiàn)。 ucos下有一個統(tǒng)計功能的模塊可以間接實現(xiàn)部分功能。第33問: Q:請問向flash燒數(shù)據(jù)時出現(xiàn):exceeds flash limitation 請予賜教! A:要寫入的flash地址超過了范圍。如果不是代碼太大的問題,可以檢查scf文件是否正
43、確。第34問: Q:在LPC2214之類的芯片中如何實現(xiàn)數(shù)組的絕對地址定位,比如51的_at_的用法。 A:*(char*)0 x40000300)類似訪問 Q:謝謝,但這樣做就無須定義數(shù)組變量,訪問也不便,還有高招嗎 A:可以使用分散加載。第35問: Q:請問 ADS編譯錯誤L6221E:Execution region ER_RO overlays with Execution region ER_ZI 該如何解決 A:請用我們網(wǎng)站上的工程模板試一試,最大的可能是因為你的RELEASE或者DEBUG選項里面沒有正確設(shè)置,按照參考 HYPERLINK t _blank arm微控制器基礎(chǔ)與實戰(zhàn)上面的設(shè)置,是不會有這個問題的。第36問: Q:請教一下:將程序?qū)懭雈lash,再用從JTAG方式調(diào)試寫入之后再復(fù)位程序沒什么反映。 看了很多以前的帖子,說memm
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 個人餐飲業(yè)務(wù)承包合同樣本版B版
- 2025版美容院會員積分管理與消費激勵合作協(xié)議4篇
- 二零二五版數(shù)字貨幣錢包技術(shù)開發(fā)與合作協(xié)議范本3篇
- 2025年度智慧醫(yī)療平臺建設(shè)承包合同范本3篇
- 2025年度專業(yè)打字員崗位勞動合同規(guī)范文本4篇
- 2025年度連鎖藥房營業(yè)員專業(yè)培訓(xùn)及聘用合同4篇
- 2025年度10kv配電站施工期間消防安全保障合同正規(guī)范本3篇
- 2025年度醫(yī)療器械冷鏈運輸安全協(xié)議3篇
- 個人經(jīng)營性貸款合同2024年度版2篇
- 居住區(qū)文化活動空間設(shè)計與居民參與度關(guān)系
- 教代會提案征集培訓(xùn)
- 高考語文復(fù)習【知識精研】《千里江山圖》高考真題說題課件
- 河北省承德市2023-2024學(xué)年高一上學(xué)期期末物理試卷(含答案)
- 012主要研究者(PI)職責藥物臨床試驗機構(gòu)GCP SOP
- 農(nóng)耕研學(xué)活動方案種小麥
- 2024年佛山市勞動合同條例
- 污水管網(wǎng)規(guī)劃建設(shè)方案
- 城鎮(zhèn)智慧排水系統(tǒng)技術(shù)標準
- 采購管理制度及流程采購管理制度及流程
- 五年級美術(shù)下冊第9課《寫意蔬果》-優(yōu)秀課件4人教版
- 節(jié)能降耗課件
評論
0/150
提交評論