Nuclei Software Development Kit
[!NOTE] Если вы хотите собрать и запустить на процессоре Nuclei 100 серии, переключитесь на ветку develop_n100 или master_n100.
С версии 0.5.0 для сборки и запуска требуются Nuclei Studio >= 2023.10 и Nuclei RISC-V Toolchain/Qemu/OpenOCD >= 2023.10.
Nuclei Software Development Kit (Nuclei SDK) разработан для создания и оценки программного обеспечения для Nuclei Evaluation SoC.
Этот Nuclei SDK построен на основе фреймворка NMSIS, пользователь может получить доступ ко всем API, предоставляемым NMSIS, а также к API, предоставленным Nuclei SDK, которые в основном предназначены для доступа к встроенным периферийным устройствам, таким как GPIO, UART, SPI и I2C и т. д.
Этот Nuclei SDK может поддерживать различные компиляторы, такие как Nuclei riscv gcc/clang, IAR compiler и Terapines ZCC.
Мы также интегрировали множество ОСРВ в Nuclei SDK: FreeRTOS, UCOSII, RTThread и ThreadX, их можно легко найти в папке OS.
Если вы хотите попробовать Nuclei SDK для процессоров Nuclei 200/300/600/900/1000, нажмите Быстрый старт с Nuclei SDK, чтобы начать работу.
Если вы хотите попробовать Nuclei N100 SDK для процессора Nuclei 100 series, нажмите Быстрый старт с Nuclei N100 SDK для начала работы.
Вот структура каталогов этого Nuclei SDK.
$NUCLEI_SDK_ROOT
├── application
│ ├── baremetal
│ ├── freertos
│ ├── ucosii
│ ├── threadx
│ └── rtthread
├── Build
│ ├── gmsl
│ ├── toolchain
│ ├── Makefile.base
│ ├── Makefile.conf
│ ├── Makefile.core
│ ├── Makefile.components
│ ├── Makefile.files
│ ├── Makefile.global
│ ├── Makefile.misc
│ ├── Makefile.rtos
│ ├── Makefile.rules
│ └── Makefile.soc
├── doc
│ ├── build
│ ├── source
│ ├── Makefile
│ └── requirements.txt
├── NMSIS
│ ├── Core
│ ├── DSP
│ ├── NN
│ └── Library
├── OS
│ ├── FreeRTOS
│ ├── UCOSII
│ ├── ThreadX
│ └── RTThread
├── SoC
│ ├── gd32vf103
│ └── evalsoc
├── test
│ ├── core
│ ├── ctest.h
│ ├── LICENSE
│ └── README.md
├── LICENSE
├── Makefile
├── NMSIS_VERSION
├── package.json
├── SConscript
├── README.md
├── setup.bat
└── setup.sh
application
Этот каталог содержит все прикладные программы для этого Nuclei SDK. Код приложения можно разделить на четыре основные части:
SoC
В этом каталоге содержатся все поддерживаемые SoCs. Для этого Nuclei SDK имена каталогов для SoC и его плат всегда должны быть в нижнем регистре.
Здесь мы в основном поддерживаем ядра процессоров Nuclei, работающие на оценочных платах Nuclei FPGA. Пакет поддержки размещён в SoC/evalsoc/.
В каждом каталоге include SoC должен быть предоставлен nuclei_sdk_soc.h, который включает заголовочный файл soc, например, SoC/evalsoc/Common/Include/nuclei_sdk_soc.h.
В каждом каталоге include платы SoC должен быть предусмотрен nuclei_sdk_hal.h и включён заголовочный файл платы, например, SoC/evalsoc/Board/nuclei_fpga_eval/Include/nuclei_sdk_hal.h.
Build
Этот каталог содержит ключевую часть системы сборки на основе Makefile для Nuclei SDK.
NMSIS
Этот каталог содержит файлы заголовков NMSIS, которые широко используются в этом Nuclei SDK, вы можете проверить файл NMSIS_VERSION, чтобы узнать текущую версию NMSIS, используемую в Nuclei-SDK.
Мы также будем синхронизировать изменения в проекте NMSIS, когда он предоставит новый релиз.
OS
Этот каталог предоставляет пакеты RTOS, которые мы поддерживаем.
LICENSE
Файл лицензии Nuclei SDK.
NMSIS_VERSION
Файл версии NMSIS. Он покажет текущую версию NMSIS, используемую в Nuclei SDK.
package.json
Файл package json PlatformIO для Nuclei SDK используется в Nuclei Platform for PlatformIO.
SConscript
Скрипт сборки RT-Thread scons, используемый в разработке пакетов RT-Thread.
Makefile
Внешний Makefile только для сборки, запуска, отладки приложения без перехода в соответствующий каталог приложения, такой как application/baremetal/helloworld/.
setup.sh
Сценарий настройки среды Nuclei SDK для Linux. Вам необходимо создать свой собственный setup_config.sh.
# Это может быть путь к папке инструментария Nuclei Studio
NUCLEI_TOOL_ROOT=/path/to/your_tool_root
На $NUCLEI_TOOL_ROOT для Linux вам необходимо установить инструментарий Nuclei RISC-V и OpenOCD, как показано ниже.
${NUCLEI_TOOL_ROOT}
├── gcc
│ ├── bin
│ ├── include
│ ├── lib
│ ├── libexec
│ ├── riscv64-unknown-elf
│ └── share
└── openocd
├── bin
├── contrib
├── distro-info
├── OpenULINK
├── scripts
└── share
setup.bat
Сценарии настройки среды Nuclei SDK bat для Windows. Вам нужно создать свой собственный setup_config.bat.
set NUCLEI_TOOL_ROOT=\path\to\your_tool_root
На %NUCLEI_TOOL_ROOT% для Windows вам необходимо иметь инструментарий Nuclei RISC-V, необходимые инструменты сборки Windows и установленный OpenOCD, как показано ниже.
%NUCLEI_TOOL_ROOT%
├── build-tools
│ ├── bin
│ ├── gnu-mcu-eclipse
│ └── licenses
├── gcc
│ ├── bin
│ ├── include
│ ├── lib
│ ├── libexec
│ ├── riscv64-unknown-elf
│ └── share
└── openocd
├── bin
├── contrib
├── distro-info
├── OpenULINK
├── scripts
└── share
[!NOTE] Чтобы обеспечить совместимость при использовании Nuclei EvalSoC (FPGA), пожалуйста, уточните у нашего инженера по приложениям (AE) конкретную конфигурацию процессора, чтобы подтвердить, обладает ли процессор EvalSoC функциями, которые вы собираетесь тестировать. Вы можете использовать приложение [cpuinfo][1], чтобы определить доступные функции ЦП в вашей системе и сопоставить эту информацию со спецификациями Nuclei ISA.
source setup.sh
setup.bat
evalsoc
и nuclei_fpga_eval
, если вы не передадите какие-либо переменные SOC и BOARD в команде Make, будет использоваться значение по умолчанию SoC и Board. Запускаем это приложение -> application/baremetal/helloworld/.CORE=n300
.make CORE=n300 DOWNLOAD=ilm all
make CORE=n300 DOWNLOAD=ilm upload
(Вариант 1) Если вы хотите отладить своё приложение для CORE=n300 DOWNLOAD=ilm:
make CORE=n300 DOWNLOAD=ilm run_openocd
.make CORE=n300 DOWNLOAD=ilm run_gdb
в существующем терминале, после чего вы сможете отлаживать его с помощью gdb. Если вы хотите загрузить свою программу, вам нужно ввести load
, чтобы достичь этого.GDB_PORT=<portno>
, чтобы использовать новый порт gdb, отличный от стандартного порта 3333. Например, make CORE=n300 DOWNLOAD=ilm GDB_PORT=3344 run_openocd
и make CORE=n300 DOWNLOAD=ilm GDB_PORT=3344 run_gdb
.
(Вариант 2) Если вы хотите отладить своё приложение для CORE=n300 DOWNLOAD=ilm:make CORE=n300 DOWNLOAD=ilm debug
Если вы хотите использовать инструмент UART-терминала для просмотра сообщений UART, вы можете выбрать screen
или minicom
в Linux, teraterm
в Windows. Используемая нами скорость передачи UART по умолчанию составляет 115200 бод.
Начиная с выпуска 0.5.0, Nuclei SDK поддерживает только набор инструментов Nuclei RISC-V Toolchain >= 2023.10, а префикс инструментария изменился с riscv-nuclei-elf-
на riscv64-unknown-elf-
.
Если вы хотите узнать больше о документации Nuclei SDK, пожалуйста, перейдите по ссылке Nuclei SDK documentation.
Если вам необходимо создать новое приложение или изменить опцию CORE или DOWNLOAD, убедитесь, что вы очистили проект с помощью команды make clean
.
Если вы хотите указать дополнительные флаги компилятора, следуйте этому руководству в вашем приложении Makefile.
COMMON_FLAGS := -O3 -funroll-loops -fpeel-loops
.CFLAGS := -O3 -funroll-loops -fpeel-loops
.Если вы хотите передать дополнительные флаги компоновщика, вы можете использовать LDFLAGS, а если у вас есть дополнительные каталоги библиотек, вы можете использовать LIBDIRS, чтобы указать каталоги библиотек.
Предоставленные приложения и их makefile являются лучшими примерами запуска для использования Nuclei SDK.
Передайте дополнительно V=1
вашей команде make, она покажет подробную информацию о компиляции, в противном случае она покажет только основную информацию. Пример вывода с дополнительным параметром V=1
:
$ make V=1 all
Current Configuration: TOOLCHAIN=nuclei_gnu RISCV_ARCH=rv32imafdc RISCV_ABI=ilp32d RISCV_TUNE=nuclei-300-series RISCV_CMODEL=medlow SOC=evalsoc BOARD=nuclei_fpga_eval CORE=n300fd ARCH_EXT= DOWNLOAD=ilm STDCLIB=newlib_nano SMP= BOOT_HARTID=0
Assembling : ../../../SoC/evalsoc/Common/Source/GCC/intexc_evalsoc.S
riscv64-unknown-elf-gcc -x assembler-with-cpp -O2 -DBOOT_HARTID=0 -march=rv32imafdc -mabi=ilp32d -mcmodel=medlow -mtune=nuclei-300-series -g -fno-common -ffunction-sections -fdata-sections -DDOWNLOAD_MODE=DOWNLOAD_MODE_ILM -DDOWNLOAD_MODE_STRING="ILM" -DCPU_SERIES=300 -I. -I../../../NMSIS/Core/Include -I../../../SoC/evalsoc/Board/nuclei_fpga_eval/Include -I../../../SoC/evalsoc/Common/Include -Iinc -MMD -MT ../../../SoC/evalsoc/Common/Source/GCC/intexc_evalsoc.S.o -MF
../../../SoC/evalsoc/Common/Source/GCC/intexc_evalsoc.S.o.d -c -o ../../../SoC/evalsoc/Common/Source/GCC/intexc_evalsoc.S.o ../../../SoC/evalsoc/Common/Source/GCC/intexc_evalsoc.S
Сборка: ../../../SoC/evalsoc/Common/Source/GCC/intexc_evalsoc_s.S
riscv64-unknown-elf-gcc -x assembler-with-cpp -O2 -DBOOT_HARTID=0 -march=rv32imafdc -mabi=ilp32d -mcmodel=medlow -mtune=nuclei-300-series -g -fno-common -ffunction-sections -fdata-sections -DDOWNLOAD_MODE=DOWNLOAD_MODE_ILM -DDOWNLOAD_MODE_STRING="ILM" -DCPU_SERIES=300 -I. -I../../../NMSIS/Core/Include -I../../../SoC/evalsoc/Board/nuclei_fpga_eval/Include -I../../../SoC/evalsoc/Common/Include -Iinc -MMD -MT ../../../SoC/evalsoc/Common/Source/GCC/intexc_evalsoc_s.S.o -MF
../../../SoC/evalsoc/Common/Source/GCC/intexc_evalsoc_s.S.o.d -c -o ../../../SoC/evalsoc/Common/Source/GCC/intexc_evalsoc_s.S.o ../../../SoC/evalsoc/Common/Source/GCC/intexc_evalsoc_s.S
Сборка: ../../../SoC/evalsoc/Common/Source/GCC/startup_evalsoc.S
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )