賴春雷
英飛凌技術支持中心
高級工程師
通過前兩課的學習,相信大家已經對ModusToolbox™有了初步的印象。是否仍有些意猶未盡?
編程世界有一個浪漫,就是人類和工具可以通過HelloWorld例程來熟悉彼此,ModusToolbox™也不例外。下面,我們就在ModusToolbox™中創建第一個HelloWorld例程,來加深對彼此的認識吧!
▎讓ModusToolbox™說聲“HelloWorld”
大家可能會覺得意外,但ModusToolbox™有一個重要的基本概念,就是去IDE化。
圖01
如圖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。
圖02
在Project Creator中,第一步先選擇你開發板對應的BSP(Board Support Package)。為方便創建HelloWorld例程,我們選擇PSoC™ 6 BSPs中的CY8CKIT-062S2-43012,選中後點擊“Next >”按鈕進入第二步,如圖03。
圖03
在第二步的列表中,Getting Started目錄中即有Hello_World例程,選擇它。除此之外,你還可以指定Application Root Path(即例程的工作區位置)和New Application Name(即例程在磁盤上的目錄名稱)等。最後點擊“Create”按鈕,即可開始創建例程。
例程在創建時是需要聯網實時下載數據的,故需要稍等片刻。如果你遇到了第二課中提到的網絡問題並需要使用LCS本地內容的話,則需要先導入LCS本地內容包,接著勾選Project Creator左上角菜單項中的“Settings -> Local Content”,如此便可啟用LCS。然後你再重複前述第一步和第二步操作,即可在不聯網的情況下創建例程。
例程創建後即可連接開發板運行例程,這裡暫不詳述,最終你可得到結果如圖04。
圖04
怎麼樣,感受到來自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的日誌,例程即創建成功。
圖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™那篤定而優美的一面。
別走開,我們下期再見!
如需了解更多信息,請點擊:
- ModusToolbox™ manifests repositories (infineon.com)
- sensiml-ce-manifest/sensiml-ce-manifest-fv2.xml(github.com)
- Mirror of the ModusToolbox™ Manifests Repositories - Infineon Developer Community
- Infineon-ModusToolbox_3.1_a_Tools_Package_User_Guide-GettingStarted-v01_00-EN.pdf
文章回顧:
- “如何確保英飛凌工程師在24小時內給您回復?操作指南來了!”
- 英飛凌技術支持系列 | 智能高邊開關SPOC ™+2系列SPI檢測實例
- ModusToolbox™講堂 | 第一課ModusToolbox™簡介和安裝
- ModusToolbox™講堂 | 第二課 中國大陸用戶使用須知
評論