版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第八部分嵌入式驱动开发TX-2440A
嵌入式视频教程更多资料请登录
出品:天祥电子网址:第十九讲Linux字符设备驱动第十九讲Linux字符设备驱动嵌入式设备驱动概述字符设备驱动框架GPIO驱动程序设计实例中断处理和同步机制嵌入式设备驱动概述驱动程序设计是嵌入式Linux开发中重要的一部分,也是比较困难的一部分需要熟悉Linux的内核机制、驱动程序与用户级应用程序的接口需要考虑系统对设备的并发操作需要非常熟悉所开发硬件的工作原理嵌入式设备驱动概述预备知识:应用程序、库、内核、驱动程序的关系设备类型主设备号与从设备号设备文件驱动程序与应用程序的区别用户态与内核态Linux驱动程序功能嵌入式设备驱动概述应用程序、库、内核、驱动程序的关系 应用程序调用应用程序函数库完成功能 应用程序以文件形式访问各种资源 应用程序函数库 部分函数直接完成功能部分函数通过系统调用由内核完成
内核处理系统调用,调用设备驱动程序设备驱动直接与硬件通信嵌入式设备驱动概述设备类型字符设备对字符设备发出读/写请求时,实际的硬件I/O操作一般紧接着发生块设备块设备与之相反,它利用系统内存作为缓冲区网络设备网络设备是一类特殊的设备,它不像字符设备或块设备那样通过对应的设备文件节点访问,也不能直接通过read或write进行数据访问请求主设备号和从设备号在设备管理中,除了设备类型外,内核还需要一对被称为主从设备号的参数,才能唯一标识一个设备主设备号相同的设备使用相同的驱动程序从设备号用于区分具体设备的实例cat/proc/devices可以查看系统中所有设备对应的主设备号设备文件设备类型、主从设备号是内核与设备驱动程序通信时使用的应用程序使用设备文件节点访问对应设备每个主从设备号确定的设备都对应一个文件节点每个设备文件都有其文件属性(c或者b)每个设备文件都有2个设备号(主,从)设备文件的主设备号必须与设备驱动程序在登记时申请的主设备号一致系统调用是内核与应用程序之间的接口设备驱动程序是内核与硬件之间的接口驱动程序与应用程序的区别应用程序以main开始驱动程序没有main,它以一个模块初始化函数作为入口应用程序从头到尾执行一个任务驱动程序完成初始化之后不再运行,等待系统调用应用程序可以使用GLIBC等标准C函数库驱动程序不能使用标准C库用户态与内核态驱动程序是内核的一部分,工作在内核态应用程序工作在用户态数据空间访问问题无法通过指针直接将二者的数据地址进行传递系统提供一系列函数帮助完成数据空间转换 copy_from_user copy_to_userLinux驱动程序功能对设备初始化和释放把数据从内核传送到硬件和从硬件读取数据读取应用程序传送给设备文件的数据和回送应用程序请求的数据检测和处理设备出现的错误Linux字符设备驱动框架file_operations结构体规定了驱动程序向应用程序提供的操作接口实现函数:open当应用程序打开设备时对设备进行初始化release关闭设备时处理关闭操作read从硬件读取数据并交给应用程序write从应用程序接收数据送到硬件ioctl为应用程序提供对硬件行为的控制Linux字符设备驱动框架驱动初始化:Linux在加载内核模块时会调用初始化函数staticint__intXXXX_init(void)使用register_chrdev向内核注册驱动程序驱动退出:Linux在卸载内核模块时会调用退出函数staticvoid__exitXXXX_exit(void)使用unregister_chrdev从内核中卸载驱动程序Linux字符设备驱动框架将驱动程序模块注册到内核
内核需要知道模块的初始化函数和退出函数,才能将模块放入自己的管理队列中module_init(XXXX_init)向内核声明当前模块的初始化函数module_exit(XXXX_exit)向内核声明当前模块的退出函数中断处理申请中断:request_irq()释放中断:free_irq()禁止单个中断:disable_irq()允许单个中断:enable_irq()禁止所有中断:local_irq_disable()允许所有中断:local_irq_enable()同步机制当多个进程、线程同时访问一个资源时,可能导致错误。内核需要提供并发控制机制,对公共资源的访问进行同步控制,确保共享资源的安全访问。Linux同步机制:自旋锁(spinlock),信号量(semaphore),读写锁(rwlock),顺序锁(seqlock),RCU(Read-CopyUpdate)第八部分嵌入式驱动开发TX-2440A
嵌入式视频教程
出品:天祥电子网址:第二十讲其他类型设备驱动块设备驱动网络设备驱动Framebuffer驱动音频设备驱动第二十讲其他类型设备驱动块设备数据传输以块为单位(扇区)块设备与文件系统息息相关块设备与字符设备仅在内核内部管理时二者有差异,内核/驱动之间的接口上有差异,为用户提供的操作方法和方式是相同的常见的块设备SD卡、硬盘、Flash块设备注册块设备registerblkdev()注销块设备unregister_blkdev()块设备驱动数据结构:structblock_device_operations块设备在linux系统中,提供了MTD(MemoryTechnologyDevice,内存技术设备)系统来建立Flash针对linux的统一、抽象的接口引入MTD后,linux系统中的Flash设备驱动及接口可分为4层:设备节点MTD设备层MTD原始设备层硬件驱动层MTD驱动分析MTD驱动分析网络设备驱动Linux网络设备驱动层次结构为:网络协议接口层网络设备接口层设备驱动功能层网络设备与媒介层网络设备驱动网络设备驱动intregister_netdev(structnet_device*dev)voidunregister_netdev(structnet_device*dev)net_device结构体存储了一个网络接口的重要信息,是网络驱动的核心Linux网络各层之间的数据传送都是通过sk_buff进行的sk_buff是LinuxTCP/IP协议栈中用于管理数据缓冲的结构,它在数据包的发送和接收中起着重要作用Framebuffer驱动FrameBuffer帧缓冲Linux抽象出FrameBuffer这个设备来供用户态进程实现直接写屏。Framebuffer机制模仿显卡的功能,将显卡硬件结构抽象掉,可以通过Framebuffer的读写直接对显存进行操作。用户可以将Framebuffer看成是显示内存的一个映像,将其映射到进程地址空间之后,就可以直接进行读写操作,而写操作可以立即反应在屏幕上。音频设备驱动音频设备本质上是一种字符型设备Linux内核中包含两大音频体系:OSS和ALSAALSA--AdvancedLinuxSoundArchitecture高级linux声音体系。OSS--OpenSoundSystem
音频设备驱动I2S(Inter—ICSound)总线是飞利浦公司为数字音频设备之间的音频数据传输而制定的一种总线标准,该总线专责于音频设备之间的数据传输,广泛应用于各种多媒体系统S3C2440内置一个IIS总线控制器,该控制器实现了到一个外部8/16位立体声AudioCodecIC的接口支持IIS数据格式和左对齐数据格式此控制器包含FIFO,支持DMA传输模式音频设备驱动UDA1341是Philips公司生产的一款音频芯片,提供标准的IIS接口,可直接和S3C2440的IIS引脚连接提供L3接口作为控制接口提供麦克风和扬声器接口提供线性数字音量调节提供重低音增强处理功能支持16b、18b、20b数据输入音频设备驱动L3接口
用来对声音处理单元进行编程或系统特性包含三根信号/数据线:L3DATA:串行数据传输线L3MODE:地址/数据模式选择线L3CLK:串行时钟信号线第九部分QT图形界面开发TX-2440A
嵌入式视频教程
出品:天祥电子网址:第二十一讲QT及Qtopia介绍嵌入式GUI简介
QT概述QT/X11的安装
Qtopia简介第二十一讲QT及Qtopia介绍GUI(GraphicUserInterface)UNIX环境下的图形窗口标准为:XWindowsSystemXServerGraphicLibraryToolkitsWindowMangerI18NLinux的GUI架构XServerClient/Server架构,XClient就是我们在X上执行的软件,XServer则是负责显示、传递使用者输入事件(包括键盘鼠标的输入)GraphicLibrary(底层绘图函数库)实现画点、画线、画圆、上色等高阶函数Toolkits
将构成窗口的抽象组件(Widget)抽离出来,重新定义一个更高阶的函数库。如QT,GTK+Linux的GUI架构WindowManger
负责不同窗口间的沟通、协调(如窗口的切换、放大、缩小等)桌面环境提供一整套图形界面下使用的程序,如应用程序,办公软件,浏览器,文件管理器等I18N(Internationalization)
解决国际化问题Linux的GUI架构QtopiaCore(Qt/Embedded)MiniGUIMicroWindowsTiny-X嵌入式GUIMiniGUI是一种面向嵌入式系统的图形用户界面支持系统,是国内做的较好的自由软件之一.跨操作系统支持多汉字输入法支持轻型、占用资源少高性能、高可靠性可配置性MiniGUIMicroWindows(2005年更名为Nano-XWindow)是一个基于客户/服务器体系结构的GUI系统.其主要特色是提供了类似XWindow的客户/服务器体系结构并提供了相对完善的图形功能.MicroWindowsMicroWindows作为XWindow的替代品,可以使用更少的存储空间(100KB-600KB)和RAM提供与XWindow相似的功能MicroWindows可移植性好,基本上用C语言实现,只有某些关键代码使用了汇编以提高速度.MicroWindowsTiny-XTiny-X实际上是XFree86Project的一部分,由SuSE公司赞助,XFree86Project核心团队的KeithPackard开发.Tiny-X的目标是可以在小内存或几乎无内存的情况下良好运行.QT概述QT的版本和历史Qt是Trolltech公司最早也是最有名的产品,它最初是作为一个跨平台(Win32、Mac、Unix)的C++GUI库开发的,但随着它的发展,其中增加了一系列与GUI无关的库,如Thread、Socket、XML等等,现在Qt已经成为了一个通用的C++跨平台类库。Qt的版本号分为三部分,例如4.5.3。大版本号之间会有很大的不同,通常类库的结构会进行很大的调整,因此在大版本号发生变化时,新的Qt库无法与原来的程序保持源码级兼容。中间版本号的变化通常会引入新的类库和组件,但现有类库的结构一般不会改变。小版本号的变化通常是错误修正,一般会保证二进制兼容。QT概述Qt的授权分为两条路线,商业版本和开源版本。
如果使用商业版的Qt,那么开发出的程序可以是私有的和商业的。
如果使用的是开源版的Qt,由于其使用的是GPL协议,那么可发出的程序也必须遵循GPL协议。QT概述Qt是一个全面的C++应用程序开发框架。Qt包含一个类库和用于跨平台开发及国际化的工具。Qt类库QtDesignerQtLinguistQtAssistantQT概述Qt类库是一个拥有超过400个C++类,同时不断扩展的库。它封装了用于端到端应用程序开发所需要的所有基础结构。同时还集成数据库,网络,XML,国际化,OpenGL等等。QtDesigner是一个功能强大的GUI布局与窗体构造器,能够快速开发高性能的用户界面。QtLinguistQt语言家,Qt的国际化工具。QtAssistantQt助手,Qt的帮助文档。QT概述Qt可用于下列平台:Qt/WindowsQt/MacQt/X11QtopiaCoreQT概述Qt针对不同操作系统发布的不同版本,它们所定义的提供给应用程序开发人员的API其实是相同的,在应用程序开发人员看来,他们不必关心当前的操作系统是哪一种,只需要调用同一套API来实现他们的应用即可.用Qt/X11开发的应用程序只需要在Windows下重新用Qt/Windows版本编译,即可顺利运行于Windows系统中,这种优良的跨平台性使跨平台的应用开发显得非常方便.QT概述QT概述Qtopia
CoreQtopiaCore是Trolltech公司在Qt/Embedded的基础上,于2006年1月推出的一款基于嵌入式Linux的嵌入式产品开发平台。QtopiaCore采用与桌面版本同样的一套API,但在其内部实现上作了很多调整和优化来适应嵌入式平台的限制。Qtopia
CoreQtopia
CoreQtopiaCore与Qt/X11最大的区别在于QtopiaCore不依赖于XServer或者Xlib,而是直接访问帧缓存(FrameBuffer),只需要一个QtopiaCore的动态链接库就足以替代XServer、Xlib库和其他嵌入式解决方案的图形工具包,这样做的好处是减少了内存消耗。FrameBufferFrameBuffer是一种对图形硬件设备的抽象,是linux的标准显示设备驱动接口。它将显示设备抽象为帧缓冲区,应用程序可以通过一组定义好的接口来操作显示设备,从而将底层的硬件细节隐藏起来。默认情况下,应用程序使用/dev/fb0作为FrameBuffer设备.QtopiaQtopia最初是构建于Qt/Embedded之上的类似桌面系统的应用环境,包括了PDA和手机等掌上系统的常见功能如电话簿、图像浏览、Media播放器、日程表等。从4.1版本开始,Qt/Embedded并入了Qtopia,改称为QtopiaCore,作为嵌入式版本的核心,并在此基础上开发了面向于手机、PDA等的版本,称为QtopiaPhoneEdition和QtopiaPDAEdition等。第九部分QT图形界面开发TX-2440A
嵌入式视频教程移植tslib(触摸屏校正)
Qt/E-4.5.3在ARM上的移植Qtopa4.2.4手机平台在ARM上的移植第二十二讲QT在ARM平台的移植什么是tslib?tslib是一个开源的触摸屏支持库,它是上开发的,作者是RussulKing,DouglasLowder和ChrisLarson。它给上层的应用程序,为不同的触摸屏提供了一个统一的接口。它提供诸如滤波、去抖、校准之类的功能。Tslib1.4的配置TSLIB_CONSOLEDEVICE控制台设备文件名noneTSLIB_FBDEVICEframebuffer设备文件名TSLIB_TSDEVICE触摸屏设备文件名TSLIB_CALIBFILE触屏校正信息保存文件TSLIB_CONFFILEtslib配置文件TSLIB_PLUGINDIRtslib需要加载模块所在目录安装Qt/E-4.5.3forARM#./configure-embeddedarm-xplatformqws/linux-arm-g++-no-mouse-linuxtp-qt
-mouse-tslib-I/usr/local/tslib/include-L/usr/local/tslib/lib#make#makeinstallexportQTLIB=/usr/libexportTSLIB_ROOT=/usr/local/tslibexportTSLIB_TSDEVICE=/dev/event0exportTSLIB_CALIBFILE=/etc/pointercalexportTSLIB_CONFILE=$TSLIB_ROOT/etc/ts.confexportTSLIB_PLUGINDIR=$TSLIB_ROOT/lib/tsexportTSLIB_CONSOLEDEVICE=noneexportTSLIB_FBDEVICE=/dev/fb0exportLD_LIBRARY_PATH=$LD_LIBRARY_PATH:$TSLIB_ROOT/lib:$QTLIBexportQWS_SIZE=320x240exportQWS_MOUSE_PROTO=Tslib:/dev/event0exportQWS_DISPLAY="LinuxFb:mmWidth35:mmHeight45:0“
设置环境变量什么是QWSClient和QWSServer?
QTEmbedded也是一种C/S结构,需要有一个QTapplication做QWSServer,程序启动时带有-qws参数的就是QWSServer,不带这个参数就是QWSClient。因此任何一个基于QT的application都可以做QWSServer。当然QWSServer一定先于QWSClient启动,否则QWSClient将启动失败。在实际应用中,会指定某个特殊的application做QWSServer,这个application一般还会管理一些其它的系统资源。
QWS第九部分QT图形界面开发TX-2440A
嵌入式视频教程
出品:天祥电子网址:第二十三讲Qt应用程序的开发
Qt编程入门,使用Qt助手元对象编译器介绍信号和槽机制Qt应用开发实例第二十三讲Qt应用程序的开发
Qt编程入门使用QT助手#assistant参考资料:《24小时学通QT编程》编译QT程序#qmake–project#qmake#make元对象编译器元对象编译器Meta-ObjectCompiler
(MOC)用来处理QT的C++扩展,moc分析C++源文件,如果它发现在一个头文件中包含Q_OBJECT宏定义,然后动态的生成另外一个C++源文件,这个新的源文件包含Q_OBJECT的实现代码,这个新的C++源文件也会被编译、链接到这个类的二进制代码中去,因为它也是这个类的完整的一部分。通常,这个新的C++源文件会在以前的C++源文件名前面加上moc_作为新文件的文件名。Qt程序的编译过程g++-c–omyqt.omyqt.cppmocmyqt.h–omoc_myqt.cppg++-c–omoc_myqt.omoc_myqt.cppg++-omyqtmyqt.omoc_myqt.o–lqt信号和槽机制signals:
voidmySignal();publicslots:
voidmySlot();connect(sender,SIGNAL(signal),receiver,SLOT(slot));
信号和槽机制一个信号可以连接到多个槽多个信号可以连接到同一个槽一个信号可以和另一个信号相连连接可以被删除disconnect信号和槽函数必须有着相同的参数类型及顺序第24讲智能网络家居系统项目项目演示搭建系统核心技术-CGI编程原理代码分析完善功能CGI简介CGI是:“公共网关接口”(CommonGatewayInterface)的简称是Web服务器和主机应用程序之间进行信息交换的一种接口标准或规范。通过CGI,Web服务器可以激活一个应用程序,同时将用
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 自行车专用马鞍包市场需求与消费特点分析
- 2024年度出国派遣务工人员住宿安排合同
- 照明设备市场需求与消费特点分析
- 灯座市场发展现状调查及供需格局分析预测报告
- 2024年度版权质押合同的质押权利与质押期限
- 计量仪器市场发展预测和趋势分析
- 2024年度服装行业网络安全保障合同
- 软梯市场需求与消费特点分析
- 2024年度成都二手房产买卖合同规范格式
- 2024年度医疗机构搬迁及信息系统迁移合同
- 企业负责人、一线员工座谈提纲-补充材料
- 【初中道法】认识生命说课课件-2024-2025学年统编版道德与法治七年级上册
- 第47届世界技能大赛江苏省选拔赛数字建造项目技术工作文件
- KOL合作合同(可直接使用)
- GB 26920-2024商用制冷器具能效限定值及能效等级
- 浙江省嵊州市三界片2024-2025学年七年级上学期期中科学测试卷
- 计算机图形学智慧树知到期末考试答案章节答案2024年北京理工大学
- 医学文化学智慧树知到期末考试答案2024年
- 特殊资源教室建设方案
- 30屈原《楚辞·橘颂》课件
- 幼儿园大班语言科学:《塑料瓶到哪里去了?》课件
评论
0/150
提交评论