[!ЗАМЕЧАНИЕ] Если вы хотите собрать и запустить на процессорах серии Nuclei 100, пожалуйста, переключитесь на ветку develop_n100 или master_n100.
С версии 0.5.0 требуются Nuclei Studio >= 2023.10 и Nuclei RISC-V Toolchain/Qemu/OpenOCD >= 2023.10 для сборки и выполнения.
Набор средств разработки программного обеспечения Nuclei (Nuclei SDK) предназначен для разработки и тестирования программного обеспечения для системы на чипе Nuclei Evaluation SoC.
Этот набор средств разработки основан на фреймворке NMSIS, пользователи могут использовать все API, предоставляемые NMSIS, а также API, предоставленные Nuclei SDK, которые主要用于访问板载外设,例如GPIO、UART、SPI和I2C等。
Этот набор средств разработки может поддерживать различные компиляторы, такие как Nuclei riscv gcc/clang, IAR Compiler и Terapines ZCC.
Мы также интегрировали множество операционных систем реального времени в Nuclei SDK, такие как FreeRTOS, uCOSII, RT-Thread и ThreadX, вы можете легко найти их в папке OS.
Этот набор средств разработки программного обеспечения Nuclei (Nuclei SDK) предназначен для разработки и тестирования программного обеспечения для системы на чипе Nuclei Evaluation SoC.
Этот набор средств разработки основан на фреймворке NMSIS, пользователи могут использовать все API, предоставляемые NMSIS, а также API, предоставленные Nuclei SDK, которые主要用于访问板载外设,例如GPIO、UART、SPI和I2C等。
Этот набор средств разработки может поддерживать различные компиляторы, такие как Nuclei riscv gcc/clang, IAR Compiler и Terapines ZCC.
Мы также интегрировали множество операционных систем реального времени в Nuclei SDK, такие как FreeRTOS, uCOSII, RT-Thread и ThreadX, вы можете легко найти их в папке OS.## Быстрый старт
Хотите попробовать Nuclei SDK для процессоров серий Nuclei 200/300/600/900/1000, нажмите Быстрый старт с Nuclei SDK.
Хотите попробовать Nuclei N100 SDK для процессоров серии Nuclei 100, нажмите Быстрый старт с Nuclei N100 SDK.
Ubuntu Linux >=20.04 LTS или Windows >=7
Вот структура директорий для этого 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
приложение
Эта директория содержит все приложения для данного Nuclei SDK.
Код приложений можно разделить на четыре основные части:
SoC
Эта директория содержит все поддерживаемые SoC для данного Nuclei SDK. Названия директорий для SoC и его плат должны всегда быть в нижнем регистре. Здесь мы в основном поддерживаем процессорные ядра Nuclei, работающие на оценочных платах FPGA Nuclei, пакет поддержки расположен в каталоге 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.
Конфигурация сборки
Этот каталог содержит ключевые части системы сборки на основе файла Makefile для Nuclei SDK.* NMSIS
В этом каталоге находятся заголовочные файлы NMSIS, широко используемые в данном Nuclei SDK. Вы можете проверить файл NMSIS_VERSION, чтобы узнать текущую версию NMSIS, используемую в Nuclei-SDK.
Мы также будем синхронизировать изменения из проекта NMSIS, когда он выпускает новую версию.
Операционная система
В этом каталоге представлены пакеты RTOS, которые мы поддерживаем.
Лицензия
Лицензионный файл Nuclei SDK.
NMSIS_VERSION
Файл версии NMSIS. Он показывает текущую версию NMSIS, используемую в Nuclei SDK.
package.json
Файл конфигурации платформы PlatformIO для Nuclei SDK, используется в платформе Nuclei для PlatformIO.
SConscript
Скрипт сборки SCons для пакета RT-Thread, используется в разработке пакета RT-Thread.
Makefile
Внешний файл Makefile для сборки, запуска и отладки приложений без необходимости перехода в соответствующий каталог приложения, например, application/baremetal/helloworld/.
setup.sh
Скрипт установки окружения Nuclei SDK для Linux. Вам потребуется создать свой собственный файл setup_config.sh
.
# Это может быть путь к папке с компиляторами Nuclei Studio
NUCLEI_TOOL_ROOT=/путь/к/вашей_корневой_папке
Для Linux в директории $NUCLEI_TOOL_ROOT должны быть установлены компиляторы Nuclei RISC-V и OpenOCD следующим образом: ~~~ ${NUCLEI_TOOL_ROOT} ├── gcc │ ├── bin │ ├── include │ ├── lib │ ├── libexec │ ├── riscv64-unknown-elf │ └── share └── openocd ├── bin ├── contrib ├── distro-info ├── OpenULINK ├── scripts └── share
Bat-скрипт для настройки окружения Nuclei SDK для **Windows**. Вам нужно создать свой собственный `setup_config.bat`.
~~~bat
set NUCLEI_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
Для обеспечения совместимости при использовании Nuclei EvalSoC (FPGA), пожалуйста, свяжитесь с нашим инженером по применению (Application Engineer, AE) относительно конкретной конфигурации процессора, чтобы подтвердить наличие нужных вам возможностей в процессоре EvalSoC. Вы можете использовать приложение cpuinfo, чтобы определить доступные возможности процессора на вашей системе и сравнить эту информацию со спецификациями ISA Nuclei.
setup_config.sh
в $NUCLEI_SDK_ROOT.setup_config.bat
в %NUCLEI_SDK_ROOT%.source setup.sh
setup.bat
evalsoc
и nuclei_fpga_eval
,
если вы не передали никакие переменные SOC и BOARD в команде Make,
будет использоваться значение по умолчанию для SoC и платформы.CORE=n300
.make CORE=n300 DOWNLOAD=ilm all
make CORE=n300 DOWNLOAD=ilm upload
make CORE=n300 DOWNLOAD=ilm run_openocd
.make CORE=n300 DOWNLOAD=ilm run_gdb
в существующем окне терминала, после чего вы сможете отлаживать приложение с помощью gdb;
если вы хотите загрузить свою программу, вам нужно будет ввести load
.GDB_PORT=<порт>
, чтобы изменить порт gdb на новый вместо значения по умолчанию 3333
,
например, make CORE=n300 DOWNLOAD=ilm GDB_PORT=3344 run_openocd
и make CORE=n300 DOWNLOAD=ilm GDB_PORT=3344 run_gdb
.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.
Если вам нужно создать новое приложение или изменить 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
Текущая конфигурация: 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=
Ассемблирование: . . /. . /. . /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
~~~## [Участие](https://doc.nucleisys.com/nuclei_sdk/contribute.html)## [Журнал изменений](https://doc.nucleisys.com/nuclei_sdk/changelog.html)
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )