嵌入式开发者社区
标题:
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