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