基于ARM的2M測試系統
3系統軟件設計
本文引用地址:http://www.104case.com/article/82975.htm軟件部分主要由啟動代碼的設計和應用程序的設計,基于ARM是復雜的片上系統(SOC),這種復雜系統里的多數硬件模塊都是可配置的,需要由軟件來設置其需要的工作狀態。因此在用戶的應用程序啟動之前,需要有專門的一段啟動代碼來完成對系統的初始化。由于這類代碼直接面對處理器內核和硬件控制器進行編程,一般都是用匯編語言寫的。啟動代碼就是完成各種初始化工作,并引導進入C程序。
3.1 bootloader設計
啟動代碼[5]的主要實現功能包括以下部分:
(1)設置程序入口指針;
(2)設置中斷向量表;
(3)初始化存儲器系統;
(4)初始化CPU各種模式的堆棧和寄存器;
(5)初始化目標系統中要使用的各種片內外設;
(6)初始化用戶程序執行環境;
(7)引導主應用程
具體實現的部分代碼如下:
AERA Init, CODE,READONLY
ENTRY ;定義入口點
B SYS_RST_HANDLER ;系統上電復位操作
B UDF_INS_HANDLER ;處理未定義中斷模式
B SWI_SVC_HANDLER ;處理軟件中斷
B INS_ABT_HANDLER
B DAT_ABT_HANDLER ;處理中止異常
B .
B IRQ_SVC_HANDLER ;處理IRQ 中斷
B FIQ_SVC_HANDLER ;處理FIQ中斷
SYS_RST_HANDLER
MSR R0, CPSR ;禁止中斷
ORR R0,R0,#0XC0
MSR CPSR_C,R0
BL initcpu ;調整PLL和時鐘
BL initmem ;初始化存儲器
BL initstack ;設置堆棧
… …
… …
… …
B main ; 跳轉到主應用程序
3.2應用程序的設計
應用程序采用C語言編寫,由其實現本系統中所需的各種功能。根據系統功能需求,軟件劃分為以下模塊:液晶顯示模塊、測試設置模塊、測試指標計算模塊等部分。軟件設計思想是利用S3C2410的中斷控制整個軟件的流程。共使用4個硬件中斷來完成系統的功能:一個內部硬件定時中斷,3個外部硬件中斷(鍵盤中斷、串口中斷、E1測試中斷)。主程序流程圖如圖2所示。
評論