Zynqのqemu (その5)の続きです。
割り込みがあるI/Oに対しては、次のような関数で割り込みを設定します。
257 sysbus_connect_irq(sysbus_from_qdev(dev), 0, pic[26]);sysbus_connect_irq関数でI/Oの割り込みをpic[26]の値に設定します。
I/Oのレジスタと割り込みを同時に設定できる関数も用意されています。
243 sysbus_create_simple("xilinx,lqspi", 0xE000D000, pic[19]); //IRQ 51 244 245 sysbus_create_simple("xilinx,can", 0xE0008000, pic[28]); // IRQ 60 246 sysbus_create_simple("xilinx,can", 0xE0009000, pic[51]); // IRQ 83 247 248 sysbus_create_simple("cadence,iic", 0xE0004000, pic[25]); // IRQ 57 249 sysbus_create_simple("cadence,iic", 0xE0005000, pic[48]); // IRQ 80sysbus_create_simple関数にて、対応するI/O(第一引数:文字列で指定)の開始アドレスと割り込みを設定します。
また、複数の割り込みを設定する場合は、sysbus_create_varargs関数を使います。
265 sysbus_create_varargs("cadence_ttc", 0xF8001000, 266 pic[10], pic[11], pic[12], NULL); // IRQ 42 267 sysbus_create_varargs("cadence_ttc", 0xF8002000, 268 pic[37], pic[38], pic[39], NULL); // IRQ 69 269 270 sysbus_create_varargs("zynq_gpio", 0xE000A000, pic[20], NULL); // IRQ 52
次回は、'sysbus_create_simpleとsysbus_create_arargsを見てみます。
検証、Verification、FPGA