鱼C论坛

 找回密码
 立即注册
查看: 32|回复: 0

嵌入式系统开发的基本流程是什么

[复制链接]
发表于 3 天前 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
嵌入式系统开发是对于除了电脑之外的所有电子设备上操作系统的开发,开发对象有手机,掌上电脑,机电系统等,一般由嵌入式微处理器、外围硬件设备、嵌入式操作系统以及用 户的应用程序等四个部分组成。

嵌入式系统是以应用为中心,以计算机技术为基础,并且软硬件可裁剪,适用于应用系统对功能、可靠性、成本、体积、功耗有严格要求的专用计算机系统。它一般由嵌入式微处理器、外围硬件设备、嵌入式操作系统以及用 户的应用程序等四个部分组成,用于实现对其他设备的控制、监视或管理等功能

嵌入式系统一般指非PC系统,它包括硬件和软件两部分。硬件包括处理器/微处理器、存储器及外设器件和I/O端口、图形控制器等。软件部分包括操作系统软件(OS)(要求实时和多任务操作)和应用程序编程。有时设计人员把这两种软件组合在一起。应用程序控制着系统的运作和行为;而操作系统控制着应用程序编程与硬件的交互作用。

一、软件方面的知识:

1、嵌入式微处理器结构与应用:

或传统的“微机原理与接口”课程,嵌入式是软硬件结合的技术,搞嵌入式系统的人应对ARM处理器工作原理和接口技术有充分了解,包括汇编指令系统。不了解处理器原理,就没办法写出驱动程序。在嵌入式开发的一些关键部分,如Bootloader等,主要靠汇编写程序。

2、嵌入式操作系统类课程:

从事嵌入式系统的人至少须掌握一个嵌入式操作系统(当然越多越好),目前最重要的RTOS主要包括:

(1)、传统的经典RTOS:最主要的是Vxworks操作系统,以及其Tornado开发平台。Vxworks出现早,实时性很强,并且内核可极微,可靠性较高。特别在通信设备等实时性要求较高的系统中,有比较广泛的应用。

(2)、嵌入式Linux操作系统:嵌入式Linux广泛应用的原因当然是免费、开源、支持软件多、支持者多,成本也低。

(3)、 Windows CE嵌入式操作系统:Windows CE是微软的操作系统,也有很大的市场份额,特别是在PDA、手机等界面要求较高或者要求快速开发的场合。

3、嵌入式开发的其它相关软件课程:

(1)、数字图像压缩技术:嵌入式最热门的应用领域之一,要掌握MPEG编解码算法和技术,如DVD、MP3、PDA、高清电视、机顶盒等都涉及MPEG高速解码问题。

(2)、通信协议及编程技术:大多数嵌入式设备都要连入局域网或Internet,所以首先应掌握TCP/IP协议及其编程;另外,掌握无线通信协议及编程也是是很重要的。

(3)、网络与信息安全技术:如加密技术,数字证书CA等。

二、硬件方面的知识:

模拟电路、数字电路、计算机组成原理、微处理器结构、单片机等硬件课程是从事嵌入式开发要掌握的。

嵌入式本身就是从单片机发展过来的,如今很多单片机都已经带OS,嵌入式开发领域,驱动人才非常缺乏。写驱动必须掌握操作系统的内部工作原理,包括相关的硬件知识,即所谓的软硬通吃,所以这方面的人才是一将难求。

特点

编辑

嵌入式计算机系统同通用型计算机系统相比具有以下特点:

1.嵌入式系统通常是面向特定应用的嵌入式CPU与通用型的最大不同就是嵌入式CPU大多工作在为特定用户群设计的系统中,它通常都具有低功耗、体积小、集成度高等特点,能够把通用CPU中许多由板卡完成的任务集成在芯片内部,从而有利于嵌入式系统设计趋于小型化,移动能力大大增强,跟网络的耦合也越来越紧密。

2.嵌入式系统是将先进的计算机技术、半导体技术和电子技术与各个行业的具体应用相结合后的产物。这一点就决定了它必然是一个技术密集、资金密集、高度分散、不断创新的知识集成系统。

3.嵌入式系统的硬件和软件都必须高效率地设计,量体裁衣、去除冗余,力争在同样的硅片面积上实现更高的性能,这样才能在具体应用中对处理器的选择更具有竞争力。

4.嵌入式系统和具体应用有机地结合在一起,它的升级换代也是和具体产品同步进行,因此嵌入式系统产品一旦进入市场,具有较长的生命周期。

5.为了提高执行速度和系统可靠性,嵌入式系统中的软件一般都固化在存储器芯片或单片机本身中,而不是存贮于磁盘等载体中。

6.嵌入式系统本身不具备自举开发能力,即使设计完成以后用户通常也是不能对其中的程序功能进行修改的,必须有一套开发工具和环境才能进行开发。

开发流程:

第一步:建立开发环境

操作系统一般使用Redhat Linux,选择定制安装或全部安装,通过网络下载相应的GCC交叉编译器进行安装(比如,arm-linux-gcc、arm-uclibc-gcc),或者安装产品厂家提供的相关交叉编译器;

第二步:配置开发主机

配置MINICOM,一般的参数为波特率115200 Baud/s,数据位8位,停止位为1,9,无奇偶校验,软件硬件流控设为无。在Windows下的超级终端的配置也是这样。MINICOM软件的作用是作为调试嵌入式开发板的信息输出的监视器和键盘输入的工具。配置网络主要是配置NFS网络文件系统,需要关闭防火墙,简化嵌入式网络调试环境设置过程。

第三步:建立引导装载程序BOOTLOADER

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

第四步:下载已经移植好的Linux操作系统

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

第五步:建立根文件系统

下载使用BUSYBOX软件进行功能裁减,产生一个最基本的根文件系统,再根据自己的应用需要添加其他的程序。由于默认的启动脚本一般都不会符合应用的需要,所以就要修改根文件系统中的启动脚本,它的存放位置位于/etc目录下,包括:/etc/init.d/rc.S、/etc/profile、/etc/.profile等,自动挂装文件系统的配置文件/etc/fstab,具体情况会随系统不同而不同。根文件系统在嵌入式系统中一般设为只读,需要使用mkcramfs genromfs等工具产生烧写映像文件。

第六步:建立应用程序的FLASH磁盘分区

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

第七步:开发应用程序

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

第八步:烧写内核

根文件系统和应用程序,发布产品
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1

GMT+8, 2021-4-11 21:37

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表