EDA365电子论坛网

标题: i.MX8MP开发板移植驱动全过程 [打印本页]

作者: 罗罗诺亚    时间: 2022-11-4 11:40
标题: i.MX8MP开发板移植驱动全过程

各位工程师用户在对飞凌嵌入式OKMX8MP-C开发板进行开发的过程中,可能会遇到需要移植驱动的情况。为避免用户因不了解移植驱动的过程而影响开发进度,今天小编会以写一个hello驱动为例,演示移植驱动的过程,有需求的小伙伴可参考此方法自行操作。


: F7 A  E; J! K, T$ r


. {; T. ]) U. A- z6 Z9 V! v( C

01进入源码的drivers目录下,并创建一个名为hello的目录:

7 V; h! l% n8 q4 k: w$ D( _

02进入hello目录,创建hello.c:

" C4 w: ?& A# [8 O5 @  t$ G

在hello.c中写入如下内容:

3 Q' h$ G3 ?. y" Z

程序含义:insmod驱动挂载时打印Hello world,rmmod驱动卸载时打印 Goodbye world

/ `/ E, B- W) f: k" x2 v  N; F

03​​​​​​​在该文件夹下创建Kconfig,Makefile两个文件。

forlinx@ubuntu:~/work/OK8MP-linux-sdk/OK8MP-linux-kernel/drivers/hello$ vi  Kconfig
& \) C0 h  o+ k. Q

在Kconfig文件中写入如下内容:

8 \' x1 f) Z' `; B8 e% |

表示如果使能了CONFIG_HAVE_HELLO,在内核裁剪配置文件中,将显示hellodrivers菜单,默认编译进内核:

y:编译进内核

m:编译为模块.ko文件

n:表示不编译,未使能。

forlinx@ubuntu:~/work/OK8MP-linux-sdk/OK8MP-linux-kernel/drivers/hello$ vi  Kconfig' [" @% v! v. l$ N- v+ n

在Makefile文件中写入如下内容:

obj-$(CONFIG_HAVE_HELLO)        +=      hello.o
7 f6 X. A6 h' f1 n, X0 Q/ i$ Q

注意:

宏定义的名字要和Kconfig中的一样。后面添加需要编译的文件名,因为内核会自动添加前缀CONFIG,所以我们这里也要在名字前面添加CONFIG_,表示CONFIG_HAVE_HELLO使能时,编译规则指定的文件为hello.c。

* j) o9 B1 X5 b# E; u& r

给添加的这三个文件权限:​​​​​​​

0 ?4 z$ C# ?8 Z5 ]. C; c9 r! r

04编辑drivers顶层的Kconfig,Makefile文件。​​​​​​​

2 U" I2 J3 f3 |9 u

在Kconfig文件中写入如下内容:​​​​​​​


3 r" ~6 d, R: Y+ e' @* q

如此一来,配置系统就会按照这个配置去解析hello文件夹下的Kconfig。


3 k$ C! @/ c; T! S

编辑Makefile:

forlinx@ubuntu:~/work/OK8MP-linux-sdk/OK8MP-linux-kernel/drivers$ vi Makefile  U6 |& P1 F6 i! _

在Makefile文件中写入如下内容:


/ u+ ~! {" _3 p4 b* \' A

这句话的作用是当CONFIG_HAVE_HELLO使能后,在哪里去找源文件。再结合hello文件下模块Makefile就形成了层次式Makefile。注意不要少了/,这里添加自定义文件夹的名字,表示把这个文件夹编译进内核。


" H' h$ `( s( v% i$ L: E( ^% O

5开始编译:


4 t. \1 G2 m" K- [4 x& L' c% U) S# f1 O1 [4 i

编译完成后,即可在OK8MP-linux-kernel/drivers/hello目录下看到编译生成的驱动了:​​​​​​​

0 r- r' D9 Q; a7 }- S: t1 ]. g

6

0 [0 F: X8 X5 H0 ]
  q6 E, y0 p2 }+ p7 H

将hello.ko使用U盘或TF卡拷贝到开发板里进行验证:​​​​​​​

0 X* }- \! T- v$ [3 Z+ e$ \

由上述测试可看,hello.ko驱动可正常运行。

( Z2 M" P* X' Z1 I" P, d

以上就是小编为大家演示的自行书写并添加一个驱动的过程,若您想要移植某一个模块,可向模块厂家索要现成的驱动.c文件,之后再按照上述步骤配置Makefile和Kconfig即可。


5 T( M% S' e% [2 C+ G
作者: nocturne    时间: 2022-11-4 15:44
可以直接下载驱动不,那个更方便呢?




欢迎光临 EDA365电子论坛网 (https://bbs.eda365.com/) Powered by Discuz! X3.2