面向嵌入式视频处理平台的Linux移植

[09-14 01:03:20]   来源:http://www.88dzw.com  电子制作   阅读:8806

文章摘要:LCD显示驱动程序主要包括:a)LCD驱动的文件结构:包括打开设备文件、设备文件其它操作、关闭设备文件等;b)LCD的打开:LCD设备以读写的方式打开;c)LCD设备的硬件初始化:包括注册LCD设备、卸载LCD设备等;d)LCD相关结构的设置:以获取显存起始地址、分别率、色深等;e)映射内存区的操作:包括初始化显存清零等,将摄像头采集到的图像数据读至显存处,以显示图像;f)LCD控制输出:包括得到命令、画水平线、画垂直线、画圆等;g)LCD的关闭。将上面的内容用程序实现,进行动态编译。通过后,将LCD驱动模块进行移植加载,一个完整的LCD驱动就开发完毕了。5.3 USB驱动程序开发与LCD设备

面向嵌入式视频处理平台的Linux移植,标签:电子小制作,http://www.88dzw.com

  LCD显示驱动程序主要包括:

  a)LCD驱动的文件结构:包括打开设备文件、设备文件其它操作、关闭设备文件等;

  b)LCD的打开:LCD设备以读写的方式打开;

  c)LCD设备的硬件初始化:包括注册LCD设备、卸载LCD设备等;

  d)LCD相关结构的设置:以获取显存起始地址、分别率、色深等;

  e)映射内存区的操作:包括初始化显存清零等,将摄像头采集到的图像数据读至显存处,以显示图像;

  f)LCD控制输出:包括得到命令、画水平线、画垂直线、画圆等;

  g)LCD的关闭。

  将上面的内容用程序实现,进行动态编译。通过后,将LCD驱动模块进行移植加载,一个完整的LCD驱动就开发完毕了。

  5.3 USB驱动程序开发

  与LCD设备不同,USB既不属于字符设备,也不属于块设备,而是一个新的设备类别,设计框架和流程如下:首先,提供一个“.o”的驱动模块文件,且在一开始就加载运行。USB驱动就会根据其类型向系统注册。注册成功后,系统会反馈一个主设备号,这个主设备号就是其唯一标识。USB驱动就是根据主设备号创建一个放置在/dev目录下的设备文件。要访问此硬件,可用open、read和write等命令访问相应的设备文件,驱动就会接收到相应的 read或write函数,根据模块中相对应的函数进行操作。驱动流程见图6。


  USB驱动的具体设计过程如下:

  a)USB驱动的注册。USB驱动程序在注册时会发送一个命令给函数register_chrdev,通常在驱动程序的初始化函数中。当USB 设备插入时,为了使linux-hotplug(Linux中USB等设备热插拔支持)系统自动装载驱动程序,需创建 MODULE_DEVICE_TABLE,在此过程中需将USB的主设备号传递给相应的函数。

  b)USB设备的打开。打开设备是通过调用file_operations结构中的函数open()来完成的。其主要完成的任务是:检查设备相关错误,如果是第一次打开,则初始化硬件设备;识别次设备号;使用计数增1。

  c)USB设备的释放。释放设备是通过调用file_operations结构中的函数release()来完成的。它的作用正好与open()相反,通常要完成这样的工作:使用计数减1,如果使用计算为0,则关闭设备。

  d)USB设备的控制信息与数据读写。USB设备驱动程序可以通过文件操作结构中的函数向应用程序提供对硬件进行控制的接口,同时读写操作也要通过此函数来完成。

  e)USB驱动的注销。当从系统卸载驱动程序时,需要注销USB设备,这样必须编写一个注销函数unregister_chrdev。

  6结束语

  本文基于TMS320DM*6平台实现了Linux移植,包括创建交叉编译环境、BootLoader的设计、Linux内核移植以及LCD、 USB设备驱动程序开发,为实时视频处理应用开发创建了一个良好的嵌入式平台,在此平台上可进一步进行应用程序、GUI及视频处理算法开发与测试。

www.88dzw.com

  3BootLoader的设计

  BootLoader即引导加载程序,是在操作系统内核运行之前运行的一段程序。它建立起操作系统运行的环境,包括初始化硬件、建立存储空间映射和传递给操作系统一些基本的配置参数等。因此,Bootloader是非常重要的组成部分,它独立于操作系统,必须由用户自己设计,而且其实现高度依赖于硬件。在系统存储的空间分配结构中BootLoader、内核启动参数、内核映像和根文件系统映像的关系如图4所示。


  BootLoader的作用是正确地调用内核来执行。系统开机后,执行的第1条指令是从Flash的0x00地址开始的,BootLoader 程序就是放在此。由于它是直接操作硬件且依据硬件环境不同而代码不同,所以适合用汇编语言写,以达到短小精悍执行效率高的目的;内核从Flash复制到 SDRAM时,采用C语言实现,能实现较复杂的功能,因此BootLoader的设计分为两个阶段。用汇编语言实现的放在第1阶段,主要完成硬件初始化,设置SDRAM,然后把Boot-Loader从Flash复制到SDRAM的起始地址,即2M处,最后内存重映射,Flash地址从0x00- 0xlff映射成0x1000000-0x11fff,SDRAM地址0x200000-0xllfff映射成0x00-0xfff,至此控制权交给了用 C语言实现的loaderkernel()函数,就进入了第2阶段。第2阶段是用C语言实现的,它主要完成内核从Flash到SDRAM的复制,然后控制权交给Kernel,流程如图5所示。这样设计代码会具有很好的可读性和可移植性。

上一页  [1] [2] [3] [4]  下一页


Tag:电子制作电子小制作维修教程知识 - 电子制作

《面向嵌入式视频处理平台的Linux移植》相关文章