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和工程的链接将被移除,因此无法进行任何的调试操作以及查看源代码。建议在工程开发的最后阶段再使用该模式。

审核编辑:金巧

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

    关注

    127

    文章

    7949

    浏览量

    143132
  • 嵌入式处理
    +关注

    关注

    0

    文章

    341

    浏览量

    10030
  • 函数
    +关注

    关注

    3

    文章

    4338

    浏览量

    62783
收藏 人收藏

    评论

    相关推荐

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

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

    HAL函数调用示例

    HAL(Hardware Abstraction Layer,硬件抽象层)是STM32等微控制器中常用的,它为开发者提供了访问和控制硬件设备的接口。以下是一些常用的HAL库函数及其调用示例: 一
    的头像 发表于 12-02 14:01 530次阅读

    在KiCad中使用AD的封装(Pcblib)

    “ 经常有小伙伴在群里问,有没有办法可以批量把Altium Designer的封装转成KiCad的形式。目前阶段暂时只能单个的导出,或者封装全部放到AD的PCB上,然后通过导入PC
    的头像 发表于 11-12 12:21 1067次阅读
    在KiCad中使用AD的<b class='flag-5'>封装</b><b class='flag-5'>库</b>(Pcblib)

    labview调用bartender .NET封装成EXE后加载报错

    labview调用bartender .NET在源代码运行没有问题,但封装成EXE后加载.net就报错这事什么问题。 (注:用ActiveX封装成EXE也没问题,可以运行) 以下是bartender .net程序框图
    发表于 10-19 10:14

    本期视频介绍AD PCB封装转换为RedPCB。#PCB#pcb设计 #Altium

    PCB封装
    上海弘快科技有限公司
    发布于 :2024年10月18日 10:45:48

    如何将BQ35100配置为EOS模式

    电子发烧友网站提供《如何将BQ35100配置为EOS模式.pdf》资料免费下载
    发表于 09-11 10:03 0次下载
    <b class='flag-5'>如何将</b>BQ35100配置为EOS模式

    摆脱自建的繁琐,EDA元件转cadence原理图封装实战技巧

    摆脱自建的繁琐,EDA元件转cadence原理图封装实战技巧
    的头像 发表于 08-24 12:29 2954次阅读
    摆脱自建<b class='flag-5'>库</b>的繁琐,EDA元件<b class='flag-5'>库</b>转cadence原理图<b class='flag-5'>封装</b><b class='flag-5'>库</b>实战技巧

    请问如何将cURL添加到ESP8266_RTOS_SDK项目中?

    我想使用 curl api,但我不知道如何将添加到我的项目中,这样当我将该的头文件包含在我的项目中时它就不会抱怨。 有谁知道如何正确地第三方
    发表于 07-09 07:52

    如何将stm32f207的以太网中lwip1.3.2升级到1.4.1?

    如何将stm32f207的以太网中lwip1.3.2升级到1.4.1
    发表于 05-17 08:04

    函数发生器的常见故障及解决方法

    函数发生器,作为电子测试和测量领域的重要工具,其稳定性和可靠性对于实验和测试结果的准确性至关重要。然而,由于各种原因,函数发生器在使用过程中可能会遇到各种故障。本文详细介绍
    的头像 发表于 05-15 11:45 1071次阅读

    PADS2.7,如何将3D封装与PCB封装绑定,然后再PCB设计时可直接调用?

    PADS2.7,如何将3D封装与PCB封装绑定,然后再PCB设计时可直接调用?
    发表于 05-06 17:07

    请问hsm如何将整颗Tc389芯片重启?

    关于 hsm 如何将整颗 tc389 芯片重启,是否有什么资料介绍,或者说修改什么寄存器呢?
    发表于 03-06 08:05

    multisim14.0函数发生器怎么用

    Multisim 14.0是一款功能强大的电子电路仿真软件,其中包含了函数发生器。函数发生器是用于产生各种波形信号的设备,可以在电子电路实验中非常有用。在本文中,我详细介绍Multi
    的头像 发表于 02-23 16:41 7893次阅读

    在hightec中如何将源代封装,并编译链接成.a的库函数

    在hightec中如何将源代封装,并编译链接成.a的库函数
    发表于 02-18 08:10

    ROUND函数的使用方法

    ROUND函数是一种常用的数学函数,在各种程序和计算机语言中都有广泛的应用。它的作用是对一个给定的数字进行四舍五入运算,可以根据指定的小数位数进行精确的舍入操作。本文详细介绍ROUN
    的头像 发表于 01-14 11:19 2023次阅读