# Software Framework

This folder provides the core of the NEORV32 software framework.
This is a short description of the main folders.


## [bootloader](bootloader)

Source(s) of the default NEORV32 bootloader.
A pre-built image is already installed into the rtl design via the `rtl/core/neorv32_bootloader_image.vhd` file.


## [common](common)

NEORV32-specific common files for all bootloader and application programs:
linker script for executable generation and processor start-up code.


## [example](example)

Several example programs for testing and for getting started.


## [image_gen](image_gen)

This folder contains a simple program that is used to create NEORV32 executables (for upload via bootloader) and VHDL
memory initialization files (for memory-persistent applications and for the bootloader).
This program is automatically compiled using the native GCC when invoking one of the application compilation makefiles.


## [isa-test](isa-test)

NEORV32 RISC-V Architecture Test Framework.
See [sim/README](../sim/README.md).


## [lib](lib)

Core libraries (sources and header files) and helper functions for using the processor peripherals and the CPU itself.


## [ocd-firmware](ocd-firmware)

Firmware (debugger "park loop") for the on-chip debugger. This folder is just for documenting the source code.
Modifying the sources is not recommended as this could break the on-chip debugger.


## [openocd](openocd)

Configuration file for openOCD to connect to the NEORV32 on-chip debugger via JTAG.


## [svd](svd)

Contains a CMSIS-SVD compatible system view description file including _all_ peripherals.
