Required (and Recommended) Software Tools
Definitely Required Tools
In order to develop the MnemOS Kernel or Userspace applications, you will DEFINITELY need the following tools installed:
- The Rust Compiler (at least v1.59.0, though this may change in the future)
- See the Rust installation instructions for how to do this
- The
thumbv7em-none-eabihf
target, needed for compiling for the nRF52840- If you have
rustup
, this can be accomplished withrustup target add thumbv7em-none-eabihf
- If you have
- The
probe-run
tool, used for flashing and debugging the kernel- See the Probe Run Documentation for installation instructions
- A version of the
objcopy
binutil, used for preparing MnemOS applications. You will need a version that supports Cortex-M4F applications. This can typically be obtained through one of the following ways:- The cargo-binutils package
- The Arm GNU Toolchain, either from Arm's main website, or your system's package manager
- A "multiarch" build of the GNU toolchain, typically provided by your system's package manager
- An installation of
git
, or a tool that is compatible withgit
.
You'll also need to check out the source repository of the MnemOS project.
git clone https://github.com/jamesmunns/pellegrino
Practically Required Tools
The following tools are generally required, but are a bit more flexible in terms of the specific tool you use.
- You will need a tool that allows you to use a TCP port as a terminal interface. On my Linux PC:
- I use
stty
(to configure the terminal not to echo characters or buffer lines - this is probably installed on a typical linux system) - I use the ncat tool to provide the TCP-port to terminal adapter
- I am unsure what tools will work on OSX/Windows, but I am happy to help you figure it out! Feel free to open an issue on the repo, or reach out to me via Twitter or Matrix.
- I use
Useful (But Not Required) Tools
Other tools I find helpful for development include:
- Other parts of the Arm GNU toolchain, including:
[arm-none-eabi]-nm
, for viewing compiled code component sizes and locations in memory- The Cargo Bloat tool, for similar information
[arm-none-eabi]-gdb
, in case step-through debugging is necessary
- A GDB Server, such as
JLinkGDBServer
orOpenOCD
, for use with[arm-none-eabi]-gdb
.