Jump to page: 1 2
Thread overview
SVD_to_D: Generate over 100k lines of highly-optimized microcontroller mmapped-IO code in the blink of an eye
Jul 31, 2017
Mike
Jul 31, 2017
Andrey
Jul 31, 2017
aberba
Aug 01, 2017
Mike
Aug 02, 2017
Mike
Aug 04, 2017
Taylor Hillegeist
Aug 01, 2017
Johannes Pfau
Aug 02, 2017
Mike
Aug 01, 2017
Taylor Hillegeist
Aug 02, 2017
Mike
Aug 02, 2017
Adam D. Ruppe
Aug 05, 2017
WebFreak001
Aug 06, 2017
Mike
July 31, 2017
https://github.com/JinShil/svd_to_d

SVD_to_D is a command-line utility that generates D code from ARM Cortex-M SVD files.

SVD files are XML files that describe, in great detail, the memory layout and characteristics of registers in an ARM Cortex-M microcontroller. See https://github.com/posborne/cmsis-svd/tree/master/data for a curated list of SVD files for many ARM Cortex-M microcontrollers from various silicon vendeors.

From the information in an SVD file, code for accessing the microcontroller's memory-mapped-io registers can be automatically generated, and SVD_to_D does exactly that.

For a large microcontroller like the SM32F7, the amount of code generated can be more than 100k lines.  See an example of generated D code here: https://github.com/JinShil/svd_to_d/tree/master/examples/stm32f7x9

The code generated by SVD_to_D depends on this memory-mapped-IO library: https://github.com/JinShil/memory_mapped_io  That library uses D's CTFE and meta-programming features to generate highly optimized code (for both size and speed) at compile-time with additional features such as type safety and compile-time-enforced mutability.

Enjoy!

Mike
July 31, 2017
On Monday, 31 July 2017 at 08:51:16 UTC, Mike wrote:
> https://github.com/JinShil/svd_to_d
>
> SVD_to_D is a command-line utility that generates D code from ARM Cortex-M SVD files.
>
> [...]


Thanks for your work. Not many people in D community thinking about embedded one
July 31, 2017
On Monday, 31 July 2017 at 08:51:16 UTC, Mike wrote:
> https://github.com/JinShil/svd_to_d
>
> SVD_to_D is a command-line utility that generates D code from ARM Cortex-M SVD files.
>
> [...]

I'm currently not into embedded systems but I hope to see D used for smart robots and IoT someday. And your work paves the way.
August 01, 2017
On Monday, 31 July 2017 at 08:51:16 UTC, Mike wrote:

> The code generated by SVD_to_D depends on this memory-mapped-IO library: https://github.com/JinShil/memory_mapped_io  That library uses D's CTFE and meta-programming features to generate highly optimized code (for both size and speed) at compile-time with additional features such as type safety and compile-time-enforced mutability.

By the way, there are a couple of bugs that are preventing me from perfecting the memory-mapped-IO library.  It'd be great to have them addressed.

https://issues.dlang.org/show_bug.cgi?id=12496
https://issues.dlang.org/show_bug.cgi?id=17684

Thanks,
Mike


August 01, 2017
On 7/31/17 4:51 AM, Mike wrote:
> https://github.com/JinShil/svd_to_d
> 
> SVD_to_D is a command-line utility that generates D code from ARM Cortex-M SVD files.
> 

Mike, I have to say still your talk in 2014 was one of my favorites. One of the things that was so impressive to me was the way you scraped the PDF to generate all the registers automatically. Having worked with STM chips (not ARM, but really basic 8-bit versions), I can definitely appreciate all the work this saves.

This seems like a natural extension, so awesome!

-Steve
August 01, 2017
Am Mon, 31 Jul 2017 08:51:16 +0000
schrieb Mike <none@none.com>:

> https://github.com/JinShil/svd_to_d
> 
> SVD_to_D is a command-line utility that generates D code from ARM Cortex-M SVD files.
> 
> SVD files are XML files that describe, in great detail, the memory layout and characteristics of registers in an ARM Cortex-M microcontroller. See https://github.com/posborne/cmsis-svd/tree/master/data for a curated list of SVD files for many ARM Cortex-M microcontrollers from various silicon vendeors.
> 
>  From the information in an SVD file, code for accessing the
> microcontroller's memory-mapped-io registers can be automatically
> generated, and SVD_to_D does exactly that.

Nice work! SVD seems to be an ARM standard / initiative? I wish there was something similar for MSP/AVR/PIC controllers.


-- Johannes

August 01, 2017
On Monday, 31 July 2017 at 08:51:16 UTC, Mike wrote:
> https://github.com/JinShil/svd_to_d
>
> SVD_to_D is a command-line utility that generates D code from ARM Cortex-M SVD files.
>
> [...]

Reminds me of something I put together a while ago.
https://github.com/taylorh140/SVD_TO_D
But this looks much nicer, nice work!
August 02, 2017
On Tuesday, 1 August 2017 at 14:52:51 UTC, Steven Schveighoffer wrote:

> Mike, I have to say still your talk in 2014 was one of my favorites. One of the things that was so impressive to me was the way you scraped the PDF to generate all the registers automatically. Having worked with STM chips (not ARM, but really basic 8-bit versions), I can definitely appreciate all the work this saves.

I'm not sure my work is worthy of such kind words, but thank you.

The PDF screen utility is here: https://github.com/JinShil/stm32_datasheet_to_d.  I'm not sure if it still compiles and works, but I might need to update it someday.

It generates much better code and more complete documentation than svd_to_d.  Most silicon vendors don't appear to invest much into their SVD files, so the SVD files are often incomplete and lacking the documentation that makes "good code + a good IDE = a substitute for the datasheet".

If I were creating a professional product, I'd probably prefer scraping the PDF over using the SVD files, or maybe some way to merge the two.

Mike
August 02, 2017
On Tuesday, 1 August 2017 at 19:04:44 UTC, Johannes Pfau wrote:

> SVD seems to be an ARM standard / initiative?

Yeah, ARM appears to maintain the XML schema, but the SVD files are usually created and distributed by the silicon vendors, in varying levels of quality, unfortunately.

Mike
August 02, 2017
On Tuesday, 1 August 2017 at 20:11:13 UTC, Taylor Hillegeist wrote:

> Reminds me of something I put together a while ago.
> https://github.com/taylorh140/SVD_TO_D
> But this looks much nicer, nice work!

ha ha! Even the pattern used in our code is similar.  I swear I never saw it before.

Looking at your code though, I probably should have used Adam's dom.d too; std.xml was weird to say the least.

Mike
« First   ‹ Prev
1 2