• <li id="00i08"><input id="00i08"></input></li>
  • <sup id="00i08"><tbody id="00i08"></tbody></sup>
    <abbr id="00i08"></abbr>
  • 新聞中心

    EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于ARM體系的嵌入式系統(tǒng)BSP的程序設(shè)計(jì)

    基于ARM體系的嵌入式系統(tǒng)BSP的程序設(shè)計(jì)

    作者: 時(shí)間:2012-10-22 來源:網(wǎng)絡(luò) 收藏

    公司在32位RISC的CPU開發(fā)領(lǐng)域不斷取得突破,其結(jié)構(gòu)已經(jīng)從V3發(fā)展到V6。

    (Board SupPORT Package)板級(jí)支持包介于主板硬件和操作系統(tǒng)之間,其功能與PC機(jī)上的BIOS相類似,主要完成硬件初始化并切換到相應(yīng)的操作系統(tǒng)。是相對(duì)于操作系統(tǒng)而言的,不同的操作系統(tǒng)對(duì)應(yīng)于不同定義形式的,例如VxWorks的BSP和Linux的BSP相對(duì)于某一CPU來說,盡管實(shí)現(xiàn)的功能一樣,可是寫法和接口定義是完全不同的。另外,仔細(xì)研究所用的芯片資料也十分重要,例如盡管在內(nèi)核上兼容,但每家芯片都有自己的特色。所以這就要求BSP程序員對(duì)硬件、軟件和操作系統(tǒng)都要有一定的了解。

    本文介紹基于體系的嵌入式應(yīng)用系統(tǒng)初始化部分BSP的程序設(shè)計(jì)。本文引用的源碼全部是基于HMS320C7202芯片設(shè)計(jì),并已成功運(yùn)行。

    1 初始化過程

    盡管各種嵌入式應(yīng)用系統(tǒng)的結(jié)構(gòu)及功能差別很大,但其系統(tǒng)初始化部分完成的操作有很大一部分是相似的。的啟動(dòng)流程如圖1所示。

    1.1 設(shè)置入口指針

    啟動(dòng)程序首先必須定義指針,而且整個(gè)應(yīng)用程序只有一個(gè)入口指針。一般地,程序在編譯鏈接時(shí)將異常中斷向量表鏈接在0地址處,并且作為整個(gè)程序入口點(diǎn)。入口點(diǎn)代碼如下:

    ENTRY(_start) ;開始

    1.2 設(shè)置異常中斷向量表

    ARM要求中斷向量表必須放置在從0開始、連續(xù)8×4字節(jié)的空間內(nèi)。各異常中斷向量地址以及中斷的算是優(yōu)先級(jí)如表1:

    每當(dāng)一個(gè)中斷發(fā)生后,ARM處理器便強(qiáng)制把程序計(jì)數(shù)器(PC)指針置為向量表中對(duì)應(yīng)中斷類型的地址值。因?yàn)槊總€(gè)中斷向量?jī)H占據(jù)放置1條ARM指令的空間,所以通常放置1條跳轉(zhuǎn)指令或向程序計(jì)數(shù)器(PC)寄存器賦值的數(shù)據(jù)訪問指令,使程序跳轉(zhuǎn)到相應(yīng)的異常中斷處理程序執(zhí)行。如果異常中斷處理程序起始地址小于32MB,使用B跳轉(zhuǎn)指令;如果跳轉(zhuǎn)范圍大于32MB,使用LDR指令。


    上一頁(yè) 1 2 3 下一頁(yè)

    評(píng)論


    相關(guān)推薦

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

    關(guān)閉
    主站蜘蛛池模板: 常德市| 乐都县| 翁源县| 甘孜| 华亭县| 浙江省| 乌拉特中旗| 溧水县| 勃利县| 永和县| 佛坪县| 玉环县| 鹤峰县| 烟台市| 金川县| 台南市| 信阳市| 合作市| 威远县| 潜山县| 罗山县| 泸西县| 冷水江市| 孝昌县| 乐安县| 特克斯县| 上虞市| 清丰县| 都兰县| 苏州市| 沐川县| 汉中市| 乌拉特前旗| 南通市| 博兴县| 平安县| 正宁县| 盐山县| 乌海市| 辰溪县| 河源市|