Купил я себе вот такую плату. A20, гиг оперативки, 4гб nand, и куча периферии. Тот же кубиборд, но с русским разрабом и не надо ждать месяц с али.
Лично для меня плюсами данной борды было:
  • На обратной стороне стоит sata-разьем — можно прицеплять hdd без вороха проводов. Очень важно, потому что немножко префекционист и не люблю, когда провода занимают объем больший, чем сама плата.
  • На плате разведено аж два lvds. То есть берем любую матрицу от ноута, отрезаем мелкий разъем, ставим на его место BLD2х15 и все. Если там не провод, а шлейф, то на али можно купить готовый провод за пару долларов. Китайские ноутбучные матрицы стоят копье по сравнению с готовыми экранами тех же разрешений и размеров.
  • Почти все разъемы идут по одному краю платы. Вот никогда не понимал, что движет разработчиком платы в тот момент, когда он ставит разьемы по всем четырем сторонам? Первая малина яркий тому пример. Зачем? Корпус нормальный не сделаешь, на столе занимает места раз в 6-9 больше, чем сама размером, если куда вставить — надо выпаивать все эти разъемы...

Но есть у платы и небольшой минус. Плата новая и разраб сделал под нее только buildroot c QT. А некоторым этого мало… Мне хотелось полноценную систему, как на десктопе. Зачем? Об этом и статья.

Так получилось, что у меня в руках оказалась матрица от ноутбука и старый Wacom Bamboo с оторванным проводом. Ваком был разобран с целью изучения принципов работы, на глаза попалась матрица от ноута… Совпадение ли, но в металлической рамке матрицы было прямоугольное отверстие, идеально подходящее для установки туда платы от вакома. Что я, собственно, и сделал, приклеив плату от вакома туда на двусторонний скотч. Допаял провод, проверил — работает также хорошо, как в родном корпусе. А тут курьер привез заказанную плату на А20 и все заверте…

Подробности аппаратного устройства сего девайса опущу, там ничего интересного особо нет. Питание от 12в 2А, дальше токовый датчик ACS712, потом два DC-DC, один на 5В (питание подсветки и платы), другой на 3.3В — на последнем висит питание матрицы (~0.3А) и будет висеть MSP430 от ланчпада, дабы не вешать на основную плату датчики, светодиоды и кнопки. Все это приклеено двусторонним скотчем на металлическую рамку экрана.



Итак, железо собрано в кучу, склеено скотчем, спаяно, где надо, поставлены разъемы… Неплохо бы и софт найти. А софта нет…
В комплекте с платой идет билдрут, и, в принципе, потребности большинства он покрывает: коди, QT, три вида торрент-клиентов, и все прочее. Только вот как на нем использовать ваком, который я приделал к матрице? Никак, и потому были начаты поиски другого дистрибутива.

Первым и очевидным решением был кубиан, дебиан для кубиборда. Но проект оказался заброшен, на раздачах никого, и качать черти-откуда не хотелось.


Оказалось, что дебиан уже имеет репу с armhf пакетами и систему можно взять оттуда, немножко пошаманив.
Итак, достаем бубен…

1. Скачиваем образ для сетевой установки с офсайта на компьютер. Улыбаемся, потому что образ для арма упакован в ISO, где логика — не знаю. Любым способом распаковываем данный образ. Нас из всего образа интересует один файл: ./install/network-console/initrd.gz

2. Ставим конвертер для initrd, ибо uboot разборчив в форматах.
apt-get install u-boot-tools

Распаковываем initrd.gz в просто initrd, последний распаковываем совсем. Архивы удаляем, они не нужны.

3. Собираем buildroot по инструкции к плате, там все очень несложно. Параметры любые, однако в сборку обязательно должны войти драйвера mali (mali.ko, ump.ko) и прочие драйвера для чипа, иначе ничего не выйдет. В ядре обязательно должна стоять галка на CONFIG_FHANDLE=y, проще поправить сам .config, чем искать в menuconfig.

4. Когда билдрут собран, то берем из него папку /lib/modules/<версия>/ и копируем по тому же адресу в папку, полученную после распаковки initrd от дебиана. Собираем initrd назад:
find . | cpio -o > ../initrd


5. Полученный initrd прогоняем через конвертер, чтобы uboot образ принял:
mkimage -A arm -O linux -T ramdisk -C none -a 0 -e 0 -n uInitrd -d ./initrd ./uInitrd

Кладем полученный uInitrd в папку /boot загрузочной флешки с подготовленным билдрутом.

6. Подготовленную флешку ставим в плату, ставим hdd, подключаем дисплей и все остальное оборудование, включаем питание и сразу же ловим консоль uboot. Она ожидает нажатия любой клавиши 3 секунды на старте. Дальше делаем следующее:
ext2load mmc0 0 0x43000000 /boot/script.bin
ext2load mmc0 0 0x41000000 /boot/uImage    
ext2load mmc0 0 0x50000000 /boot/uInitrd
bootm 0x41000000 0x50000000

Параметры ядра сейчас нас не интересуют, и они могут быть любыми, какие нравятся. Адреса загрузки взяты с офвики sunxi.

7. Если все сделано верно, попадаем в установщик debian-a. Ура! Половина дела сделана! Ставим все как обычно, можно даже kde поставить. Систему ставим на hdd, но не в mmcblk0, она нам будет еще нужна! Установка идет долго, около часа. Ах, да, система заметит установку через ttyUSB0 и предложит сделать это более удобно, через ssh — соглашаемся, это и правда удобнее. Также предупреждаю, что если разбивка диска будет не по-умолчанию, то и в дальнейшем тексте будут поправки.

8. После установки перезагружаем систему, uboot веточкой не тыкаем, и попадаем в ранее подготовленный buildroot. Оттуда заходим в /media/usb0 (она же /boot/ в дебиане) и удаляем оттуда все, кроме initrd, последний перепаковываем, как это уже делали ранее в п.1,4,5. Копируем ядро и скрипт из билдрута в эту папку.

9. Заходим в /media/usb1/lib/modules/ (она же /lib/modules/ в дебиане) и кладем туда модули, как делали в п.4. Старую папку модулей можно удалить.

10. Перезагружаемся, ловим консоль убута, вводим:
setenv bootargs 'root=/dev/sda2 rootwait consoleblank=0 console=ttyS0,115200'
scsi scan
ext2load scsi0 0 0x43000000 /script.bin 
ext2load scsi0 0 0x41000000 /uImage
ext2load scsi0 0 0x50000000 /uInitrd
bootm 0x41000000 0x50000000

Для того, чтобы не грузить каждый раз ручками, стоит прописать сценарий загрузки в переменную uboot. Я сделал это весьма топорно, потому не показываю, смотрим ман uboot и делаем это правильно.

11. Если все пошло как надо, и не забыли CONFIG_FHANDLE=y в ядре, то увидим запуск системы в консоли и картинку на экране. Но радость быстро уйдет — оно жутко тормозит. И вот почему…

12. Надо собрать драйвер для X, как это сделать написано тут, не вижу смысла дублировать. Драйвер собирается без ошибок с первого раза, правда, чтобы его собрать, надо вытянуть около сотни devel-пакетов. После установки из консоли делаем:
killall Xorg

И радуемся, что окошки тормозить полностью перестали. Отзывчивость системы будет на уровне какого-нибудь eeepc первых серий, то есть вполне юзабельно.

13. Теперь трогаем пером экран и понимаем, что выходит фигня. Курсор живет своей жизнью, и его надо калибровать. Методом тыка нашел вот такие числа:
xsetwacom --set "<dev>" area -8700 -4100 22400 13500

С этими магическими числами курсор стоит точно под пером. Дальше правим в гимпе степень давления на перо в сторону уменьшения, дабы не так сильно царапать экран. Планшет отлично закрывает рабочую область в гимпе.



14. Корпус. Этот момент опустим, так как с кадами не дружу и посчитать даже простую коробку сильно сложно. Но можно, есть люди, которые помогут сообразить хороший корпус из листового алюминия. В корпусе будет 3+1 USB, порт логического анализатора (с али за $20), примитивный осциллограф из звуковухи, десяток кнопок, и, может быть, lipo-батарея. Выйдет довольно неплохое многофункциональное устройство.

P.S. Если честно, был поражен производительности этого самого А20: гимп со включенным сглаживанием линии не тормозит при рисовании, офис открывается также быстро, как на нетбуке, то есть получилась довольно неплохая система. Видео, скорее всего, играть не будет, потому что драйверов для аппаратных кодеков нет, но эта проблема пока мало волнует.

Комментарии (20)


  1. kAIST
    21.12.2015 20:28

    Софт, это беда всех подобных проектов (
    Недавно руки дошли до Orange PI PC, анонс, которой был на хабре. Думал заменить ей Raspberry Pi в одном из девайсов (фотобудка), нужна была немного большая производительность.
    И ничего из этого не вышло — «из коробки» ничего не работает. Больше всего удивился, когда скачал образ с офф сайта, и не заработали USB, скачал другой образ, заработали, но пришлось пересобрать ядро, чтоб заработал UART. Заявлена совместимость с Raspberry, но ее нет ни по пинам, ни по нужным библиотекам для работы с gpio, которые элементарно не собираются (все с офф сайта orange pi). HDMI под кастомное разрешение настроить нельзя (нужно для 7-ми дюймового дисплей). В итоге таких мелочей целый вагон.
    P.S. Что то не могу попасть на starterkit, пишет «Вам запрещён доступ на сайт!», хотя иду туда впервые ((


    1. hostadmin
      21.12.2015 20:53

      Мне тоже запрещен «за попытку взлома», а вот из германии нормально пускает ;)


      1. beeruser
        21.12.2015 23:38

        Oh these Яussians!

        hint: с мобилки заходит. Хотя наверное проблема в самой ссылке (указывает не на главную страницу)


    1. Celtis
      21.12.2015 23:48
      +1

      Попробуйте Debian Jessie, сборку от Loboris. Без бубна завелись все три USB, Ethernet и UART одновременно.
      Плюс бинарники под разные разрешения для HDMI (лично не проверял, использую headless)


  1. Bluewolf
    21.12.2015 21:04

    Почему для ARM-систем нет какого-то подобия BIOS, позволяющего легко устанавливать и запускать ОС так же, как на x86?


    1. Konachan700
      21.12.2015 21:17
      +2

      Скорее всего, потому что жизненный цикл чипа недолог, а на большинство нет публичной документации от слова вообще. То есть кто-то где-то под NDA делает по внутренней вики компании патч на ядро и дрова, заглядывая местами в верилог и разные технологические доки, а местами вообще советуясь с разработчиками кристалла. Собирает тяп-ляп блобы и в продакшн, нет времени на написание даташитов. Проц и так купят, на него уже очередь от производителей электроники. А разработка нормального софта, не нарушая лицензий и делая удобоваримый софт — это время и деньги. Через год-два текущий проц забудут, ему на смену придет более совершенный. Зачем тратить больше? Ведь и жизненный цикл устройства на этом чипе короток, и его производителю тоже не особо-то надо продление жизни гаджету, потребители не купят потом другой. Экономика сурова.
      На самом деле, добавить в uboot псевдографику на манер bios и мультибут очень несложно, там, по-сути, все для этого есть. Но нужно ли это? Я думаю, что наврядле.


      1. Bluewolf
        21.12.2015 21:46
        +2

        Несколько расстраивает, что на x86 можно легко и кому угодно установить любой доступный в бинарниках дистрибутив, а на arm-платы — или что-то заранее собранное в виде образа диска, или путем очень нетривиальных операций, даже если блобы и хоть какая-то документация есть (что не всегда так). При этом компактных и нормальных x86 плат — нет.


        1. ANTPro
          21.12.2015 22:27
          +1

          Скоро должно появится:
          UP — Intel x5-Z8300 board in a Raspberry Pi2 form factor


      1. rPman
        22.12.2015 01:23
        +1

        А что такое стандартизация, думать не хотят :(

        Ведь именно это и сложности с софтом не дают сделать еще один шаг впереди x86 инфраструктуры… а это так нужно :(

        p.s. вы можете добавить видео работы, чтобы оценить отзывчивость? а то как то шибко заоблачно получается.


    1. ValdikSS
      21.12.2015 21:38
      +2

      Есть UEFI, но, по какой-то причине, все используют u-boot, причем обязательно свой.


    1. beeruser
      21.12.2015 23:44
      +2

      В ARM процессоры производители пихают всё что попало.
      Никакого стандарта на енумерацию железа и работу с ним нет.

      Для ARMv8 есть подвижки
      http://www.linaro.org/blog/when-will-uefi-and-acpi-be-ready-on-arm/


  1. ErshoFF
    21.12.2015 22:43

    Добавлю свои пять копеек, есть большой опыт использования кубиан (cubian) на Allwiner A10.
    Cubian последовательно легко обновляется до debian 8, надо поправить sources.
    Как плюс — из коробки имеем установку на NAND, работающий VGA (правда его распаять надо). Работающий звук и видеоускоритель.


    1. vvmk
      21.12.2015 23:49

      Если можно — подробнее, или напишите статью.
      Заранее спасибо.


      1. ErshoFF
        23.12.2015 10:00
        +1

        Для статьи материала маловато
        Здесь
        https://opensourceclient.org/forum/viewtopic.php?f=14&t=50
        4 файла, последовательный запуск которых обновит cubian до актуального состояния debian-armhf.
        Всё.


    1. nitro80
      22.12.2015 15:01

      Да да, особенно про распайку VGA


      1. ErshoFF
        24.12.2015 11:12

        К сожалению нет возможности писать чаще 1 раза в сутки — такова карма.

        Что это за плата на A20 — не знаю, не пробовал.
        На A10 это делается достаточно просто — https://github.com/cubieplayer/Cubian/wiki/VGA-output
        A20 по ногам совпадает с A10 — так что с большой степенью вероятности это сработает для A20

        <Реклама>
        На нашей плате уже разведен VGA и портов USB — 6 шт…
        https://opensourceclient.org/10-faq/16-specifications-ds-110
        Ещё и дешевле.
        Карма прощай.
        </Реклама>


        1. nitro80
          24.12.2015 11:43

          Про стоимость самый платы непонятно… Комплект вижу, плату — нет


          1. ErshoFF
            25.12.2015 11:19

            «Комплект для замены» — это плата и 1 пластмассовая деталь для корпуса(без неё корпус старых UTC не закроется).
            Лимит ответа на сегодня исчерпан.


    1. icCE
      23.12.2015 09:00

      archlinux вполне себе работает на 1 кубики.
      Правда я не использую X, использую как некое устройство для сбора данных.


  1. BubaVV
    22.12.2015 18:23

    Вот бы еще был способ подключить (почти) любую ноутбучную клавиатуру, и получится универсальный способ реанимации сколь угодно старого ноута