基于HPM_SDK_ENV開發應用程序的方式
HPM_SDK_ENV是先楫半導體MCU的Windows集成開發環境, 其包含HPM_SDK,工具鏈,依賴工具(cmake, ninja, openocd等)以及工程創建工具等文件。用戶基于HPM_SDK_ENV開發自己的應用程序時需要考慮如何維護板級配置文件和應用程序文件的問題。
以下3種維護方式:
用戶將自己的板級配置文件和應用程序文件全部維護在HPM_SDK_ENV之中。
不推薦。該種方式容易造成文件組織混亂,當需要升級SDK_ENV時,SDK_ENV文件與用戶文件組織在一起,升級處理麻煩。
用戶使用SDK_ENV中的板級配置文件,在SDK_ENV外維護應用程序文件。
此種方式適合用戶直接使用SDK_ENV中的評估板,開發自己的應用程序。
用戶在SDK_ENV外維護板級配置文件和應用程序文件。
推薦。該方式將用戶的板級配置文件和應用程序文件獨立于SDK_ENV進行維護,能夠方便的進行版本管理和升級SDK_ENV。
創建應用程序和板級配置
推薦用戶將應用程序和板級配置文件維護在SDK_ENV之外。
從sdk_env_v1.7.0開始,先楫半導體在SDK_ENV中提供了用戶模板以供用戶參考開發屬于自己的應用程序和板級配置文件。模板路徑:sdk_env/user_template。
請參考該模板 “如何快速創建用戶自定義board和app工程” 創建屬于應用程序和板級配置以及Linker文件。
CMake構建簡要介紹
HPM_SDK使用基于CMake的程序構建系統。用戶維護應用程序和板級配置時,需要對應添加CMakeLists.txt文件, CMake工具通過配置文件(CMakeLists.txt)來控制程序的構建過程,并生成適用于多種工具鏈(GCC/Segger Embedded Studio和IAR)的工程文件。通過修改CMakeLists.txt可以實現添加新的.c和.h文件,增加編譯參數等操作。
用戶通過維護板級配置文件和應用程序文件以及對應的CMakeLists.txt文件,可以方便的構建出自己的程序,只需對以上文件進行版本管理,即可實現對最終程序版本的有效管理,能夠降低版本管理難度。
多人協作時,使用版本管理的板級配置文件和應用程序文件以及對應的CMakeLists.txt文件,即可在本地構建出相同的工程,無須傳遞完整的工程文件(通常整個工程文件size較大)以及處理工程文件中的路徑不一致問題,可以提高協作效率。
用戶可參考HPM_SDK中cmake文件和查看HPM_SDK所支持的cmake API說明使用相關cmake指令。

用戶準備好板級配置文件和應用程序文件以及對應的CMakeLists.txt文件后,可以使用sdk_env中的start_gui工具調用CMake腳本構建出工程文件。

HPM_SDK_ENV升級與處理
當用戶將應用程序和板級配置維護在SDK_ENV之外,升級時可以直接使用新的SDK_ENV再次構建程序。如下,用戶在user目錄下維護自定義的板級配置和應用程序,原先配合sdk_env_1.6.0構建工程,升級獲取sdk_env_v1.7.0后可以使用新sdk_env中的工具再次構建工程,構建出的工程即會使用新sdk_env中的源文件,實現升級。
當sdk_env升級后,可以查看hpm_sdk docs中的Change Log獲取升級信息。某些情形下可能出現需要用戶適當修改自己維護的板級配置和應用程序與新sdk_env配合使用的情況,以下是一些可能情況的列舉:

01
使用用戶維護的板子和應用程序,用新的sdk_env構建程序應該能夠直接構建并編譯通過。
02
使用用戶維護的板子和新sdk_env提供的例程構建程序,可能會有需要補充或修改板級函數或宏定義等板級實現的情況。
假設hpm_sdk_env_v1.6.0中提供了例程A, 升級到hpm_sdk_env_v1.7.0時A例程進行了修改,需要使用板級文件中申明的函數或宏定義B。B是hpm_sdk_env_v1.7.0升級過程中新引入的,而用戶自己維護的板級文件停留在舊的狀態,缺少B的申明或實現,出現編譯報錯。
解決辦法:參考SDK中的board,在用戶自己維護的板級文件中添加缺少的函數或宏定義。
如果構建的例程是hpm_sdk_env_v1.7.0中新增的例程,新例程調用一些板級函數,則用戶同樣需要在自己維護的板級文件中添加相關板級實現。
如果使用用戶維護的板子和SDK中的例程進行構建,出現不支持構建的情況,會可能由于SDK例程依賴特定板級的feature,而用戶維護的板子不能提供相關feature,出現不能構建的情況。例如SDK中的例程hpm_sdk/samples/audio_codec/audio_loopback/app.yaml會記錄該例程依賴板級feature:board_audio_codec,也就是當板子支持板級audio_codec,該例程才能被構建出來。板子支持的feature記錄在板級文件夾下的yaml文件中。
03
使用用戶維護的板子和應用程序,但用戶應用程序想參考新sdk_env中的例程進行功能添加和升級。
例如在hpm_sdk_env_v1.6.0中,先楫提供了ECAT_IO例程,用戶基于此開發了自己的例程,在hpm_sdk_env_v1.7.0中,先楫增加了FOE例程,用戶希望將FOE功能添加到已有的應用程序中。
此類升級會涉及到修改用戶自己維護應用程序中的cmake和應用程序的.c&.h文件。用戶需參考SDK中的FOE例程的cmake修改自己應用程序的cmake,將FOE功能依賴的.c和.h添加進自己的工程,參考FOE例程,修改自己的應用程序,配置和調用FOE相關功能,最終實現FOE功能的正確添加。
04
用戶維護的linker升級
如果用戶使用的是SDK中的默認linker文件,其會隨著SDK_ENV的更新而被更新,SDK默認linker文件路徑在hpm_sdk/soc/xxxx/xxxx/toolchains下。
如果用戶維護了自己的linker文件,sdk升級過程中會存在一些linker的改動, 如增加section,修改section的存放位置,特定的sample會對此類改動有需求。當使用自己維護的linker出現鏈接過程報錯時,可以參考sdk中的linker進行檢查和修改。
05
IDE版本的升級
在HPM_SDK_ENV升級過程中,構建出的IDE工程可能會存在參數變化等情況,需要新的IDE版本才能支持。會出現SDK_ENV升級后的工程需要IDE同步升級后才能正確編譯的情況。例如升級到hpm_sdk_env_v1.7.0時,需要使用SEGGER Embedded Studio Release 8.16a及以上版本才可正確編譯。IDE版本信息可關注SDK的Release Note,確認相關IDE的版本需求。
-
mcu
+關注
關注
146文章
17851瀏覽量
360683 -
應用程序
+關注
關注
38文章
3322瀏覽量
58751 -
HPM
+關注
關注
1文章
40瀏覽量
7943
發布評論請先 登錄
先楫半導體 hpm_sdk v1.5.0 正式發布
HPM SDK Linux開發環境搭建指南
先楫hpm_sdk使用vscode開發
HPMSDK之外搭建工程指南(在也不擔心SDK升級一堆沖突上頭)
SDK_ENV 構建工程失敗
【先楫HPM5361EVK開發板試用體驗】在windows系統下搭建開發環境
【先楫HPM5361EVK開發板試用體驗】搭建開發環境1
【先楫HPM5361EVK開發板試用體驗】coremark測試HPM5361EVK性能
【先楫HPM5361EVK開發板試用體驗】coremark軟件跑分測試HPM5361EVK性能
【先楫HPM5361EVK開發板試用體驗】coremark軟件跑分測試HPM5361EVK性能
如何使用Xilinx SDK創建Linux應用程序,并進行開發和調試
[HPM雜談]你想要了解的先楫hpm_sdk開發都在這里系列 (二)
![[<b class='flag-5'>HPM</b>雜談]你想要了解的先楫<b class='flag-5'>hpm_sdk</b><b class='flag-5'>開發</b>都在這里系列 (二)](https://file.elecfans.com/web2/M00/37/D7/pYYBAGI9l9uAOwALAAAmFmqVYdg094.png)
評論