|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
文档主要讲解在 iMX6Q/D/PLUS设备树内核源码中,设备树注册驱动和非设备树的类似。
6 ^4 Z$ C$ |& j6 x) \1 注册驱动源码分析
; f* E' T8 z1 v6 q9 i& A
: S1 g# `0 H( H N5 [3 A设备树的内核驱动中,platform_driver 结构中增加了“of_match_table”,在驱动源码中需要增加对应变量,驱动注册部分变化的部分如下。% Z7 A& H+ S! Q" I. {1 j
0 r. a/ m9 ]% z! V1 l: K7 @* w$ `
3 q; Y7 q+ J; c5 K* [
* l( q5 @: K1 y- v5 i4 ^- Q , P* ^) C5 f3 a& |
以上代码中,platform_driver_register 调用 register_driver,如果设备名称和驱动名称相同,即可进入 probe。% X+ P0 v6 B C, }$ e
驱动例程中 DRIVER_NAME 为“test_dev_name”。! b& E0 _. P& o
在“iTOP-iMX6-设备树内核-注册设备例程”文档中,在设备树中我们已经注册了“test_dev_name”设备。
, B) Y+ O5 Z/ {+ h
: Q0 W( _6 T8 F. P2 E" ]. q4 h2 注册驱动测试
5 a4 H, ~% v: ^/ S) s7 T6 t" g7 L
" T" E& v4 f8 ?5 v# e0 J将驱动编译为 ko 文件,insmod 加载之后应该打印“register_init”和“register_probe init”;rmmod 卸载之后打印“register_exit”和“Goodbye, curel world, remove”。
1 ?$ D% z2 j. Z5 e" M9 ] }8 ?如下图所示,使用命令“ insmod iTOP_IMX6_registerdriver.ko”加载驱动,使用命令 “rmmod iTOP_IMX6_registerdriver”卸载驱动。# y0 `- S7 a& T2 J
- ]( {6 x( W3 o# x: o& O1 ~( o; T' _6 o" t k
( e# ?* s; R& K: j+ }- T1 _/ n
& g% h* A5 S! [5 v7 S0 D5 U
/ H* T% h2 R4 Y# ^/ R, v8 E/ `
) v: F1 q. B+ B8 ^ `% D7 R |
|