AN889の日記

組込みエンジニアのブログ

【ZynqMP】BootROMとQSPIフラッシュ

ZynqMPは電源ONで内蔵ブートプログラム(XILINXはBootROMと呼んでます)がブートデバイスからFSBL(First-Stage Boot Loader)を読み出します。FSBLを読み出してFSBLが動かないと、その後のU-Bootを読み出せず、ブートできません。
このBootROMもS25Hxをサポートしていません。

an889.hatenablog.com

が、BootROMはユーザー開放されてないので改造不可です。困りました。
が、S25Hxをサポートしてなくても、S25HxからFSBLを読み出せることがわかりました。

ZynqMPとQSPIフラッシュの接続構成にはデュアルパラレル*1、デュアルスタック*2、シングル*3の3種類あります。
デュアルスタックまたはシングルだと読み出せました。
BootROMは最初に構成を判別し、デュアルスタックまたはシングルだと下位(lower)デバイスのみにコマンド発行します。SPIフラッシュのコマンドは標準化されており(一部メーカーによって異なりますが)、S25Hxもそのコマンドに応答するので、BootROMがFSBLを読み出すことができました。
デュアルパラレルだとブートイメージは下位と上位に分けて書き込まれます(下位データバスを偶数バイトに、上位データバスを奇数バイトに使用)*4。BootROMはデュアルパラレルと判断すると下位デバイスと上位デバイスからデータを読み出そうとします。が、このときの読出しコマンドが0x6Cとクアッド読出しで、S25Hxはデフォルトではクアッド読出し非対応なのでデータを返せず、BootROMはFSBLを読み出せないのでブートできません。
S25Hxのクアッド読出し対応はCFR1V[1](Configuration Register 1のビット1)で設定するのですが、これはメーカー独自仕様なので、BootROMにそのような設定処理はありません。なので、S25Hxをデュアルパラレル構成では使えないので注意要です。

 

*1:https://jpn01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fdocs.xilinx.com%2Fr%2Fen-US%2Fug1085-zynq-ultrascale-trm%2FTwo-SPI-Flash-Memories-with-Separate-Buses-Dual-Parallel&data=05%7C01%7Ckumada.h%40teldevice.co.jp%7Cb6ecc51e9fae4b26a88908dba77bdf54%7C9776c14504ee4d329a096e4b51cd2317%7C0%7C0%7C638287922685757450%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&sdata=2Y8bIFdyGPGsaIKZUKGQGX093JuvDRhW3mJE8FSk%2BcU%3D&reserved=0

*2:https://jpn01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fdocs.xilinx.com%2Fr%2Fen-US%2Fug1085-zynq-ultrascale-trm%2FTwo-SPI-Flash-Memories-with-a-Shared-Bus-Stacked&data=05%7C01%7Ckumada.h%40teldevice.co.jp%7C763b0e2de316440bc7bf08dba2d7c32e%7C9776c14504ee4d329a096e4b51cd2317%7C0%7C0%7C638282819790864293%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&sdata=sNySUXHprY0pIeZ80dB8jo2OvDHQQDtZLHXRMh0YAIQ%3D&reserved=0

*3:デュアル構成の上位側(upper)が未接続

*4:https://jpn01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fdocs.xilinx.com%2Fr%2Fen-US%2Fug1085-zynq-ultrascale-trm%2FData-Arrangement&data=05%7C01%7Ckumada.h%40teldevice.co.jp%7Cb6ecc51e9fae4b26a88908dba77bdf54%7C9776c14504ee4d329a096e4b51cd2317%7C0%7C0%7C638287922685757450%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&sdata=mT%2FwTcGlsdfLk3qNL0YeOrzDVQ4nzPPaQ%2FSnDkuJP4k%3D&reserved=0