e-tipsmemo.hatenablog.com
これらのまとめ
insmodの後に(デバイスが見つかったので)probeが呼ばれて幾つかのリソースの値を取得できている事がわかる。
もしprobeが呼ばれない場合は、compatibeが間違っていることやdevicetreeが間違っているなど。
zynq> insmod mysw.ko probe name:/amba_pl/mySw@43c10000 start:0x43c10000 size:0x00010000 irq_num:61 registered IRQ 61 zynq> interrupt occured 61 interrupt occured 61 zynq> cat /proc/interrupts CPU0 CPU1 27: 0 0 GIC 27 gt 29: 5389 5619 GIC 29 twd 35: 0 0 GIC 35 f800c000.ocmc 39: 43 0 GIC 39 f8007100.adc 40: 0 0 GIC 40 f8007000.devcfg 41: 0 0 GIC 41 f8005000.watchdog 43: 0 0 GIC 43 ttc_clockevent 45: 0 0 GIC 45 f8003000.dmac 46: 0 0 GIC 46 f8003000.dmac 47: 0 0 GIC 47 f8003000.dmac 48: 0 0 GIC 48 f8003000.dmac 49: 0 0 GIC 49 f8003000.dmac 51: 0 0 GIC 51 e000d000.spi 56: 79 0 GIC 56 mmc0 57: 0 0 GIC 57 cdns-i2c 61: 9 0 GIC 61 mySW_hoge 72: 0 0 GIC 72 f8003000.dmac 73: 0 0 GIC 73 f8003000.dmac
もっと実用的なデバイスドライバでは
仮想アドレスとのマッピングなど(?)を行うことなどが必要そうだ。
いろいろなサンプルや、やってみた記事がネットに溢れているがあまり一貫して最初から書いてあったものはなかったような気がしたので備忘録。