Links:
# https://perasoinc.com/perspectus-series/ # http://www.orangepi.org/orangepiwiki/index.php/Orange_Pi_CM4 # https://device.report/manual/7926893
Собственно где брать heders-linux debian bookworm:
0.Пере установкой хедеров убедимся что все пакеты для сборки стоят: apt update apt upgrade -y apt install git make gcc linux-libc-dev pkg-config libncurses-dev flex bison libssl-dev libelf-dev dwarves rsync bc fakeroot build-essential xz-utils libncurses5-dev apt install gcc-arm-linux-gnueabihf 1. Из документации по orangepi хедеры на текущее ядро лежат в каталоге /opt Проверив этот каталог мы увидим deb файл, который просто нужно доставить в систему: dpkg -i /opt/linux-headers-legacy-rockchip-rk356x_1.x.x_arm64.deb 2. После установки у нас появятся в каталоге /usr/src хедеры ядра ls /usr/src
Так же из документации orangepi есть пример как собирать костюмный модуль ядра:
#0. Создаем код модуля ядра cat > hello.c << "EOF" #include#include static int hello_init(void) { printk("Hello Orange Pi -- init\n"); return 0; } static void hello_exit(void) { printk("Hello Orange Pi -- exit\n"); return; } module_init(hello_init); module_exit(hello_exit); MODULE_LICENSE("GPL"); EOF #1. Создаем Makefaile для сборки модуля cat > Makefile << "EOF" ifneq ($(KERNELRELEASE),) obj-m:=hello.o else KDIR :=/lib/modules/$(shell uname -r)/build PWD :=$(shell pwd) all: make -C $(KDIR) M=$(PWD) modules clean: rm -f *.ko *.o *.mod.o *.mod *.symvers *.cmd *.mod.c *.order endif EOF #2. Собираем make V=1 #3. Проверяем что собралось ls *.ko #4. Загружаем модуль ядра (вообще лучше такое делать через modprobe вместо ismod) insmod hello.ko #5. Проверяем что наш модуль загрузился dmesg | grep "Hello" #6. Выгружаем модуль ядра rmmod hello
Сборка peraso
# Для потомков # root@peraso1:/opt/13.3.328/src/drivers/net/wireless/prs# uname -a # Linux peraso1 5.10.160-rockchip-rk356x #1.0.6 SMP Mon May 27 17:03:18 CST 2024 aarch64 GNU/Linux # root@peraso1:/opt/13.3.328/src/drivers/net/wireless/prs# lsusb # Bus 006 Device 002: ID 2932:0720 Peraso Technologies Inc. Peraso PRS460 0. Переходим в каталог с Makefile cd /opt/13.3.328/src/drivers/net/wireless/prs 1. Собираем модуль make -C /lib/modules/5.10.160-rockchip-rk356x/build M=$PWD CONFIG_PRS_FALCON=m modules V=1 2. Пробуем подгрузить собравшийся модуль: insmod prs_falcon.ko 3. Проверяем lsmod | grep prs_falcon dmesg | grep prs_falcon 4. Если все ок и ошибок в третьем пункте нет, продолжаем: 4.1 Копируем модуля ядра в каталок к модулям текущего ядра: cp prs_falcon.ko /lib/modules/$(uname -r)/kernel/drivers/net/wireless/ 4.2 Обновляем зависимости depmod -a 4.3 Пробуем загрузить: modprobe prs_falcon 5. Проверяем сделанное: lsmod | grep prs dmesg | tail -20
Запуск точки доступа и клиента:
Клиент Client: wpa_supplicant -D nl80211 -i wlan0 -c /etc/wpa_supplicant.conf -B wpa_supplicant -Dnl80211 -iwlan0 -c wpa.conf wpa_supplicant -Dwext -iwlx20cec40343d9 -c wpa_suplicant.conf Точка доступа AP: hostapd -B /etc/hostapd.conf hostapd -dddd -g /var/run/hostapd/global hostapd.conf Пример конфига hostapd: cat > hostapd.conf << EOF driver=nl80211 interface=wlx20cec40343d9 ssid=clear-link channel=2 hw_mode=ad country_code=US ctrl_interface=/var/run/hostapd ctrl_interface_group=0 EOF Пример конфига wpa_supplicant: cat > wpa_suplicant.conf << "EOF" ctrl_interface=/var/run/wpa_supplicant network={ ssid="clear-link" frequency=60480 scan_ssid=1 key_mgmt=NONE } EOF Тест: wpa_supplicant -Dnl80211 -iwlx20cec40343da -c wpa_suplicant.conf hostapd -dddd -g /var/run/hostapd/global hostapd.conf