arduino 上传项目出错_Arduino多核编程:简单例子

91d4dccb0ded1aff6c8c21c03f331fd7.png

不管你是Arduino领域的新手还是经验丰富的开发人员,很可能你还只使用过单核在进行编程。 这没有什么好笑的---- 事实上,直到几天前我才使用Arduino IDE进行了第一次多核编程。 我和所有其他Arduino粉丝都非常喜欢IDE的易用性以及MicroController 开发所需的很少的环境配置。 同样的IDE,只需要很少的环境配置,就可以用于多核开发了。
下面来看看怎样编写使用六个并行MCU内核的程序吧,但在此之前首先让我们来了解为什么多核优于一个内核。

59504034dd73b4753d3e7c7c2933c9ef.png

为什么要使用多核?

如果你的项目是关于读取传感器的值或让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

abec625d3ab47ca7c0caaa9b2b14f95c.png

0b135d7030491be7769ddcb2c101cf8e.png


这个 main.ino 代码(Sketch)中 包含了多核MP库,在FOR循环中调用MP.begin(subid)函数来启动每个子核:

92ae6f3299c339888e29d6ddc597ee25.png

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

为了上传Spresense板上面正确核心的代码(Sketch),从Arduino IDE 工具菜单选择:Tools → Core → MainCore

eb9549f9d8aab5707ffef73e563a2892.png


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

e612cf4a68e40562ac96f3784e79070b.png

第四步:快速检查

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

f46fc1d2f43a1c6242c1d79b74e261df.png

第五步:子核心编程

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

abec625d3ab47ca7c0caaa9b2b14f95c.png

5f9f1516c10a603c1b17f70ff6bd8205.png


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

145d6b30f2c387aa4fdcc7c1ba31aefd.png

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

从Arduino IDE 的工具菜单中选择SubCore 1:Tools → Core → SubCore 1.

ab26a7cd3a854e55c0c3aa4033425731.png


按下上传按钮编译上传子核程序到板子上
然后,对剩下的三个子核重复5和6步。

第七步:最终结果

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

de2e733ddeedbe0dfb3bec3d3c601c6e.png


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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/538901.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Hadoop-RPC应用demo

Hadoop里的rpc框架可以单独拿出来使用。jar包全在hadoop-common工程里。 导入hadoop-common工程里(hadoop-2.7.3为例): hadoop-common-2.7.3.jar \hadoop-2.7.3\share\hadoop\common\lib下的全部jar包 实例 rpc.client 客户端 rpc.pr…

宝塔面板服务器ip地址修改_「网站」快速搭建服务器环境及网站

目录:「NAS」我的搭建NAS全过程在文章开头我想说明的是,此文章中所使用的工具为 BT 面板即宝塔面板,适合小白使用但是对于想要提升个人能力来说, BT 面板并不是一个好选择,而作为新手来说,可以使用该面板进…

杨辉三角python_Python面试150题汇总,都是常问的面试题!

周末,Python面试题每日一题暂停更新,下面把最近整理的1-50篇Python面试文整理一下,平时文章都放在比较末尾,阅读量都不高,相信很多人都没看过,如果对于Python感兴趣的,建议可以认真阅读一下&…

java.lang.RuntimeException: Error receiving broadcast Intent { act=android.net.wifi.SCAN_RESULTS flg

E/AndroidRuntime: FATAL EXCEPTION: main Process: com.nokia.wlanapp, PID: 18526java.lang.RuntimeException: Error receiving broadcast Intent { actandroid.net.wifi.SCAN_RESULTS flg0x4000010 (has extras【外部】) } in com.nokia.wlanapp.Receive…

php处理上传文件的步骤,php文件上传步骤

我们在开发网站的时候,经常会遇到需要制作文件上传功能,下面我们就为大家介绍一下php制作文件上传功能的详细步骤。推荐教程:PHP视频教程第一步:创建一个文件上传表单允许用户从表单上传文件是非常有用的。请看下面这个供上传文件…

matlab求傅里叶级数展开式_傅里叶级数:从向量的角度看函数

帮助你理解线性代数与机器学习紧密结合的核心内容下文节选自北大出版社《机器学习线性代数基础》, [遇见]已获授权许可. 这本书不同于传统教材, 从新的角度来介绍线性代数的核心知识, 讲解也很棒, 又刚好参加参加了当当每满100-50的活动, 感兴趣的朋友可以关注下. 傅里叶级数&a…

c++实现超声回波包络检测_超声波物位计的选用

超声波物位计超声波在气体、液体和固体介质中以一定速度传播时因被吸收而衰减,但衰减程度不同,在气体中衰减最大,而在固体中衰减最小;当超声波穿越两种不同介质构成的分界面时会产生反射和折射,且当这两种介质的声阻抗…

Android应用开发:CardView的使用及兼容

原文:http://blog.csdn.net/airk000/article/details/39520977 点击阅读原文 --------------------------------------------------------------- 引言 在Google I/O 2014上,Google公布了Android L Preview版本,此版本的UI有了非常大的改变…

云海技术u盘怎么恢复成普通盘_BITLOCKER加密中断数据无法读取恢复一例

同行求助此问题,密码客户是知道的,输入密码后提示如图:如果点击RESUME则提示如下:无视提示关闭提示框后再次提示分区需要格式化:PC3000 DE中可以添加虚拟驱动器解析BITLOCKER加密的分区,但该例添加虚拟驱动…

git 未能顺利结束(退出码1)

按照这个博客上安装完小乌龟git后:https://blog.csdn.net/jdsjlzx/article/details/51098588win10下安装完乌龟git后无法上传文件进行文件上传时出现错误如下:git 未能顺利结束(退出码1)(922ms2018/4/17 22&#xff1a…

交际过程的两个基本环节_男女相处,若不介意这些“小动作”,基本可以确定“关系暧昧”...

当你对我说再见的时候,我看到你的笑容里有祝福,眼神里却有遗憾……——南明夫人爱情中最美好幸福的事,莫过于你深爱的人,恰好也钟情于你。这种两情相悦的爱情总是如此难得,让人心生羡慕。这份甜蜜与美好,让…

Android之NetworkOnMainThreadException异常

原文链接:http://blog.csdn.net/mad1989/article/details/25964495 点击阅读原文 ------------------------------------------------------------------ 看名字就应该知道,是网络请求在MainThread中产生的异常 先来看一下官网的解释: Cl…

中国信通院金融科技负责人韩涵:大数据是生产资料的变革,区块链是生产关系的变革...

在近日召开的“2018中国金融科技产业峰会”上,中国信息通信研究院主任工程师、金融科技负责人韩涵正式发布了《中国金融科技前沿技术发展趋势及应用场景研究报告》,详细讲解了A(人工智能)B(区块链)C&#x…

java简单纸牌游戏_活动回顾 | 畅玩法语纸牌游戏

11月17日下午,20级小伙伴们迎来了第二次法语角活动!这次外教Anne-Flore Vrac 老师为同学们安排了丰富有趣的法语纸牌游戏,快来一起回顾活动的精彩瞬间吧!集体游戏一:从1到30老师首先带领同学们进行了“从1到30”的小游…

人脸识别门禁_小区人脸识别门禁或取代传统门禁刷卡方式

可以说,社区是一个人口聚集的小型社会。首先社区的人流量很大,进出是十分频繁。其次,社区的大门以及各处进出口是业主与访客、外来人员等进进出出最关键的通道。因此,每个社区都会有一套成型的门禁系统,常见的是使用门…

元类编程--property动态属性

from datetime import date, datetime class User:def __init__(self, name, birthday):self.name nameself.birthday birthdayself._age 0# def get_age(self):# return datetime.now().year - self.birthday.yearproperty #动态属性def age(self): #属性描述符&#x…

vscode运行python文件_vscode怎么运行python文件

1、首先需要确保安装了VScode的Python插件,打开Python脚本,可以直接拖入,点击文件,点击首选项里的用户设置,这时候会用户设置配置文件。2、然后在左边文件CtrlF搜索Python关键字,找到pythonPath所在行3、然…

逻辑回归算法_算法逻辑回归

logistic回归又称logistic回归分析,是一种广义的线性回归分析模型,常用于数据挖掘,疾病自动诊断,经济预测等领域。例如,探讨引发疾病的危险因素,并根据危险因素预测疾病发生的概率等。以胃癌病情分析为例&a…

使用docker搭建wordpress网站

概述 使用docker的好处就是尽量减少了环境部署,可靠性强,容易维护,我使用docker搭建wordpress的主要目标有下面几个首先我重新生成数据库容器可以保证数据库数据不丢失,重新生成wordpress容器保证wordpress网站数据不丢失&#xf…