RK3568平台 平台总线模型Platform


注册 platform 驱动实验:



#include <linux/module.h>
#include <linux/platform_device.h>

// 平台设备的探测函数
static int my_platform_probe(struct platform_device *pdev)
{
printk(KERN_INFO “my_platform_probe: Probing platform device\n”);

// 添加设备特定的操作
// ...

return 0;

}

// 平台设备的移除函数
static int my_platform_remove(struct platform_device *pdev)
{
printk(KERN_INFO “my_platform_remove: Removing platform device\n”);

// 清理设备特定的操作
// ...

return 0;

}

// 定义平台驱动结构体
static struct platform_driver my_platform_driver = {
.probe = my_platform_probe,
.remove = my_platform_remove,
.driver = {
.name = “my_platform_device”,
.owner = THIS_MODULE,
},
};

// 模块初始化函数
static int __init my_platform_driver_init(void)
{
int ret;

// 注册平台驱动
ret = platform_driver_register(&my_platform_driver);
if (ret) {
    printk(KERN_ERR "Failed to register platform driver\n");
    return ret;
}

printk(KERN_INFO "my_platform_driver: Platform driver initialized\n");

return 0;

}

// 模块退出函数
static void __exit my_platform_driver_exit(void)
{
// 注销平台驱动
platform_driver_unregister(&my_platform_driver);

printk(KERN_INFO "my_platform_driver: Platform driver exited\n");

}

module_init(my_platform_driver_init);
module_exit(my_platform_driver_exit);

MODULE_LICENSE(“GPL”);
MODULE_AUTHOR(“topeet”);


## 四.设备树下 platform设备驱动实验


platform\_device 结构体中的name属性与platform\_driver 结构体中嵌套的 driver 结构体 name 属性或者id\_table 相同才能加载probe初始化函数。 而为了使设备树能够与驱动程序进行匹配,需要在 platform\_driver 驱动程序中添加driver结构体的 of\_match\_table 属性。


代码示例:



#include <linux/module.h>
#include <linux/platform_device.h>
#include <linux/mod_devicetable.h>
// 平台设备的初始化函数
static int my_platform_probe(struct platform_device *pdev)
{
printk(KERN_INFO “my_platform_probe: Probing platform device\n”);

// 添加设备特定的操作
// ...

return 0;

}

// 平台设备的移除函数
static int my_platform_remove(struct platform_device *pdev)
{
printk(KERN_INFO “my_platform_remove: Removing platform device\n”);

// 清理设备特定的操作
// ...

return 0;

}

const struct of_device_id of_match_table_id[] = {
{.compatible=“my devicetree”},
};

// 定义平台驱动结构体
static struct platform_driver my_platform_driver = {
.probe = my_platform_probe,
.remove = my_platform_remove,
.driver = {
.name = “my_platform_device”,
.owner = THIS_MODULE,
.of_match_table = of_match_table_id,
},
};

// 模块初始化函数
static int __init my_platform_driver_init(void)
{
int ret;

// 注册平台驱动
ret = platform_driver_register(&my_platform_driver);
if (ret) {
    printk(KERN_ERR "Failed to register platform driver\n");
    return ret;
}

printk(KERN_INFO "my_platform_driver: Platform driver initialized\n");

return 0;

}

// 模块退出函数
static void __exit my_platform_driver_exit(void)
{
// 注销平台驱动
platform_driver_unregister(&my_platform_driver);

printk(KERN_INFO "my_platform_driver: Platform driver exited\n");

}

module_init(my_platform_driver_init);
module_exit(my_platform_driver_exit);

MODULE_LICENSE(“GPL”);
MODULE_AUTHOR(“topeet”);


DTS:



myLed{
compatible = “my devicetree”;
reg = <0xFDD60000 0x00000004>;
};







## 最后

**自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。**

**深知大多数Java工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。**

**因此收集整理了一份《2024年嵌入式&物联网开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。**

![img](https://img-blog.csdnimg.cn/img_convert/33444c11f332f72a8a1aa92f5404d557.png)

![img](https://img-blog.csdnimg.cn/img_convert/18fb2b1160ac5dcb0bab920339e29818.jpeg)

![img](https://img-blog.csdnimg.cn/img_convert/e8ae1ade45c5c014ea14bc42a34668a0.png)

 ![img](https://img-blog.csdnimg.cn/img_convert/ffefabf84ce1adf07df291286716f8e3.png)

![img](https://img-blog.csdnimg.cn/img_convert/c66807052260c71375fa2b998000b4a7.png)

![img](https://img-blog.csdnimg.cn/img_convert/9fcaceabb98f6f2ad4d815612bc7c05b.png)

![](https://img-blog.csdnimg.cn/img_convert/3f70f155d5bec413de993300f4d7d65e.png)

 

**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上嵌入式&物联网开发知识点,真正体系化!**

[**如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!**](https://bbs.csdn.net/topics/618654289)

**由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新**!!


习提升的进阶课程,基本涵盖了95%以上嵌入式&物联网开发知识点,真正体系化!**

[**如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!**](https://bbs.csdn.net/topics/618654289)

**由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新**!!


  • 12
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值