天祥ARM视频TXA全部课件第四部分共四个部分.ppt
《天祥ARM视频TXA全部课件第四部分共四个部分.ppt》由会员分享,可在线阅读,更多相关《天祥ARM视频TXA全部课件第四部分共四个部分.ppt(80页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、天祥ARM视频TXA全部课件第四部分共四个部分 Still waters run deep.流静水深流静水深,人静心深人静心深 Where there is life,there is hope。有生命必有希望。有生命必有希望 出品:天祥电子出品:天祥电子网址:网址:第十九讲第十九讲 Linux字符设备驱动字符设备驱动第十九讲第十九讲 Linux字符设备驱动字符设备驱动1.1.嵌入式设备驱动概述嵌入式设备驱动概述2.2.字符设备驱动框架字符设备驱动框架3.3.GPIOGPIO驱动程序设计实例驱动程序设计实例4.4.中断处理和同步机制中断处理和同步机制嵌入式设备驱动概述嵌入式设备驱动概述驱动程序
2、设计是嵌入式Linux开发中重要的一部分,也是比较困难的一部分需要熟悉Linux的内核机制、驱动程序与用户级应用程序的接口需要考虑系统对设备的并发操作需要非常熟悉所开发硬件的工作原理嵌入式设备驱动概述嵌入式设备驱动概述预备知识:预备知识:应用程序、库、内核、驱动程序的关系设备类型主设备号与从设备号设备文件驱动程序与应用程序的区别用户态与内核态Linux驱动程序功能嵌入式设备驱动概述嵌入式设备驱动概述应用程序、库、内核、驱动程序的关系应用程序、库、内核、驱动程序的关系应用程序调用应用程序函数库完成功能应用程序以文件形式访问各种资源应用程序函数库 部分函数直接完成功能 部分函数通过系统调用由内核完
3、成 内核处理系统调用,调用设备驱动程序 设备驱动直接与硬件通信嵌入式设备驱动概述嵌入式设备驱动概述设备类型设备类型字符设备字符设备 对字符设备发出读/写请求时,实际的硬件I/O操作一般紧接着发生块设备块设备 块设备与之相反,它利用系统内存作为缓冲区网络设备网络设备 网络设备是一类特殊的设备,它不像字符设备或块设备那样通过对应的设备文件节点访问,也不能直接通过read或write进行数据访问请求主设备号和从设备号主设备号和从设备号 在设备管理中,除了设备类型外,内核还需要一对被称为主从设备号的参数,才能唯一标识一个设备 主设备号相同的设备使用相同的驱动程序 从设备号用于区分具体设备的实例 cat
4、/proc/devices可以查看系统中所有设备对应的主设备号设备文件设备文件 设备类型、主从设备号是内核与设备驱动程序通信时使用的 应用程序使用设备文件节点访问对应设备 每个主从设备号确定的设备都对应一个文件节点 每个设备文件都有其文件属性(c或者b)每个设备文件都有2个设备号(主,从)设备文件的主设备号必须与设备驱动程序在登记时申请的主设备号一致 系统调用是内核与应用程序之间的接口 设备驱动程序是内核与硬件之间的接口驱动程序与应用程序的区别驱动程序与应用程序的区别 应用程序以main开始 驱动程序没有main,它以一个模块初始化函数作为入口 应用程序从头到尾执行一个任务 驱动程序完成初始化
5、之后不再运行,等待系统调用 应用程序可以使用GLIBC等标准C函数库 驱动程序不能使用标准C库用户态与内核态用户态与内核态 驱动程序是内核的一部分,工作在内核态应用程序工作在用户态数据空间访问问题 无法通过指针直接将二者的数据地址进行传递 系统提供一系列函数帮助完成数据空间转换 copy_from_user copy_to_userLinux驱动程序功能驱动程序功能对设备初始化和释放把数据从内核传送到硬件和从硬件读取数据读取应用程序传送给设备文件的数据和回送应用程序请求的数据检测和处理设备出现的错误Linux字符设备驱动框架字符设备驱动框架file_operations结构体规定了驱动程序向应
6、用程序提供的操作接口实现函数:open 当应用程序打开设备时对设备进行初始化release 关闭设备时处理关闭操作read 从硬件读取数据并交给应用程序write 从应用程序接收数据送到硬件ioctl 为应用程序提供对硬件行为的控制Linux字符设备驱动框架字符设备驱动框架驱动初始化:驱动初始化:Linux在加载内核模块时会调用初始化函数static int _int XXXX_init(void)使用register_chrdev向内核注册驱动程序驱动退出:驱动退出:Linux在卸载内核模块时会调用退出函数static void _exit XXXX_exit(void)使用unregist
7、er_chrdev从内核中卸载驱动程序Linux字符设备驱动框架字符设备驱动框架将驱动程序模块注册到内核将驱动程序模块注册到内核 内核需要知道模块的初始化函数和退出函数,才能将模块放入自己的管理队列中 module_init(XXXX_init)向内核声明当前模块的初始化函数 module_exit(XXXX_exit)向内核声明当前模块的退出函数中断处理中断处理申请中断:request_irq()释放中断:free_irq()禁止单个中断:disable_irq()允许单个中断:enable_irq()禁止所有中断:local_irq_disable()允许所有中断:local_irq_en
8、able()同步机制同步机制 当多个进程、线程同时访问一个资源时,可能导致错误。内核需要提供并发控制机制,对公共资源的访问进行同步控制,确保共享资源的安全访问。Linux同步机制:自旋锁(spinlock),信号量(semaphore),读写锁(rwlock),顺序锁(seqlock),RCU(Read-Copy Update)第八部分第八部分 嵌入式驱动开发嵌入式驱动开发TX-2440A 嵌入式视频教程嵌入式视频教程 出品:天祥出品:天祥电子子网址:网址:第二十讲第二十讲 其他类型设备驱动其他类型设备驱动1.1.块设备驱动块设备驱动2.2.网络设备驱动网络设备驱动3.3.Framebuffe
9、r Framebuffer驱动驱动4.4.音频设备驱动音频设备驱动第二十讲第二十讲 其他类型设备驱动其他类型设备驱动块设备块设备 数据传输以块为单位(扇区)块设备与文件系统息息相关 块设备与字符设备仅在内核内部管理时二者有差异,内核/驱动之间的接口上有差异,为用户提供的操作方法和方式是相同的常见的块设备常见的块设备SD卡、硬盘、Flash块设备块设备注册块设备 registerblkdev()注销块设备 unregister_blkdev()块设备驱动数据结构:struct block_device_operations块设备块设备 在linux系统中,提供了MTD(Memory Techno
10、logy Device,内存技术设备)系统来建立Flash针对linux的统一、抽象的接口 引入MTD后,linux系统中的Flash设备驱动及接口可分为4层:设备节点 MTD设备层 MTD原始设备层 硬件驱动层MTD MTD 驱动分析驱动分析MTD MTD 驱动分析驱动分析网络设备驱动网络设备驱动Linux网络设备驱动层次结构为:网络协议接口层 网络设备接口层 设备驱动功能层 网络设备与媒介层网络设备驱动网络设备驱动网络设备驱动网络设备驱动int register_netdev(struct net_device*dev)void unregister_netdev(struct net_d
11、evice*dev)net_device结构体存储了一个网络接口的重要信息,是网络驱动的核心 Linux网络各层之间的数据传送都是通过sk_buff进行的 sk_buff是Linux TCP/IP协议栈中用于管理数据缓冲的结构,它在数据包的发送和接收中起着重要作用FramebufferFramebuffer驱动驱动FrameBufferFrameBuffer帧缓冲帧缓冲 Linux抽象出FrameBuffer这个设备来供用户态进程实现直接写屏。Framebuffer机制模仿显卡的功能,将显卡硬件结构抽象掉,可以通过Framebuffer的读写直接对显存进行操作。用户可以将Framebuffer
12、看成是显示内存的一个映像,将其映射到进程地址空间之后,就可以直接进行读写操作,而写操作可以立即反应在屏幕上。音频设备驱动音频设备驱动音频设备本质上是一种字符型设备Linux内核中包含两大音频体系:OSS和ALSAALSAAdvanced Linux Sound Architecture 高级linux声音体系。OSSOpen Sound System音频设备驱动音频设备驱动 I2S(InterIC Sound)总线是飞利浦公司为数字音频设备之间的音频数据传输而制定的一种总线标准,该总线专责于音频设备之间的数据传输,广泛应用于各种多媒体系统 S3C2440内置一个IIS总线控制器,该控制器实现了
13、到一个外部8/16位立体声Audio Codec IC的接口 支持IIS数据格式和左对齐数据格式 此控制器包含FIFO,支持DMA传输模式音频设备驱动音频设备驱动 UDA1341是Philips公司生产的一款音频芯片,提供标准的IIS接口,可直接和S3C2440的IIS引脚连接提供L3接口作为控制接口提供麦克风和扬声器接口提供线性数字音量调节提供重低音增强处理功能支持16b、18b、20b数据输入音频设备驱动音频设备驱动L3L3接口接口 用来对声音处理单元进行编程或系统特性包含三根信号/数据线:L3DATA:串行数据传输线 L3MODE:地址/数据模式选择线 L3CLK:串行时钟信号线第九部分
14、第九部分 QTQT图形界面开发图形界面开发TX-2440A 嵌入式视频教程嵌入式视频教程 出品:天祥出品:天祥电子子网址:网址:第二十一讲第二十一讲 QT及及Qtopia介绍介绍1.1.嵌入式嵌入式GUIGUI简介简介2.2.QTQT概述概述3.3.QT/X11 QT/X11的安装的安装4.4.QtopiaQtopia简介简介第二十一讲第二十一讲 QT及及Qtopia介绍介绍GUI(Graphic User Interface)UNIX环境下的图形窗口标准为:X Windows System X Server Graphic Library Toolkits Window Manger I18
15、NLinux的的GUI架构架构X Server Client/Server架构,X Client就是我们在X上执行的软件,X Server则是负责显示、传递使用者输入事件(包括键盘鼠标的输入)Graphic Library(底层绘图函数库)(底层绘图函数库)实现画点、画线、画圆、上色等高阶函数Toolkits 将构成窗口的抽象组件(Widget)抽离出来,重新定义一个更高阶的函数库。如QT,GTK+Linux的的GUI架构架构Window Manger 负责不同窗口间的沟通、协调(如窗口的切换、放大、缩小等)桌面环境桌面环境 提供一整套图形界面下使用的程序,如应用程序,办公软件,浏览器,文件管
16、理器等I18N(Internationalization)解决国际化问题Linux的的GUI架构架构 Qtopia Core(Qt/Embedded)MiniGUI MicroWindows Tiny-X嵌入式嵌入式GUIGUI MiniGUI是一种面向嵌入式系统的图形用户界面支持系统,是国内做的较好的自由软件之一.跨操作系统支持 多汉字输入法支持 轻型、占用资源少 高性能、高可靠性 可配置性MiniGUIMiniGUI MicroWindows(2005年更名为Nano-X Window)是一个基于客户/服务器体系结构的GUI系统.其主要特色是提供了类似X Window的客户/服务器体系结构
17、并提供了相对完善的图形功能.MicroWindowsMicroWindows MicroWindows作为X Window的替代品,可以使用更少的存储空间(100KB-600KB)和RAM提供与X Window相似的功能 MicroWindows可移植性好,基本上用C语言实现,只有某些关键代码使用了汇编以提高速度.MicroWindowsMicroWindowsTiny-X Tiny-X实际上是XFree86 Project的一部分,由SuSE公司赞助,XFree86 Project核心团队的Keith Packard开发.Tiny-X的目标是可以在小内存或几乎无内存的情况下良好运行.QTQT
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 天祥 ARM 视频 TXA 全部 课件 第四 部分 四个
限制150内