ARM公司在32 位RISC 的CPU開發領域不斷取得突破,其結構已經從V3發展到V6。BSP( Board Support Package )板級支持包介於主板硬體和作業系統之間,其功能與PC機上的BIOS 相類似,主要完成硬體初始化並切換到相應的作業系統。BSP是相對於作業系統而言的,不同的作業系統對應於不同定義形式的BSP,例如VxWorks 的BSP和Linux 的BSP相對於某一CPU來說, 儘管實現的功能一樣, 可是寫法和接口定義是完全不同的。另外,仔細研究所用的晶片資料也十分重要, 例如儘管ARM在內核上兼容, 但每家晶片都有自己的特色。所以這就要求BSP程式設計師對硬體、軟體和作業系統都要有一定的了解。
本文介紹基於ARM體系的嵌入式應用系統初始化部分BSP的程序設計。本文引用的源碼全部是基於HMS320C7202晶片設計,並已成功運行。
1 ARM開發教程之初始化過程
儘管各種嵌入式應用系統的結構及功能差別很大, 但其系統初始化部分完成的操作有很大一部分是相似的。嵌入式系統的啟動流程如圖1 所示。
1.1 設置入口指針
啟動程序首先必須定義指針, 而且整個應用程式只有一個入口指針。一般地, 程序在編譯連結時將異常中斷向量表連結在0 地址處,並且作為整個程序入口點。入口點代碼如下:
ENTRY( _start ) ;開始
1.2 ARM 開發教程之設置異常中斷向量表
ARM要求中斷向量表必須放置在從0 開始、連續8×4位元組的空間內。各異常中斷向量地址以及中斷的算是優先級如表1: