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もっと実用的なデバイスドライバでは
仮想アドレスとのマッピングなど(?)を行うことなどが必要そうだ。
いろいろなサンプルや、やってみた記事がネットに溢れているがあまり一貫して最初から書いてあったものはなかったような気がしたので備忘録。