解决软硬件接口的嵌入式系统设计实例

网友投稿 301 2022-11-20

解决软硬件接口的嵌入式系统设计实例

嵌入式系统设计通常分为两个部分:硬件设计和软件开发。这两部分任务通常由不同的设计小组负责,相互间很少有覆盖的地方。由于软件小组很少涉足前面的硬件设计,采用这种方式进行开发经常会遇到问题,特别是硬件与软件开发环境之间的接口性能较差时,会导致系统开发时间延长、开发成本提高,最终推迟产品的上市。

最理想的解决方案是软件小组参与硬件设计,但是在时间安排、资金和人员方面往往又是不实际的。一种变通的方法是创建一套硬件接口规范来加速软件开发流程。从软件开发者的角度来理解最优化的硬件接口设计能有效地防止软件开发中出现不必要的硬件问题,这种方法对硬件设计流程造成的影响也很小。

嵌入式系统结构的一般模型

从系统角度看,嵌入式系统是多种系统要素之间的很多接口的集合,这里罗列的主要资源是系统处理器。处理器接口可以分成两大类,分别标识为本地总线和硬件总线。值得注意的是,本文中的总线是根据处理器利用资源时的访问类型单独定义的,与具体的硬件连接没有对应关系。

正确的硬件总线接口设计能够加快软件设计进程,通常也能加快硬件验证速度。本文重点介绍与可编程逻辑资源相连接的硬件总线的设计与实现。

系统定义的实例

这里考虑两种不同的硬件实现方式。该系统是处理器控制的三轴伺服系统,本部分的系统设计仅限于位置反馈控制的设计,因此有助于我们专注于硬件接口的实现。

图1和图2表示了一种寄存器接口的可能实现方式,分别标识为系统实现A和系统实现B。为了描述方便,后文以系统A和系统B分别指代这两种实现。

当采用VHDL(或其它高级硬件设计方法)实现时,这两种硬件接口的设计复杂性几乎是相等的。系统A显得稍微高效些,因为其寄存器地址译码相对简单些,所采用的硬件数量也比系统B少。为了减少与处理器接口的可编程器件中逻辑单元的数量,大多数硬件设计工程师会选择系统A的实现方式。

表1所示的伪随机码为轴驱动程序,可用于A、B两个系统。伪随机码设计用于基于先进处理器的系统实现,并运行于实时操作系统,以通用轴控制程序的三份独立挎贝(或任务实例)实现轴的控制。当使用系统A中定义的接口时只需伪随机码中那些带星号的代码行。

很明显,即使在代码原型阶段系统B所需的代码也比系统A少很多。系统B中的硬件设计要稍微复杂一些,但能减轻软件开发的负担。后文将回顾这两个实例系统和伪随机码。

在阅读本文时,硬件设计工程师可能会产生这个问题:“为什么第一个设计的效率要比第二个低?”。两种实现方式控制轴向操作的参数是相同的,而第一种方法所需的可编程硬件器件数量显然要比第二种少。为了正确回答这个问题,设计工程师必须从系统的角度来看待这个设计,而不是硬件设计工程师惯用的“逻辑门”角度。下一部分将阐述硬件设计工程师开发系统硬件接口时常会遇到的一些概念,将进一步讨论这些技术,并检查将这些概念应用于实例系统设计后的结果。

为了满足项目要求,对整个系统结构进行优化时需要在硬件与软件实现之间作出折衷,现实中是没有项目能满足这里提到的所有理想软件接口要求的。对理想状态的认识有助于硬件设计工程师识别并消除影响软件设计的一些障碍。

设计原则

1. 采用标准总线访问

有效的嵌入式硬件接口设计的一般原则是:对软件设计工程师来说,硬件设计应确保对硬件资源的访问尽可能透明。处理器使用所有标准的读写指令可以实现透明访问,而不用考虑前面的访问内容或时序。

像页寄存器设置、地址线上的写数据编码等都可能严重影响代码的开发,并常常需要开发标准访问与所需特殊访问之间完成相互转换的驱动程序。

通常不可避免要采用一些特殊总线,但需要慎重考虑特殊访问空间的使用选择,因为这种情况会给系统软件设计带来一定的困难。系统A采用了只写寄存器,因此要求系统软件提供“影子”内存(Shadow memory)来保存写入到资源的数据。而系统B由于允许所有的寄存器都可读写,因此没有这种限制。

2. 开发基于处理器的资源接口

硬件设计工程师习惯于从下至上分析资源接口问题以及与系统总线的连接,而通过分析处理器在系统中对资源的访问过程则更好。

“处理器与资源”间的接口常常是最重要的接口,在硬件设计流程中它的效率应是最优先考虑的对象。统一规划整个系统的资源访问对于正确理解由硬件设计选择所引起的访问限制很重要。

现有最先进的系统包含有存储控制器和可再映射总线,它们会改变处理器与资源接口之间的访问类型。一般地说,一个不合格的硬件接口设计在软件小组试图与实际资源连接前是不可能反映出来的,这一点对于设计硬件接口很重要。

3. 系统内存映射的创建与维护

硬件设计工程师还必须认真考虑动态重配置的优越性。在可重配置总线上没有新增(或减少)资源的系统能演变成一个静态映射,方法是强迫配置寄存器在系统复位后回复到同一值。这个“静态”系统图为硬件集成和软件开发提供了一个稳定的统一结构,同时还避免了在系统代码中使用易产生错误的指针操作。

最后,随着系统的不断成熟,存储器映射也必须不断完善,并随着软硬件开发的进展不断改进。

4. 统一的访问模式

当前的嵌入式系统由于复杂度的提高,通常由多人共同合作进行设计。每个硬件部件的设计必须与整体一致,这样才能开发出统一的资源访问模式。如果不同功能模块的访问不一致的话,在软件开发期间就会产生潜在的访问限制错误,从而可能需要为每个子系统设计专门的软件驱动程序。对不同逻辑块的不一致访问也会使硬件集成和验证变得困难重重。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:DAMA-CDMP真题详解_第一套试卷_016~020题
下一篇:DAMA-CDMP真题详解_第一套试卷_011~015题
相关文章

 发表评论

暂时没有评论,来抢沙发吧~