MTK开发之—添加aw21024 i2c设备驱动
从供应商处拿到一驱动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设备驱动相关推荐
- 迅为IMX6ULL开发板Linux I2C设备驱动编写流程-信息描述
1 .不使用设备树文件 当开始编写 I2C 设备驱动时,首先要添加设备信息.先来看一下在不使用设备树,使用平台文件时, 如何在平台文件中添加 I2C 设备信息. 在平台文件中通过 i2c_board_ ...
- Linux添加一个i2c设备,手把手教你写Linux I2C设备驱动
Linux I2C驱动是嵌入式Linux驱动开发人员经常需要编写的一种驱动,因为凡是系统中使用到的I2C设备,几乎都需要编写相应的I2C驱动去配置和控制它,例如 RTC实时时钟芯片.音视频采集芯片.音 ...
- 手把手教你写Linux I2C设备驱动
手把手教你写Linux I2C设备驱动 标签:Linux 设备 驱动 详解 i2c 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http:/ ...
- linux探测i2c设备连接状态,手把手教你写Linux I2C设备驱动
Linux I2C驱动是嵌入式Linux驱动开发人员经常需要编写的一种驱动,因为凡是系统中使用到的I2C设备,几乎都需要编写相应的I2C驱动去配置和控制它,例如 RTC实时时钟芯片.音视频采集芯片.音 ...
- Linux I2C设备驱动编写(二)
I2C对外API I2C client的注册 i2c_register_board_info具体实现 i2c_new_device I2C driver 关于I2C设备驱动的小总结 I2C adapt ...
- 手把手教你写Linux I2C设备驱动 tvp5158
Linux I2C驱动是嵌入式Linux驱动开发人员经常需要编写的一种驱动,因为凡是系统中使用到的I2C设备,几乎都需要编写相应的I2C驱动去配置和控制它,例如 RTC实时时钟芯片.音视频采集芯片.音 ...
- 使用RT-Thread Studio DIY 迷你桌面时钟(二)| 获取温湿度传感器数据(I2C设备驱动+SHT3x软件包)
寻求更清爽的阅读体验,请移步:Mculover666的个人博客. 1. 项目进度 桌面Mini时钟项目用来演示如何使用RT-Thread Stduio开发项目,整个项目的架构如下: 在上一篇博文中简单 ...
- 使用RT-Thread Studio DIY 迷你桌面时钟| 获取温湿度传感器数据(I2C设备驱动+SHT3x软件包)...
1. 项目进度 桌面Mini时钟项目用来演示如何使用RT-Thread Stduio开发项目,整个项目的架构如下: 在上一篇博文中简单的介绍了RT-ThreadStudio一站式工具,基于STM32L ...
- Linux 设备驱动篇之I2c设备驱动
******************************************************************************************** 装载声明:希望 ...
最新文章
- Latex 参考文献,或者最后一页平衡
- ubuntu 12.04 添加 IP并配置DNS
- (转载)解决macOS /usr/include 无法写入或者不存在的问题
- 数据结构(java版)学习笔记(序章)
- Ubuntu 下的云笔记Nixnote (Evernote)
- SpringBoot返回json和xml
- NFS配置及开机自动挂载
- 风变python怎么样_风变编程python到底怎么样?可以自学吗?
- 024.RN项目android打包
- 手机号码/身份证号码中间几位的隐藏
- 误差棒是什么?误差柱状图如何做?
- 微信退款通知显示乱码,xml解析中文乱码
- 软件开发工作量及费用量化评估方法在金融行业的应用
- 中国资源卫星应用中心_数据下载
- FX5u控制4个伺服,一个完整的项目 程序用 标签分层,说明了定位控制中的公共参数设定、回原点、
- 2021年中国定制家具行业现状分析:“量身定制”需求逐年增加[图]
- ASP.NET2.0:利用Localization实现本地化
- centos7 zabbix短信告警(阿里短信平台)
- Js 代替eval的方法
- 13、断开蓝牙设备连接(closeBLEConnection)