谷谷小师妹 发表于 2023-10-19 14:16:12

ModusToolbox™讲堂 | 第三课 新建例程,点亮世界

ModusToolbox™讲堂 | 第三课 新建例程,点亮世界

赖春雷英飞凌技术支持中心高级工程师

通过前两课的学习,相信大家已经对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
意犹未尽?

页: [1]
查看完整版本: ModusToolbox™讲堂 | 第三课 新建例程,点亮世界