Hello guys,
I'm trying to run uart example from https://github.com/andenore/NordicSnippets/blob/master/examples/uart/main.c extended by interrupts call after transmission end on nRF52840 Dongle. I'm not able to successfully make CPU to call an interrupt handler. Bypassing "NVIC_SetVector", causes handler to not be called at all. And when I call "NVIC_SetVector" on configuration step and point to my interrupt handler, cpu restart after interrupt is enabled. I read that the interrupts are managed by the MBR that my board has, is this require some special configuration? I'm using an nRF Connect Programmer to upload hex file.
I tried with and without softdevice, with handler name "UART0_IRQHandler" and "UARTE0_UART0_IRQHandler", with different interrupt priorities and different interrupts enabled. It's always same effect, restart or no reaction at all. As far I can tell without debugger, interrupt routine is never called. I will appreciate the help very much. I just started with nRF52 and I'm already pulling my hair out ;)
I'm using Visual Studio Code 1.68.1, with nRF Connect for VS Code Extension Pack v2022.5.1, project use nRF SDK in version 1.9.1.
uart.c
#include "uart.h"
#define RING_BUF_SIZE 4096
uint8_t txRingBufferData[RING_BUF_SIZE];
struct ring_buf txRingBuffer;
static uint8_t txBuffer[30];
void UART0_IRQHandler(void){
if (NRF_UARTE0->EVENTS_ENDTX) {
if (!ring_buf_is_empty(&txRingBuffer)) {
uint32_t dataSize = ring_buf_get(&txRingBuffer, txBuffer, sizeof(txBuffer));
NRF_UARTE0->TXD.PTR = (uint32_t)&txBuffer;
NRF_UARTE0->TXD.MAXCNT = dataSize;
NRF_UARTE0->TASKS_STARTTX = 1;
}
NRF_UARTE0->EVENTS_ENDTX = 0;
}
}
void uart_init(uint32_t txPin, uint32_t rxPin, uint32_t baudrate) {
// Disable UART
NRF_UARTE0->ENABLE = (UARTE_ENABLE_ENABLE_Disabled << UARTE_ENABLE_ENABLE_Pos);
// Configure the UARTE with no flow control, one parity bit and 115200 baud rate
NRF_UARTE0->CONFIG = (UART_CONFIG_HWFC_Disabled << UART_CONFIG_HWFC_Pos) | (UARTE_CONFIG_PARITY_Excluded << UART_CONFIG_PARITY_Pos);
NRF_UARTE0->BAUDRATE = baudrate;
// Select TX and RX pins
NRF_UARTE0->PSEL.TXD = (txPin << UARTE_PSEL_TXD_PIN_Pos) & UARTE_PSEL_TXD_PIN_Msk;
NRF_UARTE0->PSEL.RXD = (rxPin << UARTE_PSEL_RXD_PIN_Pos) & UARTE_PSEL_RXD_PIN_Msk;
ring_buf_init(&txRingBuffer, sizeof(txRingBufferData), txRingBufferData);
// Enable the UART (starts using the TX/RX pins)
NRF_UARTE0->ENABLE = UARTE_ENABLE_ENABLE_Enabled << UARTE_ENABLE_ENABLE_Pos;
// Enable UART TX End interrupt only
NRF_UARTE0->INTENSET = (UARTE_INTENSET_ENDTX_Set << UARTE_INTENSET_ENDTX_Pos);
NVIC_SetVector(UARTE0_UART0_IRQn, (uint32_t)UART0_IRQHandler);
NVIC_SetPriority(UARTE0_UART0_IRQn, 6);
NVIC_ClearPendingIRQ(UARTE0_UART0_IRQn);
NVIC_EnableIRQ(UARTE0_UART0_IRQn);
}
void uart_send(const uint8_t *data, uint32_t size) {
int rb_len = ring_buf_put(&txRingBuffer, data, size);
// // if (rb_len < size) {
// // LOG_ERR("Drop %u bytes", size - rb_len);
// // }
uint32_t dataSize = ring_buf_get(&txRingBuffer, txBuffer, sizeof(txBuffer));
NRF_UARTE0->TXD.PTR = (uint32_t)&txBuffer;
NRF_UARTE0->TXD.MAXCNT = dataSize;
NRF_UARTE0->EVENTS_ENDTX = 0;
NRF_UARTE0->TASKS_STARTTX = 1;
}
main.c
#include "nrf.h"
#include "uart.h"
#define PIN_LED_STATUS (6UL)
#define PIN_LED_GREEN (9UL)
#define PIN_LED_RED (8UL)
#define PIN_LED_BLUE (12UL)
#define PIN_TXD (29)
#define PIN_RXD (31)
void main(void) {
NRF_P0->PIN_CNF[PIN_LED_STATUS] = (GPIO_PIN_CNF_DIR_Output << GPIO_PIN_CNF_DIR_Pos) |
(GPIO_PIN_CNF_DRIVE_S0S1 << GPIO_PIN_CNF_DRIVE_Pos) |
(GPIO_PIN_CNF_INPUT_Connect << GPIO_PIN_CNF_INPUT_Pos) |
(GPIO_PIN_CNF_PULL_Disabled << GPIO_PIN_CNF_PULL_Pos) |
(GPIO_PIN_CNF_SENSE_Disabled << GPIO_PIN_CNF_SENSE_Pos);
NRF_P0->PIN_CNF[PIN_LED_RED] = (GPIO_PIN_CNF_DIR_Output << GPIO_PIN_CNF_DIR_Pos) |
(GPIO_PIN_CNF_DRIVE_S0S1 << GPIO_PIN_CNF_DRIVE_Pos) |
(GPIO_PIN_CNF_INPUT_Connect << GPIO_PIN_CNF_INPUT_Pos) |
(GPIO_PIN_CNF_PULL_Disabled << GPIO_PIN_CNF_PULL_Pos) |
(GPIO_PIN_CNF_SENSE_Disabled << GPIO_PIN_CNF_SENSE_Pos);
NRF_P0->PIN_CNF[PIN_LED_BLUE] = (GPIO_PIN_CNF_DIR_Output << GPIO_PIN_CNF_DIR_Pos) |
(GPIO_PIN_CNF_DRIVE_S0S1 << GPIO_PIN_CNF_DRIVE_Pos) |
(GPIO_PIN_CNF_INPUT_Connect << GPIO_PIN_CNF_INPUT_Pos) |
(GPIO_PIN_CNF_PULL_Disabled << GPIO_PIN_CNF_PULL_Pos) |
(GPIO_PIN_CNF_SENSE_Disabled << GPIO_PIN_CNF_SENSE_Pos);
NRF_P1->PIN_CNF[PIN_LED_GREEN] = (GPIO_PIN_CNF_DIR_Output << GPIO_PIN_CNF_DIR_Pos) |
(GPIO_PIN_CNF_DRIVE_S0S1 << GPIO_PIN_CNF_DRIVE_Pos) |
(GPIO_PIN_CNF_INPUT_Connect << GPIO_PIN_CNF_INPUT_Pos) |
(GPIO_PIN_CNF_PULL_Disabled << GPIO_PIN_CNF_PULL_Pos) |
(GPIO_PIN_CNF_SENSE_Disabled << GPIO_PIN_CNF_SENSE_Pos);
NRF_P0->OUTSET = (1UL << PIN_LED_STATUS);
NRF_P0->OUTSET = (1UL << PIN_LED_BLUE);
NRF_P0->OUTCLR = (1UL << PIN_LED_RED);
NRF_P1->OUTSET = (1UL << PIN_LED_GREEN);
// Enable HF clock
NRF_CLOCK->EVENTS_HFCLKSTARTED = 0;
NRF_CLOCK->TASKS_HFCLKSTART = 1;
while (NRF_CLOCK->EVENTS_HFCLKSTARTED == 0) {}
// Enable LF clock
NRF_CLOCK->LFCLKSRC = CLOCK_LFCLKSRC_SRC_Xtal;
NRF_CLOCK->EVENTS_LFCLKSTARTED = 0;
NRF_CLOCK->TASKS_LFCLKSTART = 1;
while (NRF_CLOCK->EVENTS_LFCLKSTARTED == 0) {}
NRF_P0->OUTSET = (1UL << PIN_LED_RED);
NRF_P0->OUTCLR = (1UL << PIN_LED_STATUS);
uart_init(PIN_TXD, PIN_RXD, UARTE_BAUDRATE_BAUDRATE_Baud115200);
while (1) {
uint8_t buf1[] = "Foo baz, some entry.\r\n";
uart_send(buf1, sizeof(buf1));
uint32_t volatile tmo = 5000000;
//while (tmo--);
// uint8_t buf2[] = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse aliquet placerat nunc vitae luctus.\r\n";
// uart_send(buf2, sizeof(buf2));
tmo = 10000000;
while (tmo--);
}
}
Build log:
> Executing task: nRF Connect: Build: radio_module/build (active) <
Building radio_module
west build --build-dir e:\nRF52\Projects\radio_module\build e:\nRF52\Projects\radio_module
[0/1] Re-running CMake...
Including boilerplate (Zephyr base (cached)): C:/Users/Marek/ncs/v1.9.1/zephyr/cmake/app/boilerplate.cmake
-- Application: E:/nRF52/Projects/radio_module
-- Zephyr version: 2.7.99 (C:/Users/Marek/ncs/v1.9.1/zephyr), build: v2.7.99-ncs1-1
-- Found west (found suitable version "0.12.0", minimum required is "0.7.1")
-- Board: nrf52840dongle_nrf52840
-- Cache files will be written to: C:/Users/Marek/ncs/v1.9.1/zephyr/.cache
-- Found dtc: C:/Users/Marek/ncs/v1.9.1/toolchain/opt/bin/dtc.exe (found suitable version "1.4.7", minimum required is "1.4.6")
-- Found toolchain: gnuarmemb (c:/Users/Marek/ncs/v1.9.1/toolchain/opt)
-- Found BOARD.dts: C:/Users/Marek/ncs/v1.9.1/zephyr/boards/arm/nrf52840dongle_nrf52840/nrf52840dongle_nrf52840.dts
-- Generated zephyr.dts: E:/nRF52/Projects/radio_module/build/zephyr/zephyr.dts
-- Generated devicetree_unfixed.h: E:/nRF52/Projects/radio_module/build/zephyr/include/generated/devicetree_unfixed.h
-- Generated device_extern.h: E:/nRF52/Projects/radio_module/build/zephyr/include/generated/device_extern.h
-- Including generated dts.cmake file: E:/nRF52/Projects/radio_module/build/zephyr/dts.cmake
Parsing C:/Users/Marek/ncs/v1.9.1/zephyr/Kconfig
Loaded configuration 'E:/nRF52/Projects/radio_module/build/zephyr/.config'
Configuration saved to 'E:/nRF52/Projects/radio_module/build/zephyr/.config'
Kconfig header saved to 'E:/nRF52/Projects/radio_module/build/zephyr/include/generated/autoconf.h'
-- Configuring done
-- Generating done
-- Build files have been written to: E:/nRF52/Projects/radio_module/build
[1/154] Generating misc/generated/syscalls.json, misc/generated/struct_tags.json
[2/154] Building C object zephyr/CMakeFiles/offsets.dir/arch/arm/core/offsets/offsets.c.obj
[3/154] Generating include/generated/offsets.h
[4/154] Building C object zephyr/CMakeFiles/zephyr.dir/lib/os/dec.c.obj
[5/154] Building C object zephyr/CMakeFiles/zephyr.dir/lib/os/crc7_sw.c.obj
[6/154] Building C object zephyr/CMakeFiles/zephyr.dir/lib/os/crc32c_sw.c.obj
[7/154] Building C object zephyr/CMakeFiles/zephyr.dir/lib/os/cbprintf.c.obj
[8/154] Building C object zephyr/CMakeFiles/zephyr.dir/lib/os/hex.c.obj
[9/154] Building C object zephyr/CMakeFiles/zephyr.dir/lib/os/crc8_sw.c.obj
[10/154] Building C object zephyr/CMakeFiles/zephyr.dir/lib/os/crc16_sw.c.obj
[11/154] Building C object zephyr/CMakeFiles/zephyr.dir/lib/os/crc32_sw.c.obj
[12/154] Building C object zephyr/soc/arm/common/cortex_m/CMakeFiles/soc__arm__common__cortex_m.dir/arm_mpu_regions.c.obj
[13/154] Building C object CMakeFiles/app.dir/src/uart.c.obj
../src/uart.c: In function 'uart_send':
e:\nRF52\Projects\radio_module\src\uart.c:49:9: warning: unused variable 'rb_len' [-Wunused-variable]
49 | int rb_len = ring_buf_put(&txRingBuffer, data, size);
| ^~~~~~
[14/154] Building C object CMakeFiles/app.dir/src/main.c.obj
[15/154] Building C object zephyr/CMakeFiles/zephyr.dir/lib/os/cbprintf_packaged.c.obj
[16/154] Building C object modules/nrf/drivers/hw_cc310/CMakeFiles/..__nrf__drivers__hw_cc310.dir/hw_cc310.c.obj
[17/154] Building C object zephyr/drivers/timer/CMakeFiles/drivers__timer.dir/sys_clock_init.c.obj
[18/154] Building C object modules/nrf/lib/fatal_error/CMakeFiles/..__nrf__lib__fatal_error.dir/fatal_error.c.obj
[19/154] Building C object zephyr/CMakeFiles/zephyr.dir/lib/os/fdtable.c.obj
[20/154] Building C object zephyr/boards/boards/arm/nrf52840dongle_nrf52840/CMakeFiles/boards__arm__nrf52840dongle_nrf52840.dir/board.c.obj
[21/154] Building C object zephyr/soc/arm/nordic_nrf/nrf52/CMakeFiles/soc__arm__nordic_nrf__nrf52.dir/soc.c.obj
[22/154] Linking C static library zephyr\soc\arm\common\cortex_m\libsoc__arm__common__cortex_m.a
[23/154] Building C object zephyr/soc/arm/nordic_nrf/nrf52/CMakeFiles/soc__arm__nordic_nrf__nrf52.dir/power.c.obj
[24/154] Building C object modules/hal_nordic/nrfx/CMakeFiles/modules__hal_nordic__nrfx.dir/C_/Users/Marek/ncs/v1.9.1/modules/hal/nordic/nrfx/mdk/system_nrf52840.c.obj
[25/154] Linking C static library app\libapp.a
[26/154] Building C object modules/hal_nordic/nrfx/CMakeFiles/modules__hal_nordic__nrfx.dir/nrfx_glue.c.obj
[27/154] Building C object modules/hal_nordic/nrfx/CMakeFiles/modules__hal_nordic__nrfx.dir/C_/Users/Marek/ncs/v1.9.1/modules/hal/nordic/nrfx/helpers/nrfx_flag32_allocator.c.obj
[28/154] Building C object zephyr/drivers/gpio/CMakeFiles/drivers__gpio.dir/gpio_nrfx.c.obj
[29/154] Linking C static library modules\nrf\drivers\hw_cc310\lib..__nrf__drivers__hw_cc310.a
[30/154] Linking C static library zephyr\boards\boards\arm\nrf52840dongle_nrf52840\libboards__arm__nrf52840dongle_nrf52840.a
[31/154] Linking C static library modules\nrf\lib\fatal_error\lib..__nrf__lib__fatal_error.a
[32/154] Building C object zephyr/drivers/timer/CMakeFiles/drivers__timer.dir/nrf_rtc_timer.c.obj
[33/154] Building C object zephyr/kernel/CMakeFiles/kernel.dir/errno.c.obj
[34/154] Linking C static library zephyr\soc\arm\nordic_nrf\nrf52\libsoc__arm__nordic_nrf__nrf52.a
[35/154] Building C object zephyr/drivers/clock_control/CMakeFiles/drivers__clock_control.dir/clock_control_nrf.c.obj
[36/154] Linking C static library zephyr\drivers\gpio\libdrivers__gpio.a
[37/154] Building C object zephyr/kernel/CMakeFiles/kernel.dir/device.c.obj
[38/154] Building C object zephyr/kernel/CMakeFiles/kernel.dir/version.c.obj
[39/154] Building C object modules/hal_nordic/nrfx/CMakeFiles/modules__hal_nordic__nrfx.dir/C_/Users/Marek/ncs/v1.9.1/modules/hal/nordic/nrfx/drivers/src/nrfx_clock.c.obj
[40/154] Building C object zephyr/kernel/CMakeFiles/kernel.dir/fatal.c.obj
[41/154] Building C object zephyr/kernel/CMakeFiles/kernel.dir/banner.c.obj
[42/154] Linking C static library zephyr\drivers\timer\libdrivers__timer.a
[43/154] Building C object zephyr/kernel/CMakeFiles/kernel.dir/main_weak.c.obj
[44/154] Building C object zephyr/kernel/CMakeFiles/kernel.dir/init.c.obj
[45/154] Linking C static library zephyr\drivers\clock_control\libdrivers__clock_control.a
[46/154] Building C object zephyr/kernel/CMakeFiles/kernel.dir/idle.c.obj
[47/154] Building C object zephyr/kernel/CMakeFiles/kernel.dir/kheap.c.obj
[48/154] Building C object zephyr/kernel/CMakeFiles/kernel.dir/sem.c.obj
[49/154] Building C object zephyr/kernel/CMakeFiles/kernel.dir/mem_slab.c.obj
[50/154] Building C object zephyr/kernel/CMakeFiles/kernel.dir/stack.c.obj
[51/154] Building C object zephyr/kernel/CMakeFiles/kernel.dir/mailbox.c.obj
[52/154] Building C object zephyr/kernel/CMakeFiles/kernel.dir/xip.c.obj
[53/154] Building C object zephyr/kernel/CMakeFiles/kernel.dir/system_work_q.c.obj
[54/154] Building C object zephyr/kernel/CMakeFiles/kernel.dir/thread.c.obj
[55/154] Building C object zephyr/kernel/CMakeFiles/kernel.dir/msg_q.c.obj
[56/154] Building C object modules/hal_nordic/nrfx/CMakeFiles/modules__hal_nordic__nrfx.dir/C_/Users/Marek/ncs/v1.9.1/modules/hal/nordic/nrfx/drivers/src/nrfx_gpiote.c.obj
[57/154] Building C object zephyr/kernel/CMakeFiles/kernel.dir/condvar.c.obj
[58/154] Building C object zephyr/kernel/CMakeFiles/kernel.dir/mutex.c.obj
[59/154] Building C object zephyr/kernel/CMakeFiles/kernel.dir/timer.c.obj
[60/154] Building C object zephyr/CMakeFiles/zephyr.dir/lib/os/notify.c.obj
[61/154] Building C object zephyr/CMakeFiles/zephyr.dir/lib/os/thread_entry.c.obj
[62/154] Building C object zephyr/kernel/CMakeFiles/kernel.dir/mempool.c.obj
[63/154] Building C object zephyr/kernel/CMakeFiles/kernel.dir/queue.c.obj
[64/154] Building C object zephyr/CMakeFiles/zephyr.dir/lib/os/multi_heap.c.obj
[65/154] Building C object zephyr/kernel/CMakeFiles/kernel.dir/pipes.c.obj
[66/154] Building C object zephyr/kernel/CMakeFiles/kernel.dir/timeout.c.obj
[67/154] Building C object zephyr/CMakeFiles/zephyr.dir/lib/os/printk.c.obj
[68/154] Linking C static library modules\hal_nordic\nrfx\libmodules__hal_nordic__nrfx.a
[69/154] Building ASM object zephyr/CMakeFiles/zephyr.dir/soc/arm/nordic_nrf/common/soc_nrf_common.S.obj
[70/154] Building C object zephyr/CMakeFiles/zephyr.dir/lib/os/timeutil.c.obj
[71/154] Building C object zephyr/CMakeFiles/zephyr.dir/misc/generated/configs.c.obj
[72/154] Building C object zephyr/CMakeFiles/zephyr.dir/lib/os/sem.c.obj
[73/154] Building C object zephyr/CMakeFiles/zephyr.dir/lib/os/rb.c.obj
[74/154] Building C object zephyr/kernel/CMakeFiles/kernel.dir/work.c.obj
[75/154] Building C object zephyr/CMakeFiles/zephyr.dir/lib/os/reboot.c.obj
[76/154] Building C object zephyr/CMakeFiles/zephyr.dir/soc/arm/nordic_nrf/validate_enabled_instances.c.obj
[77/154] Building C object zephyr/CMakeFiles/zephyr.dir/soc/arm/nordic_nrf/validate_base_addresses.c.obj
[78/154] Building C object zephyr/CMakeFiles/zephyr.dir/lib/os/cbprintf_complete.c.obj
[79/154] Building ASM object zephyr/arch/arch/arm/core/aarch32/CMakeFiles/arch__arm__core__aarch32.dir/cpu_idle.S.obj
[80/154] Building C object zephyr/CMakeFiles/zephyr.dir/lib/os/bitarray.c.obj
[81/154] Building C object zephyr/CMakeFiles/zephyr.dir/subsys/tracing/tracing_none.c.obj
[82/154] Generating linker_zephyr_pre1.cmd
[83/154] Building C object zephyr/CMakeFiles/zephyr.dir/subsys/pm/policy/residency.c.obj
[84/154] Building C object zephyr/CMakeFiles/zephyr.dir/lib/os/onoff.c.obj
[85/154] Generating linker_zephyr_pre0.cmd
[86/154] Building C object zephyr/kernel/CMakeFiles/kernel.dir/sched.c.obj
[87/154] Building ASM object zephyr/arch/arch/arm/core/aarch32/CMakeFiles/arch__arm__core__aarch32.dir/nmi_on_reset.S.obj
[88/154] Building C object zephyr/CMakeFiles/zephyr.dir/lib/os/heap-validate.c.obj
[89/154] Building C object zephyr/arch/common/CMakeFiles/isr_tables.dir/isr_tables.c.obj
[90/154] Building C object zephyr/CMakeFiles/zephyr.dir/subsys/pm/constraint.c.obj
[91/154] Building C object zephyr/CMakeFiles/zephyr.dir/C_/Users/Marek/ncs/v1.9.1/nrfxlib/crypto/nrf_cc310_platform/src/nrf_cc3xx_platform_abort_zephyr.c.obj
[92/154] Building C object zephyr/CMakeFiles/zephyr.dir/lib/os/ring_buffer.c.obj
[93/154] Building C object zephyr/CMakeFiles/zephyr.dir/C_/Users/Marek/ncs/v1.9.1/nrfxlib/crypto/nrf_cc310_platform/src/nrf_cc3xx_platform_mutex_zephyr.c.obj
[94/154] Building C object zephyr/arch/common/CMakeFiles/arch__common.dir/sw_isr_common.c.obj
[95/154] Building C object zephyr/CMakeFiles/zephyr.dir/lib/os/heap.c.obj
[96/154] Building ASM object zephyr/arch/arch/arm/core/aarch32/CMakeFiles/arch__arm__core__aarch32.dir/isr_wrapper.S.obj
[97/154] Building C object zephyr/CMakeFiles/zephyr.dir/subsys/pm/pm.c.obj
[98/154] Building ASM object zephyr/arch/arch/arm/core/aarch32/cortex_m/CMakeFiles/arch__arm__core__aarch32__cortex_m.dir/exc_exit.S.obj
[99/154] Building ASM object zephyr/arch/arch/arm/core/aarch32/CMakeFiles/arch__arm__core__aarch32.dir/swap_helper.S.obj
[100/154] Building C object zephyr/CMakeFiles/zephyr_pre0.dir/misc/empty_file.c.obj
[101/154] Building ASM object zephyr/arch/arch/arm/core/aarch32/cortex_m/CMakeFiles/arch__arm__core__aarch32__cortex_m.dir/fault_s.S.obj
[102/154] Linking C static library zephyr\arch\common\libisr_tables.a
[103/154] Building ASM object zephyr/arch/arch/arm/core/aarch32/cortex_m/CMakeFiles/arch__arm__core__aarch32__cortex_m.dir/vector_table.S.obj
[104/154] Linking C static library zephyr\kernel\libkernel.a
[105/154] Building ASM object zephyr/arch/arch/arm/core/aarch32/cortex_m/CMakeFiles/arch__arm__core__aarch32__cortex_m.dir/reset.S.obj
[106/154] Building C object zephyr/arch/arch/arm/core/aarch32/CMakeFiles/arch__arm__core__aarch32.dir/swap.c.obj
[107/154] Building C object zephyr/arch/arch/arm/core/aarch32/CMakeFiles/arch__arm__core__aarch32.dir/nmi.c.obj
[108/154] Building C object zephyr/arch/arch/arm/core/aarch32/CMakeFiles/arch__arm__core__aarch32.dir/prep_c.c.obj
[109/154] Building C object zephyr/arch/arch/arm/core/aarch32/CMakeFiles/arch__arm__core__aarch32.dir/irq_manage.c.obj
[110/154] Building C object zephyr/arch/arch/arm/core/aarch32/CMakeFiles/arch__arm__core__aarch32.dir/thread.c.obj
[111/154] Building C object zephyr/arch/arch/arm/core/aarch32/cortex_m/CMakeFiles/arch__arm__core__aarch32__cortex_m.dir/irq_init.c.obj
[112/154] Building C object zephyr/arch/arch/arm/core/aarch32/CMakeFiles/arch__arm__core__aarch32.dir/fatal.c.obj
[113/154] Building C object zephyr/lib/libc/minimal/CMakeFiles/lib__libc__minimal.dir/source/stdlib/atoi.c.obj
[114/154] Linking C static library zephyr\libzephyr.a
[115/154] Building C object zephyr/lib/libc/minimal/CMakeFiles/lib__libc__minimal.dir/source/stdlib/bsearch.c.obj
[116/154] Building C object zephyr/arch/arch/arm/core/aarch32/cortex_m/CMakeFiles/arch__arm__core__aarch32__cortex_m.dir/fpu.c.obj
[117/154] Building C object zephyr/lib/libc/minimal/CMakeFiles/lib__libc__minimal.dir/source/stdlib/strtoul.c.obj
[118/154] Linking C static library zephyr\arch\common\libarch__common.a
[119/154] Building C object zephyr/arch/arch/arm/core/aarch32/cortex_m/CMakeFiles/arch__arm__core__aarch32__cortex_m.dir/thread_abort.c.obj
[120/154] Building C object zephyr/arch/arch/arm/core/aarch32/cortex_m/CMakeFiles/arch__arm__core__aarch32__cortex_m.dir/scb.c.obj
[121/154] Building C object zephyr/lib/libc/minimal/CMakeFiles/lib__libc__minimal.dir/source/stdlib/strtol.c.obj
[122/154] Building C object zephyr/lib/libc/minimal/CMakeFiles/lib__libc__minimal.dir/source/stdlib/abort.c.obj
[123/154] Building C object zephyr/lib/libc/minimal/CMakeFiles/lib__libc__minimal.dir/source/string/strstr.c.obj
[124/154] Building C object zephyr/lib/libc/minimal/CMakeFiles/lib__libc__minimal.dir/source/string/strncasecmp.c.obj
[125/154] Building C object zephyr/arch/arch/arm/core/aarch32/mpu/CMakeFiles/arch__arm__core__aarch32__mpu.dir/arm_core_mpu.c.obj
[126/154] Linking C static library zephyr\arch\arch\arm\core\aarch32\libarch__arm__core__aarch32.a
[127/154] Building C object zephyr/lib/libc/minimal/CMakeFiles/lib__libc__minimal.dir/source/string/strspn.c.obj
[128/154] Building C object zephyr/lib/libc/minimal/CMakeFiles/lib__libc__minimal.dir/source/stdlib/malloc.c.obj
[129/154] Building C object zephyr/lib/libc/minimal/CMakeFiles/lib__libc__minimal.dir/source/stdlib/qsort.c.obj
[130/154] Building C object zephyr/lib/libc/minimal/CMakeFiles/lib__libc__minimal.dir/source/stdout/stdout_console.c.obj
[131/154] Building C object zephyr/lib/libc/minimal/CMakeFiles/lib__libc__minimal.dir/source/stdout/fprintf.c.obj
[132/154] Building C object zephyr/lib/libc/minimal/CMakeFiles/lib__libc__minimal.dir/source/stdlib/exit.c.obj
[133/154] Building C object zephyr/lib/libc/minimal/CMakeFiles/lib__libc__minimal.dir/source/string/string.c.obj
[134/154] Building C object zephyr/lib/libc/minimal/CMakeFiles/lib__libc__minimal.dir/source/stdout/sprintf.c.obj
[135/154] Building C object zephyr/lib/libc/minimal/CMakeFiles/lib__libc__minimal.dir/source/time/gmtime.c.obj
[136/154] Building C object zephyr/arch/arch/arm/core/aarch32/mpu/CMakeFiles/arch__arm__core__aarch32__mpu.dir/arm_mpu.c.obj
[137/154] Linking C static library zephyr\lib\libc\minimal\liblib__libc__minimal.a
[138/154] Building C object zephyr/lib/posix/CMakeFiles/lib__posix.dir/pthread_common.c.obj
[139/154] Building C object zephyr/lib/posix/CMakeFiles/lib__posix.dir/nanosleep.c.obj
[140/154] Building C object zephyr/arch/arch/arm/core/aarch32/cortex_m/CMakeFiles/arch__arm__core__aarch32__cortex_m.dir/fault.c.obj
[141/154] Linking C static library zephyr\arch\arch\arm\core\aarch32\mpu\libarch__arm__core__aarch32__mpu.a
[142/154] Linking C static library zephyr\lib\posix\liblib__posix.a
[143/154] Linking C static library zephyr\arch\arch\arm\core\aarch32\cortex_m\libarch__arm__core__aarch32__cortex_m.a
[144/154] Linking C executable zephyr\zephyr_pre0.elf
[145/154] Generating dev_handles.c
[146/154] Building C object zephyr/CMakeFiles/zephyr_pre1.dir/misc/empty_file.c.obj
[147/154] Building C object zephyr/CMakeFiles/zephyr_pre1.dir/dev_handles.c.obj
[148/154] Linking C executable zephyr\zephyr_pre1.elf
[149/154] Generating linker.cmd
[150/154] Generating isr_tables.c, isrList.bin
[151/154] Building C object zephyr/CMakeFiles/zephyr_final.dir/misc/empty_file.c.obj
[152/154] Building C object zephyr/CMakeFiles/zephyr_final.dir/isr_tables.c.obj
[153/154] Building C object zephyr/CMakeFiles/zephyr_final.dir/dev_handles.c.obj
[154/154] Linking C executable zephyr\zephyr.elf
Memory region Used Size Region Size %age Used
FLASH: 21520 B 1020 KB 2.06%
SRAM: 10336 B 256 KB 3.94%
IDT_LIST: 0 GB 2 KB 0.00%