基于北斗二代的飛機除冰車(chē)定位系統設計
3.2 系統制作
本文引用地址:http://dyxdggzs.com/article/201610/305617.htmLinux系統開(kāi)發(fā)主要包括bootloader制作、Linux內核裁剪、字符設備驅動(dòng)的添加及根文件系統的制作。
系統采用u-boot-1.1.6源碼制作bootloader,主要完成對于硬件的初始化及運行代碼的搬移工作,在u-boot的設計中,需使用軟浮點(diǎn)交叉編譯器進(jìn)行編譯;內核以L(fǎng)inux-2.6.31源碼為基礎進(jìn)行裁剪編譯,添加對于NAND FLASH、LCD等硬件及Yaffes2文件系統的支持,并添加DS18B20及A/D驅動(dòng)程序;根文件系統采用Yaffes2文件系統進(jìn)行制作,Yaffes2文件系統為專(zhuān)門(mén)針對NAND FLASH所設計的文件系統。
3.3 應用程序
應用程序主要實(shí)現TCP/IP連接及數據采集與發(fā)送。應用程序流程框圖如圖6所示。

程序采用多線(xiàn)程技術(shù)實(shí)現對于數據的采集與發(fā)送。在車(chē)載端上電后S3C2440A通過(guò)向串口發(fā)送AT指令實(shí)現車(chē)載端與上位機的連接。在連接成功后,線(xiàn)程啟動(dòng)開(kāi)始工作。
程序定義一個(gè)全局變量buf[],用于存儲、發(fā)送采集到的數據,并利用多線(xiàn)程技術(shù)實(shí)現對于buf[]的操作,通過(guò)信號量實(shí)現對于數據采集與發(fā)送的同步操作。首先初始化兩個(gè)信號量:sere1和sere2。代碼如下:
sem_init(sem1,0,1);
sem_init(sem2,0,0);
程序首先對sem1、sem2進(jìn)行P操作,此時(shí)sem1=0,sem20,數據采集線(xiàn)程執行,對數據進(jìn)行采集并放入全局變量buf[]中,而后對sem2進(jìn)行V操作sem2=0,數據發(fā)送線(xiàn)程執行,將數據發(fā)送至上位機,并對sem1進(jìn)行V操作,sem1變?yōu)?,此時(shí)重復執行之前的步驟對數據進(jìn)行采集與發(fā)送。通過(guò)對線(xiàn)程的PV操作實(shí)現數據采集線(xiàn)程與發(fā)送線(xiàn)程對全局變量buf[]的順序訪(fǎng)問(wèn)。
但由于GTM900B是以ASCII碼的形式發(fā)送數據,因而在數據傳輸前需對數據進(jìn)行格式轉化。數據轉換程序如下:
for(i=0;i2024;i++){
if(*g!=‘国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放