嵌入式应用程序开发

上传人:宝路 文档编号:47916934 上传时间:2018-07-06 格式:PPT 页数:27 大小:57.33KB
返回 下载 相关 举报
嵌入式应用程序开发_第1页
第1页 / 共27页
嵌入式应用程序开发_第2页
第2页 / 共27页
嵌入式应用程序开发_第3页
第3页 / 共27页
嵌入式应用程序开发_第4页
第4页 / 共27页
嵌入式应用程序开发_第5页
第5页 / 共27页
点击查看更多>>
资源描述

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

1、第七章 嵌入式应用程序开发学习目标:1、了解嵌入式应用程序的基本架构2、熟悉嵌入式应用程序的开发流程3、掌握Linux环境下嵌入式应用程序的开发方法7.1嵌入式应用程序的体系架构嵌入式系统由嵌入式硬件和嵌入式软件组成。嵌 入式软件呈现明显的层次化倾向,从与硬件相关的设 备驱动、BSP(板级支持包)到操作系统内核、FS文件 系统、GUI图形界面、数据库,以及用户层的应用软件 等,各部分可以清晰地划分出来,如图所示:7.2嵌入式应用程序的开发流程 嵌入式应用程序的开发与硬 件的关系密不可分,从软硬件系统 到平台选择、设计、开发、测试、 集成,整个过程都需要软硬件并行 交互进行。这样,嵌入式应用程序

2、 的开发已成为一项复杂的系统工程 ,其开发必须遵循系统工程与软件 工程的要求。 7.2嵌入式应用程序的开发流程 1.系统需求分析系统需求一般分为功能性需求和非功能性需 求两个方面。功能性需求是系统的基本功能,如 输入输出信号、操作方式等;非功能需求包括系 统性能、成本、功耗、体积、重量等因素。在这 一阶段要对拟开发的项目进行可行性分析,可从 两个方面入手:一是分析技术的可行性,对现有 软件和成熟的技术进行研究,看能否实现项目要 求;二是分析经费的可行性,看目前的经济条件 能否适应项目要求,最后写出一份系统需求分析 报告。 7.2嵌入式应用程序的开发流程 2.体系结构设计 体系结构设计,描述系统

3、如何实现系统功能 和非功能需求,包括对硬件、软件和执行机构的 功能划分,以及系统的软件和硬件的选型等。一 个好的体系结构是设计成功与否的关键。在这一阶段要解决怎么做的问题,可分为系 统框架设计和详细设计两个阶段。框架设计根据 需求分析的结果和系统设计目标,将系统分解为 若干个子系统,确定每个子系统的功能、各子系 统之间的关联。详细设计确定各个子系统的名称 、功能描述、算法方案、输入输出接口与信息等 等。7.2嵌入式应用程序的开发流程 3.硬件、软件协同设计根据上一阶段的设计方案,基于体系结构, 对系统的硬件和软件进行详细设计。为了缩短系 统开发周期,设计往往是并行的。嵌入式系统设 计的工作大部

4、分集中在软件设计上,采用面向对 象、组件技术、模块化设计是现代软件工程常用 的方法。7.2嵌入式应用程序的开发流程 4.系统集成系统集成是把系统的软件、硬件和执行装置 集成在一起,进行调试,发现并改进模块设计过 程中的错误。7.2嵌入式应用程序的开发流程 5.总体测试一般在需求阶段就开始写测试计划,包括测试用 例、测试标准和测试方法。测试可分为模块测试、集 成测试、系统测试和验收测试等。模块测试一般由程 序编写者进行,按模块或类进行测试。集成测试是将 几个或所有模块集成后进行的测试,测试模块的接口 、关联,共同工作所完成的功能和达到的性能。系统 测试则是从用户的角度出发进行的测试,包括对最终

5、运行环境的测试。接收测试是根据项目需求的描述, 测试系统是否达到接收标准。每项测试都要求有完整 的测试记录,开发者要根据测试结果修改程序。程序 修改完以后,再进行回归测试。前一阶段的测试若没 有发现问题,则进入下一阶段的测试。7.2嵌入式应用程序的开发流程 6.运行维护运行程序是软件设计的最终目标,到此设计过程 已基本完成。但是由于前面几个环节中可能因为考虑 不周而导致在运行过程中出现各种可能的问题,这时 开发者有责任进行维护,返回到问题环节进行处理, 如此反复可使得最终程序能较好地满足用户需求。7.3 Linux环境下Hello World应用 程序的实现 1.熟悉目标机硬件资源开发嵌入式应

6、用程序的第一步是熟悉目标机硬件 资源,了解处理器的型号与特点,熟悉存储器及I/O 端口的地址分配。最为理想的状况是根据应用需要自 己设计目标机。在缺乏数字电路、模拟电路、电路板 设计知识和技能的情况下,可通过购买开发板作为开 发阶段的目标机,待软件开发完成后,如果需要批量 生成所开发的产品,则再重新设计与生产目标机。7.3 Linux环境下Hello World应用 程序的实现 2.配置开发环境开发应用程序需要开发环境,包括安装Linux虚拟 机、交叉编译器、DNW或超级终端、Xmanager系统, 配置串口、并口参数,关闭防火墙,架设SMB和NFS服 务器,建立面向目标机和Linux虚拟机连

7、接等。7.3 Linux环境下Hello World应用 程序的实现 3.建立引导程序购买的目标机一般都带有已经编译好的BootLoader ,可能是vivi,也可能是uboot等。如果目标机中已 经建立BootLoader,则可以直接使用。如果没有,或 开发者对目标机自带的BootLoader不够满意,则可以 重新烧写。需要重新烧写的BootLoader可以在系统自 带的BootLoader基础上进行修改,也可以从官方网站 下载一个基本的BootLoader,再根据应用系统的设计 目标进行修改和编译,生成一个最适合应用需求的 BootLoader,最后再烧写到目标机中。7.3 Linux环境

8、下Hello World应用 程序的实现 4.下载Linux内核以Linux作为操作系统的嵌入式系统,其内核是存储在NAND Flash特定区域中的。对于购买的目标机,一般随机带有Linux 内核程序。如果没有,则应该自己动手编辑和编译。如果虽然 已有,但不能满足应用系统的需求,则可以如前所述,先从官 方网站下载一个基本内核,然后根据需要进行裁剪,最后再编 译成内核映像文件,下载到NAND FLASH的内核区域。7.3 Linux环境下Hello World应用 程序的实现 5.建立根文件系统在为一个嵌入式系统开发应用程序之前,必须在 目标机的NAND FLASH中建立根文件系统。根据应用需

9、求的差别,可以选择建立不同种类的根文件系统。 YAFFS根文件系统以其存取速度快、占用系统资源少 、支持大文件和良好的垃圾收集机制,得到大多数开 发者的认同 。7.3 Linux环境下Hello World应用 程序的实现 5.建立根文件系统建立根文件系统的一般方法是,先从官方网站下载 Busybox工具进行功能裁剪,产生一个最基本的根文 件系统,再根据应用需求添加其他程序。由于默认的 启动脚本一般都不会符合应用需要,所以就要修改根 文件系统中的启动脚本,它的存放位置位于/etc目录 下,包括/etc/init.d/rc.S、/etc/profile、 /etc/.profile等,自动挂载文

10、件系统的配置文件 /etc/fstab,具体情况会随系统不同而不同。根文件 系统在嵌入式系统中一般为只读,需要使用mkcramfs 等工具产生映像文件。7.3 Linux环境下Hello World应用程 序的实现 6.编写应用程序 当以上工作都成功完成以后,一个应用系统的软硬件 工作平台准备完毕,接下来的工作就是编写应用程序 了。 操作步骤如下: (1)首先建立工作目录,在此假设为 /usr/local/hello。 (2)选用文本编译器vi,编写程序源代码。 对于本例源代码比较简单,如下所示: #include int main(void) printf(“Hello, World! n“

11、); return 0; 保存文件名为hello.c。7.3 Linux环境下Hello World应用程 序的实现 6.编写应用程序 (3)编译在目标机上运行的hello程序: # cd /tmp # arm-linux-gcc o hello hello.c如果在Linux虚拟机中运行,该程序将出现如下错 误结果: # ./hello bash: hello: cannot execute binary file由于编译器采用的是arm-linux-gcc编译器,因此 使用上述命令编译出来的程序只能在ARM处理器上运 行,不能在X86平台上运行。 7.3 Linux环境下Hello Wor

12、ld应用程 序的实现 7.调试应用程序 调试嵌入式Linux应用程序一般通过网络共享方式进 行,具体操作步骤为: (1)在宿主机上建立NFS网络共享 将/tools/application配置为NFS共享目录。 (2)将共享目录挂载到目标机 通过mount命令,将宿主机中的应用程序目录挂载到 目标机的/mnt中。 在宿主机上打开Xmanager Xshell窗口,启动到目标 机的连接,挂载共享目录: /mnt/yaffs mount t nfs o nolock 192.168.0.100:/tools/application /mnt/host7.3 Linux环境下Hello World应

13、用程 序的实现 7.调试应用程序 接着就可以调试应用程序了: /mnt/yaffscd /mnt/host /mnt/host./hello Hello world! 根据运行结果,分析应用程序的正确性。如果发 现问题,则可以再回到宿主机的 /tools/application/hello目录下,打开hello.c源 程序,修改、编译,再转到Xmanager Xshell目标机 窗口中进行调试,如此反复,直到程序达到设计目标 。7.3 Linux环境下Hello World应用程 序的实现 8.下载应用程序调试完成的应用程序最终需要下载到目标机中,下 载时可以加入目标机的根文件系统,也可以存储

14、到 yaffs文件系统中。下载可以选择串口、网络或USB方 式,一般通过网络共享方式。7.3 Linux环境下Hello World应用程 序的实现 8.下载应用程序 (1)加入目标机根文件系统 具体操作步骤如下:首先确定加入方案,即在目标机的根文件系统下,以何种 方式存储应用程序。一般可将应用程序保存在目标机的/usr目 录下。然后,进入宿主机的Linux虚拟机中,按设计方案,将应用 程序拷贝到待制作的目标机根文件系统中。 #cd /tools/rootfs/usr #mkdir hello #cp /tools/application/hello/hello /hello 接着,通过mkc

15、ramfs工具重新生成目标机根文件系统 root.cramfs。最后,借助vivi下的tftp命令,将root.cramfs下载到目标 机中。7.3 Linux环境下Hello World应用程 序的实现 8.下载应用程序 (2)加入目标机yaffs文件系统因为yaffs文件系统是可读写系统,因此,当确定 将应用程序加入yaffs系统时,可以不必重新下载目 标机根文件系统,只需要将应用程序通过网络共享方 式拷贝到目标机指定目录中即可。具体操作如下:首 先,通过mount命令,将宿主机中的应用程序目录挂载到目标 机的/mnt中: /mnt/yaffs mount t nfs o nolock 1

16、92.168.0.100:/tools/application /mnt/host 接着进入应用程序共享目录,将应用程序拷贝到yaffs文件系 统的指定目录中: /mnt/yaffsmkdir hello /mnt/yaffscp /mnt/host/hello/hello hello7.3 Linux环境下Hello World应用程 序的实现 9.应用程序的执行应用程序的执行有多种方式,以下是三种常用方式 : (1)直接运行如果应用程序是类似于hello的程序,则可以在目 标机Linux下直接运行。 /mnt/yaffscd /hello /mnt/yaffs./hello7.3 Linux环境下Hello World应用程 序的实现 9.应用程序的执行应用程序的执行有多种方式,以下是三种常用方式: (2)通过脚本文件运行当应用程序的启动需要执行多个命令时,一般将多 个需要执行的命令编写在一个.sh的脚本文件中,通过 执行脚本文件来启动应用程序。 /mnt/yaffsvi hello.sh /预先执行的

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

最新文档


当前位置:首页 > 中学教育 > 教学课件

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