chore(MP/kernel): init kernel part
This commit is contained in:
7
src/06-mini-project/.gitignore
vendored
Normal file
7
src/06-mini-project/.gitignore
vendored
Normal file
@@ -0,0 +1,7 @@
|
||||
.o
|
||||
.ko
|
||||
.mod
|
||||
.mod.c
|
||||
.mod.o
|
||||
.ko.cmd
|
||||
.mod.cmd
|
||||
33
src/06-mini-project/kernel/.clangd
Normal file
33
src/06-mini-project/kernel/.clangd
Normal file
@@ -0,0 +1,33 @@
|
||||
CompileFlags:
|
||||
Add:
|
||||
# Architecture and cross-compilation
|
||||
- "--target=aarch64-linux-gnu"
|
||||
|
||||
# Exclude standard library
|
||||
- "-nostdinc"
|
||||
|
||||
# Mandatory kernel definitions
|
||||
- "-D__KERNEL__"
|
||||
- "-DMODULE"
|
||||
- "-DCONFIG_CC_HAS_K_CONSTRAINT=1"
|
||||
|
||||
# Force-included files
|
||||
- "-include"
|
||||
- "/buildroot/output/build/linux-5.15.148/include/linux/compiler-version.h"
|
||||
- "-include"
|
||||
- "/buildroot/output/build/linux-5.15.148/include/linux/kconfig.h"
|
||||
- "-include"
|
||||
- "/buildroot/output/build/linux-5.15.148/include/linux/compiler_types.h"
|
||||
|
||||
# Kernel include paths
|
||||
- "-I/buildroot/output/build/linux-5.15.148/arch/arm64/include"
|
||||
- "-I/buildroot/output/build/linux-5.15.148/arch/arm64/include/generated"
|
||||
- "-I/buildroot/output/build/linux-5.15.148/include"
|
||||
- "-I/buildroot/output/build/linux-5.15.148/arch/arm64/include/uapi"
|
||||
- "-I/buildroot/output/build/linux-5.15.148/arch/arm64/include/generated/uapi"
|
||||
- "-I/buildroot/output/build/linux-5.15.148/include/uapi"
|
||||
- "-I/buildroot/output/build/linux-5.15.148/include/generated/uapi"
|
||||
|
||||
# GCC compiler system include path
|
||||
- "-isystem"
|
||||
- "/buildroot/output/host/lib/gcc/aarch64-buildroot-linux-gnu/11.3.0/include"
|
||||
34
src/06-mini-project/kernel/Makefile
Normal file
34
src/06-mini-project/kernel/Makefile
Normal file
@@ -0,0 +1,34 @@
|
||||
export PATH := /buildroot/output/host/usr/sbin$\
|
||||
:/buildroot/output/host/usr/bin/$\
|
||||
:/buildroot/output/host/sbin$\
|
||||
:/buildroot/output/host/bin/$\
|
||||
:$(PATH)
|
||||
|
||||
MODULE := temp_regulator
|
||||
SOURCE := main
|
||||
|
||||
# Part executed when called from kernel build system:
|
||||
ifneq ($(KERNELRELEASE),)
|
||||
obj-m += $(MODULE).o ## name of the generated module
|
||||
|
||||
$(MODULE)-objs := $(SOURCE).o ## list of objects needed for that module
|
||||
CFLAGS_$(SOURCE).o := -DDEBUG
|
||||
|
||||
# Part executed when called from standard make in module source directory:
|
||||
else
|
||||
include ../../kernel_settings
|
||||
PWD := $(shell pwd)
|
||||
|
||||
all:
|
||||
$(MAKE) -C $(KDIR) M=$(PWD) ARCH=$(CPU) CROSS_COMPILE=$(TOOLS) modules
|
||||
|
||||
clean:
|
||||
$(MAKE) -C $(KDIR) M=$(PWD) clean
|
||||
echo $(PATH)
|
||||
|
||||
install:
|
||||
$(MAKE) -C $(KDIR) M=$(PWD) INSTALL_MOD_PATH=$(MODPATH) modules_install
|
||||
install -D -m 0644 $(MODULE).conf $(MODPATH)/etc/modprobe.d/$(MODULE).conf
|
||||
|
||||
endif
|
||||
|
||||
31
src/06-mini-project/kernel/main.c
Normal file
31
src/06-mini-project/kernel/main.c
Normal file
@@ -0,0 +1,31 @@
|
||||
// temp_regulator.c
|
||||
#include <linux/module.h> // needed by all modules
|
||||
#include <linux/init.h> // needed for macros
|
||||
#include <linux/kernel.h> // needed for debugging
|
||||
|
||||
#include "linux/printk.h"
|
||||
|
||||
static int __init temp_regulator_init(void) {
|
||||
pr_info("Linux module temp_regulator loading...\n");
|
||||
|
||||
|
||||
|
||||
pr_info("Linux module temp_regulator loaded\n");
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void __exit temp_regulator_exit(void) {
|
||||
pr_info("Linux module temp_regulator unloading...\n");
|
||||
|
||||
|
||||
|
||||
pr_info("Linux module temp_regulator unloaded\n");
|
||||
}
|
||||
|
||||
module_init(temp_regulator_init);
|
||||
module_exit(temp_regulator_exit);
|
||||
|
||||
MODULE_AUTHOR("Klagarge <remi@heredero.ch>");
|
||||
MODULE_AUTHOR("Fastium <fastium.pro@proton.me>");
|
||||
MODULE_DESCRIPTION("Temperature regulator");
|
||||
MODULE_LICENSE("GPL");
|
||||
Reference in New Issue
Block a user