Embedded Programming


architectures
   Harvard, von Neumann
   RISC, CISC
   microprocessor, microcontroller
   FPGA, CPLD
   ALA

memory
   registers
   SRAM
   DRAM
   EEPROM
   FLASH
   fuse

peripherals
   A/D
   comparator
   D/A
   timer/counter/PWM
   USART
   USB
   ...

word size
   8
   16
   32
   64

families
   8051
   PIC
   MSP
   AVR
   ARM
   STM32
   PSoC, xCORE, Propeller

vendors
   Octopart
   Digi-Key
   Mouser
   Newark
   Farnell
   SparkFun

AVR processors
   ATtiny10
   ATtiny45V
   ATtiny44A
   ATmega328P
   ATmega16U2
   ATxmega16E5
   ATxmega16C4

tutorials

data sheets

packages
   DIP
   SOT
   SOIC
   TSSOP
   TQFP
   LQFP
   MLF, CSP, BGA

clocks
   RC (10%, 1% calibrated)
   ceramic (0.5%)
   quartz (50 ppm)

in-system development
   ISP (header, pads, clip)
   bootloader
   JTAG, debugWire, PDI
   ICE

programmers
   ISP
      AVRISP
      FabISP
      avrdude
   JTAG, debugWIRE, PDI
      Atmel-ICE

assembly language
   hex file
   instruction set, opcodes
   mnemonics, directives, expressions
   avr-as
   gavrasm

C
   GCC
   AVR Libc
      modules types math
   avr-libc, binutils-avr, gcc-avr
   WinAVR
   CrossPack
   Atmel Studio

host communication
   RS232
      bit timing
   VT100/ANSI/ISO/ECMA terminal
      Kermit
      Minicom
      term.py
   USB
      software
      hardware
   FTDI
      cable
      libFTDI
      echo hello-world
         hello.ftdi.44.cad board components traces interior
         programming
         hello.ftdi.44.echo.c hello.ftdi.44.echo.c.make
         hello.ftdi.44.echo.interrupt.c hello.ftdi.44.echo.interrupt.c.make
         hello.ftdi.44.echo.asm hello.ftdi.44.echo.asm.make

IDE
   Atmel Studio
   Eclipse AVR
   Firefly
   Scratch
   Modkit

boards
   Arduino
      board + C libraries + IDE + bootloader
      Fabkit Fabio
      hello.arduino.328P.cad board components traces interior
         Blink.pde boards.txt programming
         hello.arduino.328P.blink.c hello.arduino.328P.blink.make programming
      ATtiny
   PSoC
   Maple
   Tessel
   BeagleBone
   PandaBoard
   Rasberry Pi

Interpreters
   Python
   BASIC
   FORTH
   AVRSH
   JavaScript

debugging
   "printf"
   Atmel Studio
   gdb, ddd, Insight

STM32
   processor
      STM32F3 data sheet
   toolchain
      gcc-arm-none-eabi
         sudo add-apt-repository ppa:terry.guo/gcc-arm-embedded
      OpenOCD
         http://sourceforge.net/projects/openocd/files/latest/download?source=files
      QStlink2
         sudo add-apt-repository ppa:mobyfab/qstlink2
      stlink
         git clone https://github.com/texane/stlink.git
   programmer
      ST-Link V2
   software
      ST library STMCube
   board
      STM32F3Discovery software
         blink.zip programming
      Nucleo

assignment
   read a microcontroller data sheet
   program your board to do something, with as many different programming languages
      and programming environments as possible