虽然成功控制了PH17脚输出高低电平,但是我感觉什么都没有获取到(关于Linux的字符设备驱动)。

打算把驱动直接编译进内核,首先看看怎样把自己的驱动添加到内核配置界面上。打开内核配置界面,在lichee/linux-3.4目录下输入make ARCH=arm menuconfig。

Device Drivers --->

Character devices --->

CQA20 LED driver support

再lichee/linux-3.4/drivers/char目录下输入grep -r "CQA20 LED driver support" *,看看能找到什么,输出信息如下:

捕获.PNG (9.77 KB, 下载次数: 36)

2016-11-16 18:07 上传

[img]C:\Users\BruceLee\AppData\Local\YNote\data\2377933161@qq.com\5c3d0fbfc5fb4930b067ffccf764fd6a\捕获.png[/img]

查看Kconfig文件中CQA20 LED driver support相关内容,信息如下:

捕获.PNG (45.02 KB, 下载次数: 36)

2016-11-16 18:08 上传

[img]C:\Users\BruceLee\AppData\Local\YNote\data\2377933161@qq.com\e2c96d2a54d14cee8bdf319f9d6b7e6d\捕获.png[/img]

估计仿照上面的内容添加自己的内容就可以在内核配置界面上添加自己的驱动选项。添加内容如下:

捕获.PNG (30.13 KB, 下载次数: 45)

2016-11-16 18:09 上传

[img]C:\Users\BruceLee\AppData\Local\YNote\data\2377933161@qq.com\3f5c937330bd4229ba6a1495ae0005e1\捕获.png[/img]

在lichee/linux-3.4目录下重新运行make ARCH=arm menuconfig,可以在内核配置菜单下看到多了My first LED driver support 选项,如下图所示:

捕获.JPG (45.76 KB, 下载次数: 35)

2016-11-16 18:13 上传

[img]C:\Users\BruceLee\AppData\Local\YNote\data\2377933161@qq.com\63e7ad86ed9945b5852791dfc26c06b9\捕获.jpg[/img]

通过空格键选择为*,编译进内核。

虽然现在还没有创建myled.c文件,编写驱动代码,假如创建了,编译系统怎么知道去编译这个文件呢?可能跟刚才在内核配置界面的选择有关,但是根据以往经验,也有可能跟Makefile有关,看看Makefile里有什么。在Makefile里搜索LED,可以找到如下内容:

捕获.JPG (26.09 KB, 下载次数: 42)

2016-11-16 18:13 上传

[img]C:\Users\BruceLee\AppData\Local\YNote\data\2377933161@qq.com\9d48fc264cd64d70876d81f6f6e1cc10\捕获.jpg[/img]

在Kconfig里,写的是CQA20_LED,这里变成了CONFIG_CQA20_LED,这是为什么呢?搜索一下,结果如下:

捕获.JPG (51.04 KB, 下载次数: 39)

2016-11-16 18:14 上传

[img]C:\Users\BruceLee\AppData\Local\YNote\data\2377933161@qq.com\0ba6d26cb054474faed58e175b18f10e\捕获.jpg[/img]

从上面的结果来看,估计CONFIG_CQA20_LED是通过内核配置界面生成的一个变量,但是这么多目录下都有,哪一个才是通过内核配置菜单生成的,或者说全部都是呢?搜索一下CONFIG_MyLED看看有什么结果。在/lichee/linux-3.4目录下输入grep -r CONFIG_MyLED *结果什么都没有。试试查看上面个文件的修改时间看看有什么发现。结果如下:

捕获.JPG (60.21 KB, 下载次数: 43)

2016-11-16 18:15 上传

[img]C:\Users\BruceLee\AppData\Local\YNote\data\2377933161@qq.com\ac3b833c404d4e7899bbd2f165588c1f\捕获.jpg[/img]

今天是2016/11/16而上面只有output/.config文件的最近修改日期是2016/11/15,其它文件的日期是2015年,并且我昨天刚好编译过内核,所以为了验证CONFIG_CQA20_LED是一个编译的时候生成的变量,可以先编译一下内核然后在搜索CONFIG_MyLED。在/lichee/linux-3.4目录下输入./build -p sun7i_android -m kernel,编译完后输入grep -r CONFIG_MyLED *输出结果如下:

捕获.JPG (30.67 KB, 下载次数: 36)

2016-11-16 18:15 上传

[img]C:\Users\BruceLee\AppData\Local\YNote\data\2377933161@qq.com\cb7133bcbc304fb68d54abb24e284ed6\捕获.jpg[/img]

虽然结果跟上面的猜测有点出入,但是可以确定CONFIG_MyLED是编译的时候生成的变量,而且会生成多个文件。

现在可以放心地回到/lichee/linux-3.4/drivers/char目录下修改Makefile了。在里边添加一项:

捕获.JPG (17.98 KB, 下载次数: 36)

2016-11-16 18:16 上传

[img]C:\Users\BruceLee\AppData\Local\YNote\data\2377933161@qq.com\73108012bc37448bab076e8c9df52fd2\捕获.jpg[/img]

记下来写驱动代码。

一个字符型设备的要素有哪些?

1、一些声明的东西,比如MODULE_DESCRIPTION("Led Driver");和MODULE_LICENSE("GPL v2");

2、module_init(led_init);和module_exit(led_exit);

3、struct platform_device led_device 和 static struct platform_driver led_driver 并且把上面两个结构体注册的函数 platform_device_register(&led_device)) 和 platform_driver_register(&led_driver));

4、probe函数实现;

5、混杂设备结构体和注册函数,static struct miscdevice leds_dev 和  err = misc_register(&leds_dev);

6、文件操作函数实现static struct file_operations leds_ops;

后面的内容后续补上

全志t3linux驱动_全志A20GPIO驱动分析|Android驱动及系统开发交流区|研发交流|雨滴科技技术论坛 - Powered by Discuz!...相关推荐

  1. matlab 做偏回归分析,偏最小二乘回归分析|MATLAB 数学统计与优化|MATLAB技术论坛 - Powered by Discuz!...

    clear;clc; pz = load('pz.txt'); mu = mean(pz);       % 均值 sig = std(pz);           % 方差 rr = corrcoe ...

  2. 全志t3linux驱动_全志T3 Linux显示驱动分析

    1.总体架构 全志T3处理器的显示框架是基于标准Linux的帧缓冲架构,其结构如图 1.1所示.显示控制器DE的驱动架构如图 1.2所示,包括屏蔽差异的显示管理抽象层,以及显示图层驱动.显示设备驱动. ...

  3. rmmod无法卸载驱动_从hello world到LED驱动

    引言 linux驱动是连接软件和硬件的一个中间介质,实现了对硬件的配置和控制.进一步将硬件抽象化,为软件操作硬件提供了简单的接口.不论硬件的具体形式如何,linux驱动都将其映射到一个文件,软件端对硬 ...

  4. 一致吗 驱动_外国不过春节?AMD驱动再更新,解决BUG,游戏不闪退,重启不黑屏...

    AMD依然是那个AMD,驱动自然也还是那个驱动. 相对于英特尔大的驱动来说,AMD的驱动也继承了ATI当年催化剂驱动的<优良传统>. 真的是BUG不断. 上一个版本的驱动的实在锤问题: & ...

  5. 2.1.1.4 节_摄像头驱动_从零写一个虚拟驱动之示例

    一. vivi驱动应用程序调用过程 上节对xawtv对vivi程序调用过程进行了详细分析,可总结为以下流程: 二.仿照vivi.c编写myvivi.c驱动程序 #include <linux/m ...

  6. 全志h2参数_全志H2怎么样 H2芯片参数介绍

    全志H2芯片怎么样,H2处理器好用吗?H2是基本型OTT盒子解决方案.下面带来H2芯片的具体参数,准备入手搭载H2芯片设备的用户可以参考一下. H2芯片架构图 H2特性介绍 支持H.265 1080P ...

  7. 全志uboot修改_全志固件修改工具全系列

    [实例简介] 全志固件修改工具全系列 [实例截图] [核心代码] DragonFace_V2.2.5 └── DragonFace_V2.2.5 ├── 1623_items.cfg ├── 1625 ...

  8. 全志h2参数_全志h3芯片性能及参数评测

    描述 全志H3简介 全志H3是全志科技旗下的完整4K智能电视机顶盒解决方案,基于四核Cortex-A7CPU架构,支持H.265/HEVC4K@30fps视频硬解,采用ARMMali系列的图形处理架构 ...

  9. win10怎么更新显卡驱动_换显卡后,显卡驱动与系统不兼容怎么办?

    出现这种问题有两种可能,第一种是Win10系统版本太低,第二种是显卡品牌与其他硬件的品牌不兼容(比如给微星电脑换上外星人的显卡,就会遇到这种问题)多数时候都是第二种原因,解决方法如下. 安装前的准备步 ...

最新文章

  1. nvm npm不是内部命令_npm作弊表-最常见的命令和nvm
  2. Worktile完成新一轮融资,将发力研发管理赛道
  3. mysql 快速生成百万条测试数据
  4. 区块链BaaS云服务(35)亦笔科技ODRChain使用场景
  5. SAP Hybris backoffice登录时的语言选择
  6. 学之思开源考试系统 - 使用手册
  7. 谈谈数次生信线下活动的收获和体会
  8. php session有什么用,session有什么作用?
  9. Android开源库--Gson谷歌官方json解析库
  10. 如何在微博侧栏中加入自己的微博[js]
  11. 三省2:hadoop是什么鬼1
  12. linux 虚拟示波器,模拟示波器怎么看频率,模拟示波器频率计算
  13. 【干货分享】 淘宝客发朋友圈的技巧
  14. 测绘工程专业与计算机,测绘工程专业的计算机技术教学
  15. 拼刀刀店铺后台的参数anti-content逆向分析
  16. 其他技术 网易云音乐Mp3,通过网易官方搜索引擎获取mp3外链
  17. 七款云上共享文件系统 POSIX 兼容性大比拼
  18. 【日常开发必备】1.5W+字的 MySQL 速查手册
  19. 软考中级之系统集成项目管理工程师备考
  20. (已解决)STM32报错Error: L6218E: Undefined symbol assert_param (referred from misc.o).

热门文章

  1. java语法糖效率高吗_打包 Java将持续向“高糖”方向发展,你真的了解Java语法糖吗? _好机友...
  2. mysql 迁移后无法启动_Mysql数据迁移后启动出错_MySQL
  3. restfull服务器端获取文件,使用 FileREST API (获取文件服务) - Azure 文件存储 | Microsoft Docs...
  4. 自定义oracle异常,详解Oracle自定义异常示例
  5. mysql5.7存储过程实例_MySQL 存储过程简单实例
  6. mysql csv 表头_Mysql实例mysql 导出CSV文件 并带表头的方法
  7. c语言中的下标,c语言中数组的下标从什么入手下手?_后端开发
  8. opencv for andriod java代码实现霍夫变化(HoughLinesP)
  9. unet网络python代码详解_python网络编程详解
  10. Java 设计模式之装饰器模式