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

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

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

AT32講堂008 | AT32 MCU如何用Eclipse插件調(diào)試sLib

雅特力 AT32 MCU ? 2022-06-15 10:43 ? 次閱讀

概述

本文檔僅介紹如何通過使用Eclipse、ARM-GCC編譯工具、GNU-ARM插件、J-Link或AT-Link等資源來配置及調(diào)試AT32F403A的sLib,并提供sLib方案商開發(fā)算法范例及終端用戶應(yīng)用范例。關(guān)于AT32F403A的sLib詳細介紹及說明,請詳閱:《AN0040_AT32F403A_407_Security_Library_Application_Note》。環(huán)境說明:本文檔安裝說明基于WINDOWS 7 x64系統(tǒng)下實現(xiàn),開發(fā)板使用AT-START-F403A。關(guān)于Eclips調(diào)試環(huán)境的安裝及Eclipse工程的建立,請參閱《AN0033_Eclipse_with_GCC》。本文檔所使用的軟件都打包到Setup_SLIB_with_Eclipse_and_GCC_V2.0.0.zip,直接解壓重新編譯后即可運行。解壓后Eclipse的workspace位于目錄:Setup_SLIB_with_Eclipse_and_GCC_V2.0.0\utilities\slib_with_eclipse_and_gcc_demo。其中包含文件:圖1. Eclipse工作目錄2b40a05e-e6f7-11ec-aa96-dac502259ad0.png.metadata:此workspace的環(huán)境設(shè)定project_l0:方案商開發(fā)算法范例project_l1:終端用戶應(yīng)用范例

Project_L0方案商范例

_在此階段的范例程序,將完成下列幾個項目:

將低通濾波器函數(shù)編譯成可執(zhí)行(executr-only)的代碼;

將低通濾波器函數(shù)的代碼編排放置到主閃存區(qū)地址0x08004000~0x08004FFF(sector8~9);

將低通濾波器函數(shù)的系數(shù)編排放置到主閃存區(qū)地址0x08005000~0x08005FFF(sector10~11);

驗證成功后,將sector8~9設(shè)置為指令安全庫區(qū),將sector10~11設(shè)置為數(shù)據(jù)安全庫區(qū),此部分可在范例的主程序中以調(diào)用slib_enable()函數(shù)來完成,或使用Artery ICP Programmer來完成(建議使用ICP工具完成設(shè)置);

產(chǎn)出終端用戶程序調(diào)用低通濾波函數(shù)時,需用到的頭文件及符號定義文件。

產(chǎn)生只執(zhí)行(Exacute-only)代碼

設(shè)置方式如下:

1) 選擇C文件群組或個別的C文件,范例中是把要保護的相關(guān)C文件都放在FIR_Filter群組,點擊FIR_Filter群組內(nèi)需要設(shè)置只執(zhí)行的文件,按鼠標(biāo)右鍵選擇“Properties”

圖2. 設(shè)置要保護的C文件

2b6bc19e-e6f7-11ec-aa96-dac502259ad0.png

2) 點選C/C++Build->Settings->GNU ARM Cross C Complier->Miscellaneous,在”O(jiān)ther compiler flags”填入-mpure-code以及-mslow-flash-data這兩個關(guān)鍵字,然后按Apply使設(shè)定生效

圖3. 設(shè)置Miscellaneous

2bb66e88-e6f7-11ec-aa96-dac502259ad0.png

編排安全庫區(qū)的地址

Project_L0范例的主閃存映像及RAM的使用分區(qū)如下圖,RAM的分區(qū)主要是為了避免sLib保護區(qū)的代碼與終端用戶的代碼用到相同的RAM而產(chǎn)生的沖突問題。圖4. 主閃存映像及RAM的使用分區(qū)2bdffa78-e6f7-11ec-aa96-dac502259ad0.png

其中濾波器函數(shù)的代碼編排放置到主閃存區(qū)的地址0x08004000~0x08004FFF(sector8~9),并將濾波器函數(shù)的系數(shù)編排放置到主閃存區(qū)的地址0x08005000~0x08005FFF(sector10~11)。RAM的部分則是將0x20000000到0x200000FF共256個字節(jié)保留給sLib保護區(qū)的代碼使用。

步驟如下:

1) 依據(jù)”AT32F403AxC_FLASH.ld”linker descriptor文件做修改,編寫一個ld文件,如project_l0\eclipse_gcc\ld目錄下的slib.ld。2) 在slib.ld當(dāng)中,將主閃存及RAM分區(qū)劃分如下:2bf8a370-e6f7-11ec-aa96-dac502259ad0.png3)?將算法代碼放到.slib_inst section,低通濾波器的系數(shù)放到.slib_data section,并將算法使用到的全局變量指定到.slib_ram section,如下圖:圖5. 配置code、data、ram section2c215f40-e6f7-11ec-aa96-dac502259ad0.png4)?在Project->Properties->C/C++Build->Setting->GNU ARM Cross C Linker->General設(shè)定中的Script files,加入slib.ld。圖6. 設(shè)置Script files2c762d7c-e6f7-11ec-aa96-dac502259ad0.png5)?本范例會使用到gcc的數(shù)學(xué)運算函數(shù)庫libm.a,在Properties->GNU ARM Cross C Linker->Miscellaneous設(shè)定中的Other linker flags填入--specs=rdimon.specs,linker才不會出現(xiàn)錯誤訊息。圖7. 設(shè)置Other linker flags2caecdc6-e6f7-11ec-aa96-dac502259ad0.png關(guān)于ld文件的語法,可參考GNU linker的相關(guān)名文件。

產(chǎn)生頭文件及符號定義文件

頭文件(header file)跟符號定義文件(symbol definition file)是終端客戶應(yīng)用范例Project_L1在調(diào)用FIR低通濾波函數(shù)時需要用到。在范例中,就是main.c中包含的fir_filter.h文件。符號定義文件則是定義低通濾波函數(shù)的實際地址。

產(chǎn)生符號定義文件的方法:

1)進入Project->Properties->C/C++Build->Setting的Build Steps設(shè)定畫面。圖8. 設(shè)置Build Steps2cdc3914-e6f7-11ec-aa96-dac502259ad0.png

在Post-build steps的命令行中輸入以下命令:

arm-none-eabi-objcopy.exe--keep-symbols="..\keep_sym.txt"-S--remove-section=.ARM.attributes--extract-symbol"${BuildArtifactFileBaseName}.elf""..\fir_filter_symbol.sym"2) 此處fir_filter_symbol.sym是要產(chǎn)出的符號定義文件,keep_sym.txt放在project_l0\eclipse_gcc目錄下,是用來選擇要產(chǎn)生哪些函數(shù)的符號,內(nèi)容如下:2d0830e6-e6f7-11ec-aa96-dac502259ad0.png3)?重新編譯整個項目后,在project_l0\eclipse_gcc目錄下,就會產(chǎn)生一個名為fir_filter_symbol.sym的符號定義文件。

啟用安全庫區(qū)保護

要啟用安全庫區(qū)的保護功能,有以下兩種方式:1) 使用ICP刻錄工具Artery ICP Programmer(建議用此方式)。使用ICP Programmer啟用sLib的方法,請參閱《AT32F403A Security Library Application Note》。2) 使用范例程序main.c之中的slib_enable()函數(shù)。在低通濾波函數(shù)測試正確后執(zhí)行過一次此函數(shù),就可以啟用安全庫區(qū)的保護功能。要執(zhí)行此函數(shù),只要在main.c中使能#define USE_SLIB_FUNCTION即可。

Project_L1終端用戶范例

_

Project_L1范例會使用到在Project_L0中調(diào)試好,并已經(jīng)被刻錄到AT32F403A芯片的主閃存中且被sLib保護的FIR低通濾波器函數(shù)。根據(jù)Project_L0提供的頭文件、符號定義文件以及主閃存區(qū)塊映像,終端用戶就可以參照Project_L1做到

建立一個應(yīng)用項目;

引用Project_L0提供的頭文件及符號定義文件到項目里;

調(diào)用FIR低通濾波器函數(shù);

開發(fā)并調(diào)試用戶自己的應(yīng)用程序。

注:Project_L1必須使用跟Project_L0開發(fā)時一樣的工具鏈及相同版本的編譯程序,不然有可能會因為版本差異的兼容性問題,而無法使用Project_L0提供的代碼。

建立用戶的應(yīng)用項目

因為Project_L0啟用的安全庫區(qū)已經(jīng)占用了一些特定的主閃存頁面,Project_L1的代碼必須參照Project_L0提供的主閃存區(qū)塊映像來編排放置的地址。其中sector8~11為安全庫區(qū)所占用,終端用戶需使用ld文件將這個區(qū)域隔離起來,避免代碼在編譯時被編排到這個區(qū)域內(nèi),方式如下:

參照project_l1\eclipse_gcc\ld目錄下的end_user_code.ld文件,將主閃存空間切成兩個區(qū)塊FLASH_1及FLASH_2,中間空出來的區(qū)域就是sLib保護區(qū)。此外,RAM的區(qū)域也要保留0x20000000到0x200000FF的區(qū)域。如下圖:

圖9. end-user-code.ld配置2d2d96b0-e6f7-11ec-aa96-dac502259ad0.png

其中SLIB_CODE及SLIB_DATA兩個區(qū)域,方案商已事先刻錄代碼,所以設(shè)定為NOLOAD,在下載Project_L1代碼到主閃存時,就不會再次被下載。

在項目中加入符號定義文件

Project_L0所產(chǎn)生的符號定義文件fir_filter_symbol.sym必須被添加到Project_L1項目中,才能被正確的編譯并鏈結(jié)到sLib保護區(qū)的代碼。方法如下:

1) 將fir_filter_symbol.sym這個文件加到FIR_Filter群組;

2) 打開Project->Properties->C/C++Build->Settings->Tool Setting->GNU ARM Cross C Linker->Miscellaneous設(shè)定畫面,在Other objects選單中加入此文件,在編譯項目時就會可以被引用到。圖10. 設(shè)置Other objects

2d5ac7ca-e6f7-11ec-aa96-dac502259ad0.png

關(guān)于雅特力雅特力科技于2016年成立,是一家致力于推動全球市場32位微控制器(MCU)創(chuàng)新趨勢的芯片設(shè)計公司,專注于ARM Cortex-M4/M0+的32位微控制器研發(fā)與創(chuàng)新,全系列采用55nm先進工藝及ARM Cortex-M4高效能或M0+低功耗內(nèi)核,締造M4業(yè)界最高主頻288MHz運算效能,并支持工業(yè)級別芯片工作溫度范圍(-40°~105°)。雅特力目前已累積相當(dāng)多元的終端產(chǎn)品成功案例:如微型打印機、掃地機、光流無人機、熱成像儀、激光雷達、工業(yè)縫紉機、伺服驅(qū)控、電競周邊市場、斷路器、ADAS、T-BOX、數(shù)字電源、電動工具等終端設(shè)備應(yīng)用,廣泛地覆蓋5G物聯(lián)網(wǎng)、消費、商務(wù)及工控等領(lǐng)域。

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

    關(guān)注

    146

    文章

    17229

    瀏覽量

    351967
收藏 人收藏

    評論

    相關(guān)推薦

    STM32轉(zhuǎn)AT32代碼轉(zhuǎn)換

    1.引言在嵌入式開發(fā)中,我們經(jīng)常會遇到更換單片機芯片的事情,若芯片是同一廠家的還好說,若是不同廠家的則需要重新寫,重新調(diào),重新去學(xué)習(xí)其底層驅(qū)動程序,比較費時費力。如:ST32轉(zhuǎn)AT32、ST32轉(zhuǎn)
    的頭像 發(fā)表于 09-28 08:09 ?356次閱讀
    STM32轉(zhuǎn)<b class='flag-5'>AT32</b>代碼轉(zhuǎn)換

    AT32講堂088 | 雅特力AT32F402/F405時鐘配置

    簡介時鐘是芯片正確高效運行的基礎(chǔ),正確的時鐘配置是芯片能正確運行的必要條件,其重要性不言而喻。AT32各系列產(chǎn)品的時鐘配置部分可能存在細微的差異和需要注意的事項,本文檔就著重針對各系列的情況來詳細
    的頭像 發(fā)表于 09-15 08:08 ?554次閱讀
    <b class='flag-5'>AT32</b><b class='flag-5'>講堂</b>088 | 雅特力AT32F402/F405時鐘配置

    AT32講堂087 | 雅特力AT32 IDE快速入門指南

    新建項目新項目向?qū)T32ID提供支持雅特力MCU的C語言項目模板,方便用戶快速創(chuàng)建項目。菜單欄【File】>【New】>【CProject】。新建項目向?qū)У膶υ捒驅(qū)⒊霈F(xiàn)。在對
    的頭像 發(fā)表于 09-15 08:08 ?505次閱讀
    <b class='flag-5'>AT32</b><b class='flag-5'>講堂</b>087 | 雅特力<b class='flag-5'>AT32</b> IDE快速入門指南

    C2000 MCU JTAG 連接調(diào)試

    電子發(fā)燒友網(wǎng)站提供《C2000 MCU JTAG 連接調(diào)試.pdf》資料免費下載
    發(fā)表于 09-09 09:30 ?0次下載
    C2000 <b class='flag-5'>MCU</b> JTAG 連接<b class='flag-5'>調(diào)試</b>

    雅特力AT32 MCU的隨機數(shù)生成

    概述產(chǎn)品和生態(tài)系統(tǒng)安全性的需求比以往任何時候都更加重要。真隨機數(shù)是所有安全系統(tǒng)的核心,其質(zhì)量會影響設(shè)計的安全性。因此在沒有內(nèi)置硬件TRNG的AT32的微控制器系列中,如何提高隨機數(shù)的有效,來符合
    的頭像 發(fā)表于 08-30 12:26 ?659次閱讀
    雅特力<b class='flag-5'>AT32</b> <b class='flag-5'>MCU</b>的隨機數(shù)生成

    AT32講堂085 | 雅特力AT32 MCU HICK時鐘校準(zhǔn)

    簡介AT32系列MCU內(nèi)部都有提供適合運行的內(nèi)部高速時鐘(HICK),其本質(zhì)就是內(nèi)置于芯片的RC振蕩器。在25℃下,其典型值頻率8MHz的精度由工廠校準(zhǔn)到±1%,在-40到105℃,該內(nèi)部高速時鐘
    的頭像 發(fā)表于 08-30 12:26 ?741次閱讀
    <b class='flag-5'>AT32</b><b class='flag-5'>講堂</b>085 | 雅特力<b class='flag-5'>AT32</b> <b class='flag-5'>MCU</b> HICK時鐘校準(zhǔn)

    雅特力攜多款AT32 MCU新品與應(yīng)用方案亮相2024慕尼黑上海電子展

    AT32MCU與應(yīng)用方案齊亮相,呈現(xiàn)了多款電機控制、工業(yè)控制、汽車電子、智能家居、消費、商務(wù),及新能源等應(yīng)用方案。現(xiàn)場人流攢動、氛圍熱烈!多元產(chǎn)品布局助力產(chǎn)業(yè)升級
    的頭像 發(fā)表于 07-09 08:15 ?695次閱讀
    雅特力攜多款<b class='flag-5'>AT32</b> <b class='flag-5'>MCU</b>新品與應(yīng)用方案亮相2024慕尼黑上海電子展

    請問vscode和eclipse哪個好使?

    如題,最近開發(fā)esp32,在windows環(huán)境下。 說實話,idf的開發(fā)環(huán)境比以前搭建起來簡單多了,無論是vscode還是eclipse里都有一鍵安裝的插件,從前的環(huán)境搭建失敗勸退多次噩夢不再重演
    發(fā)表于 06-21 06:43

    芯海 32 位 MCU 開發(fā)調(diào)試 ,基于 VS Code 插件實現(xiàn)芯海 32 位 MCU 開發(fā)調(diào)試

    編譯/鏈接等腳本語法,只需要簡單配置參數(shù)、新建工程、增加代碼文件后,就可以開始編譯 和調(diào)試了。如果要生成靜態(tài)庫文件也只需要修改輸出格式,再編譯就可能生成.a 的文件。*附件:基于VSCode插件實現(xiàn)芯海32位MCU開發(fā)
    發(fā)表于 05-16 10:46

    freertos啟用IAR自帶插件調(diào)試時不能查看隊列信息怎么解決?

    在IAR平臺上調(diào)試freertos,想利用IAR自帶的freertos插件進行調(diào)試,但是只能看task的信息,不能看隊列信息顯示
    發(fā)表于 05-07 06:54

    請問如何用一個mcu監(jiān)測另一個mcu是否死機?

    板子上有兩個mcu,如何用mcu監(jiān)視大mcu是否死機?
    發(fā)表于 03-08 06:06

    MCU不復(fù)位調(diào)試的小技巧

    場景,也并非無路可循。原則上只要我們通過仿真器調(diào)試時,做到代碼不被重新下載覆蓋,MCU 不被復(fù)位,就可能保留當(dāng)前程序運行的狀態(tài),讓 Bug 無處藏身。 02 實現(xiàn)方法 首先,我們將編譯完成的工程燒錄到 MCU,保證
    發(fā)表于 02-26 11:30 ?1328次閱讀
    <b class='flag-5'>MCU</b>不復(fù)位<b class='flag-5'>調(diào)試</b>的小技巧

    雅特力AT32 MCU與SEGGER攜手合作,開發(fā)量產(chǎn)事半功倍

    近日,雅特力與SEGGER共同宣布J-Link仿真調(diào)試器與Flasher在線燒錄器全面支持AT32 MCU產(chǎn)品,SEGGER工具鏈的加持使AT32
    的頭像 發(fā)表于 02-23 10:27 ?442次閱讀

    雅特力AT32 MCU與SEGGER攜手合作,開發(fā)量產(chǎn)事半功倍

    近日,雅特力與SEGGER共同宣布J-Link仿真調(diào)試器與Flasher在線燒錄器全面支持AT32MCU產(chǎn)品,SEGGER工具鏈的加持使AT32MCU開發(fā)如虎添翼。雅特力自2018年對外銷售以來
    的頭像 發(fā)表于 02-22 08:13 ?515次閱讀
    雅特力<b class='flag-5'>AT32</b> <b class='flag-5'>MCU</b>與SEGGER攜手合作,開發(fā)量產(chǎn)事半功倍

    調(diào)試器連接MCU不穩(wěn)定怎么辦?

    有沒有小伙伴遇到使用GDlink或者Jlink調(diào)試GD32 MCU的時候出現(xiàn)不穩(wěn)定的情況,剛要發(fā)現(xiàn)問題時調(diào)試器和MCU斷開連接了,這個時候可能抓狂的心都有了。今天就教給大家?guī)讉€提高
    的頭像 發(fā)表于 02-21 09:44 ?973次閱讀
    <b class='flag-5'>調(diào)試</b>器連接<b class='flag-5'>MCU</b>不穩(wěn)定怎么辦?