打印
[应用相关]

从零开始开发一款嵌入式产品的一些经验(

[复制链接]
手机看帖
扫描二维码
随时随地手机跟帖
21
盗铃何须掩耳|  楼主 | 2022-6-2 13:05 | 只看该作者 回帖奖励 |倒序浏览
4.产品开发设计文档(需要包括硬件和软件两个方面)4.1 硬件文档撰写思路

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

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

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

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

例如,我们设计一个定时器(事先需求说明定时器不能与个人电脑连接,故无法使用CRT显示时间),我们只有两种选择:一种是使用发光二极管(LED),另 一种是使用液晶显示器件(LCD)。

尽管LCD的显示效果比较好,但考虑到定时器要常年位于户外,并且早期LCD显示器不能在低温下工作,最终还是选择 LED设备(这整个过程描述了我们硬件选型时的一个思路,这个是密切跟需求挂钩的 )

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

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

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

  • 内存和I/O端口地址(如果需要,还可以提供内存映射图)
  • 可用内存容量
  • 状态寄存器每一位的定义
  • 每个端口管脚的用途
  • 外部设备的驱动方法(例如,说明输入定时器电路的时钟频率等)
  • 其他有管软件人员设计程序需要了解的信息

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


使用特权

评论回复
22
盗铃何须掩耳|  楼主 | 2022-6-2 13:06 | 只看该作者
4.2 软件文档撰写思路

(1) 软件文档与硬件文档的组织方法类似,软件要求文档的主要内容则是定义软件要实现的功能;一种是在简单项目设计过程中,软件定义也可以只对一种电路板使用的软件给予描述;对较复杂的项目来说。

由于参与这种项目的软件人员分别负责设计驱动不同硬件部分的代码(同一电路板),因此每个软件人员可能会为自己的设计 代码指定不同的定义,这类软件说明需要提供下列的内容:

  • 论述包括需求定义、工程指标、硬件参数等实施项目需要的内容
  • 说明软件之间、处理器之间或处理器与其内部器件之间使用的通信协议:其内容应包括对缓冲区接口机制、命令/应答协议、信号控制等协议的具体说明。
  • 借助流程图、伪代码或者其他可能的方法来描述软件的实现方法和过程

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

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

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

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

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

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

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

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

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


使用特权

评论回复
23
盗铃何须掩耳|  楼主 | 2022-6-2 13:07 | 只看该作者
5.嵌入式高手对技术的理解(含辛茹苦这么多年的精华体验)

有很多人认为:嵌入式系统性能的核心因素是软件功能,其实,如果按照这种逻辑,系统设计中存在的问题就应由软件人员来负责。

其实这个观点实际上反映了设计嵌入式产品时如何考虑划分硬件和软件各自应实现的功能,也就是这个功能是软件实现,还是考虑用硬件来实现(硬件实现:需要购买处理该功能的硬件芯片,从而增加成本;软件实现:无需增加硬件成本,但会占用处理器以及内存的资源)。

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

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

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

  • 首先,要在程序中增加语音协议解码的代码;
  • 其次,可能要把增加ROM来存放语音解码的协议,这样可以增加速度;
  • 最后,运行该程序将占用处理器的时间和资源。

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

总的来说,交给软件实现的功能越多,则产品的成本就越低,当然这就要处理器必须有足够的处理速度和内存空间来实现设计指定的功能;常言说得好,天下没有免费的午餐。

把功能分配给软件来实现,会增加软件的复杂性、开发时间、以及程序的调试时间;然而,随着处理器的处理能力的不断提高,可以预见,越来越多的功能 将会由软件来实现。

虽然在软件中实现各种功能会增加开发成本,但如果把功能移植到硬件中实现,则会增加产品的成本,这类开销是在构造每个系统组件时不可避免的。

在低成本设计方案中,增加任何额外的硬件都会对产品成本产生显著的影响,因此软硬件功能划分就是一个决定产品成本的大问题。在诸如大众消费产品这一类对成本非常敏感的设计方案中,一般都会把无法通过软件实现的功能排除在外的。


使用特权

评论回复
24
玛尼玛尼哄| | 2022-7-27 18:43 | 只看该作者
好详细,得认真学习了

使用特权

评论回复
25
Bblythe| | 2022-10-4 07:22 | 只看该作者

If-Else 已成为事实上的代码分支解决方案

使用特权

评论回复
26
Uriah| | 2022-10-4 17:22 | 只看该作者

它可以不受网络连接的限制

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则