嵌入式系统开发的模式与流程 (II)

来源:互联网 发布:数据魔方招聘 编辑:程序博客网 时间:2024/05/02 13:45

2.2嵌入式系统开发流程:

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

  1)系统需求分析,确定设计任务和设计目标,并提炼出设个规格说明书,作为正式设计指导和验收的标准,系统的需求一般分为功能性需求和非功能性需求两方面,功能性需求是系统的基本功能,如输入输出信号、操作方式、非功能性需求包括系统性能、成本、功耗、体积、重量等因素。

 

  2)系统结构设计。描述系统如何实现所述的功能和非功能需求。包括对硬件、软件、和和执行装置的功能划分,以及系统的软件、硬件选型等。一个好的体系结构式设计成功与否的关键。

  3)硬件/软件协同设计。基于体系结构,对系统的软件、硬件进行详细设计。为了缩短产品的开发周期,设计开发往往是并行的。嵌入式系统的设计工作大部分集中在软件设计上,采用面相对象技术、软件组件技术、模块化设计师现代软件工程经常采用的方法。

 

   4)系统集成。把系统的软件、硬件和执行装置集成在一起,进行调试。发现并改进单元设计过程中的错误。

    5)系统测试,对设计好的系统进行测试。看其是否满足规格说明书中给定的功能要求。

 嵌入式系统开发模式最大特点是软件、硬件综合开发。这个事因为嵌入式产品室软件硬件的结合体。软件对硬件开发、固化、不可修改。

      如果一个嵌入式系统中使用LINUX技术开发,根据应用需求的不同有不同的配置开发方法,但是一般情况下都需要经过如下的过程:

 

     1)建立开发环境,系统一般使用Redhat Linux, 选择定制安装或全部安装,通过网络下载相应的GCC交叉编译器进行安装(arm-linux-gcc,arnl-uclibc-gcc),或者安装产品厂家提供的相关的交叉编译器;

      2)配置开发主机。配置MINICOM。一般的参数为波特率115200Baud/s。数据位8位,停止位1,无奇偶校验,软硬件流控设为无。在windows下超级终端的配置也是如此。MINICOM软件的作用是作为

调试嵌入式开发板的信息输出的监视器和键盘输入的工具。配置网络主要是配置NFS网络文件系统,需要关闭防火墙,简化嵌入式网络调试环境设置过程。

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

  4)下载已经移植好的Linux操作系统。如MCLinux,ARM-Linux,PPC-Linux等,如果有专门针对所使用的CPU移植好的Linux操作系统那是再好不过,下载后在添加特定的硬件驱动程序,然后进行调试修改,对于MMU的CPU可以使用模块方式调试驱动,而对于MCLinux这样的系统只能编译内核进行调试。

  5)建立根文件系统 ,可以从http://www.busy.box.net下载使用BUSYBOX软件进行功能裁剪,产生一个最基本的跟文件系统。在根据自己的应用需要添加其他的程序。由于默认的启动脚本一般都不会符合应用的需要,所以需要修改根文件系统中的启动脚本,他的存放在位于/etc目录下

包括:/etc/init.d/rc.s,/etc/profile,/etc/.profile等,自动挂载文件系统的配置文件、etc、fstab,具体情况会随系统的不同而不同。跟文件系统在嵌入式系统中一般为只读,需要使用

mkcramfs genromfs等工具产生烧写映像文件。

6)建立应用程序的FLASH的磁盘分区,一般使用JFFS2或YAFFS文件系统,这需要在内核中提供这些文件系统的驱动,有的系统使用一个线性FLASH(NOR型)512KB~32MB,有的系统使用非线性的FLASH(NAND型)8MB~512MB,有的两个同时使用,需要根据应用规划FLASH的分区方案。

 

7)开发应用程序,可以放在跟文件系统中,也可以放入YAFFS,JFFS2文件系统中,有的应用不使用根文件系统,直接将应用程序和内核设计在一起,这个有点类似UC/OS-II的方式。

8)烧写内核,根文件系统和应用程序,发布产品。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

原创粉丝点击