linux更新驱动脚本,Linux 第一个驱动程序编写
环境
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 第一个驱动程序编写相关推荐
- linux更新驱动脚本,编写Linux驱动常见错误(不断更新)!
工作中遇到的编写Linux驱动的常见错误和注意事项整理,将不断更新. 问题1.驱动的init函数声明错误 出错: [root@localhost]# insmod phyinfo.ko insmod: ...
- 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 ...
- Linux嵌入式驱动开发01——第一个驱动Hello World(附源码)
文章目录 全系列传送门 引言 驱动介绍 Hello World 1. 包含头文件 2. 驱动模块的入口和出口 3. 声明信息 4. 功能实现 完整代码 编译 第一种方法 第二种方法 编译成模块 第一步 ...
- Linux 平台下PCI 接口视频采集卡的驱动程序编写技术
转自http://publishblog.blogchina.com/blog/tb.b?diaryID=2424186 Linux 平台下PCI 接口视频采集卡的驱动程序编写技术 李根深 邢汉承 0 ...
- linux设备驱动模型-linux驱动开发第5部分-朱有鹏-专题视频课程
linux设备驱动模型-linux驱动开发第5部分-4285人已学习 课程介绍 本课程是linux驱动开发的第5个课程,主要内容是linux的设备驱动模型,包括总线.类.设备.驱动等概 ...
- Linux设备驱动---OMAP3630 Linux I2C总线驱动分析(1)
原文地址:http://blog.csdn.net/kellycan/article/details/6394737 1 Linux I2C驱动架构 Linux下I2C驱动的架构图如下: 图1.1 L ...
- 【翻译】【linux设备驱动】linux地址类型
[翻译][linux设备驱动]linux地址类型 Linux中使用的地址类型列表: 用户虚拟地址(User virtual addresses) 用户空间程序可见的普通地址.用户虚拟地址的长度为32位 ...
- linux 占用内存 脚本,linux内存测试(占用)脚本
内存测试脚本,有bug,继续更新中... #!/bin/bash ################################################################ # ...
- linux蜂鸣器驱动指令,linux蜂鸣器驱动 蜂鸣器--LINUX.doc
linux蜂鸣器驱动 蜂鸣器--LINUX 导读:就爱阅读网友为您分享以下"蜂鸣器--LINUX"的资讯,希望对您有所帮助,感谢您对92的支持! //mux = 1/16 tcfg ...
最新文章
- php mvc实例下载,php实现简单的MVC框架实例
- arduino 呼吸灯_如何改善您的Arduino呼吸机:用于临时COVID-19呼吸机设计的RTS和SCS简介...
- onpostexecute 中更新adapter 事变_Spring面试中常见的9种设计模式!
- EOS账户系统(3)账户的权限
- Java并发编程之ConcurrentHashMap
- .net快速入门方法,转csdn
- HDU 4117 GRE Words
- HDFS的特性以及如何保证数据的一致性
- [jQuery原理] jQuery基本结构
- webservice使用EF生成的model序列化问题
- 备份redis服务并ftp上传(shell)
- Django外键关系:一对一、一对多,多对多
- JavaSE基础——网络编程
- python程序设计与算法基础教程微课版课后答案_Python程序设计与算法基础教程
- Python缩进问题:IndentationError:expectedan indented block
- Shawn,别让我们失望
- 如何查看本机flash版本
- 【2D多目标跟踪】Quasi-Dense Similarity Learning for Multiple Object Tracking阅读笔记
- matlab函数全能速查宝典 pdf,MATLAB函数全能速查宝典
- c语言输入三个身高输出最高,输入两个人的身高,计算并输出他们的平均身高.(身高以米为单位,最后结果保留两位小数)...
热门文章
- php项目电影院售票管理系统,电影院售票管理系统
- 方向盘左右能摇动_金澳小贴士——通过方向盘,竟能看出这些汽车故障!
- jsp中能循环div吗_中药面膜安全靠谱吗?
- html快照抓取,请教前端实现获取dom元素快照的方法
- UGUI字体不清楚——终极探索
- mysql _ 通配符_mysql查询中通配符的使用
- OpenShift 4 - DevSecOps Workshop (8) - 为Pipeline增加生成Image任务
- OpenShift 4 - 安装 OpenShift 集群后如何删除节点或增加新节点
- 搭建GraalVM环境
- UkrGuru.SqlJson非常适合您的ASP.NET Core Web应用程序!