Edit online

SPI NOR 配置

修改 DTS

要在实际项目中使用 SPI NOR 设备,还需要修改 DTS 配置。

board.dts 应在具体的 SPI 控制器下添加 jedec,spi-nor 设备。

&spi0 {
    pinctrl-names = "default";
    pinctrl-0 = <&spi0_pins_a>;
    status = "okay";
    spi-max-frequency = <100000000>;
    spi-flash@0 {
        #address-cells = <1>;
        #size-cells = <1>;
        compatible = "jedec,spi-nor";    //固定值,所有基于 dts 的 SPI NOR 均声明此
        spi-max-frequency = <100000000>; //最大频率,固定值
        spi-tx-bus-width = <4>;
        spi-rx-bus-width = <4>;
        reg = <0>;                       //固定值,一般不需修改
        status = "okay";
    };
};

同时还需在 board-u-boot.dtsi 文件中,将该设备标记为 u-boot,dm-pre-reloc ,不然 SPL 无法识别和使用。

&spi0 {
    u-boot,dm-pre-reloc;
    spi-flash@0 {
        u-boot,dm-pre-reloc;
    };
};

Bus Width

宽总线的 SPI NOR 芯片可以工作在窄总线下,如 4 线的 SPI NOR 配置为 1 线也可以工作,但读写速度损失, 但窄总线设备无法工作在宽总线模式下,因此 spi-tx-bus-width 要正确设置

  • 标准 SPI NOR 配置为 1

  • Dual SPI NOR 配置为 2

  • Quad SPI NOR 配置为 4