ARM 基于嵌入式系统 倒车雷达的设计(3)
(5)开发用户空间(User)程序
3.1主程序框架
其主程序框架结构为:
ARM 基于嵌入式系统 倒车雷达的设计 论文
main()
{ char flag;
ChangeCloekDivider(1,l); //1:2:4
ChangeMPIIValue(Oxal,Ox3,Oxl);//FCLK=202.SMHz
Port_Init():
Uart_1nit(0,115200):
uart_seleet(o);(0)://系统初始化
while(l)
{
Vcatch(); //视频采集程序
distance(); //测距子程序,测出的距离是全局变量定义为d1stance if(d1stanee<=5)
{flag=2;}
if(d1stanee<=3)
{flag=1;}
if(d1stanee<1.5)
{flag=0;} //从大到小判断
switeh(flag)
{
Case0:显示();break;//这段用来显示距离小于1.5米时的提示
casel:显示();break;//这段用来显示距离小于等于3米时的提示 case2:显示();break;//这段用来显示距离小于等于5米时的提示 default:break:
} } }
3.2图像视频的采集与播放
采用实时图像视频具有直观生动、快速便捷、内容丰富的特点,便于司机及 时详尽掌握周围的环境,做出准确的判断。在这里使用USB摄像头作为本系统 的图像采集器件。市场上销售的摄像头品牌很多,采用的主控芯片和传感器种类 千差力一别。我们使用的摄像头是主控芯片型号为中芯微公司的ZC301摄像头通过璐B接口与AT91RM9200通信,ARM经过相应的数据处理,通过液晶屏实时显示。
程序的编写主要包括USB的驱动程序、摄像头的视频捕获与处理、LCD显示。
3.2.1 USB摄像头的组成
USB摄像头由主控芯片和传感芯片组成。主控芯片负责图像压缩以及主机通 信。传感器芯片负责图像采集,现有的两种传感器类型分别是CMOS和CCD。在 我们的系统中,摄像头连接到嵌入式模块,首先完成图像的采集以及压缩过程,
ARM 基于嵌入式系统 倒车雷达的设计 论文
然后通过USB接口,把图像传输到系统中,并保存在HAND闪存上。USB摄像头 驱动主要是对主控芯片进行控制。
USB摄像头的驱动开发分为两部分。首先,完成S3C241OUSB主机控制器驱 动移植,其次完成USB摄像头设备端驱动移植。
3.2.2 USB主机控制器驱动程序移植流程
53C24IOAUSB主机控制器是一个标准的 USBOHCI主机控制器,支持低速和高 速两种USB数据传输。在 53C24IOA支持两个HUB下行端口,用于连接USB设备。 USB驱动程序由主控制器驱动、USB核心驱动和USB设备驱动程序组成。内核本身带有前面两个驱动程序,而我们要做的则是USB设备驱动的开发。
USB核心子程序连接USB设备驱动和主控制器驱动,对应着各种寄存器以及功能定义了一些数据结构、宏和功能函数。从而为硬件处理提供下层接口,USB 设备驱动提供上层接口。这样能够很好的抽象化硬件部分。下层接口包括读取并 解析USB设备描述符,配置描述符,为USB设备分配唯一的地址,使用默认的配 背来配置设备;_仁层接口则包括USB命令的请求,连接设备与相应的驱动程序, 转发设备驱动程序的数据包等。
由于S3C2410AUSB主机控制器完全符合OHCI规范,因而仅需要修改少量代 码即可完成主控制器驱动、USB核心驱动移植工作,具体流程如下:
(l)删除冗余代码,由于S3C241OAUSB主机控制器中不包含PCI接口,因此要删除usb_ochi.c中关于PCI接口的代码,该代码段对 USB HUB有影响。
(2)寄存器地址设置,S3C24lOAUSB主机控制器寄存器ohci→regs=Ox49000000。
(3)根HUB数目设置,#de2
(4)注册端口。标准的SMDK241O开发板内核文件中并没有打开USB设备端口,因此需要添加该端口。在mach一smdk24lO.C文件添加static
struct s3c24lO_hcd_info usb_sbc2410_info数据结构。
(5)初始化USB接口,在mach一smdk24lO.c文件添加int
usb_sbc24l0_init(void)完成接口的初始化。
作为Linux内核驱动的重要组成部分,USB得到了LinuX良好的支持,这就 为我们的移植工作提供了极大的方便。完成代码修改后,就可以在内核配置中添 加USB驱动的配置选项了。配置程序见附件。
重新编译、运行内核时,在串口反馈信息中会显示USB主控制器驱动程序、 核心子程序成功加载。
3.2.3 USB摄像头设备驱动的开发
在Linu kernel源码目录中driver/USb/usb_skeleton.c提供了一个最基 础的USB驱动程序,我们称为USB骨架。通过它仅需要修改极少的部分,就可以 完成一个USB设备的驱动。我们的USB驱动开发也是从它开始的。USB驱动程序结构如下:
Static struct usb_driver skel_driver={
.name=”skeleton”
ARM 基于嵌入式系统 倒车雷达的设计 论文
.probe=skel_probe
.diseonneet=skel_diseonneet
foPs=&skel_foPs
m1nor=USB_SKEL_MINOR_BASE
.id_table=skel_table
};
该结构指明了USB设备驱动所要做的工作,具体内容如下:
(l)在驱动模块加载的时候,向USB核心子系统注册,并告诉子系统需要支持的设备。
(2)在卸载USB设备驱动程序向USB核心子系统注销。
(3)当获支持的设备插入或拔出的时候,调用哪些功能。
在初始化函数中,USB设备驱动调用usb_register函数进行注册。驱动模块从系统卸载,调用注销函数usb_unregister。
首先,我们需要定义一个数据结构,其中一个包括图片信息、采集模式、解码方式。USB驱动程序会提供一些相关信息,例如这个驱动程序支持哪种设备,当被支持的设备从系统插入或拔出时,会有哪些动作。所有这些信息都将传送到USB子系统中,完成USB摄像头的注册功能的代码见附件。
系统启动时,首先需要加载各种驱动模块,然后向系统注册了生产厂商号码 (VendorID)和产品号 (ProductID)。当USB设备连接到主机上,系统会检测它的vendorID和 ProductID,如果与驱动模块的注册内容匹配,则将该驱动程序与设备挂接起来,当插入摄像头时,系统会调用zc301_Proble函数,参数dev指定了设备信息,probe函数验证所有可选配置的有效性,并调用usbvide模块的Sbvideo_Regis_terVideoDeviee()函数向videodev系统注册。当系统完成驱动注册后,调用static int ze301_init(struct usb_ze301*zc301)和 static void zc3O1_start(struetusb_301*zc301)函数完成对设备的初始化过程:填写各个寄存器值、启动摄像头。系统运行到这一步,基本完成了对摄像头驱动加载及设备初始化。接下来需要通过读取用户设定的图像规格,其中包括:图像格式、分辨率、颜色深度、对比度和亮度等参数。这些函数都是通过以下函数实现的: Statie_ul6zc301_getbrightness(struetusb_ze3OI*zc301):
Statie_ul6zc301_geteontrast(struetusb_ze3OI*ze301):
Static_ul6zc301_getcolors(str。 ctusb_zc3OI*ZC3OI):
在得到这些参数值后。再调用一套函数,实现参数的设置。每个参数设置函 数和之前的参数取值函数是一一对应的。具体函数如下:
Statievoidzc301_setbrightness(Struetusb_zc301*zc301);
StatiCvoidzc301_setContrast(Struet。Sb_zc301*zc301):
Statievoidzc301I_setcolors(Struetusb_zc301*zc301)
通过调用上面的函数,我们基本得到了所需的参数值,这样我们就可以启动 摄像头了。当然我们还需要Static void zc301_shutdow(struct
相关推荐:
- [专业资料]《蜜蜂之家》教学反思
- [专业资料]过去分词作定语和表语1
- [专业资料]苏州工业园区住房公积金贷款申请表
- [专业资料]保安管理制度及处罚条例细则
- [专业资料]2018年中国工程咨询市场发展现状调研及
- [专业资料]2015年电大本科《学前教育科研方法》期
- [专业资料]数字信号处理实验 matlab版 离散傅里叶
- [专业资料]“十三五”重点项目-虎杖白藜芦醇及功
- [专业资料]2015-2020年中国竹木工艺市场需求及投
- [专业资料]国际贸易理论与实务作业五:理论案例分
- [专业资料]财政部修订发布事业单位会计制度
- [专业资料]BCA蛋白浓度测定试剂盒(增强型)
- [专业资料]工程进度总计划横道图模板(通用版)
- [专业资料]七年级地理同步练习(天气与气候)
- [专业资料]X光安检机介绍火灾自动报警系统的组成
- [专业资料]衢州市人民政府办公室关于印发衢州市区
- [专业资料]经济全球化及其影响[1]
- [专业资料]质粒DNA限制性酶切图谱分析
- [专业资料]国家安全人民防线工作“六项”制度
- [专业资料]劳动力投入计划及保证措施
- 电子账册联网监管培训手册
- 人教版语文七年级上第1课《在山的那边
- 对我区担保行业发展现状的思考与建议
- 平面四边形网格自动生成方法研究
- 2016年党课学习心得体会范文
- 如何设置电脑定时关机
- 全球最美人妖排行榜新鲜出炉
- 社会实践调查报告及问卷
- Visual Basic习题集
- 《鱼我所欲也》课件2
- 浙江省会计从业资格考试试卷
- 全遥控数字音量控制的D 类功率放大器资
- 鞍钢宪法与后福特主义
- 电表的改装与校准实验报告(1)
- 2014年高考理科数学真题解析分类汇编:
- Windows 7 AIK 的使用
- 风电场全场停电事故应急处置方案
- 化工原理选填题题库(下)
- 关于产学研合作教育模式的学习与思考
- 西安先锋公馆项目前期定位报告




