zephyr学习之自定义外部module记录

前言

  1. 官方链接

项目创建


自定义module(以say_hello为例)

module.yml文件

yaml 复制代码
name: say_hello
build:
  cmake: .
  kconfig: Kconfig

CMakeLists.txt文件

c 复制代码
if(CONFIG_SAY_HELLO)

    zephyr_include_directories(${CMAKE_CURRENT_LIST_DIR}/)

    zephyr_library_sources(${CMAKE_CURRENT_LIST_DIR}/say_hello.c)

endif ()

Kconfig文件(用于条件编译配置的宏定义)

c 复制代码
# create a menu

config SAY_HELLO
    bool "this is a test"
    default n   # 默认值
    depends on PRINTK  # 依赖项
    help
        this is a help  message

源文件和头文件

  1. 头文件
c 复制代码
/**
  ******************************************************************************
  * @file           : say_hello.h
  * @author         : shchl
  * @brief          : None
  * @attention      : None
  * @date           : 2026/2/2
  ******************************************************************************
  */

#ifndef INC_01_KCONFIG_LEARN_SAY_HELLO_H
#define INC_01_KCONFIG_LEARN_SAY_HELLO_H

void say_hello(void);
#endif //INC_01_KCONFIG_LEARN_SAY_HELLO_H
  1. 源文件
c 复制代码
/**
  ******************************************************************************
  * @file           : say_hello.c
  * @author         : shchl
  * @brief          : None
  * @attention      : None
  * @date           : 2026/2/2
  ******************************************************************************
  */
#include <zephyr/kernel.h>
#include "say_hello.h"


void say_hello(void)
{
    printk("hello word\n");
}

项目中引用

prj.conf文件配置

c 复制代码
# nothing here
CONFIG_LOG=y
CONFIG_PRINTK=y
# 启用模块
CONFIG_SAY_HELLO=y

main函数中调用

c 复制代码
/*
 * Copyright (c) 2012-2014 Wind River Systems, Inc.
 *
 * SPDX-License-Identifier: Apache-2.0
 */
#include <zephyr/kernel.h>
#include "autoconf.h"
#include <stdio.h>


#include "say_hello.h"

int main(void)
{
    printk("Hello World! %s\n", CONFIG_BOARD_TARGET);
    say_hello(); // 调用模块api
    return 0;
}

编译构建测试

相关推荐
nashane17 分钟前
HarmonyOS 6学习:画中画(PiP)状态同步与场景化实战指南
学习·pip·harmonyos·harmonyos 5
_李小白1 小时前
【android opencv学习笔记】Day 8: remap(像素位置重映射)
android·opencv·学习
勤劳的进取家1 小时前
数据链路层基础
网络·学习·算法
d111111111d1 小时前
直流电机位置式 PID 控制 和 舵机的区别
笔记·stm32·单片机·嵌入式硬件·学习
y = xⁿ2 小时前
Redis八股学习日记:布隆过滤器
数据库·redis·学习
d111111111d4 小时前
了解Modbus
网络·笔记·stm32·单片机·嵌入式硬件·学习
charlie1145141914 小时前
通用GUI编程技术——图形渲染实战(三十八)——顶点缓冲与输入布局:GPU的第一个三角形
开发语言·c++·学习·图形渲染·win32
我想我不够好。4 小时前
监控学习 4.29 1.5hour
学习
晓晓hh4 小时前
JavaWeb学习——JUnit和日志
学习·junit·单元测试
小超同学你好4 小时前
Transformer 30. MoCo:用「动量编码器 + 队列字典」把对比学习做成可扩展的“字典查找”
深度学习·学习·transformer