为什么在/dev目录下不能生成spidev1.0的设备文件

Creator_莫言 2014-08-28 04:05:51

static struct spi_board_info imx5_spi_printer_device[] __initdata =
{
{
.modalias = "spidev",
.max_speed_hz = 8000000,
.bus_num = 1,
.chip_select = 0,
.mode = SPI_MODE_0,
},
};

static void spi_device_init(void)
{
spi_register_board_info(imx5_spi_printer_device,ARRAY_SIZE(imx5_spi_printer_device));
}


请问我还需要哪些配置才能在/dev下生成spidev1.0的设备文件,菜鸟求解
...全文
4079 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
anglely168 2016-11-20
  • 打赏
  • 举报
回复
result =spi_register_board_info(mx_spi_board_info, ARRAY_SIZE(mx_spi_board_info));//add by duke 2016.11.2 if (result < 0) { printk(KERN_ERR "spi_register_board_info error!\n"); return result; } result = platform_device_register(&his_spi_device); if (result < 0) { printk(KERN_ERR "his spi device register error!\n"); return result; } ~~~~~~~~~~~~~~~~ 注意:spi_register_board_info必须在platform_device_register前被调用,我最近调试海思平台,也被这个问题折磨了一段时间,仔细阅读内核代码才清楚
wangke642 2016-04-17
  • 打赏
  • 举报
回复
我也遇到这个问题,请问怎么解决的
w8708812 2015-04-26
  • 打赏
  • 举报
回复
按照这个来 static struct s3c2410_spi_info s3c2410_spi0_platdata = { .pin_cs= S3C2410_GPG(2),//这个得看你的板子具体情形了 .num_cs= 1, //有一个slave .bus_num= 0, //只有一条SPI总线 .gpio_setup =s3c24xx_spi_gpiocfg_bus0_gpe11_12_13, }; static struct s3c2410_spi_info s3c2410_spi1_platdata = { .pin_cs = S3C2410_GPG(3), .num_cs = 1, .bus_num = 1, .gpio_setup = s3c24xx_spi_gpiocfg_bus1_gpg5_6_7, }; struct adns3080_platform_data{ int data; }; static struct adns3080_platform_data adns3080_data = { .data = 1, }; static struct spi_board_info s3c2410_spi0_board[] = { [0] = { .modalias= "spidev", //需要和你的驱动一致 .bus_num= 0, .platform_data =&adns3080_data, .chip_select= 0, .irq =IRQ_EINT9, .max_speed_hz= 500 * 1000, } }; static struct spi_board_info s3c2410_spi1_board[] = { [0] = { .modalias = "spidev", .bus_num = 1, .chip_select = 0, .irq = IRQ_EINT2, .max_speed_hz = 500 * 1000, } };
小陆zi 2014-09-09
  • 打赏
  • 举报
回复
/arch/arm/boot/dts 文件中有相关的硬件描述信息。这些信和你的driver中的name字段匹配,然后调用probe函数。在probe函数中会调用device_create之类的函数。这样的一系列操作以后,在你的dev目录下会有你的设备。最终调用的是register之类的函数。
Creator_莫言 2014-09-03
  • 打赏
  • 举报
回复
我按照上面的过程创建了一个spi的驱动,但是这个spi的驱动如何和我自己的时钟、数据引脚对应呢,它又是怎么知道我用得是哪个spi的呢
Creator_莫言 2014-08-29
  • 打赏
  • 举报
回复
顶一下
Creator_莫言 2014-08-29
  • 打赏
  • 举报
回复
引用 1 楼 B46673E56 的回复:
可以尝试将此写成misc型,假如是char型就必须用到设备模型中的class
谢谢你的回复,不过我需要读写SPI,注册成字符设备也需要打开spi啊,可是现在连SPI的设备文件都不能生成呢
Creator_莫言 2014-08-29
  • 打赏
  • 举报
回复
引用 5 楼 subfate 的回复:
我之前搞过一下SPI,那个时候,只用设置了设备名称、ID号、片选这些信息,就自动生成了。 在调试过程中,我换了几个片选,发现生成不了设备文件,就跟踪着SPI驱动的代码,并printk出来,才发现在哪里错了。 楼主也试试打印一下主要过程的关键地方。 祝好!
真是谢谢你了,我将原来的chip_select = 1改成1之后居然就生成设备了,暂时还不知道这个片选的值是怎么定的,稍后求证下。不过现在的问题是运行spidev_test读到的值不对,还要接着找原因啊。
Creator_莫言 2014-08-29
  • 打赏
  • 举报
回复
引用 5 楼 subfate 的回复:
我之前搞过一下SPI,那个时候,只用设置了设备名称、ID号、片选这些信息,就自动生成了。 在调试过程中,我换了几个片选,发现生成不了设备文件,就跟踪着SPI驱动的代码,并printk出来,才发现在哪里错了。 楼主也试试打印一下主要过程的关键地方。 祝好!
请问你注册的方法是和我上面一样的吗?因为我发现spidev.c的probe函数没有被调用,我不知道是不是哪里还需要添加一些设置才能让probe函数执行
李迟 2014-08-29
  • 打赏
  • 举报
回复
我之前搞过一下SPI,那个时候,只用设置了设备名称、ID号、片选这些信息,就自动生成了。 在调试过程中,我换了几个片选,发现生成不了设备文件,就跟踪着SPI驱动的代码,并printk出来,才发现在哪里错了。 楼主也试试打印一下主要过程的关键地方。 祝好!
Creator_莫言 2014-08-29
  • 打赏
  • 举报
回复
加分了,有没有大神帮忙解答
B46673E56 2014-08-28
  • 打赏
  • 举报
回复
可以尝试将此写成misc型,假如是char型就必须用到设备模型中的class

1,318

社区成员

发帖
与我相关
我的任务
社区描述
主要是开发驱动技术
社区管理员
  • 驱动程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧