《 嵌入式系统设计与实践》一一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节所要讨论的主题。

相关文章
|
2月前
|
开发者 持续交付 Android开发
Xamarin开发者的秘密武器:如何通过持续集成与持续部署(CI/CD)实现高效、高质量的软件交付
【8月更文挑战第31天】在当今追求高效、高质量软件交付的时代,Xamarin开发者需像大厨般迅速烹制数字化佳肴,而持续集成(CI)与持续部署(CD)则是关键工具。CI要求开发者频繁将代码集成到共享仓库,利用自动化工具如Azure Pipelines或Jenkins自动编译、测试代码,确保质量。CD在此基础上进一步实现自动化部署,简化从开发到生产的全过程。借助如Visual Studio App Center这样的工具,Xamarin项目得以快速构建、测试并部署至Android和iOS平台,显著提升开发效率和代码质量,助力团队乘风破浪,驶向成功的彼岸。
29 0
|
2月前
|
前端开发 Java UED
JSF遇上Material Design:一场视觉革命,如何让传统Java Web应用焕发新生?
【8月更文挑战第31天】在当前的Web开发领域,用户体验和界面美观性至关重要。Google推出的Material Design凭借其独特的动画、鲜艳的颜色和简洁的布局广受好评。将其应用于JavaServer Faces(JSF)项目,能显著提升应用的现代感和用户交互体验。本文介绍如何通过PrimeFaces等组件库在JSF应用中实现Material Design风格,包括添加依赖、使用组件及响应式布局等步骤,为用户提供美观且功能丰富的界面。
35 0
|
3月前
|
编解码 数据挖掘 测试技术
对于大屏幕显示系统工程,这通常涉及到硬件(如显示器、投影仪、控制器等)和软件(如内容管理系统、控制软件等)的集成。
对于大屏幕显示系统工程,这通常涉及到硬件(如显示器、投影仪、控制器等)和软件(如内容管理系统、控制软件等)的集成。
|
3月前
|
测试技术 数据库 Python
在系统工程中,软件测试是一个至关重要的环节,它确保软件的质量、可靠性和性能。软件测试通常包括多个阶段,如单元测试、集成测试、系统测试和验收测试等。
在系统工程中,软件测试是一个至关重要的环节,它确保软件的质量、可靠性和性能。软件测试通常包括多个阶段,如单元测试、集成测试、系统测试和验收测试等。
|
3月前
|
传感器 机器学习/深度学习 监控
在视频监控和防盗报警系统工程中,通常包括硬件(如摄像头、传感器、报警器等)和软件(如监控软件、报警管理软件等)的集成。
在视频监控和防盗报警系统工程中,通常包括硬件(如摄像头、传感器、报警器等)和软件(如监控软件、报警管理软件等)的集成。
|
3月前
|
传感器 Python
门禁管理系统工程是一个涉及硬件和软件集成的复杂系统,旨在控制人员的出入,并记录和管理相关数据。
门禁管理系统工程是一个涉及硬件和软件集成的复杂系统,旨在控制人员的出入,并记录和管理相关数据。
|
3月前
|
监控 druid Java
spring boot 集成配置阿里 Druid监控配置
spring boot 集成配置阿里 Druid监控配置
201 6
|
3月前
|
Java 关系型数据库 MySQL
如何实现Springboot+camunda+mysql的集成
【7月更文挑战第2天】集成Spring Boot、Camunda和MySQL的简要步骤: 1. 初始化Spring Boot项目,添加Camunda和MySQL驱动依赖。 2. 配置`application.properties`,包括数据库URL、用户名和密码。 3. 设置Camunda引擎属性,指定数据源。 4. 引入流程定义文件(如`.bpmn`)。 5. 创建服务处理流程操作,创建控制器接收请求。 6. Camunda自动在数据库创建表结构。 7. 启动应用,测试流程启动,如通过服务和控制器开始流程实例。 示例代码包括服务类启动流程实例及控制器接口。实际集成需按业务需求调整。
223 4
|
3月前
|
消息中间件 Java 测试技术
【RocketMQ系列八】SpringBoot集成RocketMQ-实现普通消息和事务消息
【RocketMQ系列八】SpringBoot集成RocketMQ-实现普通消息和事务消息
185 1
|
4月前
|
消息中间件 Java Kafka
springboot集成kafka
springboot集成kafka
125 2

热门文章

最新文章