Адаптация на linux за arm устройства
TRANSCRIPT
OpenFest 2014@leonanavi
2
Съдържание
● ARM eкосистемата● Linux и ARM● Свободни устройства с отворен хардуер и софтуер
ARM eкосистемата
OpenFest 2014@leonanavi
4
Защо Linux и ARM?
● Смартфони и таблети● In-Vehicle Infotainment (IVI)● Internet of Things (IoT)
OpenFest 2014@leonanavi
5
CISC срещу RISC
OpenFest 2014@leonanavi
6
ARM Holdings
● Компанията е основана през 1990г.● Бизнес моделът им е базиран на интелектуалната собственост● ARM чипове се ползват от 95% от смартфоните, 80% от цифровите фотоапарати и 35% от всички други електронни устройства
OpenFest 2014@leonanavi
7
Single Board Computers
№ SBC CPU
1 Raspberry Pi Model B ARM1176JZF-S @ 700MHz
2 BeagleBone Black AM335x 1GHz ARM® Cortex-A8
3 Odroid-U3 1.7GHz Exynos4412 Prime Cortex-A9 Quad-core
4 CubieTruck Allwinner A20 ARM Cortex-A7 @ 1GHz dual-core
5 Banana Pi Allwinner A20 ARM Cortex-A7 @ 1GHz dual-core
6 Parallella Zynq Z7010 / Zynq Z7020 Dual ARM Cortex
7 Cubieboard2 Allwinner A20 ARM Cortex-A7 @ 1GHz dual-core
8 A10-OLinuXino-Lime Allwinner A10 Cortex-A8 @ 1GHz
9 Galileo Intel Quark X1000 @ 400MHz
10 Udoo Quad Freescale i.MX 6 ARM Cortex-A9 Quad core @ 1GHz
OpenFest 2014@leonanavi
8
Производители на ARM SoC
● Allwinner Tech● Broadcom● Freescale● MediaTek● Samsung● Renesas● Rockchip● Texas Instruments● Qualcomm● други
OpenFest 2014@leonanavi
9
Open Source Hardware
● Натрупване и споделяне на опит● Eвтини и достъпни прототипи● Примери: OLinuXino, Arduino
OpenFest 2014@leonanavi
10
Linaro
Организация с нестопанска цел, предоставяща:● Инструменти за разработка за ARM● Linux ядра за ARM● Linux дистрибуции за ARM
Linux & ARM
OpenFest 2014@leonanavi
12
Как да подкараме Linux на ARM?● Bootloader (Das U-Boot, Barebox) ● Linux kernel● Файлова система на Linux дистрибуция
OpenFest 2014@leonanavi
13
Das U-Boot
● Универсална първоначална зареждаща програма● Лиценз GPLv2
http://git.denx.de/u-boot.git/
OpenFest 2014@leonanavi
14
Linux kernel
● Създаден: 1991г● Лиценз: GPLv2● Последна стабилна версия: 3.17● LTSI: 3.14 ● Топ разработчици: Intel, Red Hat, Linaro, Samsung , SUSE, IBM, Renesas Electronics, Google, други
OpenFest 2014@leonanavi
15
Linux-sunxi
● Sunxi – наименование на всички устройства с ARM SoC от китайската компания Allwinner Technology● Инструкции за създаване на linux-sunxi kernel 3.4 за A20
git clone -b sunxi-3.4 https://github.com/linux-sunxi/linux-sunxi.git
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- sun7i_defconfig
make -j4 ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- uImage modules
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- INSTALL_MOD_PATH=output modules_install
● Резултатarch/arm/boot/uImage
output/lib/modules/3.4.XXX/
OpenFest 2014@leonanavi
16
Device Tree
● DTS - дървовидна структура от данни, която описва физическите устройства в системата● DTB - бинарен файл, който съдържа описание на хардуера
OpenFest 2014@leonanavi
17
FEX
● Стандартен формат за описание на хардуера на устройства с Allwinner SoC● FEX файлът се компилира до двоичен файл script.bin● Инструменти
https://github.com/linux-sunxi/sunxi-tools
https://github.com/mripard/sunxi-babelfish
OpenFest 2014@leonanavi
18
uEnv.txt
● Текстов файл, съдържащ параметри към Linux ядрото
console=tty0
loglevel=5
extraargs=console=ttyS0,115200 disp.screen0_output_type=3 disp.screen0_output_mode=EDID:800x480p33 hdmi.audio=EDID:0
OpenFest 2014@leonanavi
19
Как да си изберем Linux дистрибуция за ARM?● Кои са най-популярните дистрибуции за ARM?
Arch Linux, Debian, Fedora, Ubuntu● Как лесно да си направим собствена дистрибуция за ARM?
Yocto● Има ли други Linux базирани ОС за ARM?
Android, Tizen, Firefox OS, SailfishOS● Кои са често срещаните проблеми?
По-стари версии на Linux кеrnel, затворени GPU драйвери, Wayland vs X11
OpenFest 2014@leonanavi
20
Пример: Tizen
● Дистрибуции, на които може да се крос-компилира Tizen за ARM: Ubuntu, Debian, Fedora, CentOS, OpenSUSE● Инструменти: Git, Gerrit, GBS, MIC● Алгоритъм: сваляне на кода, компилиране на пакети за ARM с GBS, създаване на Tizen образ от ks файл
OpenFest 2014@leonanavi
21
Подготовка на microSD карта
● FAT дял за Linux кеrnel и bootloader● Ext един или повече дялове за файловата система на Linux дистрибуцията● Инструмент за съставяне на дяловете: fdisk
OpenFest 2014@leonanavi
22
Отстраняване на грешки
● Наблюдение на работата чрез UART
sudo screen /dev/ttyUSB0 115200
Свободни устройства
OpenFest 2014@leonanavi
24
DIY лаптоп
● ARM платка● Motorola Lapdock● HDMI кабел● USB кабели● преходници
OpenFest 2014@leonanavi
25
DIY таблет
● ARM платка● Дисплей● Батерия или захранване● Малко кабели
Как да пуснем Linux на Android таблет?● Изберете таблет с ARM SoC, съвместим с
желаната Linux дистрибуция, например A20● Извлечете конфигурационни файлове от
Android, например за таблет с A20:$ adb shell
# mkdir /sdcard/nanda
# mount -t vfat /dev/block/nanda /sdcard/nanda
# exit
$ adb pull /sdcard/nanda/script.bin script.bin
OpenFest 2014@leonanavi
27
Полезни връзки
● https://www.olimex.com/● https://www.linaro.org/● http://linux-sunxi.org/● https://github.com/leon-anavi/tizen-sunxi● http://wiki.tizen.org/
OpenFest 2014@leonanavi
28
Въпроси?