Chinaunix首页 | 论坛 | 博客
  • 博客访问: 475233
  • 博文数量: 56
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 1957
  • 用 户 组: 普通用户
  • 注册时间: 2013-06-07 23:02
文章分类

全部博文(56)

文章存档

2016年(1)

2014年(7)

2013年(48)

分类: 嵌入式

2013-06-28 12:58:10

本博文为原创,未经本人同意,请勿转载

2.4 串口驱动程序的动态分析

串口驱动程序的动态分析主要分为两部分,第一部分是串口驱动程序的初始化,第二部分则是串口驱动程序的应用。

2.4.1 串口驱动程序的初始化

串口驱动程序的初始化主要包括一下几个部分。

l 硬件地址的设置(指定)。硬件地址的指定可以通过在函数库中直接指定相关变量的数值而达到目的,不一定非要执行相关的函数。如sysSerial函数库。因此它不需要函数调用过程来实现。

l 硬件的初始化。主要是通过函数执行向硬件的控制寄存器写入特定的数值来实现,通常需要函数指定的动态过程。

l 中断处理程序的安装。需要函数执行来安装。

l 各个函数库的初始化。主要是函数库中相关数据结构的初始化,一般需要动态执行和静态指定相结合来实现。

l 串口驱动程序数据结构的搭建。主要体现在数据结构

下面从vxWorks操作系统启动的过程来分析驱动程序的安装过程。先看图2.17。

图2.17 vxWorks操作系统启动过程中串口驱动的初始化过程(1)

图2.18 第一步初始化建立的数据关系

串口驱动程序的第二步初始化则是通过调用函数usrRoot函数来完成的。如图2.19。


图2.19 串口驱动程序的第二步初始化


图2.20 iosInit函数初始化iosLib库


图2.21 ttyDrvCreate运行完毕后形成的数据结构


表2.2给出了各个函数库的初始化过程。

表格 2  

函数库名称

初始化函数名称

说明

ioLib

无需初始化

iosLib

iosInit

参见图2.19

ttyDrv

无需初始化

tyLib

tyDevInit

i8250Sio

i8250HrdInit

i8250InitChannel

图2.17

sysSerial

sysSerialHwInit

图2.17

usrSerial

无需初始化


上面完整地分析了各个函数库的初始化、硬件的初始化、以及数据结构关系的构建,vxWorks操作系统在初始化过程中通过这三个过程,完成了串口驱动的初始化以及安装过程。

阅读(3836) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~

Alannnnnn2017-11-16 23:29:49

感谢博主的分析,请清晰!