教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 文库大全 > 专业资料 >

ARM 基于嵌入式系统 倒车雷达的设计(3)

来源:网络收集 时间:2026-09-06
导读: (5)开发用户空间(User)程序 3.1主程序框架 其主程序框架结构为: ARM 基于嵌入式系统 倒车雷达的设计 论文 main() { char flag; ChangeCloekDivider(1,l); //1:2:4 ChangeMPIIValue(Oxal,Ox3,Oxl);//FCLK=202.SMH

(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

ARM 基于 …… 此处隐藏:3384字,全部文档内容请下载后查看。喜欢就下载吧 ……

ARM 基于嵌入式系统 倒车雷达的设计(3).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wenku/53195.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)