APP下载

Arduino多核程式设计:简单例子

消息来源:baojiabao.com 作者: 发布时间:2024-05-15

报价宝综合消息Arduino多核程式设计:简单例子

不管你是Arduino领域的新手还是经验丰富的开发人员,很可能你还只使用过单核在进行程式设计。 这没有什么好笑的---- 事实上,直到几天前我才使用Arduino IDE进行了第一次多核程式设计。 我和所有其他Arduino粉丝都非常喜欢IDE的易用性以及MicroController 开发所需的很少的环境配置。 同样的IDE,只需要很少的环境配置,就可以用于多核开发了。

下面来看看怎样编写使用六个并行MCU核心的程式吧,但在此之前首先让我们来了解为什么多核优于一个核心。

为什么要使用多核?

如果你的专案是关于读取感测器的值或让LED亮起来这种简单而无需任何复杂的计算的工作,那么你的电路板的MCU有1个或100个核心都是一样的。 这种简单地工作无论用1核还是100核最后得出的效果都是很相似的 - 至少从人类可以感知到的角度来看。 但是,通过多个核心,你可以开发具有复杂算法和计算的更先进的解决方案,例如快速傅立叶变换,手势识别,边缘计算,预测性维护,甚至是简单的实时3D渲染。 下面,我们将介绍如何利用索尼的物理网开发套件"Spresense"来在Arduino IDE里进行多核程式设计。 该板不仅具有六个ARM核心,还有高达156 MHz的频率。 而且如果需要的话,这个板子可以使用电池供电。

第一步: 在Arduino IDE里安装Spresense

Spresense Arduino软件包1.3.0版以上支援使用Arduino IDE进行多核程式设计。 如果你还没有安装它,最简单的方法是按照Spresense开发人员网站上的步骤操作。

连结:https://developer.sony.com/develop/spresense/developer-tools/get-started-using-arduino-ide/set-up-the-arduino-ide#_installation_through_arduino_ide_board_manager

第二步:开启示例程式码

我们使用的例子将用一个主核和四个子核,在Arduino IDE的档案选单中,开启示例程式码:

File → Examples → MultiCore MP → Boot → Main

这个 main.ino 程式码(Sketch)中 包含了多核MP库,在FOR循环中呼叫MP.begin(subid)函式来启动每个子核:

第三步:编译并上传主核心程式码

为了上传Spresense板上面正确核心的程式码(Sketch),从Arduino IDE 工具选单选择:

Tools → Core → MainCore

接下来,按下上传按钮上传编译主核程式码:

第四步:快速检查

如果上传成功了的话,主核现在应该已经被编好程了。你可以开启串列埠检测器看看输出,如下图,主核工作良好,其他的核心有一个错误。这当然,因为我们还没有上传他们的程式码,这就是我们接下来要做的。

第五步:子核心程式设计

在IDE中,开启File → Examples → MultiCore MP → Boot → Sub1

在setup()函式里, MP.begin()函式通知主核各个子核已经启动好了. 在loop() 函式里, MPlog()每一次迭代输出 一次“loop” 并且让第一个LED灯闪一下。

第六步:子核程式编译上传

从Arduino IDE 的工具选单中选择SubCore 1:

Tools → Core → SubCore 1.

按下上传按钮编译上传子核程式到板子上

然后,对剩下的三个子核重复5和6步。

第七步:最终结果

如果子核程式上传的对的话,LED灯会闪烁,并且串列埠监视器会输出所有核心的记录:

如果你想把所有核心程式码放在一个Sketch里,可以参照 MessageHello这个示例程式码,在Spresense的官方网站上,更多的例子也可以在Spresense开发者官方网站上找到。

2019-08-04 06:48:00

相关文章