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
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
Share this post