Kernel development

Copyright © Quectel Wireless Solutions Co., Ltd. 2026. All rights reserved.


The Debian system includes the kernel header files required for kernel module development and provides the toolchain needed to compile kernel modules. Users can directly develop and build new kernel modules on the device.

Environment Preparation

The Quectel Pi M2 kernel version is 6.1.118-rt36. The system provides the corresponding Linux Kernel Headers at the following path:/usr/src/linux-headers-6.1-rockchip

Install the tools required to compile kernel modules:

apt update
apt install -y make gcc

Create the Hello World kernel module project directory:

mkdir -p /home/pi/helloworld
cd /home/pi/helloworld

helloworld.c File

Contents of the helloworld.c file:

#include <linux/init.h>
#include <linux/module.h>
#include <linux/kernel.h>

MODULE_LICENSE("GPL");
MODULE_AUTHOR("Quectel");
MODULE_DESCRIPTION("A simple Hello World kernel module");
MODULE_VERSION("0.1");

static int __init helloworld_init(void)
{
    printk(KERN_INFO "Hello World!\n");
    return 0;
}

static void __exit helloworld_exit(void)
{
    printk(KERN_INFO "Goodbye!\n");
}

module_init(helloworld_init);
module_exit(helloworld_exit);

Makefile File

Contents of the Makefile file:

obj-m := helloworld.o

KERNELDIR ?= /usr/src/linux-headers-6.1-rockchip
PWD := $(shell pwd)

all:
        $(MAKE) -C $(KERNELDIR) M=$(PWD) modules

clean:
        $(MAKE) -C $(KERNELDIR) M=$(PWD) clean

Build

Enter the project directory:

cd /home/pi/helloworld

Run the build:

make

After the build is complete, the following kernel module file is generated in the directory:helloworld.ko

Run and Test

Load the module: insmod helloworld.ko

Check the module: lsmod | grep helloworld

Check the running log: dmesg | grep “Hello World”

Unload the module: rmmod helloworld

Check the unload log: dmesg | grep “Goodbye”