新聞中心

        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://www.104case.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)閉
        主站蜘蛛池模板: 沧源| 乌海市| 湖南省| 红河县| 平武县| 广德县| 华宁县| 永清县| 汝阳县| 五峰| 双辽市| 周口市| 孟州市| 莱芜市| 清新县| 蒙阴县| 肇东市| 洮南市| 黔西| 富宁县| 利川市| 阿拉善左旗| 河源市| 全南县| 平顶山市| 濉溪县| 崇信县| 新余市| 乌什县| 肇源县| 威宁| 克东县| 西乡县| 乐亭县| 黄平县| 宝坻区| 林西县| 高淳县| 二连浩特市| 铜川市| 鹤庆县|