#svd #stm32 #linker-script #micro-controller #vector-table

app svd-vector-gen

A tool to process Microcontroller SVD files(e.g. STM32) and generate vector tables and linker scripts.

5 releases

new 0.1.4 Dec 21, 2024
0.1.3 Dec 19, 2024
0.1.2 Dec 19, 2024
0.1.1 Dec 19, 2024
0.1.0 Dec 19, 2024

#92 in Embedded development

Download history 234/week @ 2024-12-14

234 downloads per month

MIT license

180KB
341 lines

SVD Vector and Linker Script Generator

This tool scans the current directory for ARM Cortex-M compatible SVD files and automatically generates:

  1. Vector Table File (vector_<mcu>.txt):

    • Contains the vector table for the specified microcontroller with system exceptions and interrupt handlers.
    • Format: A static VECTOR_TABLE Rust array with Option<unsafe fn()> entries for each vector, including system handlers and IRQs.
  2. Device-Specific Linker Script (device_<mcu>.x):

    • Defines PROVIDE entries for all interrupts as:
      PROVIDE(<IRQ_NAME> = default_handler);
      
      This facilitates linking during firmware development.

Usage

  1. Install the tool using Cargo:

    cargo install svd-vector-gen
    
    
    
  2. Run the tool:

    • Ensure that the directory contains valid SVD files.
    • For STM32 microcontrollers, you can obtain SVD files by installing STM32CubeCLT.
    svd-vector-gen
    
    

Example

For STM32F303X.svd:

  1. Generated Files:
    • vector_STM32F303X.txt: Contains the vector table.
    • device_STM32F303X.x: Contains the linker script:
      PROVIDE(WWDG = default_handler);
      PROVIDE(PVD = default_handler);
      PROVIDE(TAMPER = default_handler);
      ...
      

Dependencies

~3–4.5MB
~83K SLoC