文档章节

【Rayeager PX2分享】最简单helloworld驱动编写

穿
 穿prada的008
发布于 2015/06/02 17:11
字数 431
阅读 53
收藏 1

论坛里应该有一部分人是想学驱动,却不知道该怎么入门吧,在这里我教大家写一个helloworld的简单随linux内核加载的驱动。

1.首先在/kernel/drivers下建一个新的文件夹hello,在文件夹里添加四个文件分别是hello.c,hello.hKconfig,Makefile,

hello.c文件里也有注释,这个文件主要就是为了注册和初始化设备文件以及定义驱动接口,主要是用啦file_operations这个结构体,大家想了解驱动可以先了解这个,这个程序里的注释可以帮助大家理解下一个简单驱动的结构

2.修改Kconfig,内容如下

  

3.修改Makefile,内容如下

  

4.返回dirvers目录下修改Kconfig,在最后加一句:source"drivers/hello/Kconfig"

5.修改Makefle文件,在里面添加一句   obj-$(CONFIG_HELLO_TEST)       += hello/

6.返回kernel目录下,执行makemenuconfig 在/driver路径下找到设备,选定(注:这里设备的名字和我们之前写的Kconfig有一定的关系,修改Kconfig的相应的参数,可以改变menu下的名字)

,然后返回

makekernel.img

7,然后创建测试文件,在driver目录下创建目录hellotest,加入两个文件test和Android.mk

然后mm,在sdk/out/target/product/rkpx2/system/bin目录下找到测试文件,(如mm无法执行,可在根目录下执行下sourcebuild/envsetup.sh)

8.最后测试下结果,在window目录下,用adb工具把测试文件push进板中,然后在文件所在的位置给文件赋上权限,执行chmod777  test

执行./testhello 或./testgoodbye可看到结果如下,即驱动可成功加载

 


 hellotest.zip 

 hello.zip


© 著作权归作者所有

穿
粉丝 0
博文 51
码字总数 24172
作品 0
福州
私信 提问
【Rayeager PX2分享】最简单helloworld驱动编写

论坛里应该有一部分人是想学驱动,却不知道该怎么入门吧,在这里我教大家写一个helloworld的简单随linux内核加载的驱动。 1.首先在/kernel/drivers下建一个新的文件夹hello,在文件夹里添加四...

穿prada的008
2015/06/02
310
0
独领风骚:Rayeager PX2高性能开发板的八大特性

Rayeager PX2是首款采用Rockchip PX2高性能AP的开源开发板,这款采用双核Cortex A9,频率高达1.4GHz的板子是Rcokchip与Chipspark智能设备驱动平台的首次结合。 出身Rcokchip的这款板子主要被...

超级丹
2014/10/28
192
0
独领风骚:Rayeager PX2高性能开发板的八大特性

Rayeager PX2是首款采用Rockchip PX2高性能AP的开源开发板,这款采用双核Cortex A9,频率高达1.4GHz的板子是Rcokchip与Chipspark智能设备驱动平台的首次结合。 出身Rcokchip的这款板子主要被...

超级丹
2014/10/27
1
0
基于ARM双核cortex A9的开发板,安卓开发学习必备

由谷歌主导并推动的移动终端操作系统Android,由于其开源开放的特性,自发布之日起便受到全球各大IT厂商的欢迎。在各厂商的热情推动下,基于Android系统的手机、平板、智能手表等各类产品层出...

穿prada的008
2015/01/08
1K
0
Rayeager PX2开发板Ubuntu系统V1.0 beta版

将大于4GB的U盘插入ubuntu主机 fdisk -l 得到U盘的盘符,假设为/dev/sdc dd bs=4M if=px2_linaro_ubuntu.img of=/dev/sdc 重新拔插U盘 fdisk -l 查看u盘分区表情况,存储ubuntu系统的分区应该是...

穿prada的008
2015/01/29
49
0

没有更多内容

加载失败,请刷新页面

加载更多

代理模式之JDK动态代理 — “JDK Dynamic Proxy“

动态代理的原理是什么? 所谓的动态代理,他是一个代理机制,代理机制可以看作是对调用目标的一个包装,这样我们对目标代码的调用不是直接发生的,而是通过代理完成,通过代理可以有效的让调...

code-ortaerc
今天
5
0
学习记录(day05-标签操作、属性绑定、语句控制、数据绑定、事件绑定、案例用户登录)

[TOC] 1.1.1标签操作v-text&v-html v-text:会把data中绑定的数据值原样输出。 v-html:会把data中值输出,且会自动解析html代码 <!--可以将指定的内容显示到标签体中--><标签 v-text=""></......

庭前云落
今天
8
0
VMware vSphere的两种RDM磁盘

在VMware vSphere vCenter中创建虚拟机时,可以添加一种叫RDM的磁盘。 RDM - Raw Device Mapping,原始设备映射,那么,RDM磁盘是不是就可以称作为“原始设备映射磁盘”呢?这也是一种可以热...

大别阿郎
今天
12
0
【AngularJS学习笔记】02 小杂烩及学习总结

本文转载于:专业的前端网站☞【AngularJS学习笔记】02 小杂烩及学习总结 表格示例 <div ng-app="myApp" ng-controller="customersCtrl"> <table> <tr ng-repeat="x in names | orderBy ......

前端老手
昨天
16
0
Linux 内核的五大创新

在科技行业,创新这个词几乎和革命一样到处泛滥,所以很难将那些夸张的东西与真正令人振奋的东西区分开来。Linux内核被称为创新,但它又被称为现代计算中最大的奇迹,一个微观世界中的庞然大...

阮鹏
昨天
20
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部