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

编译构建测试

相关推荐
浮游本尊2 小时前
React 18.x 学习计划 - 第十三天:部署与DevOps实践
学习·react.js·状态模式
wdfk_prog2 小时前
[Linux]学习笔记系列 -- [drivers][dma]dmapool
linux·笔记·学习
电饭叔2 小时前
Tkinter Button 括号内的核心参数详解
python·学习
闵帆4 小时前
反演学习器面临的鸿沟
人工智能·学习·机器学习
EnglishJun4 小时前
数据结构的学习(二)---Makefile的使用
linux·运维·学习
呱呱巨基4 小时前
c语言 文件操作
c语言·开发语言·c++·笔记·学习
嗯嗯**6 小时前
Neo4j学习1:概述、安装
学习·neo4j·概述·安装·图数据库·jdk21
Century_Dragon6 小时前
新能源汽车教学新体验:大众ID.4结构原理教学软件
学习
yangzheui6 小时前
【VUE2转VUE3学习笔记】-Day1:模板语法
vue.js·笔记·学习