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

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

3天内不再提示

如何将函数封装成库使用的方法介绍

电子设计 来源:电子设计 作者:电子设计 2022-01-12 16:32 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

Other Parts Discussed in Post:C2000WARE

作者:Aki Li

在项目开发过程中,开发者出于保护核心算法的目的,希望将部分核心代码封装起来,使得其他使用者无法查看具体的代码实现细节,而不影响正常的调用。常见的思路是将核心的函数封装成库,下面将结合例程说明具体实现方法。

1.库的建立

1).新建库工程

在CCS中,选择Project -> New CCS Project,在工程配置窗口中,选择相应的“Target” device,以及输入自定义的工程名字;然后需要注意在“Project type and tool-chain -> output type”中选择“Static Library”,而不是“Executable”,“Executable”对应的是我们一般用到的可生成.out 可执行文件的工程。

poYBAGGKR3qAM72lAAFC0LPIhVY692.png

图 1 在CCS中新建库工程

2).定义相关的库函数

新建完工程后,即可将所需封装的函数放入工程文件中,在此以简单的一个功能函数为例进行说明。

poYBAGGKR32AZtgMAACadZE-Mgg276.png

图 2 .C文件中添加目标库函数

3).添加头文件.h

先在工程目录新建一个“include”文件夹,然后在该文件夹新建

pYYBAGGKR3-Aep8HAABd7ZWffVY671.png

pYYBAGGKR4CAVvAWAABbY7V_t4M115.png

图 3 新建.h文件

在.h文件中进行库函数的函数声明。

poYBAGGKR4KAYeNmAADyvAC61k4983.png

图 4 函数名声明

至此,编译该工程,即可生成所需的.lib文件,在默认的Debug文件路径中。

pYYBAGGKR4OAXH_bAADJIDOqYGM655.png

图 5 编译生成对应的.lib文件

2.在工程项目中使用该库文件

以C2000WARE中的“led_ex1_blink”例程为例,说明下如何在实际工程中使用定义的库文件。

1)建立文件链接

首先将第一步生成的.lib文件以及.h文件所在文件夹一并拷贝至目标工程,由于具体的库函数代码实现体现在.c文件,因此最终的工程无法索引至原始的.c文件。

poYBAGGKR4SAKUCqAAEmvmhS95w509.png

图 6 复制相应的.h和.lib文件

下一步需要在该工程中建立对库文件的链接关系。首先在工程属性 C2000 Compiler->Include Option中添加.h文件所在的文件路径,注意此处使用的是相对路径,以确保工程路径发生变更时的一致性。

poYBAGGKR4aAbvxAAAFBgtoPfms580.png

图 7 添加.h所在的文件路径

然后,在C2000 Linker->File Search Path中分别添加对应的.lib文件名以及所在文件路径。

pYYBAGGKR4eAabEzAAEkPe0xnx4071.png

图 8 添加.lib 文件名及路径

2)添加函数头文件及调用

在目标工程中添加.h文件的声明,以及测试变量,并在主函数中进行调用。

pYYBAGGKR4mAWbM7AAC2iXNo4x4160.png

poYBAGGKR4uAfj1eAAA2Rvdn-so780.png

图 9 .h文件声明以及调用示例

烧录该工程到芯片,运行后验证“test”结果符合预期。

此外,除了上述方法,可以采用以下方式把工程的调试功能禁止,这样在debug模式下就无法进行任何的调试操作以及查看代码,具体步骤:

选择“option --symdebug:none”,即在工程属性Build->C2000 Complier->Advanced Options->Advanced Debug Options中选择--symdebug:none作为Debugging model。

poYBAGGKR4yAGCfKAADnJ33tSNA900.png

图 10 使能option --symdebug:none

选择一个例程,进行以上配置后,在调试模式下的效果如图 11所示。在该模式下,所有symbols和工程的链接将被移除,因此无法进行任何的调试操作以及查看源代码。建议在工程开发的最后阶段再使用该模式。

审核编辑:金巧

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

    关注

    128

    文章

    9139

    浏览量

    147865
  • 嵌入式处理
    +关注

    关注

    0

    文章

    341

    浏览量

    10449
  • 函数
    +关注

    关注

    3

    文章

    4406

    浏览量

    66813
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    vivado中,怎么e203内核源代码封装成ip核,并添加总线?

    vivado中,怎么e203内核源代码封装成ip核,并添加总线?
    发表于 11-10 07:22

    如何将某个函数或变量放在固定的地址 ?

    如题,如何将某个函数或者变量放在固定的地址?类似于__attribute__( at(绝对地址) ),用的nucleistudio ide, __attribute__( at(绝对地址) )出现警告 at属性被忽视,有类似的属性吗?
    发表于 11-07 06:07

    AD封装安装教程

    电子发烧友网站提供《AD封装安装教程.pdf》资料免费下载
    发表于 06-19 15:35 3次下载

    自己写:构建库函数雏形

    实际上,构建固件是一件费时费力的事情,并且它对开发者对芯片的熟悉程度有一定的要求。甚至,当一个固件封装程度很高时,想要阅读并理解该固件的底层代码也会变成一件有较高难度的事情。瑞
    的头像 发表于 06-19 11:19 886次阅读
    自己写<b class='flag-5'>库</b>:构建库<b class='flag-5'>函数</b>雏形

    PCB标准封装文件

    PCB标准封装文件
    发表于 05-22 17:43 9次下载

    Allegro Skill封装功能之导出单个封装介绍

    在PCB设计中,若需提取特定封装,传统用Allegro自带导出方法需通过"File→Export→Libraries"导出全部封装文件。
    的头像 发表于 04-16 17:33 2764次阅读
    Allegro Skill<b class='flag-5'>封装</b>功能之导出单个<b class='flag-5'>封装</b><b class='flag-5'>介绍</b>

    解锁TSMaster fifo函数:报文读取的高效方法

    前言:TSMaster目前有两种读取报文的模式:回调函数模式和fifo模式。fifo函数是TSMaster近期新增的函数,本文重点介绍fi
    的头像 发表于 03-14 20:04 930次阅读
    解锁TSMaster fifo<b class='flag-5'>函数</b>:报文读取的高效<b class='flag-5'>方法</b>

    GaNPX®和PDFN封装器件的焊接专业经验

    介绍如何将GaN Systems的GaNPX® 和PDFN封装下的E-HEMT器件焊接到PCB。
    的头像 发表于 03-13 17:38 1089次阅读
    GaNPX®和PDFN<b class='flag-5'>封装</b>器件的焊接专业经验

    如何将Linux安装包快速转成玲珑包

    本篇将以 motrix 为例为大家展示如何将 Linux 安装包快速转成玲珑包。
    的头像 发表于 03-12 16:01 1251次阅读
    <b class='flag-5'>如何将</b>Linux安装包快速转成玲珑包

    如何将HAL转为LL

    怎么HAL转为LL
    发表于 03-10 06:08

    如何将项目从IAR迁移到Embedded Studio

    本文描述如何将IAR EWARM项目迁移到SEGGER Embedded Studio(简称SES)中。
    的头像 发表于 02-25 17:11 1050次阅读
    <b class='flag-5'>如何将</b>项目从IAR迁移到Embedded Studio

    如何将python文件导入到ROS系统中

    本文通过使用myCobot机械臂进行QR码视觉追踪的实践案例分析,介绍如何将 python 文件导入到 ROS 系统中。
    的头像 发表于 02-11 11:08 1191次阅读
    <b class='flag-5'>如何将</b>python文件导入到ROS系统中

    AD封装之3D元件

    AD封装分享
    发表于 02-10 15:37 33次下载

    功率器件晶圆测试及封装成品测试介绍

    ‍‍‍‍ 本文主要介绍功率器件晶圆测试及封装成品测试。‍‍‍‍‍‍   晶圆测试(CP)‍‍‍‍ 如图所示为典型的碳化硅晶圆和分立器件电学测试的系统,主要由三部分组成,左边为电学检测探针台阿波罗
    的头像 发表于 01-14 09:29 2180次阅读
    功率器件晶圆测试及<b class='flag-5'>封装成</b>品测试<b class='flag-5'>介绍</b>

    芯片极限能力、封装成品及系统级测试

    本文介绍了芯片极限能力、封装成品及系统级测试。 本文介绍芯片极限能力、封装成品及系统级测试,分述如下: 极限能力测试
    的头像 发表于 12-24 11:25 1723次阅读