silica

Version, currently master branch1 version
  • master branchlatestOct 24, 2021

github.com/E63T/silica

SVD-to-C++ generator

3 stars
0 dependents
License: MIT

Installation

# Add this to your shard.yml
dependencies:
  silica:
    github: E63T/silica
    branch: master

master is a branch, not a release, so this tracks it rather than pinning a version.

Then run:

shards install

shard.yml

Crystal
1.1.1
License
MIT
Author
unn4m3d
Target
  • silica from src/silica.cr

Dependencies

Runtime Dependencies

  • version*github: unn4m3d/version
  • silica_core*github: unn4m3d/silica_core, branch: master
  • nya_serializable*github: nya-engine/nya_serializable, branch: master

README

silica

:warning: EXPERIMENTAL C++ hardware definition header generator using SVD files

Also contains some useful headers for embedded development

Usage

:warning: This section is incomplete

Create a file named silica.json inside a desired output folder (in this example, the output folder is example). Example follows.

{
    "default_env" : "stm32f0x2",
    "envs" : {
        "stm32f0x2" : {
            "silica_version" : "~> 0.1.0",
            "input_file" : "STM32F0x2.svd",
            "features" : {
                "copy_includes" : false
            }
        }
    }
}

Then

    crystal run ./src/silica.cr -- example

Development

TODO:

  • [x] Field support
    • [x] Field value enumerations
    • [x] Field masks
    • [x] Field offsets
    • [x] Field widths
    • [x] Common values within a register (:warning: WIP)
  • [ ] Helper methods
  • [ ] Full std::hardware TR implementation
  • [x] Doc generation (:warning: WIP)
  • [ ] Custom IRQ handlers
  • [x] Configuration options (:warning: WIP)
    • [x] Feature support
      • [x] Optionally turn off field widths, masks, offsets and common values
      • [x] Docs
      • [ ] Copy includes
  • [ ] Examples
  • [ ] Tests
  • [ ] Proper logging
  • [ ] Fix C++ warnings
  • [ ] Remove unnecessary XPaths
  • [ ] Exception handling
  • [ ] Peripheral groups support

Contributing

  1. Fork it (https://github.com/unn4m3d/silica/fork)
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create a new Pull Request

Contributors