新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 主流32位单片机攻略连载:为什么要学STM32?

主流32位单片机攻略连载:为什么要学STM32?

作者:时间:2012-08-08来源:网络收藏

  2.10.设备工作环境的要求

  环境要求主要内容是考虑温度,湿度等;如果系统必须在温度范围较大的环境下运行,诸如用于军事设备或汽车的控制系统,那么处理器可选择的范围就要小得多;

  并且由于大范围温度变化的设备通常比较昂贵,因此在设计过程中就不能再根据一般工业级器件的价格来制定预算。

  2.11.使用周期成本

  如果我们的产品是stm32神舟开发板,在一般情况下,可以不必考虑在用户现场对stm32神舟开发板程序进行修改的问题,也不用为是否可以得到设备备件而着急,这是因为stm32神舟开发板是一种学习型的消费产品,仅仅只是一款开发板而已。

  换句话说,如果我们的产品是价值几万块的工业设备并且需要常年不断地运行,那么我们在产品设计过程中就必须从长计议了:

  a.首先,我们需要选择一种处理器或存储体系结构都可以升级的器件

  b.考虑到程序升级的可能,我们还要选择较大容量的内存

  c.最后要注意的则是所选处理器是否可以长期供货,这一点的重要性远远大于处理器的价格

  除了上面的考虑之外,使用周期成本也是在设计之初要考虑的因素。总的来说,生产的部件越多,则可以接受的前期开发成本也就越大。如果产品是mp3,我们可能会选择一个低价微处理器,同时投入一大笔钱来开发控制mp3的软件。

  但如果我们的产品是价格昂贵的工业用设备,那么在产品的使用期内,该设备的销售量将只有几百台,毫无疑问,开发这种产品最重要的就是降低开发成本(降低开发成本而不是硬件成本!!!);除此之外,工业产品的成本也不像家用电器或消费电子产品那么敏感。综上所述,开发工业产品当然要选择一种便于进行开发并且有助于缩短开发过程的处理器。

  2.12.处理器相关资料是否丰富

  如果该款处理器在市场上已经用得很广了,那么我们可以获取更多的相关资料,观察人家的产品是如何使用处理器的,也能在网络上找到不少的相关的设计资料以及相关技术主题,这样就进一步降低了技术门槛,确保了使用该处理器做产品可行性,减低了风险;例如神舟IV号开发板就有针对该板子有个700多页的手册文档,如果我们选择芯片来开发产品的话,借助详细资料开发起来就轻松了,达到事半功倍的效果。

  反之,如果是厂商全新推出的处理器,因为市场上还没有可以借鉴的产品,我们就只能从全英文的芯片手册开始阅读,了解这款芯片,这样开发周期不仅变长,而且不可预知的风险也很大。

  3.开发成本的预测和估计

  大多数项目或产品都有专人负责预测整个过程的开发成本,对于任何项目来说,其开发成本主要包括人力和材料开销。

  预测开发成本在很大程度上需要根据经验,这也是大型公司一般指定有经验的高级工程师来完成这一任务的原因,除了人力和材料的开销之外,总结下来,还有以下的开销:

  1)人力成本(开发人员、管理人员、销售人员、其他行政等辅助人员)的开销

  2)材料(硬件物料和损耗,有时候需要投几次PCB版才把产品稳定下来)的开销

  3)开发系统和开发工具软件的开销

  4)硬件工具的开销(例如示波器、仿真器等)

  对于整个项目来说,上述的开销将直接可能导致产品成本增加,其中人力成本最为关键,尤其是在中国。

  4.产品开发设计文档(需要包括硬件和软件两个方面)

4.1 硬件文档撰写思路

  1)首先是需求定义或产品规格:

  如果这些是产品最终目标的话,那么产品对硬件和软件的要求就是技术方案的最终目标;对硬件和软件的要求是从定义用户界面和系统功能开始的。

  2)其次,根据需求,系统整体定义文档中给出硬件接口的具体定义:

  定义硬件最有效的方法是从需求开始描述,由于硬件必须支持系统定义的所有功能,因此硬件定义是与系统说明不可分割的;

  例如,我们设计一个定时器(事先需求说明定时器不能与个人电脑连接,故无法使用CRT显示时间),我们只有两种选择:一种是使用发光二极管(LED),另一种是使用液晶显示器件(LCD);尽管LCD的显示效果比较好,但考虑到定时器要常年位于户外,并且早期LCD显示器不能在低温下工作,最终还是选择 LED设备(这整个过程描述了我们硬件选型时的一个思路,这个是密切跟需求挂钩的)

  3)一旦完成了系统整体说明文档,就开始进行系统设计:

  首先要对硬件说明的内容进行细化,包括添加能让工程师理解的设计意图,以及软件工程师围绕硬件进行程序设计时需要使用的硬件信息等。

  完成硬件电路板说明文档后,我们还要在该文档中增加一个用来描述系统的原始要求的前言部分,包括说明方案的设计思路和方法,除此之外,还要附上软件工程师用来对硬件进行控制所需的各类信息,这类信息主要包括如下内容(软件工程所需信息):

  -----内存和I/O端口地址(如果需要,还可以提供内存映射图)

  -----可用内存容量

  -----状态寄存器每一位的定义

  -----每个端口管脚的用途

  -----外部设备的驱动方法(例如,说明输入定时器电路的时钟频率等)

  -----其他有管软件人员设计程序需要了解的信息

  对于比较复杂的系统来说,硬件文档中经常使用两个独立的部分来进行说明;其第一部分用来描述硬件指标和工作原理,第二部分则主要为软件人员提供程序设计需要的信息。

  4.2 软件文档撰写思路

  1) 软件文档与硬件文档的组织方法类似,软件要求文档的主要内容则是定义软件要实现的功能;一种是在简单项目设计过程中,软件定义也可以只对一种电路板使用的软件给予描述;对较复杂的项目来说,由于参与这种项目的软件人员分别负责设计驱动不同硬件部分的代码(同一电路板),因此每个软件人员可能会为自己的设计代码指定不同的定义,这类软件说明需要提供下列的内容:

  -----论述包括需求定义、工程指标、硬件参数等实施项目需要的内容

  -----说明软件之间、处理器之间或处理器与其内部器件之间使用的通信协议:其内容应包括对缓冲区接口机制、命令/应答协议、信号控制等协议的具体说明。

  -----借助流程图、伪代码或者其他可能的方法来描述软件的实现方法和过程

  2) 软件与硬件所考虑的不同之处(此经验方便技术总监或其他相关管理者参考,因为无论是多高深的技术管理者,要么是硬件出身,要么是软件出身,要么就是非技术出身,armjishu.com里面有少数软硬件都精通的高手)

  a. 软件的灵活性远远大于硬件,要让软件人员搞清楚某个软件的内部格式是非常困难的任务,解决的办法:详细定义其他程序员需要了解的编程接口具体内容,以及其他工程人员在实施开发项目过程中需要使用的技术细节信息。

  b. 软件工程师只有在收到硬件说明文档后,才有可能知道如何对系统硬件进行操作;而硬件人员一般不需要了解软件程序的技术细节。

  c. 由于软件易于更改,因此程序内容经常会按销售人员提供的要求发生变更,在某些情况下,软件文档的内容无法及时反映程序的最新变化。

  d. 软件经常是工程项目最后完成的部分,因此其文档也经常因时间不够而欠缺完整。实际上,软件文档是否详细、完整,在某种程度上是与公司或客户的要求有关的。例如,军事或国家工程一般要求开发商就其所有软件实现的功能提供全面详细的文档

  e. 有个潜规则,对软件的要求越复杂,则需求的正确可能性就越小,这个是经验之谈了,我们需要把准需求这个准绳来做文章,而不是陷入个人主义以及对软件要求而凭空发挥自己不切实际的想象。

  f. 我们可以先硬件设计,接着围绕该硬件编制软件。虽然实际系统的实现过程可能是软硬件并行开发,但软件人员基本上也是围绕着已经实现的硬件来进行程序设计的;对于更为复杂的系统来说,开发过程可能会出现重复。

  例如,某个项目的硬件工程师和软件工程师可能会坐下来开会,共同决定使用哪种硬件来实现某种功能;软件人员可能提出需要为数据缓冲区口冲内存容量,也可能要求提供某种外部设备接口,以便充分利用现成接口程序提供的各种驱动代码。

  总的来说,必须在提高软件开发效率与硬件系统的复杂性与成本之间进行权衡。

5.嵌入式高手对技术的理解(含辛茹苦这么多年的精华体验)

  有很多人认为:嵌入式系统性能的核心因素是软件功能,其实,如果按照这种逻辑,系统设计中存在的问题就应由软件人员来负责;其实这个观点实际上反映了设计嵌入式产品时如何考虑划分硬件和软件各自应实现的功能,也就是这个功能是软件实现,还是考虑用硬件来实现(硬件实现:需要购买处理该功能的硬件芯片,从而增加成本;软件实现:无需增加硬件成本,但会占用处理器以及内存的资源,这是armjishu.com的专家们体会到的)。

  例如:我们在这里设计的基于的神舟II号开发板产品,我们可以使用专业的解码芯片来负责mp3音乐文件的解码和播放功能,也可以使用另一种方法来解码mp3语音文件,让ARM处理器利用软件控制寄存器来驱动耳机或音响,处理器通过对mp3语音文件解码之后再将解码后的数据流按照一定协议格式送给音频输出的硬件接口进行播放。

  优点:这种方案在硬件方面节省了一个器件,降低了成本,并且该功能还方便调试(因为是软件实现的)。

  缺点:从另一个角度来看,虽然节省了一块语音解码芯片,但同时要在三个方面增加成本。

  首先,要在程序中增加语音协议解码的代码;

  其次,可能要把增加ROM来存放语音解码的协议,这样可以增加速度;

  最后,运行该程序将占用处理器的时间和资源。

  其实,话又说回来,对于本案例来说,上述成本的节约并不会引发任何问题,包括驱动程序增加也只需少量的,我们讨论这个mp3产品的案例的目的在于说明如何对软件硬件的功能进行合理划分。

  总的来说,交给软件实现的功能越多,则产品的成本就越低,当然这就要处理器必须有足够的处理速度和内存空间来实现设计指定的功能;常言说得好,天下没有免费的午餐;把功能分配给软件来实现,会增加软件的复杂性、开发时间、以及程序的调试时间;然而,随着处理器的处理能力的不断提高,可以预见,越来越多的功能将会由软件来实现。

  虽然在软件中实现各种功能会增加开发成本,但如果把功能移植到硬件中实现,则会增加产品的成本,这类开销是在构造每个系统组件时不可避免的。在低成本设计方案中,增加任何额外的硬件都会对产品成本产生显著的影响,因此软硬件功能划分就是一个决定产品成本的大问题。在诸如大众消费产品这一类对成本非常敏感的设计方案中,一般都会把无法通过软件实现的功能排除在外的。


上一页 1 2 3 4 下一页

评论


相关推荐

技术专区

关闭