有助于嵌入式系统顺利开发的硬件独立性设计方案

技术分类: 嵌入式系统  | 2008-07-23
赛普拉斯半导体公司 产品市场营销总监 Jon Pears: EDN China

  所有嵌入式系统最终都要连接到外部传感器与执行器或内部功能模块与外设等硬件,以实现输入输出、数据存储及通信功能。每种设计方案中的每个硬件都有其自己的特性,需要设计人员认真对待。

  设计方案中使用的硬件如果发生任何变化,即便是仅仅添加或去除一个输入或输出端口,也会影响到嵌入式软件,有时甚至会造成非常严重的影响。如果在设计过程后期才做出上述变动,那么就可能导致产品不能及时上市。解决这一问题的办法,就是在系统设计过程中确保完全的硬件独立性

  硬件独立性设计(design-out the hardware)就是指将所有控制和算法软件与硬件接口软件相分离。我们应有效地设计与硬件有关的逻辑封装器和接口,这样不管什么时候用逻辑部件来替换正在使用中的特定硬件,也不会影响控制和算法软件。

  通过便于理解的逻辑接口(函数、宏、符号)将硬件提取出来,这不仅有助于提高设计的可移植性,而且还能使开发人员集中精力解决实际的应用问题,甚至在明确采用什么硬件之前就能开始设计工作。这听起来似乎比较简单,您可能认为现在您或您的工作团队正是这么做的。

  不过,我们不妨来认真研究一下当前的设计项目(或者曾经喜欢的项目),看看要是更换其中的微控制器,会出现什么情况。如果改用不同的微控制器,尤其是不同厂商的微控制器的话,要是会对项目造成严重影响,那么您在设计过程中就没有实现硬件独立性。

  为了成功实现硬件独立性设计,我们必须在设计过程中保持清醒的头脑。我们不必等硬件完全设计好了再开始开发嵌入式软件,也不必等到明确所有要求后最终确定硬件选择,而是可以将设计方案中的硬件选择与设计方案相分离,这样在市场崭露头角的时候我们就可以开始设计工作,从而有助于赢得关键客户。说到底,有哪些设计项目中硬件是真的一成不变的呢?最后总是会出现硬件变动的情况。

  用这种方法开始设计工作有助于提高整体灵活性,这既是由于硬件几乎随时“能够”替换,同时也是由于我们不用担心硬件的替换问题了。此外,由于硬件特定的功能位于封装器与接口中,因此这有助于简化调试工作,也增加了不同项目之间 IP 的重复利用率。

  “硬件独立性设计” 是什么意思?

  最简单地说,嵌入式系统的硬件独立性设计就是在逻辑上把嵌入式应用软件与所有硬件直接相连的软件相分离。所谓“所有”硬件就是指物理设计或选定微控制器发生变化时可能发生的任何变化因素。

  显然这包括选定微控制器中支持硬件的所有器件,如模数转换器(ADC)和通信接口(UART、SPI、I2C、USB、CAN 等)。不过如果物理系统设计还包括传感器与执行器,那么它们的变动也会影响软件,因此必须确保其 为硬件独立性设计。

  此外,不要忘了输入/输出端口与嵌入式存储器等常见元件。如果它们发生变动,也会影响应用(比方说用于记录数据日志或存储配置选择的非易失性存储器,或提供内部上拉或内置驱动电路的输入端口)。总之,所有硬件都要做到独立系统设计。

  有的读者可能会想,硬件独立性设计方案到底有什么新颖之处?几千年以前,睿智的所罗门国王曾经说过:“太阳下面没有什么东西是新的。”嵌入式系统硬件独立性设计背后的理念实际并不是什么新东西。自从现代嵌入式系统设计出现以来(我认为大约是在 1980 年吧),工程师一直在围绕硬件构建封装器与接口。

  本文要说明的是,我们应当把这种方法发挥到逻辑极致,否则我们的项目就仍然会受限于硬件,就不能在需要时灵活地更改硬件。我希望您通过本文能够充分认识到硬件选择对嵌入式设计的影响,并能够了解到在今后设计中消除硬件变化影响的一些小窍门。

  从何做起?

  开始项目设计时,您至少要有一些基本的想法或要求。我们应着手设计一种独立于硬件的系统。系统应当实现什么功能?最终目标是什么?需要哪些驱动、监控功能?如果加入硬件的话,就要把整个信号链中的各个部分组成一个有机的整体。

  您会发现,所有彼此相互连接的硬件实际上都是替换硬件情况下潜在的问题来源。我们要用封装器或接口将所有硬件隔离起来。就马达控制设计而言,我们不妨来看看它的算法,看看要用哪些数据来确定驱动指令。

  为了控制算法,不管采用什么硬件,不管是几安培的负载电流,还是每分钟多少转的转速,还是百分比驱动命令,都必须确保逻辑性。

  通过硬件和算法相结合,负载电流转换为电压,ADC 对其采样后转换成数字计数,再通过数学函数转换为毫安;上面每个步骤都需要进行“包装”,避免底层硬件改变时影响软件应用。

  如果在设计过程中完全遵循上述步骤,那么最终我们就能实现两个目的。首先,我们能明确硬件与最终系统的关系,并了解到类似但不同的新项目如何从现有的设计方案受益。其次,如果需要设计全新的项目,采用完全不同的应用类型,那么仍能参考现有的项目,只需对其加以调整,就能满足新项目的要求,只需根据新式应用替换或删除有关层即可。

0
0
(请您对文章做出评价)
1】【2】【3
加载中

对文章的评论

更多评论

剩余字数:  

相关在线研讨会

我要参加

正在点播中:电路设计中可预测和不可预测问题的调试技术

时间:2008-06-02 10:00:00-12:00:00
简介:在嵌入式系统设计中,经常会出现一些可预测和不可预测的问题或者低概率事件信号。快速有效地发现这些问题需要不同的技术。8月15日…

浏览该文章的用户还看过...

  • 文 章

  • 论 坛

  • 博 客

  • 小 组

设计资源与分销

  • 博客推荐

  • 论坛推荐

  • 在线研讨会