从供应商处拿到一驱动led模块的 i2c设备驱动,人家驱动已经基本给我们写好,我们需要做的就是将驱动添加进我们的内核,烧录进我们的板子为我们所用,aw21024驱动与资料:https://download.csdn.net/download/maodewen11/18171562

第一步:修改设备树

首先按要求将设备树信息添加进我们的设备树文件:/kernel/arch/arm64/boot/dts下的dts文件
相应的gpio需要改为我们板子对应的gpio口,例如我的板子aw21024挂载到的是i2c-2总线上,所以将设备树信息添加到&i2c2 节点下,并且修改成对应的gpio口

aw21024_led@1c {compatible = "awinic,aw21024_led";reg = <0x1c>;//boardcast address:0x1creset-head-gpio = <&pio 52 0>;reset-chest-gpio = <&pio 51 0>;aw21024,led {aw21024,name = "aw21024_led";/* 0:16M 1:8M 2:1M 3:512K 4:256K 5:125K 6:62K 7:31K */aw21024,clk_pwm = <2>;aw21024,brightness = <128>;aw21024,max_brightness = <255>;};};

第二步:添加驱动文件

将aw21024驱动文件添加到misc文件下,因为MTK的驱动大多都是在这个文件下,具体路径:/kernel-3.18/drivers/misc

第三步:修改编译配置

修改/kernel-3.18/drivers/misc下的makefile文件,向其中添加:obj-$(CONFIG_LEDS_AW21024) += aw21024
以后就可以根据CONFIG_LEDS_AW21024开关来进行选择是否将这个模块编译进内核
CONFIG_LEDS_AW21024可以设置为y或者n,如下所示:
obj-y就是编译进内核
obj-n就不编译进内核
可在.config文件中添加CONFIG_LEDS_AW21024=y,就可以将该模块编译进内核

有人比喻Kconfig文件是菜单,makefile是菜谱(做菜的方法),.config文件是你所点的菜,我觉得挺形象的

第四步:编译内核

source build/envsetup.sh
lunch [选项]
make bootimage -j8

结果验证

将编译出来的程序刷进板子,然后重启

首先我们可以通过串口打印信息看到驱动是否加载成功,因为代码中在probe函数中有pr_info("%s probe completed successfully!\n", func);l 如果看到这条log信息说明驱动正常编译进了内核并且正常加载。

其次进入adb查看,进入目录/sys/class/i2c-c/i2c-2/device下查看,因为我们的设备i2c地址是2-001c,所以进入如下目录:

说明驱动匹配成功,而目录下的这些文件是驱动程序中如下代码所产生的:

static DEVICE_ATTR(reg, S_IWUSR | S_IRUGO, aw21024_reg_show, aw21024_reg_store);
static DEVICE_ATTR(hwen, S_IWUSR | S_IRUGO, aw21024_hwen_show, aw21024_hwen_store);
static DEVICE_ATTR(rgbcolor, S_IWUSR | S_IRUGO, NULL, aw21024_rgbcolor_store);
static DEVICE_ATTR(effect, S_IWUSR | S_IRUGO, aw21024_effect_show, aw21024_effect_store);static struct attribute *aw21024_attributes[] = {&dev_attr_reg.attr,&dev_attr_hwen.attr,&dev_attr_rgbcolor.attr,&dev_attr_effect.attr,NULL
};static struct attribute_group aw21024_attribute_group = {.attrs = aw21024_attributes
};
sysfs_create_group(&aw21024->cdev.dev->kobj, &aw21024_attribute_group);

关于该宏的使用可以参考:
https://www.cnblogs.com/lifexy/p/9799778.html

MTK开发之—添加aw21024 i2c设备驱动相关推荐

  1. 迅为IMX6ULL开发板Linux I2C设备驱动编写流程-信息描述

    1 .不使用设备树文件 当开始编写 I2C 设备驱动时,首先要添加设备信息.先来看一下在不使用设备树,使用平台文件时, 如何在平台文件中添加 I2C 设备信息. 在平台文件中通过 i2c_board_ ...

  2. Linux添加一个i2c设备,手把手教你写Linux I2C设备驱动

    Linux I2C驱动是嵌入式Linux驱动开发人员经常需要编写的一种驱动,因为凡是系统中使用到的I2C设备,几乎都需要编写相应的I2C驱动去配置和控制它,例如 RTC实时时钟芯片.音视频采集芯片.音 ...

  3. 手把手教你写Linux I2C设备驱动

    手把手教你写Linux I2C设备驱动 标签:Linux 设备 驱动 详解 i2c 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http:/ ...

  4. linux探测i2c设备连接状态,手把手教你写Linux I2C设备驱动

    Linux I2C驱动是嵌入式Linux驱动开发人员经常需要编写的一种驱动,因为凡是系统中使用到的I2C设备,几乎都需要编写相应的I2C驱动去配置和控制它,例如 RTC实时时钟芯片.音视频采集芯片.音 ...

  5. Linux I2C设备驱动编写(二)

    I2C对外API I2C client的注册 i2c_register_board_info具体实现 i2c_new_device I2C driver 关于I2C设备驱动的小总结 I2C adapt ...

  6. 手把手教你写Linux I2C设备驱动 tvp5158

    Linux I2C驱动是嵌入式Linux驱动开发人员经常需要编写的一种驱动,因为凡是系统中使用到的I2C设备,几乎都需要编写相应的I2C驱动去配置和控制它,例如 RTC实时时钟芯片.音视频采集芯片.音 ...

  7. 使用RT-Thread Studio DIY 迷你桌面时钟(二)| 获取温湿度传感器数据(I2C设备驱动+SHT3x软件包)

    寻求更清爽的阅读体验,请移步:Mculover666的个人博客. 1. 项目进度 桌面Mini时钟项目用来演示如何使用RT-Thread Stduio开发项目,整个项目的架构如下: 在上一篇博文中简单 ...

  8. 使用RT-Thread Studio DIY 迷你桌面时钟| 获取温湿度传感器数据(I2C设备驱动+SHT3x软件包)...

    1. 项目进度 桌面Mini时钟项目用来演示如何使用RT-Thread Stduio开发项目,整个项目的架构如下: 在上一篇博文中简单的介绍了RT-ThreadStudio一站式工具,基于STM32L ...

  9. Linux 设备驱动篇之I2c设备驱动

    ******************************************************************************************** 装载声明:希望 ...

最新文章

  1. Latex 参考文献,或者最后一页平衡
  2. ubuntu 12.04 添加 IP并配置DNS
  3. (转载)解决macOS /usr/include 无法写入或者不存在的问题
  4. 数据结构(java版)学习笔记(序章)
  5. Ubuntu 下的云笔记Nixnote (Evernote)
  6. SpringBoot返回json和xml
  7. NFS配置及开机自动挂载
  8. 风变python怎么样_风变编程python到底怎么样?可以自学吗?
  9. 024.RN项目android打包
  10. 手机号码/身份证号码中间几位的隐藏
  11. 误差棒是什么?误差柱状图如何做?
  12. 微信退款通知显示乱码,xml解析中文乱码
  13. 软件开发工作量及费用量化评估方法在金融行业的应用
  14. 中国资源卫星应用中心_数据下载
  15. FX5u控制4个伺服,一个完整的项目 程序用 标签分层,说明了定位控制中的公共参数设定、回原点、
  16. 2021年中国定制家具行业现状分析:“量身定制”需求逐年增加[图]
  17. ASP.NET2.0:利用Localization实现本地化
  18. centos7 zabbix短信告警(阿里短信平台)
  19. Js 代替eval的方法
  20. 13、断开蓝牙设备连接(closeBLEConnection)

热门文章

  1. python实现人脸识别(face_recognition)
  2. 常用算法的算法思想以及基本特征
  3. 12种高效的管理方法
  4. 计算网络之云运维发展历史
  5. SCARA工业机器人
  6. matlab共阳极二极管,三引脚SOT-323封装的共阳极稳压二极管资料
  7. OA系统十五:请假申请一:【请假申请】这个内嵌界面的数据库设计;(即请假申请这个线型工作流程的数据库设计!)
  8. 数学建模算法与应用——整数规划
  9. Docker 进入Mysql容器
  10. Mockoon代理模式