Skip to content
This repository was archived by the owner on Dec 9, 2018. It is now read-only.

Latest commit

 

History

History
91 lines (69 loc) · 4.31 KB

2017-06-16.md

File metadata and controls

91 lines (69 loc) · 4.31 KB

Weekly status report

From 2017-06-09 to 2017-06-16

Robotic application

I published the code of my wheeled robot on GitHub 🎉. This served as a way of verifying the usefulness and completeness of the HAL traits I proposed as a starting point last week. To complete my application I had to create an API to use the DMA (Direct Memory Access) (*) functionality; this API wasn't part of the original HAL proposal.

(*) The DMA peripheral provides hardware support for asynchronous memory transfers that occur in parallel to the execution of the main program. The DMA works with pretty much other microcontroller peripheral and it's vital to keep the CPU load low: Instead of sending a string byte by byte over a serial interface in a blocking fashion you can start a DMA transfer that will serialize the string in the background and free up the CPU to work on something else. Although very useful the DMA is also very easy to misuse (in C): for instance you could start a DMA transfer to fill some buffer on the stack and then free that buffer while the DMA transfer is still ongoing; the DMA will continue writing to this "freed" memory which if reused by the program would cause UB.

HAL & DMA

The HAL discussion continued this week. I proposed the DMA API I created for my robot for inclusion in the HAL. As the DMA is core to the asynchronous operation of any non-trivial program we are still discussing if the proposed API is flexible enough to support all the common use cases.

Roadmap issue update

This week I updated the "Usage in resource constrained" roadmap issue with the results of the u.r-l.o survey I conducted last month. I also added to the issue links to the different ongoing community projects. As per Niko request I also wrote a few paragraphs about the progress in this exploration area.

Unstable features survey

I also started a survey of unstable features commonly used in embedded programs. With the goal of identifying the main blockers for doing embedded development on stable. I kinda know which features are the main blockers so this is more of a confirmation.

areweembeddedyet

I surveyed all the crates, that I know of, that provide support for a development board with the goal of comparing their level of peripheral (HAL) support and collecting a list of applications built with them. I think that prominently listing the supported hardware along with projects built with Rust and that hardware in a future areweembeddedyet.com site would serve as a great way to get new embedded developers and contributors.

Community highlight

This week highlight is @adamgreig's radar demo! Which can detect someone's breathing at a range of about 6 meters. The application samples the radar's analog signal at a blazing speed of 4 Mbps and then sends the data over an ethernet connection. Yes, this is a microcontroller (single core, 200 MHz max CPU frequency and 200 KB of RAM) with an ethernet connection. This demo uses the cortex-m-quickstart template, the cortex-m crate, a device crate generated using svd2rust and @whitequark's smoltcp crate which is a TCP implementation free of heap allocations for resource constrained systems.

TODO

  • Continue working on the HAL
  • Start a series of blog posts about developing the robotic application
  • Launch an initial version of the areweembeddedyet.com site
  • Finish cleaning the crate that supports the BLE400 development board and announce on u.r-l.o.