嵌入式课件第七章.pptVIP

  • 3
  • 0
  • 约3.34万字
  • 约 114页
  • 2018-06-27 发布于河南
  • 举报
嵌入式课件第七章

第七章 嵌入式Linux接口与应用开发 7.1 嵌入式应用程序开发调试 当编写完嵌入式程序代码并经过交叉编译后生成可执行代码,接着,需要运行这些可执行代码以测试它们是否存在错误,指定的功能是否能够实现。如果存在语法或逻辑上的错误,则需要修改、调试;如果没有错误且指定的功能已实现,则可以放入根文件系统并重新制作根文件系统映像。 显然,在嵌入式应用程序开发过程中需要有一个方便、可靠的运行、调试环境。由于嵌入式程序是运行在开发板上,所以它的运行与调试具有特殊性。 7.1.1 将应用程序加入嵌入式Linux系统 将交叉编译生成的可执行代码加入根文件系统,并重新制作根文件系统映像,然后下载到开发板运行。 显然,这种方法只适用于最后定型的应用程序。如果在测试过程中发现错误(无论是语法、逻辑还是功能上),就需要返回修改源程序、重新交叉编译、再次制作根文件系统映像并再次下载到开发板运行。 在嵌入式开发过程中有可能反复多次的修改运行,采用这种方法去调试运行程序会浪费大量的时间和精力。 7.1.2 应用程序的移植 所谓应用程序移植,就是将应用程序从一种运行平台(如PC)下转移到另一种运行平台(如ARM)下运行。 一、为何需要移植 1、在Linux系统有许多应用程序,如果将这些有需要的、现成的应用程序移植到嵌入式系统中则可以大大加快开发的进度,提高开发的效率。 2、为了开发方便,先在宿主机上开发应用程序,当调试运行成功后,再将其移植到目标开发板上。 二、移植的可行性 在PC机上开发Linux应用程序采用的是本地编译器,可以通过which命令查看,C程序用的是/usr/bin/gcc编译器,C++程序用的是/usr/bin/g++编译器。而进行嵌入式Linux应用程序开发,则是使用交叉编译器,一般交叉编译器由开发系统厂商随设备提供或从网络上下载,它们安装在/opt目录或/usr/loacl目录下。 只要源代码中不涉及汇编指令或某些系统调用,就可以不加修改地进行交叉编译并下载到目标平台上运行。唯一需要注意的就是,在编译时设置合适的参数以调用交叉编译工具,如arm-linux-gcc、arm-linux-g++等。 三、移植的方法 从移植的可行性可以看到,只要满足移植的可行性条件,再经过交叉编译即可下载运行了。 在一些Makefile文件中,有CROSS变量,该变量就是指定交叉编译工具的前缀,只要在make命令行中为CROSS变量赋值,即可调用相应的工具。例如,在存放Makefile文件的目录下执行: #make CROSS=arm-linux- 如果Makefile文件中没有使用CROSS变量,则只能手动修改编译工具,为它们加上相应的前缀,例如,在Makefile文件中将CC=gcc,修改为CC=arm-linux-gcc。例如:实验三 示例:用make命令行参数编译两种版本的zy2 如果应用程序较复杂,存在许多目录,每个目录下都有Makefile文件,则逐个修改很麻烦,可以在make命令行上设置这些变量的值,它们将覆盖Makefile文件中同名变量的值。 7.1.3 通过NFS调试嵌入式应用程序 NFS是通过文件系统实现资源共享的一种重要方式,它扩充了传统文件系统的功能,允许多个用户共享本地主机中的文件。NFS向用户隐藏了了网络访问的细节,用户可以像访问本地文件系统一样来存取远程主机中的共享文件。NFS是基于C/S模式的,客户端是要访问文件的计算机,而服务端是提供文件共享的计算机。 在嵌入式应用开发中,使用NFS调试程序可以大大提高工作效率,因为它不需要每次重新制作根文件系统的映像并下载,只要将交叉编译好的、需要调试的程序放到PC机提供的NFS服务的共享目录即可运行和调试。 如果存在问题,则在PC机上修改源代码,然后再交叉编译,最后复制到NFS共享的目录运行、调试。所以通过它使需要调试的程序运行更简单、调试更方便;另外,使用NFS还可以大大节省目标系统上的存储空间。 要使用NFS调试应用程序,需要先配置PC机,然后在目标机上执行mount命令。一般的配置步骤包括: 1、主机(host)的设置: 在主机/mnt 目录下创建nfs 目录,并利用文本编辑器编辑修改/etc/exports 文件(初始为空),增加如下内容: /mnt/nfs (rw,no_root_squash) 该行目的是将主机的/mnt/nfs 目录设置为能够通过网络文件系统访问、可读、写的目标。 2、重新启动nfs 在命令行提示符下执行: [ro

文档评论(0)

1亿VIP精品文档

相关文档