Linux kernel RT-Linux框架模块

Linux kernel RT-Linux框架模块,linux-kernel,kernel-module,Linux Kernel,Kernel Module,我想为rt linux创建一个简单的linux模块。 我使用的是am5749(定制板)ti-processor-sdk-linux-rt-am57xx-evm-06.03.00.106。 所以…我试着编译很多例子。 它不适用于rt linux。 永远不会调用probe函数。我想了解为什么在rt中没有调用作为许多驱动程序一部分的探测函数,以及如何解决它。我想重新制作几个驱动程序来使用rt linux 以下是我的骨架模块的代码: #include <linux/init.h> #incl

我想为rt linux创建一个简单的linux模块。 我使用的是am5749(定制板)ti-processor-sdk-linux-rt-am57xx-evm-06.03.00.106。 所以…我试着编译很多例子。 它不适用于rt linux。 永远不会调用probe函数。我想了解为什么在rt中没有调用作为许多驱动程序一部分的探测函数,以及如何解决它。我想重新制作几个驱动程序来使用rt linux

以下是我的骨架模块的代码:

#include <linux/init.h>
#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/slab.h>
#include <linux/err.h>
#include <linux/i2c.h>

#include <linux/of_device.h>

static const struct of_device_id Some_i2c_dt_id[] = {
    { .compatible = "ti,Some_i2c"},
    { },
};


static int Some_i2c_probe(struct i2c_client *client, const struct i2c_device_id *id)
{
    printk("Module is probed\n");
}

static int Some_i2c_remove(struct i2c_client *client)
{

}

static const struct i2c_device_id Some_i2c_id[] = {
    { "Some_i2c", 0 },
    { },
};
MODULE_DEVICE_TABLE(i2c, Some_i2c_id);


static struct i2c_driver Some_i2c_driver = {
    .driver = {
        .name   = "Some_i2c",
        .owner  = THIS_MODULE,
        .of_match_table = Some_i2c_dt_id,
    },
    .id_table   = Some_i2c_id,
    .probe          = Some_i2c_probe,
    .remove         = Some_i2c_remove,
};

static int __init Some_i2c_init( void ) {
    printk("Module is started\n");
    return i2c_add_driver(&Some_i2c_driver);
    
}

static void __exit Some_i2c_exit( void ) {
    i2c_del_driver(&Some_i2c_driver);
    printk("Module is stoped\n");
}

module_init( Some_i2c_init );
module_exit( Some_i2c_exit );

MODULE_AUTHOR("Someone");
MODULE_DESCRIPTION("Some_i2c_Driver");
MODULE_LICENSE("GPL v2");

探测后,应显示消息“模块已探测”。我是在非rt linux中获得的。

正如您所了解的,这在rt linux中不起作用
我不明白。为什么它不能与“rt linux”一起工作<代码>从不调用探测函数什么是“探测函数”?请创建一个。除了外部资源,请使问题独立-将所有代码、引用和makefile作为文本发布到您的问题中。请发布你执行了什么命令,做了什么,结果如何。你怎么知道“探测函数从未被调用”?请看一看。你的模块是构建的吗?您的模块是否加载?
obj-m = module.o
KDIR := /SDK/ti-processor-sdk-linux-rt-am57xx-evm-06.03.00.106/board-support/linux-rt-4.19.94+gitAUTOINC+a242ccf3f1-ga242ccf3f1/

all:
    make -C $(KDIR) M=$(shell pwd) modules
clean:
    make -C $(KDIR) M=$(shell pwd) clean