网站封装盈江城乡建设局网站

张小明 2026/1/10 12:45:12
网站封装,盈江城乡建设局网站,网站建设百度知道,做网站6个月心得编写Linux内核驱动生成.ko#xff08;内核模块#xff09;文件#xff0c;不一定需要把代码放到内核源码目录编译#xff0c;但核心取决于你的编译方式——有两种主流方式#xff0c;对应不同的文件存放逻辑#xff0c;推荐第二种#xff08;更灵活#xff09;#xf…编写Linux内核驱动生成.ko内核模块文件不一定需要把代码放到内核源码目录编译但核心取决于你的编译方式——有两种主流方式对应不同的文件存放逻辑推荐第二种更灵活一、两种编译方式的文件存放规则方式1内核源码树内编译传统方式需放特定目录要求必须把驱动代码放到Linux内核源码的指定目录如drivers/i2c/devices/、drivers/misc/原因依赖内核源码的Makefile体系需要修改目录下的Kconfig和Makefile让内核编译系统识别你的驱动步骤示例以AHT20驱动为例把aht20.c放到linux-src/drivers/i2c/devices/修改该目录下的Makefile添加obj-$(CONFIG_AHT20) aht20.o修改该目录下的Kconfig添加驱动配置项回到内核根目录执行make modules编译出.ko。缺点侵入内核源码不灵活多驱动开发时易混乱适用场景驱动需要合入内核主线、或依赖内核深层接口。方式2内核源码树外编译推荐无需放特定目录核心通过自定义Makefile指定内核源码路径驱动代码可放在任意目录如/home/yourname/drivers/aht20/原理自定义Makefile通过KERNELDIR指向内核源码目录借助内核的scripts/Makefile.modpost工具完成编译无需修改内核源码优势驱动代码独立编译不影响内核源码灵活易管理新手必用99%的嵌入式驱动开发场景如AHT20/PCF8574驱动都用这种方式。二、独立目录编译.ko无需内核源码目录以编译AHT20驱动为例全程无需把代码放进内核目录步骤1任意目录创建驱动代码和Makefile比如在/home/root/drivers/aht20/下创建两个文件aht20.c驱动源码略Makefile核心指定内核路径和编译规则# 1. 指定你的内核源码目录开发板对应的内核源码不是系统内核 KERNELDIR ? /home/root/linux-4.19.35-imx6ul # 替换为你的内核源码路径 # 2. 指定编译后的模块存放目录可选默认当前目录 PWD ? $(shell pwd) # 3. 内核模块编译规则 obj-m aht20.o # 要编译的驱动文件aht20.c → aht20.ko # 4. 编译目标 all: make -C $(KERNELDIR) M$(PWD) modules # -C进入内核目录M指定驱动目录 clean: make -C $(KERNELDIR) M$(PWD) clean步骤2编译生成.ko在驱动目录执行编译命令make ARCHarm CROSS_COMPILEarm-linux-gnueabihf- # 交叉编译根据你的编译器调整ARCHarm指定CPU架构ARMCROSS_COMPILE指定交叉编译器前缀和你的开发板匹配编译完成后当前目录会生成aht20.ko还有.o/.mod.c等中间文件。关键注意事项内核源码必须匹配编译.ko的内核源码必须和开发板运行的内核“版本配置编译选项”完全一致否则insmod时会报version magic mismatch比如开发板内核是4.19.35就必须用同版本的内核源码编译不能用Ubuntu系统的内核源码。无需修改内核源码这种方式完全独立不用动内核目录的任何文件驱动代码放在任意目录都能编译若驱动依赖内核头文件如linux/i2c-dev.h内核源码会自动提供无需额外拷贝。编译工具链匹配必须用和内核编译相同的交叉编译器比如内核用arm-linux-gnueabihf-gcc 7.5驱动也得用这个版本。三、常见误区澄清“必须放内核目录”是错的只有要把驱动合入内核主线时才需要普通开发完全不用“任意目录编译”的前提内核源码必须提前配置make defconfig/make menuconfig并编译过至少编译出vmlinux否则会缺少头文件和编译依赖.ko的安装编译好的.ko无需放到内核目录直接拷贝到开发板任意目录如/lib/modules/$(uname -r)/extra/执行insmod aht20.ko即可加载。总结无需把驱动代码放到内核特定目录编译独立目录自定义Makefile是嵌入式驱动开发的标准做法核心是Makefile中指定正确的内核源码路径保证内核版本、工具链和开发板匹配对你的AHT20/PCF8574驱动开发直接在自己的工作目录如~/drivers/创建代码和Makefile编译即可完全不用动内核源码目录。
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

深州网站wordpress自动采集外链

UniHacker是一款革命性的开源工具,专为跨平台Unity开发者设计,能够完美解锁所有主流Unity版本和UnityHub,让用户无需购买昂贵许可证即可享受完整功能。 【免费下载链接】UniHacker 为Windows、MacOS、Linux和Docker修补所有版本的Unity3D和Un…

张小明 2025/12/29 4:31:47 网站建设

网站指定关键词优化wordpress 分割线

前言 要说当下研发领域最热门的几个词,全链路压测 肯定跑不了。最近的几次大会上,也有不少关于全链路的议题。之前有朋友在面试过程中也有被问到了什么是全链路压测,如何有效的开展全链路压测。今天我们就来聊聊全链路压测,但本文…

张小明 2025/12/29 4:31:51 网站建设

运营商做网站营销型网站建设应该考虑哪些因素

手把手教你安装配置mink:机器人逆运动学的终极解决方案 【免费下载链接】mink Python inverse kinematics based on MuJoCo 项目地址: https://gitcode.com/gh_mirrors/min/mink 你是不是对机器人控制充满好奇?想要让机械臂按照你的想法精准运动&…

张小明 2026/1/4 13:03:26 网站建设

网站开发新型技术设计logo网站 生成器

Softmax函数在ACE-Step音符选择机制中的作用机制详解 在AI生成音乐逐渐从实验室走向大众创作工具的今天,一个看似简单的数学函数——Softmax,正悄然决定着旋律是否动听、节奏是否自然。它不像Transformer或扩散模型那样引人注目,却像一位幕后…

张小明 2026/1/9 19:09:02 网站建设