Во-первых, у меня мало опыта работы с нестандартным оборудованием. Пока что я спроектировал только модули ядра Linux на готовых системах, поэтому это может быть глупой проблемой, но я не могу ее решить.
У меня есть Banana PI M2 Zero с минимальная Linux 5.6.0-rx5 + основанная на ядре Ubuntu. Я хочу создать драйвер для аналогового интерфейса ADS1294 SPI, поэтому я начал с самого базового c файла ядра:
#include <linux/init.h>
#include <linux/module.h>
MODULE_LICENSE("GPL");
static int __init test_init(void){
printk(KERN_INFO "TEST: starting...");
return 0;
}
static void __exit test_exit(void){
printk(KERN_INFO "TEST: stopping...");
}
module_init(test_init);
module_exit(test_exit);
с файлом Makefile:
obj-m := test_mod.o
all:
make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules
clean:
make -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean
После выполнения make all
система заявляет, что make[1]: *** /lib/modules/5.6.0-rc5+/build: No such file or directory. Stop.
.
Если я перечислю содержимое /lib/modules/5.6.0-rc5+/
, я получу: build kernel modules.alias modules.alias.bin modules.builtin modules.builtin.bin modules.builtin.modinfo modules.dep modules.dep.bin modules.devname modules.order modules.softdep modules.symbols modules.symbols.bin source
Аналогично для ls /usr/src/linux-headers-5.6.0-rc5+/
Я получу папка include
.
Из них у меня есть подозрение, что каким-то образом заголовки сломаны (?), но я не уверен, как поступить, что проверить. Если возможно, я бы хотел избежать перестройки ядра.