openwrt中添加自定义内核模块

【OpenWrt】添加自定义kernel内核模块并编译 OP系统添加自定义内核模块 阅读详情

openwrt中自带一整套包管理机制,正确使用openwrt的包管理机制可有效提高开发效率

本文介绍如何在openwrt中增加一个自定义的内核模块包

1、在package/kernel下创建一个应用程序目录mydrv,并在mydrv下再创建一个src用于存放源码文件

$ cd package/kernel

$ mkdir mydrv

$ cd mydrv

$ mkdir src

2、在mydrv目录下创建Makefile,内容如下

$ cd mydrv/

$ vim Makefile

include $(TOPDIR)/rules.mk
include $(INCLUDE_DIR)/kernel.mk

PKG_NAME:=mydrv
PKG_RELEASE:=1

include $(INCLUDE_DIR)/package.mk

define KernelPackage/$(PKG_NAME)
  SUBMENU:=Other modules
  TITLE:=This is a $(PKG_NAME) driver
  FILES:=$(PKG_BUILD_DIR)/$(PKG_NAME).ko
  AUTOLOAD:=$(call AutoLoad,30,,1)
  KCONFIG:=
endef

define KernelPackage/$(PKG_NAME)/description
This is a $(PKG_NAME) device.
endef

EXTRA_KCONFIG:= \
        CONFIG_MYDRV=m

EXTRA_CFLAGS:= \
        $(patsubst CONFIG_%, -DCONFIG_%=1, $(patsubst %=m,%,$(filter %=m,$(EXTRA_KCONFIG)))) \
        $(patsubst CONFIG_%, -DCONFIG_%=1, $(patsubst %=y,%,$(filter %=y,$(EXTRA_KCONFIG)))) \

MAKE_OPTS:= \
        ARCH="$(LINUX_KARCH)" \
        CROSS_COMPILE="$(TARGET_CROSS)" \
        SUBDIRS="$(PKG_BUILD_DIR)/" \
        EXTRA_CFLAGS="$(EXTRA_CFLAGS)" \
        $(EXTRA_KCONFIG)

define Build/Prepare
        mkdir -p $(PKG_BUILD_DIR)
        $(CP) ./src/* $(PKG_BUILD_DIR)/
endef

define Build/Compile
        $(MAKE) -C "$(LINUX_DIR)" \
                $(MAKE_OPTS) \
                modules
endef

$(eval $(call KernelPackage,$(PKG_NAME)))

包名称、版本:

PKG_NAME:=mydrv
PKG_RELEASE:=1

描述:

define KernelPackage/$(PKG_NAME)
  SUBMENU:=Other modules
  TITLE:=This is a $(PKG_NAME) driver
  FILES:=$(PKG_BUILD_DIR)/$(PKG_NAME).ko
  AUTOLOAD:=$(call AutoLoad,30,,1)
  KCONFIG:=
endef

define KernelPackage/$(PKG_NAME)/description
This is a $(PKG_NAME) device.
endef

准备操作:

define Build/Prepare
        mkdir -p $(PKG_BUILD_DIR)
        $(CP) ./src/* $(PKG_BUILD_DIR)/
endef
编译操作:

define Build/Compile
        $(MAKE) -C "$(LINUX_DIR)" \
                $(MAKE_OPTS) \
                modules
endef


3、进入src/目录,创建Makefile、Kconfig、mydrv.c

$ cd src/

$ vim Makefile

obj-${CONFIG_MYDRV}+= mydrv.o

$ vim Kconfig


<pre name="code" class="plain">config MYDRV
        tristate "test mydrv"
        help
        This is a example, for debugging kernel model.
        If unsure, say N.

$ vim mydrv.c

#include <linux/init.h>
#include <linux/module.h>

static __init int mydrv_init(void)
{
        printk(KERN_ALERT "helloworld!\n");
        return 0;
}

static __exit void mydrv_exit(void)
{
        printk(KERN_ALERT "helloworld exit!\n");
}

module_init(mydrv_init);
module_exit(mydrv_exit);

MODULE_LICENSE("GPL");
MODULE_AUTHOR("Stone");

4、回到根目录,使用make menuconfig配置mydrv模块

 $ cd openwrt/

$ make menuconfig

kernel modules --->

     Other modules  --->

           <M> kmod-mydrv.

5、在根目录编译模块

$ cd openwrt/

$ make package/mydrv/compile V=s

6、变成成功后可在bin/targets/ramips/mt76x8/packages下看到生成的ipk包

7、导入ipk包到设备,使用opkg安装此包

$ opkg install  kmod-mydrv_4.14.101-1_mipsel_24kc.ipk

成功安装后即可加载mydrv.ko

OpenWrt开发(4)-- 添加内核驱动模块 -- 读写寄存器 本文以建立一个能够读写寄存器数值的内核驱动模块来介绍如何给OpenWr添加内核驱动模块。 阅读详情

相关推荐

OpenWrt源码分析之编译系统

OpenWrt 编译系统介绍

iampisfan的专栏 1万+

OpenWrt KernelPackage分析

OpenWrt KernelPackage分析

to_be_better_wen的博客 1079

openwrt编译流程分析

最近开始整5G CPE项目,系统基于OpenWrt,打算详细研究了一下整个工程的构建过程,记录一下: 编译过程概述 编译的总体过程如下: 1.编译host工具 2.编译交叉工具链 3.编译内核模块 4.编译ipk 5.安装ipk到文件系统 6.编译内核 7.将内核和文件系统组合成最终binary 1. 编译host工具 虽然我们在开始编译前已经安装了一些必要的工具,但编译过程中还需要其他一些主机工具。这部分工具将首先编译。 2. 编译交叉工具链 openwrt自带交叉编译链,当然在

alimingh的博客 7857

Makefile之filter-out

1 功能说明$(filter-out PATTERN…,TEXT) `函数名称 :反过滤函数—filter-out。 函数功能 :和“filter”函数实现的功能相反。过滤掉字串“TEXT”中所有符合模式“PATTERN”的单词,保留所有不符合此模式的单词。可以有多个模式。存在多个模式时,模式表达式之间使用空格分割。返回值 :空格分割的“TEXT”字串中所有不符合模式“PATTERN”的字串。 函数

每天写一点,进步一点点 2万+

5-Openwrt add function module to package

在Openwrt package Makefile章节里面提到了,要添加一个添加自定义模块的章节,这边就举两个简单的例子看下,其实我们自己看下已有的例子也大概可以模仿出来。 1.添加openwrt应用程序模块 如下,我们在package下面添加一个hello模块,有以下几个文件 linye@ubuntu:~/14.07/package/hello$ tree . ├── Makefile └─...

Creator_Ly的博客 497

使用Jacob实现将Word文件转换为Pdf文件

如果是首次使用 jacob,建议先直接从 github上下载 zip包,因为在实现Word转Pdf的时候,不仅需要用到 jacob.jar,还需要 jacob.dll 库,而zip包中都有。官方使用文档可以参考:https://github.com/freemansoft/jacob-project/blob/main/docs/UsingJacob.md。// 如果安装的是微软的 Office,需要使用 Word.Application。

qq_41672950的博客 750

OpenWRT编译 -- 添加用户自定义的内核模块

一、概述 和 OpenWRT编译 – 添加用户自定义app 类似 本笔记说明如何在 openwrt 中添加用户自定义的内核模块,其中 Makefile 部分相差不多,下面简单的说明一下具体的步骤和内容。 二、文件结构说明 在 openwrt 中,内核模块以及驱动文件都放置在目录 /package/kernel/ 下,为了说明在多文件模式下的编译通过,本说明文档中主要的目录结构如下。 packag...

青椒*^_^*凤爪爪的博客 9355

OpenClaw(原Clawdbot/Moltbot)本地部署快速指南

支持Telegram、Slack、Discord、iMessage等多平台接入,通过配置文件或环境变量填写对应平台的Token,配置后执行。支持对接OpenAI、Anthropic、阿里云百炼等云端模型,也可搭配Ollama使用本地模型。默认仅允许已配对用户交互,群聊场景建议开启Docker沙箱模式,在配置文件设置。执行后跟随指引确认安全说明,进入QuickStart模式,默认网关端口为。可查看已加载模型,通过绑定的通讯通道发送测试指令,响应正常即部署完成。,限制非主会话操作权限,提升安全性。

wukangjupingbb的博客 8479

openwrt 添加自定义内核模块

openwrt添加内核模块步奏: 1、创建需要的文件及文件夹: CUR_DIR:openwrt根目录 cd package mkdir demo cd demo mkdir src touch Makefile cd src touch demo.c touch Kconfig touch Makefile 2、编写demo文件夹第一级Makefile # # Copyright (C)

迷失的专栏 6972

DBeaver连接ClickHouse保姆级教程:从安装到成功测试(附驱动下载问题解决)

本文提供了一份详细的DBeaver连接ClickHouse实战指南,重点解决了驱动下载失败等常见问题。文章从环境准备、DBeaver安装讲起,详细阐述了手动配置ClickHouse驱动的可靠方案,并逐步指导完成连接配置与测试,最后介绍了基础操作与查询优化技巧,旨在帮助用户高效完成连接并快速上手使用。

pink的博客 880

C#构建高精度预测模型:从数据预处理到模型部署的实战指南

【代码】C#构建高精度预测模型:从数据预处理到模型部署的实战指南。

墨夶的博客 1265

手把手教你给OpenWRT添加自定义内核模块(基于Qemu测试)

本文详细介绍了在OpenWRT系统中添加自定义内核模块的全流程实践,重点讲解了如何利用Qemu虚拟环境进行高效仿真与测试。通过源码级集成和模块化包管理,开发者可以在无需物理硬件的情况下,完成从代码编写、系统构建到功能验证的完整开发闭环,并深入探讨了内核源码级调试等高级技巧。

k8s6orchestrator的博客 1032

【YOLOv11】070、YOLOv11异常检测:正常数据训练下的异常目标识别

本文探讨了如何利用YOLOv11模型进行工业异常检测,重点介绍了仅使用正常样本训练模型的创新方法。文章首先通过产线误报案例引出异常检测的核心问题,阐述了YOLOv11作为特征提取器的改造思路,包括正常数据训练、特征空间构建和异常度量等关键步骤。实战部分提供了精简代码示例,强调数据增强控制、特征层选择和自编码器应用等技巧。作者还总结了容易出错的细节,如特征选择、阈值设定和计算效率优化等,并给出实用建议:从简单方法入手、重视可视化、确保数据质量、部署时设置复核机制等。最后指出该方法虽能减少对异常样本的依赖,但需

企鹅码农的专属播客,分享10多年的实战案例和经验解读,包含YOLO、RT-DETR、AI等各个工作领域。 235

openWRT内核模块加载

转自:openwrt增加内核模块的方法 开发环境为ubuntu.首先搭建编译环境。 sudo apt-get install gcc g++ binutils patch bzip2 flex bison make autoconf gettext texinfo unzip sharutils subversion libncurses5-dev ncurses-term zlib1g-

zhoujiyun111的专栏 2359

ESP32-C3模组上跑通OTA升级(3)

ESP32-C3模组上跑通OTA升级(3)

phmatthaus的专栏 1352

《唤醒你的AI同事:WorkBuddy从零上手》000:介绍及目录

《唤醒你的AI同事:WorkBuddy从零上手》全书导览与总目录:000–043 共 44 篇,覆盖从环境搭建、对话基础到资料库、行业助手与多模态生成的入门实战。含完整篇目速查与编号直达,建议关注收藏。

LuckyHanMo的博客 603

openwrt配置内核驱动_openwrt增加内核模块的方法

开发环境为ubuntu.首先搭建编译环境。sudo apt-get install gcc g++ binutils patch bzip2 flex bison make autoconf gettext texinfo unzip sharutils subversion libncurses5-dev ncurses-term zlib1g-dev texlive-lang-french g...

weixin_39915605的博客 761

vue - 网站接入微信扫码登录功能详细教程,完整详细流程及完整功能示例源代码(附常见问题的解决方案与二维码样式修改方案)

vue.js项目植入微信登录,vue网页项目怎么做微信扫码登录,VUE项目中的微信扫码登录,VUE中最简单的js调用微信扫一扫功能,vue:如何设计网页的微信扫码登录功能,微信扫码功能官方文档,通过vue方式实现二维码扫码功能,vue调用微信扫码,vue H5 调用微信扫描二维码,Vue前端实现微信扫码登录,vue-wxlogin 微信授权登录组件,网站引入的微信登录框如何修改宽高或其他样式,wxlogin 组件插件怎么改变宽高,vue-wxlogin组件怎么自定义样式,微信网页授权,vue调用微信JSDK

✅ 精选推荐文章 6366

openwrt 添加自己的应用程序到内核并自启动(内核模块)

文章目录 系列文章目录 前言 一、pandas是什么? 二、使用步骤 1.引入库 2.读入数据 总结 前言 本文章是关于openwrt 下的 内核模块的添加: 当我们写完了应用程序,想当成模块添加到固件中,需要再内核源码中添加/创建应用程序文件。 一、创建目录 openwrt/package/serial-spi-4g 其中serial-spi-4g 是我自己创建的文件夹 serial-spi-4g :文件夹 serial-spi-4g /src:...

板蓝根蜀黍的博客 1770

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

32-Openwrt add function module to package

在Openwrt package Makefile章节里面提到了,要添加一个添加自定义模块的章节,这边就举两个简单的例子看下,其实我们自己看下已有的例子也大概可以模仿出来。添加内核模块和添加应用程序的框架类似,直接内部的实现函数不一样,如下,我们在package下面添加一个hello_kernel模块,有以下几个文件。代码编写完成后,使用make menuconfig就可以找到hello的选项,勾选起来。编译完可以在​​build_​​​下面看到多出来一个​​hello_1.01​​的模块。

u011029104的专栏 192

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

Openwrt中添加内核模块

源码的Makefile很简单,其实只要一行就够了,其中CONFIG_需要在后续.config文件中配置,或者直接将$(CONFIG_DEMO)改为y或m即可。根级Makefile仿其它内核模块编写,注意替换名称demo,SUBMENU以及TITLE将显示在make menuconfig的交互界面中。如果想要在Openwrt系统中添加一个内核模块,其实并不难,对着某个已有的内核模块,依葫芦画瓢嘛,不难。源码非常简单,在装载时打印Hello World,卸载时打印Exit。

szembed的博客 529

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

openwrt-x86添加内核模块文件dvb.mk编译成ipk

putty命令安装:opkg install kmod-dvb-usb-rtl28xxu_5.10.100-1_x86_64.ipk。make kernel_menuconfig图形化配置形式编译出来的模块文件ko,要怎么才能生成独立的ipk安装包呢?ipk生成目录:bin/tragets/x86/64/packages。以上是rtl28xxu编写示例,同Makefile格式差不多。以上为必要核心组件,选中并集成ipk到固件。1:添加内核模块文件dvb.mk到内核。将ipk上传到路由/tmp。

m0_56245638的博客 384

OpenWrt Buildroot

 OpenWrt BuildrootUsage and documentation by Felix Fietkau and Waldemar Brodkorb, based on uClibc Buildroot documentation by Thomas Petazzoni. Contributions from Karsten Kruse, Ned Ludd, Mar

三角板的专栏 1969

OpenWrt增加软件包方法

OpenWrt是一个比较完善的嵌入式Linux开发平台,在无线路由器应用上已有100多个软件包。人们可以在其基础上增加软件包,以扩大其应用范围。OpenWrt在增加软件方面使用极其方便,按照OpenWrt的约定就可以很简单完成。        加入的软件包可以是网上可下载的开源软件或自行开发的软件。為加入软件包需要在package目錄下创建一个目录,以包含软件包的各种信息和与OpenWrt建立联

Do one thing at a time, and do well. 1349
上一篇: openwrt中添加自定义应用模块
下一篇: 【SylixOS lite版——基于STM32F767计算资源使用情况】
stone8761
博客等级 码龄15年 212粉丝 155原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

stone8761

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值