车载信息系统的软件设计

时间:2008-12-30

  本文介绍车载信息系统的软件设计,主要包括两个方面的内容:一是基于Linux的驱动程序设计;二是应用软件程序设计。

  1 相关驱动说明

  车载信息系统的操作系统Linux内核通过设备驱动程序与外围设备进行交互,设备驱动程序是一组数据结构和函数,它们通 过定义的接口控制一个或多个设备。对用户程序而言,设备驱动程序隐藏了设备的具体细节,对各种不同设备提供一致的接 口,通常是把设备映射为一个特殊的设备文件。

  (1)LCD驱动程序设计

  帧缓冲是Linux为显示设备提供的一个接口,是把显存抽象后的一种设备。帧缓冲设备属于字符设备,采用“文件层-驱动 层”的接口方式。在文件层次上,Linux为其定义了file-perations结构:

     

  帧缓冲驱动设计步骤如下:

  ①编写初始化函数:初始化函数首先初始化LCD控制器,设置显示模式和显示颜色数,然后分配LCD显示缓冲区。在Linux下 可通过kmallo函数分配一片连续的空间。本系统采用的LCD显示方式为640*480,16位彩色。需要分配的显示缓冲区大小为 640*480*2个字节,缓冲区通常分配在片外SDRAM中,起始地址保存在LCD控制器寄存器中。初始化一个fb_info结构, 填充其中的成员变量,并调用函数register_framebuffer()将fb_info登记入内核。

  ②编写结构fb_info中函数指针fb_ops对应的成员函数:对于嵌入式系统,只需要以下3个函数:

    

  驱动程序编写完成后,可将其编译为动态加载模块,或者静态地编译入内核中。

  (2)CAN总线驱动程序设计

  CAN驱动的功能是处理所有总线上的报文发送和接收。报文发送时,首先将报文装载到正确的报文缓冲器和控制寄存器中 ,通过读取相应的寄存器可以检查通信状态和错误。任何CAN总线上检测到的报文都会进行错误检测,然后与用户定义的滤 波器进行匹配,以确定是否将其转移到接收缓冲器中。

  CAN总线驱动程序完成的报文发送、接收等任务都是围绕CAN总线控制器展开的,因此驱动程序主要是对控制器内部寄存器 进行操作。在Linux多任务操作系统中,CAN总线通信程序的设计可分为发送数据、接收数据和中断处理3个模块来实现。CAN 驱动程序软件结构图如图1所示。


 图1 CAN驱动程序软件结构图

  2 模块程序设计

  (1)GPS模块设计思路

  GPS模块主要完成车辆位置信息的采集、处理与存储,因此本节的软件设计也就基于这几个方面进行。该模块软件设计的基 本思想为:首先接收完整的NMEA0183语旬,然后提取相关的数据,如时间、经纬度、速度等,再将这些数据显示或者发送出 去,并且保存方便以后查询。

  模块的软件由主程序、数据接收和处理子程序、按键中断服务子程序构成,主程序流程图如图2所示,数据接收和处理子程 序完成数据的接收和截取有用数据。

  (2)GPS数据格式

 图2 GPS模块主程序流程图 GPS25-LVC输出的数据是以美国国家海洋电子协会NMEA0183 ASCII码接口协议为基础的,该标准的全部定义在《NMEA0183  Version3.0》中有说明。本车载信息系统中选用GPS25-LVC串口1输出的NMEA0183语句。NMEA0183输出语旬多达十余种,任 意一种定位语旬都包含一定的定位数据,由于以“$GPRMC”开头的语句包含了本系统所需要的所有定位信息,所以需要研 究该类型。该类型定位数据的各个符号位的定义如下所示:

  $GPRMC,<1>,2>,<3>,<4>,<5>,<6>,<7>,<8>,<9>,<10>,<11>,*hh,<CR><LF>,

  上面各部分的具体含义如下:

  ·$GPRMC:定位语句起始标志;

  ·<1>:协调世界时UTC(hhmmss);

  ·<2>:GPS定位状态指示,A为有效定位,V为无效定位;

  ·<3>: 纬度 (ddmm.mmmm);

  ·<4>:纬度标志,N为北纬,S为南纬;

  ·<5>: 经度 (dddmm.mmmm);

  ·<6>:经度标志,E为东经,W为西经;

  ·<7>:相对于地面的速度(000.0~999.9),单位为海里;

  ·<8>:轨道相对于地面的夹角(000.O°~359.9°);

  ·<9>: utc H 48(ddmmyy);

  ·<10>:磁偏方向,E为东偏,W为西偏;  

  ·*hh:总校验和标志;                                                                                                                                                                           图2 GPS模块主程序流程图

  ·<CR><LF>:语旬中止符。

  每一条完整的信息都通过串口接口,程序设计中,对串口1的操作包括:

  ·串口1的初始化:设置串口1通信方式为8位数据位,1位停止位,无奇偶校验位,波特率为4800bps;

  ·一帧一帧接收ASCII码字符信息;

  ·对每一帧ASCII码字符信息进行数据处理。

  串口数据通信的程序流程如图3所示。


 图3 串口数据通信的程序流程图

  (3)人机交互界面设计

  车载信息系统的主界面形式规划如下:系统主界面

  应用程序为上层的开发,其交互界面直接通过MiniGUI图形系统的API接口函数实现。MiniGUI屏蔽了对底层显示、输入 设备编程的细节,这样可以缩短编程投入时间。

  MiniGUI程序的入口点为MiniGUlmain,maln函数己经在MiniGUI的函数库中定义,此函数在进行一些MiniGUI的初始化工作 后调用MiniGUlMain函数,然后调用CreateM ainWi ndow函数创建系统主界面并显示程序的主窗口,终进入消息循环。

  系统主界面如图4所示。


 图4 系统主界面

  欢迎转载,信息来源维库电子市场网(www.dzsc.com


  
上一篇:高通和低通宽带滤波器
下一篇:带通滤波器的应用电路

免责声明: 凡注明来源本网的所有作品,均为本网合法拥有版权或有权使用的作品,欢迎转载,注明出处。非本网作品均来自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。

相关技术资料