Hello, I am using the nRF54L15 DK board, and trying to connect to the FLPR RISC-V coprocessor in the SoC.
I have been able to do so, and can have both processors running concurrently. However, the issue is that it seems to run both at the same time uses a far greater quantity of power than just the Arm Cortex-M33 processor. (~100μA alone, and ~500μA with both coprocessors running).
I want to reduce the power as much as possible, and so I figured that by putting the Arm Cortex Application core in deep sleep mode while running the FLPR RISC-V core would be able to minimize power consumption, as I could wake up the Arm core whenever it may be needed.
The issue is that, whenever I try to shut down the Arm processor, the RISC-V processor also shuts down. The entire application halts. My question is whether or not there is a way to keep the application core in deep sleep mode while the FLPR core runs in its more lightweight fashion.
This is the main code I am using, it simply toggles the LEDs on the development kit, but should stop only the main application core after 5 iterations:
main.c (Application Core):
#include <zephyr/kernel.h>
#include <zephyr/drivers/gpio.h>
#include <zephyr/sys/poweroff.h>
static const struct gpio_dt_spec led = GPIO_DT_SPEC_GET(DT_ALIAS(led0), gpios);
int main(void)
{
int count = 0;
gpio_pin_configure_dt(&led, GPIO_OUTPUT_ACTIVE);
while(1){
gpio_pin_toggle_dt(&led);
k_msleep(2000);
if(count == 5){
sys_poweroff();
}
count++;
}
return 0;
}
prj.conf (Application Core):
CONFIG_POWEROFF=y CONFIG_GPIO=y
main.c (FLPR Core):
#include <zephyr/kernel.h>
#include <zephyr/drivers/gpio.h>
static const struct gpio_dt_spec led = GPIO_DT_SPEC_GET(DT_ALIAS(led1), gpios);
#include <zephyr/logging/log.h>
LOG_MODULE_REGISTER(remote, LOG_LEVEL_INF);
int main(void)
{
gpio_pin_configure_dt(&led, GPIO_OUTPUT_ACTIVE);
k_msleep(1000);
while(1){
gpio_pin_toggle_dt(&led);
k_msleep(2000);
}
return 0;
}
prj.conf (FLPR Core):
CONFIG_GPIO=y
The full project is attached. Currently right now, the LEDs 0 and 1 do toggle 5 times, but then the entire project stops. I currently use the nordic-flpr snippet. I have tried using the nordic-flpr-xip snippet as well, but to no avail. I am using ncs v3.0.2.