Course description

Embedded Systems

Learnbay.in online is best embedded training institute in Bangalore providing embedded system courses & training by our top industry experts. If you have experience in other domains/technologies and want to start your career in embedded system, Learnbay is best place to go for Linux device driver training in Bangalore.

An embedded system is a computer system with a dedicated function within a larger mechanical or electrical system, often with real-time computing constraints. [1][2] It is embedded as part of a complete device often including hardware and mechanical parts. Embedded systems control many devices in common use today.

Course Curriculum:

Learnbay is the best embedded training institute in Bangalore as we constantly update our curriculum based on the developments and updates in the industry. It makes us the leading device driver programming trainers in the city.

Objective

Examples of properties typical of embedded computers when compared with general-purpose ones are low power consumption, small size, rugged operating ranges, and low per-unit cost. This comes at the price of limited processing resources, which make them significantly more difficult to program and to interface with. However, by building intelligence mechanisms on the top of the hardware, taking advantage of possible existing sensors and the existence of a network of embedded units, one can both optimally manage available resources at the unit and network levels as well as provide augmented functionalities, well beyond those available.[4] For example, intelligent techniques can be designed to manage power consumption of embedded systems.

1. C Programming

Introduction

Symbolic Constants

Variables and Arithmetic Expressions

C Keywords, C Data Types, Structure of a Simple Program.

Types, Operators and Expressions….

Variable Names, Data Types and Sizes, Constants, Arithmetic Operators, Relational and Logical Operators, Type Conversions, Increment and Decrement Operators, Bitwise Operators, Assignment Operators and Expressions , Conditional Expressions, Precedence and Order of Evaluation

Functions and Program Structure….

Basics of Functions, Functions Returning Non-integers,External Variables, Scope Rules, Header Files, Static Variables, Register Variables, The C Preprocessor, File Inclusion, Macro Substitution, Conditional Inclusion.

Recursion and Stack

Pointers and Arrays

Pointers and Addresses, Pointers and Function Arguments, Pointers and Arrays, Address Arithmetic, Character Pointers and Functions, Pointer Arrays, Pointers to Pointers, Multi-dimensional Arrays, Initialization of Pointer Arrays,Pointers vs. Multi-dimensional Arrays, Command-line Arguments, Pointers to Functions, Complicated Declarations, Pointers and Strings. Array of Pointers to Strings, Limitation of Array of Pointers to Strings

Structures

Basics of Structures, Structures and Functions, Arrays of Structures, Pointers to Structures, Self-referential Structures, Type def, Unions, Bit-fields.

File Input/Output

Data Organization , File Operations, Opening a File, Reading from a File, Trouble in Opening a File, Closing the File, Counting Characters, Tabs, Spaces, A File-copy Program, Writing to a File, File Opening Modes, String (line) I/O in Files, Record I/O in Files, Text Files and Binary Files, Low Level Disk I/O, A Low Level File-copy Program

Basic Data structure and algorithm

Singly Linked List, Doubly Linked List, Circular Linked List, Doubly Linked List.Binary Search, Selection Sort, Bubble Sort

2. Introduction to Embedded Systems Design

Trends in Embedded Systems, Challenges and Design Issues in Embedded Systems, Assemblers, Compilers, Linkers, Loaders, Debuggers, Embedded In-Circuit Emulators and JTAG, Profilers and Test Coverage Tools, Build Tools for Embedded Systems, Configuring and Building GNU Cross-Toolchain, Introduction to Keil IDE,

3. 8/16/32 bit Micro-controllers and Interfacing

.Introduction to 8-bit Microcontrollers • RISC / CISC and Harvard / Princeton Architectures • Embedded Memory, Timers / Counters, UART, SPI, PWM, WDT • Input Capture, Output Compare Modes, I2C, CAN • LED, Switches, ADC, DAC, LCD, RTC • Emerging Bus Standards (USB, PCI) • Programming in Assembly and Embedded C • Introduction to 16 / 32-bit Processors • ARM Architecture and Organization • ARM/THUMB Programming Model • ARM/THUMB Instruction Set • ARM Exception Handling • ARM/THUMB Assembly and C Programming • ARM/THUMB Interworking • ARM Peripheral Programming • Overview of Multi-Core Embedded Systems • Overview of FPGA

4. Introduction to OS • Process Management and Inter Process Communication • Memory management, I/O subsystem, File System Organization • POSIX Thread Programming • POSIX Semaphores, Mutexes, Conditional Variables, Barriers, Message Queues • Debugging and Testing Multi-Threaded Applications • Introduction to Real-Time / Embedded Operating Systems • Performance Metrics of RTOS • Real Time Scheduling, Task Specifications, Schedulability Analysis • Programming in Real Time Kernel

Learnbay’s embedded systems training in Bangalore has the following curriculum:

Linux System Programming:

1. Fundamental Concepts

The Core Operating System: The Kernel, The Shell, Users and Groups, Single Directory Hierarchy, Directories, Links, and Files, File I/O Model, Programs, Processes, Memory Mappings, Static and Shared Libraries, Interprocess Communication and Synchronization, Signals, Threads, Process Groups and Shell Job Control, Sessions, Controlling Terminals, and Controlling Processes, Pseudoterminals, Date and Time, Client-Server Architecture, Realtime.

2. System Programming Concepts

System Calls, Library Functions, The Standard C Library; The GNU C Library ( glibc) , Handling Errors from System Calls and Library Functions.

3. File I/O

Overview, Universality of I/O, Opening a File: open(), The open() flags Argument, Errors from open(), The creat() System Call, Reading from a File: read(), Writing to a File: write(), Closing a File: close(), Changing the File Offset: lseek(), Operations Outside the Universal I/O Model: ioctl() , File Control Operations: fcntl(), Open File Status Flags, Relationship Between File Descriptors and Open Files, Duplicating File Descriptors, File I/O at a Specified Offset: pread() and pwrite(), Scatter-Gather I/O: readv() and writev(), Truncating a File: truncate() and ftruncate(), Nonblocking I/O, I/O on Large Files, The /dev/fd Directory, Creating Temporary Files .

4. Processes

Processes and Programs ,Process ID and Parent Process ID, Memory Layout of a Process, Virtual Memory Management , The Stack and Stack Frames, Command-Line Arguments (argc, argv) , Environment List.

5. Memory Allocation

llocating Memory on the Heap, Adjusting the Program Break: brk() and sbrk() Allocating Memory on the Heap: malloc() and free(), Implementation of malloc() and free(), Other Methods of Allocating Memory on the Heap, Allocating Memory on the Stack: alloca().

6. System And Process Information

The /proc File System, Obtaining Information About a Process: /proc/PID, System Information Under /proc, Accessing /proc Files, System Identification: uname().

7. File Attributes

Retrieving File Information: stat(), File Timestamps, Changing File Timestamps with utime() and utime(), Changing File Timestamps with utimensat() and futimens(), File Ownership , Ownership of New Files, Changing File Ownership: chown(), fchown(), and lchown(), File Permissions,Permissions on Regular Files, Permissions on Directories, Permission-Checking Algorithm ,Checking File Accessibility: access() , Set-User-ID, Set-Group-ID, and Sticky Bits, The Process File Mode Creation Mask: umask(), Changing File Permissions: chmod() and fchmod(), I-node Flags (ext2 Extended File Attributes)

8. Signals

Concepts and Overview, Signal Types and Default Actions, Changing Signal Dispositions: signal(), Introduction to Signal Handlers, Sending Signals: kill(), Checking for the Existence of a Process, Other Ways of Sending Signals: raise() and killpg(), Displaying Signal Descriptions, Signal Sets, The Signal Mask (Blocking Signal Delivery), Pending Signals, Signals Are Not Queued, Changing Signal Dispositions: sigaction(),Waiting for a Signal: pause().

9. File System

Device Special Files (Devices),Disks and Partitions,File Systems ,I-nodes,The Virtual File System (VFS),Journaling File Systems,Single Directory Hierarchy and Mount Points, Mounting and Unmounting File Systems,Mounting a File System: mount() , Unmounting a File System: umount() and umount2() ,Advanced Mount Features , Mounting a File System at Multiple Mount Points, Stacking Multiple Mounts on the Same Mount Point, Mount Flags That Are Per-Mount Options ,Bind Mounts, Recursive Bind Mounts. A Virtual Memory File System: tmpfs, Obtaining Information About a File System: statvfs().

10. Process Creation And Termination

Overview of fork(), exit(), wait(), and execve(), Creating a New Process: fork() , File Sharing Between Parent and Child ,Memory Semantics of fork() , The vfork() System Call, Race Conditions After fork() Avoiding Race Conditions by Synchronizing with Signals Terminating a Process: _exit() and exit(), Details of Process Termination, Exit Handlers, Interactions Between fork(), stdio Buffers, and _exit() Waiting on a Child Process, The wait() System Call, The waitpid() System Call, The Wait Status Value, Process Termination from a Signal Handler, The waitid() System Call, The wait3() and wait4() System Calls, Orphans and Zombies, The SIGCHLD Signal, Establishing a Handler for SIGCHLD, Delivery of SIGCHLD for Stopped Children, Ignoring Dead Child Processes.

11. Process Creation

Process Accounting,The clone() System Call, The clone() flags Argument, Extensions to waitpid() for Cloned Children, Speed of Process Creation, Effect of exec() and fork() on Process Attributes.

12. Threads Introduction

Overview, Background Details of the Pthreads API, Thread Creation, Thread Termination, Thread IDs, Joining with a Terminated Thread , Detaching a Thread, Thread Attributes, Threads Versus Processes.

13. Threads Synchronization

Protecting Accesses to Shared Variables: Mutexes, Statically Allocated Mutexes, Locking and Unlocking a Mutex,Performance of Mutexes,Mutex Deadlocks, Dynamically Initializing a Mutex, Mutex Attributes, Mutex Types, Signaling Changes of State: Condition Variables, Statically Allocated Condition Variables, Signaling and Waiting on Condition Variables, Testing a Condition Variable’s Predicate, Example Program: Joining Any Terminated Thread, Dynamically Allocated Condition Variables,

14. IPC:Overview

Our embedded systems training program in Bangalore also covers salient concepts such as taxonomy of IPC Facilities, Communication Facilities , Synchronization Facilities, Comparing IPC Facilities.

15. Pipes And Fifos

Overview,Creating and Using Pipes, Pipes as a Method of Process Synchronization Using Pipes to Connect Filters , Talking to a Shell Command via a Pipe: popen() Pipes and stdio Buffering ,FIFOs , A Client-Server Application Using FIFOs Nonblocking I/O, Semantics of read().

16. Posix Message Queue

Overview, Opening, Closing, and Unlinking a Message Queue , Relationship Between Descriptors and Message Queues , Message Queue Attributes, Exchanging Messages, Sending Messages, Receiving Messages, Sending and Receiving Messages with a Timeout, Message Notification, Receiving Notification via a Signal, Receiving Notification via a Thread, Linux-Specific Features, Message Queue Limits,Comparison of POSIX and System V M .

17. Posix Semaphores

Overview,Named Semaphores, Opening a Named Semaphore, Closing a Semaphore, Removing a Named Semaphoe , Semaphore Operations , Waiting on a Semaphore, Posting a Semaphore, Retrieving the Current Value of a Semaphore , Unnamed Semaphores, Initializing an Unnamed Semaphore, Destroying an Unnamed Semaphore, Comparisons with Other Synchronization Techniques, Semaphore Limits, POSIX SHARED MEMORY Overview, Creating Shared Memory Objects, Using Shared Memory Objects, Removing Shared Memory Objects, Comparisons Between Shared Memory APIs

18. Fundamentals Of TCP/IP

Internets, Networking Protocols and Layers, The Data-Link Layer, The Network Layer: IP, IP Addresses, The Transport Layer, Port Numbers User Datagram Protocol (UDP), Transmission Control Protocol (TCP), Requests for Comments (RFCs).

19. Sockets In Detail

Overview,Creating a Socket: socket(),Binding a Socket to an Address: bind(), Generic Socket Address Structures: struct sockaddr , Stream Sockets: Listening for Incoming Connections: listen(), Accepting a Connection: accept(), Connecting to a Peer Socket: connect(), I/O on Stream Sockets, Connection Termination: close() , Datagram Sockets: Exchanging Datagrams: recvfrom() and sendto(), Using connect() with Datagram Sockets

20. Project

Linux Device Drivers:

1. Fundamentals

Kernel programming Processes: The Principal Model of Execution Process Address space System call File system Linux Device Driver Character driver Operation Kernel Synchronization IOCTL Calls Blocking IO Async Notification Interrupt handling Bottom Halwes SoftIrq Tasklet And WorkQueues Memory Management Page Allocator Memory Pool Memory Map Address Translation Page Tables Memory Management In Linux IO Block Device Driver Model PCI Network Driver basics of USB Device Driver.

Building and adding code to Linux kernel for Friendly ARM and beagleboard board and experimenting with the driver available in kernel source.

2. Task Controls

TCB of a process, Task state Transtion. Round robin scheduling. Preemptive task scheduling, Task name and IDs, Task Exception Handling.

3. Inter Task synchronization

Semaphore Semaphore Control, binary semaphore, mutex semaphore, priority inversion, Deletion safety, spin locks.

4. Task Communication

Message queue, Pipe Signal Server and Client with message queue

5. IO System

File , device, Driver, File name , Default device, File descriptor, open, close, read, write.

6. Interrupt and Timer

Interrupt service code. Interrupt stack, Exception at Interrupt Level. Interrupt to task communication

7. Char Drivers

Interrupt servi Major Number , Minor number concept, Char Device Registration, read and write on character device,IOCTLS, input-output operation on a character device, implimentation of a blocking IO, Notifications.

8. Block Drivers

Introduction to Block Driver, File Operation of Block driver , Block driver registration and un registration

Block driver request queue , Hands-on: Writing a simple block device driver, Commands for using the block driver

Copying data in and out of the developed block driver.

9. PCI Drivers

Introduction to PCI Architecture , Linux Network flow , Network driver structures and functions, Network driver code flow.

**Hands on with LED drivers , Watchdog drivers.

Mini Project

Learnbay.in online offers embedded system & Linux device driver training in Bangalore. The courses that we offer in our institute are created by technical experts and taught by top industry experts. To know more about the course details or enrolment procedure, contact us. As the best embedded systems training institute in Bangalore, we will ensure that you gain the expertise and the confidence to start a new career or perform better in your current role.