|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
54.4 运行测试/ x2 o- n* }9 V& ]! Q
54.4.1 编译驱动程序' {4 z7 J' `5 ^) H3 |
创建 Makefile 文件,内容和前面实验基本一样,需要将 obj-m 的值修改为 ft5426.o,具体内容如下:
* P; G2 a& i4 O5 ~ K/ e! k7 {) gKERNELDIR := /home/topeet/kernel/linux-imx-rel_imx_4.1.15_2.1.0_ga. E. l7 d/ S0 N6 M& y! s3 B
CURRENT_PATH := $(shell pwd)
9 ^7 u( h8 Q ~. O* m3 G0 S8 R8 ]obj-m := ft5426.o& S8 C6 \8 u: J) C
build: kernel_modules) q; V& u/ q$ d$ X$ p
kernel_modules:
: v8 L6 u' w0 v/ F; G$(MAKE) -C $(KERNELDIR) M=$(CURRENT_PATH) modules
. v( e/ ]$ L+ H2 ]; [clean:
- V% @3 r3 ^, V% v& q9 { k$ E$(MAKE) -C $(KERNELDIR) M=$(CURRENT_PATH) clean
4 @/ Y/ W1 r/ F3 l: g首先我们在终端输入两个命令(设置两个环境变量):
- i1 [# v: S V8 E( Y1 wexport ARCH=ARM s# A2 t# {3 @+ x9 ~* z: e( E
export CROSS_COMPILE=arm-linux-gnueabihf-. ^$ j! t, X5 ?$ F# I
然后执行“make”命令进行编译,编译完成生产 ft5426.ko 驱动模块文件。
! ` ~6 W& W, [6 n54.4.2 运行测试
4 M0 N* _8 R, V$ o3 A编译设备树文件,使用新的设备树文件启动开发板,然后拷贝编译生产的 ft5426.ko 驱动模块文件到开发板根文件系统 lib/modules/4.1.15 目录下(检查开发板根文件系统中有没有“/lib/modules/4.1.15”这个目录,如果没有的话需要自行创建一下。开发板中使用的是光盘资料里面提供的 busybox 文件系统,光盘资料的“i.MX6UL 终结者光盘资料\08_开发板系统镜像\03_文件系统镜像\01_Busybox 文件系统”目录下)。使4 r/ L! l" c3 v! P: B I
用下列命令加载模块:2 I @- m0 m; X8 | I' Y8 [1 s. V
depmod
% X8 ]) S9 Y" c5 v" Hmodprobe ft5426
9 Y6 |9 V T# W7 a2 `% S当驱动模块加载成功后,有如图 54.4.2.1 信息:
$ m6 z2 U6 l; N/ v. J- ?: W9 S$ t4 l 3 N L7 f+ q8 Q
驱动加载成功后就会生成/dev/input/eventn 设备文件,比如本触摸屏如图 54.4.2.2 所示:
& x1 b0 G' ?( b& c1 n" v* c2 v0 i![]()
P# s2 Q8 U! S' [- Xevent4 设备文件就是触摸屏对应的文件。当然也有可能文件名称不同。
4 b) B! r, J& X, P0 P使用命令查看 event4 文件:: e5 M7 |4 L' e1 B
hexdump /dev/input/event48 n; C: F Q* Z5 X; ~
使用一根手指触摸屏幕在抬起,会有信息输出,如图 54.4.2.3 所示:% t4 Z* l/ E' p3 h; [
![]()
$ D a2 K' {- t54.4.3 将驱动添加到内核中
3 U0 \7 o7 d8 V5 f6 D; G前面我们把触摸屏驱动编译成了模块文件,每次系统启动后都需要手动加载驱动模块,这样很不方便。当我们的设备驱动调试成功后,一般会把驱动直接编译到内核中,这样内核启动后就会自动加载驱动。在本节就来看一下如何将 ft5426.c 驱动文件添加到 Linux 内核中去。
# S2 a" r% V* z) ?: e9 r1、 、 将驱动文件放到合适目录下3 A+ O* o( b/ [0 c- H* d9 @7 r' n
测试成功的驱动文件首先要放到 Linux 内核的合适的目录下,这时我们可以参考类似设备的驱动文件存放目录,比如触摸屏驱动文件,我们可以找到在 drivers/input/touchscreen 目录下都是关于触摸的驱动文件,因此我们把 ft5426.c 驱动文件也放到这个目录下。
" A# o# u2 ~1 u5 m0 H# ]4 Q2、 、的 修改对应的 Makefile
# \( k Z# K N$ J( e# Q把 ft5426.c 驱动文件放到 drivers/input/touchscreen 目录下后,需要修改此目录下的 Makefile 文件,添加如下内容:
# W! [1 O4 m9 l1 Z7 t4 G& lobj-y += ft5426.o5 E- I. m+ @: K* K, S- N2 z/ }
添加完成所示:! q. @5 E; z% M# m( J. n' H
![]()
' G6 j7 H# A3 f6 ^1 J; v3 G k修改完成后,重新编译 Linux 内核,然后使用新的 zImage 镜像启动开发板,驱动添加成功启动有如图54.4.3.2 信息打印:- _1 N# o5 `% n/ q# z' u
![]()
T7 R$ \2 P# B可以使用下面的命令查看对应的 event 时间:, x4 _0 O$ f- T J8 V
cat /proc/bus/input/devices
, p% n* I3 Q5 M结果如下:( |, t- u* G6 A' x+ r5 O
![]()
8 q! q/ s5 H: O可以看到 ft5426 对应/dev/input/event1 设备文件,然后使用下面的命令查看驱动是否工作正常:
, \9 t7 m; R$ [- X: [% U. khexdump /dev/input/event18 M- c8 i3 {1 [0 b
结果如图 54.4.3.4 所示:
; f# @! n: H0 E @" b3 w) n# z6 @- v3 s![]()
) T. ]9 S- G9 K' Z说明 ft5426 驱动工作正常。
. ?4 i# n9 @. B! M![]()
; v9 K* y; j, Z ^' C5 [$ \/ q![]()
4 G1 h, I& e! {- |" ?3 \ |
|