嵌入式开发者社区

标题: AM5708 SPI FLASH驱动开发问题 [打印本页]

作者: czs----Tronlong    时间: 2019-12-4 09:59
标题: AM5708 SPI FLASH驱动开发问题
我们有一个应用场景是从ARM端对FPGA的程序进行升级,具体的思路是由ARM通过SPI总线对FPGA的Flash进行更新。

1.    我们使用的spi1,设备树是这样配置的:

    &mcspi1 {
        status = "okay";
        pinctrl-names = "default";
        pinctrl-0 = <&spi1_pins_default>;
          ti,pindir-d0-out-d1-in;

          m25p80@0 {
                    #address-cells = <1>;
                    #size-cells = <1>;
                    compatible  = "s25fl256s1","spi-flash";
                    spi-max-frequency = <32000000>;
                    reg = <0>;
                    m25p,fast-read;

                    partition@0 {
                              label = "fpga";
                              reg = <0x00000000 0x02000000>;
                    };
          };
};


        spi1_pins_default: spi1_pins_default {
                pinctrl-single,pins = <
                            DRA7XX_CORE_IOPAD(0x37a4, (PIN_OUTPUT | MUX_MODE0))          /* spi1_sclk.spi1_sclk (C24) */
                            DRA7XX_CORE_IOPAD(0x37a8, (PIN_INPUT | MUX_MODE0))          /* spi1_d1.spi1_d1 (D24) */
                            DRA7XX_CORE_IOPAD(0x37ac, (PIN_OUTPUT | MUX_MODE0))          /* spi1_d0.spi1_d0 (D25) */
                            DRA7XX_CORE_IOPAD(0x37b0, (PIN_OUTPUT_PULLUP | MUX_MODE0)) /* spi1_cs0.spi1_cs0 (B24) */
                >;
        };

2.    硬件电路如下:

[attach]5975[/attach]

3.    配置完成后,没有发现spi或mtd相关的设备节点,查看dmesg,发现:

root@AM57xx-Tronlong:/sys/class/mtd# dmesg | grep spi
[   10.558944] m25p80 spi1.0: unrecognized JEDEC id bytes: 00, 00, 00

请问是哪个地方的配置有问题啊?我们这边应该怎么修改,谢谢
作者: czs----Tronlong    时间: 2019-12-4 10:10
Dear ,

      根据您提供的报错信息,目前驱动应该是已经生效,但是无法正常扫描到SPI FLASH的ID,问题原因可能有两个:一是驱动配置有误,而是FLASH硬件有问题。
       若是驱动问题,建议您可以:
1.    参考Documentation/devicetree/bindings/mtd/jedec,spi-nor.txt文档配置;

[attach]5976[/attach]

2.    参考我司TL5728F-EVM设备树文件中的SPI FLASH进行配置:

[attach]5977[/attach]
作者: 梁淑怡-Tronlong    时间: 2019-12-5 09:39
您好,采用以上方法测试如下:
&mcspi1 {
        status = "okay";
        pinctrl-names = "default";
        pinctrl-0 = <&spi1_pins_default>;
          ti,pindir-d0-out-d1-in;

          spiflash@0 {
                    #address-cells = <1>;
                    #size-cells = <1>;
                    spi-tx-bus-width = <1>;
                    spi-rx-bus-width = <1>;
                    compatible  = "s25fl256s1", "jedec,spi-nor";
                    spi-max-frequency = <50000000>;
                    reg = <0>;

                    partition@0 {
                              label = "fpga";
                              reg = <0x00000000 0x02000000>;
                    };
          };
};
进行了测试,还是会出现:
root@AM57xx-Tronlong:~# dmesg | grep spi
[    9.836254] m25p80 spi1.0: unrecognized JEDEC id bytes: 00, 00, 00

随后,又采用compatible  = "s25fl256s1"进行了测试,现象是一样的。


尝试性的采用compatible  = "m25p80-nonjedec", 会创建mtd设备节点,但是查看/proc/mtd的情况,size只有0x100000, eraseSize为0x10000.


请问这有可能是什么原因造成的呢?


谢谢!





作者: czs----Tronlong    时间: 2019-12-6 11:58
根据您配置的compatible  = "m25p80-nonjedec",查询底层驱动所生成的size就是0x100000, 这个是没有问题的,具体如下图

[attach]5984[/attach]




欢迎光临 嵌入式开发者社区 (https://www.51ele.net/) Powered by Discuz! X3.4