Комментарии 17
А не пробовали воспользоваться buildroot? Он может все это автоматически сделать и на выходе выдать уже образ для записи на карту.
Автоматически сможет создать образ почти любой пользователь. А вот, чтобы понять, что для чего и где расположено, как раз и нужны такие статьи.
Большое спасибо Автору.
Класс! Я как-то заморачивался подобным для платы на i.MX6 процессоре.
Но там был и SATA и mini PCI-E, и HDMI, т.е. много чего можно из него слепить.
А тут непонятно, вход для камеры есть, а видео выхода нет. Какие сценарии использования?
Мне например сразу приходит в голову - сделать IP камеру. Но для этого надо очень аппаратное кодирование видео, и сейчас есть куда как более интересные варианты для этого.
А вот распознавание образов сейчас делают даже на ESP32, так что этой штуки вполне должно хватить на распознавание чего нибуть..
А вообще так чипсет вроде телефонный? Тогда экран планировался, фоточки... На борту есть целый GPU и скриншот Android на странице продукта
Дисплеи в общем то и на SPI есть только медленнее
Автору честь и хвала за то что ядро пропатчил. И все расписал.
Мне любопытно стало - а если использовать /gcc-linaro-7.5.0-2019.12-i686-mingw32_arm-linux-gnueabihf.tar.xz так ведь наверное получиться собрать бинарники и без WSL хотя дальше будут приключения с правами доступа в файловой системе (образе)
The official build system for Orange Pi, support RDA8810(OrangePi I96, OrangePi 2G-IOT)
https://github.com/orangepi-xunlong/OrangePi_Build
Linux kernel release 3.x - старое ядро
OrangePiRDA https://github.com/orangepi-xunlong/OrangePiRDA_kernel
Здесь чел собирает на Debian Bullseye готовые образы:
https://github.com/TheRemote/Legendary-OrangePi-i96
https://github.com/TheRemote/Legendary-OrangePi-i96/releases/download/1.37/Legendary_OrangePi_i96_debian_bullseye_server_v1.37.tar.xz
Его блог.
https://jamesachambers.com/orange-pi-i96-getting-started-guide/
Ядро апгрейдить он похоже не осилил, хотя там и для ядра 3. всякие патчи
По конфигу не осилил. Да с патчами он плотно поработал.
https://github.com/TheRemote/Legendary-OrangePi-i96/blob/main/OrangePiRDA/kernel/arch/arm/configs/i96_linux_defconfig
Проверил:
sudo kpartx -av Legendary_OrangePi_i96_debian_bullseye_server_v1.37.img
sudo parted -l
/dev/mapper/loop0p1: 52,4MB
/dev/mapper/loop0p2: 1375MB
mount | grep loop0p
/dev/mapper/loop0p1 on /media/user/BOOT type ext2 (rw,nosuid,nodev,relatime,uhelper=udisks2)
/dev/mapper/loop0p2 on /media/user/rootfs type ext4 (rw,nosuid,nodev,relatime,stripe=1024,uhelper=udisks2)
Да. Не осилил.

включил он в ядро поддержку кое-какого железа включая USB и интерфейс SPI (а на нем CAN) плюс какие то еще настройки ...
Чип RDA8810PL использует набор команд ARMv7 с аппаратной поддержкой команд с плавающей запятой.
Можно попробовать подсунуть alpine-minirootfs вместо busybox. Больше возможностей по софту.
https://mirror.yandex.ru/mirrors/alpine/latest-stable/releases/armhf/alpine-minirootfs-3.18.4-armhf.tar.gz
просто ARMv7
https://mirror.yandex.ru/mirrors/alpine/latest-stable/releases/armv7/alpine-minirootfs-3.18.4-armv7.tar.gz
Я могу ошибаться но выглядит это не совсем так. busybox это по большому счету не rootfs а только набор утилит командной строки, которые в rootfs еще надо разместить, в общем то, по своему усмотрению, что, собтвенно, здесь и показано. Я встречал заявления что busybox - нечто большее, но пока я не вижу полноценной законченной среды.
В данной статье для законченной структуры и пакетов предлагают прикрутить еще и Entware и Optware , которые не только содержат скомпилированные пакеты но и идеологию их размещения и работы.
alpine-minirootfs - сущность такого же рода, только система пакетов уже другая и и используется библиотека musl вместо glibc, а это может потянут за собой очень существенные изменения.
С учетом характера платы я считаю более разумным прикрутить к ней OpenWrt, это тоже вполне полноценный linux расчитанный на малые ресурсы. Я даже не одинок в этом мнении https://forum.openwrt.org/t/support-for-the-rda8810pl/148380
OpenWrt хорош если разработчики поддержали плату которая тебе нужна. А если её поддержки нет проще будет собрать прошивку из исходников вручную, чем пытаться как-то экспериментировать с OpenWrt.
так любой одноплатник хорош тем когда его кто то чем то поддерживает. При этом несколько стадий поддержки от "запиил чисто для себя" через неофициальную сборку до официального включения. для официального включения там определенное количество формальностей, но многие шьют "сборку от васяна", которое суть есть именно это "собрать прошивку из исходников вручную" и вполне довольны
Я так понимаю поднять на встроенном WIFI AP так ни у кого и не получилось?
иногда это заблокировано прямо таки на железном уровне
Когда я пересобрал драйвер то видел код относящийся к AP там даже есть код необходимый для режима peer-to-peer. Так что здесь скорее вопрос к программному обеспечению необходимому для работы wi-fi в данных режимах. Вот собственно интерфейс драйвера:
Hidden text
static struct cfg80211_ops wl_cfg80211_ops = {
.add_virtual_intf = cfg80211_add_virtual_iface,
.del_virtual_intf = cfg80211_del_virtual_iface,
.change_virtual_intf = cfg80211_change_virtual_iface,
.scan = cfg80211_scan,
.set_wiphy_params = cfg80211_set_wiphy_params,
.join_ibss = cfg80211_join_ibss,
.leave_ibss = cfg80211_leave_ibss,
.get_station = cfg80211_get_station_op,
.set_tx_power = cfg80211_set_tx_power,
.get_tx_power = cfg80211_get_tx_power,
.add_key = cfg80211_add_key,
.del_key = cfg80211_del_key,
.get_key = cfg80211_get_key,
.set_default_key = cfg80211_config_default_key,
.set_default_mgmt_key = cfg80211_config_default_mgmt_key,
.set_power_mgmt = cfg80211_set_power_mgmt,
.connect = cfg80211_connect,
.disconnect = cfg80211_disconnect,
.suspend = cfg80211_suspend,
.resume = cfg80211_resume,
.set_pmksa = cfg80211_set_pmksa,
.del_pmksa = cfg80211_del_pmksa,
.flush_pmksa = cfg80211_flush_pmksa,
#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 4, 0)
.set_beacon = cfg80211_modify_beacon,
.add_beacon = cfg80211_modify_beacon,
.del_beacon = cfg80211_modify_beacon,
#else /* LINUX_VERSION_CODE < KERNEL_VERSION(3, 4, 0) */
.start_ap = cfg80211_start_ap,
.stop_ap = cfg80211_stop_ap,
.change_beacon = cfg80211_change_beacon,
#endif /* LINUX_VERSION_CODE < KERNEL_VERSION(3, 4, 0) */
#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 2, 0)
.del_station = cfg80211_del_station,
.mgmt_tx_cancel_wait = cfg80211_mgmt_tx_cancel_wait,
#endif /* LINUX_VERSION_CODE >= KERNEL_VERSION(3, 2, 0) */
.sched_scan_start = cfg80211_sched_scan_start,
.sched_scan_stop = cfg80211_sched_scan_stop,
.update_mgmt_frame_registrations = cfg80211_mgmt_frame_register,
.change_bss = cfg80211_change_bss,
.mgmt_tx = cfg80211_mgmt_tx,
#if 0
.set_channel = cfg80211_set_channel,
.remain_on_channel = cfg80211_remain_on_channel,
#endif
.cancel_remain_on_channel = cfg80211_cancel_remain_on_channel,
#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 10, 0)
#ifdef WLAND_P2P_SUPPORT
.start_p2p_device = cfg80211_p2p_start_device,
.stop_p2p_device = cfg80211_p2p_stop_device,
#endif /* WLAND_P2P_SUPPORT */
.crit_proto_start = cfg80211_crit_proto_start,
.crit_proto_stop = cfg80211_crit_proto_stop,
.tdls_oper = cfg80211_tdls_oper,
#endif /* LINUX_VERSION_CODE >= KERNEL_VERSION(3, 10, 0) */
.set_cqm_rssi_config = cfg80211_set_cqm_rssi_config,
};
Сборка прошивки из исходников для Orange PI i96(Orange PI 2g-iot)