Linuxデバイスドライバー--scull
Linux Device Driver Scull
「linuxdevicedriver」ブックのルーチンは、armプラットフォームのlinux / android環境にダウンロードしなくても、PCホストのlinux環境で実行できます。
システムバージョンを表示
root@xxxxx:~/linux_driver/hello$ uname -r 4.2.0-27-generic root@xxxxx:~/linux_driver/hello$ cat /etc/issue Ubuntu 14.04.5 LTS
l
root@xxxxx:~/linux_driver/hello$ vim hello.c 1 /* hello.c */ 2 #include 3 #include 4 MODULE_LICENSE('leo BSD/GPL') 5 static int hello_init(void) 6 { 7 printk(KERN_ALERT 'Hello, world
') 8 return 0 9 } 10 static void hello_exit(void) 11 { 12 printk(KERN_ALERT 'Goodbye, Hello world
') 13 } 14 module_init(hello_init) 15 module_exit(hello_exit) ~ ~
Makefile
root@xxxxx:~/linux_driver/hello$ vim Makefile 1 obj-m += hello.o 2 CURRENT_PATH:=$(shell pwd) 3 LINUX_KERNEL_PATH:=/lib/modules/$(shell uname -r)/build 4 all: 5 $(MAKE) -C $(LINUX_KERNEL_PATH) M=$(CURRENT_PATH) modules 6 clean: 7 rm -rf .*.cmd *.o *.mod.c *.ko .tmp_versions 8
システムのソースカーネルディレクトリ/usr/src/linux-headers-4.2.0-27に依存します
makeコマンドを使用して/ home / sunhz / linux_driver / helloでhello.koをコンパイルして生成します
koダイナミックライブラリをロードする
root@xxxxx:~/linux_driver/hello$ sudo insmod hello.ko root@xxxxx:~/linux_driver/hello$
ログ印刷を表示
root@xxxxx:~/linux_driver/hello$ sudo cat /var/log/syslog | grep Hello Mar 15 14:11:30 R720xd kernel: [337056.403621] Hello, world root@xxxxx:~/linux_driver/hello$
koダイナミックライブラリをアンインストールする
root@xxxxx:~/linux_driver/hello$ sudo rmmod hello.ko root@xxxxx:~/linux_driver/hello$ sudo cat /var/log/syslog | grep Hello Mar 15 14:11:30 R720xd kernel: [337056.403621] Hello, world Mar 15 14:13:17 R720xd kernel: [337163.514790] Goodbye, Hello world
ソースコードを表示できます
printk(KERN_ALERT'Hello、world n ')
printk(KERN_ALERT 'さようなら、Hello world n')
印刷の成功