Add stm32cube framework
I tested it only on F4. Also I haven't tested the rollover feature, because I don't know how to do it without running the code for 50 days.
This looks good to me.
Could you provide some transport layer such as basic serial transport using STM HAL?
Also, could you integrate this into the CI? https://github.com/micro-ROS/micro_ros_platformio/blob/c9c410c9c7b93cca685cd19786978b0589f23ad9/.github/workflows/ci.yml#L17
@mergify backport humble foxy galactic
backport humble foxy galactic
🟠 Waiting for conditions to match
- [ ]
merged[📌 backport requirement]
Also, could you integrate this into the CI?
I would integrate it with CI but I would need some help. For starters, I have a few questions:
- Should I split the
ciproject into 2 projects (for example:ci/arduinoandci/stm32cube) to separate the code for different frameworks? - Which boards should I choose for the CI?
- Should the code be actually functional when flashed to the board or is it enough if it compiles? The stm32cube HAL requires a lot of boilerplate code for setting clocks, peripherals, etc. In my project, I use Stm32CubeMX (through stm32pio) to genarate this code, but I'm not sure how it would work here.
Should I split the ci project into 2 projects (for example: ci/arduino and ci/stm32cube) to separate the code for different frameworks?
Maybe you can add a target here. But if you need to create another folder, it is ok for us.
Which boards should I choose for the CI?
Maybe for initial support, we can add a board that you as a contributor can confirm that works. Just add the needed references in the README.md specifying that this has been tested in X hardware.
Should the code be actually functional when flashed to the board or is it enough if it compiles? The stm32cube HAL requires a lot of boilerplate code for setting clocks, peripherals, etc. In my project, I use Stm32CubeMX (through stm32pio) to generate this code, but I'm not sure how it would work here.
In general, if support for one platform/hardware is added, another user should be able to use it. If your contribution requires further steps to make a basic micro-ROS application works, feel free to add a section in the README.md explaining the dependencies and required steps for making in work.
I added an example project and CI job. I didn't want to include generated code so I added a step in CI job that installs CubeMX and stm32pio which I use to generate the code before running platformio.
The example project works on my custom board. Adding another boards should be fairly easy as it should be only a matter of creating a properly configured .ioc project for the board. I don't have any other boards at hand unfortunately.
@pablogs9 any comments?
@Acuadros95 please review