当前位置:文档之家› 嵌入式软件开发流程

嵌入式软件开发流程









嵌入式系统的硬件架构 如下图 所示,为嵌入式系统硬件模型结构,此系统主要由微处理器MPU、 外围电路, 以及外设组成,微处理器为ARM 嵌入式处理芯片,如ARM7TMDI 系列 及ARM9 系列微处 理器,MPU 为整个嵌入式系统硬件的核心,决定了整个系统功能和应用 领域。外围电路根 据微处理器不同而略有不同,主要由电源管理模型、时钟模块、闪存 FIASH、随机存储器R AM,以及只读存储器ROM 组成。这些设备是一个微处理器正常工作所 必须的设备。外部 设备将根据需要而各不相同,如通用通信接口USB、RS-232、RJ-45 等, 输入输出设备,如 键盘、LCD 等。外部设备将根据需要定制。






(6)建立应用程序的FLASH 磁盘分区,一般使用JFFS2 或YAFFS 文件系 统,这需要在 内核中提供这些文件系统的驱动,有的系统使用一个线性FLASH(NOR 型)512KB~32MB, 有的系统使用非线性FLASH(NAND 型)8MB~512MB,有的两个同时使 用,需要根据应用 规划FLASH 的分区方案。 (7)开发应用程序,可以放入根文件系统中,也可以放入YAFFS、JFFS2 文件系统中, 有的应用不使用根文件系统,直接将应用程序和内核设计在一起,这有 点类似于μC/OS-II 的方式。 (8)烧写内核、根文件系统和应用程序,发布产品。



板级支持包(Board Support Packet)主要用来完成底层硬 件相关的信息,如驱动程序,加 载实时操作系统等功能; 实时操作系统层主要就是常见的嵌入式操作系统,设计者 根据自己特定的需要来设计 移植自己的操作系统,即添加删除部分组件,添加相应的 硬件驱动程序,为上层应用提供系统调用;
嵌入式开发模式与流程






嵌入式系统开发模式 嵌入式系统开发分为软件开发部分和硬件开发部分。嵌入式系统在开发 过程一般都采用如图5-3 所示 的“宿主机/目标板”开发模式,即利用宿主机(PC 机)上丰富的软硬件资 源及良好的开发环境和调试工具来 开发目标板上的软件,然后通过交叉编译环境生成目标代码和可执行文 件,通过串口/USB/以太网等方式下 载到目标板上,利用交叉调试器在监控程序运行,实时分析,最后,将 程序下载固化到目标机上,完成整 个开发过程。








(3)建立引导装载程序BOOTLOADER,从网络上下载一些公开源代码的 BOOTLOADE R,如U.BOOT、BLOB、VIVI、LILO、ARM-BOOT、RED-BOOT 等, 根据具体芯片进 行移植修改。有些芯片没有内置引导装载程序,比如,三星的ARV17、 ARM9 系列芯片, 这样就需要编写开发板上FLASH 的烧写程序,读者可以在网上下载相应 的烧写程序,也有 Linux 下的公开源代码的J-FLASH 程序。如果不能烧写自己的开发板, 就需要根据自己的具 体电路进行源代码修改。这是让系统可以正常运行的第一步。如果用户 购买了厂家的仿真器 比较容易烧写FLASH,虽然无法了解其中的核心技术,但对于需要迅速 开发自己的应用的 人来说可以极大提高开发速度。
设计开发


系统分析员根据确认的需求文档所例用的界面 和功能需求,用迭代的方式对每个界面或功能 做系统的概要设计。 2 系统分析员把写好的概要设计文档给程 序员,程序员根据所例出的功能一个一个的编 写。
测试

测试编写好的系统。交给用户使用,用户使用 后一个一个的确认每个功能。
嵌入式系统的结构





(1)系统需求分析。确定设计任务和设计目标,并提炼出设计规格说明书,作 为正式设 计指导和验收的标准。系统的需求一般分功能性需求和非功能性需求两方面。 功能性需求是 系统的基本功能,如输入输出信号、操作方式等;非功能需求包括系统性能、 成本、功耗、 体积、重量等因素 (2)体系结构设计。描述系统如何实现所述的功能和非功能需求,包括对硬件、 软件和 执行装置的功能划分,以及系统的软件、硬件选型等。一个好的体系结构是 设计成功与否的关键。 (3)硬件/软件协同设计。基于体系结构,对系统的软件、硬件进行详细设计。 为了缩短 产品开发周期,设计往往是并行的。嵌入式系统设计的工作大部分都集中在 软件设计上,采 用面向对象技术、软件组件技术、模块化设计是现代软件工程经常采用的方 法。 (4)系统集成。把系统的软件、硬件和执行装置集成在一起,进行调试,发现 并改进单 元设计过程中的错误。
嵌入式开发实例
软件开发流程


软件开发流程(Software development process) 软件设计思路和方法的一般过程,包括设 计软件的功能和实现的算法和方法、软件的总 体结构设计和模块设计、编程和调试、程序联 调和测试以及编写、提交程序。
需求调研分析



关系统分析员和用户初步了解需求,然后用WORD列出要 开发的系统的大功能模块,每个大功能模块有哪些小功能 模块,对于有些需求比较明确相关的界面时,在这一步里 面可以初步定义好少量的界面。 2 系统分析员深入了解和分析需求,根据自己的经验 和需求用WORD或相关的工具再做出一份文档系统的功能 需求文档。这次的文档会清楚例用系统大致的大功能模块, 大功能模块有哪些小功能模块,并且还例出相关的界面和 界面功能。 3 系统分析员和用户再次确认需求。


嵌入式处理系统主要包括嵌入式微处理器、存 储设备、模拟电路及电源电路、通信接 口,以及外设电路。
嵌入式软件开发流程




当前,嵌入式开发已经逐步规范化,在遵循一般 工程开发流程的基础上,嵌入式开发 有其自身的一些特点,如下图 所示为嵌入式系统 开发的一般流程。主要包括系统需求分析 (要求有严格规范的技术要求)、体系结构设计、 软硬件及机械系统设计、系统集成、系统测 试,最终得到最终产品。



整个开发流程包括以下步骤 (1)源代码编写:编写源C/C++及汇编程序; (2)程序编译:通过专用编译器编译程序; (3)软件仿真调试:在SDK 中仿真软件运行情况; (4)程序下载:通过JTAG、USB、UART 方式下载到目标板上; (5)软硬件测试、调试:通过JTAG 等方式联合调试程序; (6)下载固化:程序无误,下载到产品上生产。Leabharlann
(5)系统测试。对设计好的系统进行测试,看其是否满足规格说明书中给定的功能要求。 嵌入式系统开发模式最大特点是软件、硬件综合开发。这是因为嵌入式产品是软硬件 的结合体,软件针对硬件开发、固化、不可修改。 如果在一个嵌入式系统中使用 Linux 技术开发,根据应用需求的不同有不同的配置开 发 方法,但是,一般情况下都需要经过如下的过程。 (1)建立开发环境,操作系统一般使用Redhat Linux,选择定制安装或全部安装,通过 网络下载相应的GCC 交叉编译器进行安装(比如,arm-1inux-gcc、arnl-uclibc-gcc), 或者安 装产品厂家提供的相关交叉编译器; (2)配置开发主机,配置MINICOM,一般的参数为波特率115200 Baud/s,数据位8 位, 停止位为1,9,无奇偶校验,软件硬件流控设为无。在Windows 下的超级终端的配置 也是 这样。MINICOM 软件的作用是作为调试嵌入式开发板的信息输出的监视器和键盘输入 的工 具。配置网络主要是配置NFS 网络文件系统,需要关闭防火墙,简化嵌入式网络调试 环境 设置过程。
嵌入式系统的软件结构



嵌入式系统与传统的单片机在软件方面最大的不同就是可以移 植操作系统,从而使软 件设计层次化,传统的单片机在软件设计时将应用程序与系统、 驱动等全部混在一起编译, 系统的可扩展性,可维护性不高,上升到操作系统后,这一切 变得很简单可行。 嵌入式操作系统在软件上呈现明显的层次化,从与硬件相关的 BSP 到实时操作系统内 核RTOS,到上层文件系统、GUI 界面,以及用户层的应用软 件。各部分可以清晰地划分开 来,如下图所示。当然,在某些时候这种划分也不完全符合应 用要求。需要程序设计人员 根据特定的需要来设计自己的软件。










(4)下载已经移植好的Linux 操作系统,如MCLiunx、ARM-Linux、PPCLinux 等,如 果有专门针对所使用的CPU 移植好的Linux 操作系统那是再好不过,下 载后再添加特定硬 件的驱动程序,然后进行调试修改,对于带MMU 的CPU 可以使用模块 方式调试驱动,而 对于MCLiunx 这样的系统只能编译内核进行调试。 (5)建立根文件系统,可以从http:// 下载使用 BUSYBOX 软件进行功 能裁减,产生一个最基本的根文件系统,再根据自己的应用需要添加其 他的程序。由于默认 的启动脚本一般都不会符合应用的需要,所以就要修改根文件系统中的 启动脚本,它的存放 位置位于/etc 目录下,包括:/etc/init.d/rc.S、/etc/profile、/etc/.profile 等, 自动挂装文件系统 的配置文件/etc/fstab,具体情况会随系统不同而不同。根文件系统在嵌 入式系统中一般设为 只读,需要使用mkcramfs genromfs 等工具产生烧写映像文件。
相关主题