Linux sunxi что это

Free/Open Source Software for Allwinner SoCs (A10/A13/A10s/A20/A31/. )

Linux source for Allwinner/Boxchip F20 (sun3i), A10 (sun4i), A12/A13/A10S (sun5i) and A20 (sun7i) SoCs

A collection of command line tools for ARM devices with Allwinner SoCs.

Allwinner A1x native u-boot support

Experimental VDPAU for Allwinner sunxi SoCs (obsolete, see https://linux-sunxi.org/Sunxi-Cedrus)

Repository of sys_config files for different sunxi (A10/A13/. ) boards

Official sunxi OpenEmbedded layer for Allwinner-based boards.

Official sunxi OpenEmbedded layer for Allwinner-based boards.

2 Updated Sep 20, 2021

Repository of sys_config files for different sunxi (A10/A13/. ) boards

2 Updated Sep 12, 2021

A collection of command line tools for ARM devices with Allwinner SoCs.

6 Updated Aug 29, 2021

Allwinners D1 SDK manifest relocated to linux-sunxi.

0 Updated Jul 19, 2021

Allwinners D1 SDK manifest relocated to linux-sunxi.

0 Updated Jul 18, 2021

Linux source for Allwinner/Boxchip F20 (sun3i), A10 (sun4i), A12/A13/A10S (sun5i) and A20 (sun7i) SoCs

16 Updated Mar 21, 2021

Allwinner A1x native u-boot support

4 Updated Jan 19, 2019

Experimental VDPAU for Allwinner sunxi SoCs (obsolete, see https://linux-sunxi.org/Sunxi-Cedrus)

4 Updated Sep 19, 2018

All in one repo for the LiveSuit tool, to take some of the pain outof using this.

3 Updated Sep 18, 2018

1 Updated Aug 16, 2018

People

Top languages

Most used topics

You can’t perform that action at this time.

You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.

Источник

Linux sunxi что это

Official sunxi OpenEmbedded layer for Allwinner-based boards.

This layer depends on the additional layers:

Tested with core-image-base.

Kernel / U-Boot Version

Most Allwinner devices and hardware are supported in mainline kernel and U-Boot, so this layer builds mainline by default.

Legacy sunxi Kernel / U-Boot

There is a custom U-Boot and Kernel version for sunxi devices which includes some special drivers not mainlined. These versions are rather old (3.4 for kernel and 2014.04 for U-Boot), but may support more functions and devices than current mainline.

If you want to switch back to sunxi versions for some reasons (no device tree available, unsupported hardware), either:

change the file conf/machine/include/sunxi.inc to include the following block

edit your conf/local.conf to add the following block

If you already have built the mainline versions it might be necessary to reset the build directories with:

Mainline Kernel / U-Boot

For mainline kernel we have now support for latest LTS and stable. By default we use latest LTS. If you would like to change version please update PREFERRED_VERSION_linux-mainline in:

When using mainline kernel ≥ 5.2 it is now possible to use the mainline graphics drivers lima and panfrost, instead of the mali driver provided by ARM. To enable open source mainline graphics support add the following line in your local.conf :

The default machine settings are meant to be the lowest common denominator, maximizing generality. Significantly better performance (2x-3x) can be achieved with the following settings:

Allwinner A20

For Allwinner A20 (Cubieboard2/CubieTruck), the following tuning options are recommended:

Enable hardfloat, thumb2 and neon capabilities

This tuning profile takes advantage of the Allwinner A20 hardfloat, neon and vfpv4 capabilities.

Change CPU governor to ondemand, and tune settings

This code changes the default CPU governor from fantasy to ondemand, and tunes its settings, as recommended at http://linux-sunxi.org/Cpufreq

About

Official sunxi OpenEmbedded layer for Allwinner-based boards.

Источник

Linux sunxi что это

Copyright (C) 2012 Alejandro Mery amery@geeks.cl
For a full list of contributors, see this link or use the command git shortlog -se —no-merges .

Command line utilities to work with devices based on Allwinner SoCs: sun4i, sun5i, . — that’s why the ‘x’ in the package name.

.fex file (de)compiler

compatibility shortcut to call sunxi-fexc to decompile a script.bin blob back into .fex format used by Allwinner’s SDK to configure the boards.

compatiblity shortcut to call sunxi-fexc to compile a .fex file into the binary form used by the legacy 3.4 kernel («linux-sunxi»).

script interface for USB communication with the FEL handler built in to the CPU. You usually activate FEL mode by pushing the uboot / recovery button at poweron, or by having your device «fail over» to FEL when no other boot option is available. See http://linux-sunxi.org/FEL/USBBoot for a detailed usage guide.

Читайте также:  Live usb windows с драйверами

When called with no arguments, sunxi-fel will display a short usage summary.

Note: Unless you select a specific device using the —dev or —sid options, the tool will access the first Allwinner device (in FEL mode) that it finds. You can print a list of all FEL devices currently connected/detected with ./sunxi-fel —list —verbose .

Simple wrapper (script) around sunxi-pio and sunxi-fel to allow GPIO manipulations via FEL

ARM native sdcard bootloader forcing the device into FEL mode

ARM native sdcard bootloader, which is only printing a short «hello» message to the UART0 serial console. Because it relies on runtime SoC type detection, this single image is bootable on a wide range of Allwinner devices and can be used for testing. Additionally, it may serve as a template/example for developing simple bare metal code (LED blinking and other similar GPIO related things).

Manipulate PIO registers/dumps

Tool for manipulating Allwinner NAND partition tables

Tool used to create raw NAND images (including boot0 images)

ARM native boot helper to force the SD port into JTAG and then stop, to ease debugging of bootloaders.

Dump information from Allwinner boot files (boot0 / boot1)

gives information about a phoenix image created by the phoenixcard utility and optionally extracts the embedded boot code & firmware file from their hidden partitions.

Tool for reading DRAM settings from registers. Compiled as a static binary for use on android and other OSes. To build this, get a toolchain and run:

A simple tool, which can be executed on a rooted Android device to dump the script.bin blob from RAM via reading /dev/mem. To build this, get a toolchain and run:

Compilation requires the development version of libusb-1.0 (include header and library) to be installed for sunxi-fel . Unless you explicitly pass LIBUSB_CFLAGS and LIBUSB_LIBS to the make utility, pkg-config is also needed. Development versions of zlib and libfdt are also required.

To install the dependencies on Ubuntu 20.04 using package manager:

Available build targets:

make tools builds tools that are useful on the host. This is what most people will want, and our default target (when simply using make ).

make target-tools builds tools that are intended for the target (Allwinner SoC), using a cross-compiler. The Makefile will try to auto-detect a suitable toolchain prefix, and falls back to arm-none-eabi- otherwise. If needed, you may override this by explicitly setting CROSS_COMPILE.
Hint: When compiling ‘natively’ on the target platform you may simply use an empty toolchain prefix here ( make target-tools CROSS_COMPILE= or make all CROSS_COMPILE= ).

make all builds both tools and target-tools.

make install-tools builds tools and then copies/installs them to a filesystem location. The destination is affected by settings for DESTDIR , PREFIX and possibly BINDIR . For details, please refer to the Makefile. You may use make install as a shortcut for this.

make install-target-tools builds target-tools and then copies/installs them to a filesystem location selected by DESTDIR , PREFIX and possibly BINDIR — see make install-tools above.

make install-all builds and installs both tools and target-tools.

make misc builds miscellaneous (host) utilities that are not part of our ‘standard’ suite. Currently this means phoenix_info and sunxi-nand-image-builder .

make install-misc builds misc and installs the resulting binaries.

This software is licensed under the terms of GPLv2+ as defined by the Free Software Foundation, details can be read in the LICENSE.md file.

About

A collection of command line tools for ARM devices with Allwinner SoCs.

Источник

Banana Pi: через U-Boot к Arch Linux

Уже четвёртый год подряд, с момента выпуска Raspberry Pi, на рынки всего мира поставляются различные микрокомпьютеры на отличных от x86 архитектурах, которые выполняют роль медиацентров, контроллеров умных домов, веб-серверов и чего только душа гика не пожелает!

К 2014-2015 году не все были довольны вычислительными возможностями «малинки» и начался выпуск десятков его клонов с более мощным железом. У большинства из них есть недостатки: фиксированная устаревшая версия ядра и загрузчика, небольшой выбор дистрибутивов. Под катом расскажу о том, как сбросить оковы вендора на примере Banana Pi.

Предыстория

Во второй половине 2014 года захотелось иметь домашний сервер, выбор встал между классическим на архитектуре x86 с процессором серии Intel Atom и чем-то новым для меня — микрокомпьютером на базе ARM.

Читайте также:  Локальный кэш dns windows

После оценки соотношений цены/производительности/возможностей выбор пал на Banana Pi — кроху с двухъядерным Allwinner A20, 1 гигабайтом DDR3, гигабитным LAN’ом, SATA разъёмом и прочими прелестями подобных устройств. Наигравшись пару дней, я смастерил из пластмассовых деталей корпус, в который Banana и была заточена и долго служила для всяких мелких задач.

Дистрибутив стоял Bananian — это Debian 7 Wheezy урезанный во многом для экономии ресурсов. Более нового Debian 8.x нет и по сей день, можете сами представить насколько там старый софт, который получает лишь заплатки безопасности. Всё это безобразие продолжалось до середины лета…

Наконец в июле возникла необходимость поднять веб-сервер и сопутствующие ему сервисы для своего pet project. Пора было сменить старый Debian на что-то менее консервативное и более удобное для меня.

Постановка задачи

К дистрибутиву было поставлено несколько требований: должен «из коробки» иметь репозитории покрывающие все нужды, программы в них должны быть наиболее приближённые к последним доступным версиям. Я слежу за развитием дистрибутивов и входящих в них программ, но при этом ленюсь компилировать всё из сорцов, поэтому очевидным выбором стал Arch Linux.

На сайте производителя в разделе загрузок меня ждал просроченный на год образ с зашитым необновляемым ядром (3.4.100), загрузчиком такой же давности причём от другого устройства (Cubieboard 2). На сайте Arch Linux’а поддержки Banana Pi не было заявлено. Исходя из всего этого оставалось только одно: скомпоновать и запустить дистрибутив самому.

Матчасть

Das U-Boot (происхождение названия как-то связано с субмаринами и игрой слов на немецком и английском языках, см. U-boat)
Это загрузчик операционной системы, ориентированный на устройства c архитектурами MIPS, PowerPC, ARM и другими. Умеет он многое: загружает систему с NAND, NOR, SPI, MMC, SATA, USB, TFTP, NFS, может сам храниться в ПЗУ устройства или внешней памяти, имеет встроенный dhcp клиент и shell, принимает сигналы с клавиатуры, выводит на UART, HDMI, VGA, аналоговое видео. Естественно для поддержки всего этого нужно иметь драйверы.

Тут и начинается отличие от x86 платформ — ARM не имеет ACPI (усовершенствованного интерфейса управления конфигурацией и питанием) и UEFI (интерфейса взаимодействия между операционной системой и «прошивкой» устройства) и именно поэтому не существует как таковых унифицированных дистрибутивов для ARM компьютеров, но движение в сторону UEFI и ACPI идёт уже несколько лет. А пока это движение идёт мы находимся в реальном суровом мире и загрузчик нужно компилировать самостоятельно для разного железа. Железо это описывается в структуре данных под названием Device Tree (dt). Подробнее о DT можно узнать на посвящённом ему сайте: devicetree.org.

В комплекте с исходными кодами загрузчика поставляется набор конфигурационных файлов для компиляции, а также Device Tree для 1089 устройств. Гугл, к сожалению, не находит этот список, поэтому он доступен по ссылке: U-boot supported devices.

О нём много писано, много сказано, а сейчас пригодится лишь несколько фактов:

  1. Встреченные мною дистрибутивы хранят ядро в нескольких формах:
    • Image — не сжатый образ.
    • zImage — сжатый самораспаковываяющийся образ.
    • uImage — образ, который имеет обёртку, включающую некоторую информацию для U-Boot’а.

    Ранее uImage использовались обширно для устройств с U-Boot, но за последние года разработчики научили загрузчик работать с zImage, который стал общепринятой практикой хранения образа ядра в дистрибутиве Arch Linux ARM.

  2. Радостная новость! Ядро в пределах одной архитектуры(ARMv5, ARMv6, ARMv7, ARMv8) с большой вероятностью не придётся компилировать для каждого устройства. Оно использует свою версию Device Tree, называемую Device Tree Binary (dtb). Это небольшие по объёму файлы, указывающие ядру какие модули нужно подгружать. Больше информации о dtb можно узнать тут.

От теории к практике

Наиболее простым способом я считаю следующий:

  1. Скачать готовый тулчейн для своей платформы с сайта Linaro.
    Для Banana Pi нужен linaro-toolchain-binaries (little-endian).
  2. Добавить папку bin тулчейна в PATH:
  • Утилиты bc и dtc нужные для компиляции загрузчика, пакеты dosfstools и uboot-tools для создания файловой системы и компиляции скриптов загрузчика, соответственно
  • Скачаем и распакуем исходные коды последней версии U-Boot:

    Находим в появившемся каталоге u-boot-2015.07/configs свою «железку» и запоминаем название файла. Для Banana Pi конфигурационный файл называется Bananapi_defconfig.

    Ещё помните, что ядро Arch Linux ARM дистрибутиве хранится в zImage? Об этом нужно позаботиться заранее и перед компиляцией добавить возможность загружать самораспаковывающиеся ядра. Точной информации о том уже включено ли это по умолчанию у меня нет, поэтому в каталоге u-boot-2015.07/include/configs/ нужно найти заголовочный файл для платформы Вашего микрокомпьютера (для Banana Pi это sun7i.h) и написать внутри:

    Это добавит возможность использовать в загрузчике команду bootz для запуска самораспаковывающихся сжатых программ. Источник

    Теперь этап компиляции. Все операции происходят в каталоге u-boot-2015.07.

    Непосредственно компиляция загрузчика:

    В итоге в нашей рабочей папке должно появиться много файлов с префиксом u-boot. u-boot.bin содержит исполняемый файл загрузчика, но нужен нам файл с постфиксом «with-spl». SPL — небольшая программа, которая располагается непосредственно перед загрузчиком и загружает сам U-Boot в оперативную память. Для Banana Pi это файл u-boot-sunxi-with-spl.bin. Сохраним его, он пригодится чуть позже.

    Следующий шаг — подготовка флеш-карты с которой будет загружаться система. Как должна выглядеть её разметка:

    Подключим флеш-карту через кард-ридер и запустим утилиту fdisk:

    Добавим MBR разметку:

    И обязательно как минимум два раздела:

      50-100 Мб

    После всего этого ввести «w», тем самым записать изменения на диск.

    Почему именно такие разделы? U-Boot’ом можно управлять с помощью скриптов, он читает их только из первого раздела накопителя, причём раздел этот должен быть с файловой системой FAT. В этот же раздел будет смонтирован каталог /boot будущего Arch Linux’а для удобного доступа к ядрам как из U-Boot скриптов, так и для быстрой подмены ядер с любого попавшегося компьютера. Второй раздел предназначен для корня системы. Остальные по желанию.

    После разметки нужно очистить место для загрузчика. Крайне важно не затереть первые 512 байт(MBR) и не затронуть 1024 секторы и далее (исходя из таблицы выше):

    Теперь уже можно вставить флешку в устройство назначения, включить его и посмотреть как оно весело мигает LED’ами, подхватывает ip-адрес через dhcp, пытается достучаться до tftp сервера чтобы загрузиться и дружелюбно приглашает Вас в свой Shell показывая его через выдеовыход или UART.

    Но одного загрузчика мало, остаётся ещё несколько компонентов: скрипт для управления U-Boot’ом и сам дистрибутив Arch Linux.
    Отправляемся на os.archlinuxarm.org и скачиваем архив с подходящим нашей архитектуре дистрибутивом. Для Banana это ArchLinuxARM-armv7-latest.tar.gz. Распаковываем в отдельную директорию и продолжаем манипуляции с флеш-картой.

    Создадим файловые системы и примонтируем их в заданном порядке:

    Скопируем всё содержимое распакованного архива в /mnt:

    Заглянем в первый раздел флешки (/mnt/boot). Внутри нас ждёт папка dtbs и сжатый образ ядра — zImage. dtbs — это именно те Device Tree Binary, о которых шла речь выше.
    Для ARMv7 есть целых 301 dtb. Список можно увидеть здесь или непосредственно открыв директорию boot/dtbs дистрибутива на своём компьютере. Если dtb есть, то ядро заведётся с почти 100% вероятностью. Для Banana Pi нужный файл — sun7i-a20-bananapi.dtb. Он нужен нам для последнего и завершающего этапа — написания скрипта для U-Boot’а и, естественно, запуска всей полученной системы.

    Приступим. Создадим прямо на месте (в /mnt/boot) файл boot.cmd и начнём писать.

    Первым делом прикажем U-Boot’у загружать в RAM образ ядра:

    Затем dtb для нужного девайса:

    Установим параметры для запуска ядра:

    И скажем ему загружаться из этой области памяти, тем самым передавая управление уже ядру Linux.

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

    Написанный нами скрипт остаётся только скомпилировать. Для этого в пакете uboot-tools есть утилита mkimage, воспользуемся ей:

    boot.cmd при желании можно удалить, загрузчику нужен лишь boot.scr.

    И последний штрих — добавляем в etc/fstab новой системы разделы, которые будут подключаться при запуске:

    Флешку можно вставлять в девайс и радоваться свежей системе. Демон dhcpd сам подхватит адрес если в Вашей сети есть DHCP сервер. SSH сервер по умолчанию добавлен в автозагрузку. Аккаунт на дефолтных образах Arch Linux ARM изначально всегда один: root/root. Обязательно смените пароль и добавьте юзера с ограниченными полномочиями.

    Что получили? Звёзды так сошлись, что поддержка моего микрокомпьютера есть в списке из 1089 устройств поддерживаемых U-Boot и среди 301-го среди поддерживаемых mainline ядром для ARMv7. Поэтому получили именно то, что и хотели: систему с самым свежим программым обеспечением, которое стабильно обновляется из репозиториев, включая ядро системы (на данный момент уже 4.1.4). Стабильная ветка загрузчика обновляется раз в 3 месяца и требуется лишь скомпилировать его и повторить процедуру установки, как сделано выше.

    Для ленивых

    Подготовил образ для Banana Pi:
    Ссылка, Зеркало #1, Зеркало #2.
    md5 образа в архиве: f36d707c4c1fd857b50d37501b4a3d7a
    Записать образ на флеш-карту можно с помощью утилиты dd, либо win32diskimager (для Windows пользователей).

    Источники

    Желаю удачи тем, кто захочет повторить это у себя дома и буду рад справедливой критике.

    Источник

    Читайте также:  Изменитель голоса для windows
    Оцените статью