基于SOPC技術(shù)的便攜式定位系統(tǒng)設(shè)計(jì)
3 接收終端軟件實(shí)現(xiàn)
接收終端軟件開發(fā)在集成開發(fā)環(huán)境Nios II IDE中進(jìn)行,主要完成定位數(shù)據(jù)的采集和與監(jiān)控中心的通信。
3.1 軟件開發(fā)環(huán)境Nios II IDE
Nios II IDE是Nios II軟核處理器的主要開發(fā)工具,它基于開放和可擴(kuò)展的Eclipse平臺(tái),為軟件開發(fā)提供了一個(gè)完整的C/C++設(shè)計(jì)開發(fā)環(huán)境,它包括一個(gè)具有工程管理、源代碼開發(fā)、基于JTAG調(diào)試功能的圖形用戶界面(GUI),借助于HAL(Hardware Abstraction Layer,硬件抽象層)可以用類似C語言的庫函數(shù)來訪問硬件設(shè)備或文件[3],縮短軟件開發(fā)周期。
3.2 HAL系統(tǒng)庫
HAL(Hardware Abstraction Layer,硬件抽象層)系統(tǒng)庫可以為嵌入式軟件開發(fā)人員訪問底層硬件提供簡單的設(shè)備驅(qū)動(dòng)接口,NIOS II軟核處理器支持HAL,其為用戶提供了以下支持:與ANSI C集成的標(biāo)準(zhǔn)庫-提供類似C語言的標(biāo)準(zhǔn)庫函數(shù);設(shè)備驅(qū)動(dòng),提供訪問系統(tǒng)中的每個(gè)設(shè)備的驅(qū)動(dòng)程序;HAL API,提供標(biāo)準(zhǔn)的接口程序如設(shè)備訪問、中斷處理等;系統(tǒng)初始化和設(shè)備初始化,提供main( )函數(shù)之前處理器和系統(tǒng)外圍設(shè)備的初始化?;贖AL的系統(tǒng)層次如圖2所示。
3.3 接收終端軟件開發(fā)
根據(jù)系統(tǒng)的功能,軟件設(shè)計(jì)流程圖如3所示。
3.3.1 終端初始化程序設(shè)計(jì)
終端初始化主要是在系統(tǒng)上電時(shí)完成硬件配置文件的下載,系統(tǒng)初始化和設(shè)備初始化等。使用main( ) 函數(shù),HAL系統(tǒng)庫能自動(dòng)初始化系統(tǒng)。但自動(dòng)初始化屏蔽了底層操作,一些沒有用到的設(shè)備驅(qū)動(dòng)程序也進(jìn)行了初始化,增加了程序代碼長度和降低了系統(tǒng)效率,ANSI C標(biāo)準(zhǔn)提供了一個(gè)供用戶自由初始化系統(tǒng)的函數(shù)alt_main( ),用戶可以在該函數(shù)中自由初始化系統(tǒng)而代替main( )的自動(dòng)初始化,本系統(tǒng)的alt_main( )函數(shù)如下:
int alt_main(void)
{ alt_irq_init (ALT_IRQ_BASE); //允許中斷,初始化中斷
small_sys_init( ) //初始化設(shè)備驅(qū)動(dòng)
alt_io_redirect (ALT_STDOUT, ALT_STDIN, ALT_STDERR); //初始化IO數(shù)據(jù)流
exit(0); }
圖2 基于HAL的系統(tǒng)層次
圖3 軟件設(shè)計(jì)流程圖
3.3.2 定位數(shù)據(jù)的采集程序設(shè)計(jì)
評論