Vengineerの妄想(準備期間)

人生は短いけど、長いです。人生を楽しみましょう!

Zynqのqemu (その5)


Zynqのqemu (その4)の続きです。

前回はメモリの設定でしたが、今回はI/O (レジスタ)の設定です。
I/Oの設定は、次のようになります。
 160         nandctrl = qdev_create(NULL, "xilinx_zynq_nandctrl");
 161         qdev_prop_set_uint32(nandctrl, "ecc-idx", 1);
 162         qdev_prop_set_ptr(nandctrl, "nand", nandflash);
 163         qdev_init_nofail(nandctrl);
 164         sysbus_mmio_map(sysbus_from_qdev(nandctrl), 0, 0xE1000000);

各I/Oに対して、次の4つのことを行っています。
   1). qdev_create関数でデバイスを作成する。
   2). qdev_prop_set_xxx関数でプロパティを設定する。
   3). qdev_init_nofail関数でI/Oを登録する。
   4). sysbus_mmio_map関数で開始アドレスを設定する。

qdev_prop_set_xxx関数では、xxx部分にuint32(32ビットの符号無し整数),
ptr(ポインタ)などがあります。これらは各デバイスが必要なパラメータによって決まります。

検証、Verification、FPGA