memsolve

Memsolve is a crate to generate ROM Memory Layouts for microcontrollers and other embedded devices.
Microcontrollers have limited flash (ROM) available, separated into pages. This flash can used
for multiple purposes, a bootloader, data storage, multiple applications. memsolve allows for
describing the different requirements of these sections, whether thats a set number of pages or
a minimal size, and uses a linear solver to resolve the layout into addresses for the flash
layout. This layout can then be used as basis for the memory.x file in projects such as
Embassy or [Ariel OS][__link1]
Overview
This section gives a brief overview of the primary types in this crate:
- [
Memory][__link2] is the primary object and represents the memory layout. - [
Chip][__link3] describes the target of the layout, including the total size of the flash and the page size - [
Section][__link4] describes the requirements on a single section.
Example: simple layout
This example shows how to generate a layout for a microcontroller where one section will contain the application and another contains some configuration. The application section must be as large as possible within the flash and the configuration section requires 3 pages, but no specific minimum size.
use ;
use ;
// Our example chip has 64 KiB Flash with 2048 byte pages
let chip = new?;
let mut memory = new;
// Add the application section
memory.add_section;
// Add the configuration storage section
memory.add_section;
// This layout is fully resolved
let layout = memory.resolve_layout?;
assert_eq!;
assert_eq!;
assert_eq!;
assert_eq!;
[__link1]: Ariel OS [__link2]: https://docs.rs/memsolve/0.1.0/memsolve/struct.Memory.html [__link3]: https://docs.rs/memsolve/0.1.0/memsolve/?search=chip::Chip [__link4]: https://docs.rs/memsolve/0.1.0/memsolve/?search=section::Section