设备驱动框架4——将驱动集成到内核中

以下内容源于朱有鹏嵌入式课程的学习与整理,如有侵权请告知删除。

驱动集成到内核的概念

驱动开发的步骤一般是:

(1)以模块的形式在内核外部编写与调试

(2)将调试好的驱动代码集成到kernel中

之前我们编写的驱动代码都是以模块的形式进行安装与卸载(自己写Makefile进行编译),这样可以方便调试与开发。

如果驱动代码的功能确认无误后,可以将驱动代码集成到kernel中,然后在内核配置阶段决定如何编译,这样有利于集成。

比如DM9000已经集成在内核中了,可以在menuconfig时配置。

将驱动集成到内核的步骤

步骤关键点:Kconfig、Makefile、make menuconfig。

以下步骤在/home/xjh/iot/embedded_basic/kernel/x210_kernel中进行。

步骤一:将写好的驱动源文件放入内核源码中正确的目录下。

比如把这次编写的LED驱动 leds-s5pv210.c 放在/drivers/leds/目录中。

步骤二:在/drivers/leds/目录的Makefile中添加相应的依赖。

obj-$(CONFIG_LEDS_DELL_NETBOOKS)	+= dell-led.o
obj-$(CONFIG_LEDS_MC13783)		+= leds-mc13783.o# 添加下面这行内容
# CONFIG_LEDS_S5PV210 = y 表示集成到内核
# CONFIG_LEDS_S5PV210 = M 表示编译成模块
# CONFIG_LEDS_S5PV210 = N 表示不编译整个
0bj-$(CONFIG_LEDS_S5PV210)      += leds-s5pv210.o# LED SPI Drivers
obj-$(CONFIG_LEDS_DAC124S085)		+= leds-dac124s085.o

步骤三:在/drivers/leds/目录的Kconfig中添加相应的配置项。

因为make menuconfig的原理是读取Kconfig中的信息,这里要显示对应的配置项目,则需要添加相应内容。

comment "LED drivers"# 添加下面这个配置项目
config LEDS_S5PV210tristate "LED Support for s5pv210(x210)"helpThis option enables support for on-board LED drivers on x210.

步骤四:make menuconfig。

以y为示例,此时会被编译进去;若以M,则不会被编译进去,而是被编译成单独的模块;若以N,则不被编译。

选择y之后保存,在内核源码主目录的.config文件中会出现如下内容:

#
# LED drivers
#
CONFIG_LEDS_S5PV210=y
# CONFIG_LEDS_PCA9532 is not set
# CONFIG_LEDS_GPIO is not set
# CONFIG_LEDS_LP3944 is not set
# CONFIG_LEDS_PCA955X is not set

步骤五:编译与下载至开发板运行,测试结果。

[root@xjh ~]# cd /sys/class
[root@xjh class]# ls
backlight     i2c-adapter   misc          regulator     scsi_host  video4linux
bdi           i2c-dev       mmc_host      rfkill        sound      vtconsole
block         ieee80211     mtd           rtc           spi_master
firmware      input         net           s3c_bc        switch
gpio          lcd           power_supply  scsi_device   timed_output
graphics      leds          ppp           scsi_disk     tty
hidraw        mem           pvr           scsi_generic  vc
[root@xjh class]# cd leds/
[root@xjh leds]# ls  //开机就存在了
led1    led2    led3    mmc0::  mmc1::  mmc2::  mmc3::
[root@xjh leds]# cd led1
[root@xjh led1]# ls
brightness      max_brightness  power           subsystem       uevent
[root@xjh led1]# cat brightness 
255
[root@xjh led1]# echo 1 > brightness 
[   87.856381] s5pv210_led1_set
[root@xjh led1]# 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/461249.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

VirtualBox 虚拟机的网络设置

http://cnzhx.net/blog/virtualbox-vm-network-setting/ 注意:修改第一个网卡虚拟机,此处网络设置添加的是第二个网卡虚拟机??转载于:https://www.cnblogs.com/ztinass/p/3771225.html

[ios]UITableViewCell自适应高度 【转】

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { // 列寬 CGFloat contentWidth self.tableView.frame.size.width; // 用何種字體進行顯示 UIFont *font [UIFont systemFontOfSize:13]; // 該…

MYSQL存储磁盘创建vgcreate_【转】parted创建硬盘分区并创建LVM

目的:将两个三T的硬盘做成LVM(sdc,sdd)一、parted将硬盘进行分区:1)parted的命令方式Parted 命令分为两种模式:命令行模式和交互模式。1、命令行模式: parted [option] device [command] ,该模式可以直接在命令行下对磁盘进行分区…

Linux设备驱动模型1——设备驱动模型的简介与底层架构

以下内容源于朱有鹏嵌入式课程的学习与整理,如有侵权请告知删除。 一、linux设备驱动模型简介 1、设备驱动模型的含义 设备驱动模型主要体现为以下四个方面: (1)类class、总线bus、设备device、驱动driver 这四个概念分别对应着四…

例子简单说说C# ref和out

首写从这字段看 ref 就是引用的意思 out当然就是输出了public void getRefStr(ref string str) {str"hello 你好,你变成了Ref了" }public void getOutStr(out string outStr){outStr "hello 你好,你是out输出的值";} protected…

VARIANT变体类型数据

2019独角兽企业重金招聘Python工程师标准>>> 特殊 Variant 是一种特殊的数据类型,除了定长String数据及用户定义类型外,可以包含任何种类的数据。Variant 也可以包含Empty、Error、Nothing及Null等特殊值。可以用VarType函数或TypeName函数来…

mysql修改校对集_MySQL 图文详细教程之校对集问题

软件安装:装机软件必备包SQL是Structured Query Language(结构化查询语言)的缩写。SQL是专为数据库而建立的操作命令集,是一种功能齐全的数据库语言。在使用它时,只需要发出“做什么”的命令,“怎么做”是不用使用者考虑的。SQL功…

Linux设备驱动模型2——总线式设备驱动组织方式(总线、设备、驱动、类等结构体)

以下内容源于朱有鹏嵌入式课程的学习与整理,如有侵权请告知删除。 参考 Linux总线设备驱动模型的理解 struct class 和 struct class_device 前言 这里说的“总线式”,包括I2C总线等具体物理总线,以及平台总线这个虚拟总线。 rootubuntu:/sy…

C# winform 魔兽MH全图制作教程(1): 开发准备工作

C# winform 魔兽MH全图制作教程(1): 开发准备工作 一、开发条件: Visual Studio 2008win xp,win 7,win 2003.C# 语言基础会调试能够运行游戏:《魔兽争霸3冰封王座》拥有版本魔兽客户端版本切换器1.20E,1.24E,1.24D二、设计思路&am…

从常识看中国经济社会-再续之续:套利

2019独角兽企业重金招聘Python工程师标准>>> 《全球化掠夺》提及财富流转的路径,世界仍旧是个丛林,每个人、每个族群都在争夺自己的利益。在一个经济体的内部,财富是垂直流动的;在全球化的经济体中,财富是纵…

python 面向对象编程简称_Python基础-面向对象编程

简介三中编程范式面向过程编程函数式编程面向对象编程面向对象和面向过程对比面向过程优点:性能比面向对象高,因为类调用时需要实例化,开销比较大,比较消耗资源;比如单片机、嵌入式开发、Linux/Unix等一般采用面向过程开发&#x…

Linux设备驱动模型3——平台总线的工作原理

以下内容源于朱有鹏嵌入式课程的学习与整理,如有侵权请告知删除。 一、平台总线的简介 1、平台总线的简介 (1)平台总线属于总线中的一种,相对于usb、pci、i2c等物理总线来说,平台总线是虚拟的、抽象出来的。 &#xff…

MYSQL中的BlackHole引擎

MYSQL中的BlackHole引擎 http://blog.csdn.net/ylspirit/article/details/7234021 http://blog.chinaunix.net/uid-22646981-id-3271711.html MySQL在5.x系列提供了Blackhole引擎–“黑洞”. 其作用正如其名字一样:任何写入到此引擎的数据均会被丢弃掉,…

mysql备份到带库_RMAN备份恢复——备份到带库的性能

简单测试了一下rac环境通过RMAN备份到带库的功能。数据库:Oracle 10203 RAC for Solaris8带库:Quantum PX502备份软件:Veritas netbackup 6.0由于带库是502,因此包含两个控制器。也就是说,应该可以通过两个控制性并行写…

《DIY四轴飞行器》读书笔记1

内容整理于黄和悦的《DIY四轴飞行器》。 一、四轴飞行器概述 1、四轴飞行器的现状 (1)研究内容 多级协作,自主飞行倾斜;最优控制理论,飞行器自主飞行和避障;主要是飞控部分。 (2&#xff09…

脚本输出当前 “yyyy-MM-dd WeakDay Festval”

ylbtech-JavaScript: 脚本输出当前 “yyyy-MM-dd WeakDay Festval”脚本输出当前 “yyyy-MM-dd WeakDay Festval” 1.A,源代码(Source Code)-脚本输出当前 “yyyy-MM-dd WeakDay Festval”返回顶部 <SCRIPT languagejavascript> <!--calendar new Date();day cal…

SecureCRT密钥远程登录Linux

一&#xff1a;环境SecureCRT版本&#xff1a;SecureCRT_5.1.3linux版本&#xff1a;[rootangelT ~]# cat /etc/redhat-release CentOS release 6.4 (Final)[rootangelT ~]# uname -r2.6.32-358.el6.x86_64linux系统的sshd_config配置文件是默认的&#xff0c;没有任何的修改。…

源码安装mysql数据库_Linux下源码安装mysql数据库

1、 创建mysql安装目录&#xff1a;[rootlocalhost ~]#mkdir –pv /usr/local/mysql/2、 创建数据存放目录&#xff1a;[rootlocalhost ~]#mkdir –pv /data/mysql/3、 创建用户和用户组&#xff0c;并赋予数据存放目录权限&#xff1a;[rootlocalhost ~]#groupadd mysql[ro…

win10禁止数字签名

以下内容源于网络资源的学习与整理&#xff0c;如有侵权请告知删除。 1、点击通知&#xff0c;找到并进入“所有设置”。 2、在所有设置中找到并进入“更新和安全”。 3、找到恢复&#xff0c;点击“高级启动”下的“立即重启”&#xff0c;重启电脑。 4、重启后选择“疑难解…

信息采集-火车采集器

最近一位同事提出要采集alibaba上的公司信息&#xff0c;关键词是工业加湿器。 主管把任务分配给我后&#xff0c;推荐了一款软件&#xff0c;火车采集器&#xff08;真心不是做广告&#xff09;。 研究了两天&#xff0c;还算简单&#xff0c;除了正则表达式似懂非懂&#xff…