新闻中心

EEPW首页 > 汽车电子 > 设计应用 > 车载网络系统硬件及其驱动的设计

车载网络系统硬件及其驱动的设计

作者:时间:2009-12-25来源:网络收藏

3.2CAN控制器程序的设计
Linux下程序的编写有特定的规以及一些必要的模块,init_module模块是程序中用来加载设备的,系统初始化时调用。此处用 arm9200_mcp2510_init()作为CAN总线驱动程序的入口函数,他将主要完成对MCP2510初始化,调用 register_chrdev()函数向系统注册字符型设备驱动程序,使用request_irq()函数为CAN总线的中断处理程序。根据传递CAN 数据的要求,设计了如下的数据结构予以存放一帧数据和对接收缓冲区进行管理: Typedef struct{ unsigned int id; / * CAN网络中节点的标志符 * / unsigned char data[8]; / * 要传的数据,最大为8个字节 * / unsigned char dlc; / * 发送的数据长度 * / int IsExt; / * 判断消息是否为扩展帧 * / }candata; Typedef struct{ Candata MCP2510_Candata[128]; / * 定义一个接收缓冲区 * /
int nCanRevpos; / * 数据存入缓冲区的位置指针 * / int nCanReadpos; / * 数据读出的位置指针 * / int loopbackmode; wait_queue_head_t wq; spinlock_t lock; }MCP2510_DEV;
数据结构file_operations是驱动程序中一个重要的数据结构,内核就是通过这个结构来访问驱动的。应用程序通过对_read()、_write()、_ioctl()函数调用驱动中相应的程序来读写数据和控制字符设备的工作。
3.3 串口驱动程序的设计串口驱动程序采用查询方式,主要包括串口初始化函数、数据接收函数和数据发送函数。串口初始化函数USIinit()主要是用来设置USART工作是的参数,用户应用程序可以通过调用数据接收函数RevUSData()对接收到的函数进行各种处理。USART的数据接收和发送都是一个主动的过程,因此此函数的设计较为简单。数据发送函数SendUSData()类似于数据接收函数,可以被用户程序调用。
3.4 LCD控制器驱动程序的设计 在驱动LCD设计过程中首要的是要配置LCD控制器,而在配置LCD控制器时最重要的则是

本文引用地址:http://www.eepw.com.cn/article/197765.htm

指定帧缓冲区(FrameBuffer)。帧缓冲设备对应的设备文件是/dev/fb*,数据结构如下: Static struct file_operations fb_fops={ ower:THIS_MODULE, read:fb_read, write:fb_write, ioctl:fb_ioctl, mmap:fb_mmap, open:fb_open,
}
其中的函数对具体的硬件进行操作,对寄存器进行设置,对显示缓冲进行映射。初始化函数首先初始化LCD控制器,在Linux中可以用kmalloc()函数动态分配连续LCD显示缓冲区。接着就是初始化一个fb_info结构,补充成员变量,调用register_framebuffer( fb_info),将fb_info注册入内核。结构fb_info的成员函数: struct fb_ops{
int (*fb_get_fix)(struct fb_fix_screeninfo *fix, int con, struct fb_info *info); int (*fb_get_var)(struct fb_var_screeninfo *var, int con, struct fb_info *info); int (*fb_set_var)(struct fb_var_screeninfo *var, int con, struct fb_info *info);
}

4结束语
本文详细介绍了嵌入式系统的底层硬件和驱动程序的设计并成功地完成了硬件与软件的调试。本文作者创新点:此网络系统极大地减少了电控装置数,节省了粗大线束占用的汽车宝贵空间资源以及实现了汽车内部电子仪表间的数据共赏、通信与处理,从而提高了汽车的安全性能。


上一页 1 2 3 下一页

评论


相关推荐

技术专区

关闭