На Ubuntu установите инструментарий.
sudo apt install gcc-riscv64-linux-gnu
Проверьте инструментарий, например, здесь используется версия gcc 9.4.0.
riscv64-linux-gnu-gcc -v
Скачайте исходный код bootloader.
git clone https://github.com/starfive-tech/JH7100_secondBoot.git
cd JH7100_secondBoot/build
make
Получите bootloader-JH7100-220211.bin.out
.
git clone https://github.com/starfive-tech/JH7100_ddrinit.git
cd JH7100_ddrinit/build
make
Получите ddrinit-2133-220211.bin.out
.
Скачайте исходный код 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
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.
Скачайте исходный код OpenSBI.
git clone https://github.com/riscv/opensbi.git
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
.
Следуйте инструкции из раздела «Инструкция: сборка openeuler на visionfive», чтобы установить bootloader, ddrinit и u-boot.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )