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;
}

编译构建测试

相关推荐
我想我不够好。18 小时前
豹女q w e r衔接闪现
学习
aichitang202420 小时前
希尔伯特空间中的正交性
人工智能·学习·机器学习·ai·泛函分析
for_ever_love__20 小时前
python基础语法学习: 正则表达式
python·学习·正则表达式
佳児素花痴╮20 小时前
STM32U575RIT6(USART)学习
stm32·嵌入式硬件·学习
sunshine22 girl20 小时前
Angular7,9,学习笔记三 dom操作
笔记·学习·angular
春风解人意20 小时前
从零开始学习嵌入式P28----线程
c语言·学习·算法
MartinYeung521 小时前
[论文学习]MAC:多智能体宪章学习
人工智能·学习·macos
小+不通文墨21 小时前
使用vscode里的U8G2 库编写OLED菜单控制
经验分享·笔记·单片机·嵌入式硬件·学习
摆烂老大1 天前
论文学习 | HESS2025 | 中亚寒区季节水文预报
学习·机器学习·水文
西西弗Sisyphus1 天前
模型训练 不同批次大小与学习率下的训练损失对比(1)
学习·batchsize·learning rate