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
浙公网安备 33010602011771号