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

Latest commit

 

History

History
73 lines (49 loc) · 2.88 KB

2017-07-29.md

File metadata and controls

73 lines (49 loc) · 2.88 KB

Weekly status report

From 2017-07-22 to 2017-07-28

RTFMv2

The version v0.2.0 of the Real Time for the Masses framework, cortex-m-rtfm, has (finally) been released. The most relevant changes since v0.1.x are:

  • v2 is simpler. v1 used a bunch of tokens -- ceiling tokens, priority tokens, preemption threshold tokens and task tokens -- for memory safety; this made the API rather boilerplatery. Now most of the tokens as well as the boilerplate are gone. Porting applications from v1 to v2 should see a reduction of about 10 to 30% in lines of code.

  • v2 has even less overhead. A long standing issue with the borrow checker that required using Cell or RefCell as a workaround has been fixed. Making the Resource abstraction truly zero cost.

  • v2 fully supports Cortex-M0(+) devices. Now all the Cortex-M devices have the same level of support in cortex-m-rtfm. Not only that but there's also a port of this version of RTFM for the MSP430 architecture -- with the exact same API.

More details can be found in the accompanying blog post.

The release took (way) longer than I expected (as usual). However, writing the blog post in parallel to the documentation for the v0.2.0 release made me realize some areas where things could be simplified further -- "This seems harder to explain than it should be" or "This setting seems to be repeated a lot of times but doesn't really increase readability". These last minute changes led to making the app! macro even less boilerplater-y by providing sensible defaults, reducing the overhead of global critical sections (by half) and sharing of even more code between the Cortex-M and the MSP430 ports.

Community highlight

This week highlight is bobbin.

"Bobbin is an open-source, cross-platform, vendor-independent development system for embedded programming in the Rust programming language. It integrates with existing proprietary and open-source tools and aims to provide comprehensive Rust libraries for MCUs, boards, and peripheral devices, along with clear documentation including practical examples."

It's always great to see how other people approach the same problem you are trying to solve. Lots of chances for "cross pollination". It would be great to see bobbin integrating with existing Rust concurrency frameworks like RTFM.

TODO

  • Blog post about Rust on MSP430

  • Continue working on the HAL.

  • Launch an initial version of the areweembeddedyet.com site.

  • Start a series of blog posts about developing the robotic application.

  • Finish cleaning the crate that supports the BLE400 development board and announce on u.r-l.o.