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

编译构建测试

相关推荐
C^h21 分钟前
rt thread中的can通信 学习记录
学习
ByteCraze22 分钟前
大四双非春招学习记录-K 个一组反转链表
数据结构·学习·链表
奶人五毛拉人一块28 分钟前
模板与vector的学习
数据结构·学习·迭代器·vector·模板
EnglishJun29 分钟前
ARM嵌入式学习(十八)--- Linux的内核编译和启动
linux·运维·学习
星幻元宇VR40 分钟前
VR旋转蛋椅:沉浸式安全科普新体验
科技·学习·安全·vr·虚拟现实
ZhiqianXia1 小时前
PyTorch 学习笔记(12):ATen C++ 算子引擎的完整架构之旅
pytorch·笔记·学习
旖-旎1 小时前
链表(两两交换链表中的节点)(2)
数据结构·c++·学习·算法·链表·力控
知识分享小能手1 小时前
MongoDB入门学习教程,从入门到精通,MongoDB的分片管理(17)
数据库·学习·mongodb
世人万千丶1 小时前
Flutter 框架跨平台鸿蒙开发 - 嫉妒分析器应用
学习·flutter·华为·开源·harmonyos·鸿蒙