elfloader - ARMv7M ELF loader

  •        150

The goal of this project is provide a loader for ELF file format for ARMv7-M (thumb-2) architecture (Aka Cortex-M, Cortex-R in Thumb2 mode) over bare-metal or RTOS enviroment. This loader not required MMU or special OS support (only aligned memory alloc) and run with minimun memory overhead (only required parts of files is loaded in memory).

https://github.com/martinribelotta/elfloader

Tags
Implementation
License
Platform

   




Related Projects

libopencm3 - Open Source ARM cortex m microcontroller library

  •    C

The libopencm3 project aims to create an open-source firmware library for various ARM Cortex-M microcontrollers. The library is written completely from scratch based on the vendor datasheets, programming manuals, and application notes. The code is meant to be used with a GCC toolchain for ARM (arm-elf or arm-none-eabi), flashing of the code to a microcontroller can be done using the OpenOCD ARM JTAG software.

QP Active Object (Actor) Frameworks

  •    C

Event-driven, RTOS-like, active object frameworks for microcontrollers

raspberrypi - Raspberry Pi ARM based bare metal examples

  •    Assembly

Raspberry Pi ARM based bare metal examples

k8s-on-raspbian - Kubernetes on Raspbian (Raspberry Pi)

  •    Shell

This guide is part of a larger blog post: Build your own bare-metal ARM cluster. Once you're up and running please share your clusters on Twitter with @alexellisuk.

rt-thread - RT-Thread is an open source IoT operating system from China.

  •    C

RT-Thread is an open source IoT operating system from China, which has strong scalability: from a tiny kernel running on a tiny core, for example ARM Cortex-M0, or Cortex-M3/4/7, to a rich feature system running on MIPS32, ARM Cortex-A8, ARM Cortex-A9 DualCore etc. The device driver is more like a driver framework, UART, IIC, SPI, SDIO, USB device/host, EMAC, MTD NAND etc. The developer can easily add low level driver and board configuration, then combined with the upper framework, he/she can use lots of features.


arm-eabi-toolchain - Makefile & supporting patches/scripts to build a bare metal ARM EABI toolchain.

  •    Makefile

This toolchain builder builds a GCC and Newlib-based ARM EABI toolchain using the Sourcery CodeBench Lite sources. This Makefile was originally created to allow building a validated GCC release on Mac OS X, as CodeBench Lite / G++ Lite were only provided for Windows and Linux, but this build also includes some optimizations for Newlib that provide smaller binaries. NOTE: Mentor have indicated that there won't be future ARM EABI releases of the free Lite edition of CodeBench, so the 2014.05 release may be the last. You may also be able to use a modified version of this makefile with the sources Mentor provides with the Professional version of CodeBench (which they plan to continue supporting). If future source releases are made available, this Makefile will be updated for them. If not, we may start to build custom versions of other GCC/Newlib toolchain sources.

exodus - Painless relocation of Linux binaries–and all of their dependencies–without containers.

  •    Python

Exodus is a tool that makes it easy to successfully relocate Linux ELF binaries from one system to another. This is useful in situations where you don't have root access on a machine or where a package simply isn't available for a given Linux distribution. For example, CentOS 6.X and Amazon Linux don't have packages for Google Chrome or aria2. Server-oriented distributions tend to have more limited and outdated packages than desktop distributions, so it's fairly common that one might have a piece of software installed on their laptop that they can't easily install on a remote machine. With exodus, transferring a piece of software that's working on one computer to another is as simple as this.

summon-arm-toolchain

  •    Shell

This project is not under active development any more. Consider using https://launchpad.net/gcc-arm-embedded instead! A very simple build script for bare metal arm toolchain. NO LINUX!

arm-tutorial-rpi - Raspberry-Pi Bare Metal Tutorial

  •    C

You can build on linux, windows, or MAC - all you need is the arm-none-eabi toolchain. For all platforms, you can get the required toolchain used in this tutorial from the GCC-ARM-embedded project - Most OS distributions now have at least the 4.8 toolchain, however the following will fix problems with using the 4.9 toolchain.

arm-trusted-firmware - Trusted Firmware-A

  •    C

Where possible, the code is designed for reuse or porting to other Armv7-A and Armv8-A model and hardware platforms. Arm will continue development in collaboration with interested parties to provide a full reference implementation of Secure Monitor code and Arm standards to the benefit of all developers working with Armv7-A and Armv8-A TrustZone technology.

x86-assembly-cheat - x86 userland minimal examples tutorial

  •    Assembly

x86 userland minimal examples tutorial. Hundreds of runnable asserts. IO done with libc, so OS portable in theory. Tested in Ubuntu 14.04. Containers (ELF), linking, calling conventions. System land cheat at: https://github.com/cirosantilli/x86-bare-metal-examples

razor-server - Razor is next generation provisioning software that handles bare metal hardware and virtual server provisioning

  •    Ruby

Razor is an advanced provisioning application which can deploy both bare-metal and virtual systems. It's aimed at solving the problem of how to bring new metal into a state where your existing DevOps/configuration management workflows can take it over.Newly added machines in a Razor deployment will PXE-boot from a special Razor Microkernel image, then check in, provide Razor with inventory information, and wait for further instructions. Razor will consult user-created policy rules to choose which tasks to apply to a new node, which will begin to follow the task directions, giving feedback to Razor as it completes various steps. Tasks can include steps for handoff to a DevOps system such as Puppet or to any other system capable of controlling the node (such as a vCenter server taking possession of ESX systems).

Moby Project - An open framework to assemble specialized container systems

  •    Go

Moby is an open-source project created by Docker to advance the software containerization movement. It provides a “Lego set” of dozens of components, the framework for assembling them into custom container-based systems, and a place for all container enthusiasts to experiment and exchange ideas.

ferret - Ferret is a free software lisp implementation for real time embedded control systems.

  •    Makefile

Ferret is a free software lisp implementation designed to be used in real time embedded control systems. Ferret lisp compiles down to self contained C++11. Generated code is portable between any Operating System and/or Microcontroller that supports a C++11 compliant compiler. It has been verified to run on architectures ranging from embedded systems with as little as 2KB of RAM to general purpose computers running Linux/Mac OS X/Windows. A program that sums the first 5 positive numbers.

zinc - The bare metal stack for rust

  •    Rust

Zinc is an experimental attempt to write an ARM stack that would be similar to CMSIS or mbed in capabilities but would show rust's best safety features applied to embedded development. Zinc is mostly assembly-free and completely C-free at the moment. One of the goals of zinc is to figure out, how much of the usual RTOS stack is it possible to write in rust in a safe manner, while keeping the resource usage profile low enough (comparable to C/C++ code).

infrakit - A toolkit for creating and managing declarative, self-healing infrastructure.

  •    Go

InfraKit is a toolkit for infrastructure orchestration. With an emphasis on immutable infrastructure, it breaks down infrastructure automation and management processes into small, pluggable components. These components work together to actively ensure the infrastructure state matches the user's specifications. InfraKit therefore provides infrastructure support for higher-level container orchestration systems and can make your infrastructure self-managing and self-healing. In this video, InfraKit was used to build a custom linux operating system (based on linuxkit). We then deployed a cluster of virtual machine instances on a local Mac laptop using the Mac Xhyve hypervisor (HyperKit). A cluster of 3 servers booted up in seconds. Later, after the custom OS image has been updated with a new public key, InfraKit detects the change and orchestrates a rolling update of the nodes. We then deploy the same OS image to a bare-metal ARM server running on Packet.net, where the server uses custom ipxe boot directly from the localhost. It demonstrates some of the key concepts and components in InfraKit and shows how InfraKit can be used to implement an integrated workflow from custom OS image creation to cluster deployment and Day N management. The entire demo is published as a playbook, and you can create your own playbooks too.

deploykit - A toolkit for creating and managing declarative, self-healing infrastructure.

  •    Go

InfraKit is a toolkit for infrastructure orchestration. With an emphasis on immutable infrastructure, it breaks down infrastructure automation and management processes into small, pluggable components. These components work together to actively ensure the infrastructure state matches the user's specifications. InfraKit therefore provides infrastructure support for higher-level container orchestration systems and can make your infrastructure self-managing and self-healing. In this video, InfraKit was used to build a custom linux operating system (based on linuxkit). We then deployed a cluster of virtual machine instances on a local Mac laptop using the Mac Xhyve hypervisor (HyperKit). A cluster of 3 servers booted up in seconds. Later, after the custom OS image has been updated with a new public key, InfraKit detects the change and orchestrates a rolling update of the nodes. We then deploy the same OS image to a bare-metal ARM server running on Packet.net, where the server uses custom ipxe boot directly from the localhost. It demonstrates some of the key concepts and components in InfraKit and shows how InfraKit can be used to implement an integrated workflow from custom OS image creation to cluster deployment and Day N management. The entire demo is published as a playbook, and you can create your own playbooks too.

libmaple - C and C++ library for STM32 ARM Cortex-M3 development boards.

  •    C

C and C++ library for STM32 ARM Cortex-M3 development boards.

libmaple - [INACTIVE] C and C++ library for STM32 ARM Cortex-M3 development boards.

  •    C

[INACTIVE] C and C++ library for STM32 ARM Cortex-M3 development boards.

copper - [WIP] Your guide to programming ARM Cortex-M microcontrollers with Rust

  •    Rust

This document is currently OUTDATED, and I don't have to update in the short term. In the meantime, you can check out this blog post which covers the easy, high level way of writing Rust application for any ARM Cortex-M microcontroller. at your option.