亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Manufacturing Technology >> 制造工艺

Portenta H7 双核调试

组件和用品

Arduino Portenta H7
× 1
Arduino Portenta H7 分线板
× 1
Segger J-Link 调试探针
× 1
Segger Cortex M 适配器
× 1

应用和在线服务

Arduino IDE
Microsoft Visual Studio 2017
Visual Micro

关于这个项目

Arduino Portenta H7 拥有多种功能,能够在两个独立的内核上运行您的代码,这两个内核也可以相互通信!

我们的项目不时都会遇到问题,所以在这里我们将展示如何使用 Segger JLink 同时调试在两个内核上运行的代码!

硬件设置

将 Portenta H7 安装在分线板上后,您需要连接 MIPS 20 针转换器以分线调试引脚。

然后,您可以将转换器连接到 Segger J-Link,如下图所示。

如果您有正确的间距连接器 (0.05"),您还可以连接自己的连接器,如第二张图所示:

软件设置

我们假设您已经在您的机器上安装了 Arduino IDE(如果没有在这里下载)。

然后安装 Visual Studio (2017/2019/2022) 和 Visual Micro Extension,此处提供完整说明。

您还需要为 Arduino Mbed OS Portenta 开发板安装开发板包 来自 Visual Micro Explorer(或来自 Arduino IDE 中的 Boards Manager)。

您将需要使用 Zadig.exe 工具替换 Segger J-Link 接口 0 上的 USB 驱动程序(请参阅底部的视频了解演练)。

让我们编码!

现在我们需要设置一个单独的项目,为我们的 Portenta Board 的每个核心设置一个。附加的代码是一个简单的 Blink 示例,其中每个内核闪烁不同颜色的 LED。为了调试,在单独的 Visual Studio 实例中设置每个内核。

不要忘记确保在 M7 Core 项目中调用 bootM4() 函数以确保两个内核都在运行。

调试设置:M7 核心

打开您的 M7 Core Sketch 并选择 Debug> Hardware,以及 Segger J-Link Debugger (NOT “NoOpenOCD 版本)

此时构建您的 M7 Sketch 并将其上传到 M7 内核。

软件设置:M4 核心

打开您的 Sketch 并选择 Debug> Hardware,以及 Segger J-Link Debugger (NoOpenOCD)

此时构建您的 M4 Sketch 并将其上传到 M4 核心。

启动调试器

首先使用“调试> 附加到进程”开始使用 M7 核心草图进行调试。

然后使用“调试> 附加到进程”开始使用 M4 核心草图进行调试。

您现在应该能够向任一草图添加断点,并观察调试器在其上停止......每个内核都能够独立地停止/步进/继续!!

演练视频

在 YouTube 上查看下面有关此过程的演练....

文档+接线图

Portenta 分线板

赛格JLink

代码

  • H7 M4 闪烁代码
  • H7 M5 闪烁代码
H7 M4 闪烁代码Arduino
在 Portenta M4 内核上演示闪烁的代码
// 在 Portenta M4 内核上演示闪烁的代码// 当您按下复位键或为 boardvoid setup() { // 将数字引脚 13 初始化为输出。 pinMode(LED_BLUE, OUTPUT);}// 循环函数一遍遍地运行forevervoid loop() { digitalWrite(LED_BLUE, HIGH); // 打开 LED (HIGH 是电压电平) delay(1000); // 等待第二个 digitalWrite(LED_BLUE, LOW); //通过使电压低延迟(1000)关闭LED; // 等待一秒钟}
H7 M5 闪烁代码Arduino
在 Portenta M7 内核上演示闪烁的代码
// 在 Portenta M7 内核上演示闪烁的代码// 当您按下 reset 或给 boardvoid setup() { bootM4(); 设置函数运行一次// 将数字引脚 13 初始化为输出。 pinMode(LED_RED, OUTPUT);}// 循环函数一次又一次地运行永远void loop() { digitalWrite(LED_RED, HIGH); // 打开 LED (HIGH 是电压电平) delay(1000); // 等待第二个 digitalWrite(LED_RED, LOW); //通过使电压低延迟(1000)关闭LED; // 等待一秒钟}

示意图

如何将分线板上的 SWD 引脚连接到 Segger J-Link

制造工艺

  1. Arduino 板面向工业物联网
  2. Arduino Spybot
  3. FlickMote
  4. 自制电视 B-Gone
  5. 主时钟
  6. 找到我
  7. Arduino Power
  8. Tech-TicTacToe
  9. Arduino Quadruped
  10. Arduino Joystick
  11. 数控机床
  12. Earth_Analyzer