歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> Linux最簡單的驅動編寫及測試流程

Linux最簡單的驅動編寫及測試流程

日期:2017/3/1 9:29:09   编辑:Linux編程

本文采用nfs掛載網絡文件系統的方式,手動創建設備節點,動態加載驅動模塊,對理解驅動編寫流程有很大好處!

一、初級驅動執行流程:

1、寫好Makefile文件,裡面包含將應用程序編譯成app文件,將驅動程序編譯成mydrv.ko文件的腳本

2、在Ubuntu裡執行sudo make

3、確保mydrv.ko和app被拷貝到nfs掛載的根文件系統的/modules目錄

4、在模塊中創建設備節點(在串口軟件顯示的開發板文件系統裡執行)
mknod /dev/dcx-drv c 250 0

4.1、執行ls /dev
觀察是否有設備dcx-drv,有則ok

5、安裝模塊設備
insmod /modules/mydrv.ko

5.1、執行cat /proc/devices (這個文件裡的設備是由驅動程序生成的)
觀察是否有“250 dcx-drv”,有則ok

6、執行./modules/app
觀察創建的內核模塊是否有執行,有則ok

二、代碼改動後需要重新編譯,完畢後執行:

1、刪掉原模塊:
rmmod /modules/mydrv

2、安裝新模塊:
insmod /modules/mydrv.ko

3、執行應用程序:

./modules/app

三、本文采用的Makefile文件

obj-m += mydrv.o

KERNEL_DIR = /opt/03.kernel_transplant/Android-kernel-samsung-dev
GCC = arm-linux-gcc
all:
make -C $(KERNEL_DIR) M=`pwd` modules #編譯驅動程序
$(GCC) -Wall app.c -o app #編譯應用程序

cp ./mydrv.ko /mini_rootfs/modules
cp ./app /mini_rootfs/modules

#clean:
rm -rf ./*.o
rm -rf ./*.order
rm -rf ./*.symvers
rm -rf ./*.mod.c

Copyright © Linux教程網 All Rights Reserved