文档章节

[教程]如何编译单个驱动文件

cubieboard
 cubieboard
发布于 2014/07/11 17:06
字数 996
阅读 117
收藏 0

你是不是经常会缺某个驱动,但是又觉得全部编译太费时间了?试试单个模块编译吧。
如果过程中提示 xxx Not found的话,那么你缺什么就apt-get来装什么(我是linaro+debian源,debian源可以参照此贴配置)。
废话少说,进入正题:
1.首先你要有全部源码,这是必须的,从github下载源码(很漫长。。)
git clone git://github.com/linux-sunxi/linux-sunxi.git
或者下载zip打包的(依然漫长..) 注意选你的内核版本对应的版本,我的是3.0.**
未命名.jpg 

比如我下载到目录 /home/lany/workspace/linux-sunxi
如果是交叉编译,请先执行:
export ARCH=arm
export CROSS_COMPILE=arm-linux-gnueabihf-


2.  进入这个目录,创建配置文件,cubieboard可以使用 sun4i_defconfig 这个配置
cd /home/lany/workspace/linux-sunxi
make sun4i_defconfig 


生成了默认配置的.config之后,你再去.config里把你要的驱动的配置项给开启(可以vi直接编辑.config或者使用make menuconfig图像界面来配置),我这里以sun4i_gpio这个驱动做列子:
vi ./.config
/GPIO
  #按/键 输入GPIO 回车 (即搜索GPIO这个词语)
将你找到的GPIO配置那一行改为CONFIG_SUN4I_GPIO_UGLY=m  
未命名.jpg 
然后保存退出
#注意,如果你是编译其他稍微复杂一点的驱动,比如gpu里的几个驱动,他们存在依赖关系,建议使用make menuconfig来配置

3.保存之后,让他准备一下:
make prepare 
make scripts


4.现在我们进入要编译的驱动的源码目录,比如sun4i-gpio.c在 drivers/misc 目录下:
cd  /home/lany/workspace/linux-sunxi/drivers/misc/
make -C /home/lany/workspace/linux-sunxi/ M=`pwd` modules

未命名.jpg 
#-C后面是你下载的内核源码的目录 M=`pwd` 表示指定要编译的模块目录为当前目录
先看看编译出来的驱动的版本是否和你系统相同,如果不相同是无法使用的:
modinfo /home/lany/workspace/linux-sunxi/drivers/misc/sun4i-gpio.ko
输出:
filename:       /home/lany/workspace/linux-sunxi/drivers/misc/sun4i-gpio.ko
license:        GPL
author:         Tom Cubie
description:    a simple sun4i_gpio driver
depends:
vermagic:       3.0.57+ mod_unload modversions ARMv7

可以看到版本是3.0.57+ mod_unload modversions ARMv7,我的系统版本就是3.0.57+,如果不是,你需要将源码checkout到你对应的版本的分支再编译,或者直接完整编译,把系统内核uImage换成新的(不过这样你的其他驱动都得换)
如果3.0.57+和mod_unload之间还有其他字符,你就要看看你系统里正在使用的其他驱动是不是也有这个字符,如果对不上是无法使用的。

5.如果没问题,那么直接将sun4i-gpio.ko复制到/lib/modules/(你的内核版本)/kernel/drivers/misc/ 下 (即该驱动应该在的位置,而不是所有驱动都往这里放哦)
然后insmod /lib/modules/(你的内核版本)/kernel/drivers/misc/sun4i-gpio.ko
如果没有报错,那么恭喜你,已经加载成功,可以使用命令:lsmod 查看。如果有报错,输入命令:dmesg|tail   查看详细的报错信息。然后再去google(一般都不好解决,遇到这种情况,还是把内核和所有驱动都换了吧)
如果是报这个错:

  1. <3>sun4i_gpio_init script_parser_fetch "gpio_para" "gpio_used" error

  2. [  607.040000] sun4i_gpio_init script_parser_fetch "gpio_para" "gpio_used" error

  3. insmod: error inserting 'sun4i-gpio.ko': -1 Interrupted system call

复制代码

那是你没有设置script.bin里的gpio_para配置,设置后再insmod就OK


6.如果加载好驱动测试能够正常使用,而你每次启动系统都需要他,那么你可以把它加入到开机自加载模块里:
depmod -a
vi /etc/modules
未命名.jpg 
保存退出,注意:对于某些有依赖的驱动,需要注意先后顺序哦

教程完毕。祝大家折腾愉快~


原文作者:WindLand
原文链接:http://forum.cubietech.com/forum ... st%3D1%26digest%3D1

本文转载自:http://forum.cubietech.com/forum ... st%3D1%26digest%3D1​

cubieboard
粉丝 11
博文 64
码字总数 2651
作品 1
珠海
私信 提问
[教程]如何编译单个驱动文件

你是不是经常会缺某个驱动,但是又觉得全部编译太费时间了?试试单个模块编译吧。 如果过程中提示 xxx Not found的话,那么你缺什么就apt-get来装什么(我是linaro+debian源,debian源可以参照...

cubieboard
2014/07/11
1
0
菜鸟之驱动开发1

在之前一篇文章里介绍驱动开发环境搭建过程,现在就开始写驱动了。我是照着郁金香的视频教程学习驱动开发的。那驱动有些课时比较多余,我在学习的过程当中会终合考虑合并一些课时。今天这一课...

长平狐
2012/08/13
384
0
嵌入式开发板的学习步骤-基于iTOP-4412开发板

转自:http://www.topeetboard.com 本文主要介绍嵌入式开发板技术的学习步骤。 嵌入式技术的知识面非常广,学起来往往不知道如何下手,那么嵌入式技术应该从哪里开始学起,以及按照什么样的步...

歌之王子殿下
2016/05/06
372
0
NVIDIA Jetson TX2内核添加CP210x串口驱动

链接:NVIDIA Jetson TX2内核添加CP210x串口驱动 说明:本文是为版本编译内核的。如果内核版本是可移步这篇文章: 编译 L4T 28.1,二者的步骤几乎是一样的。 最近在下做项目,遇到了一个问题...

qq_38880380
2017/12/13
0
0
如何检查多个远程 Linux 系统是否打开了指定端口?

我们最近写了一篇文章关于如何检查远程 Linux 服务器是否打开指定端口。它能帮助你检查单个服务器。 如果要检查五个服务器有没有问题,可以使用以下任何一个命令,如 (netcat)、 和 。但是...

作者: Magesh Maruthamuthu
04/22
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Java 文件类操作API与IO编程基础知识

阅读目录: https://www.w3cschool.cn/java/java-io-file.html Java 文件 Java 文件 Java 文件操作 Java 输入流 Java 输入流 Java 文件输入流 Java 缓冲输入流 Java 推回输入流 Java 数据输入...

boonya
38分钟前
5
0
SDKMAN推荐一个好

是在大多数基于Unix的系统上管理多个软件开发工具包的并行版本的工具。它提供了一个方便的命令行界面(CLI)和API来安装,切换,删除和列出sdk相关信息。以下是一些特性: By Developers, fo...

hotsmile
今天
9
0
什么是 HDFS

是什么? HDFS 是基于 Java 的分布式文件系统,允许您在 Hadoop 集群中的多个节点上存储大量数据。 起源: 单机容量往往无法存储大量数据,需要跨机器存储。统一管理分布在集群上的文件系统称...

Garphy
今天
5
0
一起来学Java8(四)——复合Lambda

在一起来学Java8(二)——Lambda表达式中我们学习了Lambda表达式的基本用法,现在来了解下复合Lambda。 Lambda表达式的的书写离不开函数式接口,复合Lambda的意思是在使用Lambda表达式实现函...

猿敲月下码
今天
11
0
debian10使用putty配置交换机console口

前言:Linux的推广普及,需要配合解决实际应用方能有成效! 最近强迫自己用linux进行实际工作,过程很痛苦,还好通过网络一一解决,感谢各位无私网友博客的帮助! 系统:debian10 桌面:xfc...

W_Lu
今天
12
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部