概述
本文檔僅介紹如何通過使用Eclipse、ARM-GCC編譯工具、GNU-ARM插件、J-Link或AT-Link等資源來配置及調試AT32F403A的sLib,并提供sLib方案商開發算法范例及終端用戶應用范例。關于AT32F403A的sLib詳細介紹及說明,請詳閱:《AN0040_AT32F403A_407_Security_Library_Application_Note》。環境說明:本文檔安裝說明基于WINDOWS 7 x64系統下實現,開發板使用AT-START-F403A。關于Eclips調試環境的安裝及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工作目錄.metadata:此workspace的環境設定project_l0:方案商開發算法范例project_l1:終端用戶應用范例
Project_L0方案商范例
_在此階段的范例程序,將完成下列幾個項目:
將低通濾波器函數編譯成可執行(executr-only)的代碼;
將低通濾波器函數的代碼編排放置到主閃存區地址0x08004000~0x08004FFF(sector8~9);
將低通濾波器函數的系數編排放置到主閃存區地址0x08005000~0x08005FFF(sector10~11);
驗證成功后,將sector8~9設置為指令安全庫區,將sector10~11設置為數據安全庫區,此部分可在范例的主程序中以調用slib_enable()函數來完成,或使用Artery ICP Programmer來完成(建議使用ICP工具完成設置);
產出終端用戶程序調用低通濾波函數時,需用到的頭文件及符號定義文件。
產生只執行(Exacute-only)代碼
設置方式如下:
1) 選擇C文件群組或個別的C文件,范例中是把要保護的相關C文件都放在FIR_Filter群組,點擊FIR_Filter群組內需要設置只執行的文件,按鼠標右鍵選擇“Properties”
圖2. 設置要保護的C文件
2) 點選C/C++Build->Settings->GNU ARM Cross C Complier->Miscellaneous,在”Other compiler flags”填入-mpure-code以及-mslow-flash-data這兩個關鍵字,然后按Apply使設定生效
圖3. 設置Miscellaneous
編排安全庫區的地址
Project_L0范例的主閃存映像及RAM的使用分區如下圖,RAM的分區主要是為了避免sLib保護區的代碼與終端用戶的代碼用到相同的RAM而產生的沖突問題。圖4. 主閃存映像及RAM的使用分區
其中濾波器函數的代碼編排放置到主閃存區的地址0x08004000~0x08004FFF(sector8~9),并將濾波器函數的系數編排放置到主閃存區的地址0x08005000~0x08005FFF(sector10~11)。RAM的部分則是將0x20000000到0x200000FF共256個字節保留給sLib保護區的代碼使用。
步驟如下:
1) 依據”AT32F403AxC_FLASH.ld”linker descriptor文件做修改,編寫一個ld文件,如project_l0\eclipse_gcc\ld目錄下的slib.ld。2) 在slib.ld當中,將主閃存及RAM分區劃分如下:3)?將算法代碼放到.slib_inst section,低通濾波器的系數放到.slib_data section,并將算法使用到的全局變量指定到.slib_ram section,如下圖:圖5. 配置code、data、ram section
4)?在Project->Properties->C/C++Build->Setting->GNU ARM Cross C Linker->General設定中的Script files,加入slib.ld。圖6. 設置Script files
5)?本范例會使用到gcc的數學運算函數庫libm.a,在Properties->GNU ARM Cross C Linker->Miscellaneous設定中的Other linker flags填入--specs=rdimon.specs,linker才不會出現錯誤訊息。圖7. 設置Other linker flags
關于ld文件的語法,可參考GNU linker的相關名文件。
產生頭文件及符號定義文件
頭文件(header file)跟符號定義文件(symbol definition file)是終端客戶應用范例Project_L1在調用FIR低通濾波函數時需要用到。在范例中,就是main.c中包含的fir_filter.h文件。符號定義文件則是定義低通濾波函數的實際地址。
產生符號定義文件的方法:
1)進入Project->Properties->C/C++Build->Setting的Build Steps設定畫面。圖8. 設置Build Steps
在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是要產出的符號定義文件,keep_sym.txt放在project_l0\eclipse_gcc目錄下,是用來選擇要產生哪些函數的符號,內容如下:3)?重新編譯整個項目后,在project_l0\eclipse_gcc目錄下,就會產生一個名為fir_filter_symbol.sym的符號定義文件。
啟用安全庫區保護
要啟用安全庫區的保護功能,有以下兩種方式:1) 使用ICP刻錄工具Artery ICP Programmer(建議用此方式)。使用ICP Programmer啟用sLib的方法,請參閱《AT32F403A Security Library Application Note》。2) 使用范例程序main.c之中的slib_enable()函數。在低通濾波函數測試正確后執行過一次此函數,就可以啟用安全庫區的保護功能。要執行此函數,只要在main.c中使能#define USE_SLIB_FUNCTION即可。
Project_L1終端用戶范例
_
Project_L1范例會使用到在Project_L0中調試好,并已經被刻錄到AT32F403A芯片的主閃存中且被sLib保護的FIR低通濾波器函數。根據Project_L0提供的頭文件、符號定義文件以及主閃存區塊映像,終端用戶就可以參照Project_L1做到
建立一個應用項目;
引用Project_L0提供的頭文件及符號定義文件到項目里;
調用FIR低通濾波器函數;
開發并調試用戶自己的應用程序。
注:Project_L1必須使用跟Project_L0開發時一樣的工具鏈及相同版本的編譯程序,不然有可能會因為版本差異的兼容性問題,而無法使用Project_L0提供的代碼。
建立用戶的應用項目
因為Project_L0啟用的安全庫區已經占用了一些特定的主閃存頁面,Project_L1的代碼必須參照Project_L0提供的主閃存區塊映像來編排放置的地址。其中sector8~11為安全庫區所占用,終端用戶需使用ld文件將這個區域隔離起來,避免代碼在編譯時被編排到這個區域內,方式如下:
參照project_l1\eclipse_gcc\ld目錄下的end_user_code.ld文件,將主閃存空間切成兩個區塊FLASH_1及FLASH_2,中間空出來的區域就是sLib保護區。此外,RAM的區域也要保留0x20000000到0x200000FF的區域。如下圖:
圖9. end-user-code.ld配置
其中SLIB_CODE及SLIB_DATA兩個區域,方案商已事先刻錄代碼,所以設定為NOLOAD,在下載Project_L1代碼到主閃存時,就不會再次被下載。
在項目中加入符號定義文件
Project_L0所產生的符號定義文件fir_filter_symbol.sym必須被添加到Project_L1項目中,才能被正確的編譯并鏈結到sLib保護區的代碼。方法如下:
1) 將fir_filter_symbol.sym這個文件加到FIR_Filter群組;
2) 打開Project->Properties->C/C++Build->Settings->Tool Setting->GNU ARM Cross C Linker->Miscellaneous設定畫面,在Other objects選單中加入此文件,在編譯項目時就會可以被引用到。圖10. 設置Other objects
關于雅特力雅特力科技于2016年成立,是一家致力于推動全球市場32位微控制器(MCU)創新趨勢的芯片設計公司,專注于ARM Cortex-M4/M0+的32位微控制器研發與創新,全系列采用55nm先進工藝及ARM Cortex-M4高效能或M0+低功耗內核,締造M4業界最高主頻288MHz運算效能,并支持工業級別芯片工作溫度范圍(-40°~105°)。雅特力目前已累積相當多元的終端產品成功案例:如微型打印機、掃地機、光流無人機、熱成像儀、激光雷達、工業縫紉機、伺服驅控、電競周邊市場、斷路器、ADAS、T-BOX、數字電源、電動工具等終端設備應用,廣泛地覆蓋5G、物聯網、消費、商務及工控等領域。
-
mcu
+關注
關注
146文章
17319瀏覽量
352649
發布評論請先 登錄
相關推薦
STM32轉AT32代碼轉換
![STM32轉<b class='flag-5'>AT32</b>代碼轉換](https://file1.elecfans.com/web2/M00/02/F1/wKgaoma5syyAYzztAAA5LSZZo34694.png)
AT32講堂088 | 雅特力AT32F402/F405時鐘配置
![<b class='flag-5'>AT32</b><b class='flag-5'>講堂</b>088 | 雅特力AT32F402/F405時鐘配置](https://file.elecfans.com/web2/M00/42/9C/pYYBAGJ5xmyARrXXAAALuRDQWfU330.jpg)
AT32講堂087 | 雅特力AT32 IDE快速入門指南
![<b class='flag-5'>AT32</b><b class='flag-5'>講堂</b>087 | 雅特力<b class='flag-5'>AT32</b> IDE快速入門指南](https://file.elecfans.com/web2/M00/42/9C/pYYBAGJ5xmyARrXXAAALuRDQWfU330.jpg)
雅特力AT32 MCU的隨機數生成
![雅特力<b class='flag-5'>AT32</b> <b class='flag-5'>MCU</b>的隨機數生成](https://file.elecfans.com/web2/M00/42/9C/pYYBAGJ5xmyARrXXAAALuRDQWfU330.jpg)
AT32講堂085 | 雅特力AT32 MCU HICK時鐘校準
![<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時鐘校準](https://file.elecfans.com/web2/M00/42/9C/pYYBAGJ5xmyARrXXAAALuRDQWfU330.jpg)
雅特力攜多款AT32 MCU新品與應用方案亮相2024慕尼黑上海電子展
![雅特力攜多款<b class='flag-5'>AT32</b> <b class='flag-5'>MCU</b>新品與應用方案亮相2024慕尼黑上海電子展](https://file.elecfans.com/web2/M00/42/9C/pYYBAGJ5xmyARrXXAAALuRDQWfU330.jpg)
請問vscode和eclipse哪個好使?
芯海 32 位 MCU 開發調試 ,基于 VS Code 插件實現芯海 32 位 MCU 開發調試
freertos啟用IAR自帶插件調試時不能查看隊列信息怎么解決?
MCU不復位調試的小技巧
![<b class='flag-5'>MCU</b>不復位<b class='flag-5'>調試</b>的小技巧](https://file1.elecfans.com/web2/M00/C0/FE/wKgZomXcBlSAZp-sAABBpbVXrJ4300.png)
雅特力AT32 MCU與SEGGER攜手合作,開發量產事半功倍
雅特力AT32 MCU與SEGGER攜手合作,開發量產事半功倍
![雅特力<b class='flag-5'>AT32</b> <b class='flag-5'>MCU</b>與SEGGER攜手合作,開發量產事半功倍](https://file.elecfans.com/web2/M00/42/9C/pYYBAGJ5xmyARrXXAAALuRDQWfU330.jpg)
調試器連接MCU不穩定怎么辦?
![<b class='flag-5'>調試</b>器連接<b class='flag-5'>MCU</b>不穩定怎么辦?](https://file1.elecfans.com/web2/M00/C0/60/wKgZomXVVWaAc76yAAAuv4t_rDo977.png)
評論