Allwinner Nezha

Материал из ALT Linux Wiki
Stub.png
Данная страница находится в разработке.
Эта страница ещё не закончена. Информация, представленная здесь, может оказаться неполной или неверной.

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


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

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

  1. Перейдите на платформу обслуживания клиентов Allwinner и зарегистрируйтесь.
  2. Войдите в свою учетную запись и добавьте свой публичный ключ.
    1. Для этого перейдете в скачать -> управление ключами -> создать
      Awpubkeys.png
    2. В открывшейся форме укажите свой username и добавьте открытый ключ
  3. Загрузите скрипт загрузки SDK:
    1. Замените "username" на свое и выполните следующую команду:
      git 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 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 # После завершения всех загрузок создайте ветку

Компиляция

  1. Перейдите в каталог ./lichee/linux-5.4
  2. Сохраните этот конфиг ядра под именем .config
  3. Выполните следующую последовательность команд:
  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

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

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