0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

代码的可重用性是代码开发和确保可维护性的关键

星星科技指导员 来源:嵌入式计算设计 作者:Colin Walls 2022-06-30 14:58 次阅读

实现嵌入式应用程序的过程很好理解:

代码(用 C/C++/汇编或其他语言)编写并放置在许多文件(模块)中。

每个模块都经过编译/组装以创建可重定位的目标文件。该文件包含目标处理器的机器指令,但地址信息尚未提交。

所有模块都使用链接器(有时称为链接器/定位器)集成在一起。此过程解析所有内存引用并生成一个绝对目标文件:最终系统内存的图像。

这种观点有些简单化,因为还有许多其他细微差别:

增量链接可用于将一个或多个可重定位对象连接在一起以形成单个可重定位对象。

可以调整链接/定位过程,以便代码存储在一个地方,但地址解析为在另一个地址执行,已被引导加载程序复制到那里。

可以将可重定位的目标文件链接在一起是产生目标模块库的一种特殊方式。

“图书馆”一词在各种情况下被使用和滥用。它的含义在这里定义明确。可以将库文件连同可重定位的目标文件一起提供给链接器。它的功能是解析可重定位目标文件未提供的符号(通常是函数名)。例如,如果您在一个模块中的代码调用了函数MyFun()并且在另一个模块中有此函数的定义,那么一切都很好。如果链接器没有找到这个函数,就会产生错误。但是,如果包含一个库(或多个库),则链接器将首先查找那里以解析符号。如果库包含MyFun()函数,则提取代码并在最终的绝对文件中使用。

图书馆的意义可能并不明显。你可以用一种简单的方式将所有的可重定位文件链接在一起——为什么还要麻烦图书馆呢?这个想法是该库包含大量函数,但链接器仅提取当前应用程序所需的函数。未使用的永远不会从库中提取,因此它们不会耗尽(即浪费)目标内存。

库的主要目的是作为大量可重用代码的存储库。在大型开发团队的项目中,这可能是一种很好的工作方式,在这种情况下共享代码非常有益,“重新发明轮子”是不可取的,但很常见。应仔细规划和记录项目库。设计函数时必须考虑重用:不使用全局数据、干净、定义良好的接口、可重入性等。

开发工具供应商通常会提供针对 C/C++ 标准化的库。它们包含两种类型的功能。显而易见的是开发人员在需要时调用的显式函数——比如printf()。其他库函数是隐式的;它们由编译器生成的代码调用,并提供常用的功能,方便共享。

软件 IP 供应商也可能以库的形式提供他们的产品。实时操作系统 (RTOS) 通常以这种方式分布。这使得 RTOS 可以直接扩展;应用程序中仅包含所需的 RTOS 功能。

库分布的一个问题是它们的“粒度”;可以提取多小的代码?一些库是由大块构建的。这意味着库中的模块可能包含属于特定 RTOS 设施的所有服务功能。因此,例如,使用一个 RTOS 调用对信号量进行操作将导致所有与信号量相关的服务调用函数都包含在应用程序中。一个非常细粒度的库可以与较小的单元一起使用。因此,使用单个服务调用将导致仅包含其代码而不是相关函数的代码。有一个权衡。一个非常细粒度的库会延长链接时间,但目标内存不会浪费在未使用的服务调用函数上。

所有嵌入式软件开发人员都应该了解库的工作方式及其提供的好处。代码的可重用性是高效、高效的代码开发和确保可维护性的关键。

审核编辑:郭婷

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

    关注

    5082

    文章

    19115

    浏览量

    304931
  • RTOS
    +关注

    关注

    22

    文章

    811

    浏览量

    119607
  • C++
    C++
    +关注

    关注

    22

    文章

    2108

    浏览量

    73634
收藏 人收藏

    评论

    相关推荐

    电动工具EMC测试整改:确保电磁兼容关键步骤

    深圳南柯电子|电动工具EMC测试整改:确保电磁兼容关键步骤
    的头像 发表于 12-02 11:25 120次阅读
    电动工具EMC测试整改:<b class='flag-5'>确保</b>电磁兼容<b class='flag-5'>性</b>的<b class='flag-5'>关键</b>步骤

    Java代码之美,从遵循样式规范开始

    作者:京东零售 刘仲伟 在软件开发的世界里,代码不仅是程序的基石,更是程序员交流的通用语言。而Java,作为一门广泛应用于企业级应用的编程语言,其代码的可读和一致
    的头像 发表于 11-27 11:42 188次阅读
    Java<b class='flag-5'>代码</b>之美,从遵循样式规范开始

    如何安全有效的删代码

    作者:京东科技 王丹迪 删除代码是软件开发过程中常见的一部分,但必须谨慎操作以确保不会引入错误或破坏现有功能。有效的做系统瘦身会降低维护成本,减少冗余
    的头像 发表于 11-20 10:39 211次阅读

    SQL错误代码及解决方案

    中存在语法错误,如拼写错误、缺少必要的关键字等。 解决方案 : 仔细检查SQL语句,确保语法正确。 使用SQL编辑工具或集成开发环境(IDE)的语法高亮和自动完成功能来帮助检测语法错误。 二、字段不存在或拼写错误(Unknown
    的头像 发表于 11-19 10:21 1461次阅读

    代码开发平台,低成本快速搭建云MES系统

    代码平台是一种可视化的软件高效开发平台,通过抽象和最小化手工编码的方式,为开发和部署定制化应用提速。万界星空科技AI低代码云MES系统通过拖拽、配置等图形化操作,快速
    的头像 发表于 11-18 15:43 159次阅读
    低<b class='flag-5'>代码</b><b class='flag-5'>开发</b>平台,低成本快速搭建云MES系统

    怎样正确维护与保养密封检测仪

    密封检测仪是保证产品质量和性能的重要工具。为了保证其准确和可靠,正确的维护维护非常重要。以下是一些
    的头像 发表于 10-08 11:25 205次阅读
    怎样正确<b class='flag-5'>维护</b>与保养密封<b class='flag-5'>性</b>检测仪

    单片机芯片开发-单片机方案开发关键技巧和流程步骤!

    和驱动,将简化后续开发的复杂。 编写与调试代码: 在编写代码时,建议采用模块化设计,这样便于后续的维护和升级。
    发表于 09-26 17:04

    单CPU 双项目开发实现更好的维护和可行应用说明

    电子发烧友网站提供《单CPU 双项目开发实现更好的维护和可行应用说明.pdf》资料免费下载
    发表于 09-12 09:42 0次下载
    单CPU 双项目<b class='flag-5'>开发</b>实现更好的<b class='flag-5'>维护</b><b class='flag-5'>性</b>和可行<b class='flag-5'>性</b>应用说明

    代码整洁之道-大师眼中的整洁代码是什么样

    几个月前写了一篇文章“如何写出难以维护代码”,从中能大概了解到不好维护代码是什么样,有哪些坏味道,那肯定有人会反问,难以维护
    的头像 发表于 09-09 16:30 332次阅读
    <b class='flag-5'>代码</b>整洁之道-大师眼中的整洁<b class='flag-5'>代码</b>是什么样

    深入浅出系列之代码可读

    ”,这是对我最大的鼓励。 一、老生常谈,到底啥是可读 一句话:见名知其义。有人说好的代码必然有清晰完整的注释,我不否认;也有人说代码即注释,是代码简洁之道的最高境界,我也不否认。但我
    的头像 发表于 08-09 16:00 261次阅读

    该如何提高代码容错率、降低代码耦合度?

    提高RT-Thread代码的容错率和降低耦合度是确保代码质量和可维护性关键,下面列举了几种在编写代码
    的头像 发表于 06-26 08:10 659次阅读
    该如何提高<b class='flag-5'>代码</b>容错率、降低<b class='flag-5'>代码</b>耦合度?

    EMI测试整改:确保电子设备电磁兼容关键步骤

    深圳比创达|EMI测试整改:确保电子设备电磁兼容关键步骤
    的头像 发表于 04-29 14:40 568次阅读
    EMI测试整改:<b class='flag-5'>确保</b>电子设备电磁兼容<b class='flag-5'>性</b>的<b class='flag-5'>关键</b>步骤

    代码开发有哪些优势?

    代码平台以其高效、便捷、低成本的优势,正逐渐成为软件开发领域中的性价比之王。它不仅能够满足快速开发的需求,还能够降低技术门槛和维护成本,提高开发
    的头像 发表于 04-09 16:03 886次阅读
    低<b class='flag-5'>代码</b><b class='flag-5'>开发</b>有哪些优势?

    新能源电池气密检测仪在电池维护中的重要

    密封。电池密封直接关系电池的防水级别。假如电池组轻微泄露,可能会致使水浸蚀电池内部,造成腐蚀或短路等安全隐患。因而,定期开展气密检测是维护确保电池安全的关键一步。
    的头像 发表于 04-06 11:16 390次阅读
    新能源电池气密<b class='flag-5'>性</b>检测仪在电池<b class='flag-5'>维护</b>中的重要<b class='flag-5'>性</b>

    CPCI设计与制造:提高制造关键要素

    。 华秋DFM软件是国内首款免费PCB制造和装配分析软件,拥有 500万+元件库 ,轻松高效完成装配分析。其PCB裸板的分析功能,开发了 19大项,52+细项检查规则 ,PCBA
    发表于 03-26 18:34