GithubHelp home page GithubHelp logo

esp32's Introduction

esp32

Build Status crates.io

A peripheral access crate the ESP32. See the svd2rust repo for more infomation on how to use this crate. Espressif do not provide an SVD for the esp32, so the svd used in this project has been generated from the C header documentation via the idf2svd tool.

Join in on the discussion: https://matrix.to/#/#esp-rs:matrix.org!

Building

Required dependencies:

$ make

Submitting new patches

The base svd file created from idf2svd should not be edited. Instead the svd is manipulated through the svdtools patching tool.

See svd and stm32-rs yaml format for more infomation on the patching format

License

Licensed under either of

at your option.

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.

esp32's People

Contributors

arjanmels avatar aykevl avatar davidkern avatar dreistein avatar jeandudey avatar jessebraham avatar mabezdev avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

esp32's Issues

Remove duplicate peripherals

Many of the generated (in particular the indexed ones) need to be manually derived.

This is achieved in svdpatch here

When the peripherals are copied it leaves behind the base peripheral, we should remove these.

Example:

In https://docs.rs/esp32/0.2.1/esp32/#structs for example, there is I2C0, I2C1 and I2C, the latter being the base peripherals that we derive the other two from. In this instance we should remove I2C.

Split GPIO registers into named bit fields

Would be nice to have a nicer api instead of manually bit shifting, e.g

Replace

gpio_reg_x.write(|w| unsafe { w.bits(0x1 << 0) });

With, or similar

gpio_reg_x.write(|w| w.gpio0().set_bit())

Espressif SVD question

I see that there is an SVD repo in the Espressif org.

There is currently no Esp32 SVD and I am wondering if the initial SVD is going to be auto generated and then manually maintained or is there an alternate mechanism that will be used?

I have compiled an Esp32 SVD (compatible with CMSIS SVD 1.3) using the one in this repository, Esp-IDF 4.4 header files and the latest available Espressif technical reference manual. Svd2rust does not handle all the 1.3 features. I was thinking of preferably updating this SVD, or updating the existing YAML files.

I am wondering if it worth the time and effort if the SVD in this repo is going to be superseded by one from the Espressif/SVD repo?

Test for codegen regression

I seems slight changes to how we use svdtools can silently break our generated code.

We should implment some sort of testing format, such that CI can catch these kind of errors before they get merged.

untrack src/

Removing src/ from git would make PR's easier to review, as thousands of changes are made per generation of the files.

On the other hand removal of the source requires someone to build it to inspect it; would the docs be sufficient?

stm32-rs does it this way, only generating the code on releases or on ci runs.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.