我是刚编好的 U-Boot 2020.04 用于 PINE64 ROCK64 媒体板。它编译得很好,没有错误。但是当我试图探测SPI闪存时,我遇到了一个问题。
U-Boot命令行的输出。
=> sf probe
Invalid bus 0 (err=-19)
Failed to initialize SPI flash at 0:0 (error -19)
=>
板上的Device-Tree SPI部分。
&spi0 {
status = "okay";
spiflash@0 {
compatible = "jedec,spi-nor";
reg = <0>;
/* maximum speed for Rockchip SPI */
spi-max-frequency = <50000000>;
};
};
我也试过不同的总线和芯片选择,但都没有用 根据板子上的原理图,SPI闪存器件 GD25Q128CS 是用的。
我是如何编纂这些资料的。
$ make rock64-rk3328_defconfig
$ make CROSS_COMPILE=/path/to/gcc-arm-9.2-2019.12-x86_64-aarch64-none-elf/bin/aarch64-none-elf- -j 4
我使用了官方的 海湾合作委员会 埠 ARM网站.
还尝试了旧版和新版的U-Boot。同样的问题。我按照U-Boot文档的要求刷新了microSD卡。
$ dd if=idbloader.img of=/dev/mmcblk0 seek=64
$ dd if=u-boot.itb of=/dev/mmcblk0 seek=16384
我怎么才能缩小这个问题的范围呢?是不是少了什么东西?
更新。
似乎U -Boot没有从板子上加载SPI驱动。
=> dm tree
[...]
spi 0 [ ] rockchip_spi |-- spi@ff190000
spi_flash 0 [ ] spi_flash_std | `-- spiflash@0
[...]
=>
我也试过了
我在板子的文件中加入了以下配置。
CONFIG_ROCKCHIP_SPI=y
CONFIG_SPI_FLASH=y
CONFIG_SPI_FLASH_GIGADEVICE=y
在 驱动文件 我试着把一个简单的 printf()
在函数的开头 rockchip_spi_probe()
. 我还在驱动中添加了一个兼容的标识符(与Device-Tree中的字符串相同)。但不幸的是,probe函数从未被调用。
我是U-Boot的新手。我是一个U-Boot的新手,非常感谢任何形式的帮助。
你可以尝试在文件中的别名部分添加:
spi0 = &spi0;
添加到文件rk3399.dtsi的别名部分?有什么变化吗?