Microprocessor and Microcontroller Tools
I keep an eye on new (and evolving older) tools in hardware and software, and attempt to list them here. I started off using early micro-controller development systems (65xx,68hc11,z80dsp), switched to AVR devices, and later used Espressif esp8266 devices (which typically access high speed peripherals over SPI just like embedded BeagleBone Black boards with their PRUs). I have completed projects using Texas Instruments C6000 devices and attached FPGAs, and have recently started learning about the Xilinx UltraSCALE+ systems.
Teaching
Embedded Systems Workshop (notes are available on request, original work with Atmel AVR architecture switched to Espressif esp8266)
I provided my RMIT University teaching materials for embedded systems in book form - see this search
Final versions of my JCU teaching materials are in the internet web archive
Efficient Coding
Bit Twiddling Hacks is a compilation of C language data manipulation tips with special features such as deterministic execution time, avoidance of lookup tables, minimum run-time, etc. It has been created by Sean Eron Anderson (Stanford), has been verified by Randal Bryant (CMU) and Anderson, and continues to be improved (there is even a Knuth-like bug bounty).
Bit-fields in C highlights how a C struct definition can have integer types with bit count size specified e.g. struct bf_demo { unsigned int x: 9; unsigned int: 0; unsigned int y: 7; } will provide compiler information on size (and some alignment).
Highly recommended sources of training and documentation
Embedded Linux system development course with an agenda (shows time allocation), labs (uses a real Atmel SAMA5D3 board) and slides (includes a good exposé on PREEMPT_RT)
Yocto Project and OpenEmbedded development course (also with agenda, labs and slides)
Development Tools
Wiring and Processing frameworks have led to multi-platform development environments with an education focus:
arduino.cc works with Atmel AVR processors (either with an arduino bootloader or even on bare hardware) and perhaps, more importantly, supports development for the ESP8266 and ESP-32 family of devices (my esp8266 examples);
Shopping: sparkfun electronics, RS Components, Google search for ebay.com.au: arduino;
Getting started:
For all platforms, I suggest the tutorial on Electronics by Hernando Barragán and Casey Reas of processing.org. Please note that the current tutorial omits mention of direct DAC (digital to analogue) converters which are used when attempting to reconstruct an intricate analogue waveform. On the other hand, the description of the slower alternative technique using PWM is fine;
For Arduino, the booklet Arduino in a Nutshell by Jan Borchers runs through some basics and there is the official getting started guide. The Arduino Cheatsheet by Sparkfun is a handy quick reference.
ATMEL RISC-based AVR uP devices have documentation at https://www.microchip.com/design-centers/8-bit/avr-mcus.
Provide the main devices in most Arduino boards.
Elektor magazine have published designs for projects using recent ATMEL devices - see this Google search for Elektor MEGA32.
Dr Pj Radcliffe from RMIT University has developed this MEGA32 based USB-IO device which provides a great way to interface projects to off-the-shelf computers (and can be used standalone too).
Notes on AVR Programmers:
A well documented method of programming a "bare" AVR chip is to wire it to an Arduino board and run a programmer inside the Arduino --> see this tutorial "Arduino as ISP and Arduino Bootloaders";
In-circuit 4-pin connected general AVR device programming can also be performed with the software package avrdude and it can support many hardware setups (noted in its builtin help). It is recommended to read the AVR Tutorial: Starting out with avrdude by Lady Ada and team.
ARM based single board computers and development platforms:
Beagle Boards and Beagle Board . org;
Note the BeagleBoard/ai using theTexas Instruments SoC AM5729 and with BBB compatible P8,P9 headers (at last). The BeagleBoard.org web site notes the 2x C66 DSPs as important for AI and says the board has "4 PRUs and 4 EVEs". However, the TI web site lists the AM5749 as the only Sitara device with EVE capability, so documentation in March 2019 is a little unclear. It will likely have some mix like 2x A15 ARM , 2x C66 DSPs, some IPU (dual core M4), some "EVE" embedded vision acceleration, and USB 3 and gigabit networking.
Note the Beagle-V (2021) which includes a dual RISC-V plus other cores, and builtin bluetooth and WiFi.
EU ARM cloud project;
Some SBC manufacturers using ARM:
Android/linux boards: Corewind Technology, Boardcon Embedded Design
The esp8266 and Raspberry Pi can provide a lot of fun.
Legacy Tools
ASxxxx cross assemblers by Alan R. Baldwin (Kent State University) supports absolute and relocating assembly, relocating linking, and targets a remarkable range of devices: 1802, S2650, SC/MP, MPS430, 61860, 6500, 6800(6802/6808), 6801(6803/HD6303), 6804, 6805, 68HC(S)08, 6809, 68HC11, 68HC(S)12, 68HC16, 740, 8048(8041/8022/8021) 8051, 8085(8080), DS8xCxxx, AVR, EZ80, F2MC8L/FX, GameBoy(Z80), H8/3xx, Cypress PSoC(M8C), PIC, Rabbit 2000/3000, Z8, and Z80(HD64180). Updated: Version 5.30, January 2019. OK, so there hasn't been much demand for assembly code development for the SC/MP uP lately but one must be prepared ...