Fork of czyzlukasz/svd2cpp with minor fixes for compilation, not maintained.
Go to file
2019-12-02 12:11:43 +01:00
cxxopts@073dd3e645 Added cxxopts 2019-11-14 08:18:00 +01:00
Sample Added error checking in XmlParser, added sample file 2019-11-14 13:38:04 +01:00
Src Fixed overflow in setDeviceInfoAttrib 2019-12-02 11:42:14 +01:00
tinyxml2@ff61650517 Initial commit 2019-11-14 07:36:44 +01:00
.gitignore Updated .gitignore 2019-11-22 10:11:40 +01:00
.gitmodules Added cxxopts 2019-11-14 08:18:00 +01:00
CMakeLists.txt Added support for saving to file, fixed bug with parsing addresses 2019-12-02 10:47:01 +01:00
README.md Update README.md 2019-12-02 12:11:43 +01:00

svd2cpp

Zero-cost abstraction register library generator.

What is svd2cpp?

svd2cpp is a generator that parses .svd files provided by ARM chip vendor. It generates header file that allows for reading and writing to microcontroller's registers with zero overhead.

How to get svd2cpp?

Download source code and compile it. Note that this repo uses submodules thus do not forget to git submodule init and git submodule update after cloning.

OR

Download precompiled parser.

How to use svd2cpp?

That's super easy:

./svd2cpp -i svdFile.svd -o generatedHeader.hpp

How to use generated header?

After including header in your code, you can use all features such as set, reset, read.

Syntax is quite simple and easy to use:

operation<PERIPHERAL::REGISTER::BIT>();

###Examples: Set bit UE(USART enable) in USART1 Control Register 1

set<USART1::CR1::UE>();

Reset bit UE(USART enable) in USART1 Control Register 1

reset<USART1::CR1::UE>();

Read Channel 1 Transfer Complete flag in DMA1 ISR Register

bool transferComplete = read<DMA1::ISR::TCIF1>();

Set Memory address for DMA1 channel 2

set<DMA1::CMAR2::MA>(0xDEADBEEF);