1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/samuel_yuan-riscv-openeuler-visionfive

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Prepare-firmware-for-visionfive.md 4.1 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 30.11.2024 07:29 33f4fa7

Инструкция: подготовка прошивки для visionfive


1 Подготовка

На Ubuntu установите инструментарий.

sudo apt install gcc-riscv64-linux-gnu

Проверьте инструментарий, например, здесь используется версия gcc 9.4.0.

riscv64-linux-gnu-gcc -v

2 Компиляция bootloader

2.1 Исходный код bootloader

Скачайте исходный код bootloader.

git clone https://github.com/starfive-tech/JH7100_secondBoot.git

2.2 Компиляция

cd JH7100_secondBoot/build
make

Получите bootloader-JH7100-220211.bin.out.

3 Компиляция ddrinit

3.1 Исходный код ddrinit

git clone https://github.com/starfive-tech/JH7100_ddrinit.git

3.2 Компиляция

cd JH7100_ddrinit/build
make

Получите ddrinit-2133-220211.bin.out.

4 Компиляция u-boot

4.1 Исходный код u-boot

Скачайте исходный код u-boot.

git clone https://github.com/starfive-tech/u-boot
cd u-boot
git checkout -b JH7100_upstream origin/JH7100_upstream
git pull

Убедитесь, что конфигурация настроена на запуск с micro sd.

u-boot/configs/ starfive_jh7100_visionfive_smode_defconfig:35:CONFIG_PREBOOT ="run mmcbootenv"

Измените код (в этой статье представлен уже изменённый код).

u-boot/include/configs/starfive-jh7100.h

4.2 Компиляция

make starfive_jh7100_visionfive_smode_defconfig ARCH=riscv CROSS_COMPILE=riscv64-linux-gnu-
make u-boot.bin u-boot.dtb ARCH=riscv CROSS_COMPILE=riscv64-linux-gnu-

Файлы u-boot.dtb и u-boot.bin будут использоваться для компиляции OpenSBI.

5 Компиляция OpenSBI

5.1 Исходный код OpenSBI

Скачайте исходный код OpenSBI.

git clone https://github.com/riscv/opensbi.git

5.2 Компиляция

make ARCH=riscv CROSS_COMPILE=riscv64-linux-gnu- PLATFORM=generic FW_PAYLOAD_PATH=/home/riscv/riscv64-linux/u-boot/u-boot.bin FW_FDT_PATH=/home/riscv/riscv64-linux/u-boot/u-boot.dtb

Перейдите в каталог, где находится fw_payload.bin, и проверьте файл fw_payload.bin.

cd opensbi/build/platform/generic/firmware

Заранее создайте каталог payload в рабочем каталоге и скопируйте туда файл fw_payload.bin.

cp fw_payload.bin /home/riscv/riscv64-linux/payload/

Перейдите в каталог payload и отредактируйте скрипт fsz.sh.

#!/bin/bash

function handle_file {
 inFile=$1
 echo inFile: $inFile
 outFile=$inFile.out

 inSize=`stat -c "%s" $inFile`
 inSize32HexBe=`printf "%08x\n" $inSize`
 inSize32HexLe=${inSize32HexBe:6:2}${inSize32HexBe:4:2}${inSize32HexBe:2:2}${inSize32HexBe:0:2}
 echo "inSize: $inSize (0x$inSize32HexBe, LE:0x$inSize32HexLe)"

 echo $inSize32HexLe | xxd -r -ps > $outFile
 cat $inFile >> $outFile
 echo outFile: $outFile

 outSize=`stat -c "%s" $outFile`
 outSize32HexBe=`printf "%08x\n" $outSize`
 echo "outSize: $outSize (0x$outSize32HexBe)"
}

if [ "$1" = "" -o "$1" = "--help" ]; then
 echo "Add file size(32bits, Little Endian) before the content."
 echo "Usage: ./fsz.sh <file>"
 exit 1
fi

handle_file "$@"

Дайте файлу права на выполнение.

chmod 777 fsz.sh

Преобразуйте файл fw_payload.bin в файл fw_payload.bin.out.

./fsz.sh fw_payload.bin fw_payload.bin.out

Получится файл fw_payload.bin.out.

6 Установка Firmware на плату Flash

Следуйте инструкции из раздела «Инструкция: сборка openeuler на visionfive», чтобы установить bootloader, ddrinit и u-boot.

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/samuel_yuan-riscv-openeuler-visionfive.git
git@api.gitlife.ru:oschina-mirror/samuel_yuan-riscv-openeuler-visionfive.git
oschina-mirror
samuel_yuan-riscv-openeuler-visionfive
samuel_yuan-riscv-openeuler-visionfive
master