Linuxデバイスドライバー--scull



Linux Device Driver Scull



「linuxdevicedriver」ブックのルーチンは、armプラットフォームのlinux / android環境にダウンロードしなくても、PCホストのlinux環境で実行できます。

æ&yençæºå&frac34å



システムバージョンを表示

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')

印刷の成功