就是塔塔的个人空间 https://www.eechina.com/space-uid-136863.html [收藏] [复制] [RSS]

博客

迅为IMX8M开发板设备树下的platform驱动实验程序编写

已有 529 次阅读2022-8-23 15:17

程序源码在网盘资料“iTOP-i.MX8MM 开发板\02-i.MX8MM 开发板网盘资料汇总(不含光盘内容)\嵌入式
Linux 开发指南(iTOP-i.MX8MM)手册配套资料\2.驱动程序例程\011-设备树下的 platform 驱动\001”路径下。
我们在 Ubuntu 的/home/topeet/imx8mm/11/001 目录下新建 driver.c 文件,修改代码为如下所示
/*
* @Author: topeet * @Description: 实现设备树下 Platform 驱动匹配进入 probe 函数
*/
#include <linux/init.h>
#include <linux/module.h>
#include <linux/platform_device.h>
#include <linux/of.h>
#include <linux/of_address.h>
/**
* @description: platform 驱动的 probe 函数,当驱动与设备匹配以后此函数就会执行
* @param {*}pdev : platform 设备
* @return {*}0,成功;其他负值,失败
*/
int led_probe(struct platform_device *pdev)
{ //匹配成功以后,进入到 probe 函数
printk("led_probe\n");
return 0;
}
int led_remove(struct platform_device *pdev)
{
printk("led_remove\n");
return 0;
}
const struct platform_device_id led_idtable = {
.name = "led_test", };
const struct of_device_id of_match_table_test[] = {
{.compatible = "test1234"}, {}, };
struct platform_driver led_driver = {
//3. 在 led_driver 结构体中完成了 led_probe 和 led_remove
.probe = led_probe, .remove = led_remove, .driver = {
.owner = THIS_MODULE, .name = "led_test", .of_match_table = of_match_table_test //接下来我们改一下驱动,让他来匹配设备树里面 test 的节点
},.id_table = &led_idtable //4 .id_table 的优先级要比 driver.name 的优先级要高,优先与.id_table 进行匹配
};
static int led_driver_init(void)
{
// 1.我们看驱动文件要从 init 函数开始看
int ret = 0;
//2. 在 init 函数里面注册了 platform_driver
ret = platform_driver_register(&led_driver);
if (ret < 0)
{
printk("platform_driver_register error \n");
}
printk("platform_driver_register ok \n");
return 0;
}
static void led_driver_exit(void)
{
platform_driver_unregister(&led_driver);
printk("goodbye! \n");
}
module_init(led_driver_init);
module_exit(led_driver_exit);
MODULE_LICENSE("GPL");
保存 driver.c 文件,编译 driver.c 为驱动模块,如下图所示:

驱动编译完,我们通过 nfs 将编译好的驱动程序加载模块。我们进入共享目录,加载刚刚编译好的

driver.ko,如下图所示:

insmod driver.ko

如上图所示,已经匹配成功进入到 probe 函数中。如果没有进入 probe 函数,可能出现匹配不成功的原

因是 1 device 或者设备树根本没有加到我们系统里面 2 名字不一样导致匹配不成功。


路过

鸡蛋

鲜花

握手

雷人

评论 (0 个评论)

facelist

您需要登录后才可以评论 登录 | 立即注册

关于我们  -  服务条款  -  使用指南  -  站点地图  -  友情链接  -  联系我们
电子工程网 © 版权所有   京ICP备16069177号 | 京公网安备11010502021702
返回顶部