SMARTARM2200調試初體驗

發(fā)布時(shí)間:2016-8-10 13:39    發(fā)布者:designapp
關(guān)鍵詞: SMARTARM2200
去年8月購買(mǎi)了ZLG的SmartARM2000,因為工作的原因,一直沒(méi)能抽空學(xué)習,到了春節前后終于可以抽空學(xué)習ARM了。我在互動(dòng)出版社購買(mǎi)了一批書(shū)籍,希望能ARM快速入門(mén)并盡快提高。

開(kāi)始進(jìn)行ARM理論學(xué)習,我是參考ZLG的《ARM嵌入式系統基礎教程》,同時(shí)我又溫習了下C51的知識,希望在A(yíng)RM中學(xué)習中能把C51也靈活掌握。

接著(zhù)就是用SmartARM2000開(kāi)發(fā)板做實(shí)驗,需要安裝ARM開(kāi)發(fā)環(huán)境,具體步驟可參見(jiàn)本人的《ARM學(xué)習進(jìn)階(1)-ARM開(kāi)發(fā)環(huán)境的配置》。按配套實(shí)驗教程《ARM嵌入式系統實(shí)驗教程(二)》的要求完成了第二章的基礎實(shí)驗,由于是直接運行配套光盤(pán)的DEMO源程序,每個(gè)實(shí)驗都是針對某個(gè)功能部件,所以都比較順利。后來(lái)試著(zhù)自己編了幾個(gè)程序來(lái)同時(shí)實(shí)現幾個(gè)不同部件功能,結果也還滿(mǎn)意。

為了在SmartARM2000上做基于UC/OS-II的實(shí)驗,還需要UC/OS-II 2.52的源代碼。我找出2002年買(mǎi)的《嵌入式實(shí)時(shí)操作系統UC/OS-II(邵貝貝譯)》配套光盤(pán),里面正好有UC/OS-II 2.52的源代碼,這樣開(kāi)發(fā)環(huán)境也具備了。按實(shí)驗教程運行DEMO源程序,運行正常。自己也試著(zhù)編寫(xiě)OS系統,運行基本達到預期。

用SmartARM2000開(kāi)發(fā)板我進(jìn)行了配套教程第2~4章的實(shí)驗內容,也按自己的設想完成了多個(gè)實(shí)驗,對ARM的性能有了進(jìn)步的了解。但是實(shí)驗中也遇到些莫名的問(wèn)題至此仍然不解,ZLG的技術(shù)支持也沒(méi)能給出滿(mǎn)意的答復,希望能解惑的大俠能抽空給予解答:

(1)JP1-ISP、JP9-OUTSIDE/INSIDE、JP10-BANK0/1設置都正確的情況下,以前在外部RAM調試方式下能正常運行的程序突然不能運行了,可這程序在外部FLASH調試方式下正常運行,用LPC2294進(jìn)行內部FLASH脫機運行也正常;然后某天再用SmartARM2000開(kāi)發(fā)板調試時(shí),即使在外部RAM調試方式下也能正常運行了。這樣我折騰了半個(gè)多月都沒(méi)弄明白,后來(lái)也是莫明其妙的恢復正常的。

(2)UC/OS-II 操作系統實(shí)驗時(shí),連續創(chuàng )建4個(gè)任務(wù)就運行不正常,將其中一個(gè)任務(wù)放在另一個(gè)任務(wù)中創(chuàng )建就都正常了。

出錯的程序

:

OSTaskCreate(Task1,(void *)0, &TaskStk1[TaskStkLength-1],1);

OSTaskCreate(Task2,(void *)0, &TaskStk2[TaskStkLength-1],2);

OSTaskCreate(Task3,(void *)0, &TaskStk3[TaskStkLength-1],3);

OSTaskCreate(Task4,(void *)0, &TaskStk4[TaskStkLength-1],4);

:

正確的程序

:

OSTaskCreate(Task2,(void *)0, &TaskStk2[TaskStkLength-1],2);

OSTaskCreate(Task3,(void *)0, &TaskStk3[TaskStkLength-1],3);

OSTaskCreate(Task4,(void *)0, &TaskStk4[TaskStkLength-1],4);

:

void Task2(void *pdata)

{ :

OSTaskCreate(Task1,(void *)0, &TaskStk1[TaskStkLength-1],1);

:

}

在用SmartARM2000開(kāi)發(fā)板陸續進(jìn)行的調試中,我也有些心得和體會(huì ),特記錄與此供大家分享:

(1)需定義向量表,配置總線(xiàn)(特別是PINSEL2),初始化堆棧;

(2)通訊波特率計算 UxDLM,UxDLL=Fplk/(16*baud),設置波特率時(shí)需將UxLCR的D7位-DLAB置位,退出中斷前必須讀取UxIIR來(lái)清除中斷;

(3)外部中斷有高/低電平觸發(fā)和上升/下降邊沿觸發(fā)等不同方式,退出外部中斷前要清除標識EXINT;

(4)利用工程模板建立工程后,需修改設置系統模式堆棧處的代碼為“MSR CPSR_C,#0x5F”才能使能中斷;

(5)ISP前需先編譯生成*.HEX文件;

(6)WDT需在外部FLASH或內部FLASH下脫機運行方可啟用;

(7)重映射的效果只有當MEMMAP=0x02時(shí)才能觀(guān)察到;

(8)PWM在某些場(chǎng)合可以作為DAC使用;

(9)UC/OS-II 要合理分配任務(wù)的優(yōu)先級;

(10)ZLG的中間件挺不錯的,可以調用和學(xué)習。
本文地址:http://selenalain.com/thread-171773-1-1.html     【打印本頁(yè)】

本站部分文章為轉載或網(wǎng)友發(fā)布,目的在于傳遞和分享信息,并不代表本網(wǎng)贊同其觀(guān)點(diǎn)和對其真實(shí)性負責;文章版權歸原作者及原出處所有,如涉及作品內容、版權和其它問(wèn)題,我們將根據著(zhù)作權人的要求,第一時(shí)間更正或刪除。
您需要登錄后才可以發(fā)表評論 登錄 | 立即注冊

關(guān)于我們  -  服務(wù)條款  -  使用指南  -  站點(diǎn)地圖  -  友情鏈接  -  聯(lián)系我們
電子工程網(wǎng) © 版權所有   京ICP備16069177號 | 京公網(wǎng)安備11010502021702
快速回復 返回頂部 返回列表
午夜高清国产拍精品福利|亚洲色精品88色婷婷七月丁香|91久久精品无码一区|99久久国语露脸精品|动漫卡通亚洲综合专区48页