基于北斗二代的飞机除冰车定位系统设计
3.2 系统制作
本文引用地址:https://www.eepw.com.cn/article/201610/305617.htmLinux系统开发主要包括bootloader制作、Linux内核裁剪、字符设备驱动的添加及根文件系统的制作。
系统采用u-boot-1.1.6源码制作bootloader,主要完成对于硬件的初始化及运行代码的搬移工作,在u-boot的设计中,需使用软浮点交叉编译器进行编译;内核以Linux-2.6.31源码为基础进行裁剪编译,添加对于NAND FLASH、LCD等硬件及Yaffes2文件系统的支持,并添加DS18B20及A/D驱动程序;根文件系统采用Yaffes2文件系统进行制作,Yaffes2文件系统为专门针对NAND FLASH所设计的文件系统。
3.3 应用程序
应用程序主要实现TCP/IP连接及数据采集与发送。应用程序流程框图如图6所示。

程序采用多线程技术实现对于数据的采集与发送。在车载端上电后S3C2440A通过向串口发送AT指令实现车载端与上位机的连接。在连接成功后,线程启动开始工作。
程序定义一个全局变量buf[],用于存储、发送采集到的数据,并利用多线程技术实现对于buf[]的操作,通过信号量实现对于数据采集与发送的同步操作。首先初始化两个信号量:sere1和sere2。代码如下:
sem_init(sem1,0,1);
sem_init(sem2,0,0);
程序首先对sem1、sem2进行P操作,此时sem1=0,sem20,数据采集线程执行,对数据进行采集并放入全局变量buf[]中,而后对sem2进行V操作sem2=0,数据发送线程执行,将数据发送至上位机,并对sem1进行V操作,sem1变为1,此时重复执行之前的步骤对数据进行采集与发送。通过对线程的PV操作实现数据采集线程与发送线程对全局变量buf[]的顺序访问。
但由于GTM900B是以ASCII码的形式发送数据,因而在数据传输前需对数据进行格式转化。数据转换程序如下:
for(i=0;i2024;i++){
if(*g!=‘