Меню Рубрики

Linux для allwinner a23

Overview

The A23 is not supported in the linux-sunxi 3.4 kernel and in u-boot-sunxi, but there is basic support in the mainline Linux kernel (since kernel 3.17/3.18) and in mainline u-boot (since v2015.04).

A23 SoC Features

  • CPU
    • ARM Cortex-A7 Dual-Core
    • 256KiB L2-Cache (shared between two cores)
    • 32KiB (Instruction) / 32KiB (Data) L1-Cache per core
    • SIMD NEON, VFP4
    • Virtualization
    • Large Physical Address Extensions (LPAE) 1TB
  • GPU
    • ARM Mali400 MP2
    • Featuring 1 vertex shader (GP) and 2 fragment shaders (PP).
    • Complies with OpenGL ES 2.0
  • Memory
    • DDR3/DDR3L controller
    • NAND Flash controller and 64-bit ECC
  • Video
    • HD H.264 2160P video decoding
    • Full HD video decoding
    • BD Directory, BD ISO and BD m2ts video decoding
    • H.264 High Profile [email protected] encoding
    • 3840×[email protected] 3D decoding
    • Complies with RTSP, HTTP,HLS,RTMP,MMS streaming media protocol
  • Display
    • CPU/RGB/LVDS LCD interface 1920×1080 resolution
    • MIPI DSI interface up to 1280×800 resolution
  • Camera
    • Integrated parallel 8-bit I/F YUV sensor
    • Integrated 24-bit parallel YUV 444 I/F
    • 5M/8M CMOS sensor support
    • Dual-sensor support
  • Audio
    • Integrated HI-FI 100dB Audio Codec
    • Dual MIC noise cancellation
  • PMIC
    • X-Powers AXP223, designed for the A23, connected via Allwinner’s Reduced Serial Bus (RSB)

Documentation

Some other documents were found online:

Software

Original SDK

The SDK contains customized sources for U-boot, Linux, Android and buildroot. It also has a gnueabi cross compile toolchain.

SDK Content

  • Linux Kernel: A23/lichee/linux-3.4
  • Buildroot: A23/lichee/buildroot
  • U-boot: A23/lichee/brandy/u-boot-2011.09
  • ARM gnueabi cross compile toolchain: A23/lichee/brandy/gcc-linaro/
  • Android: A23/android
  • Various Allwinner tools: A23/lichee/tools

Use the «pack» script under «A23/lichee/tools/pack» to build an image. (not tested)

Boot0

Boot0 initializes the DRAM, basic clocks and loads U-boot from NAND or MMC. There is no boot1 on A23. Boot0 directly loads U-boot.

Allwinner has in the meantime published the source code for boot0 in their github repository.

Binaries of boot0 can be found in the SDK: A23/lichee/tools/pack/chips/sun8iw3p1/bin

fes1_sun8iw3p1.bin is for FEL mode.

U-boot

There are 3 U-boot sources available.

Allwinner

Allwinner’s SDK contains a customized U-boot, based on v2011.09. This works with either NAND or MMC. It contains drivers for LCD display, MMC, NAND, normal UARTs, USB OTG, RSB, PMIC, and the ability to update various images.

Sunxi Community

u-boot-sunxi has basic support for A23, which includes UART console (including R_UART) and MMC. Disclaimer: no one has actually booted a kernel with this yet.

  • SPL (DRAM initialization code)
  • Reduced_Serial_Bus driver (to talk to AXP PMIC).

Mainline U-Boot

mainline u-boot has support for the A23 (incl. SPL and AXP223 PMIC support) since v2015.04.

Kernel code

Allwinner

There is a kernel tree currently available which contains a quick backport of the A23-v1.0 SDK, it is called «a23sdk_frankenkernel».

This tree contains:

  • The Android 3.4.39 kernel
  • loads of nasty backports on top:
    • direct commits from upstream or android trees
    • commits from upstream or android trees with changes to certain files removed
  • the remaining diff to the A23-v1.0 SDK packed on top:
    • with fixed encodings (to UTF-8), where possible, as some allwinner side encoding mess-up has destroyed data
    • fixed file permissions
    • remaining changes which could not easily be tracked back to upstream or android tree commits
  • remove useless/dead files:
    • vexpress and realview ael.
    • changes to other architectures.
    • pointless scripts
    • other obviously useless files.
  • Separate out some drivers to their original versions so allwinner specific changes become visible:
    • the 3 mali kernel driver versions
    • the many added wireless drivers
  • build and run testing.

Sunxi Community

Patches for basic A23 support on mainline have been posted on the mailing list. You can also find them here.

GPL violations

The v1.0 SDK contains many binaries and is therefor violating the GPLv2 quite directly:

We are still waiting on action from Allwinner to resolve this.

Источник

Запуск Linux на планшете с SoC Allwinner A10 на борту

Предыстория

Приобрел я себе планшет на SoC Allwinner A10 (sun4i — кодовое название процессора AllWinner A10 ARMv7-A архитектуры семейства Cortex ядро A8). Сначала игрался с ним на Android 2.x потом на 4.x, но со временем мне стало этого мало. Да еще начали выпускать миникомпьютеры на основе этой SoC с Linux на борту. Я подумал: «Хм, а чем мой планшет хуже?» и занялся делом. Как оказалось, за меня уже все сделали, и дела делать не пришлось:

  1. Ядро оптимизировали для данной платформы
  2. Загрузчик оптимизировали к этой платформе
  3. Вышел новый порт debian armhf.

Осталось только все это дело сконфигурирован и собрать.

Среда

Система — ArchLinux x86-64. Где найти и как устанавливать окружение для сборки описывать не буду, в интернете и так достаточно этой информации. Да и большинству это не зачем, я приложу все необходимое собранным.
«Кухня» у меня такая:

  • qemu-user-static — чтобы можно было chroot’иться в rootfs, в репах не было, пришлось из репозитория debian доставать и собирать свой пакет. Все это дело необходимо для запуска arm elf исполняемых файлов на машине с другой архитектурой, в данном случае — на моей.
  • gcc version 4.6.1 (Sourcery CodeBench Lite 2011.09-70) — Кросскомпилятор GCC ARM. Может и старый, но не подводит пока меня. Вам же советую поставить свеженький кросскомпилятор от linaro.

Процесс загрузки SoC

Т.е. Загрузка начинается с SD карты, если там нету загрузчика, продолжается с NAND Flash.
Согласно документации к загрузчику allwinner-uboot структура SD карты должна выглядеть таким образом:

начало размер описание
0 8KB Unused, available for partition table etc.
8 24KB Initial SPL loader
32 512KB u-boot
544 128KB environment
672 352KB reserved
1024 Free for partitions
Сборка u-boot

Собирать не обязательно, sun4i-spl.bin u-boot.bin можно скачать здесь.

Собираем uboot-allwinner:

Запись загрузчика

Внимание, будьте осторожны, не перепутайте устройство SD карты с другими носителями. Если вы не понимаете того, что делаете, то лучше не делайте.
$ — переменная устройства, можно заменять вручную, можно перед выполнением прописать:

Разбиваем MicroSD накопитель

Внимание, в результате операции данные на MicroSD накопители будут утеряны, сохраните все необходимое в надежное место.

  • Нам нужно создать два раздела обязательно.
  • Первый раздел — раздел с файлом конфигурации железа (evb.bin) и ядром (uImage). Должен начинаться с 2048 сектора, быть размером 32MB-100MB и иметь файловую система FAT ( тип раздела FAT) либо ext2/3 ( тип раздела 83 ).
  • Второй раздел — раздел rootfs, собственно вся система, размер раздела желательно сделать в пределах 1GB-4GB, файловая система строго ext4, тип раздела — 83.
  • Можно сделать еще swap раздел, по желанию.
  • Оставшееся место используете для себя. Я создал раздел для своих данных, можно примонтировать в /home/

Вот, как я разбил свою 16GB карточку:

Согласно пунктам, описанным выше, разбиваем MicroSD накопитель.
Я, надеюсь, те, кто пользуется linux, умеет использовать fdisk.

Форматируем:

Монтируем в нужное место:

Сборка ядра

Ядро можно не компилировать, я приложил снизу готовое ядро с модулями.

Вместо gconfig можно использовать на вкус xconfig(qt интерфейс) или menuconfig (консольный интерфейс). Не забываем включить необходимые драйвера в ядро а также необходимые вам фичи. Читайте подсказки к параметрам.
Советую не забыть про модули тачскрина и фс(fat, ntfs).

Аргумент -j задает количество одновременных потоков компиляции. Опытным путем установлено, что потоков должно быть на единицу больше, чем ядер в процессоре.
Флаги оптимизации взяты из cтатьи ValdikSS. Честно говоря, ядро с ними скомпилировалось. Но я пока не устанавливал его на SD флеш карту.

Установка rootfs

Как загружать с помощью debootstrap начальную rootfs описывать не буду, так как это достойно еще одной статьи. Я лучше прикладу готовую rootfs Debian Wheezy ARMHF, а вы пользуйтесь.
Rootfs необходимо распаковать с сохранением атрибутов на второй раздел SD, так как таким образом сконфигурирован по умолчанию u-boot (про конфигурациию можно почитать здесь.
Качаем Debian Wheezy Rootfs и распаковываем:

Кстати, здесь есть и модули к ядру 3.0.36+. Также имеется lxde, slim с автозагрузкой пользователя user, network-manager, nm-applet стартует при старте сессии. Тачскрин работает в режиме тачпэда.
Есть вероятность, что все необходимые модули подгрузит udev, но для уверенности их можно прописать в /mnt/sun4i-rootfs/etc/modules. Список необходимых модулей можно получить в AndroidOS через TerminalEmulator :

Настройка загрузки linux

Качаем архив с содержимым первого boot раздела.
И извлекаем файл конфигурации evb.bin в /mnt/sun4i-boot из архива.

Если вы не собирали ядро, то собранное ядро 3.0.36+ можно тоже извлечь:

Запуск

Все, пожалуй, готово. Мы установили систему на SD накопитель. Вставляем MicroSD карточку в картоприемник планшета и включаем его. Через 5 сек после включения должна засветиться подсветка, экран останется черным. Через несколько миинут должна загрузиться вся система.
Помните, пароль по умолчанию для root — root, для user — user. Советую изменить их.
Если у вас нет usb клавиатуры, то в rootfs предустановлена виртуальная клавиатура.
Подключаемся к wifi сети, или используем USB Ethernet адаптер и с помощью nm-applet подключаемся к сети. Сразу же можно подключиться через ssh.
Запускаем lxterminal и доставляем необходимый софт.

Возможные проблемы

и прописать его /mnt/sun4i-rootfs/etc/modules.

Заключение

Таким образом я запустил linux на своем планшете MOMO9. Система пока не настроена до конца, не мешало бы настроить тот-же laptop-mode и доставить необходимые пакеты. Времени было потрачены не мало. Но зато, собрав так систему «почти» с нуля, сразу начинаешь понимать, как работает данная ОС. Еще пополняется словарный запас специальной английской лексики, что тоже не плохо.

Вот скриншот снятый на самом устройстве с помощью утилиты import из пакета MagickImage.


Снимал на камеру телефона, другого под рукой не оказалось, так что извините.

И конечно же, я не несу никакой ответственности за то, что вы натворите у себя на ПК, за порчу оборудования. Делайте все с пониманием дела. Не перепутайте устройство SD ридера с винчестером либо другим устройством.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

  • Wireshark for mac os
  • Wireless network watcher mac os
  • Wireless network utility mac os sierra
  • Winzip mac os sierra
  • Winsetupfromusb для mac os