Skip to content

Latest commit

 

History

History
70 lines (56 loc) · 1.67 KB

README.md

File metadata and controls

70 lines (56 loc) · 1.67 KB

silica

⚠️ EXPERIMENTAL C++ hardware definition header generator using SVD files

Also contains some useful headers for embedded development

Usage

⚠️ 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:

  • Field support
    • Field value enumerations
    • Field masks
    • Field offsets
    • Field widths
    • Common values within a register (:warning: WIP)
  • Helper methods
  • Full std::hardware TR implementation
  • Doc generation (:warning: WIP)
  • Custom IRQ handlers
  • Configuration options (:warning: WIP)
    • Feature support
      • Optionally turn off field widths, masks, offsets and common values
      • 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