基于HPM_SDK_ENV開(kāi)發(fā)應(yīng)用程序的方式
HPM_SDK_ENV是先楫半導(dǎo)體MCU的Windows集成開(kāi)發(fā)環(huán)境, 其包含HPM_SDK,工具鏈,依賴(lài)工具(cmake, ninja, openocd等)以及工程創(chuàng)建工具等文件。用戶(hù)基于HPM_SDK_ENV開(kāi)發(fā)自己的應(yīng)用程序時(shí)需要考慮如何維護(hù)板級(jí)配置文件和應(yīng)用程序文件的問(wèn)題。
以下3種維護(hù)方式:
用戶(hù)將自己的板級(jí)配置文件和應(yīng)用程序文件全部維護(hù)在HPM_SDK_ENV之中。
不推薦。該種方式容易造成文件組織混亂,當(dāng)需要升級(jí)SDK_ENV時(shí),SDK_ENV文件與用戶(hù)文件組織在一起,升級(jí)處理麻煩。
用戶(hù)使用SDK_ENV中的板級(jí)配置文件,在SDK_ENV外維護(hù)應(yīng)用程序文件。
此種方式適合用戶(hù)直接使用SDK_ENV中的評(píng)估板,開(kāi)發(fā)自己的應(yīng)用程序。
用戶(hù)在SDK_ENV外維護(hù)板級(jí)配置文件和應(yīng)用程序文件。
推薦。該方式將用戶(hù)的板級(jí)配置文件和應(yīng)用程序文件獨(dú)立于SDK_ENV進(jìn)行維護(hù),能夠方便的進(jìn)行版本管理和升級(jí)SDK_ENV。
創(chuàng)建應(yīng)用程序和板級(jí)配置
推薦用戶(hù)將應(yīng)用程序和板級(jí)配置文件維護(hù)在SDK_ENV之外。
從sdk_env_v1.7.0開(kāi)始,先楫半導(dǎo)體在SDK_ENV中提供了用戶(hù)模板以供用戶(hù)參考開(kāi)發(fā)屬于自己的應(yīng)用程序和板級(jí)配置文件。模板路徑:sdk_env/user_template。
請(qǐng)參考該模板 “如何快速創(chuàng)建用戶(hù)自定義board和app工程” 創(chuàng)建屬于應(yīng)用程序和板級(jí)配置以及Linker文件。
CMake構(gòu)建簡(jiǎn)要介紹
HPM_SDK使用基于CMake的程序構(gòu)建系統(tǒng)。用戶(hù)維護(hù)應(yīng)用程序和板級(jí)配置時(shí),需要對(duì)應(yīng)添加CMakeLists.txt文件, CMake工具通過(guò)配置文件(CMakeLists.txt)來(lái)控制程序的構(gòu)建過(guò)程,并生成適用于多種工具鏈(GCC/Segger Embedded Studio和IAR)的工程文件。通過(guò)修改CMakeLists.txt可以實(shí)現(xiàn)添加新的.c和.h文件,增加編譯參數(shù)等操作。
用戶(hù)通過(guò)維護(hù)板級(jí)配置文件和應(yīng)用程序文件以及對(duì)應(yīng)的CMakeLists.txt文件,可以方便的構(gòu)建出自己的程序,只需對(duì)以上文件進(jìn)行版本管理,即可實(shí)現(xiàn)對(duì)最終程序版本的有效管理,能夠降低版本管理難度。
多人協(xié)作時(shí),使用版本管理的板級(jí)配置文件和應(yīng)用程序文件以及對(duì)應(yīng)的CMakeLists.txt文件,即可在本地構(gòu)建出相同的工程,無(wú)須傳遞完整的工程文件(通常整個(gè)工程文件size較大)以及處理工程文件中的路徑不一致問(wèn)題,可以提高協(xié)作效率。
用戶(hù)可參考HPM_SDK中cmake文件和查看HPM_SDK所支持的cmake API說(shuō)明使用相關(guān)cmake指令。
![fdd80db6-e5de-11ef-9434-92fbcf53809c.png](http://images.elecfans.net/uploads/20250208/fdd80db6-e5de-11ef-9434-92fbcf53809c.png)
用戶(hù)準(zhǔn)備好板級(jí)配置文件和應(yīng)用程序文件以及對(duì)應(yīng)的CMakeLists.txt文件后,可以使用sdk_env中的start_gui工具調(diào)用CMake腳本構(gòu)建出工程文件。
![fde9fc42-e5de-11ef-9434-92fbcf53809c.png](http://images.elecfans.net/uploads/20250208/fde9fc42-e5de-11ef-9434-92fbcf53809c.png)
HPM_SDK_ENV升級(jí)與處理
當(dāng)用戶(hù)將應(yīng)用程序和板級(jí)配置維護(hù)在SDK_ENV之外,升級(jí)時(shí)可以直接使用新的SDK_ENV再次構(gòu)建程序。如下,用戶(hù)在user目錄下維護(hù)自定義的板級(jí)配置和應(yīng)用程序,原先配合sdk_env_1.6.0構(gòu)建工程,升級(jí)獲取sdk_env_v1.7.0后可以使用新sdk_env中的工具再次構(gòu)建工程,構(gòu)建出的工程即會(huì)使用新sdk_env中的源文件,實(shí)現(xiàn)升級(jí)。
當(dāng)sdk_env升級(jí)后,可以查看hpm_sdk docs中的Change Log獲取升級(jí)信息。某些情形下可能出現(xiàn)需要用戶(hù)適當(dāng)修改自己維護(hù)的板級(jí)配置和應(yīng)用程序與新sdk_env配合使用的情況,以下是一些可能情況的列舉:
![fdcca9da-e5de-11ef-9434-92fbcf53809c.png](http://images.elecfans.net/uploads/20250208/fdcca9da-e5de-11ef-9434-92fbcf53809c.png)
01
使用用戶(hù)維護(hù)的板子和應(yīng)用程序,用新的sdk_env構(gòu)建程序應(yīng)該能夠直接構(gòu)建并編譯通過(guò)。
02
使用用戶(hù)維護(hù)的板子和新sdk_env提供的例程構(gòu)建程序,可能會(huì)有需要補(bǔ)充或修改板級(jí)函數(shù)或宏定義等板級(jí)實(shí)現(xiàn)的情況。
假設(shè)hpm_sdk_env_v1.6.0中提供了例程A, 升級(jí)到hpm_sdk_env_v1.7.0時(shí)A例程進(jìn)行了修改,需要使用板級(jí)文件中申明的函數(shù)或宏定義B。B是hpm_sdk_env_v1.7.0升級(jí)過(guò)程中新引入的,而用戶(hù)自己維護(hù)的板級(jí)文件停留在舊的狀態(tài),缺少B的申明或?qū)崿F(xiàn),出現(xiàn)編譯報(bào)錯(cuò)。
解決辦法:參考SDK中的board,在用戶(hù)自己維護(hù)的板級(jí)文件中添加缺少的函數(shù)或宏定義。
如果構(gòu)建的例程是hpm_sdk_env_v1.7.0中新增的例程,新例程調(diào)用一些板級(jí)函數(shù),則用戶(hù)同樣需要在自己維護(hù)的板級(jí)文件中添加相關(guān)板級(jí)實(shí)現(xiàn)。
如果使用用戶(hù)維護(hù)的板子和SDK中的例程進(jìn)行構(gòu)建,出現(xiàn)不支持構(gòu)建的情況,會(huì)可能由于SDK例程依賴(lài)特定板級(jí)的feature,而用戶(hù)維護(hù)的板子不能提供相關(guān)feature,出現(xiàn)不能構(gòu)建的情況。例如SDK中的例程hpm_sdk/samples/audio_codec/audio_loopback/app.yaml會(huì)記錄該例程依賴(lài)板級(jí)feature:board_audio_codec,也就是當(dāng)板子支持板級(jí)audio_codec,該例程才能被構(gòu)建出來(lái)。板子支持的feature記錄在板級(jí)文件夾下的yaml文件中。
03
使用用戶(hù)維護(hù)的板子和應(yīng)用程序,但用戶(hù)應(yīng)用程序想?yún)⒖夹聅dk_env中的例程進(jìn)行功能添加和升級(jí)。
例如在hpm_sdk_env_v1.6.0中,先楫提供了ECAT_IO例程,用戶(hù)基于此開(kāi)發(fā)了自己的例程,在hpm_sdk_env_v1.7.0中,先楫增加了FOE例程,用戶(hù)希望將FOE功能添加到已有的應(yīng)用程序中。
此類(lèi)升級(jí)會(huì)涉及到修改用戶(hù)自己維護(hù)應(yīng)用程序中的cmake和應(yīng)用程序的.c&.h文件。用戶(hù)需參考SDK中的FOE例程的cmake修改自己應(yīng)用程序的cmake,將FOE功能依賴(lài)的.c和.h添加進(jìn)自己的工程,參考FOE例程,修改自己的應(yīng)用程序,配置和調(diào)用FOE相關(guān)功能,最終實(shí)現(xiàn)FOE功能的正確添加。
04
用戶(hù)維護(hù)的linker升級(jí)
如果用戶(hù)使用的是SDK中的默認(rèn)linker文件,其會(huì)隨著SDK_ENV的更新而被更新,SDK默認(rèn)linker文件路徑在hpm_sdk/soc/xxxx/xxxx/toolchains下。
如果用戶(hù)維護(hù)了自己的linker文件,sdk升級(jí)過(guò)程中會(huì)存在一些linker的改動(dòng), 如增加section,修改section的存放位置,特定的sample會(huì)對(duì)此類(lèi)改動(dòng)有需求。當(dāng)使用自己維護(hù)的linker出現(xiàn)鏈接過(guò)程報(bào)錯(cuò)時(shí),可以參考sdk中的linker進(jìn)行檢查和修改。
05
IDE版本的升級(jí)
在HPM_SDK_ENV升級(jí)過(guò)程中,構(gòu)建出的IDE工程可能會(huì)存在參數(shù)變化等情況,需要新的IDE版本才能支持。會(huì)出現(xiàn)SDK_ENV升級(jí)后的工程需要IDE同步升級(jí)后才能正確編譯的情況。例如升級(jí)到hpm_sdk_env_v1.7.0時(shí),需要使用SEGGER Embedded Studio Release 8.16a及以上版本才可正確編譯。IDE版本信息可關(guān)注SDK的Release Note,確認(rèn)相關(guān)IDE的版本需求。
-
mcu
+關(guān)注
關(guān)注
146文章
17347瀏覽量
352708 -
應(yīng)用程序
+關(guān)注
關(guān)注
38文章
3295瀏覽量
57934 -
HPM
+關(guān)注
關(guān)注
1文章
38瀏覽量
7789
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
先楫半導(dǎo)體 hpm_sdk v1.5.0 正式發(fā)布
HPM SDK Linux開(kāi)發(fā)環(huán)境搭建指南
先楫hpm_sdk使用vscode開(kāi)發(fā)
HPMSDK之外搭建工程指南(在也不擔(dān)心SDK升級(jí)一堆沖突上頭)
SDK_ENV 構(gòu)建工程失敗
【先楫HPM5361EVK開(kāi)發(fā)板試用體驗(yàn)】在windows系統(tǒng)下搭建開(kāi)發(fā)環(huán)境
【先楫HPM5361EVK開(kāi)發(fā)板試用體驗(yàn)】搭建開(kāi)發(fā)環(huán)境1
【先楫HPM5361EVK開(kāi)發(fā)板試用體驗(yàn)】coremark測(cè)試HPM5361EVK性能
【先楫HPM5361EVK開(kāi)發(fā)板試用體驗(yàn)】coremark軟件跑分測(cè)試HPM5361EVK性能
【先楫HPM5361EVK開(kāi)發(fā)板試用體驗(yàn)】coremark軟件跑分測(cè)試HPM5361EVK性能
使用面向OpenCL應(yīng)用程序的英特爾SDK更快地開(kāi)發(fā)OpenCL
如何使用Xilinx SDK創(chuàng)建Linux應(yīng)用程序,并進(jìn)行開(kāi)發(fā)和調(diào)試
如何導(dǎo)出硬件平臺(tái)并啟動(dòng)SDK開(kāi)發(fā)應(yīng)用程序及板級(jí)支持包
![如何導(dǎo)出硬件平臺(tái)并啟動(dòng)<b class='flag-5'>SDK</b><b class='flag-5'>開(kāi)發(fā)</b><b class='flag-5'>應(yīng)用程序</b>及板級(jí)支持包](https://file.elecfans.com/web1/M00/DB/A8/o4YBAGAKD0aAMlAFAABH0bt9iUs890.png)
[HPM雜談]你想要了解的先楫hpm_sdk開(kāi)發(fā)都在這里系列 (二)
![[<b class='flag-5'>HPM</b>雜談]你想要了解的先楫<b class='flag-5'>hpm_sdk</b><b class='flag-5'>開(kāi)發(fā)</b>都在這里系列 (二)](https://file.elecfans.com/web2/M00/37/D7/pYYBAGI9l9uAOwALAAAmFmqVYdg094.png)
window端的sdk_env的構(gòu)建工具使用
![window端的<b class='flag-5'>sdk_env</b>的構(gòu)建工具使用](https://file1.elecfans.com/web2/M00/AA/15/wKgZomUs57iAcGoVAAAidlxSbjQ348.png)
評(píng)論