1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/Nuclei-Software-nuclei-sdk

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Это зеркальный репозиторий, синхронизируется ежедневно с исходного репозитория.
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

Nuclei Software Development Kit

Build Documentation Build SDK

[!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 Diagram

Этот 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 для начала работы.

Требования

  • Ubuntu Linux >=20.04 LTS или Windows >=7
  • Nuclei Studio >= 2024.06. Nuclei Studio поддерживает импорт пакета NPK Nuclei SDK для предоставления мастера проекта IDE для создания/сборки/отладки. Nuclei Studio также содержит ту же версию Nuclei Toolchain/QEMU/OpenOCD, поэтому достаточно просто загрузить IDE.

Структура каталогов

Вот структура каталогов этого 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. Код приложения можно разделить на четыре основные части:

    • Приложения Baremetal, которые будут предоставлять приложения без использования ОС, эти приложения будут размещены в папке application/baremetal/.
    • Приложения FreeRTOS, которые будут обеспечивать работу приложений FreeRTOS с использованием ОСРВ FreeRTOS, размещаются в папке application/freertos/.
    • Приложения UCOSII, которые будут обеспечивать работу приложений UCOSII с использованием ОСРВ UCOSII, размещаются в папке application/ucosii/.
    • Приложения RT-Thread, которые будут обеспечивать работу приложений RT-Thread с использованием ОСРВ RT-Thread, размещаются в папке application/rtthread/.
    • Приложения ThreadX, которые будут обеспечивать работу приложений ThreadX с использованием ОСРВ ThreadX, размещаются в папке application/threadx/.
  • 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.

  1. Создайте и измените свою собственную конфигурацию установки
    • Для Linux: создайте setup_config.sh в $NUCLEI_SDK_ROOT.
    • Для Windows: создайте setup_config.bat в %NUCLEI_SDK_ROOT%.
  2. Исходный сценарий среды прямо в NUCLEI_SDK_ROOT
    • Для Linux: source setup.sh
    • Для Windows: setup.bat
  3. Соберите и запустите приложение.
    • Примечание: По умолчанию SoC и Board установлены на evalsoc и nuclei_fpga_eval, если вы не передадите какие-либо переменные SOC и BOARD в команде Make, будет использоваться значение по умолчанию SoC и Board. Запускаем это приложение -> application/baremetal/helloworld/.
  • Перейдите в папку application/baremetal/helloworld/.
  • Вы можете запустить make help, чтобы увидеть сообщение о помощи.
  • Мы предоставили различные конфигурации ядер Nuclei (CORE=<your_core>), которые мы поддерживаем, см. Build/Makefile.core.
    • Например, CORE=n300.
  • Мы поддерживаем несколько режимов загрузки (DOWNLOAD=) для разных приложений.
    • flashxip: программа будет загружена во flash и запущена непосредственно из flash.
    • flash: программа будет загружена во flash, при запуске она будет скопирована в ilm/ram и запущена из ilm/ram.
    • ilm: программа будет загружена в ilm/ram и запущена напрямую из ilm/ram, программа теряется при отключении питания.
  • Например, если вы хотите собрать своё приложение для CORE=n300 DOWNLOAD=ilm, вы можете легко выполнить эту команду:
make CORE=n300 DOWNLOAD=ilm all
  • Если вы хотите загрузить своё приложение для CORE=n300 DOWNLOAD=ilm, вы можете легко выполнить эту команду:
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, чтобы достичь этого.
  • Обратите внимание: начиная с версии 0.2.4, вы также можете передать дополнительный параметр 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.

    • Передайте общие флаги компилятора всем компиляторам c/asm/cpp, вы можете использовать COMMON_FLAGS в Makefile, например, COMMON_FLAGS := -O3 -funroll-loops -fpeel-loops.
    • Передавайте флаги только для компилятора C компилятору C, вы можете использовать CFLAGS в Makefile, например, CFLAGS := -O3 -funroll-loops -fpeel-loops.
    • Для флагов только для ASM-компилятора вы можете использовать ASMFLAGS, для флагов только CPP-компилятора — CXXFLAGS.
  • Если вы хотите передать дополнительные флаги компоновщика, вы можете использовать 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 )

Вы можете оставить комментарий после Вход в систему

Введение

Nuclei RISC-V Processor Software Development Kit. Расширить Свернуть
Apache-2.0
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://gitlife.ru/oschina-mirror/Nuclei-Software-nuclei-sdk.git
git@gitlife.ru:oschina-mirror/Nuclei-Software-nuclei-sdk.git
oschina-mirror
Nuclei-Software-nuclei-sdk
Nuclei-Software-nuclei-sdk
master