0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

關(guān)于如何將函數(shù)封裝成庫(kù)使用的方法介紹

星星科技指導(dǎo)員 ? 來(lái)源:TI ? 作者:Aki Li ? 2023-03-21 09:36 ? 次閱讀

在項(xiàng)目開(kāi)發(fā)過(guò)程中,開(kāi)發(fā)者出于保護(hù)核心算法的目的,希望將部分核心代碼封裝起來(lái),使得其他使用者無(wú)法查看具體的代碼實(shí)現(xiàn)細(xì)節(jié),而不影響正常的調(diào)用。常見(jiàn)的思路是將核心的函數(shù)封裝成庫(kù),下面將結(jié)合例程說(shuō)明具體實(shí)現(xiàn)方法。

1.庫(kù)的建立

1).新建庫(kù)工程

在CCS中,選擇Project -> New CCS Project,在工程配置窗口中,選擇相應(yīng)的“Target” device,以及輸入自定義的工程名字;然后需要注意在“Project type and tool-chain -> output type”中選擇“Static Library”,而不是“Executable”,“Executable”對(duì)應(yīng)的是我們一般用到的可生成.out 可執(zhí)行文件的工程。

poYBAGQZCgyATiHFAAFC0LPIhVY411.png

圖 1 在CCS中新建庫(kù)工程

2).定義相關(guān)的庫(kù)函數(shù)

新建完工程后,即可將所需封裝的函數(shù)放入工程文件中,在此以簡(jiǎn)單的一個(gè)功能函數(shù)為例進(jìn)行說(shuō)明。

pYYBAGQZCg2AeuVzAACadZE-Mgg653.png

圖 2 .C文件中添加目標(biāo)庫(kù)函數(shù)

3).添加頭文件.h

先在工程目錄新建一個(gè)“include”文件夾,然后在該文件夾新建

poYBAGQZCg2ANFY-AABd7ZWffVY249.png

pYYBAGQZCg6AG9lzAABbY7V_t4M154.png

圖 3 新建.h文件

在.h文件中進(jìn)行庫(kù)函數(shù)的函數(shù)聲明。

poYBAGQZCg6AE8njAADyvAC61k4130.png

圖 4 函數(shù)名聲明

至此,編譯該工程,即可生成所需的.lib文件,在默認(rèn)的Debug文件路徑中。

pYYBAGQZCg6AEHfkAADJIDOqYGM680.png

圖 5 編譯生成對(duì)應(yīng)的.lib文件

2.在工程項(xiàng)目中使用該庫(kù)文件

以C2000WARE中的“led_ex1_blink”例程為例,說(shuō)明下如何在實(shí)際工程中使用定義的庫(kù)文件。

1)建立文件鏈接

首先將第一步生成的.lib文件以及.h文件所在文件夾一并拷貝至目標(biāo)工程,由于具體的庫(kù)函數(shù)代碼實(shí)現(xiàn)體現(xiàn)在.c文件,因此最終的工程無(wú)法索引至原始的.c文件。

poYBAGQZCg-ADZH6AAEmvmhS95w075.png

圖 6 復(fù)制相應(yīng)的.h和.lib文件

下一步需要在該工程中建立對(duì)庫(kù)文件的鏈接關(guān)系。首先在工程屬性 C2000 Compiler->Include Option中添加.h文件所在的文件路徑,注意此處使用的是相對(duì)路徑,以確保工程路徑發(fā)生變更時(shí)的一致性。

pYYBAGQZCg-AbUgWAAFBgtoPfms287.png

圖 7 添加.h所在的文件路徑

然后,在C2000 Linker->File Search Path中分別添加對(duì)應(yīng)的.lib文件名以及所在文件路徑。

poYBAGQZChCAJvgSAAEkPe0xnx4443.png

圖 8 添加.lib 文件名及路徑

2)添加函數(shù)頭文件及調(diào)用

在目標(biāo)工程中添加.h文件的聲明,以及測(cè)試變量,并在主函數(shù)中進(jìn)行調(diào)用。

pYYBAGQZChCAOOBWAAC2iXNo4x4491.png

pYYBAGQZChGAKTO_AAA2Rvdn-so611.png

圖 9 .h文件聲明以及調(diào)用示例

燒錄該工程到芯片,運(yùn)行后驗(yàn)證“test”結(jié)果符合預(yù)期。

此外,除了上述方法,可以采用以下方式把工程的調(diào)試功能禁止,這樣在debug模式下就無(wú)法進(jìn)行任何的調(diào)試操作以及查看代碼,具體步驟:

選擇“option --symdebug:none”,即在工程屬性Build->C2000 Complier->Advanced Options->Advanced Debug Options中選擇--symdebug:none作為Debugging model。

poYBAGQZChGAYIivAADnJ33tSNA435.png

圖 10 使能option --symdebug:none

選擇一個(gè)例程,進(jìn)行以上配置后,在調(diào)試模式下的效果如圖 11所示。在該模式下,所有symbols和工程的鏈接將被移除,因此無(wú)法進(jìn)行任何的調(diào)試操作以及查看源代碼。建議在工程開(kāi)發(fā)的最后階段再使用該模式。

pYYBAGQZChKAExX3AACslpkdyco932.jpg

圖 11 工程示例

審核編輯:郭婷

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 封裝
    +關(guān)注

    關(guān)注

    126

    文章

    7645

    瀏覽量

    142454
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4694

    瀏覽量

    68074
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    動(dòng)態(tài)庫(kù)封裝成python模塊的方法

    之前的文章 靜態(tài)庫(kù)封裝成 python 模塊中講解了如何將靜態(tài)庫(kù)封裝成 python 模塊,靜
    發(fā)表于 07-13 15:24 ?575次閱讀

    在hightec中如何將源代封裝,并編譯鏈接成.a的庫(kù)函數(shù)?

    在hightec中如何將源代封裝,并編譯鏈接成.a的庫(kù)函數(shù)
    發(fā)表于 02-18 08:10

    如何將CCS3.3工程中.C文件封裝成OBJ庫(kù)文件

    如何將CCS3.3工程中的.C文件封裝成OBJ庫(kù)文件
    發(fā)表于 11-02 09:41

    怎么把寄存器編程封裝成固件庫(kù)編程

    基于野火“霸道”和“指南”——零死角玩轉(zhuǎn)STM32入門(mén)&中級(jí)篇學(xué)習(xí)地址:課程簡(jiǎn)介:本課程從STM32內(nèi)存映射開(kāi)始講起,告訴你什么是寄存器,怎么樣實(shí)現(xiàn)寄存器編程,然后怎么把寄存器編程封裝成固件
    發(fā)表于 08-03 06:47

    GPIO構(gòu)件封裝方法與規(guī)范

    (給出函數(shù)名與接口函數(shù)),以供實(shí)際編程使用。 必要性1、利用軟件構(gòu)件,編程開(kāi)發(fā)效率且程序更規(guī)范;2、底層驅(qū)動(dòng)封裝成構(gòu)件,可提高...
    發(fā)表于 11-08 06:58

    STM32固件庫(kù)介紹及庫(kù)函數(shù)模板創(chuàng)建相關(guān)資料分享

    為了方便移植和開(kāi)發(fā),減少很多不必要的麻煩,ST公司很多函數(shù)封裝成固件庫(kù)一、CMSIS標(biāo)準(zhǔn)介紹CMSIS標(biāo)準(zhǔn)的英文全稱是Cortex Mic
    發(fā)表于 11-30 07:25

    如何將c庫(kù)中的printf函數(shù)重定向到串口中去呢

    如何將c庫(kù)中的printf函數(shù)重定向到串口中去呢?有哪位大神可以解答一下嗎
    發(fā)表于 12-01 08:07

    如何將常用接口封裝成類似于NCNN的接口調(diào)用形式?

    如何將常用接口封裝成類似于NCNN的接口調(diào)用形式?
    發(fā)表于 03-10 07:08

    函數(shù)封裝成庫(kù)使用的方法

    作者:Aki Li在項(xiàng)目開(kāi)發(fā)過(guò)程中,開(kāi)發(fā)者出于保護(hù)核心算法的目的,希望部分核心代碼封裝起來(lái),使得其他使用者無(wú)法查看具體的代碼實(shí)現(xiàn)細(xì)節(jié),而不影響正常的調(diào)用。常見(jiàn)的思路是核心的函數(shù)
    發(fā)表于 11-07 08:05

    如何將AD庫(kù)轉(zhuǎn)換導(dǎo)入到PADS中使用

    想學(xué)習(xí)pads,學(xué)會(huì)如何將AD庫(kù)轉(zhuǎn)換導(dǎo)入到PADS中使用,方便自己
    發(fā)表于 12-11 16:46 ?0次下載

    如何將完成特定任務(wù)的程序代碼封裝成函數(shù)

    到目前為止,為了完成任務(wù),我們共調(diào)用了三個(gè)系統(tǒng)預(yù)定義的函數(shù):printf()、scanf()和sqrt()。通過(guò)調(diào)用特定函數(shù)來(lái)完成特定功能的方便程度不言自明。那么,我們自己能不能也完成特定功能的代碼寫(xiě)成
    發(fā)表于 03-25 08:00 ?18次下載
    <b class='flag-5'>如何將</b>完成特定任務(wù)的程序代碼<b class='flag-5'>封裝成</b><b class='flag-5'>函數(shù)</b>

    函數(shù)封裝成庫(kù)使用的實(shí)現(xiàn)方法

    在項(xiàng)目開(kāi)發(fā)過(guò)程中,開(kāi)發(fā)者出于保護(hù)核心算法的目的,希望部分核心代碼封裝起來(lái),使得其他使用者無(wú)法查看具體的代碼實(shí)現(xiàn)細(xì)節(jié),而不影響正常的調(diào)用。常見(jiàn)的思路是核心的函數(shù)
    的頭像 發(fā)表于 12-19 09:34 ?5359次閱讀

    如何將函數(shù)封裝成庫(kù)使用的方法介紹

    無(wú)法查看具體的代碼實(shí)現(xiàn)細(xì)節(jié),而不影響正常的調(diào)用。常見(jiàn)的思路是核心的函數(shù)封裝成庫(kù),下面結(jié)合例程說(shuō)明具體實(shí)現(xiàn)
    的頭像 發(fā)表于 01-12 16:32 ?5218次閱讀
    <b class='flag-5'>如何將</b><b class='flag-5'>函數(shù)</b><b class='flag-5'>封裝成</b><b class='flag-5'>庫(kù)</b>使用的<b class='flag-5'>方法</b><b class='flag-5'>介紹</b>

    關(guān)于如何將函數(shù)封裝成庫(kù)使用的方法介紹

    關(guān)于如何將函數(shù)封裝成庫(kù)使用的方法介紹
    發(fā)表于 10-28 12:00 ?1次下載
    <b class='flag-5'>關(guān)于</b><b class='flag-5'>如何將</b><b class='flag-5'>函數(shù)</b><b class='flag-5'>封裝成</b><b class='flag-5'>庫(kù)</b>使用的<b class='flag-5'>方法</b><b class='flag-5'>介紹</b>

    如何將包含XIlinx IP的用戶模塊封裝成網(wǎng)表文件

    那么如何將包含XIlinx IP的用戶模塊封裝成網(wǎng)表文件,下面將給出詳細(xì)步驟
    的頭像 發(fā)表于 05-18 11:12 ?1309次閱讀
    <b class='flag-5'>如何將</b>包含XIlinx IP的用戶模塊<b class='flag-5'>封裝成</b>網(wǎng)表文件