您好,  [请登录] [QQ登录]  [支付宝登录[免费注册]

商品分类

分享到: 百度搜藏 搜狐微博 新浪微博 腾讯微博 QQ收藏 人人网 Facebook Twitter

基于Linux/Qtopia的车载温度网络征求

发布日期:2011-04-12

引 言
    本文在嵌入式Linux平台上实现了车载信息征求体系的一部分——汽车惯例温度的数据征求,如征求车内温度、暧风或空调温度、车外温度、水箱温度等。DSl8820是一种可组网单总线数字温度传感器,为信息征求提供了经济有效的可行方案。嵌入式Linux以其源码开放、容易定制和扩展、多硬件平台支持和内置网络结果等精良性能,垂垂成为车载配置广泛利用的体系平台。本文涉及的体系利用三星公司的S3C2410AL一20处理惩罚处罚器,利用体系采取2.6.8.1内核Linux,GUI采取Trolltech公司的Qtopia;结果上紧张实现:各路温度的征求表现、音频报警、温度数据的存储、干系结果设置等。当须要语音提示或报警时,应用步调调用语音模块;当须要存储或表现汗青数据时,应用步调调用SD存储模块。

1 Linux体系开辟概述
    驱动步调的开辟是嵌入式Linux开辟的紧张任务之一。配置驱动为上层应用步调提供控制硬件的配置接口,同时直接与Linux内核打交道。图1形貌了Linux体系开辟框架。

    应用步调开辟是嵌入式Linux开辟的另一个紧张任务。Qt/Embedded是驰名Qt库开辟商Trolltech公司开辟的面向嵌入式体系的Qt版本。Qtopia是在Qt/Em—bedded库的底子上,专门针对PDA、Smart—Phone这类运行嵌入式Linux的移动配置和手持配置所开辟的开放源码的一套应用步调包和开辟库。它包括全套的个人私家私乡信息办理PIM(Personal Information Management),如地点本、日程摆设、MPEG播放、图像表现、欣赏器等。

2 车载信息体系及硬件平台概述
   
车载信息征求体系开辟紧张包括用户界面开辟,内核开辟,音频模块筹划,串口模块筹划,CAN总线模块筹划,车辆状态(又包括开关量、仿照量、数字量等)检测模块筹划等。
    本筹划侧重实现一线制温度网络的数据征求。一线制温度网络的温度信号特点是:数值不高,多在0~100℃范畴内;温度信号变革较慢;体系对征求到的温度信号的及时性恳求不高;精度恳求不高。
    一线网络的长处在于能丈量大量的物理量,全部的通讯都通过一线协议,而与被测的细致量无关。一线网络是可以大概方便地搭建起由一线传感器芯片构成的一系列丈量环境参数的网络。
    DSl8B20是一种可组网的单总线数字温度传感器,具有以下结果特点:
    ①适应宽的电压范畴(3.O~5.5 V),在寄生电源要领下可由数据线供电。
    ②独特的单线接口要领,DSl8820在与微处理惩罚处罚器连接时仅须要1条口线即可实现微处理惩罚处罚器与DSl8820的双向通讯。
    ③温度范畴为一55~+125℃,在一10~+85℃时精度为±0.5℃。
    ④可编程的辨别率为9~12位,映射的可辨别温度分别为0.5℃、O.25℃、O.125℃和0.062 5℃,可实现较高的精度测温。
    单总线使得硬件开销极小,但须要相对巨大的软件举行补偿。由于DSl8B20采取单总线串行数据发送,包管严格的读写时序成为测温关键,因此没有采取I/0驱动,而是单独编写一线制温度网络驱动。
    本筹划采取寄生电源连接要领,12位辨别率。寄生电源的长处为:长途温度检测无需本地电源;缺少正常电源条件下也可以读ROM。为确保DSl8820在其有效更脱期内得到富裕的电源电流,在I/O线上通过MOSFET提供强的上拉(如图2所示)。当利用寄生电源要领时,VDD引脚必须连接到地。
    体系内核控制器S3C2410X是三星公司基于ARM920T核的芯片。S3C2410X集成了1个LCD控制器(支持STN和TFT带有触摸屏的液晶表现屏)、SDRAM、触摸屏、USB、SPI、SD和MMC等控制器,4个具有PWM结果的计时器和1个内部时钟,8通道的10位ADC,117位通用I/O口和24位外部克制源,8通道10位AD控制器,处理惩罚处罚器变乱频率最高到达203 MHz。体系表现采取SHARP 3.5 in的TFT_LCD液晶表现屏。体系框图如图2所示。

3 驱动实现
    本节将实现一线制温度传感器网络的驱动模块。驱动从总体上看分为两部分:驱动与内核接口层、硬件配置接口层。
3.1 驱动与内核接口层
   
驱动与内核接口层紧张完成驱动模块在Linux内核的注册加载、卸载打扫变乱。这部分变乱分别由初始化和退出函数完成。

    ①初始化函数完成驱动模块加载:

   
3.2 硬件配置接口层
   
硬件配置接口层用来形貌驱动步调与配置的交互。这些变乱通过假造文件体系与配置驱动步调的接话柄现。这个接口由file_operation布局定义,其布局如下:


3.2.2 读接口函数
   
用户步调实行读利用的时间大概没有可以读取的数据,此时须要让read利用等待直到有数据可以读取。在此采取等待行列步队使进程在无数据读取时进入等待,数据到达时唤醒。等待行列步队设置成一个循环缓冲区,每放入一个新数据作为缓冲区的头,存放时间最久还未被取走的数据为缓冲区的尾。

  
3.2.3 fasync异步关照函数
    异步关照函数向进程发送SIGIO信号,关照访问配置的进程,表现配置已经准备好I/O读写了,克制主动查问,进步步调屈从。利用异步关照需增长一个struct


3.2.4 poll体系调用利用接口函数
    当步调须要举行对多个文件读写时,要是某个文件没有准备好,则体系就会处于读写壅闭的状态,影响其他文件的读写。为了克制读写壅闭,利用poll函数。要是配置无壅闭地读,就返回POLLIN;通常的数据已经准备好,可以读了,就返回POLLRDNORM。


    写接口函数用来关照驱动。比喻关照驱动读取通道2的数据,在应用步调中实行写接口函数write(fileno,&SLOT2,1),驱动设置当前读通道号为2。
    至此完成驱动接口函数。此驱动属于字符配置驱动,将源步调放在driver/ehar目次下。同时须要修改该目次下的Kconfig配置文件并添加Config 18820_S3C2410选项,修改driver/char/Makefile,添加obj一$(CC)NFIG_18B20 S3C2410)+=S3C2410_18820.O。着末重新配置内核,将驱动以模块情势添加到内核,如许就可以编译驱动了。

4 Qtopia应用步调筹划
    (1)创建工程

    起首利用QT Designer筹划器创建一个窗体应用步调ThermometerFigure.ui。窗体步调创建好后根据须要添加窗体控件、槽函数、信号等。图3为ThermometerFigure类的实现框图。

    (2)ThermometerFigure类实现
    利用uic东西孕育孕育产生相应的*.cpp和*.h文件(窗体类的实现文件和头文件)。编辑*.cpp和*.h文件实现各成员函数、信号槽的连接。细致实现如图3所示。
    (3)创建main及初始化
    起首创建main.cpp文件,并在main.cpp中创建QApplication东西。QApplication类认真求像用户界面应用步调的控制流和主设置,对全部来自体系和其他源文件的变乱举行处理惩罚处罚和调理;还包括应用步调的初始化和结束。


    实行qmake下令天生Makefile文件,实行之前要设置干系的环境变量,编译器路径等。
    qmake一o Makefile Thermometer.pro
    (5)编译链接工程
    实行make下令,将天生目标二进制文件Thermometer,此文件即可在配置上运行。

    (6)将可实行文件颁发到Linux体系
   
将可实行文件添加到Qtopia的根文件体系中,将天生的新的根文件体系烧写到配置的Flash根文件体系区,如许就可以在桌面运行步调了。图4为ThermometerFigure类实现界面。

结 语
    本文先容了车载信息体系开辟的部分实现要领。通过实例报告了Linux的开辟进程,包括驱动开辟和应用步调开辟流程。创新点在于将一线制传感器网络引入车载信息征求体系,大大简化了线路布局,有很高的实用价格。