This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] Linux/AM3352:SPI 接口、带 MCP23S18

Guru**** 2581045 points
Other Parts Discussed in Thread: AM3352, TPS65217

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/629535/linux-am3352-spi-interface-with-mcp23s18

器件型号:AM3352
主题中讨论的其他器件: TPS65217

工具/软件:Linux

我不熟悉嵌入式 Linux。 我不使用 Sitara SDK、Linux 构建目录来自 Yocto 构建系统。  

我正在尝试让 MCP23S18与 am3352一起工作。  MCP23S18是 SPI GPIO 端口扩展器。

我在.config 中启用了 CONFIG_SPI_SPIDEV 和 CONFIG_GPIO_MCP23S08。 设备树中的相关摘录:

am33xx_pinmux{(am33xx_pinmux)}
pinctrl-names ="default";

spi0_pins:pinmux_spi0_pins{
pinctrl-single、pins =<
AM33XX_IOPAD (0x150、PIN_OUTPUT | MUX_MODE0)//(A18) spi0_SCLK/spi0_SCLK
AM33XX_IOPAD (0x154、PIN_INPUT | MUX_MODE0)//(B18) spi0_d0.spi0_d0
AM33XX_IOPAD (0x158、PIN_OUTPUT | MUX_MODE0)//(B17) spi0_D1.spi0_D1
AM33XX_IOPAD (0x15c、PIN_OUTPUT 上拉| MUX_MODE0)//(A17) spi0_cs0.spi0_cs0
AM33XX_IOPAD (0x160、PIN_OUTPUT 上拉| MUX_MODE0)//(B16) spi0_CS1.spi0_CS1
>;
};

};

spi0{(&S)
状态="正常";
pinctrl-names ="default";
pinctrl-0 =<&spi0_PINs>;
};

spi0{(&S)
gpio1:gpio1@1{
兼容="微芯片、mcp23s18";
reg =<1>;
GPIO 控制器;
#GPIO-cells =<2>;
SPI-Prese-mask =<0x01>;
SPI-max-frequency =<1000000>;
};
NVRAM:NVRAM {
地址单元格=<1>;
大小单元格=<1>;
兼容="Spansion、mr25h10";//可能需要更改 Spansion。
reg =<0>;
SPI-max-frequency =<40000000>;
m25p、快速读取;
};
};

现在我不确定 应该如何 从用户空间连接驱动程序。 /dev/dev 中或/sys 中的某个位置是否应该有文件节点? 在我的目标上、没有任何与端口扩展器、GPIO 等相关的新内容

我可以看到从器件树中提取了一些与器件相关的文件、但我认为它们不能用于控制器件:

root@AM335x-EVM:/sys/class/spi_master/spi1/spi1.1/of_node ls
GPIO 单元 GPIO 控制器寄存器 SPI 存在屏蔽
兼容名称 SPI-max-frequency

我可以通过 spidev 驱动程序访问器件、以便我知道硬件是正确的。 为此、我必须在 器件文件中包含 spidev。

compatible ="microchip、mcp23s18";> compatible ="linux、spidev";

那么、有人知道如何从用户空间访问此器件、我的器件树/配置是否正确?

谢谢

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    软件团队已收到通知。 他们将在这里作出回应。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 David:

    Linux 论坛正在进行讨论:
    e2e.ti.com/.../2321156

    请查看并尝试我提供的建议。  这适用于 SPI RTC、但也适用于 GPIO 扩展器。  

    [引述]现在我不确定 应该如何 从用户空间连接驱动程序。 是否应该在/dev/中 或/sys 中的某个位置有文件节点?

    您应该在/dev/dev 中看到它。

    此致、
    Yordan

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Yordan、您好!

    我已经尝试将驱动程序作为模块安装,但它仍然没有在 DEV/目录中注册。

    当我使用 insmod GPIO-mcp23s08.ko 加载模块时、我从驱动程序中得到一个错误、报告没有 SPI-prese-mask。 我现已将其修正为: microchip、SPI-prese-mask =<1>;

    我还在运行 insmod GPIO-mcp23s08.ko 时探测了 SPI 物理接口,但信号上没有信号。 由于我已成功地将此总线与 spidev 一起使用、我知道 接口在某种程度上配置正确。  

    要与 spidev 配合使用、我在设备树中使用以下命令:

    spi0{(&S)
    spidev@1{
    地址单元格=<1>;
    reg =<1>;
    GPIO 控制器;
    #GPIO-cells =<2>;
    SPI-max-frequency =<1000000>;
    兼容="linux、spidev";
    };
    };

    我的设备树和 mcp23s18现在如下所示:

    spi0{(&S)
    gpio1:gpio1@1{
    兼容="MCP、mcp23s18";
    #GPIO-cells =<2>;
    GPIO 控制器;
    reg =<1>;
    Microchip、SPI-Prese-mask =<1>;
    SPI-max-frequency =<1000000>;
    #interrupt-cells =<2>;
    };
    /*
    NVRAM:NVRAM {
    地址单元格=<1>;
    大小单元格=<1>;
    兼容="Spansion、mr25h10";//可能需要更改 Spansion。
    reg =<0>;
    SPI-max-frequency =<40000000>;
    m25p、快速读取;
    };
    *
    };

    设备树似乎已将一些数据传递给 sysfs:  

    root@AM335x-EVM:/sys/class/spi_master/spi1/spi1.1/of_node ls
    GPIO 单元微芯片、SPI 存在屏蔽
    #interrupt-cells 名称
    兼容稳压器
    GPIO 控制器 SPI 最大频率

    我已经在 驱动程序中放置了一些调试 printk、pdata = dev_get_platdata (&spi->dev);似乎不会返回任何内容。 驱动程序在退出 mcp23s08_probe 函数  

    if (!chips){
    return -ENODEV;

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!

    您的&spi0节点中是否有以下内容:
    状态="正常";
    pinctrl-names ="default";
    pinctrl-0 =<&spi0_PINs>;

    正如我看到的、您只需使用:
    spi0{(&S)
    gpio1:gpio1@1{
    兼容="MCP、mcp23s18";
    #GPIO-cells =<2>;
    GPIO 控制器;
    reg =<1>;
    Microchip、SPI-Prese-mask =<1>;
    SPI-max-frequency =<1000000>;
    #interrupt-cells =<2>;
    };
    /*
    NVRAM:NVRAM {
    地址单元格=<1>;
    大小单元格=<1>;
    兼容="Spansion、mr25h10";//可能需要更改 Spansion。
    reg =<0>;
    SPI-max-frequency =<40000000>;
    m25p、快速读取;
    };
    *
    };

    您如何分配相应的 spi0引脚? 您实际上是如何启用 SPI0的? 您的 DTS 节点应如下所示:
    spi0{(&S)
    + STATUS ="确定";
    + pinctrl-names ="default";
    + pinctrl-0 =<&spi0_PINs>;
    gpio1:gpio1@1{
    兼容="MCP、mcp23s18";
    #GPIO-cells =<2>;
    GPIO 控制器;
    reg =<1>;
    Microchip、SPI-Prese-mask =<1>;
    SPI-max-frequency =<1000000>;
    #interrupt-cells =<2>;
    };
    /*
    NVRAM:NVRAM {
    地址单元格=<1>;
    大小单元格=<1>;
    兼容="Spansion、mr25h10";//可能需要更改 Spansion。
    reg =<0>;
    SPI-max-frequency =<40000000>;
    m25p、快速读取;
    };
    *
    };

    此致、
    Yordan
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您还能显示您的引导日志(dmesg)吗? 您是否看到与 MCP23S18相关的任何内容?

    此致、
    Yordan
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Yordan、您好!   

    是的、我将其与 pinmux 数据一起放在单独的.dtsi 文件中。

    在.dtsi 文件中:

    am33xx_pinmux{(am33xx_pinmux)}
    pinctrl-names ="default";

    spi0_pins:pinmux_spi0_pins{
    pinctrl-single、pins =<
    AM33XX_IOPAD (0x150、PIN_OUTPUT | MUX_MODE0)//(A18) spi0_SCLK/spi0_SCLK
    AM33XX_IOPAD (0x154、PIN_INPUT | MUX_MODE0)//(B18) spi0_d0.spi0_d0
    AM33XX_IOPAD (0x158、PIN_OUTPUT | MUX_MODE0)//(B17) spi0_D1.spi0_D1
    AM33XX_IOPAD (0x15c、PIN_OUTPUT 上拉| MUX_MODE0)//(A17) spi0_cs0.spi0_cs0
    AM33XX_IOPAD (0x160、PIN_OUTPUT 上拉| MUX_MODE0)//(B16) spi0_CS1.spi0_CS1
    >;
    };

    };

    spi0{(&S)
    状态="正常";
    pinctrl-names ="default";
    pinctrl-0 =<&spi0_PINs>;
    };

    在.dts 文件中:


    spi0{(&S)
    gpio1:gpio1@1{
    兼容="MCP、mcp23s18";
    #GPIO-cells =<2>;
    GPIO 控制器;
    reg =<1>;
    Microchip、SPI-Prese-mask =<1>;
    SPI-max-frequency =<1000000>;
    #interrupt-cells =<2>;
    };
    /*
    NVRAM:NVRAM {
    地址单元格=<1>;
    大小单元格=<1>;
    兼容="Spansion、mr25h10";//可能需要更改 Spansion。
    reg =<0>;
    SPI-max-frequency =<40000000>;
    m25p、快速读取;
    };
    *
    };

    我可以在 sys/class/spi_master/spi1/spi1.1下看到 SPI 总线、我可以使用 spidev 访问它、因此我认为它是正确的。  

    至于 dmesg。 如果我将其重新启用为内置驱动程序,并且 MCP23S08=y。 则引导日志为:


    正在启动内核...
    [0.000000]在物理 CPU 0x0上引导 Linux
    [0.000000] Linux 版本4.9.0-00013-g3dc39d9ca875-m脏(Dave@UKN0101)(gcc 版本7
    [0.000000] CPU:ARMv7处理器[413fc082]修订版2 (ARMv7)、CR=10c5387d
    [0.000000] CPU:PIPT/VIPT 非混叠数据高速缓存、VIPT 别名指令高速缓存
    [0.0000M]、共个:FDT:机器模型:TI AM335x MKT DP48H
    [0.000000] CMA:保留0x9e800000处的24 MIB
    [0.000000]内存策略:数据高速缓存写回
    [0.000000] CPU:所有 CPU 均在 SVC 模式下启动。
    [0.000000] AM335X ES2.1 (NEON)
    [0.000000]在区域顺序和移动分组中构建了1个区域列表。 总页数:129920
    [0.000000]内核命令行:console=ttyO0、115200n8 root=PARTUUID =b6170066-02 RW RT
    [0.000000] PID 哈希表条目:2048 (顺序:1、8192字节)
    [0.000000]条目高速缓存散列表条目:65536 (顺序:6、262144字节)
    [0.000000] inode 高速缓存散列表条目:32768 (顺序:5、131072字节)
    [0.000000]内存:481592K/524288K 可用(8192K 内核代码、298K rwdata、2492K r)
    [0.000000]虚拟内核内存布局:
    [0.000000]矢量:0xff0000-0xff1000 (4KB)
    [0.000000] fixmap:0xc00000 - 0xc00000 (3072 KB)
    [0.000000] vmalloc:0xe0800000 - 0x0x800000 (496MB)
    [0.000000]低内存:0xC0000000 - 0xe0000000 (512 MB)
    [0.000000] pkmap:bbfe00000 - 0xC0000000 (2 MB)
    [0.000000]模块:bbf000000 - bbbfe00000 (14 MB)
    [0.000000].text:0xc0008000 - 0xc0900000 (9184 KB)
    [0.000000].init:0xc0c00000 - 0xc0d00000 (1024KB)
    [0.000000].data:0xc0d00000 - 0xc0d4aa78 (299 KB)
    [0.000000].bss:0xc0d4c000 - 0xc0d8e658 (266 KB)
    [0.000000] slub:HWalign=64、order=0-3、MinObjects=0、CPU=1、Nodes=1
    [0.000000]可抢占的分层 RCU 实现。
    [0.000000]叶扇出的生成时间调整为32。
    [0.000000] NR_IRQ:16 nr_IRQ:16 16.
    [0.000000] IRQ:在0xfa200000 (修订版5.0)处找到具有128个中断的 INTC
    [0.000000] OMAP 时钟事件源:timer2为24000000 Hz
    [0.000019] sched_clock:24MHz 时为32位、分辨率为41ns、每89478484971ns 换行一次
    [0.000047]时钟源:Timer1:屏蔽:0xFFFFFFFF max_cycles:0xFFFFFFFF、max_idle_ns:s
    [0.000062] OMAP 时钟源:Timer1为24000000 Hz
    [0.000556] clocksource_probe:未找到匹配的时钟源
    [0.000781]控制台:彩色虚拟设备80x30
    [0.000814]警告:您的'console=ttyO0'已被'ttyS0"替代
    [0.000823]这样可以确保您仍然看到内核消息。 请
    [0.000832]更新您的内核命令行。
    [0.000860]校准延迟环路... 548.86 BogoMips (lpj=2744320)
    [0.048868] pid_max:默认值:32768最小值:301
    [0.049050]安装高速缓存散列表条目:1024 (顺序:0、4096字节)
    [0.049065]安装点缓存散列表条目:1024 (顺序:0、4096字节)
    [0.050134] CPU:测试写入缓冲区一致性:好
    [0.050612]为0x80100000 - 0x80100058设置静态标识映射
    [0.053640] devtmpfs:已初始化
    [0.067006] VFP 支持 v0.3:实施者41架构3第30部分版本 c 修订版3
    [0.067496]时钟源:Jiffies:MASK:0xFFFFFFFF max_cycles:0xFFFFFFFF、max_idle_NSS
    [0.070150] pinctrl 内核:已初始化 pinctrl 子系统
    [0.071812] NET:注册协议系列16.
    [0.07451] DMA:为原子相干分配预先分配的256 KiB 池
    [0.092915] OMAP-hwmod:debugss:_wait_target_disable 失败
    [0.178852]空闲:使用调速器梯
    [0.208837]空闲:使用调速器菜单
    [0.217116] OMAP GPIO 硬件版本0.1
    [0.236788]硬件断点:不支持调试架构0x4。
    [0.280709] EDMA 49000000.EDMA:TI EDMA DMA 引擎驱动程序
    [0.284218] vgaarb:已加载
    [0.284912] SCSI 子系统已初始化
    [0.285303] usbcore:注册的新接口驱动程序 usbfs
    [0.285403] usbcore:注册的新接口驱动程序集线器
    [0.285535] usbcore:注册的新设备驱动程序 USB
    [0.286023] omap_i2c 44e0b000.i2c:找不到节点/ocp/l4_wkup@44c000e 的 pctldev
    [0.286098] omap_i2c 4802a000.i2c:找不到节点/ocp/l4_wkup@44c000e 的 pctldev
    [0.286225]介质:Linux 介质接口:v0.10
    [0.286301] Linux 视频捕捉接口:v2.00
    [0.286361] pps_core:LinuxPPS API 版本。 1已注册
    [0.286373] pps_core:软件版本 5.3.6 -版权所有2005-2007 Rodolfo Giometti
    [0.286407] PTP 时钟支持已注册
    [0.286630] EDAC MC:版本:3.0.0
    [0.287825] OMAP-mailbox 480c8000.mailbox:OMAP mailbox 修订版0x400
    [0.288230]已初始化高级 Linux 声音架构驱动程序。
    [0.290015]时钟源:切换到时钟源 Timer1
    [0.305014] NET:注册协议系列2.
    [0.306082] TCP 建立哈希表条目:4096 (顺序:2、16384字节)
    [0.306160] TCP 绑定哈希表条目:4096 (顺序:2、16384字节)
    [0.306227] TCP:配置哈希表(建立4096 BIND 4096)
    [0.306321] UDP 哈希表条目:256 (顺序:0、4096字节)
    [0.306349] UP-Lite 哈希表条目:256 (顺序:0、4096字节)
    [0.306540] NET:注册协议系列1.
    [0.307083] RPC:注册后命名的 UNIX 套接字传输模块。
    [0.307102] RPC:注册的 UDP 传输模块。
    [0.307112] RPC:注册的 TCP 传输模块。
    [0.307121] RPC:注册的 TCP NFSv4.1反向通道传输模块。
    [0.308308]硬件性能事件:通过 armv7_cortex_A8 PMU 驱动器启用、提供5个计数器
    [0.310743] futex 散列表条目:256 (顺序:-1、3072字节)
    [0.311691]工作集:TIMESTAMP_BITS =14 max_order=17 bucke_order=3
    [0.322966] squashfs:版本4.0 (2009/01/31) Phillip Lougher
    [0.324237] NFS:注册 id_resolver 密钥类型
    [0.324296]注册了钥匙类型 id_resolver
    [0.324308]注册密钥类型 id_legacy
    [0.324373] NTFS:驱动程序2.1.32 [Flags:R/O]。
    [0.326879]块层 SCSI 通用(BSG)驱动程序0.4版已加载(主要247)
    [0.326906]寄存了 IO 调度程序 NOP
    [0.326917]已登记 IO 调度程序的最后期限
    [0.327127]已注册 IO 调度程序 cfq (默认值)
    [0.328917] pinctrl-single 44e10800.pinmux:142引脚、PA f9e10800大小568
    [0.418628]串行:8250/16550驱动程序,10个端口,禁用 IRQ 共享
    [0.424354] 44e09000.serial: ttyS0 at MMIO 0x44e09000 (IRQ = 158、base_baud = 3000000) 0
    [1.027773]控制台[ttyS0]已启用
    [1.032491][DRM]已初始化
    [1.046401]循环:模块已加载
    [1.051620] pinctrl-single 44e10800.pinmux:多路复用器偏移超出范围:0xffffff950 (0x238)
    [1.059681] pinctrl-single 44e10800.pinmux:无法为 pinmux_spi0_pix 添加函数
    [1.070389] SPI 器件匹配成功
    [1.073994]类型4
    [1.075928]&SPI->dev=ddbb5970
    [1.078992]!pdata
    [1.081074]!芯片
    [1.084284] libphy:固定 MDIO 总线:探测
    [1.090705] pinctrl-single 44e10800.pinmux:多路复用器偏移超出范围:0xffffff90c (0x238)
    [1.098763] pinctrl-single 44e10800.pinmux:无法为 cpsw_default 4x 添加函数
    [1.107672] pinctrl-single 44e10800.pinmux:多路复用器偏移超出范围:0xffffff90c (0x238)
    [1.115742] pinctrl-single 44e10800.pinmux:无法为 cpsw_sleep 429x 添加函数
    [1.190123] DaVinci_MDIO 4a101000.MDIO:达芬奇 MDIO 修订版本1.6
    [1.196269] DaVinci_MDIO 4a101000.MDIO:检测到的 phy 掩码 FFFFFFFE
    [1.203673] libphy: 4a101000.mdio:探测
    [1.207729] DaVinci_MDIO 4a101000.MDIO:PHY[0]:器件4a101000.MDIO:00、驱动程序 SMSC L0
    [1.218004] cpsw 4a100000.以太网:检测到的 MACID = a0:F6:FD:37:E7:94
    [1.226484] PEGASUS:v0.0.3 (2013/25)、Pegasus/Pegasus II USB 以太网驱动程序
    [1.234230] usbcore:注册的新接口驱动程序峰值
    [1.240097] usbcore:注册的新接口驱动程序 a6
    [1.245594] usbcore:注册的新接口驱动程序 ax88179_178a
    [1.251839] usbcore:注册的新接口驱动程序 CDC_ether
    [1.257793] usbcore:注册的新接口驱动程序 smsc75xx
    [1.26367] usbcore:注册的新接口驱动程序 smsc95xx
    [1.269524] usbcore:注册的新接口驱动程序 net1080
    [1.275300] usbcore:注册了新接口驱动程序 CDC_Subset
    [1.281336] usbcore:注册的新接口驱动程序 zaurus
    [1.287050] usbcore:注册的新接口驱动程序 CDC_NCM
    [1.293271] EHCI_hcd:USB 2.0 "增强型"主机控制器(EHCI)驱动程序
    [1.299835] EHI-PCI:EHCI PCI 平台驱动程序
    [1.304426] EHCI 平台:EHCI 通用平台驱动程序
    [1.309882] ohci_hcd:USB 1.1 'Open'主机控制器(OHCI)驱动程序
    [1.316327] ohci-PCI:OHCI PCI 平台驱动程序
    [1.320924] ohci 平台:OHCI 通用平台驱动程序
    [1.326870] usbcore:注册了新接口驱动程序 USB-STORAGE
    [1.333546] mousedev:PS/2鼠标设备,适用于所有鼠标
    [1.339947] i2c /dev/entries 驱动程序
    [1.346034] sdhci:安全数字主机控制器接口驱动程序
    [1.352385] sdhci:版权所有(c) Pierre Osman
    [1.357136] pinctrl-single 44e10800.pinmux:多路复用器偏移超出范围:0xffffff900 (0x238)
    [1.365269] pinctrl-single 44e10800.pinmux:无法为 pinmux_eMMC_pix 添加函数
    [1.430319] Synopsys Designware 多媒体卡接口驱动程序
    [1.440090] sddhci-pltfm:SDHCI 平台和驱动程序助手
    [1.446572] ledtrig-CPU:已注册以指示 CPU 上的活动
    [1.453096] usbcore:注册的新接口驱动程序 usbhid
    [1.458725] usbhid:USB HID 内核驱动程序
    [1.468400] NET:注册协议系列10.
    [1.474861] SIT:IPv6、IPv4和基于 IPv4隧道的 MPLS 驱动程序
    [1.482224] NET:注册协议系列17.
    [1.487042]注册的密钥类型 DNS_旋 变传感器
    [1.491761] OMAP_VOLTGE_LARD_INIT:未添加电压驱动器支持
    [1.498428]支持 ThumbEE CPU 扩展。
    [1.502822]正在注册 SWP/SWPB 仿真处理程序
    [1.518121] mmc0:主机不支持只读开关、假设启用了写功能
    [1.532281] mmc0:地址为 e624的新型高速 SDHC 卡
    [1.538679] mmcblk0:mmc0:e624 SL32G 29.7 GiB
    [1.549089] random:快速初始化完成
    [1.552926] mmcblk0:P1 P2
    [1.559173] tps65217 0-0024:TPS65217 ID 0x7版本1.2
    [1.566630] OMAP_i2c 44e0b000。i2c:400kHz 时的总线0修订版0.11
    [1.574697] OMAP_i2c 4802a000.i2c:总线1修订版0.11、频率为400kHz
    [1.581933]内核:_opp_supported_by_regulators:opp minumV:1259300 maxuV:1310700、notr
    [1.592021] CPU CPU0:_opp_add:稳压器不支持 opp (720000000)
    [1.599271]内核:_opp_supported_by_regulators:opp minumV:1200500 maxuV:1249500、notr
    [1.609297] CPU CPU0:_opp_add:稳压器不支持 opp (600000000)
    [1.616862] cpufreq:cpufreq_online:cpu0:以未列出的 freq 运行:550000 KHz
    [1.624284] CPU CPU0:DEV_PM_OPP_SET_RATE:无法找到 FREQ 5500000的当前 OPP)
    [1.633274] cpufreq:cpufreq_online:cpu0:unlisted initial frequency 更改为:5000Z
    [1.64332] ALSA 器件列表:
    [1.646377]找不到声卡。
    [1.726471] EXT4-FS (mmcblk0p2):已安装文件系统、具有有序数据模式。 OPTS:(NUL)
    [1.734797] VFS:在设备179:2上安装了根(ext4文件系统)。
    [1.748556] devtmpfs:已安装
    [1.754268]释放未使用的内核内存:1024K (c0c00000 - c0d00000)
    [2.130886] systemd[1]:生成时间之前的系统时间、提前时钟。
    [2.243099] systemd[1]:systemd 230在系统模式下运行。 (+PAM -审计-SELinux +IMA)
    [2.262750] systemd[1]:检测到架构 ARM。
    欢迎来到 Arago 2017.05!
    [2.304989] systemd[1]:将主机名设置为 。
    [2.667142] systemd[1]:[/lib/systemd/system/gadget-init.service:15]未知 lvalue 'E'
    [3.032621] systemd[1]:sysinit.target:在 sysinit.target/start 上找到订购周期
    [3.040658] systemd[1]:sysinit.target:找到对 alignment.service/start 的依赖
    [3.048406] systemd[1]:sysinit.target:找到对 basic.target/start 的依赖项
    [3.055804] systemd[1]:sysinit.target:找到了对 sockets.target/start 的依赖
    [3.063300] systemd[1]:sysinit.target:找到对 dropbear.socket/stop 的依赖
    [3.070780] systemd[1]:sysinit.target:找到了对 sysinit.target/start 的依赖性
    [跳过]找到订购周期,跳过 alignment.service
    [确定]正在侦听 udev 控制套接字。
    [确定]侦听网络服务 Netlink 套接字。
    [确定]侦听 Syslog 套接字。
    [确定]收听日志套接字。
    [确定]已到达目标远程文件系统。
    [确定]收听 Journal Socket (/dev/log)。
    [确定]已开始将密码请求转发到 Wall Directory Watch。
    [确定]已达到目标交换。
    [确定]收听/dev/initctl 兼容性命名管道。
    [确定]正在侦听 udev 内核套接字。
    [确定]已创建切片系统切片。
    [确定]已创建片 system-Getty.slice。
    正在启动设置虚拟控制台...
    正在安装 POSIX 消息队列文件系统...
    正在安装调试文件系统...
    正在安装临时目录...
    [确定]已创建层用户和会话层。
    [确定]已到达目标层面。
    [确定]已开始向控制台目录监视发送密码请求。
    [确定]已到达目标路径。
    正在启动日记账服务...
    正在启动加载内核模块...
    正在开始重新装载根文件系统和内核文件系统...
    [确定]已创建片系统序列\x2dgetty.slice。
    [3.978810] EXT4-FS (mmcblk0p2):已重新安装。 OPTS:(空)
    正在开始在/dev/中 创建静态设备节点...
    [确定]已安装调试文件系统。
    [确定]已挂载 POSIX 消息队列文件系统。
    [确定]已挂载的临时目录。
    [确定]已启动日志服务。
    [确定]已启动设置虚拟控制台。
    [失败]启动加载内核模块失败。
    有关详细信息、请参阅'stemctl status systemd-modules-load.service'。
    [确定]已开始重新装载根和内核文件系统。
    [确定]已开始在/dev/中 创建静态设备节点。
    正在启动 udev 内核设备管理器...
    [确定]已达到目标本地文件系统(预)。
    安装/var/volatile...
    安装/media/ram...
    正在启动 udev 冷插拔所有设备...
    正在开始应用内核变量...
    正在开始将日志刷新到持久存储...
    [确定]已安装/var/volatile.
    [确定]已安装/media/ram.
    [确定]已开始应用内核变量。
    [确定]已启动 udev 内核设备管理器。
    [4.992567] systemd-journale[72]:已收到从 PID 刷新运行时日志的请求1.
    [确定]已到达目标本地文件系统。
    正在启动加载/保存随机种子...
    [确定]已开始将日志刷新到持久存储。
    [确定]已开始加载/保存随机种子。
    正在开始创建易失性文件和目录...
    [确定]已开始创建易失性文件和目录。
    正在启动网络时间同步...
    正在开始更新 utmp 关于系统引导/关机...
    [确定]已开始更新关于系统引导/关机的参数。
    [确定]已开始网络时间同步。
    [确定]已同步达到目标系统时间。
    正在开始同步系统和硬件时钟...
    [失败]无法启动同步系统和硬件时钟。
    有关详细信息、请参阅'stemctl status sync-clocks.service'。
    [确定]找到设备/dev/ttyS0.
    [确定]已启动 udev 冷插拔所有设备。
    [确定]已达到目标系统初始化。
    [确定]开始每日清理临时目录。
    [确定]达到目标计时器。
    [确定]侦听 Avahi mDNS/DNS-SD 堆栈激活套接字。
    [ OK ]正在收听 D 总线系统消息总线插座。
    [确定]正在侦听 RPCbind 服务器激活套接字。
    [确定]正在收听 dropbear.socket。
    [确定]已达到目标套接字。
    [确定]已到达目标基本系统。
    正在开始打印有关 GPLv3封装的通知...
    [确定]已启动系统日志服务。
    正在启动 Avahi mDNS/DNS-SD 堆栈...
    [确定]已启动内核日志服务。
    [确定]启动了 D-Bus 系统消息总线
    [确定]启动 Avahi mDNS/DNS-SD 堆栈。
    正在启动网络服务...
    正在启动登录服务...
    正在启动 uim-sysfs.service ...
    正在启动电话服务...
    [确定]找到设备/dev/ttyS3.
    [确定]已启动网络服务。
    [11.900873] Net eth0:正在初始化 cpsw 版本1.12 (0)
    [12.030903] SMSC LAN8710/LAN8720 4a100.MDIO:00:连接的 PHY 驱动程序[SMSC LAN8710/L)
    [12.274627] IPv6:ADDRCONF (NETDEV_UP):eth0:链路未就绪
    [确定]已启动电话服务。
    [确定]侦听加载/保存射频终止开关状态/dev/rfkill 观察。
    [确定]已到达目标网络。
    正在开始网络名称解析...
    正在启动允许用户会话...
    [确定]使用 ipsec.conf 启动 StrongSwan IPsec IKEv1/IKEv2守护程序。
    正在开始启用和配置 wl18xx 蓝牙堆栈...
    正在启动简单网络管理协议(SNMP)守护程序....
    正在启动具有轻量级系统要求的 Lightning Fast Webserver ...
    [确定]已启动允许用户会话。
    [确定]启动登录服务。
    [确定]已在 tty1上启动 Getty。
    [确定]已在 ttyS3上启动串行 Getty。
    [13.866418] FAT-FS (mmcblk0p1):卷未正确卸载。 某些数据可能是公司数据
    [确定]已在 ttyS0上启动串行 Getty。
    [14.240977] cpsw 4a100000.以太网 eth0:链路向上- 100Mbps/全-流控制 Rx/TX
    [14.307362] IPv6:ADDRCONF (NETDEV_CHANGE):eth0:链路就绪
    [确定]已开始网络名称解析。
    [确定]已开始启用和配置 wl18xx 蓝牙堆栈。
    [确定] Lightning 启动了具有轻量级系统要求的 Fast Webserver。
    [确定]找到设备/dev/mmcblk0p1.
    [确定]启动简单网络管理协议(SNMP)守护程序。
    [19.901808] random: crng init done.(随机:完成 crng 初始化。

    我看不到与 mcp23s18有什么关系。 驱动程序肯定正在构建中。 我可以在驱动程序目录中看到输出文件、并且在 SPI 存在屏蔽错误时、引导日志中曾经出现警告。  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Yordan、您好!   

    我在这方面取得了一些进展。 如果我更改  

    兼容="MCP、mcp23s18";

    更改为

    兼容="MCP、mcp23s17";

    然后、驱动程序会识别该器件、我可以在 DEV 和 SYS/CLASS/GPIO/gpioippiip496中看到该器件。  

    有趣 的是、使用"MCP、mcp23s18"、驱动程序甚至不会尝试与物理设备连接。 当在 驱动程序中明确定义 mcp23s18时、就好像驱动程序认为 mcp23s18不是有效的部件:

    静态常量结构 spi_device_id mcp23s08_id[]={
    {"mcp23s08"、MCP_TYPE_S08}、
    {"mcp23s17"、MCP_TYPE_S17}、
    {"mcp23s18"、MCP_TYPE_S18}、
    {},
    };

    mcp23s18 和 mcp23s17的驱动程序运行情况不会有任何差异、因此无论驱动程序在 mcp23s18上都能正常运行 、还是从未使用 mcp23s18对驱动程序进行过测试。 当我到达那里时,我会用我的发现更新这个主题。。。

    感谢你的帮助。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!

    很抱歉耽误你的时间。 我是 ooo。
    对于 mcp23s18、驱动程序应该可以正常工作。 我不知道为什么内核无法识别.compatible ="microchip、mcp23s18"。
    无论如何、请发布使用 compatible ="MCP、mcp23s17"的结果;

    此致、
    Yordan