第七章 嵌入式应用程序开发

上传人:博****1 文档编号:571327722 上传时间:2024-08-10 格式:PPT 页数:27 大小:57KB
返回 下载 相关 举报
第七章 嵌入式应用程序开发_第1页
第1页 / 共27页
第七章 嵌入式应用程序开发_第2页
第2页 / 共27页
第七章 嵌入式应用程序开发_第3页
第3页 / 共27页
第七章 嵌入式应用程序开发_第4页
第4页 / 共27页
第七章 嵌入式应用程序开发_第5页
第5页 / 共27页
点击查看更多>>
资源描述

《第七章 嵌入式应用程序开发》由会员分享,可在线阅读,更多相关《第七章 嵌入式应用程序开发(27页珍藏版)》请在金锄头文库上搜索。

1、第七章第七章 嵌入式应用程序开发嵌入式应用程序开发 学习目标:学习目标: 1 1、了解嵌入式应用程序的基本架构、了解嵌入式应用程序的基本架构 2 2、熟悉嵌入式应用程序的开发流程、熟悉嵌入式应用程序的开发流程 3 3、掌握、掌握LinuxLinux环境下嵌入式应用程序的开发方法环境下嵌入式应用程序的开发方法7.17.1嵌入式应用程序的体系架构嵌入式应用程序的体系架构 嵌入式系统由嵌入式硬件和嵌入式软件组成。嵌嵌入式系统由嵌入式硬件和嵌入式软件组成。嵌入式软件呈现明显的层次化倾向,从与硬件相关的设入式软件呈现明显的层次化倾向,从与硬件相关的设备驱动、备驱动、BSPBSP(板级支持包)到操作系统内

2、核、板级支持包)到操作系统内核、FSFS文件文件系统、系统、GUIGUI图形界面、数据库,以及用户层的应用软件图形界面、数据库,以及用户层的应用软件等,各部分可以清晰地划分出来,如图所示等,各部分可以清晰地划分出来,如图所示: : 7.27.2嵌入式应用程序的开发流程嵌入式应用程序的开发流程 嵌入式应用程序的开发与硬嵌入式应用程序的开发与硬件的关系密不可分,从软硬件系统件的关系密不可分,从软硬件系统到平台选择、设计、开发、测试、到平台选择、设计、开发、测试、集成,整个过程都需要软硬件并行集成,整个过程都需要软硬件并行交互进行。这样,嵌入式应用程序交互进行。这样,嵌入式应用程序的开发已成为一项复

3、杂的系统工程,的开发已成为一项复杂的系统工程,其开发必须遵循系统工程与软件工其开发必须遵循系统工程与软件工程的要求。程的要求。 7.27.2嵌入式应用程序的开发流程嵌入式应用程序的开发流程 1.1.系统需求分析系统需求分析 系统需求一般分为功能性需求和非功能性需系统需求一般分为功能性需求和非功能性需求两个方面。功能性需求是系统的基本功能,如求两个方面。功能性需求是系统的基本功能,如输入输出信号、操作方式等;非功能需求包括系输入输出信号、操作方式等;非功能需求包括系统性能、成本、功耗、体积、重量等因素。在这统性能、成本、功耗、体积、重量等因素。在这一阶段要对拟开发的项目进行可行性分析,可从一阶段

4、要对拟开发的项目进行可行性分析,可从两个方面入手:一是分析技术的可行性,对现有两个方面入手:一是分析技术的可行性,对现有软件和成熟的技术进行研究,看能否实现项目要软件和成熟的技术进行研究,看能否实现项目要求;二是分析经费的可行性,看目前的经济条件求;二是分析经费的可行性,看目前的经济条件能否适应项目要求,最后写出一份系统需求分析能否适应项目要求,最后写出一份系统需求分析报告。报告。 7.27.2嵌入式应用程序的开发流程嵌入式应用程序的开发流程 2.2.体系结构设计体系结构设计 体体系系结结构构设设计计,描描述述系系统统如如何何实实现现系系统统功功能能和和非非功功能能需需求求,包包括括对对硬硬件

5、件、软软件件和和执执行行机机构构的的功功能能划划分分,以以及及系系统统的的软软件件和和硬硬件件的的选选型型等等。一一个好的体系结构是设计成功与否的关键。个好的体系结构是设计成功与否的关键。 在在这这一一阶阶段段要要解解决决怎怎么么做做的的问问题题,可可分分为为系系统统框框架架设设计计和和详详细细设设计计两两个个阶阶段段。框框架架设设计计根根据据需需求求分分析析的的结结果果和和系系统统设设计计目目标标,将将系系统统分分解解为为若若干干个个子子系系统统,确确定定每每个个子子系系统统的的功功能能、各各子子系系统统之之间间的的关关联联。详详细细设设计计确确定定各各个个子子系系统统的的名名称称、功能描述

6、、算法方案、输入输出接口与信息等等。功能描述、算法方案、输入输出接口与信息等等。7.27.2嵌入式应用程序的开发流程嵌入式应用程序的开发流程 3.3.硬件、软件协同设计硬件、软件协同设计 根根据据上上一一阶阶段段的的设设计计方方案案,基基于于体体系系结结构构,对对系系统统的的硬硬件件和和软软件件进进行行详详细细设设计计。为为了了缩缩短短系系统统开开发发周周期期,设设计计往往往往是是并并行行的的。嵌嵌入入式式系系统统设设计计的的工工作作大大部部分分集集中中在在软软件件设设计计上上,采采用用面面向向对对象象、组组件件技技术术、模模块块化化设设计计是是现现代代软软件件工工程程常常用用的方法。的方法。

7、7.27.2嵌入式应用程序的开发流程嵌入式应用程序的开发流程 4.4.系统集成系统集成 系系统统集集成成是是把把系系统统的的软软件件、硬硬件件和和执执行行装装置置集集成成在在一一起起,进进行行调调试试,发发现现并并改改进进模模块块设设计计过过程中的错误。程中的错误。7.27.2嵌入式应用程序的开发流程嵌入式应用程序的开发流程 5.5.总体测试总体测试 一一般般在在需需求求阶阶段段就就开开始始写写测测试试计计划划,包包括括测测试试用用例例、测测试试标标准准和和测测试试方方法法。测测试试可可分分为为模模块块测测试试、集集成成测测试试、系系统统测测试试和和验验收收测测试试等等。模模块块测测试试一一般

8、般由由程程序序编编写写者者进进行行,按按模模块块或或类类进进行行测测试试。集集成成测测试试是是将将几几个个或或所所有有模模块块集集成成后后进进行行的的测测试试,测测试试模模块块的的接接口口、关关联联,共共同同工工作作所所完完成成的的功功能能和和达达到到的的性性能能。系系统统测测试试则则是是从从用用户户的的角角度度出出发发进进行行的的测测试试,包包括括对对最最终终运运行行环环境境的的测测试试。接接收收测测试试是是根根据据项项目目需需求求的的描描述述,测测试试系系统统是是否否达达到到接接收收标标准准。每每项项测测试试都都要要求求有有完完整整的的测测试试记记录录,开开发发者者要要根根据据测测试试结结

9、果果修修改改程程序序。程程序序修修改改完完以以后后,再再进进行行回回归归测测试试。前前一一阶阶段段的的测测试试若若没没有有发现问题,则进入下一阶段的测试。发现问题,则进入下一阶段的测试。7.27.2嵌入式应用程序的开发流程嵌入式应用程序的开发流程 6.6.运行维护运行维护 运运行行程程序序是是软软件件设设计计的的最最终终目目标标,到到此此设设计计过过程程已已基基本本完完成成。但但是是由由于于前前面面几几个个环环节节中中可可能能因因为为考考虑虑不不周周而而导导致致在在运运行行过过程程中中出出现现各各种种可可能能的的问问题题,这这时时开开发发者者有有责责任任进进行行维维护护,返返回回到到问问题题环

10、环节节进进行行处处理理,如此反复可使得最终程序能较好地满足用户需求。如此反复可使得最终程序能较好地满足用户需求。7.3 7.3 LinuxLinux环境下环境下Hello WorldHello World应用应用程序的实现程序的实现 1.1.熟悉目标机硬件资源熟悉目标机硬件资源 开开发发嵌嵌入入式式应应用用程程序序的的第第一一步步是是熟熟悉悉目目标标机机硬硬件件资资源源,了了解解处处理理器器的的型型号号与与特特点点,熟熟悉悉存存储储器器及及I/OI/O端端口口的的地地址址分分配配。最最为为理理想想的的状状况况是是根根据据应应用用需需要要自自己己设设计计目目标标机机。在在缺缺乏乏数数字字电电路路

11、、模模拟拟电电路路、电电路路板板设设计计知知识识和和技技能能的的情情况况下下,可可通通过过购购买买开开发发板板作作为为开开发发阶阶段段的的目目标标机机,待待软软件件开开发发完完成成后后,如如果果需需要要批批量量生成所开发的产品,则再重新设计与生产目标机。生成所开发的产品,则再重新设计与生产目标机。7.3 7.3 LinuxLinux环境下环境下Hello WorldHello World应用应用程序的实现程序的实现 2.2.配置开发环境配置开发环境 开开发发应应用用程程序序需需要要开开发发环环境境,包包括括安安装装LinuxLinux虚虚拟拟机机、交交叉叉编编译译器器、DNWDNW或或超超级级

12、终终端端、XmanagerXmanager系系统统,配配置置串串口口、并并口口参参数数,关关闭闭防防火火墙墙,架架设设SMBSMB和和NFSNFS服服务器,建立面向目标机和务器,建立面向目标机和LinuxLinux虚拟机连接等。虚拟机连接等。7.3 7.3 LinuxLinux环境下环境下Hello WorldHello World应用应用程序的实现程序的实现 3.3.建立引导程序建立引导程序 购购买买的的目目标标机机一一般般都都带带有有已已经经编编译译好好的的BootLoaderBootLoader,可可能能是是vivivivi,也也可可能能是是ubootuboot等等。如如果果目目标标机机

13、中中已已经经建建立立BootLoaderBootLoader,则则可可以以直直接接使使用用。如如果果没没有有,或或开开发发者者对对目目标标机机自自带带的的BootLoaderBootLoader不不够够满满意意,则则可可以以重重新新烧烧写写。需需要要重重新新烧烧写写的的BootLoaderBootLoader可可以以在在系系统统自自带带的的BootLoaderBootLoader基基础础上上进进行行修修改改,也也可可以以从从官官方方网网站站下下载载一一个个基基本本的的BootLoaderBootLoader,再再根根据据应应用用系系统统的的设设计计目目标标进进行行修修改改和和编编译译,生生成成

14、一一个个最最适适合合应应用用需需求求的的BootLoaderBootLoader,最后再烧写到目标机中。最后再烧写到目标机中。7.3 7.3 LinuxLinux环境下环境下Hello WorldHello World应用应用程序的实现程序的实现 4.4.下载下载LinuxLinux内核内核 以以LinuxLinux作作为为操操作作系系统统的的嵌嵌入入式式系系统统,其其内内核核是是存存储储在在NAND NAND FlashFlash特特定定区区域域中中的的。对对于于购购买买的的目目标标机机,一一般般随随机机带带有有LinuxLinux内内核核程程序序。如如果果没没有有,则则应应该该自自己己动动

15、手手编编辑辑和和编编译译。如如果果虽虽然然已已有有,但但不不能能满满足足应应用用系系统统的的需需求求,则则可可以以如如前前所所述述,先先从从官官方方网网站站下下载载一一个个基基本本内内核核,然然后后根根据据需需要要进进行行裁裁剪剪,最最后后再再编编译成内核映像文件,下载到译成内核映像文件,下载到NAND FLASHNAND FLASH的内核区域。的内核区域。7.3 7.3 LinuxLinux环境下环境下Hello WorldHello World应用应用程序的实现程序的实现 5.5.建立根文件系统建立根文件系统 在在为为一一个个嵌嵌入入式式系系统统开开发发应应用用程程序序之之前前,必必须须在

16、在目目标标机机的的NAND NAND FLASHFLASH中中建建立立根根文文件件系系统统。根根据据应应用用需需求求的的差差别别,可可以以选选择择建建立立不不同同种种类类的的根根文文件件系系统统。YAFFSYAFFS根根文文件件系系统统以以其其存存取取速速度度快快、占占用用系系统统资资源源少少、支支持持大大文文件件和和良良好好的的垃垃圾圾收收集集机机制制,得得到到大大多多数数开开发发者的认同者的认同 。7.3 7.3 LinuxLinux环境下环境下Hello WorldHello World应用应用程序的实现程序的实现 5.5.建立根文件系统建立根文件系统 建建立立根根文文件件系系统统的的一

17、一般般方方法法是是,先先从从官官方方网网站站下下载载BusyboxBusybox工工具具进进行行功功能能裁裁剪剪,产产生生一一个个最最基基本本的的根根文文件件系系统统,再再根根据据应应用用需需求求添添加加其其他他程程序序。由由于于默默认认的的启启动动脚脚本本一一般般都都不不会会符符合合应应用用需需要要,所所以以就就要要修修改改根根文文件件系系统统中中的的启启动动脚脚本本,它它的的存存放放位位置置位位于于/etc/etc目目录录下下 , 包包 括括 /etc/etc/init.d/rc.Sinit.d/rc.S、 /etc/profile/etc/profile、/etc/.profile/et

18、c/.profile等等,自自动动挂挂载载文文件件系系统统的的配配置置文文件件/etc/etc/fstabfstab,具具体体情情况况会会随随系系统统不不同同而而不不同同。根根文文件件系系统统在在嵌嵌入入式式系系统统中中一一般般为为只只读读,需需要要使使用用mkcramfsmkcramfs等工具产生映像文件。等工具产生映像文件。7.3 7.3 LinuxLinux环境下环境下Hello WorldHello World应用程应用程序的实现序的实现 6.6.编写应用程序编写应用程序当当以以上上工工作作都都成成功功完完成成以以后后,一一个个应应用用系系统统的的软软硬硬件件工工作作平平台台准准备备完

19、完毕毕,接接下下来来的的工工作作就就是是编编写写应应用用程程序序了。了。操作步骤如下:操作步骤如下:( 1 1) 首首 先先 建建 立立 工工 作作 目目 录录 , 在在 此此 假假 设设 为为/usr/local/hello/usr/local/hello。(2 2)选用文本编译器选用文本编译器vivi,编写程序源代码。编写程序源代码。对于本例源代码比较简单,如下所示:对于本例源代码比较简单,如下所示:#include #include intint main(void) main(void) printf(Helloprintf(Hello, World! n);, World! n);r

20、eturn 0;return 0; 保存文件名为保存文件名为hello.chello.c。7.3 7.3 LinuxLinux环境下环境下Hello WorldHello World应用程应用程序的实现序的实现 6.6.编写应用程序编写应用程序(3 3)编译在目标机上运行的)编译在目标机上运行的hellohello程序:程序:# # cdcd / /tmptmp# arm-# arm-linux-gcclinux-gcc o hello hello.c o hello hello.c 如如果果在在LinuxLinux虚虚拟拟机机中中运运行行,该该程程序序将将出出现现如如下下错错误结果:误结果:

21、# ./hello# ./hellobash: hello: cannot execute binary filebash: hello: cannot execute binary file 由由于于编编译译器器采采用用的的是是arm-arm-linux-gcclinux-gcc编编译译器器,因因此此使使用用上上述述命命令令编编译译出出来来的的程程序序只只能能在在ARMARM处处理理器器上上运运行,不能在行,不能在X86X86平台上运行。平台上运行。 7.3 7.3 LinuxLinux环境下环境下Hello WorldHello World应用程应用程序的实现序的实现 7.7.调试应用程序

22、调试应用程序调调试试嵌嵌入入式式LinuxLinux应应用用程程序序一一般般通通过过网网络络共共享享方方式式进进行,具体操作步骤为:行,具体操作步骤为:(1 1)在宿主机上建立)在宿主机上建立NFSNFS网络共享网络共享将将/tools/application/tools/application配置为配置为NFSNFS共享目录。共享目录。(2 2)将共享目录挂载到目标机)将共享目录挂载到目标机通通过过mountmount命命令令,将将宿宿主主机机中中的的应应用用程程序序目目录录挂挂载载到到目标机的目标机的/ /mntmnt中。中。在在宿宿主主机机上上打打开开XmanagerXmanager X

23、shellXshell窗窗口口,启启动动到到目目标标机的连接,挂载共享目录:机的连接,挂载共享目录:/mnt/yaffsmnt/yaffs mount mount t t nfsnfs o o nolocknolock 192.168.0.100:/tools/application /192.168.0.100:/tools/application /mntmnt/host/host7.3 7.3 LinuxLinux环境下环境下Hello WorldHello World应用程应用程序的实现序的实现 7.7.调试应用程序调试应用程序接着就可以调试应用程序了:接着就可以调试应用程序了:/mn

24、t/yaffscdmnt/yaffscd / /mntmnt/host/host/mntmnt/host./hello/host./helloHello world!Hello world! 根根据据运运行行结结果果,分分析析应应用用程程序序的的正正确确性性。如如果果发发现现 问问 题题 , 则则 可可 以以 再再 回回 到到 宿宿 主主 机机 的的/tools/application/hello/tools/application/hello目目录录下下,打打开开hello.chello.c源源程程序序,修修改改、编编译译,再再转转到到XmanagerXmanager XshellXshel

25、l目目标标机机窗口中进行调试,如此反复,直到程序达到设计目标。窗口中进行调试,如此反复,直到程序达到设计目标。7.3 7.3 LinuxLinux环境下环境下Hello WorldHello World应用程应用程序的实现序的实现 8 8. .下载应用程序下载应用程序 调调试试完完成成的的应应用用程程序序最最终终需需要要下下载载到到目目标标机机中中,下下载载时时可可以以加加入入目目标标机机的的根根文文件件系系统统,也也可可以以存存储储到到yaffsyaffs文文件件系系统统中中。下下载载可可以以选选择择串串口口、网网络络或或USBUSB方方式,一般通过网络共享方式。式,一般通过网络共享方式。7

26、.3 7.3 LinuxLinux环境下环境下Hello WorldHello World应用程应用程序的实现序的实现 8 8. .下载应用程序下载应用程序(1 1)加入目标机根文件系统)加入目标机根文件系统具体操作步骤如下:具体操作步骤如下: 首首先先确确定定加加入入方方案案,即即在在目目标标机机的的根根文文件件系系统统下下,以以何何种种方方式式存存储储应应用用程程序序。一一般般可可将将应应用用程程序序保保存存在在目目标标机机的的/usr/usr目目录下。录下。 然然后后,进进入入宿宿主主机机的的LinuxLinux虚虚拟拟机机中中,按按设设计计方方案案,将将应应用用程序拷贝到待制作的目标机

27、根文件系统中。程序拷贝到待制作的目标机根文件系统中。# #cdcd /tools/ /tools/rootfs/usrrootfs/usr# #mkdirmkdir hello hello#cp /tools/application/hello/hello /hello#cp /tools/application/hello/hello /hello接接 着着 , 通通 过过 mkcramfsmkcramfs工工 具具 重重 新新 生生 成成 目目 标标 机机 根根 文文 件件 系系 统统root.cramfsroot.cramfs。 最最后后,借借助助vivivivi下下的的tftptftp

28、命命令令,将将root.cramfsroot.cramfs下下载载到到目目标标机中。机中。7.3 7.3 LinuxLinux环境下环境下Hello WorldHello World应用程应用程序的实现序的实现 8 8. .下载应用程序下载应用程序(2 2)加入目标机)加入目标机yaffsyaffs文件系统文件系统 因因为为yaffsyaffs文文件件系系统统是是可可读读写写系系统统,因因此此,当当确确定定将将应应用用程程序序加加入入yaffsyaffs系系统统时时,可可以以不不必必重重新新下下载载目目标标机机根根文文件件系系统统,只只需需要要将将应应用用程程序序通通过过网网络络共共享享方方式

29、式拷拷贝贝到到目目标标机机指指定定目目录录中中即即可可。具具体体操操作作如如下下:首首先先,通通过过mountmount命命令令,将将宿宿主主机机中中的的应应用用程程序序目目录录挂挂载载到到目目标标机的机的/ /mntmnt中:中:/mnt/yaffsmnt/yaffs mount mount t t nfsnfs o o nolocknolock 192.168.0.100:/tools/application /192.168.0.100:/tools/application /mntmnt/host/host接接着着进进入入应应用用程程序序共共享享目目录录,将将应应用用程程序序拷拷贝贝到

30、到yaffsyaffs文文件件系系统的指定目录中:统的指定目录中:/mnt/yaffsmkdirmnt/yaffsmkdir hello hello/mnt/yaffscpmnt/yaffscp / /mntmnt/host/hello/hello hello/host/hello/hello hello7.3 7.3 LinuxLinux环境下环境下Hello WorldHello World应用程应用程序的实现序的实现 9.9.应用程序的执行应用程序的执行 应用程序的执行有多种方式,以下是三种常用方式:应用程序的执行有多种方式,以下是三种常用方式:(1 1)直接运行)直接运行 如如果果应应

31、用用程程序序是是类类似似于于hellohello的的程程序序,则则可可以以在在目目标机标机LinuxLinux下直接运行。下直接运行。/mnt/yaffscdmnt/yaffscd /hello /hello/mnt/yaffs./hellomnt/yaffs./hello7.3 7.3 LinuxLinux环境下环境下Hello WorldHello World应用程应用程序的实现序的实现 9.9.应用程序的执行应用程序的执行 应用程序的执行有多种方式,以下是三种常用方式:应用程序的执行有多种方式,以下是三种常用方式:(2 2)通过脚本文件运行通过脚本文件运行 当当应应用用程程序序的的启启动

32、动需需要要执执行行多多个个命命令令时时,一一般般将将多多个个需需要要执执行行的的命命令令编编写写在在一一个个. .shsh的的脚脚本本文文件件中中,通通过过执行脚本文件来启动应用程序。执行脚本文件来启动应用程序。/mnt/yaffsvimnt/yaffsvi hello.shhello.sh/预先执行的命令行预先执行的命令行./hello./hello保保存存后后,产产生生hello.shhello.sh脚脚本本文文件件。启启动动应应用用程程序序时时,执执行如下命令:行如下命令:/mnt/yaffshello.shmnt/yaffshello.shHello world!Hello world

33、!7.3 7.3 LinuxLinux环境下环境下Hello WorldHello World应用程应用程序的实现序的实现 9.9.应用程序的执行应用程序的执行 应用程序的执行有多种方式,以下是三种常用方式:应用程序的执行有多种方式,以下是三种常用方式:(3 3)开机自动运行)开机自动运行 如如果果应应用用程程序序需需要要在在开开机机时时自自动动运运行行,则则可可将将需需要要运行的程序名编写在运行的程序名编写在/etc/etc/rc.d/rc.localrc.d/rc.local文件中。文件中。 /mnt/yaffsvimnt/yaffsvi rc.localrc.local /添加启动应用程

34、序的命令行添加启动应用程序的命令行 / /mnt/yaffs/hello/hellomnt/yaffs/hello/hello保存后,重启目标机,将在显示屏中出现保存后,重启目标机,将在显示屏中出现Hello world!Hello world!思考与练习思考与练习1 1、简述嵌入式应用程序的体系架构。、简述嵌入式应用程序的体系架构。2 2、嵌嵌入入式式应应用用程程序序与与嵌嵌入入式式文文件件系系统统的的关关系系如何?如何? 3 3、简述嵌入式应用程序的一般开发流程。、简述嵌入式应用程序的一般开发流程。4 4、以以hellohello程程序序为为例例,简简述述嵌嵌入入式式应应用用程程序序的的开发步骤。开发步骤。5 5、简简述述将将hellohello程程序序下下载载到到目目标标机机yaffsyaffs文文件件系统的一般步骤。系统的一般步骤。

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 大杂烩/其它

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号