- Linux Device Driver Development Cookbook
- Rodolfo Giometti
- 296字
- 2021-06-24 13:54:14
Getting ready
To turn our dummy-code.c file into a kernel module, we only have to change our kernel settings, allowing the compilation of our example module (by replacing the * character with M in the kernel configuration menu). However, under some circumstances, it could be more useful having our driver released into a dedicated archive completely separated from kernel sources. Even in this case, no changes are to be done to the existing code, and we will be able to compile dummy-code.c inside the kernel source tree, or even outside it!
To build up our first kernel module as external code, we can safely take the preceding dummy-code.c file and then put it into a dedicated directory with the following Makefile:
ifndef KERNEL_DIR
$(error KERNEL_DIR must be set in the command line)
endif
PWD := $(shell pwd)
ARCH ?= arm64
CROSS_COMPILE ?= aarch64-linux-gnu-
# This specifies the kernel module to be compiled
obj-m += dummy-code.o
# The default action
all: modules
# The main tasks
modules clean:
make -C $(KERNEL_DIR) \
ARCH=$(ARCH) \
CROSS_COMPILE=$(CROSS_COMPILE) \
SUBDIRS=$(PWD) $@
Looking at the preceding code, we see that the KERNEL_DIR variable must be supplied on the command line pointing to the path to ESPRESSObin's previously compiled kernel sources, while the ARCH and CROSS_COMPILE variables are not mandatory since Makefile specifies them (however, supplying them on the command line will take precedence).
Also, we should verify that the insmod and rmmod commands are available in our ESPRESSObin, as follows:
# insmod -h
Usage:
insmod [options] filename [args]
Options:
-V, --version show version
-h, --help show this help
If they are not present, then they can be installed by adding the kmod package with the usual apt install kmod command.
- Mastering vRealize Operations Manager(Second Edition)
- 網絡操作系統:Windows Server 2003管理與應用
- 移動應用UI設計模式(第2版)
- Windows 7中文版從入門到精通(修訂版)
- VMware NSX Cookbook
- Ceph分布式存儲實戰
- Kali Linux高級滲透測試
- Linux系統最佳實踐工具:命令行技術
- Windows 7使用詳解(修訂版)
- 從零開始學安裝與重裝系統
- Ubuntu Linux操作系統實用教程
- 電腦辦公(Windows 10 + Office 2016)入門與提高(超值版)
- Microsoft Hyper-V Cluster Design
- Windows 8完全自學手冊
- Windows 8玩全不求人