新聞中心

EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > AT91SAM7S/7X ADS下調(diào)試指南

AT91SAM7S/7X ADS下調(diào)試指南

作者: 時(shí)間:2012-09-22 來(lái)源:網(wǎng)絡(luò) 收藏
關(guān)于AT91SAM7X256的開(kāi)發(fā)仿真,一直困擾著我們的客戶(hù),所以,我們?cè)诎偬氐膸椭?,終于搞清楚了具體調(diào)試開(kāi)發(fā)的注意事項(xiàng)。

我們要仿真,首先要知道內(nèi)部7X256的內(nèi)部RAM地址是多少,假如FLASH沒(méi)有任何程序的情況下,內(nèi)部的FLASH和RAM到底地址是多少,假如運(yùn)行應(yīng)用程序的情況下呢?
分析清楚了以上的問(wèn)題,就很快可以掌握開(kāi)發(fā)的步驟和仿真的環(huán)境了。

我們帶著這些疑問(wèn),首先應(yīng)該做的事情就是看懂DATASHEET中所說(shuō)的內(nèi)存影射的這個(gè)地方。

datasheet里相關(guān)的內(nèi)容略

以下是我對(duì)這個(gè)芯片MAPING的理解,無(wú)非是以下這三個(gè)東西的位置問(wèn)題:

[#ff0000]InternalROM,是芯片出廠就固化好的,應(yīng)用廠商無(wú)須關(guān)注,地址是在0X300000。只要知道GPNVMBit2決定了是從InternalROM啟動(dòng)或者從InternalFlash啟動(dòng)。

InternalRAM,在芯片復(fù)位到執(zhí)行REMAP指令前地址都是0X200000,執(zhí)行REMAP后,地址就變成了0X0。

InternalFlash,這里有一個(gè)問(wèn)題,要先說(shuō)明,就是說(shuō)應(yīng)用程序運(yùn)行一定要在0地址,才能運(yùn)行。GPNVMBit2就決定了系統(tǒng)復(fù)位后,是從InternalFlash這里運(yùn)行,還是從InternalROM這里運(yùn)行。當(dāng)然他在任何時(shí)候都有固定的地址:0X100000。那么在系統(tǒng)復(fù)位后直接執(zhí)行REMAP命令前,InternalFlash的地址都是0X0.[/#]

分析清楚后,我們就來(lái)說(shuō)仿真的事情,如果您要在FLASH里面仿真,直接將程序燒寫(xiě)到FLASH,就可以直接仿真了,因?yàn)槿魏螘r(shí)候,只要系統(tǒng)復(fù)位后,而且沒(méi)有執(zhí)行REMAP指令之前,F(xiàn)LASH的地址都是0X0。所以,即使你有中斷的程序也不怕(中斷向量一定要寫(xiě)到0X0)。

那么如何在RAM里面進(jìn)行應(yīng)用程序的仿真呢,就要說(shuō)清楚呢,因?yàn)镽AM地址只有是在REMAP之后才可以變成0X0。所以,在RAM中仿真應(yīng)該是這樣的,首先在編譯你應(yīng)用程序的時(shí)候,就要確定好了程序裝載到RAM中的地址,這里是0X200000,在1.2中有設(shè)置。然后,程序單步執(zhí)行初始化后,就會(huì)執(zhí)行REMAP指令,將0X200000的地址影射成0X0。這樣,你的中斷程序就可以運(yùn)行呢。

對(duì)于系列也好,AT91SAM7X系列也好,執(zhí)行REMAP指令,是這樣執(zhí)行的:
AT91C_BASE_MC->MC_RCR=1;//內(nèi)存重映射

經(jīng)過(guò)我們反復(fù)實(shí)驗(yàn),在調(diào)試AT91SAM7X256開(kāi)發(fā)板的時(shí)候,只有一個(gè)中間代理軟件是最好用的,這個(gè)就是由TWENTYONE先生開(kāi)發(fā)的H-JTAG軟件。


關(guān)鍵詞: AT91SAM7S ADS 調(diào)試指南

評(píng)論


相關(guān)推薦

技術(shù)專(zhuān)區(qū)

關(guān)閉