Services

I offer consultation to startups and established corporations. I would like to work as an independent contractor for a particlar task. I have close to 15 years of experience in Embedded Systems, ARM, ARM64 PowerPC and MIPS.

Consulting

Embedded system design and development.

Platform/BSP design and development.

Hardware Software interface.

Training

ARM

I offer state-of-the-art ARM training, hands-on and workshop based at client’s locations Thare are introductory training and can be done in 1, 2 or 3 day material. Depending on individual needs, the duration and content can be customized

ARM v7 Introduction

  • Introduction to ARM, ARM as a company
  • ARM History, background and naming convention
  • ARM Registers set
  • ARM Instructions
    • Data movment
    • Branching
    • Load Store
    • Miscallaneous
  • Programming in Assembly

ARM v7 Advanced Architecture

In this module we will discuss the advanced concepts such as virtualization , memory management and GICv3 interrupt handling.

  • Exception Handling
  • Operating Modes
  • Switching between Modes
  • Operating system Concepts
  • Cache and Cache operation
  • System Control Co-processor
  • MMU Unit
  • Cache configuration, locking, invalidating and flushing
  • Booting up a v7 machine
  • V7 Virtualization enhancements
  • GICv3 Interrupt Handling

ARM v8 Advanced Architecture





Linux

Linux Basics and Programming

Introduction to Linux

  • Terminal and Shell
  • Command line
  • How your programs startup
  • Linux Filesystem
  • Shell scripting basics

Advanced Linux Programming

  • Process and process control
  • File Management
  • Memory Management
    • MMAP, accessing hardware in userspace
  • Synchronization
  • IPC (Inter-Process Communication)
  • Compiling and debugging programs

Kernel Programming and Driver framework

Kernel Programming introduction and Introduction to device driver framework

Prerequisites
  • Linux Basics & Programming
  • Advanced Linux Programming

  • Kernel Module Vs Application Namespace,

  • Basic Kernel Services,

  • Linux Kernel Code, Kernel Hello world,

  • Loading/Unloading Modules,

  • Linux Kernel Tree,

  • Linux Source Code,

  • Linux Kernel Configuration.

  • Writing a Simple Device Driver

    • Insert/Remove driver
    • Driver framework
  • Kernel synchronization Machanisms

    • Race condition
    • Semaphore/mutex usage
    • Deadlock and prevention
  • Interrupt handling and tasklets

  • Wait queues and Kernel threads

Kernel Internals

This course is not for the faint hearted, this introduces to Linux kernel and its development of 25 years. Its also not recommended for the device driver enthusiasts as it deals with core kernel components.

Prerequisites

Contents

  • Process and Its representation on Kernel
    • task, struct and clone(), fork(), vfork()
  • Kernel Synchronization
    • Per CPU variables
    • atomic operation, variables, spinlocks, rw-locks
  • Kernel data-structures
    • Trees, rb-tree, lists etc.
  • Timing measurement in Linux
    • How kernel keeps track of time
    • tickless, hr-timer and jiffies etc..
  • Memory management
    • pagefaults and slab,slub,slob allocators
    • page allocation and reclaimation
    • page overcommiting, CMA (continous memory allocator)
  • Linux virtual filesystem

Miscallaneous

Python Programming

  • Python programming concepts
  • Introduction to IDLE and command line based python applications
  • Syntax and writing Hello World
  • Introduction to functional programming
  • Writing small programs
  • importing other libraries
  • Control structure
    • If, if-else, try-except, loops and iterators
    • Iterators, Generators
  • Advanced Concepts
    • Interfacing with C
  • Object Oriented programming

Added Python development

  • Django Web App development
  • Python Web framework
    • routing
    • templating
    • data-managment

Advanced C Programming

Prerequisites

  • Basic C Programming

Contents

  • Structure and representation
  • Advanced usage of enums and error propagation
  • Unix System programming
  • IPC usage and examples programs
  • Programming for 64-bit IA-32, IA-64 and ARM64, MIPS64
    • Things to take care of while programming for 64-bit architecture
  • Pointers and pointer arithmetic
    • Invalid and dangling pointers
  • Data-type and conversion rules
  • Function pointer and usage
  • Pre-processors, tricks, traps-and-pitfalls
  • STDIO library