Firmware Development – Course Curriculum
What is Firmware?
What is the Difference between a firmware and software?
Architectures
Von Neumann Architecture
Harvard Architecture
AVR Architecture
PIC Architecture
ARM Architecture
What is RISC and CISC?
Microprocessors and microcontrollers back then and now
Boundaries between microcontrollers and microprocessor back then
New Boundaries between microcontrollers and microprocessor
Wired Protocols
I2C
SPI
UART
USART
CAN Bus Protocol
EtherNet/IP
Profibus
Profinet
CANOpen
Modbus/TCP
RS232
RS485
TCP/IP
Wireless Protocols
WiFi
BT
BLE 4.2 or 5.0 with Mesh
LoRaWAN
Firmware Development – Course Curriculum
6LoWPAN
Zigbee
Sub-GHz RF
Knowledge of wireless industry standards with preference to including IEEE
802.11a/b/g/n/ac/ax
JTAG and USB ASP
DSP Assembly Programming
Introduction to RTOS and FreeRTOS
Introduction to Vxworks
What are PLA, PAL, FPGA?
Types of Memories
Flash Memory
RAM
SDRAM
ROM
PROM
EPROM
EEPROM
What is Cache memory?
What is pipelining?
Introduction to ARM TrustZone and Secure OS like
OPTEE for Trusted Execution Environment (TEE)
Comprehensions of
ARM /X86 Boot flow
ARM memory initialization,
BootROM architecture and
UBoot development
Firmware Development – Course Curriculum
Arduino and AVR
Arduino Open Source Software.
Advantages of Proteus IDE.(No hardware Required).
Development Boards.
Arduino Uno development Board.
Hardware explantion.
Atmega 328P explanation
I/O
Registers
Timers
Counters
Interrupts
Special function Registers
Interfacing LCD (16x2)
a. Display
b. Digital Clock
c. Scrolling Name
Right to left and then left to right
Up to down and then down to up
Example programs to explain: Registers, Timers, Counters, Interrupts,
Special function Registers
Protocols
.
I2C
a.
SPI
b.
UART
c.
USART
Introduction to Arduino IDE
Introduction to Atmel Studio
Introduction to Arduino Uno R3
Explanation of Microcontroller ATMEGA328P
LED Blink with Arduino UNO & AVR controller
PWM Output generation arduino & AVR
Reading Analog Data with Arduino UNO
Interfacing LDR and Program automatic street light
Interfacing Servo Motor
Interfacing Stepper Motor
Interfacing simple DC Motor
Firmware Development – Course Curriculum
CAN Bus implementation
BLDC Motor
Encoder, Decoder
Experience working with (Git, Subversion)
Introduction to AVR Studio
Introduction to firmware development and testing tools
GDB
Valgrind
SCA
PIC Mircrocontrollers
Introduction to PIC18F
Introduction to MPLAB X
Input/Output
Automatic Street Light
Programming with some examples
I2C
UART
SP I
ARM Microprocessor
Introduction to stm32f103c8t6 ARM based microprocessor development
board and ARM Cortex M4 hands-on.
Programming via Arduino IDE
Programming via Keil IDE.
Introduction to ARM Processor Families
LED Blinking
Boot Loading via stlink
Debugging
CAN Bus implementation
Multi-threading(RTOS) hands-on
Protocols
a.
I2C
b.
SPI
Firmware Development – Course Curriculum
c.
UART
d.
USART
IOT
Bluetooth Protocol
Program with HC06(AT Commands)
WiFi Protocol
Program with ESP8266(AT Commands)
Local Area Network using ESP8266
Server Connection
(Host and Client)
Introduction to Zigbee
Programming and control with Zigbee
LoRa Protocol and modules
Introduction to LoRa Module
Communication between two devices using LoRa