helloworld.ko

Linux设备驱动 ----helloworld.ko 毕业已经好多年了,从单片机到毕业后的安卓开发,虽然在上面工作了很多时间,但是总感觉自己缺点什么。总的来说对知识的储备其实不是那么充足,对一些深层次的东西理解也不是很透彻,当然自己也缺少一股冲劲与恒心。所以现在想在优快云 上中记录对基础知识的一些巩固,对程序员而言真的是需要多看多写,才能对自己有所提高,不然到最后可能还是那个水平,废话可能有点多了........下面进入正题 最简单的驱动编译,注... 阅读详情

helloworld模块:

xxha@xxha-OptiPlex-780:~/share/learning/songbaohua/4_char_device_driver/helloworld$vim hello.c

1 /*======================================================================
  2 A simple kernel module: "hello world"
  3 
  4 The initial developer of the original code is Baohua Song
  5 <author@linuxdriver.cn>. All Rights Reserved.
  6 ======================================================================*/
  7 #include <linux/init.h>
  8 #include <linux/module.h>
  9 MODULE_LICENSE("Dual BSD/GPL");
 10 static int hello_init(void)
 11 {
 12 printk(KERN_INFO " Hello World enter\n");
 13 return 0;
 14 }
 15 
 16 static void hello_exit(void)
 17 {
 18 printk(KERN_INFO " Hello World exit\n ");
 19 }
 20 
 21 module_init(hello_init);
 22 module_exit(hello_exit);
 23 
 24 MODULE_AUTHOR("Song Baohua");
 25 MODULE_DESCRIPTION("A simple Hello World Module");
 26 MODULE_ALIAS("a simplest module");


xxha@xxha-OptiPlex-780:~/share/learning/songbaohua/4_char_device_driver/helloworld$vim Makefile

1 obj-m := hello.o
  2 
  3 clean: 
  4 rm -rf *.ko *.mod.c *.o *.order *.symvers


编译模块:
xxha@xxha-OptiPlex-780:~/share/learning/songbaohua/4_char_device_driver/helloworld$make -C /usr/src/linux-headers-2.6.35-22-generic/ M=$(pwd) modules
make:进入目录'/usr/src/linux-headers-2.6.35-22-generic'
  CC [M]  /home/xxha/share/learning/songbaohua/4_char_device_driver/helloworld/hello.o
  Building modules, stage 2.
  MODPOST 1 modules
  CC      /home/xxha/share/learning/songbaohua/4_char_device_driver/helloworld/hello.mod.o
  LD [M]  /home/xxha/share/learning/songbaohua/4_char_device_driver/helloworld/hello.ko
make:离开目录“/usr/src/linux-headers-2.6.35-22-generic”

xxha@xxha-OptiPlex-780:~/share/learning/songbaohua/4_char_device_driver/helloworld$ls
hello.c  hello.ko  hello.mod.c  hello.mod.o  hello.o  Makefile  modules.order  Module.symvers

xxha@xxha-OptiPlex-780:~/share/learning/songbaohua/4_char_device_driver/helloworld$sudo insmod hello.ko

xxha@xxha-OptiPlex-780:~/share/learning/songbaohua/4_char_device_driver/helloworld$tail -n 2 /var/log/messages
Jan 24 11:13:15 xxha-OptiPlex-780 kernel: [ 6909.919001]  book num:5000
Jan 24 13:38:43 xxha-OptiPlex-780 kernel: [15638.098334]  Hello World enter

xxha@xxha-OptiPlex-780:~/share/learning/songbaohua/4_char_device_driver/helloworld$modinfo hello.ko    //查询模块的信息。
filename:       hello.ko
alias:          a simplest module
description:    A simple Hello World Module
author:         Song Baohua
license:        Dual BSD/GPL
srcversion:     AF31C8A811E72E11F852B3E
depends:       
vermagic:       2.6.35.4 SMP mod_unload modversions

xxha@xxha-OptiPlex-780:~/share/learning/songbaohua/4_char_device_driver/helloworld$sudo rmmod hello.ko
xxha@xxha-OptiPlex-780:~/share/learning/songbaohua/4_char_device_driver/helloworld$tail -n 2 /var/log/messages
Jan 24 13:38:43 xxha-OptiPlex-780 kernel: [15638.098334]  Hello World enter
Jan 24 13:40:34 xxha-OptiPlex-780 kernel: [15748.893361]  Hello World exit

这就是helloworld.ko, 超简单。

 

添加内核模块之入门helloworld.ko 首先 是从一个西邮学生看到的,比较好的入门方式:首先是hello.c的文件:主要要说明对内核的编程只能使用内核头文件,所以通常我们都使用makefile来控制编译过程#include "linux/init.h" #include "linux/module.h" #include "linux/kernel.h" //必选 //模块许可声明 MODULE_LICENSE("Dual BSD/GPL"); //模块加载函数 static int hello_init(void) { 阅读详情

相关推荐

01_helloworld模块驱动

基于imx6ull开发板,制作一个HelloWorld模块驱动

米兰的无线电台 165

Helloworld模块编译.ko

首先引用网上最常见的Helloworld模块:

未名湖畔的落叶 1794

用Python turtle库 绘制皮卡丘

Turtle库是Python语言中一个很流行的绘制图像的函数库,想象一个小乌龟,在一个横轴为x、纵轴为y的坐标系原点,(0,0)位置开始,它根据一组函数指令的控制,在这个平面坐标系中移动,从而在它爬行的路径上绘制了图形。 turtle基础知识参考: https://gitchat.blog.csdn.net/article/details/90696190 https://blog.csdn.ne...

qq_36295856的博客 2万+

linux驱动 - 2: helloworld.ko

上一节, 搭建好了开发环境.那就小试牛刀, 编写一个最简单的ko, 从内核发出一句问候: hello-world.

jiazh的博客 369

从Applied Intelligence被拒到The Visual Computer录用:我的计算机视觉论文投稿时间线全记录(含详细修改意见)

本文详细记录了作者从Applied Intelligence被拒到The Visual Computer成功发表计算机视觉论文的全过程,重点分享了如何将模糊的拒稿理由转化为具体改进方案。文章包含技术改进细节、写作调整策略以及期刊选择经验,为计算机视觉领域的研究者提供了实用的投稿指南。

weixin_30872499的博客 465

基于matlab实现的水果识别系统设计

本项目针对多种常见水果混合的图像,利用 Matlab 软件,对水果的识别进行研究。根据水果和背景的差别选取阈值,对去噪增强对比度后的图像进行二值化处理。再对图像进行边缘检测,选定连通区域,标记后再对不同种水果的颜色,形状,大小等特征进行快速识别水果,从而实现对水果的正确分拣。:水果识别、MATLAB、数字图像处理。

热情、奔放、快乐编程! 4854

insmod: ERROR: could not insert module helloworld.ko: Invalid module format

你的模块可能是为另一个版本的内核编译的。每个 Linux 内核版本都有其特定的模块格式和接口,因此模块必须与内核版本精确匹配。:如果模块是为不同的硬件架构编译的(例如,在 x86 架构上编译的模块尝试在 ARM 架构上加载),也会出现这种错误。确保你编译模块时使用的内核头文件与当前运行的内核版本相同。:如果模块是在不同的系统或不同的内核头文件环境下编译的,也可能会导致不兼容。如果你的目标系统是不同的硬件架构,确保设置了正确的交叉编译环境。查看模块的详细信息,确认其适用的内核版本和其他相关信息。

xie__jin__cheng的博客 1394

【Unity程序技巧】Unity中单例模式管理器

单例模式(Singleton Pattern)是 最简单的设计模式之一

秩沅 1657

linux helloworld驱动程序,linux 驱动程序入门 helloworld.ko

#include#static int nbr =2;#module_param(nbr, int, S_IRUGO)void hello(void){printk(KERN_DEBUG "[kernel space] begin kernel_receive\n");}int __init hello_init(void){hello();}void __exit hello_exit(void...

weixin_39646021的博客 212

18、知识表示与学习范式

本文探讨了智能系统中的核心组成部分——知识表示与学习范式。从基础知识到实际应用,详细解析了符号表示、框架表示、语义网络和本体表示等知识表示方法,并介绍了监督学习、无监督学习、半监督学习和强化学习等学习范式。此外,还深入分析了这些技术在自然语言处理、图像识别和推荐系统等领域的具体应用及操作步骤。最后,展望了未来可能的技术发展方向。

ttt77的博客 84

VIVADO IP核之FIR插值器多相滤波仿真

网络上有许多文章介绍FIR低通滤波器的使用,包括仿真。关于FIR低通滤波器的使用,我之前的文章已经介绍过了,本文将继续深入介绍FIR插值器多相滤波的使用方法,并将FIR插值多相滤波的结果与MATLAB仿真计算的结果比较,验证了FIR插值器多相滤波使用正确。

m0_66360845的博客 3382

Linux 设备驱动helloworld.ko的制作过程

一. 源程序

changzhi的专栏 1370

假期搞定!2026国社科申报AI全攻略指南:从选题到创新,7大核心要点手把手教你!

最后给大家推荐的400多所高校教师都在用的AI平台——高级学术版专业应用平台,集成了国际主流学术应用,以及ChatGPT、Claude、Gemini、Grok等Al大模型的高级版本平台,还有,可以辅助大家高效完成科研和学术写作任务,当然撰写硕博论文,课题、职称论文、国社科、国自然基金本子也是手拿把掐。你的任务是:用高度凝练的方式说明在(某一明确国家战略 / 政策方向,如:中国式现代化、共同富裕、基层治理现代化、数字中国、文化强国、国家安全等)背景下,我究竟要研究一个什么“具体而可操作的问题”。

智能AI让学术科研更容易 623

Nano之HelloWorld驱动 (学习如何单独编译.ko模块)

1、准备下面两个文件: Makefile nano_hello_module.c nano_hello_module.c #include <linux/kernel.h> #include <linux/module.h> static int __init nano_hello_module_init(void) { printk("Hello yfw, ...

Yfw的博客 796

YOLO11 改进系列 | 引入2023年 MLCA 的 C3k2_MLCA 模块,近零参数开销的本地-全局通道注意力,适合检测与分割特征增强

本文提出将MLCA(混合局部通道注意力)模块嵌入YOLOv11的C3k2框架中,形成C3k2_MLCA改进结构。该模块通过5×5局部池化和1×1全局池化双路融合,结合ECA式Conv1d生成通道注意力,在几乎不增加参数量的前提下(仅增加66个参数),实现了局部空间信息与全局通道统计的联合建模。相比传统SE和ECA注意力,MLCA保留了空间分布信息,更适合实例分割等需要精细定位的任务。实验表明改进后模型参数量仅增加0.002%,计算量基本不变,是一种高效的注意力增强方案。

qq_44224801的博客 92

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

linux 驱动程序入门 helloworld.ko

本文博客介绍了,helloword 驱动 的代码编写与编译,加载,卸载驱动的过程,便于尽快的入手驱动编程

xiahzp的专栏 619

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

RK单片机helloworld完整流程

用的是创龙的RK3506,但是创龙由于不是学习板无相关资料。网上找到helloworld资料对编写makefile通用性不高,并且普遍缺少将可执行文件(.ko)拷贝到单片机过程。我在经历了摸爬滚打后摸索出了完整流程,供和我一样的小白参考。以创龙RK3506evm为例创建helloworld文件夹,加入helloworld.c驱动文件这里参考的代码。

2301_80105502的博客 647

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

Ubuntu ko模块的编译

http://blog.csdn.net/tugouxp/article/details/69053633 Linux .ko模块的生成方式 http://blog.csdn.net/fouweng/article/details/53407029 ubuntu下编译内核模块ko,并加载 http://www.cnblogs.com/naedzq/p/6421073.html Ubuntu下编...

weixin_33748818的博客 1163

insmod: ERROR: could not insert module helloworld.ko: Operation not permitted

前面有说过如何创建字符设备的文章,

保持一颗永远好奇、勇于探索的心 3113

RK3588 第一个helloworld驱动

已经生成了helloworld.ko 将此文件放到开发板上。此处的交叉编译工具链路径得设置正确 不然会失败。也不能卸载build.sh脚本里 试过 不行。通过dmesg 可以看到已经 正确加载 卸载了。源文件helloworld.c。设置交叉编译和arch。

baoecit的博客 152

common-android15-6.6 kernel环境下,编写并编译一个helloworld驱动模块

本文介绍了如何编写一个简单的"Hello World"字符设备驱动模块。主要内容包括:1) 创建驱动源码文件helloworld.c,实现基本的open、read、write操作和初始化/退出函数;2) 修改BUILD.bazel文件配置模块编译;3) 使用bazel命令编译生成helloworld.ko文件;4) 将驱动模块推送到Android模拟器,通过insmod加载并验证/dev/hello_char设备节点创建成功。该驱动模块演示了Linux字符设备驱动的基本开发流程。

Railshiqian的博客 115

正点原子insmod加载驱动失败:insmod: ERROR: could not insert module helloworld.ko: Invalid module format

解决内核驱动无法加载的问题

eternal_xe的博客 635

linux helloworld驱动程序,linux第一个驱动之helloworld

第一个驱动——helloworld运行环境:JZ2440开发板,内核版本Linux (none) 2.6.22.6 #2 Sat Dec 2 18:58:18 CST 2017 armv4tl unknown开发环境:ubuntu 1204 虚拟机,在虚拟机gedit编辑实验环境前提条件:拥有一个制作好的NFS文件系统/**********************************hello...

weixin_28874917的博客 480
上一篇: 模块的声明与描述
下一篇: 模块的使用计数
lamdoc
博客等级 码龄18年 155粉丝 655原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值