手把手教你写第一个Linux驱动程序

说到写第一个linux内核驱动程序,再简单不过了。以前也写过,这次将做一个图形化的整理。

我这里以我的开发环境tiny4412为主,我将在这上面写第一个驱动程序。

首先,我在driver/目录下创建yangyx目录,

在目录下新建一个hello.c和一个Makefile

hello.c内容如下:

hello.c包含的头文件就类似咱们写标准C一样的头文件。

驱动程序__init ,加上这个,程序在编译的过程中会标识__init段,以此对程序进行优化处理,在这里我们实现了一个打印语句。

Makefile内容如下:

然后,回到上一级,也就是driver目录下,打开driver目录下的Makefile

添加该目录的信息:obj-y  yangyx/

注意这里一定要加 / 

然后回到kernel主目录,执行make

编译中最顶层Makefile会根据Makefile编译体系包含我们在driver目录下和yangyx目录下的Makefile,实现级联编译。

编译完成后在yangyx目录下会生成:

我们就可以将以下的zImage下载到开发板上去看是否已经加载了这个驱动程序:

程序我已经验证过了,这里就不再验证,其它平台也是雷同。

时间: 2024-10-27 06:09:29

手把手教你写第一个Linux驱动程序的相关文章

手把手教你写回调函数

                                        手把手教你写回调函数       手把手教你写回调函数源代码   回调函数的主要功能就是提供统一的接口以及事件的通知.如果你是从事middleware,框架,提供API编程的,那么你肯定少不了要使用回调函数. 所谓提供统一接口或者事件的通知即:当发生某一事件或者出现某一个状态之后必定会进行某种操作.但是这个操作又不能写死,不同的环境不同的程序会有不同的实现,也就是说提供接口的人不想把逻辑写死,而是由调用接口的人来实现

比较详细的手把手教你写批处理(willsort题注版)第1/5页_DOS/BAT

另,建议Climbing兄取文不用拘泥于国内,此类技术文章,内外水平相差极大:与其修正国内只言片语,不如翻译国外优秀著述. -------------------------------------------------------- 标题:手把手教你写批处理-批处理的介绍 作者:佚名 编者:Climbing 题注:willsort 日期:2004-09-21 -------------------------------------------------------- 批处理的介绍 扩展名

手把手教你配置一台Linux虚拟机_Linux

手把手教你配置一台Linux虚拟机 前言: Linux distribution 越来越多,也越来越成熟,所以安装起来也是比较简单,但是要理解安装的每一个步骤还是需要对Linux的基础知识有一定的了解,不过不用很深入,如果很深入我也不会.这里我选择的安装方式都是最简单的,在磁盘分区最重要的步骤也是以最简单的方式分区. 本次Linux配置的目的不是作为商业用途,而是在于新手熟悉Linux的操作系统,使新手能自己在本地配置Linux系统. 选择distrubution版本,因为我们是把Linux作为

手把手教你写Linux设备驱动---input子系统(三)--电容屏事件坐标读取(基于友善之臂4412开发板)

前面我们学习了鼠标是如何如何通过应用程序来读取事件和坐标值的,后面也写了一个简单的input系统的按键驱动程序. 博文如下,讲的内容非常清楚,给小白来入手当然是非常容易的: http://blog.csdn.net/morixinguan/article/details/69808832 这节,我们来学习一下触摸屏事件获取,然后上一个基于4412开发板ft5x0x型号的x,y坐标值读取,后面我们将从零开始实现这款触摸屏的驱动程序: 首先,我们要明白一个概念,触摸屏在input系统中是一类什么事件

手把手教你写Linux设备驱动---中断(二)--tasklet实现(基于友善之臂4412开发板)

上节:http://blog.csdn.net/morixinguan/article/details/68958185 在上一节博文中,教会了大家如何来写一个Linux设备的中断程序,实现也非常简单,我们来回顾一下具体的操作流程,只要遵循以下几个步骤即可实现最简单的中断处理程序: 使用中断相关的API和定义时要包含以下头文件: #include <linux/interrupt.h> 然后写中断需要以下步骤 1.申请中断号 使用gpio_to_irq函数,可以从返回值获取到对应的中断号 2.

手把手教你写Kconfig---基于tiny4412开发板

今天,我就来教大家写写最简单的Kconfig,什么是Kconfig? 我们配置过的信息最终会在这以下的两个文件中找到. 这个文件会被.c包含 include/generated/autoconf.h  这个autoconf.h中对应的就是一些宏,打开看看就明白了  这个文件根据.config生成,而.config是根据make menuconfig来进行生成,内核中的makefile包含了这个文件inlcude/config/auto.conf    简单的说吧,它是一个Linux驱动的配置文件

手把手教你从零实现Linux misc设备驱动二(基于友善之臂4412开发板)

上一节,我教大家实现了一个最简单的MISC设备驱动,那么这节,我们将用一个实例来驱动蜂鸣器,这里为了方便,我就不再写应用程序进行测试,直接在驱动里调用open函数,这个程序是在Android系统里跑起来,后面我会教大家如何在Android下写应用测试程序. 我们参考以前写的蜂鸣器驱动程序,将它移植到我们这个程序里,让它成为一个MISC设备. 参考以前写的文章: http://blog.csdn.net/morixinguan/article/details/50628588 接下来,看看代码:

【云计算的1024种玩法】手把手教你如何编译一个高性能 OpenResty

介绍 本教程将介绍如何一步一步手动编译 OpenResty,OpenResty 是一个基于 Nginx 与 Lua 的高性能 Web 平台,拥有非常好的拓展性让服务器发挥更好性能.教程中将全部依赖 Linux 发行版组建中的依赖,而免除编译带来的后期维护成本. OpenResty 的额外拓展: OpenSSL 1.1.0,提供 ALPN 支持,支持 HTTP/2 Nginx-CT,透明证书提高 HTTPS 网站的安全性和浏览器支持 ngx_PageSpeed,Google 家的网站性能优化工具

手把手教你写Kconfig---基于tiny4412开发板(增强版)

Kconfig怎么写的在上节就已经教大家写了. 这节我们来写写增强版的,因为Kconfig有太多太多可以配置的,所以这里我就不给出图片演示了,请参考上节的文章,再来看这节大家就会大彻大悟,然后自己去尝试吧. 基本上最常见的配置就是以下的这些. 文章链接如下: http://blog.csdn.net/morixinguan/article/details/54744237 在make menuconfig添加Kconfig配置简单的选项有很多的Kconfig组成./scripts/Kconfig