nRF5340 多核应用 (NCS v2.3.99)

你可以用这个例程来编译一个固件,让它运行在网络核(network core)。

准备硬件:

这个例程支持如下的开发板

硬件平台 PCA 开发板名称 目标名称
nRF5340DK PCA10095 nrf5340dk_nrf5340 nrf5340dk_nrf5340_cpuapp

 

 

简述

这个例程演示了如何编译一个多核的应用。 其中用到了CMake中的一个宏(看起来更像是一个函数)add_child_image。

对于多固件编译的基本概念,你可以去参考这篇文章《多固件编译》。当编译任意的多固件应用时,编译系统会为应用核固件

增加一个子固件。这个例程展示了如何通知编译系统去编译指定的网络核固件(路径在 /zephyr/aci 文件夹下)。这个例程增加了

如下几个文件:

aci/CMakeLists.txt  这个文件用于增加子固件核包含add_child_image宏

zephyr/module.yml 这个文件包含了一些信息,指定了编译网络核用到的CMakeLists.txt的位置

  .yml文件由west tool解析,并且指定对应的工具运行在对应的文件夹中,上面的aci文件夹就是由这边的.yml文件指定的。module.yml文件的用法可以到这里查看。

Kconfig 这个文件定义了一个配置宏,指定只有在使用 SOC_NRF5340_CPUAPP时,才会去编译网络核。其它依赖项可以通过查看代码顾名思义。

  Kconfig是用来定义某些配置项的具体内容,而.conf用于实例化这个配置。有点像面向对象编程中的类和实例。

应用核、网络核共用一个main.c文件,但是他们会打印不同的日志信息,用来区分他们运行在哪个核。应用核与网络核打印日志所用的

串口不是同一个,可以以此来区分这个应用是否成功运行。

 

编译和运行

这个例程的路径在 vX.X.X/nrf/samples/nrf5340/multicore

用VS code来编译,参考这篇文章:https://nrfconnect.github.io/vscode-nrf-connect/get_started/build_app_ncs.html

其它编译烧录的方法,参考这些文章:https://developer.nordicsemi.com/nRF_Connect_SDK/doc/latest/nrf/getting_started/programming.html#gs-programming

调试和测试,参考这篇文章:https://developer.nordicsemi.com/nRF_Connect_SDK/doc/latest/nrf/getting_started/testing.html#gs-testing

 

测试

当完成编译、烧录之后,通过如下步骤来测试:

1. 用串口助手工具(任意的都可以)连接开发板

2. 复位开发板

3. 有两个COM,分别分配给两个核使用,所以你要打开两个串口助手工具

4. 两个串口助手分别打印如下信息

应用核的打印信息

*** Booting Zephyr OS build v2.7.99-ncs1-2193-gd359a86abf14  ***
Hello world from nrf5340dk_nrf5340_cpuapp

网络核的打印信息

*** Booting Zephyr OS build v2.7.99-ncs1-2193-gd359a86abf14  ***
Hello world from nrf5340dk_nrf5340_cpunet

 https://developer.nordicsemi.com/nRF_Connect_SDK/doc/latest/nrf/samples/nrf5340/multicore/README.html

posted @ 2023-03-23 17:16  Carlgu  阅读(380)  评论(0)    收藏  举报