1. Software Development Kit (SDK)
The Software Development Kit (SDK) is the set of tools, libraries, code examples, and documentation that allows users to develop, debug, and optimize applications.
* Tools and Workflow (Toolchain): The development workflow follows a standardized and well-documented cycle, which includes:
- Creating the Development Environment: Initial configuration of the software environment.
- Creating a New Project: Structuring the software project specifically for blueMacaw.
- Code Development: Writing the application primarily in C.
- Building the Project (Build): Compiling, assembling, and linking the code.
- Debugging and Testing: Functional validation of the application.
- Optimization: Adjustments for better performance and/or energy efficiency.
* Compilation Chain (Toolchain): The compilation chain is based on the industry-standard GNU Compiler Collection (GCC), specifically configured for the RISC-V architecture. It includes the following essential components:
- C/C++ compiler: For translating high-level code.
- Assembler: For low-level code and direct register manipulation.
- Linker: Responsible for combining objects and libraries, resolving references, and defining the memory layout through configuration files (.ld).
- Loader: For preparing and transferring the final binary code to the runtime environment.
- Debugger: GDB, via the OpenOCD debugging interface.
2. Support Libraries and Runtime Environment
The blueMacaw runtime environment is bare-metal and single-task, which means that applications run directly on the hardware without the intervention of a full operating system (OS) or task scheduler.
* Runtime Environment: The development library provides the essential runtime components, including boot code for application initialization and a dynamic memory allocation system (malloc/free).
* Peripheral Drivers: A hardware abstraction layer (HAL) provides access to a wide range of on-chip peripherals for the application:
- Internal Communication: APB (Advanced Peripheral Bus), uDMA (Direct Memory Access).
- System Control: SoC Control, PMU (Power Management Unit), GPIO (General-Purpose Input/Output).
- Timing and Synchronization: RTC (Real-Time Clock), Timer, Watchdog.
- Standard Interfaces: SPI (Serial Peripheral Interface), UART (Universal Asynchronous Receiver-Transmitter), I2S (Inter-IC Sound), I2C (Inter-Integrated Circuit), CAN (Controller Area Network).
- Data and Converters: ADC (Analog-to-Digital Converter), SDIO (Secure Digital Input/Output).
3. Execution and Simulation Environments
Versatility is guaranteed by the ability to run and test the application in three distinct environments, all accessible through a single configuration script that automates the installation and compilation of the entire codebase:
* Hardware Simulation (XCelium): The Cadence XCelium (or similar) simulator is used for Register Transfer Level (RTL) simulation, crucial for accurate validation of hardware and low-level drivers.
* Target Hardware (Micro-Chip): Final execution on the physical blueMacaw microcontroller itself, for real-world validation of timing, power consumption, and electrical interfaces.