|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
文档主要讲解在 iMX6Q/D/PLUS设备树内核源码中,设备树注册驱动和非设备树的类似。
2 f; y6 n' o0 j5 K( H. C1 注册驱动源码分析
3 l+ u" [& C/ {2 S0 n; u2 y$ Y: c8 |4 N
设备树的内核驱动中,platform_driver 结构中增加了“of_match_table”,在驱动源码中需要增加对应变量,驱动注册部分变化的部分如下。
& N b2 m" P; d4 m* E, p
$ U0 W+ g) P% E" ?9 C: k" W6 O8 A- p2 A
# M0 }; V* q. y6 H5 U* t i$ d
# F3 S0 ^0 E) O+ S, R; F) u9 W
以上代码中,platform_driver_register 调用 register_driver,如果设备名称和驱动名称相同,即可进入 probe。5 L- B: X n( t/ Y
驱动例程中 DRIVER_NAME 为“test_dev_name”。
$ t. S: x; \7 J' w6 m在“iTOP-iMX6-设备树内核-注册设备例程”文档中,在设备树中我们已经注册了“test_dev_name”设备。 d! H9 f& ^* B: q t% W
: K" d4 M, R& M j: C; M
2 注册驱动测试
) ^6 ] k: A) n0 K6 H9 D
: H, O& z* ^9 v6 Q2 s- n将驱动编译为 ko 文件,insmod 加载之后应该打印“register_init”和“register_probe init”;rmmod 卸载之后打印“register_exit”和“Goodbye, curel world, remove”。- C8 `# T! N5 X" v, h
如下图所示,使用命令“ insmod iTOP_IMX6_registerdriver.ko”加载驱动,使用命令 “rmmod iTOP_IMX6_registerdriver”卸载驱动。
1 t" W0 [1 _. [+ U6 s# Y: }
- }& p" x' _# X3 W& J- @/ Q/ D+ p/ }3 v- Y' j0 F- P" H
/ Q7 y( k: r/ |- v2 U
* h! u- [' Y6 K3 M/ ^ x; k6 J" T) ]& v+ i; H) I4 m
) c1 w4 G7 x, S, w4 p+ Z; E! e' @
|
|