2016-04-15 5 views
1

У меня есть аппаратный дизайн в Verilog, разработанный на основе процессора Vscale Беркли. Для тестирования дизайна я хочу скомпилировать некоторые C-программы и генерировать шестнадцатеричные файлы. В конечном итоге я хочу генерировать ПЗУ из hexfiles и выполнять симуляции Verilog. Какой компилятор лучше всего подходит для этой цели, riscv64-unknown-elf-gcc или riscv32-unknown-elf-gcc? Архитектурой процессора Vscale является RV32IM.Как я могу сгенерировать шестнадцатеричный файл из кода C для тестирования 32-разрядного аппаратного дизайна RISC-V?

ответ

1

Вы можете использовать elf2hex команды для того, чтобы создать .hex файл из эльфийского файла (созданные с помощью GCC -o), то есть: elf2hex 16 4096 my_elf_file > output.hex Если вы собираетесь использовать 32-битую архитектуру, я бы скомпилировать с помощью riscv32 неизвестный эльф-GCC.

+0

Могу ли я напрямую запустить код, созданный riscv32-unknown-elf-gcc на моем процессоре? Я думаю, riscv-tests repo генерирует код, который может быть запущен непосредственно на моем процессоре, но это программы сборки. Как я могу сгенерировать такой код из программ C? – Shrek

+1

Использование elf2hex, как рекомендовано выше. Вы также можете посмотреть Makefile из riscv_tests, чтобы понять, как они сгенерированы. – user2548418

+0

Да, вы можете. Как упоминалось выше, взгляните на Makefile, в этом случае внутри папки контрольных точек на тестовом репо. Он создает исполняемый файл и .hex из файла C. Затем вы можете использовать всплеск, загрузить его в fpga и т. Д. т.е. 'riscv32-unknown-elf-gcc -o myexecutable.riscv mycode.c' и запустить его с помощью' spike (-d, если вы хотите отлаживать) pk myexecutable.riscv' –

0

В настоящее время я использую objcopy для тестирования моего основного дизайна. Текущая версия gcc содержит patch, которая позволяет objcopy выводить файлы Verilog.

riscv32-unknown-elf-objcopy -O verilog input.elf output.vh 

Я могу легко загрузить эти файлы в свое моделирование в modelsim.

Но для ответа на ваш вопрос это создаст шестнадцатеричные файлы в формате Intel.

riscv32-unknown-elf-objcopy -O ihex input.elf output.hex 

Objcopy также поддерживает указание, какие секции кода экспортировать и в каких местах памяти.