当前位置:网站首页 > Go语言开发 > 正文

linux内核驱动开发(linux内核驱动开发教程)



  基于linux的驱动开发学习笔记,本篇是描述了一个字符驱动的基础开发流程,以便做嵌入式开发多年的应用或者系统学习驱动开发。

  笔者拥有硬件基础,单片机软硬基础,linux系统基础等各种,就是没有linux驱动框架基础,未做过linux系统移植和驱动移植开发了。所以补完linux系统移植和驱动开发就基本可以打通嵌入式整套流程了,作为技术leader不一定亲自动手做,但是一定要对产品构架中的每一块业务和技术要基本清楚。

  建议参考xun为的视频教程,教程整个过程非常清晰,直接给拥有很多知识基础的资深研发,可以不陷入某山的固有思维误区,也不用imx6的太过庞从汇报理解大而冗余,它能直接以最终实现目标为目的,不用从什么裸机开始做开发学习,怎么做也告诉你为什么都交代清楚,再结合多年相关从业工作经验,说实在的,一通百通可以融会贯通。从业多年,第一次推荐,因为确实真的是好东西。

  包含宏定义的头文件init.h,是一些初始化和宏头文件,一些module_init,module_exit等。

  包含了初始化加载模块的头文件

  module_init()和module_exit()入口和出口宏。(PS:这里括号内实际上需要填入入口出口函数,后续再填入)

  告诉内核,本模块驱动有开源许可证。

  入口函数

  出口函数

  此时可以修改,步骤二的出口入口宏了

  内核在哪,实际路径在哪

  编译驱动之前有几点要注意:

  与驱动编译成的目标系统,获取对应的内核且需要编译通过。

  修改构架后,可使用menu configure查看标题栏的内核构架

  找到使用的arm编译器(实际为arm-linux-gnueabihf-gcc,取gcc前缀)

  直接输入make,编译驱动,会生成hellowold.ko文件,ko文件就是编译好的驱动模块。

  将驱动拷贝到开发板或者目标系统,然后使用加载指令:

  会打印入口加载的printk输出。

  可以查看到加载的驱动模块

  可以移除指定驱动模块(PS:卸载驱动不需要.ko后缀),卸载成功会打印之前的printk输出。

  学习了驱动的基础框架,那么为了方便很好的测试,让大家都有基础环境,下一篇,将使用ubuntu18.04,编译ubuntu18.04的驱动,然后做好本篇文章的相关实战测试。

到此这篇linux内核驱动开发(linux内核驱动开发教程)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!

版权声明


相关文章:

  • 苹果开发者账号个人注册不了(苹果开发者账号个人注册不了吗)2025-04-09 10:18:05
  • 源代码开发网站(源代码的网站)2025-04-09 10:18:05
  • 预训练语言模型(预训练语言模型的前世今生)2025-04-09 10:18:05
  • linux驱动开发面试题(linux 驱动 面试)2025-04-09 10:18:05
  • 嵌入式驱动开发前景如何(嵌入式驱动开发就业前景)2025-04-09 10:18:05
  • linux内核驱动开发(linux内核驱动开发中使用的地址是)2025-04-09 10:18:05
  • 行为驱动开发的特点(行为驱动开发的特点有哪些)2025-04-09 10:18:05
  • polowalk(polowalk的logo)2025-04-09 10:18:05
  • vs2010怎么创建c语言项目(vs2010怎么创建c程序)2025-04-09 10:18:05
  • argos是什么意思(argus是什么意思)2025-04-09 10:18:05
  • 全屏图片