评估32位嵌入式软件IP的注意事项

描述

  对于专业编写代码的人来说,评估“其他人的代码”的过程可能看起来很简单——但这不仅仅是阅读手册或检查源模块。正确评估选择及其长期影响意味着以新的、更广泛的视角看待各种选择。以下是可以帮助搜索更可靠软件的“做/不做”指南列表。

  随着嵌入式设计人员为物联网生产数十亿可靠设备的压力,硬件和软件开发方法正在发生变化。挑选零件、获取手册和坐下来编写代码的日子即将结束——不是因为困难,而是因为这样做所涉及的时间。等到采用旧方法的设计师基本工作正常时,竞争对手可能已经发布了他们的成品。

  创新是一把双刃剑,进一步推动了不断变化的发展实践。每天都有更多新的微控制器和 FPGA 处理器内核在 32 位 ARM 架构中被创建和引入,从而带来更多的处理能力来驱动许多设计人员在细节层面上不熟悉的高级外围功能。这在互操作性要求要求对外围设备进行彻底测试的情况下尤其棘手,这对于在所有操作场景下设备与其他设备的可靠连接至关重要。

  在这个用户期望很高且处理技术快速发展的新环境中,释放新设备的潜力需要能够更快生产的更好的软件。成功的团队以可重复使用的硬件知识产权 (IP) 模型为基础,现在正在为每个软件 IP 块采用构建-借用-购买策略。代码可以在内部开发,可以从开源社区借用,也可以从供应商处购买,将所有内容都融合到一个解决方案中。

  评估软件的注意事项

  除了特定的功能和性能要求之外,应该如何评估软件 IP 块?以下是适用于应用构建-借用-购买方法的团队的一些“做/不做”指南。

  DO:考虑整个软件堆栈

  32 位嵌入式软件 IP 的范围比 8 位和 16 位世界的编译器和调试器要广泛得多。IP 存在于各个领域,包括操作系统、协议栈、用户界面代码和中间件。操作系统和应用程序编程接口 (API) 的选择可以启用或抑制其他选择,这会影响产品生命周期的测试、验证、文档和支持。

  不要:假设一切都必须写出来

  开发人员历来有代码优先的心态,购买开发工具,可能获得操作系统,然后开始编写应用程序。虽然这为团队提供了对代码的大量控制权,但重用或从可靠来源获取代码实际上可以降低风险,并且肯定会加快开发速度。越来越多的现成软件解决方案,特别是在 ARM 架构的背景下,正在被创建和部署。

  DO:寻找符合规范的代码

  难以编码的外围设备和功能通常属于网络、用户界面和信号处理类别,必须仔细遵守规范才能正常运行。获取蓝牙、TCP/IP、USB、HTTP Web 服务器、图形和 DSP 库等领域的代码——在其他应用程序中得到验证——可以在项目中发挥作用。

  不要:落入开源价值陷阱

  开源通常是一个很好的起点。ARM 的一个很好的例子是 Linaro 在 Linux 中为 Cortex-A 系列所做的努力。开发人员应该明白,可能需要努力移植、扩展和验证开源代码以完成价值方程式。例如,BTstack 的开发者——开源蓝牙专家 Matthias Ringwald——欣然承认它是有限范围的处理器和操作系统上的“所需协议的最小集合”。

  “标准具有短期,尤其是长期的优势。通常购买的商用现货 (COTS) 软件是查找支持标准的软件的好地方,而通常内部专用软件可能不太面向标准。随着时间的推移,公司希望增强产品;通过遵循标准,其他硬件和软件组件将更有可能帮助未来的发展。”

  ——Mike Gee,Motomic Software 首席执行官

  DO:对对象和源模块都开放

  基于对“其他人的代码”的根本不信任或需要遵守以源代码为中心的审查流程,开发人员通常需要访问源代码。然而,拥有源代码并不一定会使代码更值得信赖,或者提供对结果的更多控制——但它肯定会增加项目的费用。在现场应用中证明的自包含功能的对象模块可以高度可靠且具有成本效益,并且可以提供文档以方便审查。

  不要:将许可视为理所当然

  许可是一个备受争议和高度误解的话题。许多工程师甚至不相信存在问题,认为授权嵌入式代码问题的故事是都市传说。在移动制造商之间纷争不断、共同特征专利的有效性受到激烈争论的时代,不事先关注 IP 许可可能是一个巨大且代价高昂的错误。适当的许可可以保护知识产权的提供者和消费者。

  DO:尽可能将代码抽象到 API

  充分利用构建-借用-购买策略的关键之一是使用 API,抽象 IP 块之间的接口。这有两个效果:它可以防止在模块内创建对特定于实现的代码的依赖关系,并且它允许 IP 块根据需要换出以用于具有不断变化的需求的未来项目。另一个经常被忽视的考虑因素是系统架构中的竞争时间线,其中并行评估功能块的多个实现并选择最佳方法。

  不要:过度设计到低级需求

  编写代码的诱惑力如此之大,以至于常常导致一个正当理由:第三方代码并不能满足每一个详细的要求,因此必须完整地开发代码。当然,如果开源或商业代码发现了一个主要需求,或者如果某个特定功能的创新突破是目标,那么应该编写一个代码模块。在构建-借用-购买场景中,高级需求非常值得付出努力,但应重新考虑低级实现细节以避免限制选择。

  “我看到人们在决定构建时犯的最大错误是他们认为编写代码并不太难,在某些情况下确实如此。他们完全忽略了调试和测试需要多少时间和成本才能使软件(在我们的例子中是 TCP/IP 和相关协议)在每种配置和每种网络环境中都能正常工作。这不仅会导致更高的成本,而且项目通常会延迟,从而导致收入损失,甚至可能失去市场机会。”

  ——拉里·拉德,InterNiche Technologies 总裁

  DO:专注于公司的核心专业知识

  任何构建-借贷-购买策略的一个关键原则是专注于独特的能力,这应该占用大量的工程资源和专业知识。通过专注于开源或商业模块的正确内部开发和重用或集成,可以优化投资回报。事实上,如果一项能力变得突出,一块软件 IP 可能会成为重用的标准,从而打开新的收入机会。

  不要:尽量在内部做所有事情

  另一方面:很少有公司是制造完整产品所需的所有领域的专家,尤其是在软件变得更加多样化和复杂的情况下。对外部 IP 的抵制曾经被开玩笑地称为 NIH——“不是这里发明的”——但精明的组织正在改变这种心态。

  “许多公司试图超越他们的专业知识,并在内部做所有事情。商业 IP 许可公司的存在是有原因的——它们在特定领域拥有核心专业知识,并且能够在开发、测试和部署用于最终产品的 IP 模块方面进行彻底的工作。最终,商业 IP 为开发人员提供了成本更低、功能强大的解决方案;更快的上市时间;减少故障排除;以及更少的客户拒绝。”

  – SoftRISC 通信解决方案首席执行官 Ashok Setty

  寻找软件进行评估

  除了琐碎的复杂性之外,从数据表中评估代码对于模块来说是不可行的——关于实现的质量几乎无法收集。大多数工程师会直接阅读手册,将其评估为代码质量的代表,但许多高级微控制器的文档需要花费数百页的时间阅读。评估代码,再加上硬件开发工具包甚至培训,可以快速回答问题并推动流程向前发展。

  不仅如此,32 位 ARM 生态系统提供了统一的结构,使代码搜索变得更加容易,并使嵌入式软件商店成为主要目的地。许多产品都提供评估版本,具有预打包配置和一键式许可,使查找和获取代码变得快速、简单和安全。

  审核编辑:郭婷

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分