由于本系统选用芯片已集成了LCD控制器,所以只要选择合适的 LCD显示屏即可。系统选择SHARP公司的LQ080V3DG01显示屏。 LQ080V3DG01是一款 TFT-LCD显示模块,它由彩色TFT-LCD模板、驱动电路、控制电路、电源电路和背光单元组成,显示分辨率为RGB640×480,具备3.3V和 5V两种供电方式。 3驱动程序设计
车载网络系统的软件由三部分组成:实时操作系统、硬件驱动程序和运行于操作系统、 10/100M以太网USB存储设备、 USB鼠标、 USB键盘、 GPRS/CDMA、 GPS 之上的应用程序。实时操作系统采用源码公开的linux操作系统。硬件驱动程序主要为USB设备驱动、CAN控制器驱动、串口驱动和LCD控制器驱动。
3.1 USB设备驱动程序的设计
Linux的USB内核子系统中,提供了几个与设备驱动程序开发直接相关的核心数据结构,定义于内核源代码的<linux/usb.h>中。限于篇幅,下面只讨论在 Linux下设计一个典型 USB设备驱动程序的通用架构流程。
static struct usb_device_id usb_demo_ids[ ] ={{USB DEVICE(venderid ,productid) } }/ * 用于识别设备的信息* / struct usb_demo_dev{struct usb_device usbdev ; / *指向相对应的特定USB设备*/ struct urb usbdev_irq ; / *用于中断端点处理的URB * / } ;
static struct file_operations usb_demo_fops = { / * 设备文件操作函数集*/ owner :THIS_MODULE read :usb_demo_read ; / * 从设备读数据函数 * / write :usb_demo_ write; / * 向设备写数据函 * / ioctl :usb_demo_ioctl ;/ * 控制设备状态函数* / open :usb_demo_open; / * 打开设备函数 * / release :usb_demo_release ; / * 释放设备函数 * /
}; static struct usb_driver usb_demo_driver = {probe : probe_demo ; / * 设备初始化函数 * / disconnect : disconnect_demo ; / * 设备卸载函数 * / fops : usb_demo_fops ; / * 设备文件操作函数集 * / static int init usb_demo_init (void) {usb_regester (&usb_demo_driver) ; / * 注册一个USB设备* /
} 以上即为Linux中一个典型USB设备驱动程序的框架,通常包含设备初始化、设备卸载、设备打开、设备释放以及对设备进行读、写、控制等部分,是一种相对固定的格式。