I figured out how to fix it, and used platformIO to flash a working blinky to the Nrf54l15
in the file Seeed Studio\boards\seeed-xiao-nrf54l15.json
change
{
"build": {
"cpu": "cortex-m33",
"f_cpu": "128000000L",
"mcu": "nRF54L15",
"zephyr": {
"variant": "xiao_nrf54l15/nrf54l15/cpuapp"
}
to
{
"build": {
"cpu": "cortex-m33",
"f_cpu": "128000000L",
"mcu": "nRF54L15",
"variant": "SEEED_XIAO_NRF54L15",
"zephyr": {
"variant": "xiao_nrf54l15/nrf54l15/cpuapp"
}
'''
Then you can build blinky for the nrf54l15.
oh, here's a updated platformio.ini that supports unbricking...
[env:seeed-xiao-nrf54l15]
platform = GitHub - Seeed-Studio/platform-seeedboards: Seeed Boards: development platform for PlatformIO
framework = zephyr
board = seeed-xiao-nrf54l15
monitor_speed = 115200
; If you can’t upload the firmware to xiao-nrf54l15, please try to uncomment the following configuration.
;upload_protocol = custom
;upload_command = python “${platformio.platforms_dir}/Seeed Studio/scripts/xiao_nrf54l15_recover_flash.py” --hex $SOURCE --mass-erase
and for good measure the main.c file i used.
/*
- Copyright (c) 2016 Intel Corporation
- SPDX-License-Identifier: Apache-2.0
*/
#include <zephyr/kernel.h>
#include <zephyr/device.h>
#include <zephyr/drivers/gpio.h>
#include <nrfx_power.h>
/* 1000 msec = 1 sec */
#define SLEEP_TIME_MS 1000
/* The devicetree node identifier for the “led0” alias. */
#define LED0_NODE DT_ALIAS(led0)
/*
- 获取 LED 的 GPIO 规范
*/
static const struct gpio_dt_spec led = GPIO_DT_SPEC_GET(LED0_NODE, gpios);
int main(void)
{
int ret;
bool led_is_on = true;
nrfx_power_constlat_mode_request();
if (!gpio_is_ready_dt(&led)) {
return -1;
}
ret = gpio_pin_configure_dt(&led, GPIO_OUTPUT_ACTIVE);
if (ret < 0) {
return ret;
}
while (1) {
ret = gpio_pin_set_dt(&led, (int)led_is_on);
if (ret < 0) {
return ret;
}
led_is_on = !led_is_on;
k_msleep(SLEEP_TIME_MS);
}
return 0;
}
prj.conf from zephr subfolder of zephyr blinky example:
CONFIG_GPIO=y
CONFIG_SERIAL=n