嵌入式课件第七章
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
12
7.2 嵌入式Web控制接口与应用
• 随着基于Web的B/S模式嵌入式远程监控技术日益成熟,许 多嵌入式设备,例如,家用网关、路由器、无线AP (Access Point)以及基础嵌入式系统的远程管理监控系统 等,均为用户提供了基于Web的控制接口,用户可以从浏览 器上通过Internet查询嵌入式设备的系统状态或设置系统中的 参数。基于Web的控制接口具有界面友好、易于维护和扩展 性好等优点。 • WEB远程控制系统是在嵌入式linux系统移植入boa等网页服 务器,并在其之上制作HTML网页,可供外部浏览器访问。 浏览器平台与Web 服务器平台无关,真正实现了跨平台。 示例:运行网页浏览器显示控制界面。 EXP2/app/httpd/html/index.html
9
2、重新启动nfs 在命令行提示符下执行: [root@local]$ /etc/rc.d/init.d/nfs stop [root@local]$ /etc/rc.d/init.d/nfs start 由于默认情况下Linux启动时并不启动NFS服 务,为了避免每次都要执行启动NFS服务命令, 可以将/etc/rc.d/init.d/nfs start语句写入PC机的 /etc/rc.d/rc/local脚本文件中,当PC启动时会自动 执行该文件。 特别提醒的是,在Red Hat Linux9.0中使用 NFS服务时,要使目标机共享PC机中的某个目录, 则需要关闭防火墙。
2、boa的配置与安装
(1)、修改boa-0.94.13/boa.conf文件: 原Group nogroup Group 0 原ScriptAlias /cgi-bin/ /usr/lib/cgi-bin ScriptAlias /cgi-bin/ /var/www/cgi-bin/ 原#ServerName .here去掉前面的#号 (2)、在PC机的相关目录中建立子目录 #mkdir /etc/boa #mkdir /var/log/boa #mkdir /var/www Boa 服务的根目录 # mkdir /var/www/cgi-bin CGI 文件的目录
3
7.1.2 应用程序的移植
所谓应用程序移植,就是将应用程序从一种 运行平台(如PC)下转移到另一种运行平台(如ห้องสมุดไป่ตู้ARM)下运行。 一、为何需要移植 1、在Linux系统有许多应用程序,如果将这 些有需要的、现成的应用程序移植到嵌入式系统 中则可以大大加快开发的进度,提高开发的效率。 2、为了开发方便,先在宿主机上开发应用 程序,当调试运行成功后,再将其移植到目标开 发板上。
4
二、移植的可行性 在PC机上开发Linux应用程序采用的是本地编译 器,可以通过which命令查看,C程序用的是 /usr/bin/gcc编译器,C++程序用的是/usr/bin/g++编 译器。而进行嵌入式Linux应用程序开发,则是使用 交叉编译器,一般交叉编译器由开发系统厂商随设 备提供或从网络上下载,它们安装在/opt目录或 /usr/loacl目录下。 只要源代码中不涉及汇编指令或某些系统调用, 就可以不加修改地进行交叉编译并下载到目标平台 上运行。唯一需要注意的就是,在编译时设置合适 的参数以调用交叉编译工具,如arm-linux-gcc、 arm-linux-g++等。
15
7.2.1 嵌入式Web服务器的移植
典型的嵌入式Web 服务器有Boa ( ) 和 thttpd(/software/thttpd/)等,它们和Apache 等高性能的Web 服务器主要的区别在于它们一般是单 进程服务器,只有在完成一个用户请求后才能响应另 一个用户的请求,而无法并发响应,但这在嵌入式设 备的应用场合里已经足够了。 Boa 是一个非常小巧的Web 服务器,可执行代码 只有约60KB(在去掉调试信息后)。它是一个单任务 Web 服务器,只能依次完成用户的请求,而不会产生 出新的进程来处理并发连接请求。但Boa 支持CGI (Common Gateway Interface ),能够为CGI 程序产 生出一个进程来执行。Boa 的设计目标是速度和安全, 在其站点公布的性能测试中,Boa 的性能要好于 Apache 服务器。 有关Boa的移植具体方法和应用示例参见实验十三。 16
二、PC版boa示例
对于大多数嵌入式应用程序的开发而言, 可以先在PC机上设计、调试其功能,然后 再移植到嵌入式系统中。 嵌入式Web控制接口的应用程序开发 也可照此方法实现。以下说明PC版的boa 服务器配置、CGI程序的设计和网页的制作; 当需要移植到嵌入式系统中时,只要对boa 和CGI程序进行交叉编译、运行和测试即可。
17
1、PC版boa的编译与配置 在某个目录下建立boa-pc目录,将下 载的boa-0.94.13.tar.gz压缩包复制到该目 录下。 用tar命令解压缩后进入src子目录;执 行./configure程序,以生成基于PC平台的 Makefile文件,然后执行make命令,得到 一个boa for X86的程序。 #tar fvxz boa-0.94.13.tar.gz #cd boa-0.94.13/src #./configure #make 18
第七章
嵌入式Linux接口与应用开发
1
7.1 嵌入式应用程序开发调试
当编写完嵌入式程序代码并经过交叉编译后 生成可执行代码,接着,需要运行这些可执行代码 以测试它们是否存在错误,指定的功能是否能够实 现。如果存在语法或逻辑上的错误,则需要修改、 调试;如果没有错误且指定的功能已实现,则可以 放入根文件系统并重新制作根文件系统映像。 显然,在嵌入式应用程序开发过程中需要有 一个方便、可靠的运行、调试环境。由于嵌入式程 序是运行在开发板上,所以它的运行与调试具有特 殊性。
8
要使用NFS调试应用程序,需要先配置 PC机,然后在目标机上执行mount命令。 一般的配置步骤包括: 1、主机(host)的设置: 在主机/mnt 目录下创建nfs 目录,并利 用文本编辑器编辑修改/etc/exports 文件 (初始为空),增加如下内容: /mnt/nfs (rw,no_root_squash) 该行目的是将主机的/mnt/nfs 目录设置 为能够通过网络文件系统访问、可读、写 的目标。
13
嵌入式WEB 服务器的优点 嵌入式
• (1)远程监控终端仅需要安装浏览器即可,IE 远程监控终端仅需要安装浏览器即可, 等软件大多由操作系统自带, 或Netscape 等软件大多由操作系统自带,无需开 发专门的应用软件,降低系统成本。 发专门的应用软件,降低系统成本。 • (2)浏览器所在的监控终端平台与Web 所在的服 浏览器所在的监控终端平台与Web 务器平台无关,监控终端可以采用多种操作系统, 务器平台无关,监控终端可以采用多种操作系统, 真正实现了跨平台。 真正实现了跨平台。 • (3)操作界面简单统一,表达直观生动,用户无 操作界面简单统一,表达直观生动, 需经过专门培训。 需经过专门培训。 • (4)易于扩展新的功能,系统升级仅需在Web 服 易于扩展新的功能,系统升级仅需在Web 务器一端添加相应模块,与远程监控终端无关, 务器一端添加相应模块,与远程监控终端无关, 降低系统升级维护费用。 降低系统升级维护费用。 • (5)可提供分布式并行处理,基于Web 的测控系 可提供分布式并行处理,基于Web 统可构成一个多CPU 协调工作的分布式测控系统, 统可构成一个多CPU 协调工作的分布式测控系统, 可并行处理多个测控指令。 可并行处理多个测控指令。
6
如果应用程序较复杂,存在许多目录,每个目 录下都有Makefile文件,则逐个修改很麻烦,可 以在make命令行上设置这些变量的值,它们将覆 盖Makefile文件中同名变量的值。 例:j0507/myautomake Make CC=arm-linux-gcc 7.1.3 通过NFS调试嵌入式应用程序 NFS是通过文件系统实现资源共享的一种重要 方式,它扩充了传统文件系统的功能,允许多个 用户共享本地主机中的文件。NFS向用户隐藏了 了网络访问的细节,用户可以像访问本地文件系 统一样来存取远程主机中的共享文件。NFS是基 于C/S模式的,客户端是要访问文件的计算机, 而服务端是提供文件共享的计算机。
7
在嵌入式应用开发中,使用NFS调试程序 可以大大提高工作效率,因为它不需要每次重 新制作根文件系统的映像并下载,只要将交叉 编译好的、需要调试的程序放到PC机提供的 NFS服务的共享目录即可运行和调试。 如果存在问题,则在PC机上修改源代码, 然后再交叉编译,最后复制到NFS共享的目录 运行、调试。所以通过它使需要调试的程序运 行更简单、调试更方便;另外,使用NFS还可 以大大节省目标系统上的存储空间。
10
3、目标机执行mount命令 假设PC机的IP 地址为192.168.0.100,在目标 机的命令行提示符下执行:
[root@51Board~]$ portmap [root@51Board~]$ mount –t nfs 192.168.0.100:/mnt/nfs /mnt
上述设置实现将主机上的/mnt/nfs 目录挂载到 目标机的/mnt 目录下,并作为目标机文件系统的一 部分。这时,可以将需要传输的文件或需要运行的 程序保存在主机的/mnt/nfs 目录下,然后在目标机 对主机/mnt/nfs 上的文件进行运行或复制等相应的 处理。 一般在嵌入式系统开发中,IP地址地址通常采 用静态分配方式。
2
7.1.1 将应用程序加入嵌入式Linux系统
将交叉编译生成的可执行代码加入根文件系统, 并重新制作根文件系统映像,然后下载到开发板 运行。 显然,这种方法只适用于最后定型的应用程序。 如果在测试过程中发现错误(无论是语法、逻辑 还是功能上),就需要返回修改源程序、重新交 叉编译、再次制作根文件系统映像并再次下载到 开发板运行。 在嵌入式开发过程中有可能反复多次的修改 运行,采用这种方法去调试运行程序会浪费大量 的时间和精力。
11
7.1.4 通过Cross-gdb调试程序
使用Cross-gdb调试程序,涉及Cross-gdb和 Gdbserver两个程序。其中, Cross-gdb与Crossgcc类似,都运行于主机上进行跨平台的交叉调试; Gdbserver则运行在开发板上,它用于代替硬件 调试器与主机上的Cross-gdb通信,进行嵌入式 Linux应用程序的调试。注意:被调试的程序是由 gdbserver来启动的,尤其在需要传递命令行参数 时与gdb有区别。 由于是进行交叉调试,所以需要将下载的 GDB源代码编译成支持ARM结构的版本。具体的 编译方法和调试方法参见实验五。
交叉编译器将高级语言编译成不同硬件平台上的目标代码。
5
三、移植的方法 从移植的可行性可以看到,只要满足移植的 可行性条件,再经过交叉编译即可下载运行了。 在一些Makefile文件中,有CROSS变量,该 变量就是指定交叉编译工具的前缀,只要在make 命令行中为CROSS变量赋值,即可调用相应的工 具。例如,在存放Makefile文件的目录下执行: #make CROSS=arm-linux如果Makefile文件中没有使用CROSS变量, 则只能手动修改编译工具,为它们加上相应的前 缀,例如,在Makefile文件中将CC=gcc,修改为 CC=arm-linux-gcc。例如:实验三 示例:用make命令行参数编译两种版本的zy2
14
Web服务器与浏览器之间通信所用的 HTTP协议位于TCP/IP协议的第五层—应用 层,它基于面向链接的TCP协议,实现客 户与服务器之间的请求/响应模式,每个 TCP链接只处理一个HTTP请求。 HTTP协议包含的内容很丰富,而嵌入 式Web应用一般比较简单,所以可以对协 议进行适当的裁剪,不仅可以简化HTTP处 理的过程,提高效率,也可以缩小Web服 务器占用的空间。
7.2 嵌入式Web控制接口与应用
• 随着基于Web的B/S模式嵌入式远程监控技术日益成熟,许 多嵌入式设备,例如,家用网关、路由器、无线AP (Access Point)以及基础嵌入式系统的远程管理监控系统 等,均为用户提供了基于Web的控制接口,用户可以从浏览 器上通过Internet查询嵌入式设备的系统状态或设置系统中的 参数。基于Web的控制接口具有界面友好、易于维护和扩展 性好等优点。 • WEB远程控制系统是在嵌入式linux系统移植入boa等网页服 务器,并在其之上制作HTML网页,可供外部浏览器访问。 浏览器平台与Web 服务器平台无关,真正实现了跨平台。 示例:运行网页浏览器显示控制界面。 EXP2/app/httpd/html/index.html
9
2、重新启动nfs 在命令行提示符下执行: [root@local]$ /etc/rc.d/init.d/nfs stop [root@local]$ /etc/rc.d/init.d/nfs start 由于默认情况下Linux启动时并不启动NFS服 务,为了避免每次都要执行启动NFS服务命令, 可以将/etc/rc.d/init.d/nfs start语句写入PC机的 /etc/rc.d/rc/local脚本文件中,当PC启动时会自动 执行该文件。 特别提醒的是,在Red Hat Linux9.0中使用 NFS服务时,要使目标机共享PC机中的某个目录, 则需要关闭防火墙。
2、boa的配置与安装
(1)、修改boa-0.94.13/boa.conf文件: 原Group nogroup Group 0 原ScriptAlias /cgi-bin/ /usr/lib/cgi-bin ScriptAlias /cgi-bin/ /var/www/cgi-bin/ 原#ServerName .here去掉前面的#号 (2)、在PC机的相关目录中建立子目录 #mkdir /etc/boa #mkdir /var/log/boa #mkdir /var/www Boa 服务的根目录 # mkdir /var/www/cgi-bin CGI 文件的目录
3
7.1.2 应用程序的移植
所谓应用程序移植,就是将应用程序从一种 运行平台(如PC)下转移到另一种运行平台(如ห้องสมุดไป่ตู้ARM)下运行。 一、为何需要移植 1、在Linux系统有许多应用程序,如果将这 些有需要的、现成的应用程序移植到嵌入式系统 中则可以大大加快开发的进度,提高开发的效率。 2、为了开发方便,先在宿主机上开发应用 程序,当调试运行成功后,再将其移植到目标开 发板上。
4
二、移植的可行性 在PC机上开发Linux应用程序采用的是本地编译 器,可以通过which命令查看,C程序用的是 /usr/bin/gcc编译器,C++程序用的是/usr/bin/g++编 译器。而进行嵌入式Linux应用程序开发,则是使用 交叉编译器,一般交叉编译器由开发系统厂商随设 备提供或从网络上下载,它们安装在/opt目录或 /usr/loacl目录下。 只要源代码中不涉及汇编指令或某些系统调用, 就可以不加修改地进行交叉编译并下载到目标平台 上运行。唯一需要注意的就是,在编译时设置合适 的参数以调用交叉编译工具,如arm-linux-gcc、 arm-linux-g++等。
15
7.2.1 嵌入式Web服务器的移植
典型的嵌入式Web 服务器有Boa ( ) 和 thttpd(/software/thttpd/)等,它们和Apache 等高性能的Web 服务器主要的区别在于它们一般是单 进程服务器,只有在完成一个用户请求后才能响应另 一个用户的请求,而无法并发响应,但这在嵌入式设 备的应用场合里已经足够了。 Boa 是一个非常小巧的Web 服务器,可执行代码 只有约60KB(在去掉调试信息后)。它是一个单任务 Web 服务器,只能依次完成用户的请求,而不会产生 出新的进程来处理并发连接请求。但Boa 支持CGI (Common Gateway Interface ),能够为CGI 程序产 生出一个进程来执行。Boa 的设计目标是速度和安全, 在其站点公布的性能测试中,Boa 的性能要好于 Apache 服务器。 有关Boa的移植具体方法和应用示例参见实验十三。 16
二、PC版boa示例
对于大多数嵌入式应用程序的开发而言, 可以先在PC机上设计、调试其功能,然后 再移植到嵌入式系统中。 嵌入式Web控制接口的应用程序开发 也可照此方法实现。以下说明PC版的boa 服务器配置、CGI程序的设计和网页的制作; 当需要移植到嵌入式系统中时,只要对boa 和CGI程序进行交叉编译、运行和测试即可。
17
1、PC版boa的编译与配置 在某个目录下建立boa-pc目录,将下 载的boa-0.94.13.tar.gz压缩包复制到该目 录下。 用tar命令解压缩后进入src子目录;执 行./configure程序,以生成基于PC平台的 Makefile文件,然后执行make命令,得到 一个boa for X86的程序。 #tar fvxz boa-0.94.13.tar.gz #cd boa-0.94.13/src #./configure #make 18
第七章
嵌入式Linux接口与应用开发
1
7.1 嵌入式应用程序开发调试
当编写完嵌入式程序代码并经过交叉编译后 生成可执行代码,接着,需要运行这些可执行代码 以测试它们是否存在错误,指定的功能是否能够实 现。如果存在语法或逻辑上的错误,则需要修改、 调试;如果没有错误且指定的功能已实现,则可以 放入根文件系统并重新制作根文件系统映像。 显然,在嵌入式应用程序开发过程中需要有 一个方便、可靠的运行、调试环境。由于嵌入式程 序是运行在开发板上,所以它的运行与调试具有特 殊性。
8
要使用NFS调试应用程序,需要先配置 PC机,然后在目标机上执行mount命令。 一般的配置步骤包括: 1、主机(host)的设置: 在主机/mnt 目录下创建nfs 目录,并利 用文本编辑器编辑修改/etc/exports 文件 (初始为空),增加如下内容: /mnt/nfs (rw,no_root_squash) 该行目的是将主机的/mnt/nfs 目录设置 为能够通过网络文件系统访问、可读、写 的目标。
13
嵌入式WEB 服务器的优点 嵌入式
• (1)远程监控终端仅需要安装浏览器即可,IE 远程监控终端仅需要安装浏览器即可, 等软件大多由操作系统自带, 或Netscape 等软件大多由操作系统自带,无需开 发专门的应用软件,降低系统成本。 发专门的应用软件,降低系统成本。 • (2)浏览器所在的监控终端平台与Web 所在的服 浏览器所在的监控终端平台与Web 务器平台无关,监控终端可以采用多种操作系统, 务器平台无关,监控终端可以采用多种操作系统, 真正实现了跨平台。 真正实现了跨平台。 • (3)操作界面简单统一,表达直观生动,用户无 操作界面简单统一,表达直观生动, 需经过专门培训。 需经过专门培训。 • (4)易于扩展新的功能,系统升级仅需在Web 服 易于扩展新的功能,系统升级仅需在Web 务器一端添加相应模块,与远程监控终端无关, 务器一端添加相应模块,与远程监控终端无关, 降低系统升级维护费用。 降低系统升级维护费用。 • (5)可提供分布式并行处理,基于Web 的测控系 可提供分布式并行处理,基于Web 统可构成一个多CPU 协调工作的分布式测控系统, 统可构成一个多CPU 协调工作的分布式测控系统, 可并行处理多个测控指令。 可并行处理多个测控指令。
6
如果应用程序较复杂,存在许多目录,每个目 录下都有Makefile文件,则逐个修改很麻烦,可 以在make命令行上设置这些变量的值,它们将覆 盖Makefile文件中同名变量的值。 例:j0507/myautomake Make CC=arm-linux-gcc 7.1.3 通过NFS调试嵌入式应用程序 NFS是通过文件系统实现资源共享的一种重要 方式,它扩充了传统文件系统的功能,允许多个 用户共享本地主机中的文件。NFS向用户隐藏了 了网络访问的细节,用户可以像访问本地文件系 统一样来存取远程主机中的共享文件。NFS是基 于C/S模式的,客户端是要访问文件的计算机, 而服务端是提供文件共享的计算机。
7
在嵌入式应用开发中,使用NFS调试程序 可以大大提高工作效率,因为它不需要每次重 新制作根文件系统的映像并下载,只要将交叉 编译好的、需要调试的程序放到PC机提供的 NFS服务的共享目录即可运行和调试。 如果存在问题,则在PC机上修改源代码, 然后再交叉编译,最后复制到NFS共享的目录 运行、调试。所以通过它使需要调试的程序运 行更简单、调试更方便;另外,使用NFS还可 以大大节省目标系统上的存储空间。
10
3、目标机执行mount命令 假设PC机的IP 地址为192.168.0.100,在目标 机的命令行提示符下执行:
[root@51Board~]$ portmap [root@51Board~]$ mount –t nfs 192.168.0.100:/mnt/nfs /mnt
上述设置实现将主机上的/mnt/nfs 目录挂载到 目标机的/mnt 目录下,并作为目标机文件系统的一 部分。这时,可以将需要传输的文件或需要运行的 程序保存在主机的/mnt/nfs 目录下,然后在目标机 对主机/mnt/nfs 上的文件进行运行或复制等相应的 处理。 一般在嵌入式系统开发中,IP地址地址通常采 用静态分配方式。
2
7.1.1 将应用程序加入嵌入式Linux系统
将交叉编译生成的可执行代码加入根文件系统, 并重新制作根文件系统映像,然后下载到开发板 运行。 显然,这种方法只适用于最后定型的应用程序。 如果在测试过程中发现错误(无论是语法、逻辑 还是功能上),就需要返回修改源程序、重新交 叉编译、再次制作根文件系统映像并再次下载到 开发板运行。 在嵌入式开发过程中有可能反复多次的修改 运行,采用这种方法去调试运行程序会浪费大量 的时间和精力。
11
7.1.4 通过Cross-gdb调试程序
使用Cross-gdb调试程序,涉及Cross-gdb和 Gdbserver两个程序。其中, Cross-gdb与Crossgcc类似,都运行于主机上进行跨平台的交叉调试; Gdbserver则运行在开发板上,它用于代替硬件 调试器与主机上的Cross-gdb通信,进行嵌入式 Linux应用程序的调试。注意:被调试的程序是由 gdbserver来启动的,尤其在需要传递命令行参数 时与gdb有区别。 由于是进行交叉调试,所以需要将下载的 GDB源代码编译成支持ARM结构的版本。具体的 编译方法和调试方法参见实验五。
交叉编译器将高级语言编译成不同硬件平台上的目标代码。
5
三、移植的方法 从移植的可行性可以看到,只要满足移植的 可行性条件,再经过交叉编译即可下载运行了。 在一些Makefile文件中,有CROSS变量,该 变量就是指定交叉编译工具的前缀,只要在make 命令行中为CROSS变量赋值,即可调用相应的工 具。例如,在存放Makefile文件的目录下执行: #make CROSS=arm-linux如果Makefile文件中没有使用CROSS变量, 则只能手动修改编译工具,为它们加上相应的前 缀,例如,在Makefile文件中将CC=gcc,修改为 CC=arm-linux-gcc。例如:实验三 示例:用make命令行参数编译两种版本的zy2
14
Web服务器与浏览器之间通信所用的 HTTP协议位于TCP/IP协议的第五层—应用 层,它基于面向链接的TCP协议,实现客 户与服务器之间的请求/响应模式,每个 TCP链接只处理一个HTTP请求。 HTTP协议包含的内容很丰富,而嵌入 式Web应用一般比较简单,所以可以对协 议进行适当的裁剪,不仅可以简化HTTP处 理的过程,提高效率,也可以缩小Web服 务器占用的空间。