2021/04/27

How to dump device tree from NAND flash to get dts (Zynq-7000)

In this article, I will dump the original device tree of the Zynq EBAZ4205 Board.

Since the Zynq EBAZ4205 Board is not a development board, the design information is not provided by the manufacturer. You need to get the necessary information yourself.

From the device tree source text (dts) file converted from the dumped device tree blob (dtb) file, you can get reference information when developing a custom Linux image using Vivado and PetaLinux.

Prepare

Insert the microSD card into the Zynq EBAZ4205 Board. This microSD card is used to transfer the dumped dtb file to the PC.

If you can use Ethernet, you can transfer the file by other methods.

Dump

Boot original Linux from the NAND flash on the Zynq EBAZ4205 Board.

Make sure the microSD card is mounted.


  root@zedboard-zynq7:~# ls /run/media/mmcblk0p1/

Execute the following command to dump the device tree from the NAND flash and save it as dtb file on the microSD card.


  root@zedboard-zynq7:~# dd if=/dev/mtd2 of=/run/media/mmcblk0p1/ebaz4205_nand.dtb
  256+0 records in
  256+0 records out
  root@zedboard-zynq7:~# ls /run/media/mmcblk0p1
  ebaz4205_nand.dtb

Convert

Copy the dtb file from the microSD card to your PC.

Convert dtb file to dts file. Use the device tree compiler (dtc) command for this conversion.

For Ubuntu, you can install it with the following command.


  $ sudo apt install -y device-tree-compiler

Execute the dtc command.


  $ dtc -I dtb -O dts -o ebaz4205_nand.dts ebaz4205_nand.dtb

Now you have a dts file.

Tips

One of the information that can be obtained from the dts file is the NAND flash timing parameters and existing partition information.

For example, in the dts file, it was described as follows.


flash@e1000000 {
    status = "okay";
    compatible = "arm,pl353-nand-r2p1";
    reg = <0xe1000000 0x1000000>;
    #address-cells = <0x1>;
    #size-cells = <0x1>;
    arm,nand-cycle-t0 = <0x5>;
    arm,nand-cycle-t1 = <0x5>;
    arm,nand-cycle-t2 = <0x2>;
    arm,nand-cycle-t3 = <0x2>;
    arm,nand-cycle-t4 = <0x2>;
    arm,nand-cycle-t5 = <0x1>;
    arm,nand-cycle-t6 = <0x2>;

    partition@nand-fsbl-uboot {
        label = "nand-fsbl-uboot";
        reg = <0x0 0x300000>;
    };

    partition@nand-linux {
        label = "nand-linux";
        reg = <0x300000 0x500000>;
    };

    partition@nand-device-tree {
        label = "nand-device-tree";
        reg = <0x800000 0x20000>;
    };

    partition@nand-rootfs {
        label = "nand-rootfs";
        reg = <0x820000 0xa00000>;
    };

    partition@nand-jffs2 {
        label = "nand-jffs2";
        reg = <0x1220000 0x1000000>;
    };

    partition@nand-bitstream {
        label = "nand-bitstream";
        reg = <0x2220000 0x800000>;
    };

    partition@nand-allrootfs {
        label = "nand-allrootfs";
        reg = <0x2a20000 0x4000000>;
    };

    partition@nand-release {
        label = "nand-release";
        reg = <0x6a20000 0x13e0000>;
    };

    partition@nand-reserve {
        label = "nand-reserve";
        reg = <0x7e00000 0x200000>;
    };
};

For the timing parameters nand-cycle-t0 to nand-cycle-t6, refer to the Xilinx Wiki.

If you are developing a custom Linux image using Vivado and PetaLinux, set these parameters in Vivado. At this time, you should also check the NAND flash data sheet.

Note: The parameters in the screenshot are examples and have not been tested.

Partition information can be set in PetaLinux.

This information is reflected in the device tree automatically generated by PetaLinux. The device tree is generated in the following directory when you run the petalinux-build command.

  • /components/plnx_workspace/device-tree/device-tree

My Vivado design and PetaLinux project are available on GitHub.

If there are any mistakes in the description, please let me know.

2021/04/23

Solves the warning when loading the U-Boot environment (Zynq-7000, PetaLinux 2020.2)

I have built a boot image for the Zynq EBAZ4205 Board with Xilinx PetaLinux 2020.2. Linux was able to boot normally, but the following warning was displayed when U-Boot was booted.

Loading Environment from SPI Flash... Invalid bus 0 (err=-19)
*** Warning - spi_flash_probe_bus_cs() failed, using default environment

The Zynq EBAZ4205 Board does not have SPI Flash. In order to solve this warning, it was necessary to change the U-Boot configurations.

Open the U-Boot configuration with the following command.

$ petalinux-config -c u-boot

Enable "Environment is not stored".

Environment-> Environment is not stored

Disable "Environment is in SPI flash".

Environment-> Environment is in SPI flash

Exit from the U-Boot configuration and rebuild the U-Boot.

$ petalinux-build

The following 2 lines are added to the U-Boot settings.

# CONFIG_ENV_IS_IN_SPI_FLASH is not set
CONFIG_ENV_IS_NOWHERE=y

An example of the PetaLinux project can be found below.

2021/04/21

忍者ホームページではGoogle Adsenseの新規利用開始は不可能な場合がある

要約
メモ

しばらくホームページやこのブログを放置していたので,その間にGoogle Adsenseの資格要件も変わったみたいですね. この記事の内容をひとまとめに把握するのに役立ったのは,下記のGoogle Adsenseコミュニティのスレッドです.他は上記の要約のリンク先を参照してください.

2021/04/10

GV-VCP3/PCIをWindows 10 64bitで使う

要約
  • I-O DATA GV-VCP3/PCI ビデオキャプチャボードは,Windows XPまで対応
  • 後継製品としてGV-VCP3R/PCIがあり,GV-VCP3/PCIのRoHS指令対応版と考えられる.Windows 7 32bitまで対応.64bit非対応
  • 同じチップを使用しているWinFast PVR2000の64bitドライバを使用すると,GV-VCP3/PCIをWindows 10 64bit 20H2で使用可能
  • ドライバはinfファイルを書き換えた上でWindows 10のテストモードでインストールする必要があり,一定の知識が必要
  • 録画はGV-VCP3R/PCI サポートソフトを使用可能なほか,OBSも使用できる.OBSがおすすめ
I-O DATA GV-VCP3/PCI ビデオキャプチャボード

GV-VCP3/PCIは,2006年4月発売のPCIカードタイプのビデオキャプチャボードです. 後継としてGV-VCP3R/PCIがあり,GV-VCP3/PCIとの違いはRoHS指令対応の有無のみとみられますが未確認です. つまり,GV-VCP3/PCIとGV-VCP3R/PCIのハードウェアはほとんど同じということで,GV-VCP3/PCIでもGV-VCP3R/PCIのサポートソフトが使えたのではないでしょうか.既にWindows 7 32bit以前のデスクトップPCが手元にないため確認できませんが…. 入力端子はコンポジット入力のRCAピンジャックが2系統とS-Video入力の4pin mini-DINが1系統です.

コンポジット出力のアナログカメラの映像をPCに取り込みたかったのですが,ちょうどこのボードが転がっていたので最新のWindows OS環境で使用可能か試してみた記録です. 結論としてはWindows 10 64bit 20H2で録画に成功して使えています.しかし,非公式な方法かつ海外サイトからのファイル入手が必要ですので,参考情報として眺めてください.最早こんなことしたい人,私以外にいないかもしれませんが….

ドライバの入手,編集,インストールの概要
ヒントは価格.comの書き込み

価格.comにはWindows 7 64bitで動作したとの報告があり,その方法が具体的に記載されていました.ご丁寧なことに,使用した代替ドライバのバージョンとMD5までありました. 私が行ったことは,この代替ドライバをインターネット上で探してきて,同じように編集して使っただけです.

代替ドライバの入手

代替ドライバも公式での配布は終了しており,インターネット・アーカイブからも入手できませんでした.このため,非公式なWebサイトからダウンロードする必要がありました. Google検索で「CX23880.5.0.18.6420_Vista_WHQL」で検索すると見つかります.ダウンロードできたら,zipファイルを展開して,その中にあるcxavsvid.sysのMD5が一致するか確認してください.

PVR2000.infの編集

代替ドライバに含まれるPVR2000.infは当然ながらGV-VCP3/PCIではありませんので,記述をGV-VCP3/PCIに合わせて書き換える必要があります. 必要な情報は,GV-VCP3R/PCI サポートソフトに含まれるWindows 7 32bitドライバのiocx88vd_7.infに記載されています. 私はWinMergeでPVR2000.infとiocx88vd_7.infを比較しながら書き換えました.

ドライバのインストール

あとは,書き換えたPVR2000.infを使用してドライバをインストールするだけですが,1つ注意点があります. このドライバは署名なしドライバのため,Windows 10をテストモードにしてインストールする必要があります. この方法については既に多数のWebページで紹介されていますので,「Windows10 ドライバ インストール テストモード」などで調べていただければと思います.

映像のキャプチャ

I-O DATA公式のGV-VCP3R/PCI サポートソフトに含まれるキャプチャソフトは,Windows 10 64bit 20H2でも使用できました. しかし,実用的にはOBSを使用するのが良いのではないでしょうか.OBSはライブ配信などに現在広く使用されているフリーウェアで,もちろんWindows 10 64bitをサポートしています.

あれ,映像がキャプチャできないぞ.というときは,設定を確認してみてください.私の場合,デフォルトではS-Video入力となっていたためコンポジット入力に切り替える必要がありました.

以上,参考になれば幸いです.

2021/03/07

サクラエディタでMarkdownをシンタックスハイライトさせる

Monokai for Sakura Editor

サクラエディタでMarkdownをシンタックスハイライトさせるためのタイプ別設定ファイルを作成しました.GitHubにて公開しています. サクラエディタをMonokai風の配色するための色設定ファイルとタイプ別設定ファイルを公開しているリポジトリに追加しました.

設定方法
Markdown
  1. 設定ファイルを準備する
  2. サクラエディタはご使用のOSをサポートしている最新版にアップグレードしておくことをおすすめします. 下記リンクからGitHubに移動し,右側の「Code」-「Download ZIP」からZIPファイルをダウンロードしてください. ダウンロード後,任意のフォルダでZIPファイルを解凍してください.

  3. タイプ別設定一覧を表示する
  4. サクラエディタを起動し,「設定」-「タイプ別設定一覧」を開きます.

  5. 設定ファイルをインポートする
  6. タイプ別設定一覧ウィンドウで「インポート」をクリックします. ファイルを開くためのウィンドウが表示されるので,ZIPファイルを解凍してできたフォルダから,「markdown_monokai\markdown_monokai.ini」を開きます.

    サクラエディタのバージョンによっては下記のようなメッセージが表示されます.「OK」をクリックします.

    「インポート確認」ウィンドウが表示されるので,「読込先:」を「新規追加」にして「OK」をクリックします.

  7. 完了
  8. 「ファイルをインポートしました。」と表示されれば完了です. 下図のように追加されます. 拡張子がmdもしくはmd.txtのファイルを開くと,シンタックスハイライトされるはずです.

    拡張子が「*.md.txt」の場合もシンタックスハイライトにするためには,「Markdown ( md,*.md.txt )」を選択した状態で「↑」をクリックして「テキスト ( txt,log,1st,err,ps )」の上に設定します.