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 小时前
鸿蒙Flutter Flex多子组件权重分配
学习·flutter·华为·harmonyos·鸿蒙
圣光SG5 小时前
Servlet学习笔记
笔记·学习·servlet
@Mike@7 小时前
02-数据库学习笔记(SQL引擎)
数据库·笔记·学习
六点_dn7 小时前
RabbitMQ学习笔记-定义与作用
笔记·学习·rabbitmq
我的xiaodoujiao8 小时前
快速学习Python基础知识详细图文教程9--函数进阶
开发语言·python·学习·测试工具
世人万千丶9 小时前
鸿蒙Flutter Flexible与Expanded的区别
学习·flutter·harmonyos·鸿蒙
YM52e10 小时前
鸿蒙Flutter Center居中组件:Align对齐详解
android·学习·flutter·华为·harmonyos·鸿蒙
金伟API102412 小时前
SQL Server基础学习笔记
笔记·学习
MartinYeung512 小时前
[论文学习]MiCA:比LoRA和全参数微调学到更多知识
深度学习·学习·机器学习
浮江雾13 小时前
Flutter第十节-----Flutter布局与组件全解析
android·开发语言·前端·学习·flutter·入门