版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
以往我國(guó)的\o"中央空調(diào)"中央空調(diào)控制系統(tǒng)主要采用以單片機(jī)為控制核心的單機(jī)組控制器,即一個(gè)控制器只能控制一臺(tái)中央空調(diào)機(jī)組,這種控制方法控制簡(jiǎn)單,但是在多層或者較大型的建筑中控制能力就顯得力不從心了。近年來(lái)也出現(xiàn)了采用ARM7處理器作為控制芯片的集中控制器,但是在此所采用的\o"ARM9"ARM9
處理器比ARM7處理器又有了許多優(yōu)點(diǎn),如ARM9處理器采用5級(jí)流水線,在每一個(gè)時(shí)鐘周期內(nèi)可以同時(shí)執(zhí)行5條指令,這樣就大大提高了處理性能,在同樣的加工工藝下,ARM9處理器的時(shí)鐘頻率是ARM7的1.8~2.2倍;又如ARM9采用哈佛結(jié)構(gòu),具有分離的數(shù)據(jù)和程序空間及分離的訪問(wèn)總線,所以在指令執(zhí)行時(shí)哈佛結(jié)構(gòu)的取址和取數(shù)可以并行,因此具有更高的執(zhí)行效率;再如擁有內(nèi)存管理單元(MMU),只有擁有了MMU才能真正實(shí)現(xiàn)內(nèi)存保護(hù),通過(guò)內(nèi)存保護(hù),一個(gè)進(jìn)程的失敗并不會(huì)影響其他進(jìn)程的運(yùn)行,從而增強(qiáng)了系統(tǒng)的穩(wěn)定性。另外,ARM9可以?xún)?nèi)嵌Linux操作系統(tǒng),Linux具有良好的網(wǎng)絡(luò)支持功能;Linux是首先實(shí)現(xiàn)TCP/IP協(xié)議棧的操作系統(tǒng),它的內(nèi)核結(jié)構(gòu)在網(wǎng)絡(luò)方面是非常完整的,并提供了對(duì)包括十兆位、百兆位及千兆位的以太網(wǎng),還有無(wú)線網(wǎng)絡(luò)等的支持;其次,Linux源碼開(kāi)放、可定制內(nèi)核、性能優(yōu)異等也是選擇它相對(duì)于其他嵌入式操作系統(tǒng)的優(yōu)勢(shì)。在此設(shè)計(jì)的網(wǎng)絡(luò)集中控制器可與監(jiān)控軟件一起完成基于TCP/IP協(xié)議的網(wǎng)絡(luò)通信功能,并能通過(guò)RS485總線與自行設(shè)計(jì)的現(xiàn)場(chǎng)控制器進(jìn)行通信。1
控制器設(shè)計(jì)方案網(wǎng)絡(luò)管理器的主要功能一方面是通過(guò)以太網(wǎng)與監(jiān)控軟件進(jìn)行數(shù)據(jù)交換;另一方面是通過(guò)RS485總線網(wǎng)絡(luò)與分布在大廈各處的現(xiàn)場(chǎng)控制器通信。網(wǎng)絡(luò)管理器對(duì)現(xiàn)場(chǎng)控制器進(jìn)行控制和管理,在現(xiàn)場(chǎng)控制器與中央操作站之間起數(shù)據(jù)緩存作用。1.1
控制器硬件設(shè)計(jì)處理器采用ATMEL公司的AT91RM9200,該處理器是ATMEL專(zhuān)門(mén)針對(duì)工業(yè)及以太網(wǎng)應(yīng)用領(lǐng)域推出的基于ARM920T內(nèi)核的新型微處理器,如圖1所示。(1)電源電路。主要作用是為控制器提供3.3V和1.8V的穩(wěn)定電壓。設(shè)計(jì)時(shí)利用LM1117低壓差線性調(diào)壓器來(lái)提供3.3V和1.8V的電壓。LM1117能夠提供1.8V,2.5V,2.85V,3.3V,5V的固定電壓和可調(diào)電壓型號(hào),并能提供電流限制和熱保護(hù)。
圖1
網(wǎng)絡(luò)集中控制器硬件模塊示意圖(2)復(fù)位電路。主要完成系統(tǒng)的上電復(fù)位和系統(tǒng)在運(yùn)行時(shí)用戶(hù)的按鍵復(fù)位功能,它由簡(jiǎn)單的RC電路構(gòu)成,這種電路比較通用,其復(fù)位邏輯是可靠的。(3)存儲(chǔ)器系統(tǒng)設(shè)計(jì)。包括NorFlash接口、NandFLASH接口和SDRAM接口電路的設(shè)計(jì)。①NorFLASH存儲(chǔ)器內(nèi)部存放系統(tǒng)啟動(dòng)代碼、Linux內(nèi)核和用戶(hù)程序等,存儲(chǔ)器芯片采用AT49BV322A,單片存儲(chǔ)容量為32Mb,工作電壓為2.65~3.6V,數(shù)據(jù)寬度為16b,并以16b(字模式)數(shù)據(jù)寬度的方式工作。②SDRAM存儲(chǔ)器作為程序的運(yùn)行空間,如前所述,SDRAM的存儲(chǔ)單元可以理解為一個(gè)電容,總是傾向于放電,為避免數(shù)據(jù)丟失,必須定時(shí)刷新(充電)。由此可見(jiàn),要在系統(tǒng)中使用SDRAM,就要求微處理器具有刷新控制邏輯,或在系統(tǒng)中另外加入刷新控制邏輯電路。本控制器采用的控制芯片具有用SDRAM刷新控的制邏輯,可以直接與SDRAM接口連接。SDRAM存儲(chǔ)器芯片采用HY57V281620HG,單片存儲(chǔ)容量為4組!32Mb,工作電壓為3.3V,數(shù)據(jù)寬度為16b。本控制器采用2片16b數(shù)據(jù)寬度的HY57V281620HG并聯(lián)為32b數(shù)據(jù)寬度的SDRAM存儲(chǔ)系統(tǒng)。③NandFLASH作為系統(tǒng)的數(shù)據(jù)存儲(chǔ)器,芯片采用K9F1208UOMYIB0,存儲(chǔ)容量為64MB,數(shù)據(jù)總線寬度為8位,工作電壓為2.7~3.6V。為了提高控制芯片的驅(qū)動(dòng)能力,在這部分設(shè)計(jì)中加入了74HC245總線驅(qū)動(dòng)器,74HC245提供雙向總線驅(qū)動(dòng),主要使用在數(shù)據(jù)的雙向緩沖。(4)串行接口電路。本控制器對(duì)控制芯片提供的4個(gè)串口中3個(gè)設(shè)計(jì)接口電路。一個(gè)串口用于軟件調(diào)試與系統(tǒng)開(kāi)發(fā),另一個(gè)作為預(yù)留串口,可以在需要時(shí)與PC機(jī)進(jìn)行通信。另外,還需要設(shè)計(jì)RS485串行通信接口電路,用于與現(xiàn)場(chǎng)控制器的通信。電平轉(zhuǎn)換芯片采用常用的MAX232;RS485電平轉(zhuǎn)換芯片采用MAX485。(5)網(wǎng)絡(luò)接口電路。AT91RM9200內(nèi)嵌入了10Mb/s/100Mb/s自適應(yīng)的以太網(wǎng)MAC控制器,但是這還不能直接用來(lái)進(jìn)行以太網(wǎng)通信,片外還需要擴(kuò)展以太網(wǎng)的物理層接口(PHY),這樣才能夠?qū)崿F(xiàn)高速的以太網(wǎng)通訊。物理層接口芯片選用DM9161。另外,設(shè)計(jì)中還用到了網(wǎng)絡(luò)隔離變壓器,它的主要作用是傳輸數(shù)據(jù),還有一個(gè)作用是隔離網(wǎng)線連接中不同網(wǎng)絡(luò)設(shè)備間的不同電平,以防止不同電壓通過(guò)網(wǎng)線傳輸損壞設(shè)備。1.2
控制器應(yīng)用程序開(kāi)發(fā)控制器軟件部分的開(kāi)發(fā)主要是在裁剪好的Linux內(nèi)核和驅(qū)動(dòng)程序的基礎(chǔ)上開(kāi)發(fā)適應(yīng)本系統(tǒng)的串口應(yīng)用程序和服務(wù)器應(yīng)用程序。Linux操作系統(tǒng)下串口應(yīng)用程序的開(kāi)發(fā)步驟為:打開(kāi)串口;設(shè)置串口屬性;讀寫(xiě)串口;關(guān)閉串口。要分別編寫(xiě)發(fā)送程序和接收程序,以便于發(fā)送和接收數(shù)據(jù)時(shí)可以分別調(diào)用兩個(gè)函數(shù)。程序中需要注意接收和發(fā)送程序中的buffer一定不要小于要接收數(shù)據(jù)的長(zhǎng)度,否則接收或者發(fā)送的數(shù)據(jù)就會(huì)出錯(cuò)。服務(wù)器應(yīng)用程序是將網(wǎng)絡(luò)集中控制器作為服務(wù)器端來(lái)編寫(xiě)程序,使其能與作為客戶(hù)端的監(jiān)控軟件通過(guò)以太網(wǎng)通信。服務(wù)器程序的開(kāi)發(fā)步驟為:生成套接口;綁定套接口地址;*連接請(qǐng)求;接收連接請(qǐng)求;與客戶(hù)程序進(jìn)行通信;關(guān)閉套接口。由于網(wǎng)絡(luò)集中控制器在與監(jiān)控軟件通信時(shí)是作為服務(wù)器來(lái)運(yùn)行的,因此需要使網(wǎng)絡(luò)控制器開(kāi)機(jī)自運(yùn)行,并等待監(jiān)控軟件(即客戶(hù)端)發(fā)送請(qǐng)求。那么設(shè)計(jì)時(shí)就需要讓該服務(wù)器程序一開(kāi)機(jī)就自動(dòng)運(yùn)行,等待與客戶(hù)端的連接與通信。為此,設(shè)計(jì)中將服務(wù)器程序放在Linux的開(kāi)機(jī)自啟動(dòng)程序中,這樣就可以保證服務(wù)器程序的開(kāi)機(jī)運(yùn)行了。服務(wù)器程序和其中的通信過(guò)程流程圖分別如圖2、圖3所示。
圖2
服務(wù)器程序流程圖
圖3
通信過(guò)程流程圖1.3
控制器LCD開(kāi)發(fā)網(wǎng)絡(luò)集中控制器作為用戶(hù)操作的主要對(duì)象,人機(jī)界面需要有很好的友好性。當(dāng)不使用監(jiān)控軟件,或者無(wú)法使用監(jiān)控軟件來(lái)觀察數(shù)據(jù)時(shí),網(wǎng)絡(luò)控制器可以使用液晶屏作為數(shù)據(jù)顯示界面。LCD液晶顯示模塊的主要核心元件是LCD控制器和LCD顯示器。LCD液晶顯示器選用了640×480的液晶屏,在LCD控制器方面選用了EPSON公司的S1D13506。開(kāi)發(fā)內(nèi)容包括LCD的接口設(shè)計(jì)、LCD的驅(qū)動(dòng)設(shè)計(jì)、MiniGUI的移植、實(shí)時(shí)數(shù)據(jù)顯示開(kāi)發(fā)。最終的顯示界面如圖4所示。
圖4
實(shí)時(shí)數(shù)據(jù)顯示界面2
實(shí)驗(yàn)結(jié)果本網(wǎng)絡(luò)集中控制器配以自行開(kāi)發(fā)的監(jiān)控軟件和現(xiàn)場(chǎng)控制器,進(jìn)行了網(wǎng)絡(luò)通信實(shí)驗(yàn)和RS485通信實(shí)驗(yàn)來(lái)測(cè)試系統(tǒng)的功能。網(wǎng)絡(luò)通信實(shí)驗(yàn)是使網(wǎng)絡(luò)集中控制器和PC機(jī)都在同一局域網(wǎng)內(nèi),分別為其設(shè)置合法的IP地址后,將監(jiān)控軟件發(fā)送給網(wǎng)絡(luò)集中控制器的指令在secureCRT上打印出來(lái)。RS485通信實(shí)驗(yàn)是將網(wǎng)絡(luò)集中控制器和現(xiàn)場(chǎng)控制器通過(guò)RS485網(wǎng)絡(luò)相連,將現(xiàn)場(chǎng)控制器收到指令后發(fā)送給網(wǎng)絡(luò)集中控制器的信息在secureCRT上打印出來(lái)。圖5和圖6為打印出來(lái)的測(cè)試結(jié)果。通過(guò)實(shí)驗(yàn)證明,本控制器的軟硬件設(shè)計(jì)是合理的。
圖5
網(wǎng)絡(luò)通信實(shí)驗(yàn)截圖
圖6
RS485通信實(shí)驗(yàn)截圖3
結(jié)
語(yǔ)在此提出了基于ARM9處理器和Linux操作系統(tǒng)的中央空調(diào)網(wǎng)絡(luò)集中控制器設(shè)計(jì)方案。給出了控制器的硬件設(shè)計(jì)和控制器應(yīng)用程序開(kāi)發(fā)和LCD開(kāi)發(fā),系統(tǒng)硬件結(jié)構(gòu)的設(shè)計(jì)采用了模塊化設(shè)計(jì)方式,在硬件的選型和結(jié)構(gòu)設(shè)計(jì)的穩(wěn)定性、可靠性方面做了一定深入的研究。通過(guò)實(shí)驗(yàn)證明,該控制器處理能力強(qiáng),便于外擴(kuò)存儲(chǔ)器,由于內(nèi)嵌了Linux操作系統(tǒng),使網(wǎng)絡(luò)功能強(qiáng)大?;贏RM7的中央空調(diào)網(wǎng)絡(luò)集中控制器能夠大大提高中央空調(diào)的使用效率,節(jié)約了能源,并且能夠顯著提高中央空調(diào)控制人員的工作效率。附錄資料:不需要的可以自行刪除ARM
經(jīng)典40問(wèn)答第1問(wèn):Q:請(qǐng)問(wèn)在初始化CPU堆棧的時(shí)候一開(kāi)始在執(zhí)行movr0,LR這句指令時(shí)處理器是什么模式A:復(fù)位后的模式,即管理模式。第2問(wèn):
Q:請(qǐng)教:MOV中的8位圖立即數(shù),是怎么一回事0xF0000001是怎么來(lái)的
A:是循環(huán)右移,就是一個(gè)0—255之間的數(shù)左移或右移偶數(shù)位的來(lái)的,也就是這個(gè)數(shù)除以4一直除,直到在0-255的范圍內(nèi)它是整數(shù)就說(shuō)明是可以的!
A:8位數(shù)(0-255)循環(huán)左移或循環(huán)右移偶數(shù)位得到的,F(xiàn)0000001既是0x1F循環(huán)右移4位,符合規(guī)范,所以是正確的。這樣做是因?yàn)橹噶铋L(zhǎng)度的限制,不可能把32位立即數(shù)放在32位的指令中。移位偶數(shù)也是這個(gè)原因??梢钥匆豢碼rm體系結(jié)構(gòu)(ADS自帶的英文文檔)的相關(guān)部分。第3問(wèn):
Q:請(qǐng)教:《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ù)位得到。
合法常量:0x3FC,0,0xF0000000,200,0xF0000001.
非法常量:0x1FE,511,0xFFFF,0x1010,0xF0000010.
常數(shù)表達(dá)式應(yīng)用舉例:
…
…
LDRR0,[R1],#-4;讀取R1地址上的存儲(chǔ)器單元內(nèi)容,且R1=R1-4
針對(duì)這一段,我的疑問(wèn):
1.即常數(shù)是由一個(gè)8位的常數(shù)循環(huán)移位偶數(shù)位得到,這句話如何理解
2.該常數(shù)必須對(duì)應(yīng)8位位圖,既然是8位位圖,那么取值為0-255,怎么0x3FC這種超出255的數(shù)是合法常量呢
3.所舉例子中,合法常量和非法常量是怎么區(qū)分的如0x3FC合法,而0x1FE卻非法0xF0000000,0xF0000001都合法,而0xF0000010又變成了非法
4.對(duì)于匯編語(yǔ)句LDRR0,[R1],#-4,是先將R1的值減4結(jié)果存入R1,然后讀取R1所指單元的值到R0,還是先讀取R1到R0,然后再將R1減4結(jié)果存入R1
A:提示,任何常數(shù)都可用底數(shù)*2的n次冪來(lái)表示。
1.arm結(jié)構(gòu)中,只有8bits用來(lái)表示底數(shù),因此底數(shù)必須是8位位圖。
2.8位位圖循環(huán)之后得到常數(shù),并非只能是8位。
3.0xF0000010底數(shù)是9位,不能表示。
4.LDRR0,[R1],#-4是后索引,即先讀,再減。
可以看一看arm體系結(jié)構(gòu)對(duì)相關(guān)尋址方式的說(shuō)明。第4問(wèn):
Q:在程序移植的過(guò)程中,什么代碼段處于什么樣的模式,這可真是一個(gè)困擾人的大難題,有沒(méi)有一種標(biāo)志或辦法能夠識(shí)別"代碼段處于什么樣的模式"
A:讀取CPSR,任何時(shí)候都是可以讀。第5問(wèn):
Q:為什么保護(hù)現(xiàn)場(chǎng)時(shí),總是保護(hù)R0-R3,R12,為什么不保護(hù)R4-R11A:請(qǐng)看一看"arm-thumb過(guò)程調(diào)用標(biāo)準(zhǔn)"這個(gè)文檔。第6問(wèn):
Q:請(qǐng)問(wèn)movR1,#0x00003DD0錯(cuò)誤:
outoftherangeofoperation是怎么回事情我就是想IODIR=0x00003dd0,匯編就是
LDRR0,=IODIR
MOVR1,#0x00003dd0
STRR1,[R0]
編譯時(shí)候說(shuō)是超出操作范圍
A:使用ldr,mov的操作數(shù)為8位位圖數(shù)。第7問(wèn):
Q:"在arm7TDMI(-S)處理器內(nèi)部有37個(gè)用戶(hù)可見(jiàn)的寄存器:"
問(wèn)題:"用戶(hù)可見(jiàn)"應(yīng)該怎樣理解這37個(gè)寄存器是否是37個(gè)不同的物理寄存器,例如R8與R8_fiq應(yīng)該是兩個(gè)不同的物理寄存器吧
A:用戶(hù)可見(jiàn)是指用戶(hù)可以通過(guò)程序操作的。R8與R8_fiq是兩個(gè)不同的寄存器。第8問(wèn):
Q:USR模式,SVC模式,IRQ模式分別有哪些限制
A:對(duì)于外設(shè)操作限制與芯片設(shè)計(jì)有關(guān)。USR模式不能設(shè)置CPSR寄存器。用戶(hù)模式下無(wú)SPSR寄存器,代碼可以為arm,Thumb.第9問(wèn):
Q:請(qǐng)問(wèn)"在初始化堆棧時(shí)就決定了工作模式"是什么意思如何決定工作模式的
A:設(shè)置CPSR寄存器。第10問(wèn):
Q:請(qǐng)問(wèn):arm匯編程序設(shè)計(jì)中所謂的"文字池"作何理解
A:可以理解為常量數(shù)組,文字池中保存的是常量,這些常量可以是正常的常量,也可以是地址。第11問(wèn):
Q:為什么在中斷向量表中不直接LDRPC,"異常地址".而是使用一個(gè)標(biāo)號(hào),然有再在后面使用DCD定義這個(gè)標(biāo)號(hào)
A:因?yàn)長(zhǎng)DR指令只能跳到當(dāng)前PC4kB范圍內(nèi),而B(niǎo)指令能跳轉(zhuǎn)到32MB范圍,而現(xiàn)在這樣在LDRPC,"xxxx"這條指令不遠(yuǎn)處用"xxxx"DCD定義一個(gè)字,而這個(gè)字里面存放最終異常服務(wù)程序的地址,這樣可以實(shí)現(xiàn)4GB全范圍跳轉(zhuǎn)。
Q:LDR不是可以全空間跳轉(zhuǎn)的嗎《arm微控制器基礎(chǔ)與實(shí)戰(zhàn)》程序清單5.3.
A:LDR偽指令通過(guò)設(shè)置指令緩沖池才能實(shí)現(xiàn)全范圍跳轉(zhuǎn),而LDR指令則只能實(shí)現(xiàn)4KB范圍跳轉(zhuǎn)。第12問(wèn):
Q:ARM7TDMI-S和arm7TDMI有何區(qū)別
A:ARM7TDMI-S是ARM7TDMI的可綜合(synthesizable)版本(軟核)。對(duì)應(yīng)用工程師來(lái)說(shuō),除非芯片生產(chǎn)廠商對(duì)ARM7TDMI-S進(jìn)行了裁減,否則ARM7TDMI-S與ARM7TDMI沒(méi)有太大的區(qū)別,其編程模型與arm7TDMI一致。第13問(wèn):
Q:DCD偽指令的疑惑。
"StackUsrDCDUsrStackSpace+(USR_STACK_LEGTH-1)*4"
這句話是什么意思DCD后面的程序標(biāo)號(hào)或數(shù)字表達(dá)式是何意
A:它的內(nèi)容是初始化遞減堆棧的最高地址,看《arm微控制器基礎(chǔ)與實(shí)戰(zhàn)》2.3.2節(jié)。
第2章編譯器與語(yǔ)言第14問(wèn):
Q:00254:UnimplementedRDImessage是什么錯(cuò)誤提示我的設(shè)置連接都正常,是不是芯片燒了
A:是JTAG的問(wèn)題??梢韵仁褂肐SP操作試試就知道了,如果能ISP,說(shuō)明LPC2104沒(méi)有損壞,還能正常運(yùn)行程序。第15問(wèn):
Q:請(qǐng)教:我在調(diào)試程序的時(shí)候在AXD中出現(xiàn)這樣的提示信息:
RDIWarning00159:couldnotopenspecifieddeviceport.
我是根據(jù)配套教程的步驟設(shè)置的。
A:請(qǐng)按照光盤(pán)\easyarm_drive\readme.txt安裝驅(qū)動(dòng)程序。第16問(wèn):
Q:我用實(shí)驗(yàn)程序運(yùn)行經(jīng)常出現(xiàn)下列信息!程序不能下載到目標(biāo)板。
Warnning!interruptvectorsdataisnotcorrect!
Programyoudownloadedcannotrunfreely!
A:1.仿真器配置一定要正確,即"EasyarmConfiguration"設(shè)置窗口中的"FLASH"項(xiàng)中選擇"EraseFlashwhenneed";
2.向量表累加和要為0;
3.可以先在RAM調(diào)試一個(gè)程序(運(yùn)行),然后STOP,再使用File->LoadImage…加載要下載到FLASH的調(diào)試文件。第17問(wèn):
Q:在ADS中是否可以進(jìn)行軟件調(diào)試基于UCOS-II的程序
A:ADS軟件調(diào)試只能調(diào)試arm的內(nèi)核,不能調(diào)試外設(shè)。但是取消PLL鎖定檢測(cè)后,可以調(diào)試任務(wù)切換,最終到空閑任務(wù)上。開(kāi)始移植時(shí)軟件仿真是最好的工具。第18問(wèn):
Q:armulate軟件是干什么的2104不是用EasyJTAG.dll來(lái)仿真嗎
A:軟件仿真只能仿真arm核。第19問(wèn):
Q:有關(guān)LPC2106.INC的問(wèn)題。我無(wú)法在project引用lpc2106.inc文件,只能引用lpc2106.h文件,這是什么原因且當(dāng)我的主程序用匯編編寫(xiě)時(shí),不能引用lpc2106.h,用lpc2106.inc則無(wú)法加入project,請(qǐng)問(wèn)匯編器應(yīng)如何設(shè)置
A:不用加2106.inc只要該文件在你的工程文件夾中,就可以直接在匯編程序的開(kāi)始處加
"include2106.inc".
注意:該文件是匯編文件定義的頭文件,定義內(nèi)部寄存器。第20問(wèn):
Q:入口點(diǎn)是什么意思我在使用LPC2106上移植UCOS-II,每次MAKE時(shí)總是提示我Imagedoesnothaveanentrypoint,可是我是把光盤(pán)的vetctors.s復(fù)制過(guò)來(lái)的,而且仔細(xì)看了看,已經(jīng)聲明了ENTERY,這是怎么回事A:需要在ADS中設(shè)置入口。第21問(wèn):
Q:請(qǐng)教:如何定義不被初始化變量
A:讓編譯器不知道有這個(gè)內(nèi)存地址即可。
A:如用分散加載文件分配RAM故意預(yù)留一部分RAM不分配,用它來(lái)存您不需要初始化的東西?;蛘卟徽{(diào)用編譯器提供的啟動(dòng)代碼,不過(guò)這樣可能編程會(huì)麻煩一些。第22問(wèn):
Q:我直接通過(guò)JTAG口下載EasyArm板帶的Ext1_test程序到arm中,出現(xiàn)中斷向量的告警:
interruptvectorisnotcorrectarmisnotrunningfreely.
果然復(fù)位后芯片不能運(yùn)行。但是我用串口下載后芯片能正常工作,中斷也行的。
并且我用JTAG仿真的話,芯片能正常工作,中斷也行的,唯獨(dú)JTAG口下載不行。
不知道是什么原因
A:仿真器配置中要設(shè)置EraseFlashwhenneed.也可以這樣試試:
1.可以先打開(kāi)一個(gè)工程在RAM中調(diào)試運(yùn)行;
2.stop程序;
3.使用File->LoadImage…重新加載Ext1_test生成的*.axf文件。
Q:仿真器配置中我是設(shè)置了EraseFlashwhenneed,但照你說(shuō)的話,那不是在RAM下調(diào)試嗎
在RAM下調(diào)試我是可以的,但是下載后出現(xiàn)interruptvectordataisnotcorrect.
我又看了幾篇文章,是不是跟中斷向量表的累加和不為零有關(guān)系啊
A:是的,是向量表的累加和不為零。
因?yàn)槿绻肐SP下載能運(yùn)行,說(shuō)明向量表的累加和已為零,而用JTAG下載不能運(yùn)行的情況可能是沒(méi)有正常下載代碼。先在RAM中調(diào)試,目的是為了后面正確下載程序到FLASH.第23問(wèn):
Q:用Scatter怎樣將某個(gè)函數(shù)或文件定位在Flash的某個(gè)位置
第24問(wèn):
Q:我在仿真時(shí)遇到這樣的提示:
Error,Flashisprotectedbyuserconfigation!
怎么寫(xiě)到flash里面呢
A:看配套《arm微控制器基礎(chǔ)與實(shí)戰(zhàn)》附錄一。第25問(wèn):
Q:我在移植實(shí)驗(yàn)中想到了兩個(gè)問(wèn)題,如下:
1.Debug和Release以及DebugRel有什么不同,為什么在作2104移植實(shí)驗(yàn)時(shí),要用Release
2.在Release中為什么要將RWBase設(shè)置為0x40000040我將其設(shè)置為0x40003000,
為什么不能工作
A:都只是一個(gè)問(wèn)題,內(nèi)存空間的使用,因?yàn)榕躉S要比較大的內(nèi)存空間,所以要騰出點(diǎn)地方。第26問(wèn):
Q:請(qǐng)問(wèn)沒(méi)有MMU的arm芯片是否支持使用malloc()函數(shù)動(dòng)態(tài)分配內(nèi)存
A:是否支持malloc()函數(shù)與芯片沒(méi)有多大關(guān)系,主要與編譯器有關(guān)。
Q:再問(wèn):如果沒(méi)有操作系統(tǒng)支持呢
A:也支持。第27問(wèn):
Q:在I2C實(shí)驗(yàn)程序中,我想查看數(shù)據(jù)緩沖區(qū)DataBuf的值,怎么查看
A:watch窗口或鼠標(biāo)停留在要查看的變量名上。
Q:我查詢(xún)的是寫(xiě)入DataBuf緩沖區(qū)的值,鼠標(biāo)在上面根本就不會(huì)出現(xiàn)他的值,即使在watch中加入,結(jié)果也是"namenotfound".
A:變量被優(yōu)化,調(diào)試時(shí)可以把該變量定義為全局變量查看。第28問(wèn):
Q:仿真軟件和2104開(kāi)發(fā)板連接不上
DBEWarning00041:
!AnunspecifiedDebugToolboxcallfailed
電源和開(kāi)發(fā)板都連好,錯(cuò)誤和沒(méi)接開(kāi)發(fā)板一樣,驅(qū)動(dòng)也安裝了,安裝時(shí)按確定鍵時(shí),軟件很長(zhǎng)時(shí)間才有如上反應(yīng),請(qǐng)幫忙
A:1.并口是否正常
2.在其它操作系統(tǒng)(如98)下或其它臺(tái)式PC下試試。第29問(wèn):
Q:如何生成32位hex文件
我在ReleaseSetting->armfromELF->OutputFormat中設(shè)置為Intel32bitHEX,可是好像沒(méi)有生成hex文件
A:試試這種方法:
Target-->TargetSetting-->ostLink中選擇"armfromELF"加上你上面設(shè)的應(yīng)該不成問(wèn)題。第30問(wèn):
Q:請(qǐng)問(wèn)關(guān)于settings中r0baserwbase的意思
A:ro:readonly,rw:readandwrite.第31問(wèn):
Q:編譯成功后的信息第一行,code,R0data,RWdata,ZIdata,debug分別代表什么
A:R0只讀段,即程序代碼空間;
RW可讀/寫(xiě)段,即數(shù)據(jù)變量空間;
ZI清零變量段,即需要清零初始化的數(shù)據(jù)變量空間。第32問(wèn):
Q:如何在ADS里面看任務(wù)執(zhí)行的一些情況比如堆棧。
A:多任務(wù)環(huán)境下的堆棧,內(nèi)存等信息需要調(diào)試軟件的支持才可以實(shí)現(xiàn)。
ucos下有一個(gè)統(tǒng)計(jì)功能的模塊可以間接實(shí)現(xiàn)部分功能。第33問(wèn):
Q:請(qǐng)問(wèn)向flash燒數(shù)據(jù)時(shí)出現(xiàn):exceedsflashlimitation請(qǐng)予賜教!
A:要寫(xiě)入的flash地址超過(guò)了范圍。如果不是代碼太大的問(wèn)題,可以檢查scf文件是否正確。第34問(wèn):
Q:在LPC2214之類(lèi)的芯片中如何實(shí)現(xiàn)數(shù)組的絕對(duì)地址定位,比如51的_at_的用法。
A:*((char*)0x40000300)類(lèi)似訪問(wèn)
Q:謝謝,但這樣做就無(wú)須定義數(shù)組變量,訪問(wèn)也不便,還有高招嗎
A:可以使用分散加載。第35問(wèn):
Q:請(qǐng)問(wèn)ADS編譯錯(cuò)誤"L6221E:ExecutionregionER_ROoverlayswithExecutionregion
ER_ZI"該如何解決
A:請(qǐng)用我們網(wǎng)站上的工程模板試一試,最大的可能是因?yàn)槟愕腞ELEASE或者DEBUG選項(xiàng)里面沒(méi)有正確設(shè)置,按照參考《arm微控制器基礎(chǔ)與實(shí)戰(zhàn)》上面的設(shè)置,是不會(huì)有這個(gè)問(wèn)題的。第36問(wèn):
Q:請(qǐng)教一下:將程序?qū)懭雈lash,再用從JTAG方式調(diào)試寫(xiě)入之后再?gòu)?fù)位程序沒(méi)什么反映。看了很多以前的帖子,說(shuō)memmap寄存器要為1,我用的是一個(gè)很簡(jiǎn)單的控制led的例子,改動(dòng)了參數(shù)之后寫(xiě)入flash的。在這個(gè)程序的vectors中找不到關(guān)于memmap寄存器操作的部分啊,這是怎么回事,該怎么辦呢
A:《arm微控制器基礎(chǔ)與實(shí)戰(zhàn)》上附錄有"常見(jiàn)問(wèn)題",列舉了幾點(diǎn)程序?qū)懙紽LASH不能運(yùn)行的原因。memmap操作可以在target.c中的TargetResetInit()函數(shù)內(nèi)添加。第37問(wèn):
Q:HEX文件。EASY2100配套《arm微控制器基礎(chǔ)與實(shí)戰(zhàn)》上講
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 生態(tài)經(jīng)濟(jì)在農(nóng)業(yè)現(xiàn)代化的作用
- 現(xiàn)代文閱讀教學(xué)策略研究進(jìn)展匯報(bào)-探索教育新紀(jì)元
- 生產(chǎn)現(xiàn)場(chǎng)的人性化管理與實(shí)踐
- 現(xiàn)代辦公環(huán)境下的金融服務(wù)優(yōu)化
- 公路交通安全設(shè)施施工方案
- 2023三年級(jí)數(shù)學(xué)下冊(cè) 六 認(rèn)識(shí)分?jǐn)?shù)第4課時(shí) 分一分(二)(2)說(shuō)課稿 北師大版
- 2024年九年級(jí)語(yǔ)文下冊(cè) 第三單元 第11課 送東陽(yáng)馬生序說(shuō)課稿 新人教版001
- 2023四年級(jí)數(shù)學(xué)上冊(cè) 一 認(rèn)識(shí)更大的數(shù)第4課時(shí) 國(guó)土面積說(shuō)課稿 北師大版001
- Unit 2 Lesson 4 Againplease(說(shuō)課稿)-2024-2025學(xué)年魯科版(五四學(xué)制)(三起)英語(yǔ)五年級(jí)上冊(cè)001
- 《2 叢林之美-電子相冊(cè)制作》說(shuō)課稿-2023-2024學(xué)年清華版(2012)信息技術(shù)六年級(jí)上冊(cè)
- 每個(gè)孩子都能像花兒一樣開(kāi)放
- 2023年廣東省深圳市八年級(jí)下學(xué)期物理期中考試試卷
- 《詩(shī)詞寫(xiě)作常識(shí) 詩(shī)詞中國(guó)普及讀物 》讀書(shū)筆記思維導(dǎo)圖
- YS/T 34.1-2011高純砷化學(xué)分析方法電感耦合等離子體質(zhì)譜法(ICP-MS)測(cè)定高純砷中雜質(zhì)含量
- LY/T 2016-2012陸生野生動(dòng)物廊道設(shè)計(jì)技術(shù)規(guī)程
- 松下panasonic-視覺(jué)說(shuō)明書(shū)pv200培訓(xùn)
- 單縣煙草專(zhuān)賣(mài)局QC課題多維度降低行政處罰文書(shū)出錯(cuò)率
- 健康養(yǎng)生課件
- 混雜控制系統(tǒng)課件
- 運(yùn)動(dòng)技能學(xué)習(xí)原理課件
- 《QHSE體系培訓(xùn)》課件
評(píng)論
0/150
提交評(píng)論