Allwinner Nezha/Эксперименты

Материал из ALT Linux Wiki
< Allwinner Nezha
Версия от 13:06, 26 марта 2024; IvanMelnikov (обсуждение | вклад) (Новая страница: «{{Stub}} На этой странице сохранена дополнительная информация о загрузке Альт и других ОС на Allwinner Nezha. == Tina Linux == Плата поставляется с установленной на SPI Tina Linux == Процесс загрузки платы == Кратко, процесс загрузки можно описать так: bootROM -> SPL -> OpenSBI -> U-Boot -> ext...»)
(разн.) ← Предыдущая версия | Текущая версия (разн.) | Следующая версия → (разн.)
Stub.png
Данная страница находится в разработке.
Эта страница ещё не закончена. Информация, представленная здесь, может оказаться неполной или неверной.


На этой странице сохранена дополнительная информация о загрузке Альт и других ОС на Allwinner Nezha.

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


Компиляция ядра из оригинального исходного кода

Получение исходного кода

  1. Перейдите на платформу обслуживания клиентов Allwinner и зарегистрируйтесь.
  2. Войдите в свою учетную запись и добавьте свой публичный ключ.
    1. Для этого перейдете в скачать -> управление ключами -> создать
      Awpubkeys.png
    2. В открывшейся форме укажите свой username и добавьте открытый ключ
  3. Загрузите скрипт загрузки SDK:
    1. Замените "username" на свое и выполните следующую команду:
      git clone ssh://username@sdk.allwinnertech.com/git_repo/repo
    2. Откройте файл ./repo/repo и замените username в следующей строке:
      REPO_URL = 'ssh://voropaevdmtr@sdk.allwinnertech.com/git_repo/repo.git'
  4. Загрузите исходный код
  $ mkdir tina-d1-h
  $ cd tina-d1-h
  $ repo/repo init -u ssh://username@sdk.allwinnertech.com/git_repo/D1_Tina_Open/manifest.git -b master -m tina-d1-h.xml
  $ repo/repo sync
  $ repo/repo start product-smartx-d1-h-tina-stable-v2.0 --all # После завершения всех загрузок создайте ветку

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

  $ sudo ln -s /usr/bin/python2 /usr/bin/python

Компиляция

  1. Перейдите в каталог ./lichee/linux-5.4
  2. Выполните следующую последовательность команд:
  cp arch/riscv/configs/sun20iw1p1_d1_defconfig .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

Другие поддерживаемые ОС

Документация