文档详情

嵌入式Linux应用程序开发过程.ppt

发布:2025-02-25约2.82万字共10页下载文档
文本预览下载声明

Linux应用程序设计*编写Makefile文件指定编译器生成的执行文件和链接过程中的目标文件编译和链接的参数编译命令拷贝helloworld映像文件到/tftpboot/examples中清除编译器*编译x86平台采用的gcc编译器#gcc–ohelloworldhelloworld.c01编译ARM平台采用的arm-linux-gcc编译器#arm-linux-gcc–ohelloworldhelloworld.c02logo编译如果有Makefile文件#make#/usr/local/arm/2.95.3/bin/arm-linux-gcc–ohelloworldhelloworld.cLinux应用程序设计Linux应用程序运行1*应用程序运行可以采用如下两种方式:在Linux内核启动起来,并且有办法从主机获取文件时,可以在Linux控制台直接从主机获取编译后的应用程序。可以通过ftp、nfs、ssh等方式达到。也可以在编译应用程序后将该应用程序拷贝到ramdisk中,然后重新制作ramdisk,并更新ramdisk文件系统,此时新的程序将在文件系统中。Linux应用程序运行2*JXARM9-2410通过NFS将主机的/tftpboot/目录挂接到目标机的/mnt/nfs目录下#mount80:/tftpboot//mnt/nfs#cd/mnt/nfs/examples#./helloworldLinux应用程序设计*当直接在Linux控制台中从主机上获取应用程序时,必须保存到可写的位置,且通过如下命令执行该程序:./leddemo重新编译内核时,通常将应用程序添加到Linux文件系统的bin目录,该目录有全局路径。且该文件应该具有执行属性,可以通过如下命令修改:chmod777leddemo在新内核启动后,直接在命令行输入文件名即可运行。Linux应用程序运行3Linux应用程序设计*配置Linux应用程序启动后自动运行如果需要在系统启动以后自动运行helloworld程序,需要编辑ramdisk中的启动脚本文件,该文件为root/rd/etc/init.d/rcS使用vi编辑器编辑,在该文件最后添加如下脚本:/bin/helloworld该脚本将启动后运行helloworld,直到程序退出。或/bin/helloworld它将在后台运行helloworld,不影响其他的程序运行。Linux驱动程序设计linux驱动程序*Linux下对外设的访问只能通过驱动程序进行Linux具有统一的驱动程序接口,以文件操作的方式管理驱动程序,如:open、read、write、ioctl…驱动程序是内核的一部分,可以使用中断、DMA等操作驱动程序需要在用户态和内核态之间传递数据设备驱动程序的概念*对硬件的控制涉及寄存器中各位的操作,通常这些操作与设备直接相关并且对时序的要求非常严格,如果这些工作都交由应用程序员来负责,那么对硬件设备的编程将变得异常复杂而困难。驱动程序的作用正是要屏蔽硬件的这些底层细节,从而简化应用程序的编写。操作系统一般提供设备驱动程序来完成对特定硬件的控制,以建立应用程序和设备之间的抽象接口,而不是应用程序直接操作硬件。设备驱动程序的概念*设备驱动程序实际是处理和操作硬件控制器的软件,从本质上讲,是内核中具有最高特权级的、驻留内存的、可共享的底层硬件处理例程。Linux操作系统将所有的设备全部看成文件,都纳入文件系统的范畴,并通过文件的操作界面进行操作。一般来说,是把设备映射为一个特殊的设备文件,用户程序可以像对其他文件一样对此设备文件进行操作。设备文件的属性由三部分信息组成:文件的类型,主设备号,次设备号设备驱动程序的概念*0504020301驱动程序是内核的一部分,是操作系统内核与硬件设备的直接接口,驱动程序屏蔽了硬件的细节,完成以下功能:对设备初始化和释放对设备进行管理,包括实时参数设置,以及提供对设备的操作接口读取应用程序传送给设备文件的数据或回送应用程序请求的数据检测和处理设备出现的错误Linux驱动程序设计Linux驱动程序*Linux屏蔽了应用层对外设的直接访问,不能在用户态直接进行如下操作:((unsignedchar*)0=0x3e;Linux下用户态无法处理中断Linux下对外设的访问推荐采用驱动程序进行,在内核态编写驱动程序(包括直接对外设操作、处理中断等),用户态通过标准驱动程序调用方法进行操作。Linux驱动程序设计*Linux驱动程序编

显示全部
相似文档