新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > TQ2440國嵌學(xué)院gboot-設(shè)定CPU為svc模式

TQ2440國嵌學(xué)院gboot-設(shè)定CPU為svc模式

作者: 時間:2016-11-26 來源:網(wǎng)絡(luò) 收藏
通過之前學(xué)習(xí)設(shè)定ARM的中斷向量表,完成基本框架的設(shè)計,下面開始設(shè)定CPU到SVC模式(這里是指32位模式)。

同樣是在ARM Architecture Reference Manual手冊中,Exceptions的子目錄下,找到對應(yīng)的Reset模式:

本文引用地址:http://2s4d.com/article/201611/321974.htm



關(guān)鍵部分我已標(biāo)注紅色,可以看到CPSR[4:0]=0b10011 ,通過備注我們可以知道通過設(shè)定CPSR寄存器的0-4位可以設(shè)定CPU進(jìn)如SVC模式。CPSR寄存器的第6、7位是關(guān)閉快速中斷和中斷,在bootloader啟動時同樣關(guān)閉。也就是CPSR[0:7]=0b11010011=0xd3。代碼如下:

reset:
bl set_svc//在reset下添加跳轉(zhuǎn)指令bl,使用bl能夠保留當(dāng)前的地址到R14寄存器中,以便執(zhí)行完子程序后返回

set_svc://這里是32位處理器,因此命令如下
mrs r0, cpsr//將cpsr寄存器裝載到r0寄存器
bic r0, r0, #0x1f//bic完成位清除,將r0的后5位置0
orr r0, r0, #0xd3//將r0與0xd3(0b1101 0011)
msr cpsr, r0//重新將r0裝載到cpsr中
mov pc, lr//返回到程序中

學(xué)習(xí)總結(jié):

通過查詢資料可以得到上面的一些信息,可以說明查詢手冊是十分重要,通過閱讀手冊中的一些注釋得到想要的信息,其次掌握好指令的用法,對每一條指令都能掌握含義。



評論


技術(shù)專區(qū)

關(guān)閉