我正在尝试编写spi内核模块。但是我收到警告,提示我无法解决。
WARNING: "spi_register_board_info" undefined!
每当我尝试加载模块时,它都会显示错误“模块中的未知符号”。即使符号存在,当我检查/ proc / kallsyms
cat / proc / kallsyms的输出| grep spi_register_board_info
c09e58c8 T spi_register_board_info
init函数:
#include "header.h"
#include "declaration.h"
#include "spiop.h"
MODULE_AUTHOR("Vijay");
MODULE_LICENSE("GPL");
static struct spi_driver Vijay_spi =
{
.driver=
{
.name="Vijay_spi_driver",
},
.id_table=myid_table,
.probe=spi_probe,
.remove=spi_remove
};
static struct spi_board_info myspi_board_info [] __initdata = {
{
.modalias="Vijay_spi",
.max_speed_hz=14000000,
.bus_num=0,
.chip_select=3,
.mode=SPI_MODE_0,
},
/* {
.modalias="spidev",
.chip_select=0,
.max_speed_hz=1*100*100,
.bus_num=1,
.mode=SPI_MODE_0,
},*/
};
struct spi_driver *mydriver;
static int __init init_func(void)
{
if(spi_register_board_info(myspi_board_info,ARRAY_SIZE(myspi_board_info)) == -1)
{
pr_err("spi_register_board_infofailed \n");
goto OUT;
}
#ifndef DEBUG
printk(KERN_INFO "%s: Begin \n",__func__);
#endif
mydriver=&Vijay_spi;
if(spi_register_driver(mydriver) == -1)
{
pr_err("spi_register_driver failed \n");
goto OUT;
}
#ifndef DEBUG
printk(KERN_INFO "%s: End \n",__func__);
#endif
return 0;
OUT:
return -1;
}
header.h的内容:-
#include<linux/init.h>
#include<linux/kernel.h>
#include<linux/module.h>
#include<linux/slab.h>
#include<linux/spi/spi.h>
#include<linux/device.h>
#include<linux/types.h>
#include<linux/mutex.h>
#include<linux/mod_devicetable.h>
有人可以阐明为什么我收到此警告。