跟着嵌入式体系不断遍及,咱们能够从堆集的开发常识中获得巨大优势,构建更超卓的体系。
工程师一刻也没忘掉交给能一起满意质量、时刻组织和预算方针的项目的需求。一个事半功倍的办法 便是学习嵌入式体系开发人员社区多年来累计的经验教训。下面咱们就来了解一些为嵌入式开发带来了最佳实践的重要经验。咱们随用随取哈。
体系地考虑
体系工程是一个广泛的专业范畴,掩盖从航空母舰及卫星到完成其功用的嵌入式体系的一切开发作业。咱们能够运用体系工程办法办理从概念到运用周期完毕处置的嵌入式体系工程生命周期。体系工程方案的第一阶段不是建立体系需求,而是拟定体系工程办理规划。这一规划不只将为体系界说工程生命周期以及开发团队即将展开的规划评定,并且还将界说这些评定的预期输入输出。该规划可依据工程事情的次第和每个阶段的先决条件,为项目办理、工程和客户集体做出明晰的界说。简而言之,它可展示预期和可交给项。
在清楚了解工程生命周期的状况下,体系考虑的下一步是建立正在开发嵌入式体系的需求。杰出的需求集应掩盖三个方面:
功用需求界说嵌入式体系怎么展开作业。
非功用需求界说法规遵照与可靠性等方面的问题。
环境需求界说作业温度和冲击与振荡以及电气环境(例如 EMI 和 EMC)等方面的需求。
在较大规划的开发作业中,这些需求将从较高层次的规范向下延伸并且可盯梢,比方体系或子体系规范(图 1)。假如没有较高层次的规范,咱们有必要在开发进程中触摸利益相关方,建立一套明晰的利益相关方需求,然后将其用于建立嵌入式体系需求。
图 1:在开发作业中,需求从较高层次的规范向下延伸并且可盯梢
生成一个杰出的需求集,需求咱们充沛考虑每一个需求,才干保证其契合这些规范:
它是必要的。没有需求,咱们的项目就不会获得成功。
它是可验证的。咱们有必要保证该需求能经过查验、测验、剖析或演示完成。
它是可完成的。在给定的束缚条件下,该需求在技能层面上是能够完成的。
它是可追寻的。该需求能够从较低层次的需求进行追寻,并且可追寻较高层次的需求。
它是仅有的。这项规范可防止需求之间的边界不清。
它是简略明晰的。每条需求指定一项功用。
为表现目的,在界说需求时还常常运用特定言语。一般咱们对强制性要求运用“有必要”,对非强制性要求运用“应该”。非强制性要求可让咱们表达必要的体系特点。
在咱们建立了咱们的需求底线后,最佳实践便是创立一个合规矩阵,阐明契合每项需求。咱们还能够经过为每项需求分配一种验证办法开端建立咱们的验证战略。这些办法一般是测验、剖析、查验、演示和穿插读取。依据合规及验证矩阵创立需求能让咱们:
明晰地了解体系行为。
向内部测验团队和外部客户都演示验证办法。这不只可在开发进程的前期阶段发现任何困难的测验办法,并且还可协助咱们确认所需的资源。
确认技能功用目标。这些目标来自合规矩阵,由存在无法合规的危险的各种需求构成。
分配工程预算
每个工程项目都包括必定数量的预算,咱们应将其分配给在架构中辨认的处理方案。预算分配不只可保证项目完成全体需求,并且还可保证每个模块的规划牵头人了解模块的分配,以创立恰当的处理方案。咱们分配预算的典型范畴有功用的总质量、功用的总功耗、用均匀毛病间隔时刻或成功概率界说的可靠性以及规划中信号类型间的合理串扰(一般是一套适用于很多功用的通用规矩集)。建立工程预算最重要的方面之一是保证咱们有满意的应急分配。但咱们有必要打败应急再加应急的主意,由于这会成为影响时刻组织和本钱的严峻技能问题。
为在咱们架构中运用的每项技能分配一个技能安排妥当指数,再结合合规矩阵,可协助咱们确认技能危险的所在位置。
办理技能危险
从合规矩阵及工程预算的生成看,咱们应该能够辨认在技能上有难度的需求。每一个这类有危险的需求都应该有明晰的躲避方案,其将阐明咱们将怎么完成这一需求。展示这一点的最佳途径之一是运用技能安排妥当指数 (TRL)。TRL 有 9 级,从所观察到的基本原理 (TRL1) 到完好功用与实地布置 (TRL9) 描绘规划成熟度级数。把 TRL 分配给咱们架构中运用的每一项技能,再结合合规矩阵,可协助咱们确认技能危险的所在位置。咱们随后可发动一个 TRL 开发规划,保证在项目不断推动时,低 TRL 范畴会提升到所需的 TRL 水平。该规划触及的内容可保证咱们在项目推动时完成和测验正确的功用,或是在项目推动的进程中履行功用或环境/动态测验。
图 2:在本电源架构示例中,模块的输越轨需求二级稳压。
该架构不该仅限于硬件(电气)处理方案,还应包括 FPGA/SoC 及相关软件的架构。
创立架构
了解嵌入式体系要求的行为后,咱们就需求为处理方案创立一个架构。该架构将由分组成功用块的需求构成。例如,假如嵌入式体系有必要处理模仿输入或输出,架构就将包括模仿 I/O 模块。其它模块或许会愈加显着,比方电源调理、时钟和复位生成。
该架构不该仅限于硬件(电气)处理方案,还应包括 FPGA/SoC 及相关软件的架构。当然,模块化规划的要害是针对模块及功用行为的杰出接口文档编制。
该架构的一个要害方面是展示怎么在高层次上创立体系,这样工程团队就能轻松了解其完成办法。该进程也是在体系运转生命周期中为体系供给支撑的要害。
在确认咱们的架构时,咱们需求考虑模块化办法,这样不只能在当时项目上进行复用,并且还能在未来的项目上进行复用。模块化要求咱们从第一天起就考虑或许的复用,并要求咱们把每个模块存档为一个独立的单元。就内部 FPGA/SoC 模块而言,像 ARM? AMBA? 高档可扩展接口 (AXI) 这样的通用接口规范有助于完成复用。
模块化规划的一个严峻优势便是能够针对某些需求运用商用现成的模块。商用现成(COTS)模块让咱们能够以更快的速度开发体系,由于凭借 COTS,咱们能够把咱们的作业重点放在项目从咱们的专业才能发生的增值中获益最大的部分上。
体系电源架构是一个需求细致考虑的的规划方面。许多嵌入式体系会要求阻隔 AC/DC 或 DC/DC 转化器来保证嵌入式体系的毛病不会分散。图 2 显现的是电源架构的示例。来自该模块的输越轨需求二级调整来为处理内核和转化设备供给电压。咱们有必要细心防备这些阶段发生严峻的开关损耗和功率下降。由于功率下降意味着体系热耗散增大,假如不正确处理就会影响单元的可靠性。
咱们有必要细心了解运用的线性调整器的行为以及在电源线上进行进一步滤波的要求。这一要求的原因是 FPGA 和处理器等器材的开关频率远远高于线性调整器的操控环路所能应对的水平。跟着噪声频率进步,线性调整器的噪声按捺才能下降,导致需求选用额定的滤波和去藕技能。假如不了解这一联系,会形成混合信号设备出现问题。
另一个重要的考虑要素是时钟和复位架构,尤其是在有多个需求同步的开发板的状况下。在架构层面咱们有必要考虑时钟分配网络:咱们是否在跨多个开发板扇出单个振荡器,或是运用多个频率相同的振荡器?为保证时钟分配的稳健可靠性,咱们有必要考虑:
振荡器发动时刻。咱们有必要保证在整个时刻周期内激活复位(假如需求)。
振荡器倾斜。假如咱们要在跨多个开发板扇出振荡器,时序是否至关重要?假如是,咱们需求考虑线路卡上的倾斜(衔接器引起的)和缓冲器本身引起的倾斜。
振荡器颤动。假如咱们在开发混合信号规划,咱们需求保证运用低颤动时钟源,由于颤动的增大会下降混合信号转化器的信噪比。在咱们运用千兆位级串行链路时状况也是相同,由于咱们需求运用低颤动时钟源在链路上获得杰出的误码率。
咱们也有必要留意复位架构,保证只在需求的当地运用复位。例如根据 SRAM 的 FPGA 一般不需求复位。
假如咱们在运用复位的异步激活,咱们需求保证移除它不会导致亚稳态问题。
明晰界说接口
内外部接口的正式文档在机械、物理和电气层面为各个接口供给明晰的界说,以及协议和操控流。这些正式文档也往往被称为接口操控文档 (ICD)。当然最好是尽量运用规范通讯接口。
接口界说最重要的一个方面是外部接口的“衔接化”。这个进程考虑了所需衔接器的引脚分配,衔接器引脚的额定功率以及所要求的插拔次数,以及任何对屏蔽的要求。
在咱们为咱们的体系考虑衔接器类型的时分,咱们应保证不会由于在子体系中运用相同类型衔接器而形成晦气的穿插衔接。经过运用不同类型衔接器或选用不同的衔接器键位(假如支撑),咱们就能够防止穿插衔接的或许性。
衔接化是咱们开端运用之前确认的预算要求的首个方面之一。特别是咱们能够运用串扰预算来指引咱们界说引脚分配。图 3 所示的比如阐明晰这一流程的重要性。重新组织引脚分配,将接地基准电压 (GND) 引脚布局在信号 1 和信号 2 之间,能够下降互感以及由此引发的串扰。
图 3:衔接化是接口界说最重要的特征之一。
接口操控文档 (%&&&&&%D) 有必要对体系接地进行界说,尤其是在项目要求外部 EMC 的时分。在这种状况下,咱们有必要当心防止让有噪声的信号地发生辐射。
工程师和项目经理掌握着一系列战略,以保证他们交给的嵌入式体系能够满意质量、本钱和调度要求。不过当项目遇到困难时,咱们能够坚信在项目不发生严峻改变的状况下其此前的功用是其未来功用的杰出提示。