开发板上使用GPIO向电磁继电器发送高低电平控制台灯亮灭(我的第一个linux驱动程序开发)

本文介绍了作者初次尝试Linux驱动开发,通过GPIO接口控制电磁继电器来开关台灯的过程。详细讲解了如何编写和编译驱动程序,以及驱动加载和卸载的步骤。此外,还提供了测试驱动的应用程序代码,展示了如何操作设备文件控制GPIO接口。
摘要由CSDN通过智能技术生成

开发板:tiny6410

虚拟机:Fedora 9


本驱动程序是根据tiny6410 开发文档中LED灯驱动程序改写,由于第一次接触驱动程序开发,第一次这么直接的操作硬件, 所以难免会有不准确的地方,希望大家见谅。

首先我来补充一下,驱动程序开发的基础知识。其实也是在开发这个驱动程序时新学的,看的书是北京航空航天大学出版社郑灵翔主编的《嵌入式接口技术与linux驱动程序开发》,似乎写的还不错,暂时我只看了一丢丢。

Linux中设备都是以文件的形式管理的,虽然挺难理解,但是现在就先有这个概念吧,操作一个字符设备,就当做是操作一个/root/目录下的一个普通文件吧(例如hello.c),手写操作hello.c,我们需要打开这个文件,当然字符设备不会像hello.c一样,双击就能打开,稍微有点Linux基础的人都知道,宏观上任何一个动作,实际上都是以命令的形式发送的,至于windows中双击打开一个文件,实际底层实现时也是通过向内核发命令实现的。好了,这就不多说了,在Linux中打开一个字符设备,是通过open函数来实现的。驱动程序的编译分为两种,一种是被编译为动态可加载的内核模块,通过insmod、rmmod命令加载和移除,一般我们采用这种方法。因为编译成内核模块还的重写烧写BIOS,不利于驱动程序的调试。 tiny6410开发文档中使用的是modprobe加载,两者有一定区别,大家可以百度一下,另一种是被静态编译至内核,这样每次使用时就不用自己挂载了。系统启动(实际是内核初始化)时,自动加载驱动。

在Linux2.6之后内核编译引入了kbuild,将外部内核模块的编译同内核源码树的编译统一起来。在内核源码树中的模块编译与对应目录下的Kconfig文件和Makefile文件有关。其中,分布在内核源码树各个子目录中的Kconfig文件将构成了一个分布式的内核配置数据库,描述了内核配置菜单项的所有内容,每个Kconfig文件分别描述了所属目录源文件相关的内核配置菜单项。在用户运行内核配置命令进行内核配置时,内核配置命令从各个Kconfig文件中读出内核配置菜单项,并将配置菜单显示给用户。用户配置完内核后,其所选的内核配置被存入选项配置文件“.config”中,它在内核编译时被读入Makefile,作为相应菜单项的配置变量,成为Makefile的一部分。(不是太理解???没关系,自己按着开发文档中编译内核驱动的步骤做一遍,再来理解这句话,就能看懂了。通常任何一个语言、任何一向东西的入门都

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值