嵌入式软件开发流程图(嵌入式软件开发流程图)

软件开发 1103
今天给各位分享嵌入式软件开发流程图的知识,其中也会对嵌入式软件开发流程图进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!本文目录一览: 1、计算机网络设计实训报告

今天给各位分享嵌入式软件开发流程图的知识,其中也会对嵌入式软件开发流程图进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

计算机网络设计实训报告

摘要:使用Linux进行嵌入式产品开发有一个很大的优势,就是开发资源丰富,且成本低廉;但是,技术路线复杂多样,专业人才相对匮乏是Linux嵌入式系统开发面临的一个难题。本文从实际应用的角度,探讨和研究Linux嵌入式系统开发中的平台选型问题,以期望对各位Linux开发研究者有些许裨益。

关键词:嵌入式系统 Linux开发平台 选型

1 嵌入式系统与Linux

按照电气工程师协会的一个定义:嵌入式系统是用来控制或监视机器、装置或工厂等的大规模系统的设备。具体说来,它是电脑软件和硬件的综合体;是以应用为中心,以计算机技术为基础,软硬件可裁减,从而能够适应实际应用中对功能、可靠性、成本、体积、功耗等严格要求的专用计算机系统。一般来说,嵌入式系统不能使用通用型计算机,而且运行的是固化的软件,终端用户很难或者不可能改变固件。而Linux也早已成为IT界家喻户晓的一个名字。概括说来,将Linux应用于嵌入式系统的开发有如下一些优点:

① Linux自身具备一整套工具链,容易自行建立嵌入式系统的开发环境和交叉运行环境,并且可以跨越在嵌入式系统开发中仿真工具(ICE)的障碍。

② 内核的完全开放,使得可以自己设计和开发出真正的硬实时系统;对于软实时系统,在Linux中也容易得到实现。

③ 强大的网络支持,使得可以利用Linux的网络协议栈将其开发成为嵌入式的TCP/IP网络协议栈。

2 嵌入式系统设计的过程

按照嵌入式系统的工程设计方法,嵌入式系统的设计可以分成三个阶段:分析、设计和实现。分析阶段是确定要解决的问题及需要完成的目标,也常常被称为“需求阶段”;设计阶段主要是解决如何在给定的约束条件下完成用户的要求;实现阶段主要是解决如何在所选择的硬件和软件的基础上进行整个软、硬件系统的协调实现。在分析阶段结束后,通常开发者面临的一个棘手的问题就是硬件平台和软件平台的选择,因为它的好坏直接影响着实现阶段的任务完成。

通常硬件和软件的选择包括:处理器、硬件部件、操作系统、编程语言、软件开发工具、硬件调试工具、软件组件等。

在上述选择中,通常,处理器是最重要的,同时操作系统和编程语言也是非常关键的。处理器的选择往往同时会限制操作系统的选择,操作系统的选择又会限制开发工具的选择。

3 硬件平台的选择

3.1 处理器的选择

嵌入式系统的核心部件是各种类型的嵌入式处理器。据不完全统计,目前全世界嵌入式处理器的品种总量已经超过1000多种,流行体系结构有30几个系列。但与全球PC市场不同的是,没有一种微处理器和微处理器公司可以主导嵌入式系统,仅以32位的CPU而言,就有100种以上嵌入式微处理器。由于嵌入式系统设计的差异性极大,因此选择是多样化的。

调查上市的CPU供应商,有些公司如Motorola、Intel、AMD很有名气,而有一些小的公司,如QED(Santa Clara.CA)虽然名气很小,但也生产很优秀的微处理器。另外,有一些公司,如ARM、MIPS等,只设计但并不生产CPU,他们把生产权授予世界各地的半导体制造商。ARM是近年来在嵌入式系统有影响力的微处理器制造商,ARM的设计非常适用于小的电源供电系统。Apple在Newton手持计算机中使用ARM,另外有几款数字无线电话也在使用ARM。

设计者在选择处理器时要考虑的主要因素有:

① 处理性能。一个处理器的性能取决于多个方面的因素,如时钟频率,内部寄存器的大小,指令是否对等处理所有的寄存器等。对于许多需用处理器的嵌入式系统设计来说,目标不是在于挑选速度最快的处理器,而是在于选取能够完成作业的处理器和I/O子系统。如果是面向高性能的应用设计,那么建议考虑某些新的处理器,其价格相对低廉,如IBM和Motorola Power PC。

② 技术指标。当前,许多嵌入式处理器都集成了外围设备的功能,减少了芯片的数量,降低了整个系统的开发费用。开发人员首先考虑的是,系统所要求的一些硬件能否无需过多的胶合逻辑(GL,Glue Logic)就可以连接到处理器上。其次是考虑该处理器的一些支持芯片,如DMA控制器,内存管理器,中断控制器,串行设备、时钟等的配套。

③ 功耗。嵌入式微处理器最大并且增长最快的市场是手持设备、电子记事本、PDA、手机、GPS导航器、智能家电等消费类电子产品。这些产品中选购的微处理器,典型的特点是要求高性能、低功耗。许多CPU生产厂家已经进入了这个领域。今天,用户可以买到一颗嵌入式的微处理器,其速度像笔记本中的Pentium一样快;而它仅使用普通电池供电即可,并且价格很便宜。如果用于工业控制,则对这方面的考虑较弱。

④ 软件支持工具。仅有一个处理器,没有较好的软件开发工具的支持也是不行的,因此选择合适的软件开发工具对系统的实现会起到很好的作用。

⑤ 是否内置调试工具。处理器如果内置调试工具可以大大缩小调试周期,降低调试的难度。

⑥ 供应商是否提供评估板。许多处理器供应商可以提供评估板来验证理论是否正确,决策是否得当。

3.2 硬件部件选择的其它因素

① 生产规模。打算做1套?多套?还是规模生产?如果生产规模比较大,可以自己设计和制备硬件,这样可以降低成本。反之,最好从第三方购买主板和I/O板卡。

② 开发的市场目标。如果想使产品尽快发售,以获得竞争力,此时要尽可能买成熟的硬件;反之,可以自己设计硬件,降低成本。

③ 软件对硬件的依赖性。软件是否可以在硬件没有到位的时候并行设计或先行开发。

④ 只要可能,尽量选择使用普通的硬件。在 CPU 及架构的选择上,一个原则是:只要有可替代的方案,尽量不要选择 Linux 尚不支持的硬件平台。

4 软件平台的选择

图1所示的嵌入式软件的开发流程,主要涉及到代码编程、交叉编译、交叉连接、下载到目标板和调试等几个步骤,因此软件平台的选择也涉及到以下几个方面。

4.1 操作系统的选择

(1)操作系统选择应考虑的因素

硬件方案确定之后,操作系统的选择就相对轻松了。硬件的不同,会影响操作系统的选择。低端无MMU(Memory Management Unit,存储器管理单元)的CPU,要使用uClinux 操作系统;而相对高端的硬件,则可以用普通的嵌入式 Linux 操作系统。uClinux 和普通的 Linux 有各自的优势和缺点。可用于嵌入式系统软件开发的操作系统很多,但关键是如何选择一个适合开发项目的操作系统。经过多年的开发实践,笔者认为应该从以下几点进行考虑:

① 操作系统提供的开发工具。有些实时操作系统(RTOS)只支持该系统供应商的开发工具,因此,还必须向操作系统供应商获取编译器、调试器等;而有些操作系统使用广泛,且有第三方工具可用,因此,选择的余地比较大。

② 操作系统向硬件接口移植的难度。操作系统到硬件的移植是一个重要的问题,是关系到整个系统能否按期完工的一个关键因素。因此,要选择那些可移植性程度高的操作系统,避免操作系统难以向硬件移植而带来的种种困难,加速系统的开发进度。

③ 操作系统的内存要求。均衡考虑是否需要额外花钱去购买RAM或EEPROM来迎合操作系统对内存的较大要求。

④ 开发人员是否熟悉此操作系统及其提供的API。

⑤ 操作系统是否提供硬件的驱动程序,如网卡等。

⑥ 操作系统的可剪裁性。有些操作系统具有较强的可剪裁性,如嵌入式Linux、Tornado/VxWorks等等。

⑦ 操作系统的实时性能。

(2)几类嵌入式Linux系统的比较

嵌入式Linux系统方面的产品主要分为三类:

第一类是专门为Linux的嵌入式应用而做的。如何让Linux更小、更容易嵌入到体积要求和功能、性能要求更高的硬件中去,是他们的产品开发方向,如MontaVista的MontaVista Linux等。第二类是专门为Linux的实时特性设计的产品。将Linux开

嵌入式软件开发方法

根据使用的开发工具套件不同,软件开发流程会有差异,但主要步骤大致相同。对于使用宿主机(PC)的集成化开发环境,软件开发流程一般包括创建项目、添加文件、编译连接、下载调试等步骤,如下图所示。

图1:嵌入式软件开发流程

(1)创建工程项目:在配置硬件设备和安装软件开发工具后,就可以开始创建工程项目,通常需要选择项目文件的存储位置及目标处理器。

(2)添加项目文件:开发人员需要创建源程序文件,编写应用程序代码,并添加到工程项目中;还将使用设备驱动程序的库文件,包括启动代码、头文件和一些外设控制函数,甚至中间件(Middleware)等。这些文件也需要添加到项目中。

(3)配置工程选项:源于硬件设备的多样性和软件工具的复杂性,工程项目提供了不少选项,需要开发人员配置,如输出文件类型和位置、编译选项和优化类型等,还要根据选用的开发板和在线仿真器,配置代码调试和下载选项等。

(4)交叉编译连接:利用开发软件工具对项目的多个文件分别编译,生成相应的目标文件,然后连接生成最终的可执行文件映像,以下载到目标设备的文件格式保存。如果编译连接有错误,返回修改;如果没有错误,先进行软件模拟运行和调试,再下载到开发板运行和调试。

(5)程序下载:目前,绝大多数微控制器都使用闪存(Flash Memory)保存程序。创建可执行文件映像后,需要使用在线仿真器(或串口、网口)将其下载到微控制器的闪存中,实现闪存的编程;还可以将可执行文件下载到SRAM中运行。

(6)运行和调试:程序下载后,可以启动运行,看是否正常工作。如果有问题,连接在线仿真器,借助软件开发工具的调试环境进行断点和单步调试,观察程序操作的详细过程。如果应用程序运行有错误,返回修改。

嵌入式开发学习步骤

我也是计算机科学与技术专业的,你要是在单片机上做开发,给你看看怎么学习。当然我们的嵌入式学习基本上都是基于Linux的啊。

开发板必须要有的啊!!呵呵。

这里声明一下,我指的嵌入式主要是偏向软件的嵌入式。学习嵌入式的重点和难点关键在操作系统,如果没有掌握操作系统,我认为很难把握一个嵌入式系统。即使在做嵌入式开发中,作应有层的开发几乎可以不知道操作系统也可以开发,我认为那是浮在表面的。很难深入和提高自己的层次。声明:一孔之见!不可深究!

在学习linux内核过程中犯了一个极其严重路线错误:对linux几乎不懂就开始学习内核。我个人推荐一个学习路线是:使用linux—〉linxu系统编程开发---〉驱动开发和分析linux内核。而我差不多相反,实际上你不会使用linux也可以学习内核,但是如果你懂了这些东西学习更有效率。

关于要不要学习内核的问题,我的回答如下:不一定。如果你是喜欢钻研的那你进入内核会满足你的欲望。同时对你以后的嵌入式系统的开发有很好的影响。如果你想从事嵌入式linux系统开发,最好对内核有所了解。如果仅仅是做应用开发没有必要。我打个比喻:c、c++、java等语言是武林中的某个武林派别的话,如什么拳法,什么刀法等,那么linux 内核应该是一个人的内功的反应。

怎么开始学linux内核:最好有三件宝物:《深入理解linux内核》《情景分析》和源代码。 先看《深入理解linux内核》,那主要讲原理,好像市场上有本讲原理性并且更浅,《linux内核设计与实现》听说不错。如果没有学习操作系统的,像我这样的,最好先看看操作系统原理的书。看了几遍后,就看情景分析,最好对着《深入理解linux内核》看。两本交叉看,《深入理解linux内核》是纲,《情景分析》是目。最后深入代码。

学习嵌入式技术,我认为两个重点,cpu和操作系统,目前市场是比较流行arm,所以推荐大家学习arm。操作系统很多,我个人对开始学习的人,特别不是计算机专业的,推荐学习ucos。那是开源的,同时很小。学习很好。为什么选linux,我不想讲太多,网上这方面的太多,但是我在工作中发现,做linux的技术路线很难,在windows几乎不会有的问题,在linux开发中几乎遍地陷阱。一掉进去划很长时间出来,一旦解决自己又长进了!相对来说开发周期长,难度大。现在资料也逐渐丰富起来,难度也降低了些!

至于怎么学习,这是他的特色地方,必须有块开发板,我是同学里最早买学习板的,虽然化钱,我认为值。对我实习和工作产生了很大的影响。

如果没有开发板,那是纸上谈兵。有人说,那要1000-2000啊,的确是,兄弟,看长远的,对您的职业和发展那点钱不算什么!有的人说我站着说话不腰痛,好吧,钱这东西对我影响很大,我在大学里扫厕所,扫的不错,奖5元/月。兄弟你有过吗?我认为教育投资是效益最有保障的!我实习拿3k,很多同学拿 1-2k,当然比我高的也有。虽然我现在没有毕业,但一家公司就签了。从事目前流行的高档的消费电子的研发。对于我两年前一无所知的我,应该有质的变化,我感谢学校收了我这个废品。当然我也非常的努力。说这么多并不是要炫耀我什么,实际上根本不值得炫耀,虽然现在工作环境和待遇比较满意,但是,我发现我很差,特别是代码能力,我希望平常大家少玩游戏,多编程。编程才是硬道理!

没有想到,一下写了这么多,其实还想写的,比如在中科院的一位老兄是怎样学习linux内核和看书的,真的很感动。他的为人我很钦佩。也想介绍毛德操的《嵌入式系统》那本书,对学习arm linux的很好,也想介绍实习和工作的东西,太长了,耽误大家时间。我也不想检查里面的错别字了,很多!

呵呵呵,我想对你应该有帮助的啊,特别是那几本书,必看的啊!!

希望你前程似锦,学习进步!!

呵呵呵呵。汇编也很重要啊,这一点对明白操作系统和CPU有重要的推进作用。

simulink每1s判断一次怎么实现

在嵌入式软件开发过程中,很多地方都会用到计时器这个模块,用来进行某个状态条件的确认。今天,脚主就分享下Simulink中计时器的5种实现方式。

01 Matlab Function的实现方式

计时器模块的本质是一个累加逻辑,所以用代码实现是比较方便的。在Simulink中实现代码功能,首先想到的就是MATLAB Function 。

MATLAB Function 模块可以帮助我们在Simulink 模型中实现MATLAB函数的功能,也可以生成可读、高效、紧凑的 C代码,应用于嵌入式系统中。

常用的计时器模块基本功能需求是:条件满足时,开始计时,时间逐渐累加;条件不满足时,停止计时,时间保持不变。所以使用MATLAB Function搭建的计时器Simulink模型如下图。

图中u模拟计时器的条件,是一个周期为5,占空比为50%的方波信号,t 等于Simulnk模型的仿真步长,x是上一时刻的计时数值。MATLAB Function中的代码如下:

function y = fcn(u,t,x)

if u == 1

x = x + t;

end

y = x;

进行10秒的仿真,结果如下图:当输入条件等于1时,计时器逐渐累加;当输入条件等于0时,计时器保持不变。

02 Simulink基础模块的实现方式

脚主在平时的Simulink软件开发中,有一个个人的偏好,尽量使用Simulink基础模块实现功能需求,所以比较建议采用方式2来实现计时器功能。

使用基础模块搭建的Simulink模型如下图,主要借助switch和add来实现。

基本思路也是一样,条件满足就累加,不满足沿用上一时刻数值,其仿真结果与方式1完全一致。

03 Fcn的实现方式

对于仅仅使用数学计算就可以实现的功能,也可以考虑使用Fcn模块。

Fcn是适用于数学表达式的建立,可以很方便的进行数学计算。

使用Fcn模块搭建的Simulink模型如下图。

使用mux将3个输入封装成向量,在Fcn中分别使用u(1)、u(2)、u(3),再进行相应的数学计算,其仿真结果也与方式1完全一致。

04 Stateflow状态机的实现方式

计时器功能也可以分为两个状态,即累加状态和保持状态,所以也可以使用Stateflow来实现。

使用Stateflow状态机搭建的Simulink模型如下图,其仿真结果也与方式1完全一致。

Chart内部如下:

这里有一个细节留给大家思考:为什么要增加一个初始化的Junction?

05 Stateflow流程图的实现方式

在Simulink软件开发过程中,对于比较简单的Stateflow逻辑,尤其是条件选择逻辑,可以使用流程图代替状态图,以简化逻辑。

使用Stateflow流程图搭建的Simulink模型如下图,其仿真结果也与方式1完全一致。

Chart内部如下:

以上,在Simulink中使用了5种方式介绍计时器的实现方式。

虽然每一种方式看起来都比较简洁,但是常常做一下这种简单问题的多种思考,可以开阔我们的思维,也可以把我们自己的知识点、技能点整理一下,整理的多了,自己的知识体系也就慢慢形成了。

嵌入式软件的运行流程一般分几个阶段?每个阶段完成的主要工作是什么?

四个阶段:

1、问题的定义及规划,此阶段是软件开发与需求放共同讨论,主要确定软件的开发目标及其可行性。

2、需求分析,在确定软件开发可行性的情况下,对软件需要实现的各个功能进行详细需求分析,因此,必须定制需求变更计划来应付这种变化,以保护整个项目的正常进行。

3、软件设计此阶段中偶要根据需求分析的结果,对整个软件系统进行设计,如系统框架设计、数据库设计等。

4、程序编码此阶段是将软件设计的结果转化为计算机可运行的程序代码,以保证程序的可读性、易维护性。提高程序的运行效率。

扩展资料:

嵌入式软件具有独特的实用性,嵌入式软件是为嵌入式系统服务的,这就要求它与外部硬件和设备联系紧密。

嵌入式系统以应用为中心,嵌入式软件是应用系统,根据应用需求定向开发,面向产业、面向市场,需要特定的行业经验。每种嵌入式软件都有自己独特的应用环境和实用价值。

2嵌入式软件应有灵活的适用性,嵌入式软件通常可以认为是一种模块化软件,它应该能非常方便灵活的运用到各种嵌入式系统中,而不能破坏或更改原有的系统特性和功能。它要小巧,不能占用大量资源;其次要使用灵活,应尽量优化配置。

嵌入式软件开发流程图的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于嵌入式软件开发流程图、嵌入式软件开发流程图的信息别忘了在本站进行查找喔。

扫码二维码