工具/软件:Linux
你(们)好
我正在尝试在基于 BeagleBoneBlack 的电路板上启用 spidev 支持。
我继承了使用 SDK 8.00.00.00 (Linux/ARM 3.14.26)开发的使用/dev/spidev2.0的项目
我正在将此项目移植到最新的 TISDK 中、发现我无法在/dev/.中看到任何 spidev
我已在我的.config 中启用 CONFIG_SPI_SPIDEV=y
我已从原始项目中复制 pinmux 定义:
SPI1_Pins:pinmux_SPI1_Pins{ pinctrl-single、pins =< 0x108 0x32 0x194 0x33 0x198 0x13 0x19c 0x13 >; };
并确认这些内容符合原理图、数据表和 TRM (旧代码正常工作是不足为奇的!)
SPI1上还定义了以下节点:
&SPI1{ status ="确定"; pinctrl-names ="默认值"; pinctrl-0 =<&SPI1_PINs>; spidev@0{ SPI-max-frequency =<24000000>; reg =<0>; compatible ="Linux、spidev"; }; spidev@1{ spi-max-frequency =<24000000>; reg =<1>; compatible ="linux、spidev"; }; };
-通过在兼容字段中添加"Linux"项、此处的语法已与原始语法不同
-我注意到,如果我不这么做,我就会在内核启动序列中遇到错误,如下所示
[1.032904] spidev spi2.0:dbuggy DT:spidev 直接列在 DT [1.038679]---- [在此处剪切]----- [1.042994]警告:CPU:0 PID:1 at drivers/spi/spidev.c:719 spidev_probe + 0x1a0/0x1bc () [1.050598]链接的模块: [1.053448] CPU:0 PID:1 Comm:swapper not prosced 4.4.4.19-gdb0b54cdd #30] 硬件树[1.03337 ](展开回扫)从[ ](show_stack+0x10/0x14) [1.072753][ ](show_stack)从[ ](warn_slespath_common+0x80/0xac) [1.080281][ ](warn_slowpath_common)、来自[ ](warn_slespath_null+0x1c/0x) [1.088454][ ](warn_slowpath_null)、来自[ ](spidev_prob+0x1a0/0x1bc) [1.096128][ ](spidev_probe)从[ ](SPI_drv_probe +0x7c/0xa8) [1.103252][ ](SPI_drv_probe)、来自[ ](driver_probe_device+0x1fc/0x2f0) [1.111110][ ](driver_probe_device)从[ ](bus_for_each _drv+0x60/0x94) [1.119039][ ](bus_for_each _drv)从[ ](_device_attach+b0/0x114) [1.126711][ ](_device_attach)从[ ](bus_probe_device+0x84/0x8c) [1.134317][ ](bus_probe_device)、来自[ ](device_add+0x370/0x56c) [1.141682][ ](device_add)从[ ](SPI_ADD_DEVICE_0x9C/0x134) [1.148805][ ](SPI_ADD_DEVICE)从[ ](of _register_SPI_DEVICE_0x224/0x2) [ 1.156973][ ](of _register_spi_device)、来自[ ](SPI_REGISTER_MASTER+0x25) [ 1.165531][ ](SPI_REGISTER_MASTER)、来自[ ](devm_SPI_register_master+0x) [1.174104][ ](devm_spi_register_master)、来自[ ](OMAP2_mcspi_probe+0x2C) [ 1.182680][ ](OMAP2_mcspi_probe)、来自[ ](platform_drv_probe +0x4c/b0) [1.190607][ ](platform_drv_probe)、来自[ ](DRIVER_PROBLE_DEVICE_0x1FC/0x) [1.198854][ ](driver_probe_device)从[ ](__driver_attach+0x8c/0x90) [ 1.206686][ ](__driver_attach)从[ ](BUS_TO_EASE_DEV_0x68/0x9C) [1.214292][ ](bus_for_each_dev)、来自[ ](BUS_ADD_DRIVER+0x1a0/0x218) [1.221977][ ](BUS_ADD_DRIVER)从[ ](driver_register+0x78/0xf8) [1.229420][ ](driver_register)、从[ ](do_one _initcall+0x90/0x1dc) [ 1.237036][ ](多个_initcall)、来自[ ](kernel_init_freeed+0x12c/0x1b) [1.245120][ ](kernel_init_freable)从[ ](kernel_init+0xc/0xec) [ 1.252648][ ](kernel_init)、来自[ ](RET_FAND_FANK+0x14/0x3c) [1.259724]-[结束跟踪 b4816ec3f58ddc0f ]-[ 1.264822] spiddev 2.1:buggy DT:spidev 直接列在 DT [1.270539]中]---- [在此处剪切]-----
它似乎是调用 spidev_probe
我的困惑在于、如果我修改 DTS 以包含所需的"Linux"术语、我似乎永远不会在引导时调用 spidev 探测器(我已经插入了串行字符串、以检查代码流以在此处输入)
如果我检查这些节点的 DTB、我会看到:
62672:SPI@481a0000{ 62695:compatible ="ti、omap4-mcspi"; 62738-#address-cells =<hw01>; 62781-#size-cells =<0x00000000000000000000 >; 62821- reg =<0x481a0000 0x00000001c1>; 62864- 0x00000003<0x00000003<0x00000003<0x000000000000003<0x00000003<0x00000003<0x0000000270003<0x00000003<0x00000003<0x00000003<0x00000003<0x00000003<0x00000003<0x00000003<0x00000003<0x00000003<0x00000003<0x00000003<0x00000003<0x00000003<0x00000003<0x00000003<0x00000003<0x0000000 63131- dma-names ="tx0"、"rx0"、"tx1"、"rx1"; 63183- status ="oke"; 63212- pinctrl-names ="default"; 63251- pinctrl-0 =<0x00000044>; 63289:spidev@ @0{63312:SPI-max- frequency = 0x3362>;63356001- e000= 0x36000001<spidp = 0x3600> ;636001e0001<spidp = 0x335600>;636001e0001<spidp = 0x335600>;636001<sp03900> 兼容="spidev"; 636600-}; 63615-};
如果我在 printk 级别启用详细调试、则引导时会出现以下相关字符串:
[ 14.126735]器件类'spidev':注册 [ 14.130861] kobject:'spidev'(spibb188):kobject_add_internal:'class'、set:'class' [ 14.138792] kobject:'spidev'(ddbcb188):kobject_uevent_envs:'sledv': [14.40pedv' (/class/spidev):'shipcev':'shum_drivers':[14.40pedv':'shipcev':'n100_cpuev':[14.4625] 'drivers' [14.162915] kobject:'spidev'(ddbce800):kobject_uevent_env [14.168185] kobject:'spidev'(ddbce800):ffill_kobj_path:path ='/bus/spi/drivers/spidev <--snip->[14.326125] 总线:'spidev'(ddbce800):fill _kobj_path:path ='<--snip->[14.330000 :sp430_probe 与设备匹配的设备驱动程序[14.3481msp2]msp430_msp4678_mspi:v_msp430_mspi 设备[14.32]平台:真正匹配的设备驱动程序[msp430_sp430_mspin 添加1个 pinctrl 映射 [14.346768] devices_kset:将481a0000.SPI 移动到列表末 尾[14.352057] omap_hwmod:SPI1:启用 [14.3555537] powerdomain:在0个循环中完成转换 [14.360464] omap4域:l4ls_clkdm:启用 [14.36421] omap2 :启用[14.36421]设备[14.3mod4:1:启用 OMAP4个模块:1:'mod4个 OMAP4个 OMAP_clkmcock1:1:1:启用[14.362] device_add [ 14.376697] kobject:'spi_master'(ddbe0780):kobject_add_internal:'481a0000.spi'、set:'(null)' [ 14.385599] kobject:'sb2'(ddbc5408):kobject_add_internal:'sus:'sus:'481a0000.spi'、set:'14.40162' /devices/platform/ocp/481a0000.spi/spi_master/spi (dcpi_mspi2')[14.40162':'dcpu100_mu1004pi204pines':'s:'d) device_add [14.416784] kobject:'s 2.0 (ddbc5808):kobject_add_internal:'sip2'、set:'Device (设备)' [14.424820]总线:'spi':add device spida2.0 [14.428762] pim:adding info for SPI: 14.432562] kobject:[14.4388](设备 pidc28386'):'s v_64c8cw28b]( /devices/platform/ocp/481a0000.spi/spi_master/s 设备 pedv_event: dcpuv_w28388a':[14.432429] kobject_add_internal:parent:'spi2'、set:'Device es' [ 14.460061] bus:'spi':add device spi2.1 [ 14.464011] PM:adding info for SPI:spi2.1 [ 14.467337] kobject:fill 2.1 obj (ddbc5c08):kobject_uevent_env [ 14.467337]m /devices/platform/ocp/481a0000.spi/spi_master/s :'bt vn vn vn vn vn v72m:'dcpuat' m:'dcpuat' m 144824802' m:'m:'m bd' m bd' m bd' bt bt bt bt bt bt bd' bm:'m bd' bd' bd' bd' b40863c0863 将器件481a0000.SPI 绑定到驱动器 OMAP2_mcspi [ 14.498127] kobject:'omap2_mcspi'(ddbce880):kobject_uevent_env [ 14.503788] kobject:'omap2_mcspi'(ddbce880):fill_kobj_path:'/bus/platform/drivers/omap2_mcspi
但是、我仍然看不到任何尝试调用 spidev_probe 的内容、并且我期望的/dev/entries 永远不会出现
我可以在/sys/bus/spi/devices 下找到这些条目
lrwxrwxrwx 1 root root 用户0 Jan 1 00:12 spi1.0 ->../../../devices/platform/ocp/48030000.spi/spi_master/spi1/spi1.0 lrwxrwxrwx 1 root 用户0 Jan 1 00:12 spi2.0 ->../../../devices/platform/ocp/481a0000.spi/spi_master/spi2/spi2.0 lrwxrwxrwx 1 root 用户0 Jan 1 00:12 spi2.1 ->../../../devices/platform/ocp/481a0000.spi/spi_master/spi2/spi2.1
有什么建议可供我查看?
感谢你的帮助。
祝你一切顺利、
Richard