Я пытаюсь разработать драйвер DMA для Zynq. В соответствии с требованиями нашего программного обеспечения я создал следующую среду:
ядро: создано в petalinux 2018.3.
источник ядра : загруженс https://github.com/Xilinx/linux-xlnx (git tag = xlnx_rebase_v4.14_2018.3, как указано в примечаниях к выпуску). Распаковывается в /usr/src/linux-headers-4.14.0-xilinx-v2018.3.
rootfs: создано из исходного кода Debian 9.
Загрузка с SD-карты и команда uname -r
вернули 4.14.0-xilinx-v2018.3
.
Я сделал простой драйвер и скомпилировал его для вышеупомянутого источника ядра: make -C / usr / src / linux-headers- $ (shell uname -r) M = $ (shell pwd) modules_install
Компиляция прошла успешно с установленным ds_axidma.ko /lib/modules/4.14.0/extra/
Затем я попытался установить ядро:
Команда insmod ds_axidma.ko
Возвращенная ошибка:
insmod: ERROR: could not insert module ds_axidma.ko: Invalid module format
Команда modprobe ds_axidma.ko
Возвращенная ошибка:
modprobe: ERROR: ../libkmod/libkmod.c:586 kmod_search_moddep() could not open moddep file '/lib/modules/4.14.0-xilinx-v2018.3/modules.dep.bin'
modprobe: FATAL: Module ds_axidma not found in directory /lib/modules/4.14.0-xilinx-v2018.3
Это выглядитномера версий ядра несовместимы для двух операций, в результате чего компиляция, установленная в каталог, отличный от каталога, который просматривает modprobe
.
Итак, как я могу заставить его работать? Правильно ли работает эта конфигурация среды (для ядра / исходного кода ядра / rootfs)?