第12章嵌入式Linux软件设计ppt课件.ppt

上传人:飞****2 文档编号:70502201 上传时间:2023-01-21 格式:PPT 页数:56 大小:80KB
返回 下载 相关 举报
第12章嵌入式Linux软件设计ppt课件.ppt_第1页
第1页 / 共56页
第12章嵌入式Linux软件设计ppt课件.ppt_第2页
第2页 / 共56页
点击查看更多>>
资源描述

《第12章嵌入式Linux软件设计ppt课件.ppt》由会员分享,可在线阅读,更多相关《第12章嵌入式Linux软件设计ppt课件.ppt(56页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、篮球比赛是根据运动队在规定的比赛时间里得分多少来决定胜负的,因此,篮球比赛的计时计分系统是一种得分类型的系统 第第12章章 嵌入式嵌入式Linux软件设计软件设计 篮球比赛是根据运动队在规定的比赛时间里得分多少来决定胜负的,因此,篮球比赛的计时计分系统是一种得分类型的系统12.1 移植的基本概念移植的基本概念n广义上讲移植包括软件移植和硬件移植。n从狭义上讲,移植就是指软件移植,即即将一个软件从一将一个软件从一个平台迁移到另一个与其不同的平台上工作个平台迁移到另一个与其不同的平台上工作。n通常情况下,移植分为以下3种情况。n1、从一个硬件平台移植到另一个硬件平台、从一个硬件平台移植到另一个硬件

2、平台n2、从一个操作系统移植到另一个操作系统、从一个操作系统移植到另一个操作系统n3、从一种软件库环境移植到另一种软件库环境、从一种软件库环境移植到另一种软件库环境篮球比赛是根据运动队在规定的比赛时间里得分多少来决定胜负的,因此,篮球比赛的计时计分系统是一种得分类型的系统12.2 Bootloader的移植的移植nBootloader是操作系统和硬件的纽带。n它负责初始化硬件,引导操作系统内核初始化硬件,引导操作系统内核,检测各种参数给操作系统内核使用。n一个功能完备的大型Bootloader,就相当于一个小型的操作系统。n在嵌入式领域中,操作系统移植的关键在于Bootloader的移植以及操

3、作系统内核与硬件相关部分的移植。篮球比赛是根据运动队在规定的比赛时间里得分多少来决定胜负的,因此,篮球比赛的计时计分系统是一种得分类型的系统12.2.1 关键文件的修改关键文件的修改n1.vivi顶层顶层Makefile文件的修改文件的修改nvivi作为Linux系统的启动代码,在编译配置时需要用到函数库n包括交叉编译器库和头文件,交叉编译开关选项设置,还包括Linux内核代码中的库和头文件n通常需要修改vivi工程管理文件Makefile。篮球比赛是根据运动队在规定的比赛时间里得分多少来决定胜负的,因此,篮球比赛的计时计分系统是一种得分类型的系统n2.vivi中与硬件相关的初始化中与硬件相关

4、的初始化n与具体运行在哪一个处理器平台上相关的文件都存放在vivi/arch/目录下n系统使用S3C2410 x处理器,对应的目录为s3c2410n其中head.s文件是vivi启动配置代码,加电复位运行的代码就是从这里开始的。篮球比赛是根据运动队在规定的比赛时间里得分多少来决定胜负的,因此,篮球比赛的计时计分系统是一种得分类型的系统n3.对不同对不同Flash启动的修改启动的修改nvivi能从NorFlash或NandFlash启动n启动程序、Linux内核及根文件系统,甚至包括图形用户界面都需要存放在NorFlash或NandFlash中。n4.内核启动参数设置内核启动参数设置n经过修改后

5、,S3C2410 x开发板能从NandFlash中启动运行Linux,也能从NorFlash中启动,所以相应地也要修改启动命令。篮球比赛是根据运动队在规定的比赛时间里得分多少来决定胜负的,因此,篮球比赛的计时计分系统是一种得分类型的系统n5.Flash驱动的实现驱动的实现n移植vivi的最后一步就是实现Flash驱动n程序员需要根据自己系统中具体Flash芯片的型号及配置来修改驱动程序,使Flash设备能够在嵌入式系统中正常工作。篮球比赛是根据运动队在规定的比赛时间里得分多少来决定胜负的,因此,篮球比赛的计时计分系统是一种得分类型的系统12.2.2 串口设置示例串口设置示例n串口作为一种常用的

6、通信方式,在嵌入式开发中起到极其重要的作用n几乎所有的嵌入式设备都提供了串口的支持,并且都在Bootloader中就给出了支持n为下一步开发提供方便,比如操作系统内、文件系统等下载等。篮球比赛是根据运动队在规定的比赛时间里得分多少来决定胜负的,因此,篮球比赛的计时计分系统是一种得分类型的系统n对vivi而言,串口的初始化是在vivi初始化的第一个阶段进行n具体是在arch/s3c2410/head.s文件中设置n一般串口波特率设置为115200Buad。n若希望波特率设置为115200,而PCLK又等于40MHz,那么UBRDIVn就应该设置为:nUBRDIVn=(int)(40000000/

7、(11520016)1=(int)(21.7)-1=20n其中,PCLK=50700000,UBRDIV0的值向下取整。篮球比赛是根据运动队在规定的比赛时间里得分多少来决定胜负的,因此,篮球比赛的计时计分系统是一种得分类型的系统12.2.3 Bootloader的的交叉交叉编译编译n修改vivi目录下的Makefile文件,将其中的编译器由 gcc改为交叉编译器改为交叉编译器arm-linux-gcc。n使用make命令,根据Makefile文件自动完成整个编译。n编译完成后,系统将自动在vivi的根目录下生成一个名为“vivi”的二进制目标文件,用于下载到嵌入式目标设备的Flash中。篮球比

8、赛是根据运动队在规定的比赛时间里得分多少来决定胜负的,因此,篮球比赛的计时计分系统是一种得分类型的系统12.2.4 Bootloader的下载的下载nBootloader的下载(又叫做烧录)利用利用JTAG口口进行。n操作平台可以是Windows或桌面Linux,只是两者用的工具软件不同而已。n以Windows操作平台及sjf2410工具软件为例进行介绍。n在下载之前,需要将生成的可执行文件从桌面Linux下转移到Windows的某个目录下(如d:vivi)。n利用Jflash线将PC机和嵌入式目标板的JTAG口正确连接。n启动sjf服务,安装giveio.sys驱动。打开sjf目录下的loa

9、ddrv.exe,将弹出LoadDrv窗口.n然后再依次点击install和start按钮,就会提示“servicealreadyruning”,也就是驱动已经安装成功.n在DOS环境下手动运行sjf2410命令:sjf2410/f:vivi,其中“/f:是”参数而不是目录.nvivi下载成功后,用串口将PC和嵌入式目标板连接起来,并启动Windows中的超级终端.篮球比赛是根据运动队在规定的比赛时间里得分多少来决定胜负的,因此,篮球比赛的计时计分系统是一种得分类型的系统12.3 嵌入式嵌入式Linux内核的移植内核的移植n内核是嵌入式Linux系统的核心部分。nLinux与Windows不同

10、,其内核和文件系统、图形用户系统(GUI窗口系统)可以分开。n它们的开发、移植、下载甚至运行都是可以分开的。篮球比赛是根据运动队在规定的比赛时间里得分多少来决定胜负的,因此,篮球比赛的计时计分系统是一种得分类型的系统n内核移植是一个比较复杂的任务,也是嵌入式系统开发中非常重要的一个过程。n内核移植一般包括3大步骤n内核配置内核配置n内核编译内核编译n内核下载内核下载篮球比赛是根据运动队在规定的比赛时间里得分多少来决定胜负的,因此,篮球比赛的计时计分系统是一种得分类型的系统12.3.1 内核移植的准备内核移植的准备 n准备好编译内核的编译器即交叉编译工具链n从相关的网站()下载要移植的内核源代码

11、(基本上都是C语言编写)。篮球比赛是根据运动队在规定的比赛时间里得分多少来决定胜负的,因此,篮球比赛的计时计分系统是一种得分类型的系统12.3.2 关键文件的修改关键文件的修改n1.设置目标平台和指定交叉编译器设置目标平台和指定交叉编译器n在源代码的最上层根目录下的Makefile文件中,指定所移植的硬件平台,以及所使用的交叉编译器。n2.arch/arm目录下目录下Makefile 修改修改n内核系统的启动代码是通过此文件产生的。篮球比赛是根据运动队在规定的比赛时间里得分多少来决定胜负的,因此,篮球比赛的计时计分系统是一种得分类型的系统n3.arch/arm目录下目录下Config.in 修

12、改修改nConfig.in文件是用来设置后面介绍的menuconfig配置菜单的,它们是一一对应关系。n这里把嵌入式目标板的CPU平台加在相应的地方,这样在配置Linux内核时就能够选择是否支持该平台了n4.arch/arm/boot目录下目录下Makefile 修改修改n编译出来的内核存放在该目录下。n用来指定内核解压到实际硬件内存系统中的物理地址。n一般如果内核无法正常启动,很可能是这里的地址设置不正确。篮球比赛是根据运动队在规定的比赛时间里得分多少来决定胜负的,因此,篮球比赛的计时计分系统是一种得分类型的系统n5.arch/arm/boot/compressed目录下目录下 Makefi

13、le 修改修改n该文件从vmlinux中创建一个压缩的vmlinuz镜像文件n该文件中用到的SYSTEM、ZTEXTADDR、ZBSSADDR、和ZRELADDR是从arch/arm/boot/Makefile文件中得到的。nn6.arch/arm/boot/compressed目录下目录下 添加添加head-s3c2410.s篮球比赛是根据运动队在规定的比赛时间里得分多少来决定胜负的,因此,篮球比赛的计时计分系统是一种得分类型的系统n7.arch/arm/def-configs目录目录n 这里定义了一些平台的config文件,比如lart和assert等。把配置好的S3C2410的配置文件复

14、制到这里即可。n8.arch/arm/kernel目录下目录下Makefile 修改修改n该文件主要用来确定文件类型的依赖关系。篮球比赛是根据运动队在规定的比赛时间里得分多少来决定胜负的,因此,篮球比赛的计时计分系统是一种得分类型的系统n9.arch/arm/kernel目录下的文件目录下的文件 debug-armv.s 修改修改n在该文件中添加如下代码,目的是关闭外围设备的时钟,以保证系统正常运行。n10.arch/arm/kernel目录下的文件目录下的文件 entry-armv.s 修改修改n在适当的地方加入如下代码,此为CPU初始化时的处理中断的汇编代码。篮球比赛是根据运动队在规定的比

15、赛时间里得分多少来决定胜负的,因此,篮球比赛的计时计分系统是一种得分类型的系统n11.arch/arm/mm目录下的相关文件目录下的相关文件n此目录下的文件是和ARM平台相关的内存管理内容,只有mm-armv.c文件需要移植。n12.arch/arm/mach-s3c2410目录下的相关文件目录下的相关文件n这个目录在2.4.18版本的内核中是不存在的,但在高版本中已经添加了对这款处理器的支持。n不过发布的内核只是对处理器的基本信息提供支持,有关开发板的外设。篮球比赛是根据运动队在规定的比赛时间里得分多少来决定胜负的,因此,篮球比赛的计时计分系统是一种得分类型的系统12.3.3 内核的内核的配

16、置与裁剪配置与裁剪n配置内核与裁剪是移植内核过程中很重要的一步,也是非常复杂的一步,配置时一定要小心,否则操作系统将无法运行。n配置内核的目的配置内核的目的:裁剪裁剪掉不必要的文件和目录获得一个最简的、又能满足最简的、又能满足用户开发的操作系统以解除嵌入式开发过程中所遇到的存储空间有限存储空间有限的困扰。篮球比赛是根据运动队在规定的比赛时间里得分多少来决定胜负的,因此,篮球比赛的计时计分系统是一种得分类型的系统n通常有4种主要的配置内核的方法。n 1.make config(命令行)(命令行)n2.make oldconfig(使用已有的配置文件,提示之前没有配置的选项)n3.make men

17、uconfig(基于文本的菜单)(基于文本的菜单)n4.make xconfig(基于X窗口的配置菜单)篮球比赛是根据运动队在规定的比赛时间里得分多少来决定胜负的,因此,篮球比赛的计时计分系统是一种得分类型的系统n1、启动内核配置窗口n进入被配置内核的目录,如/arm/kerneln输入makemenuconfig打开内核配置窗口n2、配置内核n使用SPACE键选中或取消对某项的选择,*表示被选中。n3、保存配置篮球比赛是根据运动队在规定的比赛时间里得分多少来决定胜负的,因此,篮球比赛的计时计分系统是一种得分类型的系统12.3.4 内核的内核的编译编译n编译内核几个步骤:编译内核几个步骤:n一

18、是一是清除清除以前编译通过的残留文件;以前编译通过的残留文件;n二是二是编译编译内核内核image文件和可加载模块;文件和可加载模块;n三是三是安装模块安装模块。篮球比赛是根据运动队在规定的比赛时间里得分多少来决定胜负的,因此,篮球比赛的计时计分系统是一种得分类型的系统n在编译内核之前,可先参考内核目录下的README文件和Documentation/Changes文件:nREADME文件说明安装内核的方法;nChanges文件说明编译和运行内核需要的最低工具软件列表。篮球比赛是根据运动队在规定的比赛时间里得分多少来决定胜负的,因此,篮球比赛的计时计分系统是一种得分类型的系统具体介绍编译内核的

19、基本步骤具体介绍编译内核的基本步骤nmake dep (该命令用在内核2.4或之前)n用于建立源文件之间的依赖关系n在执行内核配置命令之后使用。nnmake clean (这个步骤是可选的)n用于删除前面留下来的中间文件n不会删除.config等配置文件nmake zImagen用于编译生成压缩形式的内核映象n编译成功后,在archarmboot目录下生成zImage文件.篮球比赛是根据运动队在规定的比赛时间里得分多少来决定胜负的,因此,篮球比赛的计时计分系统是一种得分类型的系统nmake modulesn如果在配置菜单的过程中,有些选项被选择为模块的,即选项前为Mn并且在回答Enablelo

20、adablemodulesupport(CONFIG_MODULES)时选了“Yes”n用命令make modules来编译这些可加载模块n用make modules_install将makemodules生成的模块文件复制到到相应目录。n如果是直接升级PC桌面Linux系统的内核,那么接下来还要用make install来安装新内核。篮球比赛是根据运动队在规定的比赛时间里得分多少来决定胜负的,因此,篮球比赛的计时计分系统是一种得分类型的系统12.3.5 内核的内核的下载下载n进入进入vivi控制台控制台n连好串口线,启动超级终端超级终端(波特率为115200),在开机的瞬间快速的按空格键(不

21、能是回车键)n向向flash芯片中烧写芯片中烧写 kerneln在vivi命令行上输入:load flash kernel xn含义:向flash芯片中烧写kernel,采用xmodem协议。n回车后会提示等待。n选择要发送的文件选择要发送的文件n比如zImage文件,这里Linux环境下源代码arch/arm/boot目录下的zImage内核映像文件已转移到windows的某个目录下。篮球比赛是根据运动队在规定的比赛时间里得分多少来决定胜负的,因此,篮球比赛的计时计分系统是一种得分类型的系统12.4 嵌入式嵌入式Linux文件系统文件系统的移植的移植文件系统是Linux/UNIX系统系统的一

22、个重要组成部分。也是操作系统正常工作时工作时的必要组成部分。在启动启动时内核需要根文件系统来挂载和组织文件挂载和组织文件。内核代码映像文件保存在根文件系统中内核代码映像文件保存在根文件系统中。系统引导启动程序引导启动程序会从这个根文件系统根文件系统设备上把内核内核执行代码执行代码加载到内存中去运行加载到内存中去运行。篮球比赛是根据运动队在规定的比赛时间里得分多少来决定胜负的,因此,篮球比赛的计时计分系统是一种得分类型的系统n在Linux中,用户能看到的文件空间是用一个单树状结构来组织的。n根文件系统的最顶层称为rootn其下的每一个目录都有其具体的目的和用途n常见的根文件系统有Romfs、JF

23、FS2、NFS、ext2、RamDisk、cramfs等。篮球比赛是根据运动队在规定的比赛时间里得分多少来决定胜负的,因此,篮球比赛的计时计分系统是一种得分类型的系统12.5 Linux下下设备驱动程序设备驱动程序的开发的开发nLinux驱动开发是嵌入式软件设计中的主要内容。n也是嵌入式Linux移植中工作量最大的部分。篮球比赛是根据运动队在规定的比赛时间里得分多少来决定胜负的,因此,篮球比赛的计时计分系统是一种得分类型的系统n这里主要概述:Linux设备驱动框架设备驱动框架驱动程序的组成驱动程序的组成常用的加载驱动程序的方法常用的加载驱动程序的方法n通过实例来详细介绍字符设备驱动程序的开发过

24、程。篮球比赛是根据运动队在规定的比赛时间里得分多少来决定胜负的,因此,篮球比赛的计时计分系统是一种得分类型的系统12.5.1 驱动程序概述驱动程序概述设备驱动程序是应用程序与硬件之间的一个中间软件层。可以看作是一个硬件抽象层。为应用程序屏蔽了硬件的细节。篮球比赛是根据运动队在规定的比赛时间里得分多少来决定胜负的,因此,篮球比赛的计时计分系统是一种得分类型的系统在应用程序应用程序看来,硬件设备只是一个设备文件设备文件。应用程序可以像操作普通文件一样对硬件设备进行操作。在操作系统操作系统看来,设备驱动程序是内核的一部分内核的一部分。它主要实现的功能有:u对设备进行初始化和释放;u把数据从内核传送到

25、硬件和从硬件读取数据;u读取应用程序传送给设备文件的数据u回送应用程序请求的数据u检测和处理设备出现的错误。篮球比赛是根据运动队在规定的比赛时间里得分多少来决定胜负的,因此,篮球比赛的计时计分系统是一种得分类型的系统1.设备类型分类设备类型分类 n在Linux操作系统下有3类主要的设备类型:n字符设备字符设备n块设备块设备n网络设备网络设备篮球比赛是根据运动队在规定的比赛时间里得分多少来决定胜负的,因此,篮球比赛的计时计分系统是一种得分类型的系统3类主要的设备类型n(1)字符设备字符设备n字符设备(chardevice)和普通文件之间有主要的区别:普通文件可以来回读/写,而大多数字符设备仅仅是

26、数据通道,只能顺序读顺序读/写。写。n(2)块设备)块设备 n块设备(blockdevice)是文件系统的物质基础,它也支持像文件一样被访问。n(3)网络设备)网络设备n网络设备是一个物理设备,如以太网卡,但软件也可以作为网络设备,典型的是回送设备(loopback)。n字符设备和块设备的主要区别在于是否使用了缓冲技术缓冲技术。篮球比赛是根据运动队在规定的比赛时间里得分多少来决定胜负的,因此,篮球比赛的计时计分系统是一种得分类型的系统2.设备驱动与文件系统的关系设备驱动与文件系统的关系nLinux通过设备文件系统对设备进行管理。n设备都以文件的形式存放在/dev目录下,称为“设备文件”。n应用

27、程序可以像普通文件一样打开、关闭和读/写这些设备文件。n为了管理这些设备,系统为设备编了号,每个设备号又分为主设备号和次设备号。(p396数据结构)篮球比赛是根据运动队在规定的比赛时间里得分多少来决定胜负的,因此,篮球比赛的计时计分系统是一种得分类型的系统12.5.2 重要的数据结构和函数重要的数据结构和函数n1.设备驱动中关键设备驱动中关键数据结构数据结构n设备驱动程序提供的这组入口点由几个结构向系统进行说明,是:n数据结构ninode数据结构nfile数据结构(P397)n2.设备驱动开发中的设备驱动开发中的基本函数基本函数n设备驱动程序所提供的入口点,在设备驱动程序初始化的时候向系统进行

28、说明,以便系统在适当的时候调用。n初始化部分一般还负责为设备驱动程序申请系统资源,包括内存、中断、时钟、I/O端口等(这些资源也可以在open子程序或别的地方申请)n在这些资源不用的时候,应该释放它们,以利于资源的共享。篮球比赛是根据运动队在规定的比赛时间里得分多少来决定胜负的,因此,篮球比赛的计时计分系统是一种得分类型的系统n(1)设备注册函数设备注册函数n(2)内存操作函数内存操作函数 n(3)中断申请和释放函数中断申请和释放函数 n(4)I/O端口操作函数端口操作函数 篮球比赛是根据运动队在规定的比赛时间里得分多少来决定胜负的,因此,篮球比赛的计时计分系统是一种得分类型的系统12.5.3

29、 字符设备字符设备驱动程序的组成驱动程序的组成设备驱动程序作为内核的一部分它完成的功能包括:对设备初始化和释放;把数据从内核传送到硬件并从硬件读取数据;读取应用程序传送给设备文件的数据和回送应用程序请求的数据;检测和处理设备出现的错误。篮球比赛是根据运动队在规定的比赛时间里得分多少来决定胜负的,因此,篮球比赛的计时计分系统是一种得分类型的系统n1.驱动程序的注册和注销驱动程序的注册和注销n设备驱动程序通过命令insmod以模块的方式动态加载后n入口点是init_module函数或宏mdolueinit。n2.设备操作设备操作n在设备成功注册之后,就可对它进行打开、读写、控制和释放等操作。n在L

30、inux内核中,字符设备使用fie_operations结构来定义设备的各种操作集合。篮球比赛是根据运动队在规定的比赛时间里得分多少来决定胜负的,因此,篮球比赛的计时计分系统是一种得分类型的系统n3.驱动程序的中断处理驱动程序的中断处理n在实际的系统中,设备的许多工作通常与处理器不同步,而且总比处理器慢。n在设备准备好后通知处理器来进行处理,这种方法就是中断。n由于系统的中断资源有限驱动程序在使用中断前需要申请,使用完后需要释放。nLinux中,中断的申请和释放分别是通过request_irq()函数和free_irq()函数来实现的。篮球比赛是根据运动队在规定的比赛时间里得分多少来决定胜负的

31、,因此,篮球比赛的计时计分系统是一种得分类型的系统12.5.4 动态和静态动态和静态加载方式加载方式nLinux设备驱动模块属于内核的一部分n可以用静态和动态静态和动态两种方式来进行编译和加载n两者方式的开发过程稍有不同,也各有特点。篮球比赛是根据运动队在规定的比赛时间里得分多少来决定胜负的,因此,篮球比赛的计时计分系统是一种得分类型的系统1.静态加载方式静态加载方式n(1)特点)特点n静态方式就是将驱动程序的源代码事前放到内核源代码中,和整个内核一起编译。n它需要修改内核源代码和文件系统,并重新烧录下载到嵌入式设备中,这样当内核启动时就会加载驱动程序。n(2)内核的修改)内核的修改n设备驱动

32、程序写完后,就可以将文件加到linux的内核中了。篮球比赛是根据运动队在规定的比赛时间里得分多少来决定胜负的,因此,篮球比赛的计时计分系统是一种得分类型的系统n(3)文件系统的修改)文件系统的修改n在内核中加上驱动程序后,还不能直接在应用程序中使用驱动程序中的函数,如open,close等.n因为还需要在文件系统中提供设备访问接口,也就是/dev/目录下的设备名与设备号。篮球比赛是根据运动队在规定的比赛时间里得分多少来决定胜负的,因此,篮球比赛的计时计分系统是一种得分类型的系统2.动态加载方式动态加载方式n(1)特点)特点n动态加载方式就是说将驱动程序编译成一个可加载、卸载的模块目标文件,然后

33、添加到内核中去即可。n这种方法的好处就是通过将于内核中一些不常用的驱动采取动态加载方式,从而可以减少内核的大小n模块被插入内核后,它就和内核其他部分一样可方便的被使用。篮球比赛是根据运动队在规定的比赛时间里得分多少来决定胜负的,因此,篮球比赛的计时计分系统是一种得分类型的系统n(2)驱动程序添加到内核中)驱动程序添加到内核中n对于动态驱动程序的源代码,其初始化函数和静态方式的定义不同。n要用这样一些函数:nint_initdevice_init(void);nvoid_exitdevice_exit(void);nmodule_init(device_init);nmodule_exit(de

34、vice_exit)。n(3)文件系统下设备名的创建)文件系统下设备名的创建n驱动添加安装好后,还需要修改文件系统篮球比赛是根据运动队在规定的比赛时间里得分多少来决定胜负的,因此,篮球比赛的计时计分系统是一种得分类型的系统12.6 应用程序开发应用程序开发n在Windows环境中,开发者习惯使用各种功能强大的集成编译开发环境(IDE),完成程序编辑、编译后,直接运行即可。n基于嵌入式Linux的应用程序开发过程中,目前还缺乏比较简单、高效的开发工具和手段。n应用程序最终运行平台是嵌入式目标系统,而程序开发与调试又仍然需要借助PC平台的桌面系统来完成n在程序的开发与调试过程中,需要频繁地将目标文

35、件从桌面Linux系统中加载到嵌入式目标设备中,这是一个相对比较耗时的过程。篮球比赛是根据运动队在规定的比赛时间里得分多少来决定胜负的,因此,篮球比赛的计时计分系统是一种得分类型的系统12.6.1 应用程序的应用程序的加载方式加载方式n在桌面Linux上编辑源文件n交叉编译生成ELF可执行文件后n将生成的可执行文件加载到嵌入式目标系统上运行。n程序加载有多种方式,最为常见的方式有:U盘拷贝FTP下载NFS挂载方式篮球比赛是根据运动队在规定的比赛时间里得分多少来决定胜负的,因此,篮球比赛的计时计分系统是一种得分类型的系统12.6.2 应用程序的应用程序的GDB/GDBSERVER联机调试联机调试

36、n嵌入式Linux的联机环境下,常用的调试代理工具为GDBSERVER。n它是一个轻量级的调试器,运行在目标机目标机上n与运行在主机上的主机上的GDB通过RSP(RemoteSerialProtoco1)协议进行通讯从而完成远程联机调试工作。篮球比赛是根据运动队在规定的比赛时间里得分多少来决定胜负的,因此,篮球比赛的计时计分系统是一种得分类型的系统n1.GDB/GDBSERVER调试模型调试模型n主机和目标机之间使用串口或者网络串口或者网络作为通信的通道.n2.RSP通讯协议通讯协议nRSP协议将GDBGDBSERVER间通讯的内容看做是数据包。n数据包的内容都使用ASCII字符。n每一个数据

37、包都遵循这样的格式:n$调试信息n接受方在收到数据包之后,对数据包进行校验,若正确回应“+”,反之回应。篮球比赛是根据运动队在规定的比赛时间里得分多少来决定胜负的,因此,篮球比赛的计时计分系统是一种得分类型的系统n3.调试步骤调试步骤n(1)交叉编译交叉编译被调试程序文件。nn(2)运行嵌入式目标机目标机中的GDBSERVER并加载被调试程序文件。加载被调试程序文件。n(3)运行宿主机中的宿主机中的gdb,并远程连接目标机的调试程序。篮球比赛是根据运动队在规定的比赛时间里得分多少来决定胜负的,因此,篮球比赛的计时计分系统是一种得分类型的系统12.6.3 字符设备应用程序的开发字符设备应用程序的

38、开发n编写应用程序使用设备驱动程序中的函数。n下面是一个LED应用程序的源码,假设程序文件名为ledApp.c。n#includen#includen#includen#includenintmain(intargc,char*argv)ninton;nintled_no;nintfd;nif(argc!=3|sscanf(argv1,“%d”,&led_no)!=1|sscanf(argv2,%d,&on)!=1|on 1|LED_NO 1)nfprintf(stderr,“Usage:ledappLED_NO 0|1 n”);/*0熄灭,1点亮*/nexit(1);nfd=fopen(“/dev/myLeds”,0);nif(fd0)nperror(“opendeviceleds”);nExit(1);nioctl(fd,on,led_no);nclose(fd);nreturn0;n篮球比赛是根据运动队在规定的比赛时间里得分多少来决定胜负的,因此,篮球比赛的计时计分系统是一种得分类型的系统n在宿主机上运行交叉编译命令:n#arm-linux-gccgled.coledAppn生成应用程序的可执行文件ledAppn拷贝到嵌入式目标机上并运行:n#ledtest01n由于0代表是LED1,1代表是点亮,所以就可以将LED1点亮。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com