Отладка простых программ на C и ассемблера с помощью Spike (riscv-isa-sim)

Я запускаю программы Simple C и Assembly на пике (это отлично работает). У меня проблемы с запуском режима отладки шипов. Я всегда получаю один и тот же результат, хотя пытаюсь отлаживать разные программы. Я использую riscv64-unknown-elf-gcc для создания исполняемых двоичных файлов из кода C и ассемблера и следующих команд, также описанных в: http://riscv.org/download.html#tab_isa-sim, чтобы запустить режим отладки:

$ spike -d pk simpleprogram

Я также получу тот же результат, если просто наберу:

$ spike -d pk 

Я получаю сообщения об ошибках, если набираю следующую команду (без pk):

$ spike -d simpleprogram 

person Chris    schedule 03.03.2015    source источник
comment
Какие сообщения об ошибках? Что значит такой же вывод?   -  person Chris    schedule 04.03.2015
comment
сообщения об ошибках: появляются при использовании spike без pk core 0: 0x0000000000002000 (0x00000000) unknown core 0: exception trap_illegal_instruction, epc 0x0000000000002000 тот же Вывод: команда: $ spike -d -pk simpleprogram < / b> выводит информацию на терминал, например: core 0: 0x0000000000003f74 (0x00878793) addi a5, a5, 8 (я не могу опубликовать их все, потому что их создается огромное количество) проблема заключается в том, что если я сравниваю этот вывод (который я не могу сделать подробно, потому что информации слишком много) двух программ, я не могу найти никакой разницы.   -  person Chris    schedule 04.03.2015


Ответы (1)


На самом деле pk является прокси-ядром. Это однопроцессная ОС, которая упрощает запуск программ. Pk - это двоичный файл RISC-V, который выполняется поверх spike.

Когда вы запускаете spike с pk, сначала запускается pk, а когда все будет готово, pk передает выполнение вашей программе (которая является аргументом для pk). Вы видите тот же результат, потому что вы не выполнили достаточно далеко, чтобы пройти загрузку pk и перейти в свою программу.

Запуск без pk возможен, но ваша программа должна быть специально скомпилирована для работы в этом режиме с «голым железом». Например, как это сделать, я бы посмотрел на riscv-tests repo, чтобы узнать, как запускать минимальные программы.

person user2548418    schedule 03.03.2015
comment
Я просмотрел репозиторий riscv-tools, но не смог найти ни одного примера того, как запустить простую программу непосредственно на spike. В репо авторы описывают только использование spike с pk (прокси-ядром). Можете ли вы сказать мне, есть ли способ выяснить, когда моя программа выполняется на spike, а не на pk? Вы, может быть, знаете и могли бы сказать мне, как запускать программы прямо на спайке. Заранее спасибо. - person Chris; 04.03.2015
comment
Запустить простую программу без pk легко, вы можете использовать spike -d simpleprogram (как вы уже пробовали). Сложная часть - это его компиляция для работы без pk. Ознакомьтесь с каталогом тестов riscv-tools, например, с программами, которые могут работать без pk. Например, попробуйте сделать median.riscv. - person user2548418; 04.03.2015