Allwinner Nezha: различия между версиями
Строка 60: | Строка 60: | ||
=== Компиляция === | === Компиляция === | ||
# Перейдите в каталог <code>./lichee/linux-5.4</code> | # Перейдите в каталог <code>./lichee/linux-5.4</code> | ||
# сохраниет [https://git.altlinux.org/people/voropaevdmtr/packages/?p=kernel-image-nezha.git;a=blob;f=config-nezha;h=b8888dafc328020fb989ac13a73c48fdd43b589a;hb=sisyphus этот конфиг ядра] под именем <code>. | # сохраниет [https://git.altlinux.org/people/voropaevdmtr/packages/?p=kernel-image-nezha.git;a=blob;f=config-nezha;h=b8888dafc328020fb989ac13a73c48fdd43b589a;hb=sisyphus этот конфиг ядра] под именем <code>.config</code> | ||
make CROSS_COMPILE=riscv64-linux-gnu- ARCH=riscv olddefconfig | make CROSS_COMPILE=riscv64-linux-gnu- ARCH=riscv olddefconfig | ||
make CROSS_COMPILE=riscv64-linux-gnu- ARCH=riscv | make CROSS_COMPILE=riscv64-linux-gnu- ARCH=riscv |
Версия от 15:42, 11 июля 2022
Allwinner Nezha — первая общедоступная плата на базе Allwinner D1 (sun20iw1p1). Официальная документация предоставлена на сайте awol
Версии платы
На данный момент существует 2 версии платы:
- D1_DEV_DDR3_16X2_V1_0
- D1_DEV_DDR3_16X2_V1_2
Информация на данной странице актуальна для V1_2.
Tina Linux
Плата поставляется с установленной на SPI Tina Linux
Процесс загрузки платы
Кратко, процесс загрузки можно описать так: bootROM -> SPL -> OpenSBI -> U-Boot -> extlinux -> Linux kernel Сразу после включения питания платы процессор получает первые команды из ПЗУ(bootROM), эти команды передают управление вторичному загрузчику SPL, находящемуся на съемном носителе (microSD).
SPL
SPL (Secondary Program Loader) является промежуточным этапом загрузки платы и служит для инициализации контроллера памяти и загрузки следующего загрузчика. В качестве SPL в Allwinner Nezha используется Boot0. Собрать из исходников и записать его на флешку можно по следующей инструкции:
git clone https://github.com/smaeul/sun20i_d1_spl -b mainline cd sun20i_d1_spl make CROSS_COMPILE=riscv64-linux-gnu- p=sun20iw1p1 mmc sudo dd if=nboot/boot0_sdcard_sun20iw1p1.bin of=/dev/sdX bs=8192 seek=1
OpenSBI + U-Boot
Зпуск Simply с ядром 5.4.61 из федоры
Для эксперимента взял образ федоры https://openkoji.iscas.ac.cn/pub/dl/riscv/Allwinner/Nezha_D1/images-release/Fedora/fedora-riscv64-d1-developer-xfce-rawhide-Rawhide-20220104-012902.n.0-sda.raw.zst fedora-riscv64-d1-developer-xfce-rawhide-Rawhide-20220104-012902.n.0-sda.raw
Создал с помощью kpartx loop device из образа, примонтировал. Забыкапил модули ядра очистил корневой раздел, чтобы
slinux-10.0-riscv64.img.xz
Отладка
Подключение к UART
В комплекте с платой предоставляется UART адаптер, с помощью которого можно подключиться к плате следующим образом:
Черный -> GND
Зеленый -> RX
Белый -> TX
На хосте, с которого осуществляется подключение выполнить команду:
picocom -b 115200 /dev/ttyUSB0
Компиляция ядра из оригинального исходного кода
Получение исходного кода
- Перейдите на платформу обслуживания клиентов Allwinner и зарегистрируйтесь.
- Войдите в свою учетную запись и добавьте свой публичный ключ.
- Для этого перейдете в скачать -> управление ключами -> создать
- В открывшейся форме укажите свой username и добавьте открытый ключ
- Загрузите скрипт загрузки SDK:
- Замените "username" на свое и выполните следующую команду:
git ssh://username@sdk.allwinnertech.com/git_repo/repo
- Откройте файл ./repo/repo и замените username в следующей строке:
REPO_URL = 'ssh://voropaevdmtr@sdk.allwinnertech.com/git_repo/repo.git'
- Замените "username" на свое и выполните следующую команду:
- Загрузите исходный код
$ mkdir tina-d1-h $ cd tina-d1-h $ repo init -u ssh://username@sdk.allwinnertech.com/git_repo/D1_Tina_Open/manifest.git -b master -m tina-d1-h.xml $ repo sync $ repo start product-smartx-d1-h-tina-stable-v2.0 --all # После завершения всех загрузок создайте ветку
Компиляция
- Перейдите в каталог
./lichee/linux-5.4
- сохраниет этот конфиг ядра под именем
.config
make CROSS_COMPILE=riscv64-linux-gnu- ARCH=riscv olddefconfig make CROSS_COMPILE=riscv64-linux-gnu- ARCH=riscv make CROSS_COMPILE=riscv64-linux-gnu- ARCH=riscv INSTALL_PATH=${RISCV_ROOTFS_BOOT} install make CROSS_COMPILE=riscv64-linux-gnu- ARCH=riscv INSTALL_MOD_PATH=${RISCV_ROOTFS} modules_install