位置:51电子网 » 技术资料 » 其它综合

车载信息系统的软件设计

发布时间:2008/12/31 0:00:00 访问次数:498

  本文介绍车载信息系统的软件设计,主要包括两个方面的内容:一是基于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数据格式

  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的操作包括:

  ·串口

  本文介绍车载信息系统的软件设计,主要包括两个方面的内容:一是基于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数据格式

  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的操作包括:

  ·串口

相关IC型号

热门点击

 

推荐技术资料

罗盘误差及补偿
    造成罗盘误差的主要因素有传感器误差、其他磁材料干扰等。... [详细]
版权所有:51dzw.COM
深圳服务热线:13692101218  13751165337
粤ICP备09112631号-6(miitbeian.gov.cn)
公网安备44030402000607
深圳市碧威特网络技术有限公司
付款方式


 复制成功!