最新嵌入式Linux应用程序开发过程ppt课件PPT课件.ppt
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《最新嵌入式Linux应用程序开发过程ppt课件PPT课件.ppt》由会员分享,可在线阅读,更多相关《最新嵌入式Linux应用程序开发过程ppt课件PPT课件.ppt(36页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、嵌入式嵌入式LinuxLinux应用程序开发过程应用程序开发过程pptppt课件课件Linux应用程序Linux应用程序设计q编写程序编写程序q编写编写MakefileMakefile文件文件q编译编译q运行运行2Linux应用程序运行3Linux应用程序设计q重新编译内核时,通常将应用程序添加到重新编译内核时,通常将应用程序添加到LinuxLinux文件系统文件系统的的binbin目录,该目录有全局路径。且该文件目录,该目录有全局路径。且该文件应该具有执行属性应该具有执行属性,可以通过如下命令修改:可以通过如下命令修改:chmodchmod 777 777 leddemoleddemo在新内
2、核启动后,直接在命令行输入文件名即可运行。在新内核启动后,直接在命令行输入文件名即可运行。q当直接在当直接在LinuxLinux控制台中从主机上获取应用程序时,必须控制台中从主机上获取应用程序时,必须保存到可写的位置,且通过如下命令执行该程序:保存到可写的位置,且通过如下命令执行该程序:././leddemoleddemo9配置Linux应用程序启动后自动运行Linux应用程序设计q如果需要在系统启动以后自动运行如果需要在系统启动以后自动运行helloworldhelloworld程序,需要程序,需要编辑编辑ramdiskramdisk中的启动脚本文件,该文件为中的启动脚本文件,该文件为roo
3、t/rd/etc/init.d/root/rd/etc/init.d/rcSrcS使用使用vivi编辑器编辑,在该文件最后添加如下脚本:编辑器编辑,在该文件最后添加如下脚本:/bin/bin/helloworldhelloworld该脚本将启动后运行该脚本将启动后运行helloworldhelloworld ,直到程序退出。或直到程序退出。或/bin/bin/helloworld helloworld&它将在它将在后台运行后台运行helloworldhelloworld,不影响其他的程序运行。不影响其他的程序运行。10linux驱动程序Linux驱动程序设计qLinuxLinux下对外设的访问
4、只能通过驱动程序进行下对外设的访问只能通过驱动程序进行qLinuxLinux具有统一的驱动程序接口,以文件操作的方式管理驱具有统一的驱动程序接口,以文件操作的方式管理驱动程序动程序,如:,如:openopen、readread、writewrite、ioctlioctlq驱动程序是内核的一部分,可以使用中断、驱动程序是内核的一部分,可以使用中断、DMADMA等操作等操作q驱动程序需要在用户态和内核态之间传递数据驱动程序需要在用户态和内核态之间传递数据11设备驱动程序的概念q 对硬件的控制涉及寄存器中各位的操作,通常这些操作与设备直接相关并且对时序的要求非常严格,如果这些工作都交由应用程序员来负
5、责,那么对硬件设备的编程将变得异常复杂而困难。驱动程序的作用正是要屏蔽硬件的这些底层细节,从而简化应用程序的编写。q 操作系统一般提供设备驱动程序来完成对特定硬件的控制,以建立应用程序和设备之间的抽象接口,而不是应用程序直接操作硬件。12设备驱动程序的概念q 设备驱动程序实际是处理和操作硬件控制器的软件,从本质上讲,是内核中具有最高特权级的、驻留内存的、可共享的底层硬件处理例程。q Linux 操作系统将所有的设备全部看成文件,都纳入文件系统的范畴,并通过文件的操作界面进行操作。一般来说,是把设备映射为一个特殊的设备文件,用户程序可以像对其他文件一样对此设备文件进行操作。设备文件的属性由三部分
6、信息组成:文件的类型,主设备号,次设备号13设备驱动程序的概念q 驱动程序是内核的一部分,是操作系统内核与硬件设备的直接接口,驱动程序屏蔽了硬件的细节,完成以下功能:q 对设备初始化和释放q 对设备进行管理,包括实时参数设置,以及提供对设备的操作接口q 读取应用程序传送给设备文件的数据或回送应用程序请求的数据q 检测和处理设备出现的错误14Linux驱动程序Linux驱动程序设计qLinuxLinux屏蔽了应用层对外设的直接访问屏蔽了应用层对外设的直接访问,不能在用户态直,不能在用户态直接进行如下操作:接进行如下操作:*(unsigned char*)0 x02000006)=0 x3e;un
7、signed char*)0 x02000006)=0 x3e;qLinuxLinux下下用户态无法处理中断用户态无法处理中断qLinuxLinux下下对外设的访问推荐采用驱动程序进行,在内核态对外设的访问推荐采用驱动程序进行,在内核态编写驱动程序(包括直接对外设操作、处理中断等),用户编写驱动程序(包括直接对外设操作、处理中断等),用户态通过标准驱动程序调用方法进行操作。态通过标准驱动程序调用方法进行操作。15Linux驱动程序编译方式Linux驱动程序设计qLinuxLinux中驱动程序的使用可以按照两种方式编译:中驱动程序的使用可以按照两种方式编译:q一种是一种是静态编译进内核静态编译进
8、内核q另一种是编译成模块以供另一种是编译成模块以供动态加载动态加载q由于由于LinuxLinux不不支持模块动态加载支持模块动态加载,而且嵌入式,而且嵌入式LinuxLinux不能够不能够象桌面象桌面LinuxLinux那样灵活的使用那样灵活的使用insmodinsmod/rmmodrmmod加载卸载设备驱动加载卸载设备驱动程序,因而通常在程序,因而通常在LinuxLinux中将设备驱动程序静态编译进内核。中将设备驱动程序静态编译进内核。16Linux下设备驱动程序分类Linux驱动程序设计q字符设备字符设备:是指存取时没有缓存的设备。典型的字符设备:是指存取时没有缓存的设备。典型的字符设备包
9、括鼠标,键盘,串行口等。包括鼠标,键盘,串行口等。q块块设备设备:块设备的读写都有缓存来支持,并且块设备必须:块设备的读写都有缓存来支持,并且块设备必须能够随机存取能够随机存取(randomrandomaccess)access)。典型的块设备主要包括硬典型的块设备主要包括硬盘软盘设备,盘软盘设备,CD-ROMCD-ROM等。等。q网络设备网络设备:LinuxLinux的网络系统主要是基于的网络系统主要是基于BSDBSDunixunix的的socketsocket机制。在系统和驱动程序之间定义有专门的数据结构机制。在系统和驱动程序之间定义有专门的数据结构(sksk_buff)_buff)进行数
10、据的传递。系统里支持对发送数据和接收数进行数据的传递。系统里支持对发送数据和接收数据的缓存,提供流量控制机制,提供对多协议的支持。据的缓存,提供流量控制机制,提供对多协议的支持。17Linux下设备驱动程序组成Linux驱动程序设计q自动配置和初始化子程序自动配置和初始化子程序:负责检测所要驱动的硬件设备是否存在和是否能正常工负责检测所要驱动的硬件设备是否存在和是否能正常工作。如果该设备正常,则对这个设备及其相关的、设备作。如果该设备正常,则对这个设备及其相关的、设备驱动程序需要的软件状态进行初始化。这部分驱动程序驱动程序需要的软件状态进行初始化。这部分驱动程序仅在初始化的时候被调用一次。仅在
11、初始化的时候被调用一次。q服务于服务于I/OI/O请求的子程序请求的子程序:调用这部分是由于系统调用的结果。这部分程序在执行调用这部分是由于系统调用的结果。这部分程序在执行的时候,系统仍认为是和进行调用的进程属于同一个进的时候,系统仍认为是和进行调用的进程属于同一个进程,只是由用户态变成了核心态,具有进行此系统调用程,只是由用户态变成了核心态,具有进行此系统调用的用户程序的运行环境,因此可以在其中调用的用户程序的运行环境,因此可以在其中调用sleep()sleep()等与进程运行环境有关的函数。等与进程运行环境有关的函数。q中断服务子程序中断服务子程序:18Linux下设备驱动程序I/O设备入
12、口点1Linux驱动程序设计q在系统内部,在系统内部,I/OI/O设备的存取通过一组固定的入口点来进设备的存取通过一组固定的入口点来进行,这组入口点是由每个设备的设备驱动程序提供的。而入行,这组入口点是由每个设备的设备驱动程序提供的。而入口点由一个文件操作结构口点由一个文件操作结构(file_operationsfile_operations)向系统进行说明。向系统进行说明。一般来说,字符型设备驱动程序能够提供如下几个入口点:一般来说,字符型设备驱动程序能够提供如下几个入口点:qopenopen:打开设备准备打开设备准备I/OI/O操作。对字符特别设备文件进行操作。对字符特别设备文件进行打开操
13、作,都会调用设备的打开操作,都会调用设备的openopen入口点。入口点。openopen子程序必须对子程序必须对将要进行的将要进行的I/OI/O操作做好必要的准备工作,如清除缓冲区等。操作做好必要的准备工作,如清除缓冲区等。如果设备是独占的,即同一时刻只能有一个程序访问此设备,如果设备是独占的,即同一时刻只能有一个程序访问此设备,则则openopen子程序必须设置一些标志以表示设备处于忙状态。子程序必须设置一些标志以表示设备处于忙状态。qcloseclose:关闭一个设备。当最后一次使用设备终结后,调关闭一个设备。当最后一次使用设备终结后,调用用closeclose子程序。独占设备必须标记设
14、备可再次使用。子程序。独占设备必须标记设备可再次使用。19Linux下设备驱动程序I/O设备入口点2Linux驱动程序设计qwritewrite:往设备上写数据。对于有缓冲区的往设备上写数据。对于有缓冲区的I/OI/O操作,一般操作,一般是把数据写入缓冲区里。对字符特别设备文件进行写操作将是把数据写入缓冲区里。对字符特别设备文件进行写操作将调用调用writewrite子程序。子程序。qioctlioctl:执行读、写之外的操作。执行读、写之外的操作。qselectselect:检查设备,看数据是否可读或设备是否可用于写检查设备,看数据是否可读或设备是否可用于写数据。数据。selectselec
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 最新 嵌入式 Linux 应用程序 开发 过程 ppt 课件
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内