U-bootでSPIフラッシュ認識した!
Orange pi R1でU-bootでSPIフラッシュを認識しなかった件ですごい苦戦したがやっとできた。
u-bootでspiフラッシュを使おうとすると
原因は、
arch/arm/dts/sun8i-h2-plus-orangepi-r1.dts
でデバイスの設定がされてるのだが、
ブロックまるごとコメントアウトとは思わんし、.dtsファイルだからKateのハイライトが効いてなくてコメントに気づかなかった。
これアンコメントしたらdm treeでデバイスが出てきた。
それだけだとsf probeでエラーが出るのは変わらないのだが、
u-bootでspiフラッシュを使おうとすると
=> sf probe
Invalid bus 0 (err=-19)
Failed to initialize SPI flash at 0:0 (error -19).
こんな感じになって数日解決できなかった。Invalid bus 0 (err=-19)
Failed to initialize SPI flash at 0:0 (error -19).
原因は、
arch/arm/dts/sun8i-h2-plus-orangepi-r1.dts
でデバイスの設定がされてるのだが、
&spi0 {
status = "okay";
flash@0 {
compatible = "mxicy,mx25l12805d", "jedec,spi-nor";
};
};
↑この部分まるごとコメントアウトされてた。status = "okay";
flash@0 {
compatible = "mxicy,mx25l12805d", "jedec,spi-nor";
};
};
ブロックまるごとコメントアウトとは思わんし、.dtsファイルだからKateのハイライトが効いてなくてコメントに気づかなかった。
これアンコメントしたらdm treeでデバイスが出てきた。
それだけだとsf probeでエラーが出るのは変わらないのだが、
aliases {
ethernet1 = &rtl8189etv;
spi0 = &spi0;
};
spi0のエイリアスを設定すると利用できるようになる。ethernet1 = &rtl8189etv;
spi0 = &spi0;
};
=> mtd list
List of MTD devices:
No MTD device found
=> sf probe
SF: Detected mx25l12805d with page size 256 Bytes, erase size 64 KiB, total 16 MiB
=> mtd list
List of MTD devices:
* nor0
- type: NOR flash
- block size: 0x10000 bytes
- min I/O: 0x1 bytes
- 0x000000000000-0x000001000000 : "nor0"
出てきた。List of MTD devices:
No MTD device found
=> sf probe
SF: Detected mx25l12805d with page size 256 Bytes, erase size 64 KiB, total 16 MiB
=> mtd list
List of MTD devices:
* nor0
- type: NOR flash
- block size: 0x10000 bytes
- min I/O: 0x1 bytes
- 0x000000000000-0x000001000000 : "nor0"
u-bootでSPIフラッシュ使う際はまずsf probeで認識させてからぽいね。
miZyの起動時の出力見ると、
最初の512kがu-bootでその次の64kがboot.scrでboot.scrを読み込んで実行してるみたい。
SPIからboot.scrをロードするには環境変数をいじる必要がある?
で、dtb kernel initramfs を読み込んで、カーネルの起動オプションにmtdpartsを指定してるぽい。
u-bootにboot.scrをロードさせて処理させることができればできそう。
miZyの起動時の出力見ると、
最初の512kがu-bootでその次の64kがboot.scrでboot.scrを読み込んで実行してるみたい。
SPIからboot.scrをロードするには環境変数をいじる必要がある?
で、dtb kernel initramfs を読み込んで、カーネルの起動オプションにmtdpartsを指定してるぽい。
u-bootにboot.scrをロードさせて処理させることができればできそう。