环境

Linux

内核升级

下载标准内核源码

链接选择合适的版本,我选择的是4.3.1。

创建一个文件夹 放入其中,解压。进入第二层目录。

执行make menuconfig,进入 Processor type and feature选项,回车进入Processor family选项,选择 Generic-x86-64保存退出。

make

make modules

make modules_install

make install

reboot

重启后uname -r查看新内核版本。

开始编写Hello World驱动程序

hello.c

#include /* 定义了一些相关的宏 */

#include /* 定义了模块需要的*/

static int hello_init(void)

{

printk(KERN_ALERT "Hello, world\n"); /* 打印hello World */

return 0;

}

static void hello_exit(void)

{

printk(KERN_ALERT "Goodbye, world\n"); /* 打印Goodbye,world */

}

module_init(hello_init); /* 指定模块加载函数 */

module_exit(hello_exit); /* 指定模块卸载函数 */

MODULE_LICENSE("Dual BSD/GPL");

Makefile

ifeq ($(KERNELRELEASE),)

# Assume the source tree is where the running kernel was built

# You should set KERNELDIR in the environment if it's elsewhere

KERNELDIR ?= /linux-2.6.29.4/linux-2.6.29.4

# The current directory is passed to sub-makes as argument

PWD := $(shell pwd)

modules:

$(MAKE) -C $(KERNELDIR) M=$(PWD) modules

modules_install:

$(MAKE) -C $(KERNELDIR) M=$(PWD) modules_install

clean:

rm -rf *.o *~ core .depend .*.cmd *.ko *.mod.c .tmp_versions

.PHONY: modules modules_install clean

else

# called from kernel build system: just declare what our modules are

obj-m := hello.o

endif

修改下KERNELDIR 路径就可以了。

insmod加载模块

insmod hello.ko

以上就是全部过程了=_=

linux更新驱动脚本,Linux 第一个驱动程序编写相关推荐

  1. linux更新驱动脚本,编写Linux驱动常见错误(不断更新)!

    工作中遇到的编写Linux驱动的常见错误和注意事项整理,将不断更新. 问题1.驱动的init函数声明错误 出错: [root@localhost]# insmod phyinfo.ko insmod: ...

  2. linux更新ssl脚本,linux升级OpenSSL,Centos的OpenSSL漏洞补丁

    升级openssl环境至openssl-1.0.2h 1.查看源版本 openssl version -a 2.下载openssl-1.0.2h.tar.gz wget https://www.ope ...

  3. Linux嵌入式驱动开发01——第一个驱动Hello World(附源码)

    文章目录 全系列传送门 引言 驱动介绍 Hello World 1. 包含头文件 2. 驱动模块的入口和出口 3. 声明信息 4. 功能实现 完整代码 编译 第一种方法 第二种方法 编译成模块 第一步 ...

  4. Linux 平台下PCI 接口视频采集卡的驱动程序编写技术

    转自http://publishblog.blogchina.com/blog/tb.b?diaryID=2424186 Linux 平台下PCI 接口视频采集卡的驱动程序编写技术 李根深 邢汉承 0 ...

  5. linux设备驱动模型-linux驱动开发第5部分-朱有鹏-专题视频课程

    linux设备驱动模型-linux驱动开发第5部分-4285人已学习 课程介绍         本课程是linux驱动开发的第5个课程,主要内容是linux的设备驱动模型,包括总线.类.设备.驱动等概 ...

  6. Linux设备驱动---OMAP3630 Linux I2C总线驱动分析(1)

    原文地址:http://blog.csdn.net/kellycan/article/details/6394737 1 Linux I2C驱动架构 Linux下I2C驱动的架构图如下: 图1.1 L ...

  7. 【翻译】【linux设备驱动】linux地址类型

    [翻译][linux设备驱动]linux地址类型 Linux中使用的地址类型列表: 用户虚拟地址(User virtual addresses) 用户空间程序可见的普通地址.用户虚拟地址的长度为32位 ...

  8. linux 占用内存 脚本,linux内存测试(占用)脚本

    内存测试脚本,有bug,继续更新中... #!/bin/bash ################################################################ # ...

  9. linux蜂鸣器驱动指令,linux蜂鸣器驱动 蜂鸣器--LINUX.doc

    linux蜂鸣器驱动 蜂鸣器--LINUX 导读:就爱阅读网友为您分享以下"蜂鸣器--LINUX"的资讯,希望对您有所帮助,感谢您对92的支持! //mux = 1/16 tcfg ...

最新文章

  1. php mvc实例下载,php实现简单的MVC框架实例
  2. arduino 呼吸灯_如何改善您的Arduino呼吸机:用于临时COVID-19呼吸机设计的RTS和SCS简介...
  3. onpostexecute 中更新adapter 事变_Spring面试中常见的9种设计模式!
  4. EOS账户系统(3)账户的权限
  5. Java并发编程之ConcurrentHashMap
  6. .net快速入门方法,转csdn
  7. HDU 4117 GRE Words
  8. HDFS的特性以及如何保证数据的一致性
  9. [jQuery原理] jQuery基本结构
  10. webservice使用EF生成的model序列化问题
  11. 备份redis服务并ftp上传(shell)
  12. Django外键关系:一对一、一对多,多对多
  13. JavaSE基础——网络编程
  14. python程序设计与算法基础教程微课版课后答案_Python程序设计与算法基础教程
  15. Python缩进问题:IndentationError:expectedan indented block
  16. Shawn,别让我们失望
  17. 如何查看本机flash版本
  18. 【2D多目标跟踪】Quasi-Dense Similarity Learning for Multiple Object Tracking阅读笔记
  19. matlab函数全能速查宝典 pdf,MATLAB函数全能速查宝典
  20. c语言输入三个身高输出最高,输入两个人的身高,计算并输出他们的平均身高.(身高以米为单位,最后结果保留两位小数)...

热门文章

  1. php项目电影院售票管理系统,电影院售票管理系统
  2. 方向盘左右能摇动_金澳小贴士——通过方向盘,竟能看出这些汽车故障!
  3. jsp中能循环div吗_中药面膜安全靠谱吗?
  4. html快照抓取,请教前端实现获取dom元素快照的方法
  5. UGUI字体不清楚——终极探索
  6. mysql _ 通配符_mysql查询中通配符的使用
  7. OpenShift 4 - DevSecOps Workshop (8) - 为Pipeline增加生成Image任务
  8. OpenShift 4 - 安装 OpenShift 集群后如何删除节点或增加新节点
  9. 搭建GraalVM环境
  10. UkrGuru.SqlJson非常适合您的ASP.NET Core Web应用程序!