賴春雷
英飛凌技術支援中心
高級工程師
通過前兩課的學習,相信大家已經對ModusToolbox™有了初步的印象。 是否仍有些意猶未盡?
程式設計世界有一個浪漫,就是人類和工具可以通過HelloWorld例程來熟悉彼此,ModusToolbox™也不例外。 下面,我們就在ModusToolbox™中創建第一個HelloWorld例程,來加深對彼此的認識吧!
Sep . 2023
分享至
賴春雷
英飛凌技術支援中心
高級工程師
通過前兩課的學習,相信大家已經對ModusToolbox™有了初步的印象。 是否仍有些意猶未盡?
程式設計世界有一個浪漫,就是人類和工具可以通過HelloWorld例程來熟悉彼此,ModusToolbox™也不例外。 下面,我們就在ModusToolbox™中創建第一個HelloWorld例程,來加深對彼此的認識吧!
圖01
大家可能會覺得意外,但ModusToolbox™有一個重要的基本概念,就是去IDE化。
圖02
如圖01中藍色箭頭所指,Eclipse IDE和partner IDEs都只是ModusToolbox™中定義的Tools中的一種,而非ModusToolbox™生態的中心。 並且,ModusToolbox™中對Eclipse這個元件的實際稱呼,也只是“Eclipse IDE for ModusToolbox”。
由此可知Eclipse等IDE並不是必須的,依賴或不依賴Eclipse這些IDE都是允許的。 對於ModusToolbox™生態而言,無論你是創建、編輯還是調試例程,都可以繞過IDE,進而直接使用更底層的工具鏈。 Eclipse等IDE在ModusToolbox™生態的定義中,只是一個加分項。
這裡可以舉一個例子:比如,實際執行創建例程工作的載體是Project Creator,它除了可以在Eclipse IDE中被調用,也可以獨立運行。 從圖01也可見,Project Creator其實是獨立在Eclipse IDE之外,和Eclipse IDE處於同一層級的,這有別於一般的設計。 這不僅佐證了“IDE不是必須的”這個觀點,也說明接下來我們創建例程時,和我們實際打交道的不是IDE,而是這個Project Creator。
這裡還會牽扯到ModusToolbox™另外一個重要的基本概念:在ModusToolbox™中GUI(圖形介面)和CLI(命令行介面)是具有同等地位的。 故Project Creator同時提供了GUI和CLI的介面,以滿足使用者的不同需要。
所以,我們創建例程就有如下兩種途經。
通過GUI創建HelloWorld例程
你可以在開始功能表中找到Project Creator並獨立運行它,或者在Eclipse IDE中通過左上角檔功能表喚起Project Creator。 此時你打開的即是Project Creator的GUI介面,如圖02。
圖03
在Project Creator中,第一步先選擇你開發板對應的BSP(Board Support Package)。 為方便創建HelloWorld例程,我們選擇PSoC™ 6 BSPs中的CY8CKIT-062S2-43012,選中後點擊“Next >”按鈕進入第二步,如圖03。
圖04
在第二步的清單中,Getting Started目錄中即有Hello_World例程,選擇它。 除此之外,你還可以指定Application Root Path(即例程的工作區位置)和New Application Name(即例程在磁碟上的目錄名稱)等。 最後點擊“Create”按鈕,即可開始創建例程。
例程在創建時是需要聯網即時下載數據的,故需要稍等片刻。 如果你遇到了第二課中提到的網路問題並需要使用LCS本地內容的話,則需要先導入LCS本地內容包,接著勾選Project Creator左上角功能表項中的“Settings -> Local Content”,如此便可啟用LCS。 然後你再重複前述第一步和第二步操作,即可在不聯網的情況下創建例程。
例程創建后即可連接開發板運行例程,這裡暫不詳述,最終你可得到結果如圖04。
圖05
怎麼樣,感受到來自ModusToolbox™善意問候的你,有沒有對ModusToolbox™也多了一些瞭解?
通過CLI創建HelloWorld例程
你可以通過Eclipse中集成的Terminal入口,或者獨立出現在開始功能表中的modus-shell命令行環境,來運行Project Creator的CLI版本。 CLI版本的Project Creator的路徑如下:
<Modustoolbox 安装位置>/tools_X.Y/project-creator/project-creator-cli.exe
運行該命令之前,推薦你cd到其所在目錄。
你可使用下方命令查詢其可用參數和選項:
project-creator-cli.exe --help
通過查詢可知,“--list-boards”參數用於查詢可用的BSP,“--list-apps”參數用於查詢可用的例程。
然後,你可以仿照下方的示例,以創建HelloWorld例程:
project-creator-cli.exe --board-id CY8CKIT-062S2-43012 --app-id mtb-example-hal-hello-world --target-dir /cygdrive/d/mtw/ --user-app-name Hello_World_CLI_31
其中,“--board-id”參數指定了BSP為CY8CKIT-062S2-43012,“--app-id”參數指定了例程為mtb-example-hal-hello-world,“--target-dir”參數指定了例程的工作區位置為/cygdrive/d/mtw/(注意使用符合modus-shell和unix規範的路徑格式), “--user-app-name”參數則指定了例程在磁碟上的目錄名稱。
運行該命令,直到命令輸出如圖05的日誌,例程即創建成功。
隨著後面你對ModusToolbox™理解的深入,漸漸地你或許會發現,Project Creator中提供的例程似乎有些少?
的確如此。 默認地,你在ModusToolbox™中看到的在線資源,僅僅是標準的、經過充分驗證的產品開發資源。 這是因為ModusToolbox™使用了一種稱作資源清單的機制來顯示相應的產品開發資源,而在缺省狀態下,它載入的僅是標準的資源清單。 出於對使用安全和使用者利益的考慮,為防止使用者誤用,該版本的清單未包含其它增補的官方資源。
由此可見,想解鎖更多的資源,你需要在「資源清單」上做文章。 所以你有以下幾個途徑,來讓你的ModusToolbox™解鎖更多的資源。
載入來自官方的額外資源清單
事實上,上述提到的這些增補的官方資源也是公開的,也同樣託管在 github.com 上。 所以,如果你有充分的必要,你可以指定ModusToolbox™載入額外的官方資源清單,從而使用這些增補的官方資源。
你可以點擊這裡,瞭解官方有哪些額外的資源清單和具體的使用方式。 粗略而言,你需要在<用戶目錄>/.modustoolbox/目錄下建立一個文本檔manifest.loc,然後在該文本檔中填入相應的清單超連結位址。
請在充分了解風險以後再使用。 使用增補的資源有可能對你的設備造成損壞,這些資源也可能存在意想不到的bug。
載入來自第三方的額外資源清單
第三方也可能為ModusToolbox™製作併發佈相應的資源清單,以分享他們希望提供的內容,只要清單符合ModusToolbox對清單的格式要求,對應的資源也符合ModusToolbox™™的使用規範即可。
舉個例子,其實在官方的資源清單中,也使用了一些第三方提供的資源和清單,比如來自SensiML的例程及其資源清單,你可以點擊這裡一探究竟。
此外,就如第二課中所講的,如果你所在地區遭遇對 github.com 的服務阻斷,你其實也不能訪問託管在 github.com 上的資源清單。
所幸的是,社區也有熱心用戶鏡像並重打包了官方的資源清單到其它類 github.com 的代碼託管平臺上,並且對所有的官方資源清單(包括標準的和額外的資源清單),都進行了一對一的搬運,讓你無縫切換,繞開 github.com 引起的清單訪問失敗問題。
這類清單也可以看作是第三方提供的資源清單,雖然該清單實際指向的資源和官方資源別無二致。 同時,這份鏡像清單也說明,ModusToolbox™的資源清單,可存放於任何WEB伺服器上,並非局限於 github.com。
目前該鏡像清單已被發佈到英飛凌開發者社區,你可以點擊這裡查看。
製作你自己的資源清單並與世界分享
看完前述,有一個結論已經呼之欲出,那就是:我們何不嘗試製作自己的資源清單!的確如此。 如果你有一些很好的點子、很好的MCU應用方面的例程想與其他人分享的話,你完全可以為之製作一份資源清單,並把你例程的相關資源和資源清單託管到 github.com 等平臺,就像SensiML那樣。製作的流程和清單的格式,在ModusToolbox™ Tools Package User Guide 中的6.2節(Create your own manifest)中有詳盡介紹,感興趣的可以參閱。
製作完成後,你可以輕鬆地把資源和清單發佈到網上。 你甚至不需要搭建自己的伺服器,依託 github.com 等代碼託管平臺,你就能立刻分享你的成果。
然後,你只需把你的清單超鏈接位址分享出去,受眾就能立即在他的ModusToolbox™中載入並使用你的例程,就是這麼簡單!
或者,依託 github.com 的引流,你的例程可能會在 github.com 成千上萬次的搜尋結果中出現。 你只需在你的倉庫中添加必要的說明,別人就知道如何借助ModusToolbox™來使用你的例程!
甚至,得益於ModusToolbox™資源清單的嵌套機制,你的清單可能被別人甚至官方的清單所包含和收編。 你的成果得到了認可的同時,曝光量也會大幅增加!
你看到了嗎? 借助ModusToolbox™,你的成果火光更亮了,星星之火,也能照亮世界。 ModusToolbox™除了説明你完成開發,還讓你的成果走得更遠,離世界更近。
這就是ModusToolbox™面向開源內容的開放式架構設計的曼妙之處:如同IDE只是ModusToolbox™中的加分項而不是ModusToolbox™的中心,ModusToolbox™也旨在成為開源社區這個超集的加分項,而不是進入開源社區的中心或與中心競爭。
對於ModusToolbox™而言,內容、社區、以及使用者,都是優先於ModusToolbox™本身的。 ModusToolbox™的願景,始終是為多方搭建橋樑,而非成為又一方。 它雖然是一款專用的開發支援工具鏈軟體,但比其它專用軟體想了更多、做了更多。
相信隨著後面課程的展開,大家會越來越體會到ModusToolbox™那篤定而優美的一面。
別走開,我們下期再見!
如需瞭解更多資訊,請點擊:
文章出處:英飛凌官方微信(https://reurl.cc/V4Wq05)