基于A(yíng)RM的2M測試系統
3系統軟件設計
本文引用地址:http://dyxdggzs.com/article/82975.htm軟件部分主要由啟動(dòng)代碼的設計和應用程序的設計,基于ARM是復雜的片上系統(SOC),這種復雜系統里的多數硬件模塊都是可配置的,需要由軟件來(lái)設置其需要的工作狀態(tài)。因此在用戶(hù)的應用程序啟動(dòng)之前,需要有專(zhuān)門(mén)的一段啟動(dòng)代碼來(lái)完成對系統的初始化。由于這類(lèi)代碼直接面對處理器內核和硬件控制器進(jìn)行編程,一般都是用匯編語(yǔ)言寫(xiě)的。啟動(dòng)代碼就是完成各種初始化工作,并引導進(jìn)入C程序。
3.1 bootloader設計
啟動(dòng)代碼[5]的主要實(shí)現功能包括以下部分:
(1)設置程序入口指針;
(2)設置中斷向量表;
(3)初始化存儲器系統;
(4)初始化CPU各種模式的堆棧和寄存器;
(5)初始化目標系統中要使用的各種片內外設;
(6)初始化用戶(hù)程序執行環(huán)境;
(7)引導主應用程
具體實(shí)現的部分代碼如下:
AERA Init, CODE,READONLY
ENTRY ;定義入口點(diǎn)
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和時(shí)鐘
BL initmem ;初始化存儲器
BL initstack ;設置堆棧
… …
… …
… …
B main ; 跳轉到主應用程序
3.2應用程序的設計
應用程序采用C語(yǔ)言編寫(xiě),由其實(shí)現本系統中所需的各種功能。根據系統功能需求,軟件劃分為以下模塊:液晶顯示模塊、測試設置模塊、測試指標計算模塊等部分。軟件設計思想是利用S3C2410的中斷控制整個(gè)軟件的流程。共使用4個(gè)硬件中斷來(lái)完成系統的功能:一個(gè)內部硬件定時(shí)中斷,3個(gè)外部硬件中斷(鍵盤(pán)中斷、串口中斷、E1測試中斷)。主程序流程圖如圖2所示。
評論