Продолжаю играться с Lichee Pi Nano - небольшой платой с 32-битным ARM процессором, поддерживающим Linux. Так как процессор f1c100s не одинок в своей серии, и попиново совместим с f1c200s - поиск по билдам Linux для f1c200s привел к репозитарию: https://github.com/xiaofengvskuye/linux/tree/f1c100s-v5.8 - там готовая Linux 5.8 с поддержкой всех "фишек" данного процессора: LCD экран с тачскрином, USB host, аудиовывод, выход на hdmi, даже, пишут, что можно использовать аппаратное ускорение декодирования видео, если собрать библиотеку cedar.
Единственное, чего не хватало в данном репозитории - поддержки тачскрина на ns2009 (можно взять отсюда), и глубина цвета по-умолчанию стояла 16 битов, а не привычные 32. Ну и поддержку нестандартной SPI Flash требуется добавить.
Глубина цвета настраивается в исходниках Linux в файле /drivers/gpu/drm/sun4i/sun4i_drv.c:
- drm_fbdev_generic_setup(drm, 16);
Необходимо поменять 16 на 32. DTS файл при этом править не требуется.
Кстати. Так просто тачскрин на Lichee Pi Nano не заработает - I2C (она же TWI) шине не нравится отсутсвие pullup резисторов. Поэтому я на скорую руку наколхозил их сам - взял 4.7К и подтянул к 3.3в:
(да, паять я не умею и за такое качество надо оторвать руки - но работает же).
Для создания полноценной rootfs на этот раз воспользуюсь пакетом mmdebstrap. Данный пакет сам вызывает qemu для запуска бинарников архитектуры armel и настраивает все указанные ему пакеты.
Для работы требуются пакеты qemu-user-static и arch-test:
- sudo apt-get install qemu-user-static
- sudo apt install arch-test
Сам mmdebstrap лучше взять с git:
- git clone https://gitlab.mister-muffin.de/josch/mmdebstrap
Далее запускаем такой скрипт:
- sudo mount -i -o remount,exec,dev /media/mamaich/ext4/
- sudo rm -rf /media/mamaich/ext4
- sudo ./mmdebstrap --variant=minbase --components=main,non-free --include=initscripts,procps,wpasupplicant,wireless-tools,mc,usbutils,net-tools,iproute2,openssh-server,haveged,kmod,busybox,sysvinit-core --arch armel buster /media/mamaich/ext4 http://ftp.debian.org/debian
- sudo cp /usr/bin/qemu-arm-static /media/mamaich/ext4/usr/bin
- echo
- echo Now you are in armel chroot
- echo
- sudo chroot /media/mamaich/ext4/ /usr/bin/qemu-arm-static /bin/bash -i
Тут папка /media/mamaich/ext4/ - путь, куда, замонтирован EXT4 раздел загрузочной SD карты.
Последняя строка запускает интерактивный shell, в котором можно доставить недостающие пакеты, сделать passwd root, поправить /etc/fstab (сделать / как rw) и /etc/inittab (разрешить getty на serial), настроить конфиг wpa supplicant и тд.
Пакет haveged нужен только для одной цели - сэкономить порядка 30 секунд загрузки при старте sshd. Поэтому после запуска sshd его можно остановить. Я просто добавил строку "/etc/init.d/haveged stop" в конец обработчика команды start в /etc/init.d/ssh
Отмечу, что в текущей версией qemu не работает Debian bullseye - ругается на нереализованные syscall, из-за чего не встают критичные для меня пакеты, поэтому пока только buster.
Если mmdebstrap ругается на отсуствие arch-test, хотя в реальности он установлен:
E: install arch-test for foreign architecture support
Необходимо в файле mmdebstrap найти строку:
if (system('arch-test --version>/dev/null') != 0) {
и убрать оттуда "--version", так как данный ключ, по крайней мере у меня, не поддерживался установленным arch-test.
Первая загрузка на устройстве будет идти довольно долго, но в остальном - все работает.
32 мегабайта RAM, конечно, мало для Debian, приходится включать swap на SD карту или встроенный SPI Flash (который очень медленный) - но я с Алиэкспресс заказал f1c200s с 64 мегабайтами на борту, и если удастся его перепаять на плате, то получится уже вполне достойное устройство.
Установка пакетов через apt непосредственно на устройстве не работает - мало памяти. Но есть выход - через qemu на ПК.
Чтобы доставить недостающие пакеты, собрать какие-либо приложения из исходников не парясь с кросс-компиляцией необходимо вставить в ПК SD карту и выполнить команды:
- sudo mount --bind /dev /media/mamaich/ext4/dev/
- sudo mount --bind /sys /media/mamaich/ext4/sys/
- sudo mount --bind /proc /media/mamaich/ext4/proc/
- sudo mount --bind /dev/pts /media/mamaich/ext4/dev/pts/
- sudo chroot /media/mamaich/ext4/ /usr/bin/qemu-arm-static /bin/bash -i
После этого работает и apt update, и, при желании, можно доставить gcc и собрать что-нибудь с исходников. Я ради интереса поставил x.org - работает.
Комментариев нет:
Добавлять новые комментарии запрещено.