《 嵌入式系统设计与实践》一一3.1 硬件/软件集成

简介: 本节书摘来自华章出版社《 嵌入式系统设计与实践 》一 书中的第3章,第3. 1节,作者:Elecia White 著 ,更多章节内容可以访问云栖社区“华章计算机”公众号查看

3.1 硬件/软件集成
项目源于一个点子或者一个需要被实现的需求。在基于产品特征、成本和上市时间对产品进行了高层设计后,通常会制定一个日程计划,展示主要的里程碑和开发活动(如图3-1)所示。
image

图3-1:理想情况下的项目日程计划
3.1.1 理想的项目流程
硬件团队浏览数据表和参考设计并选择器件,在理想的情况下咨询嵌入式软件团队。通常,针对那些风险最大的零部件购买相应的开发套件,通常就是处理器和了解较少的外设(更多的是处理器,外设比较少)。
硬件团队设计原理图,软件团队在开发套件上开始工作。硬件团队可能会花费好几个星期(或几个月)去完成原理图,其中绝大部分时间花在充分发掘数据表,从中找到适合产品需要的元器件,并且这些器件还要价格合适,物理尺寸符合要求,有很好的温度范围等。与此同时,嵌入式软件团队构建包括编译器和调试器在内的工具链,建立调试子系统,在一些外设上做些测试,如果可能,还建立算法测试的沙盒(如图3-1所示)。
通常使用原理图设计程序(也称为CAD包)完成原理图的建立。这些程序的许可费一般都很昂贵,同时也难以使用,因此硬件工程师会在适当的检查点上生成PDF格式的原理图以做设计评审或者其他用途。虽然应该花时间去评审整个原理图(在3.4节介绍),但处理器以及其对整个系统的影响却是影响最大的一个部分。因为硬件工程师理解这点,所以绝大部分人都生成一个输入/输出映射表来描述处理器每个引脚的连接情况(第4章建议,建立输入/输出映射表并建立一个头文件)。
在原理图设计完成之后(开发套件证明处理器和风险性外设基本没有问题),就可以开始布板了。在布板时,原理图上的连接就变成电路板上的物理轨迹,这些物理轨迹将原理图中的各个元器件连接起来。
注意: 与一般的电气工程不一样,布板通常需要特殊的技能,因此如果这项工作不是由电气工程师来完成,那么一点儿也不要感到惊奇。
布板完成之后,电路板就开始进入装配阶段,在这个阶段制造出印刷电路板(PCB)。一个电路板和一组没有组装的松散零部件称为套件。由于元器件的交货期比较长,所以建立完整的套件就有些困难,这导致了组装会被延迟。一个组装完成的电路板称为印刷电路板装配(PCBA或PCA),通常会在桌上或者实验室里见到。
在原理图设计完成开始布板的时候,嵌入式软件团队的首要任务就是定义硬件测试,并在电路板制作的过程中写完测试代码。算法部分更有趣,给系统制作一个外壳看起来也更有创造性。但是,除非完成对所有硬件的调试,否则即使拿到装配完成的电路板,也不可能在软件上取得任何进展。硬件测试不仅能使调试过程更加顺利,而且也有利于建立一个更加可靠的开发(和生产)环境。在进行硬件测试时,问问电气工程师哪些部分是风险最大的。对这些子系统的测试开发按优先级排序(并在开发套件上做一些实验)。
当拿到电路板时,硬件工程师会给电路板上电以验证没有电源问题,可能也同时验证其他纯硬件子系统。之后(最终),你有了这个电路板就可以开始调试了。
3.1.2 电路板调试
这也许是一段有趣的时光,因为可以从拥有不同技能的工程师身上学习;这也可能是一段令人抓狂的时光,因为团队成员之间相互指责对方无能。怎么说都不为过。
拿到手的电路板可能到处是缺陷,也可能不是这样。电气工程师没有机会编译代码、试运行、修改、再编译。制作电路板的过程不会有太多机会去反复。记住,人都会犯错误,越是不经意的错误,越有可能需要花费相当长的时间去查找和修复。(你曾经用于调试一个由于拼写错误而导致的缺陷的最长时间是多少?)
不要害怕问问题,或者寻求帮助找到问题(这样说也许更好)。电气工程师坐在旁边一起参与调试并找出问题所在,这也许正是我们所期望的。
在设计的早期阶段找到一个硬件(或者软件)问题就像获得了一份礼物。知道这些设计缺陷的人越少越好。但是,产品团队的缺陷总数依赖于我们,因此要乐于付出时间和编程技能去解决某个问题。这不仅仅只是出于礼貌和专业要求,这也是成为一个团队成员的必要部分。如果有一些地理位置或者组织上的分割,使得为了获得硬件工程师的帮助需要跳过很多层次,那么不妨考虑后备沟通渠道(在午饭的时候搞定)。短期看,这样做可能不是很光彩,但我们会因为能解决问题而成为英雄;因此,从长期看,前景光明。
注意: 当有人指出问题时,不要感到尴尬,而要充满感激。如果这个人在团队或者公司中,那么这个缺陷就不会出现在客户现场而被客户发现。
为了让整个调试过程对自己和硬件工程师来说都容易点儿,首先,要确保每个器件都可测试。如果没有足够的代码空间,那么就要为硬件测试代码新建一个工程(尽可能重用底层的模块)。
其次,在拿到PCBA时,用最少的步骤从最底层的部件开始测试。例如,不要试着去运行很酷的电机控制软件,而应该试着将某个输入/输出设备运行一小段时间,挂上一个LED,并确保它能正常闪烁。然后(依然保持每次一小步)通过最少的必要步骤让电机运动起来(或者至少能动作)。
最后,让工具不需要依赖特定的人就能运行,这样别人就可以利用这些工具重现问题。一旦某个问题是可重现的,即使对原因不很确定,也可以试着修复它(有时候,修复过程可以找到原因)。花些时间去写良好的测试代码总会带来回报。这是一个很好的机会让硬件验证代码持续运行一段时间,在拿到下一批电路板的时候可能还需要这些测试代码。而且,这些测试往往是生产测试的一部分,在生产过程中用来检查电路板的功能。
怎么知道需要写哪些测试呢?这个需要从对处理器和外设的深入了解开始。这就是3.2节所要讨论的主题。

相关文章
|
1月前
|
监控 测试技术 持续交付
自动化测试和持续集成/交付:提升软件质量和效率的关键
在当今快节奏的软件开发环境中,自动化测试和持续集成/交付已经成为了必不可少的工具和流程。通过自动化测试,开发团队可以更快地检测和修复缺陷,同时提高测试覆盖率和质量。而持续集成/交付则可以让开发者将代码快速、自动地构建、测试和部署到生产环境中。这篇文章将探讨自动化测试和持续集成/交付的优势和实现方式,以及如何在实践中有效地使用它们来提升软件质量和效率。
|
3天前
|
jenkins 测试技术 持续交付
探索自动化测试的边界:持续集成与软件质量的协同进化
随着软件开发节奏的加快,自动化测试成为确保软件质量和快速交付的关键。本文深入分析了持续集成(CI)在自动化测试中的作用,探讨了如何通过优化CI流程来提升软件测试效率和质量。文章首先概述了自动化测试的基本概念和重要性,接着详细讨论了在CI环境下实施自动化测试的策略,包括工具选择、测试用例设计、以及反馈机制建立等。最后,通过案例分析,展示了一个成功的自动化测试实践,旨在为读者提供一套可行的方法论,以促进其软件项目的质量保证工作。
14 0
|
1月前
|
监控 测试技术 API
自动化测试工具与电脑桌面监控软件的集成:Selenium与Python的无缝整合
在当今数字化时代,软件质量保证是每个软件开发团队都必须面对的重要挑战之一。自动化测试工具和电脑桌面监控软件的结合,为开发团队提供了一种有效的方式来确保软件的稳定性和性能。本文将介绍如何利用Python编程语言中的Selenium库,与桌面监控软件进行无缝整合,以实现对应用程序的自动化测试和桌面监控。
226 5
|
1月前
|
监控 Java 持续交付
内部网络监控软件的Groovy应用:持续集成与部署的自动化监控
在当今高度数字化的环境中,对于内部网络的监控变得至关重要。为了保证系统的稳定性和安全性,监控软件的自动化变得越来越必要。本文将介绍如何利用Groovy编程语言实现持续集成与部署的自动化内部网络监控软件,并通过代码示例展示其实现方式。
274 3
|
1月前
|
测试技术 API 数据格式
5、软件产品集成过程——所有表集合
5、软件产品集成过程——所有表集合
33 0
|
7月前
|
存储 机器学习/深度学习 数据挖掘
时序数据库 TDengine 与高级分析软件 Seeq 集成,来看看操作手册
通过 TDengine Java connector,Seeq 可以轻松支持查询 TDengine 提供的时序数据,并提供数据展现、分析、预测等功能。本文将对此进行介绍。
284 2
|
7月前
|
监控 测试技术 持续交付
持续集成与持续交付(CI/CD):探讨在云计算中实现快速软件交付的最佳实践
蓝绿部署和灰度发布: 使用蓝绿部署和灰度发布等策略,逐步将新版本应用程序引入生产环境,降低风险。
|
9月前
|
测试技术 Linux C语言
分享一个自己量产项目上的集成测试软件MTTEST
分享一个自己量产项目上的集成测试软件MTTEST
66 1
|
消息中间件 Cloud Native 关系型数据库
远光软件获得阿里云产品生态集成认证,携手阿里云共建新合作
近日,远光软件股份有限公司新一代企业数字核心系统远光达普(YG-DAP)V7.1 通过阿里云产品集成认证测试,与阿里云旗下的阿里云应用服务器(V1.0)、阿里云 PolarDB 数据库管理软件、消息队列 RocketMQ 版(V3.16)以及企业级分布式应用服务 EDAS(V4.0)深度集成。这意味着在云原生领域远光软件与阿里云正式携手合作。
263 0
远光软件获得阿里云产品生态集成认证,携手阿里云共建新合作
|
数据可视化 大数据 Python
Python集成大数据开发软件推送
Python集成大数据开发软件推送
Python集成大数据开发软件推送

热门文章

最新文章