• Stars
    star
    608
  • Rank 73,735 (Top 2 %)
  • Language Makefile
  • License
    Creative Commons ...
  • Created almost 8 years ago
  • Updated 3 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Embedded Artistry Templates, Documents, and Source Code

Embedded Artistry Public Resources

Contains templates, documents, and source code examples referenced on https://embeddedartistry.com.

Table of Contents

  1. Requirements
    1. git-lfs
    2. meson
  2. Structure
  3. Building
  4. Tests

Requirements

This repository uses submodules. You can clone the repository recursively to automatically setup submodules:

$ git clone https://github.com/embeddedartistry/embedded-resources.git --recursive

You can also initialize submodules after cloning:

$ git submodule update --init --recursive

git-lfs

This repository requires git-lfs. If you do not have this installed, please visit https://git-lfs.github.com

If you cloned this repository before installing git-lfs, please run git lfs pull. Otherwise clone will automatically perform a git lfs pull.

meson

This repository builds with meson, which requires Python 3 and Ninja.

On Ubuntu these can be easily installed with the following command:

$ sudo apt-get install python3 python3-pip ninja-build

For OSX, you can use brew:

$ brew install python3 ninja

The best way to get Meson is through pip:

$ pip3 install meson

Structure

  • build/
    • Common build scripts and definitions
  • docs
    • Open-source project templates and reference documentation
  • examples/
    • c/
      • C examples for the Embedded Artistry website
    • cpp/
      • C++ examples for the Embedded Artistry website
    • libc/
      • Example libc implementations
    • libcpp/
      • Example libcpp implementations
  • interview/
    • Example interview question implementations
  • manufacturing/
    • Documents & templates that are useful for the manufacturing side of the embedded world.

Building

You can run make from the top level to build all examples. Output will be placed in a folder called buildresults/ at the top level.

You can also use the proper meson syntax:

$ meson buildresults
$ cd buildresults
$ ninja

Targets can be built individually by using the ninja interface in the buildresults/ directory.

$ cd buildresults
$ ninja interview/bad_c

To clean the builds, run make clean from the project root or ninja clean in the buildresults/ directory.

Binaries will be stored under the buildresults/ folder at the same hierarchical level as in the source tree.For example, the bad_c interview demo application will be in buildresults/interview/.

Tests

This repository now includes tests. Tests can be run with make test, which will build the project, run the tests, and give you the summary report from Meson's test runner. In this scenario, test results are stored in XML files found at buildresults/test

To see human readable output, build the project as you normally would (make or make test), and then issue this command:

$ ninja -C buildresults/ embedded-resources-tests
ninja: Entering directory `buildresults/'
[0/1] Running external command embedde...es-tests (wrapped by meson to set env)
[==========] Running 1 test(s).
[ RUN      ] test_case
[       OK ] test_case
[==========] 1 test(s) run.
[  PASSED  ] 1 test(s).

Further Reading

More Repositories

1

libc

libc targeted for embedded systems usage. Reduced set of functionality (due to embedded nature). Chosen for portability and quick bringup.
C
517
star
2

templates

Document templates for open-source projects (README, CONTRIBUTING, GitHub templates)
Groovy
390
star
3

libmemory

Embedded systems memory management library. Implementations for malloc(), free(), and other useful memory management functions
C
216
star
4

arduino-printf

Add printf support to the Arduino SDK
C
91
star
5

libcpp

Embedded Systems C++ Library Support (Currently wraps libcxx)
C++
68
star
6

cmake-project-skeleton

Reusable project skeleton for embedded C & C++ projects using CMake.
Shell
45
star
7

arduino-logger

Flexible logging library for the Arduino SDK, allowing the same logging interface to be used with multiple outputs.
C++
41
star
8

meson-buildsystem

Helper scripts, cross-compilation-files, makefile shims, and other helpful tools for working with Meson
Meson
31
star
9

cmake-buildsystem

Helper scripts, cross-compilation-files, makefile shims, and other helpful tools for working with CMake
CMake
21
star
10

project-skeleton

A C & C++ project skeleton for new Embedded Artistry projects
Meson
21
star
11

cppcheck-rules

A repository of useful custom cppcheck rules
C++
20
star
12

format

Code formatting tools, currently based on clang-format. Self-contained for easy integration to different repositories.
Shell
15
star
13

jenkins-pipeline-lib

Libraries to support Jenkins pipeline builds
Groovy
12
star
14

athena-bootloader

An AVR Arduino bootloader that supports uploads over Ethernet (via TFTP) and Serial.
C++
12
star
15

c-linked-list

Header-only Linked List implementation in C
C
6
star
16

compiler-rt

Wrapper project for llvm compiler-rt, using meson to build and use with the embedded framework
Meson
5
star
17

embedded-logger

A lightweight templated C++ logging system for embedded
4
star
18

embedded-unwind

libunwind for embedded systems
C++
3
star
19

medtronic-pb560

Setup to review and analyze the PB560 Source Code
C
2
star
20

embeddedartistry.github.io

Embedded Artistry GH Pages - Library Documentation
HTML
1
star