Table of Contents

Quality should contain the notion of value, not just efficiency. Russell L. Ackoff.

Whether you think you can, or you think you can't–you're right. Henry Ford.

Inventing on principle, Bret Victor

ARM

STM32

Beaglebone Black

Raspberry PI

Teensy or 1bitsy (using the Black Magic Probe to get rid of OpenOCD)

XMC

other boards

Building bare metal and linux applications

Popular ARM variants are:

ARM stack traces and supervisor mode.

Debugging ARM hard faults

https://launchpad.net/gcc-arm-embedded

ELF 101, a Linux executable workthrough (ARM)

ARM programming and TrustZone

ARM assembly for embedded applications

Quick reference handouts

ARM procedure call standard

ARM Cortex-M4 Technical Reference Manual

ARM Cortex-M4 instruction timing

ARMv7-M Architecture Reference Manual

ARM Cortex-M4 Devices Generic User Guide

Embedded

Debugging hardware

https://interrupt.memfault.com/blog/asserts-in-embedded-systems

Libraries

MCUs by industry

Saving flash space

Security

Real time data visualization

Embedded Testing

Embedded SW principles

Texas course

CI for embedded systems

The amazing $1 microcontroller

Embedded rules of thumb

Embedded Artistry

Top 5 embedded problem areas

https://embeddedartistry.com/blog/2019/4/16/exploring-startup-implementations-newlib-arm

15 steps to better embedded SW

Jay Carlson's embedded linux article

Microchip application notes on using peripherals under Linux

https://blog.thea.codes/the-most-thoroughly-commented-linker-script

Board HW Project links Toolchain version / Build environment SW Components
Infineon XMC4800 Relax XMC4800-F144 @144MHz
2MB Flash
352KB RAM
Segger J-Link
Board
MCU_DS
MCU_RM
Docker Ubuntu 18.04 with:
gcc-arm-none-eabi-8-2018-q4-major (developer.arm.com)
XMCLib 2.1.22
JLink V634g
ST Nucleo F429ZI STM32F429ZIT6 @180MHz
2MB Flash
256+4KB SRAM
On-board ST-LINK/V2-1
Black Magic Probe (and incl. UART)
Board
MCU_DS
MCU_RM
F4_PM
gcc-arm-none-eabi-9-2019-q4-major

gcc-arm-none-eabi-9-2019-q4-major

RTEMS toolchain
libopencm3

CubeMX (168MHz)
Flash and debug with gdb


RTEMS
Pyboard D SF6W STM32F767VIT @216MHz
2MB Flash
2MB QSPI Flash
512KB RAM
Board
DIP68
MCU_DS
MCU_RM
F7_PM
(FW obtained from MicroPython ) MicroPython 1.14-83
Flash with dfu-util
ST STM32MP157A-DK1 STM32MP157 (2A7 @650MHz + M4 @209MHz)
4-Gbit DDR3L
On-board ST-LINK/V2-1
Board
MCU_DS
MCU_RM
Docker Ubuntu 18.04 with:
yocto thud
Real-time (RT-PREEMPT)
ST B-G474E-DPOW1 STM32G474RET6 @180MHz
512KB Flash
128KB SRAM
On-board ST-LINK/V3E
Segger J-Link
Board
MCU_DS
MCU_RM
M4_PM
gcc-arm-none-eabi-9-2019-q4-major

gcc-arm-none-eabi-9-2019-q4-major

RTEMS toolchain
libopencm3

CubeMX (168MHz)
Flash and debug with gdb


RTEMS
TI Hercules 570LC43 TMS570LC4357 (2R5F @300MHz)
4MB Flash
512KB RAM
On-board XDS100
Board
MCU_DS
MCU_RM
CCS 10.2.0 HALCoGen 04.07.01
Flash and debug with CCS
Trenz TE0802 Zynq Ultrascale+ ZU2CG (2R5F @600MHz, 2A53 @1.5GHz)
32MB SPI Flash
1GB LPDDR4 RAM
On-board USB JTAG
Board
Board_Res
Board_TRM
MCU_DS
MCU_RM
Vitis/Vivado 2019.2

RTEMS toolchain
Vitis/Vivado 2019.2

RTEMS

RTOS

Zephyr

http://www.keil.com/rl-arm/rtx_rtosadv.asp

Mynewt

RTEMS, very mature, high driver availability

FreeRTOS, very low resources

ThreadX, resource bound, deeply embedded

Mbed OS

Linux/Unix

Stuff related to Embedded Linux

Cross-compiling

Ubuntu

Linux kernel

Development tools

Driver programming

device tree

performance

Testing

Realtime

The Linux Cross Reference

http://ltsi.linuxfoundation.org/what-is-ltsi

Linux driver template

https://marcin.juszkiewicz.com.pl/download/tables/syscalls.html

BSD

Some FreeBSD tips.

Programming

10 lessons from a sw engineer and freelancer

What not to do as a programmer

Nasa's ten commandments of programming

SW design lessons learned

C

Python

Software tools

Build tools

Psychology

Autotest is an interesting testing framework that can be used to test big systems or e.g. to validate hardware.

http://throwtheswitch.org/white-papers/ceedling-intro.html

http://www.drdobbs.com/cpp/a-lightweight-logger-for-c/240147505

http://ideone.com/KbienB

http://nathanleclaire.com/blog/2013/10/27/5-cool-unix-hacks-for-fun-and-productivity/

https://pybit.es/career-development-programmers.html

Internet of Things

GPRS modems

WSN hardware

Data acquisition hardware

Standards

We can use sensor networks specific OSs like TinyOS or Contiki (see also the wiki), and standard RTOSs like FreeRTOS or uCOS-III. In systems with enough HW resources, embedded Linux can also be used.

Machine Learning

ML libraries

SciPy ecosystem

python visualization

statsmodels

time series

ML courses

Bayesian statistics presentation

http://svds.com/tensorflow-image-recognition-raspberry-pi/

http://partiallyderivative.com/podcast/2017/03/28/learning-machine-learning

https://towardsdatascience.com/how-to-build-a-complex-reporting-dashboard-using-dash-and-plotl-4f4257c18a7f

https://github.com/jonnor/embeddedml/

Projects

Working on

Sensors

Basic lab bench equipment

http://dangerousprototypes.com/docs/Bus_Pirate

http://www.watterott.com/en/Bus-Pirate

https://interrupt.memfault.com/blog/four-favorite-firmware-debug-tools

https://www.embeddedrelated.com/showarticle/1473.php

Other

https://github.com/papers-we-love/papers-we-love

Single board computers and modules

LCD displays intefacing

WiFi modules interfacing

Shops

PCB manufacturers

Porting from MIPS to ARM

Coding for Neon. Read also this post.

Boot sequence on an ARM-based system

http://www.kunen.org/uC/beagle/omap_dmtimer.html

http://www.bravegnu.org/gnu-eprog/


http://www.freertos.org/embeddedtcp.html

http://stackoverflow.com/questions/1160362/experiences-with-free-embedded-tcp-ip-stacks

http://lwip.wikia.com/wiki/Porting_For_Bare_Metal

http://mbed.org/forum/mbed/topic/2073/

http://andybrown.me.uk/wk/2012/09/01/ethernet-phy-stm32f107/

I2C STM32 example


http://en.wikipedia.org/wiki/Wi-Fi_Direct

http://www.arm.com/community/partners/display_company/rw/company/celestial-semiconductor-ltd-now-a-part-of-cavium-networks/

Coremark benchmark, intending to become an industry standard, replacing the aging Dhrystone benchmark. See http://en.wikipedia.org/wiki/EEMBC.

scratchpad