Embedded Systems = Dedicated function computer system that is embedded within a larger mechanical or electrical system.
Types: . Hardware SoC and ASIC based systems . FPGA based systems . Programmable SoC based systems . Microcontroller based Systems . Microprocessor based systems
Microcontroller = Processor + Peripheral modules bundled together in a single package (chip).
Less ICs need to be used to build a complete system Typical needs for microcontroller project: . Microcontroller evaluation board ▪ e.g., CC3200 LaunchPad ($30) . Other Booster Packs (e.g., sensors, Wi-Fi, etc.) . Debug and Programming Probe (e.g., JTAG, ICDI, Jlink, XDS, etc.) . Multimeter . Logic Analyzer . Oscilloscope . Bread Board and Basic Components and ICs (e.g., resistors, capacitors, inductors, transistors (FET and BJT), logic gates, 741 Op Amps, 555 timers, LEDs, Switches, Wires, wire clippers, soldering station, etc. ARM = Advanced RISC Machines (founded in 1990) ARM Cortex-M4is a 32 bit microcontroller
Microcontroller Requirements: . Cost . Speed . Memories (Flash, SRAM, EEPROM) . Operating Environment (temperature, etc.) . Power Consumption . Lifetime . RTOS support . Programming environment and support
Arduino . Atmel AVR microcontrollers (mostly 8 bits but there are 32 bit ARM-based options) Raspberry PI (ARM Cortex-A7) or UDOO (ARM Cortex-A9) . Utilize a microprocessor (therefore the peripherals are integrated on the board – not on the chip).
RISC Harvard architecture speed 32 bit Cheap Larger flash, SRAM, EEPROM given the same cost Options Interrupts for efficient NVIC unit RTOS support Popular
System Peripherals: GPIO, Timers.
Serial Peripherals: UART, I2C, SSI/SPI, CAN, USB, Ethernet.
Analog Peripherals: ADC, Comparator.
Motion Control Peripherals: PWM, QEI
Use C99 compiler (not C89).
Turn off code optimization for testing.
Use Pre-Processor MACROs to make your code more readable (#ifndef, #define, #endif).
Declare all your variables that directly or indirectly deal with hardware as “volatile.”
Split your project into multiple files: mycode.c and mycode.h.