https://www.tldp.org/LDP/lkmpg/2.6/html/x121.html
hello.c
/* * hello-1.c - The simplest kernel module. */ #include <linux/module.h> /* Needed by all modules */ #include <linux/kernel.h> /* Needed for KERN_INFO */ int init_module(void) { printk(KERN_INFO "Hello world 1.\n"); /* * A non 0 return means init_module failed; module can't be loaded. */ return 0; } void cleanup_module(void) { printk(KERN_INFO "Goodbye world 1.\n"); }
export ARCH:=arm export CROSS_COMPILE:=arm-xilinx-linux-gnueabi- CC=$(CROSS_COMPILE)gcc obj-m += hello.o KDIR := /home/shohei/Downloads/linux-xlnx PWD := $(shell pwd) default: ${MAKE} -C ${KDIR} M=${PWD} modules clean: ${MAKE} -C ${KDIR} M=${PWD} clean
PYNQでテスト
$ sudo insmod hello.ko $ sudo rmmod hello.ko $ dmesg [ 2929.823746] Hello world 1. [ 2940.046315] Goodbye world 1.