IoT

Understand basics of git, learn to use essential git commands & learn markdown documentation format :

  • Overview of git (Diagram needed here with visuals of basic terminologies)
  • Git commands : git clone, git config, git add, git status, git commit, git push, git pull, git branch, git checkout, and git merge
  • Git Workflow
  • Git Practice
  • Assignment : Summarise Git learning in Markdown format.

Learn complex problem solving skills :

  • Data Structures - Arrays, Linked List (SLL, DLL), Stack, Binary Search Tree, Hash Table, Dictionary
  • Time Complexity, Space Complexity.
  • Assignment : Solve a problem demonstrating above abilities : Peer review for best in class.

Learn basics of Arduino and build projects using Arduino :

  • Introduction to Arduino
  • Arduino Program Structure
  • Blinking an LED
  • Interfacing a sensor to SPI
  • Interfacing a sensor to I2C
  • Data storage on cloud
    Build a product using Arduino

Learn basics of Raspberry Pi and build projects using Raspberry pi :

  • Introduction to Raspberry Pi
  • Installing Raspbian OS
  • Programming on Raspberry Pi
  • Introduction to Shunya Interfaces
  • SPI, I2C, UART, GPIO interfacing
  • Data storage on cloud
  • Smart Home using Raspberry pi.

Learn to implement a C program with proper coding style and standards :

  • Program Structure, Basic Syntax
  • Datatypes, Variables, Constants, Storage
  • Classes
  • Decision Making
  • Loops
  • Functions
  • Scope Rules
  • Arrays, Pointers, Strings
  • Structures
  • Typedef
  • Coding Standards (Intro ) MISRA C 2012
  • Naming conventions, Formatting Rules,
  • Documentation Best Practices

Learn to implement advanced C programming concepts :

  • Input & Output
  • File I/O
  • Preprocessors
  • Header Files
  • Type Casting
  • Error Handling
  • Recursion
  • Variable Arguments
  • Memory Management
  • Constants

Get an Overview of various interfaces to connect sensors and Actuators to Microprocessor or Microcontroller :

  • Sensors and Actuators
  • Analog and Digital
  • Parallel and Serial communication
  • Interfaces
    - GPIO
    - UART
    - SPI
    - I2C
    - PWM

Understand concepts and implementation of GPIO & UART interfaces :

  • GPIO interface
  • HIGH and LOW
  • Internal Pullup
  • UART Interface
  • Baud-rate
  • Data Frame
  • Steps in transmission

Understand concepts and implementation of I2C & SPI interfaces :

  • I2C Interface
  • Addressing
  • Data Frame
  • Steps in Tramsmission
  • Single Master
  • Multiple Master
  • SPI Interface
  • Chip Select
  • Steps in Tramsmission
  • MOSI
  • MISO

Understand embedded linux basics and boot process :

  • How does the Embedded Device start
  • Bootloader
  • Kernel
    - Boot strap loader
  • Rootfs
    - init process .
  • System Initialisation

Understand Kernel build process and kernel configuration :

  • Kernel Build Process
  • make utility
  • Kernel configuration
  • Kernel Building

Build a basic image on Yocto :

  • Introduction to Build systems :-
    Ways to make a root-filesystem
    Comparison of the different ways to make a rootfs
  • Using the Yocto Project :-
    Environment Setup
    Yocto Directory structure
    -Top-level directory structure
    -Build directory structure
    -Layer directory structure
  • Configuring the Build System
  • Compiling a basic image

Understand basic internal architecture of Yocto :

  • Introduction to Layers :-
    What are layers
    Where do you find a list of available layers
    Adding layers to the build
    Creating new layers
  • Introduction to Recipes :-
    What are recipes
    Where do you find a list of available recipes
    Adding new packages into the RFS
    Configuring existing recipes
  • Introduction to Images in yocto :-
    Introduction to poky-images in yocto

Understand advanced internal architecture of Yocto :

  • Yocto bitbake Tasks :-
    Recipe build tasks
    Image related tasks
  • Features :-
    Machine features
    Distro features
    Image features

Understand how to add packages to Yocto, update the packages inside the Yocto and troubleshoot packages :

  • Need to write a new recipe
  • How to compile a package
  • Yocto Variables
  • How to write a recipe
  • Examples
  • Troubleshoot issues related to packages and dependencies

Learn to build Kernel through Yocto and make changes to the kernel configuration :

  • What is the Kernel?
  • Why do I need to configure the Kernel?
  • How to configure the Kernel

Add support to new development boards in Yocto :

  • What is a BSP?
  • Adding a new machine
  • Adding Packagegroups

Understand Device Drivers Theory and Practical coding on char device drivers and block device drivers :

  • Introduction to Device Drivers
  • Hello World Device Driver.
  • Introduction to Char driver
  • Introduction to Block driver

Understand Image storage formats and working of camera sensors and camera connection protocols :

  • Understanding Types of Digital Image representation in computers
  • Working of CMOS Camera Sensor and its performance parameters
  • Basics of Photography
  • Introduction to Gstreamer
  • Capture images and video via gstreamer

Understand a camera driver module, its internal data, functions controls :

  • Application vs Device Driver Programming Mindset
  • Camera driver Architecture
  • Macro Definitions
  • Sensor-Private Data
  • Regmap
  • Sensor Controls
  • Control Handlers
  • How Controls Are Implemented
  • Setting Up Registers for the Control
  • Handler
  • Read-Write Wrapper in the Register
  • Power Functions
  • Stream Functions
  • Miscellaneous Functions
  • Control Operations
  • Boot-Time Initialization
  • Removing Sensor Drivers

Understand Device trees and link between Device drivers and device trees :

  • Introduction to Device Trees
  • Device Tree syntax
  • Writing device tree for the camera driver
  • Study device tree bindings for the 10-15 camera driver