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%