1
0

chore(MP/kernel): init kernel part

This commit is contained in:
2026-05-29 15:05:07 +00:00
parent e313e95f9f
commit 3c3f8df8c7
4 changed files with 105 additions and 0 deletions

7
src/06-mini-project/.gitignore vendored Normal file
View File

@@ -0,0 +1,7 @@
.o
.ko
.mod
.mod.c
.mod.o
.ko.cmd
.mod.cmd

View 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"

View 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

View 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");