FC2カウンター FPGAの部屋 2019年10月18日
FC2ブログ

FPGAやCPLDの話題やFPGA用のツールの話題などです。 マニアックです。 日記も書きます。

FPGAの部屋

FPGAの部屋の有用と思われるコンテンツのまとめサイトを作りました。Xilinx ISEの初心者の方には、FPGAリテラシーおよびチュートリアルのページをお勧めいたします。

SDx のUltra96-V2 用プラットフォームを作る12(トラブルシューティング)

SDx のUltra96-V2 用プラットフォームを作る11(LinuxのSDx アプリケーション・プロジェクトを作成)”の続き。

前回は、Linux のSDx アプリケーション・プロジェクトを作成したが、Root FS が起動しなかった。今回は、その原因を探っていこう。

いろいろと検索したのだが、どうもMicro SD カードのインターフェースのWrite Protection の問題のような気がする。
その問題は、ikwzm さんの”UltraZed で SD Card が書き込み不可になってしまう問題”に詳しく載っている。

UltraZed で SD Card が書き込み不可になってしまう問題”から引用させていただきます。

ZynqMP の SDIO I/F には WP(Write Protection) pin があります。この入力ピンを適切に設定していないと、何故か ZynqMP は Write Protection 状態と認識してしまいます。
この UI はちょっと紛らわしくて、普通は WP にチェックを入れないと Write Protection にならないと勘違いしてしまいますが、実はこの UI は単にピンの設定を行っているだけで、ピンの設定をしないとどうなるかは関係ないのです。で、何故か ZynqMP はこのピンを設定していないとWrite Protection 状態と認識してしまうのです。


そして、止まり方も”VFS: Unable to mount root fs on unknown-block(179,2)”で止まるということで、全く同じだ。

今回の私のVivado のブロックデザインのZynq UltraScale+ MPSoC の設定を出して見ると、WP はチェックが入っていない。
SDx_platform_138_191018.png

AVNET さんのUltra96-V2 の回路図、Ultra96-V2 Rev1 Schematic.pdf の 5 ページ目の uSD CARD INTERFACE を引用する。
SDx_platform_139_191018.png

するとWrite Protection のピンは接続されていないようだ。
よって、”UltraZed で SD Card が書き込み不可になってしまう問題”の”その3 Linux のデバイスツリーで Write Protection を無効にする”で対処しようと思う。
つまり、デバイスツリーの sdhci0 に対して、disable-wp; を追加すれば良いはず。

それには、PetaLinux のデバイスツリーを書き換える必要がある。PetaLinux のプロジェクトの dtsi ファイルを書き換えても、petalinux-build してしまうと再生成されてしまうのだが、だた1つ、自分で書き換えられる dtsi がある。それが、プロジェクト・ディレクトリ/project-spec/meta-user/recipes-bsp/device-tree/files/system-user.dtsi だ。
その書き方は、”ZYBO (Zynq) 初心者ガイド (16) Linuxから自作IPをUIOで制御する”の”デバイスツリーを編集する”に詳しく載っている。
これを参考にさせていただいて system-user.dtsi を書き換えた。

/include/ "system-conf.dtsi"
/ {
    xlnk {
    compatible = "xlnx,xlnk-1.0";
    };    
};

&sdhci0 {
    disable-wp;
};  


なお、Xilinx フォームなどの関連記事を示す。
Beginners problems with Ultrazed-eg
ZynqMP: SD card is write protect
UltraZed IOCC SD Card RO
  1. 2019年10月18日 05:26 |
  2. SDSoC
  3. | トラックバック:0
  4. | コメント:0