SlideShare a Scribd company logo
Павел Курочкин General R&D, 2017
Запускаем Linux на
sama5d3
“Оживляем” ARM SoC + NAND
Павел Курочкин General R&D, 2017
О чём пойдёт речь?
● Минимальная схема
● Компоненты загрузки ARM-а
● Про NAND и PMECC
● Тулчейн, сборка rootfs
● Прошивка NAND через USB
● Адаптация под плату
2
Павел Курочкин General R&D, 2017
Минимальная схема
3
SAM a5d3NAND SDRAM
UART/
DBGU
USB
Павел Курочкин General R&D, 2017
SAM a5d3
● Atmel, теперь Microchip
● Up to 536 MHz
● Cortex-A5, ARMv7 hard float
● Gigabit Ethernet, USB, UARTs, I2C, etc…
● NAND, SD, etc..
● TRNG, Encryption Engine
4
Павел Курочкин General R&D, 2017
Процесс загрузки
1. Boot rom
2. bootstrap/preloader -- up to 128K
3. u-boot
4. Linux kernel + rootfs
Храним на NAND’е
5
Павел Курочкин General R&D, 2017
NAND + PMECC
● 4016 из 4096 без ошибок
● 2048B + 64B OOB для ECC
● Корр. 4 байта из 2048
● Конфигурируется при
прошивке NAND
6
Корр. биты ECC байты для
блока 512 байт
2 4
4 7
8 13
12 20
24 39
Павел Курочкин General R&D, 2017
Тулчейн
● Debian 8
● gcc-gnueabi-armhf-gcc тулчейн из репозитория
EmDebian
● Make
● Linaro toolchain тоже подходит
7
Павел Курочкин General R&D, 2017
rootfs
● Debian 8
● qemu-debootstrap для сборки rootfs
● mkfs.ubifs + ubinize для сборки ubi-образа
8
Павел Курочкин General R&D, 2017
sam-ba: прошивка NAND (GUI)
● USB
● Sam-ba 2.13
● Помним про PMECC
● at91bootstrap.bin
● at91-sama5d3.dtb
● u-boot.bin
● zImage
● rootfs
9
Павел Курочкин General R&D, 2017
sam-ba: прошивка NAND (CLI)
● https://github.com/linux4sam/meta-atmel
● Shell + tcl
● ~ 1 MB/s
10
Павел Курочкин General R&D, 2017
Адаптируем под плату: bootstrap
● Настройка памяти
● Внутренний/внешний RC-осциллятор
● PMECC
● Тип загрузки: сразу ядро или u-boot
● C
● https://github.com/linux4sam/at91bootstrap
11
Павел Курочкин General R&D, 2017
Адаптируем под плату: u-boot
● Выбираем нужную периферию
● PMECC
● Адреса dtb, zImage
● Адрес u-boot environment’а
● Параметры загрузки ядра
● C
● https://github.com/linux4sam/u-boot-at91
12
Павел Курочкин General R&D, 2017
Адаптируем под плату: kernel
● PMECC
● dts/dtb: за основу берём sama5d3-xplained
● Включаем поддержку UBI
● Стартовый config: sama5-defconfig
● https://github.com/linux4sam/linux-at91
13
Павел Курочкин General R&D, 2017
U-boot enviroment
...
bootargs=console=ttyS0,115200n8 earlyprintk
mtdparts=atmel_nand:256k(bs)ro,512k(uboot)ro,256k(env),256k(env1),
256k(spare),512k(dtb),6M(kernel)ro,-(rootfs) rootfstype=ubifs
ubi.mtd=7 root=ubi0:rootfs rw
bootcmd=nand read 0x21000000 0x180000 0x80000;nand read 0x22000000
0x200000 0x600000;bootz 0x22000000 - 0x21000000
...
14
Павел Курочкин General R&D, 2017
Грабли
● Trimffs при прошивке ubi rootfs
● Внутренний/внешний осциллятор
● systemd
15
Павел Курочкин General R&D, 2017
Итого
● Минималистичное окружение (debian forever)
○ apt-get install binfmt-support qemu qemu-user-static mtd-utils
debootstrap
○ apt-get install crossbuild-essential-armhf
○ apt-get install mtd-tools
● sam-ba для прошивки
● PMECC для NAND
16
Павел Курочкин General R&D, 2017
Ссылки
● https://github.com/linux4sam/at91bootstrap
● https://github.com/linux4sam/u-boot-at91
● https://github.com/linux4sam/linux-at91
● http://www.at91.com/linux4sam/bin/view/Linux4SAM/
17

More Related Content

What's hot (20)

PDF
Alex Shavtsov - Arch linux installing on Macbook Air.
Minsk Linux User Group
 
PDF
Docker integration into Badoo
Anton Turetsky
 
PPTX
ToroDB (highload++2015)
Pavel Alexeev
 
PDF
Проникновение в Docker с примерами
Дмитрий Столяров
 
PDF
Docker networking
Badoo Development
 
PDF
Плюсы и минусы Go для разработчиков на C++, Вячеслав Бахмутов
Yandex
 
PDF
BeeGo для веб приложений, API и демонов
Anton Piskunov
 
PDF
Kirill A Korinskiy Rit2010 No Sql Storage
rit2010
 
PDF
Илья Биин: Организация совместной работы Go и Python-based сервисов в Ostrovo...
Yandex
 
PDF
Разработка API для большого, нагруженного сервиса
endeveit
 
PDF
Rozum robotics release cycle
Nikolay Lagutko
 
PDF
Павел Пушкарев — «Развертывание верстки»
Yandex
 
PDF
Hl09 Free Bsd2009 Pantyukhin
HighLoad2009
 
PDF
linux and freebsd monitoring
Транслируем.бел
 
PDF
Внедрение Docker в процесс разработки демонов. Доклад Константина Карпова на ...
Badoo Development
 
PPTX
С чем едят JS-дебаггур?!
volegg
 
PPT
Node.js (RichClient)
Serge Shirokov
 
PDF
poudriere или как я перестал волноваться и полюбил pkg
Andrey Fesenko
 
PDF
Архитектура растущего проекта на примере ВКонтакте / Алексей Акулович (ВКонт...
Ontico
 
PPTX
"Великолепный API без Rest", Констатин Якушев (Badoo)
Badoo Development
 
Alex Shavtsov - Arch linux installing on Macbook Air.
Minsk Linux User Group
 
Docker integration into Badoo
Anton Turetsky
 
ToroDB (highload++2015)
Pavel Alexeev
 
Проникновение в Docker с примерами
Дмитрий Столяров
 
Docker networking
Badoo Development
 
Плюсы и минусы Go для разработчиков на C++, Вячеслав Бахмутов
Yandex
 
BeeGo для веб приложений, API и демонов
Anton Piskunov
 
Kirill A Korinskiy Rit2010 No Sql Storage
rit2010
 
Илья Биин: Организация совместной работы Go и Python-based сервисов в Ostrovo...
Yandex
 
Разработка API для большого, нагруженного сервиса
endeveit
 
Rozum robotics release cycle
Nikolay Lagutko
 
Павел Пушкарев — «Развертывание верстки»
Yandex
 
Hl09 Free Bsd2009 Pantyukhin
HighLoad2009
 
linux and freebsd monitoring
Транслируем.бел
 
Внедрение Docker в процесс разработки демонов. Доклад Константина Карпова на ...
Badoo Development
 
С чем едят JS-дебаггур?!
volegg
 
Node.js (RichClient)
Serge Shirokov
 
poudriere или как я перестал волноваться и полюбил pkg
Andrey Fesenko
 
Архитектура растущего проекта на примере ВКонтакте / Алексей Акулович (ВКонт...
Ontico
 
"Великолепный API без Rest", Констатин Якушев (Badoo)
Badoo Development
 

More from Pavel Kurochkin (8)

PDF
lm-sensors in embedded systems: from schematics to management from linux
Pavel Kurochkin
 
PDF
Measuring ethernet traffic parameters
Pavel Kurochkin
 
PDF
SoC-powered Linux / Linux-powered SoC
Pavel Kurochkin
 
PDF
Лекция 4: измерения в Е1
Pavel Kurochkin
 
PDF
Лекция 3: оптические сети. Обзор
Pavel Kurochkin
 
PDF
Лекция 2: Ethernet L1, L2. Обзор
Pavel Kurochkin
 
PDF
Лекция 1: обзор канала E1
Pavel Kurochkin
 
PDF
Вводная лекция
Pavel Kurochkin
 
lm-sensors in embedded systems: from schematics to management from linux
Pavel Kurochkin
 
Measuring ethernet traffic parameters
Pavel Kurochkin
 
SoC-powered Linux / Linux-powered SoC
Pavel Kurochkin
 
Лекция 4: измерения в Е1
Pavel Kurochkin
 
Лекция 3: оптические сети. Обзор
Pavel Kurochkin
 
Лекция 2: Ethernet L1, L2. Обзор
Pavel Kurochkin
 
Лекция 1: обзор канала E1
Pavel Kurochkin
 
Вводная лекция
Pavel Kurochkin
 
Ad

Sama5d3: how to run linux on it

  • 1. Павел Курочкин General R&D, 2017 Запускаем Linux на sama5d3 “Оживляем” ARM SoC + NAND
  • 2. Павел Курочкин General R&D, 2017 О чём пойдёт речь? ● Минимальная схема ● Компоненты загрузки ARM-а ● Про NAND и PMECC ● Тулчейн, сборка rootfs ● Прошивка NAND через USB ● Адаптация под плату 2
  • 3. Павел Курочкин General R&D, 2017 Минимальная схема 3 SAM a5d3NAND SDRAM UART/ DBGU USB
  • 4. Павел Курочкин General R&D, 2017 SAM a5d3 ● Atmel, теперь Microchip ● Up to 536 MHz ● Cortex-A5, ARMv7 hard float ● Gigabit Ethernet, USB, UARTs, I2C, etc… ● NAND, SD, etc.. ● TRNG, Encryption Engine 4
  • 5. Павел Курочкин General R&D, 2017 Процесс загрузки 1. Boot rom 2. bootstrap/preloader -- up to 128K 3. u-boot 4. Linux kernel + rootfs Храним на NAND’е 5
  • 6. Павел Курочкин General R&D, 2017 NAND + PMECC ● 4016 из 4096 без ошибок ● 2048B + 64B OOB для ECC ● Корр. 4 байта из 2048 ● Конфигурируется при прошивке NAND 6 Корр. биты ECC байты для блока 512 байт 2 4 4 7 8 13 12 20 24 39
  • 7. Павел Курочкин General R&D, 2017 Тулчейн ● Debian 8 ● gcc-gnueabi-armhf-gcc тулчейн из репозитория EmDebian ● Make ● Linaro toolchain тоже подходит 7
  • 8. Павел Курочкин General R&D, 2017 rootfs ● Debian 8 ● qemu-debootstrap для сборки rootfs ● mkfs.ubifs + ubinize для сборки ubi-образа 8
  • 9. Павел Курочкин General R&D, 2017 sam-ba: прошивка NAND (GUI) ● USB ● Sam-ba 2.13 ● Помним про PMECC ● at91bootstrap.bin ● at91-sama5d3.dtb ● u-boot.bin ● zImage ● rootfs 9
  • 10. Павел Курочкин General R&D, 2017 sam-ba: прошивка NAND (CLI) ● https://github.com/linux4sam/meta-atmel ● Shell + tcl ● ~ 1 MB/s 10
  • 11. Павел Курочкин General R&D, 2017 Адаптируем под плату: bootstrap ● Настройка памяти ● Внутренний/внешний RC-осциллятор ● PMECC ● Тип загрузки: сразу ядро или u-boot ● C ● https://github.com/linux4sam/at91bootstrap 11
  • 12. Павел Курочкин General R&D, 2017 Адаптируем под плату: u-boot ● Выбираем нужную периферию ● PMECC ● Адреса dtb, zImage ● Адрес u-boot environment’а ● Параметры загрузки ядра ● C ● https://github.com/linux4sam/u-boot-at91 12
  • 13. Павел Курочкин General R&D, 2017 Адаптируем под плату: kernel ● PMECC ● dts/dtb: за основу берём sama5d3-xplained ● Включаем поддержку UBI ● Стартовый config: sama5-defconfig ● https://github.com/linux4sam/linux-at91 13
  • 14. Павел Курочкин General R&D, 2017 U-boot enviroment ... bootargs=console=ttyS0,115200n8 earlyprintk mtdparts=atmel_nand:256k(bs)ro,512k(uboot)ro,256k(env),256k(env1), 256k(spare),512k(dtb),6M(kernel)ro,-(rootfs) rootfstype=ubifs ubi.mtd=7 root=ubi0:rootfs rw bootcmd=nand read 0x21000000 0x180000 0x80000;nand read 0x22000000 0x200000 0x600000;bootz 0x22000000 - 0x21000000 ... 14
  • 15. Павел Курочкин General R&D, 2017 Грабли ● Trimffs при прошивке ubi rootfs ● Внутренний/внешний осциллятор ● systemd 15
  • 16. Павел Курочкин General R&D, 2017 Итого ● Минималистичное окружение (debian forever) ○ apt-get install binfmt-support qemu qemu-user-static mtd-utils debootstrap ○ apt-get install crossbuild-essential-armhf ○ apt-get install mtd-tools ● sam-ba для прошивки ● PMECC для NAND 16
  • 17. Павел Курочкин General R&D, 2017 Ссылки ● https://github.com/linux4sam/at91bootstrap ● https://github.com/linux4sam/u-boot-at91 ● https://github.com/linux4sam/linux-at91 ● http://www.at91.com/linux4sam/bin/view/Linux4SAM/ 17