// 创建固定大小内存池
K_MEM_POOL_DEFINE(my_pool, 256, 4096, 4, 4);
// 使用内存池分配
struct k_mem_block block;
int ret = k_mem_pool_alloc(&my_pool, &block, 1024, K_NO_WAIT);
CONFIG_HEAP_MEM_POOL_SIZE=0CONFIG_HEAP_MEM_POOL_SIZE=2048K_THREAD_STACK_DEFINE(my_stack, 1024)CONFIG_STACK_SENTINEL=y// 使用静态内存而非动态分配
static uint8_t buffer[256];
# Kconfig 配置
CONFIG_OPTIMIZATION_LEVEL_O3=y
CONFIG_LTO=y
__builtin_unreachable() 提示编译器__attribute__((optimize("O3"))) 优化热点函数// 快速中断处理
void ISR_DIRECT_DECLARE(my_isr) {
// 最小化处理,延迟工作
k_sem_give(&sem);
return 0;
}
// 请求空闲状态
k_cpu_idle();
// 深度睡眠
pm_device_runtime_put(dev);
// 启用外设自动电源管理
pm_device_runtime_enable(dev);
// 降低日志级别
CONFIG_LOG_DEFAULT_LEVEL=3
// 使用异步日志
CONFIG_LOG_MODE_DEFERRED=y
# 使用 size 工具
arm-none-eabi-size build/zephyr/zephyr.elf
# 查看内存使用
west build -b nrf52840dk/nrf52840 samples/hello_world -- -DCMAKE_EXPORT_COMPILE_COMMANDS=1
# 启用链接时优化
west build -b <board> <app> -- -DCONFIG_LTO=y
Nordic 的功耗测量通常依赖外部工具链,例如 Power Profiler Kit / Power Profiler 应用,而不是在固件里调用某个统一的 ppp_init() 接口。