14:28 2023/7/2
〇、Предисловие
Юйхэн — самая яркая звезда в созвездии Большой Медведицы.
1. Введение
Данный проект направлен на изучение архитектуры RISC-V ядра и разработку собственного RISC-V ядра с последующей интеграцией в систему на кристалле (SoC).
2. Описание функций
— Ядро и периферийные устройства: YuHeng 5-state RISC-V Core. — Компилятор для программного обеспечения: GNU MCU Eclipse RISC-V Embedded GCC, 64-bit (gcc version 8.2.0). — Среда моделирования: VCS + DVE/Veridi.
Обратите внимание, что при определении макроса PRINT_STDIO_SIM необходимо использовать регистр mscratchcswl для перенаправления xprintf. Для этого требуется поддержка компилятора. Можно использовать версию gcc riscv64-elf-x86_64-20210307 от T-Head.
Начальный адрес | Конечный адрес | Размер | Периферийное устройство | Поддержка |
---|---|---|---|---|
0x0000_0000 | 0x0fff_ffff | 32K | ROM | √ |
0x1000_0000 | 0x1fff_ffff | 32K | RAM | √ |
0x2000_0000 | 0x2fff_ffff | 256M | TIMER1 | √ |
0x3000_0000 | 0x3fff_ffff | 256M | UART1 | √ |
0x4000_0000 | 0x4fff_ffff | 256M | UART2 | √ |
0x5000_0000 | 0x5fff_ffff | 256M | UART3 | √ |
0x6000_0000 | 0x6fff_ffff | 256M | × | × |
Фактический размер пространства можно найти в файле link.lds.
3. Использование
Проект имеет четыре ветви:
— master — моделирование в среде VCS. — iverilog — моделирование в среде iverilog. — fpga — платформа Xilinx FPGA. — gowin — платформа Gowin FPGA.
Между различными ветвями существуют незначительные различия, которые адаптированы к различным платформам. Не рекомендуется использовать их совместно.
sim
├── build.mk // make команда
├── config.mk // make параметры конфигурации
├── coremark // #1
├── iap // #2
├── iap_app // #3
├── iap_boot // #3
├── rtthread-nano // #1
├── simple // #1
├── systick // #1
├── timer // #1
├── uart_rxd // #1
├── uart_txd // #1
└── xprintf // #1
Примечание:
#1, эти тестовые примеры запускаются с адреса 0.
#2, имитация iap, приложение как c-array вместе с загрузочной программой.
#3, имитация iap, iap_app предоставляет пример приложения, iap_boot предоставляет пример загрузочной программы, компилируются отдельно.
VCS и DVE/Veridi уже добавлены в переменные среды, дополнительная настройка не требуется.
Необходимо только изменить путь к инструментам тестирования программ (путь к файлу: sim/config.mk).
EMBTOOLPATH = /home/crazy/Tools/compiler/xuantie/v8.4.0/riscv64-elf-x86_64-20210307
EMBTOOLPREFIX = ${EMBTOOLPATH}/bin/riscv64-unknown-elf
coremark
rtthread-nano
simple
systick
timer
uart_rxd
uart_txd
xprintf
Измените Makefile, чтобы изменить параметры компиляции. Если определён макрос PRINT_STDIO_SIM, используйте регистр csr для перенаправления xprintf, моделирование выполняется быстрее. В противном случае используйте uart1 для перенаправления xprintf.
CFLAGS += -O0 -ffunction-sections -fdata-sections
#CFLAGS += -g
CFLAGS += -DPRINT_STDIO_SIM
make build
make compile
make sim
Эквивалентно: make run
После выполнения команды make sim результаты моделирования следующие:
ic-design@bash:simple>make sim
[INFO] simulate ...
Chronologic VCS simulator copyright 1991-2014
Contains Synopsys proprietary information.
Compiler version I-2014.03_Full64; Runtime version I-2014.03_Full64; Jun 22 15:23 2023
VCD+ Writer I-2014.03_Full64 Copyright (c) 1991-2014 by Synopsys Inc.
[ 117140] UART: add: 1+2+..+100 = 5050, expect: 5050
[ 224720] UART: sub: -1-2-..-100 = -5050, expect: -5050
[ 303640] UART: mul: 1*2*..*8 = 40320, expect: 40320
[ 358340] UART: div: 495, expect: 495
[ 359680] DEBG: SIMULATION END.
$finish called from file "../../tb/core_data_monitor_tb.v", line 51.
$finish at simulation time 359680000
V C S S i m u l a t i o n R e p o r t
Time: 359680000 ps
CPU Time: 1.580 seconds; Data structure size: 0.2Mb
Thu Jun 22 15:24:03 2023
[INFO] execute done
make wave
iap
Этот пример теста используется для имитации iap и приложения как c-массива вместе с загрузочным приложением.
Перейдите в каталог iap и выполните следующие команды по очереди.
make build_app
make build
make compile
make sim
Эквивалент: make build_app && make run
Результаты моделирования после выполнения команды make sim следующие:
ic-design@bash:iap>make sim
[INFO] simulate ...
Chronologic VCS simulator copyright 1991-2014
Contains Synopsys proprietary information.
Compiler version I-2014.03_Full64; Runtime version I-2014.03_Full64; Jun 22 15:23 2023
VCD+ Writer I-2014.03_Full64 Copyright (c) 1991-2014 by Synopsys Inc.
[ 135180] UART: load iap file...
[ 502100] UART: load finished.
[ 531100] UART: jump to 00001000
[ 551780] UART: app start.
[ 571560] UART: hello, yu.heng!
[ 572900] DEBG: SIMULATION END.
$finish called from file "../../tb/core_data_monitor_tb.v", line 51.
$finish at simulation time 572900000
V C S S i m u l a t i o n R e p o р t
Time: 572900000 ps
CPU Time: 1.940 seconds; Data structure size: 0.2Mb
Thu Jun 22 15:23:10 2023
[INFO] execute done
``` **Нужно обратить внимание, пожалуйста, обратитесь к файлу lds для определения размера программных файлов, по умолчанию: boot-16KB/app-4KB.**
#### 3. Тестовый случай 3
iap_app iap_boot
Этот тестовый случай используется для имитации iap, iap_app предоставляет пример приложения, iap_boot предоставляет загрузочный пример, компилируется отдельно.
1. Войдите в каталог `iap_app`, последовательно выполните следующие команды:
make build_app
2. Войдите в каталог `iap_boot`, последовательно выполните следующие команды:
make build_app make build make compile make sim
Эти команды эквивалентны команде `make build_app && make run`.
Ниже приведены результаты моделирования после выполнения команды `make sim` (моделирование занимает много времени):
ic-design@bash:iap_boot>make sim
[INFO] simulate ...
Chronologic VCS simulator copyright 1991-2014
Contains Synopsys proprietary information.
Compiler version I-2014.03_Full64; Runtime version I-2014.03_Full64; Jun 22 15:30 2023
VCD+ Writer I-2014.03_Full64 Copyright (c) 1991-2014 by Synopsys Inc.
[ 26760] UART: recv bin file...
[ 572420680] UART: recv bin file finished.
[ 572446380] UART: hello, yu.heng!
[ 572447720] DEBG: SIMULATION END.
$finish called from file "../../tb/core_data_monitor_tb.v", line 51.
$finish at simulation time 572447720000
V C S S i m u l a t i o n R e p o r t
Time: 572447720000 ps
CPU Time: 447.050 seconds; Data structure size: 0.2Mb
Thu Jun 22 15:38:32 2023
[INFO] execute done
## Четыре. Благодарности
В процессе проектирования Юйхэн (YuHeng) я ссылался и вдохновлялся многими замечательными проектами с открытым исходным кодом.
## Пять. Журнал изменений
- v3.1_vcs
- Протестированы все тестовые случаи в каталоге sim (2023/7/2, 14:28).
- v3.0
- Рефакторинг кода (2023/6/14, 13:08).
- v2.0
- Унификация структуры файлов нескольких проектов (2022/4/5, 11:45).
- v1.0
- Создание проекта и интеграция тестирования (2022/4/4, 18:05).
## Шесть. Поддержка
Если у вас есть какие-либо вопросы или предложения, вы можете оставить комментарий ниже или связаться со мной по электронной почте (E-mail:ytesliang@163.com), и я постараюсь ответить в течение 24 часов.
ATONEMAN
2022.07.02
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )