由于某些 ARM 內(nèi)核的設(shè)計(jì)限制,部分 ARM 內(nèi)核的某些 cache 操作、某些 CP15 寄存器讀寫(xiě)操作,不能通過(guò) JTAG 鏈完成操作。這種情況下, FoxICE 仿真器 會(huì)下載一段完成相應(yīng)操作的指令序列到目標(biāo)板的 RAM 中,并運(yùn)行。下載地址即為用戶所指定的“ CP15 Access Address ”。
FoxICE 仿真器對(duì)這塊 RAM 的要求是:
• 長(zhǎng)度至少 64 字節(jié)
• 可讀寫(xiě)
• 應(yīng)用程序不能使用這塊 RAM
• RDI 驅(qū)動(dòng)缺省使用從 0x50 開(kāi)始的 64 字節(jié) RAM
如果調(diào)試以下這些 ARM 內(nèi)核, Cache 已經(jīng)打開(kāi),或調(diào)試器需要讀寫(xiě) CP15 寄存器,必須指定合理的“ CP15 Access Address ”:
CPU 類型 |
Cache 已經(jīng)打開(kāi) |
讀寫(xiě) CP15 寄存器 |
ARM920T |
√ |
√ |
ARM922T |
√ |
|
ARM925T |
|
√ |
ARM940T |
√ |
√ |
ARM946 |
√ |
√ |
ARM966 |
|
√ |
ARM968 |
|
√ |
一般目標(biāo)板在上電后, Flash 或 Boot ROM 是可以立即讀寫(xiě)的;某些 ARM 內(nèi)核的處理器,片內(nèi)的 SRAM 也是可以立即讀寫(xiě)的;但多數(shù)片外的 SRAM 、 SDRAM 等 RAM 則需要對(duì)相應(yīng)的控制器進(jìn)行初始化,然后才可正確讀寫(xiě)。這些初始化操作,一般在 boot 代碼中完成。
如果用戶所調(diào)試的程序,將會(huì)在運(yùn)行過(guò)程中打開(kāi) cache ,那么調(diào)試器連接目標(biāo)板時(shí),需要指定合適的“ CP15 Access Address ”。推薦用戶指定連接目標(biāo)板時(shí),就已經(jīng)可讀寫(xiě)的 RAM ;如果無(wú)法滿足,則可以指定在 cache 打開(kāi)之前可用的 RAM ,即使這塊 RAM 在連接時(shí)還未初始化。