Я использовал следующую команду для создания полезной нагрузки OpenSbi и ядра Linux: < /p>
make PLATFORM=generic FW_FDT_PATH=$WORKLOAD_BUILD_ENV_HOME/dts/build/xiangshan.dtb FW_PAYLOAD_PATH=$RISCV_LINUX_HOME/arch/riscv/boot/Image
< /code>
После получения fw_payload.bin я написал простую инструкцию перехода для загрузки полезных данных OpenSBI и перехода в новое местоположение по адресу 0x80100000. Переход осуществляется с помощью базовой инструкции перехода по адресу 0x80100000, после чего ядро должно продолжить выполнение fw_payload.bin.
Однако при запуске этого на эмуляторе я вижу только Вывод OpenSBI, но не вывод ядра. Если я напрямую запускаю fw_payload.bin, он работает как положено и ядро работает нормально.
В чем может быть причина такого несоответствия? Почему ядро не работает должным образом после перехода на 0x80100000, но работает нормально, когда полезная нагрузка выполняется напрямую?
Вот мой linker.lds и логика перехода:
OUTPUT_ARCH( "riscv" )
ENTRY( jump_payload )
SECTIONS
{
. = ALIGN(4);
begin = .;
.header.code :
{
*(.header.code)
}
end = .;
. = begin + 0x100000;
.payload :
{
PROVIDE(_payload_start = .);
*(.payload)
. = ALIGN(8);
PROVIDE(_payload_end = .);
}
< /code>
.section ".header.code", "ax", %progbits
.globl jump_payload
jump_payload:
li t0, 0x80100000
jr t0
add t0, x0,x0
.section ".payload", "ax", %progbits
.align 4
.global payload_bin
payload_bin:
.incbin PAYLOAD_PATH
Подробнее здесь: https://stackoverflow.com/questions/793 ... to-a-new-l
Почему мое ядро Linux с OpenSBI не загружается правильно при переходе на новый нагрузочный адрес (0x80100000) ⇐ Linux
1737792451
Anonymous
Я использовал следующую команду для создания полезной нагрузки OpenSbi и ядра Linux: < /p>
make PLATFORM=generic FW_FDT_PATH=$WORKLOAD_BUILD_ENV_HOME/dts/build/xiangshan.dtb FW_PAYLOAD_PATH=$RISCV_LINUX_HOME/arch/riscv/boot/Image
< /code>
После получения fw_payload.bin я написал простую инструкцию перехода для загрузки полезных данных OpenSBI и перехода в новое местоположение по адресу 0x80100000. Переход осуществляется с помощью базовой инструкции перехода по адресу 0x80100000, после чего ядро должно продолжить выполнение fw_payload.bin.
Однако при запуске этого на эмуляторе я вижу только Вывод OpenSBI, но не вывод ядра. Если я напрямую запускаю fw_payload.bin, он работает как положено и ядро работает нормально.
В чем может быть причина такого несоответствия? Почему ядро не работает должным образом после перехода на 0x80100000, но работает нормально, когда полезная нагрузка выполняется напрямую?
Вот мой linker.lds и логика перехода:
OUTPUT_ARCH( "riscv" )
ENTRY( jump_payload )
SECTIONS
{
. = ALIGN(4);
begin = .;
.header.code :
{
*(.header.code)
}
end = .;
. = begin + 0x100000;
.payload :
{
PROVIDE(_payload_start = .);
*(.payload)
. = ALIGN(8);
PROVIDE(_payload_end = .);
}
< /code>
.section ".header.code", "ax", %progbits
.globl jump_payload
jump_payload:
li t0, 0x80100000
jr t0
add t0, x0,x0
.section ".payload", "ax", %progbits
.align 4
.global payload_bin
payload_bin:
.incbin PAYLOAD_PATH
Подробнее здесь: [url]https://stackoverflow.com/questions/79386378/why-does-my-linux-kernel-with-opensbi-not-boot-correctly-when-jumping-to-a-new-l[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия