[嵌入式开发板]iTOP-4412以模块的方式编译驱动
本文转自迅为:http://www.topeetboard.com
大家好,本章节我们将向大家讲解如何在 linux 下实现以模块的方式加载内核驱动。我们以内核里面蜂鸣器的
驱动为例来讲解。
1)首先打开内核的源码,如下图所示:
2)使用命令“cd drivers/char/” ,进入到蜂鸣器驱动所在的目录,如下图所示:
3)然后使用命令“vi Kconfig”打开当前目录下的内核配置文件,如下图所示:
4)然后找到“config BUZZER_CTL”所在的位置,如下图所示:
5)然后把“bool "Enable BUZZER config"“一行改成”tristate "Enable BUZZER config"“,如下图所示:
6)然后保存并退出,如下图所示:
7)然后回到内核源码的根目录下,如下图所示:
8)然后输入命令”make menuconfig“配置内核,如下图所示:
9)选择” Device Drivers “->"Character devices"->"Enable BUZZER config",如下图所示:
10)然后把” Enable BUZZER config “左边的”*“改成”M“,如下图所示:
11)然后保存并退出配置界面,如下图:
12)然后使用命令” vi arch/arm/mach-exynos/mach-itop4412.c“打开 mach-itop4412.c,如下图所示:
13)然后找到” struct platform_device s3c_device_buzzer_ctl “一行,如下图所示:
14)把这一行前面的” #ifdef CONFIG_BUZZER_CTL“改成”#if defined(CONFIG_BUZZER_CTL) ||
defined(CONFIG_BUZZER_CTL_MODULE) “,如下图所示:
15)然后找到” &s3c_device_buzzer_ctl“一行,如下图所示:
16)把这一行前面的” #ifdef CONFIG_BUZZER_CTL“改成”#if defined(CONFIG_BUZZER_CTL) ||
defined(CONFIG_BUZZER_CTL_MODULE) “,如下图所示:
17)然后保存并退出,返回到 linux 内核源码的根目录下,如下图所示:
18)然后输入命令”make“,开始编译内核,如下图所示:
19)编译完成后会在内核的” arch/arm/boot“目录下生成镜像文件”zImage“,如下图所示:
20)在内核的” drivers/char“目录下生成了蜂鸣器的驱动模块” itop4412_buzzer.ko“,如下图所示:
21)下一步我们烧写生成的 zImage 到开发板上,然后开发板启动进入到 android 系统。
22)然后通过 adb 把蜂鸣器的驱动模块传到开发板的"/data"目录下,如下图所示:
23)然后再串口输入命令”cd /data“,进入到开发板的"/data"目录,如下图所示:
24)然后输入”ls“命令,可以看到通过 adb 传过来的蜂鸣器驱动模块” itop4412_buzzer.ko “,如下图
所示:
25)接着在串口输入命令” insmod itop4412_buzzer.ko “,加载蜂鸣器的驱动,如下图所示:
26)通过上图可以看到蜂鸣器的驱动已经加载到内核里面了,接着输入命令“cd /dev” ,如下图所示:
27) 通过上面的图片, 可以看到生成了“ buzzer_ctl” 蜂鸣器的节点了 ,我们需要输入“ chmod 777 buzzer_ctl”
命令来修改下 buzzer_ctl 的权限,如下图所示:
28)然后我们可以使用 android 自带的蜂鸣器小程序来控制蜂鸣器了,至此以模块的方式加载驱动就完成了。
上面我们的驱动是放在了内核源码的目录下来实现的编译成驱动模块,很多时候我们都是拿到一个驱动源码,
不需要把他放到内核源码里面,而是直接把他编译成驱动模块,下面我们来讲下实现方法,我们还是以蜂鸣器
的驱动为例来讲解。
1) 因为开发板带的内核默认是把蜂鸣器直接编译到内核里面了, 所以我们要重复前边的步骤 “1” 到步骤 “19” ,
完成这些步骤以后,把生成的镜像“zImage”烧写到开发板。
2)然后在虚拟机的目录下用命令 mkdir 建立文件夹“module” ,如下图所示:
3)然后用命令 cd 进入到建立的“module”文件夹,如下图所示:
4)拷贝内核里面的蜂鸣器驱动到 module 文件夹,如下图所示:
5)然后在 module 文件夹建立文件“Makefile” ,如下图所示:
6)然后在"Makefile"文件输入下面的信息:
obj-m += itop4412_buzzer.o
KDIR := /home/broswer/iTop4412_Kernel_3.0
PWD = $(shell pwd)
all:
make -C $(KDIR) M=$(PWD) modules
clean:
rm -rf *.o
其中的“KDIR := /home/broswer/iTop4412_Kernel_3.0"是指定我们内核源码所在的目录,我这里内核源码
是放在了” /home/broswer/“目录下面,需要根据自己的存放位置来修改这个地方
7)然后保存并退出 Makefile,在终端输入”make“命令,编译蜂鸣器驱动,如下图所示:
8)编译完成后,可以看下在”module“文件夹下面生成了” itop4412_buzzer.ko“,如下图所示:
9)然后可以参照前面的步骤”22“来测试我们编译的蜂鸣器驱动了。
[嵌入式开发板]iTOP-4412以模块的方式编译驱动的更多相关文章
- 【4412嵌入式开发板学习笔记】认识uboot
转自迅为讨论群:http://www.topeetboard.com 重要说明:这份笔记不是4412开发配套的,是我在网上看视频的时候下载上课老师的笔记后修改的.所以我试了一下笔记上的uboot命令, ...
- ARM嵌入式开发板
iTOP-4412 ARM嵌入式开发板----主要特点 iTOP-4412开发平台是北京迅为电子研发设计的嵌入式开发板平台,核心板配备64位双通道2GB DDR3,16GBEMMC存储,三星原厂S5M ...
- 嵌入式开发板iTOP4412学习开发板
网站:http://www.topeetboard.com 淘宝:https://item.taobao.com/item.htm?_u=okcahs0f42a&id=38712193806 ...
- 学习嵌入式开发板的Android平台体系结构和源码结构
本文转自迅为论坛资料:http://www.topeetboard.com 推荐学习嵌入式开发板平台:iTOP-4412开发板 下面这张图出自Google官方,展示了Android系统的主要组成部分. ...
- 嵌入式开发板使用网口和nfs进行文件共享
如果你的开发板有网口,类似于这玩意. 那么,你可以去买根网线,类似于这玩意. 然后你就可以将你的电脑和开发板用网线连起来,通过nfs(网络文件系统)来进行文件夹共享,文件夹共享就相当于挂载,nfs是利 ...
- CLion远程调试嵌入式开发板程序
CLion远程调试嵌入式开发板程序 目录 CLion远程调试嵌入式开发板程序 1. 目的 2. 前提条件 3. CLion设置 3.1 设置一个Deployment 3.2 上传需要的目录到目标板子 ...
- iTOP-4412嵌入式开发板ioremap控制GPIO寄存器
转自迅为电子技术论坛:http://bbs.topeetboard.com GPIO 的寄存器通过 ioremap函数转换之后,可以通过直接控制虚拟地址来控制物理地址(寄存器的实际地址),这样就实现 ...
- [学习嵌入式开发板]iTOP-4412实现NFS网络文件系统
本文转自迅为:http://www.topeetboard.com 学习平台:iTOP-4412开发板 本文讲解如何在 iTOP-4412 开发板上实现 NFS 网络文件系统. 我们使用的软硬件环境是 ...
- 【嵌入式开发板】8月终极暑促迅为Cortex-a9四核入门开发板
核心板参数 尺寸 50mm*60mm 高度 连同连接器在内0.26cm CPU Exynos4412,四核Cortex-A9,主频为1.4GHz-1.6GHz 内存 1GB 双通道 DDR3(2GB ...
随机推荐
- 改变Visual Studio 2012的皮肤
习惯了用vs的绿色背景,vs2012有自己的主题管理工具--Theme Editor vs2012默认没有安装Theme Editor,菜单:工具->扩展和更新,搜索栏里面输入Theme Edi ...
- SQL Server数据库ROW_NUMBER()函数使用详解
SQL Server数据库ROW_NUMBER()函数使用详解 摘自:http://database.51cto.com/art/201108/283399.htm SQL Server数据库ROW_ ...
- 与众不同 windows phone (44) - 8.0 位置和地图
[源码下载] 与众不同 windows phone (44) - 8.0 位置和地图 作者:webabcd 介绍与众不同 windows phone 8.0 之 位置和地图 位置(GPS) - Loc ...
- DP入门---饭卡
HDU 2546 Description 电子科大本部食堂的饭卡有一种很诡异的设计,即在购买之前判断余额.如果购买一个商品之前,卡上的剩余金额大于或等于5元,就一定可以购买成功(即使购买后卡上余额 ...
- 那些教程没有的php4-composer依赖管理工具
phpcomposer PHP 5.3.2+ Composer 不是一个包管理器,但它在每个项目的基础上进行管理,在你项目的某个目录中(例如 vendor)进行安装.默认情况下它不会在全局安装任何东西 ...
- 深入.NET框架
.NET是微软公司在2000年推出的一个战略(平台). 其目的就是想 任何人使用任何终端设备在任何地方都可以访问微软提供的服务. .NET Framework两大组件: CLR(Common Lang ...
- HTML · 图片热点,网页划区,拼接,表单
图片热点: 规划出图片上的一个区域,可以做出超链接,直接点击图片区域就可以完成跳转的效果. 网页划区: 在一个网页里,规划出一个区域用来展示另一个网页的内容. 网页的拼接: 在一个网络页面内,规划出多 ...
- [ASP.NET MVC] 使用Bootstrap套件
[ASP.NET MVC] 使用Bootstrap套件 前言 在开发Web项目的时候,除了一些天赋异禀的开发人员之外,大多数的开发人员应该都跟我一样,对于如何建构出「美观」的用户接口而感到困扰.这时除 ...
- webpack学习(入门基础)
webpack的学习webpack是什么?1:加载模块(将JS.sass/less.图片等作为模块来处理使用) 2:进行打包 webpack的优势?1:webpack以commonJS(JS的规范)的 ...
- Study Tips
1. 100% width divs not spanning entire width of the browser in webkit. Even Body can not span the en ...