Modules and Projects in
Embedded Systems Software Engineering
Sl No. |
Module No. |
Project No. |
Module Name |
Working Days |
Classes (2 Hrs) |
Labs (4 Hrs) |
---|---|---|---|---|---|---|
1. | 00. | 00. | Linux Systems and Network Administration | 5 | 5 | 5 |
2. | 01. | Data Structures using C with Linux. | 20 | 17 | 20 | |
Project using Linux, gcc, C, gdb and source code control tools. | ||||||
3. | 01. | 11. | Shell Scripting using Bash | 5 | 5 | 5 |
4. | 03. | Linux programming and IPC | 10 | 7 | 10 | |
Project using Linux, system C and IPC. | ||||||
5. | 04. | Network programming using Threads and sockets | 6 | 4 | 6 | |
Project using Linux, threads ,sockets and network programming. | ||||||
6. | 02. | 05. | Character Device Driver | 18 | 18 | 18 |
7. | . | 06. | Parallel Port Device Driver | 7 | 7 | 7 |
8. | 03. | 12. | Linux architecture and Internals | 10 | 10 | 8 |
9. | 07. | Serial Port Device Driver | 7 | 5 | 7 | |
08. | Block Device Driver | 7 | 7 | 7 | ||
10. | 04. | 09. | Embedded Linux on ARM using Storage | 15 | 15 | 15 |
11. | 25. | ARM Architecture and Embedded Applications | 10 | 10 | 10 | |
12. | 05. | 10. | Embedded Linux porting on ARM and configuring GUI | 10 | 10 | 10 |
13. | 17. | Embedded Linux on ARM using Network | 10 | 10 | 10 | |
14. | 31. | Embedded Linux on ARM using Standalone Setup | 10 | 10 | 10 | |
14. | 06.. | 16. | USB Device Drivers Development | 15 | 15 | 15 |
15. | 21. | I2C Device Driver | 10 | 10 | 10 | |
16. | 07. | 20. | PCI Device Drivers | 10 | 10 | 10 |
17. | 22. | SPI Device Driver | 10 | 10 | 10 | |
18. | 08. | 15. | A Ethernet - Network Device Drivers Based Project | 15 | 15 | 15 |
19. | 24. | A Wireless LAN Device Driver | 15 | 15 | 15 | |
18. | 09. | 02. | Object oriented programming and Data Structures with C++ | 24 | 24 | 24 |
19. | 10. | 28. | Shell Scripting using Python programming language | 24 | 24 | 24 |
20. | 11. | 13. | A Linux System Programming using Memory Management | 10 | 10 | 10 |
21. | 14. | A Linux System Programming using Interrupts | 8 | 8 | 8 | |
22. | 27. | Linux System Programming using IO Memory and Ports | 8 | 8 | 8 | |
22. | 12. | 29. | VHDL - Verilog Hardware Definition Language | 24 | 24 | 24 |
A brief description of Modules:
Module 00: Linux System and Network Administration
It should normally take 5 working days for this module to be completed.
There would be 5 classes of 2 Hours each.
There would be 5 Labs of 4 Hours each.
After This Module would be over, you should be able to:
Work comfertably on a Linux Workstation.
Install Linux, flavour Fedora and Debian using media i.e. cdrom.
Install Linux, flavour Fedora using media i.e. usb.
Install Linux, flavour Fedora using network.
Use vim editor efficiently for writing text and programs.
Compile programs using gcc - C compiler.
Able to Configure and use the following servers:
TFTP, FTP, TELNET, ssh, DNS, DHCP, NFS.
Module 01: Date structures using C and Linux
It should normally take 17 working days for this module to be completed
There would be 17 classes of 2 Hours each.
There would be 17 Labs of 4 Hours each.
After This Module would be over, you should be:
Comfortable with respect to programming in C
Able to Implement and use Data Structures using C.
Proficient in Advanced C.
Having good understanding about gcc compiler.
Able to debug complex C programs using gdb.
Ready for System Programming using C
Adept with Project Management tools.
Efficient with Source code management tools.
It should normally take 5 working days for this module to be completed.
There would be 5 classes of 2 Hours each.
There would be 5 Labs of 4 Hours each.
After This Module would be over, you should be able to:
write shell scripts using Bash
Run and Controlling Scripts with ease
Debug shell scripts
Do scripting using files, sed, awk efficiently
Control processes
Handle System Administration
It should normally take 7 working days for this module to be completed.
There would be 7 classes of 2 Hours each.
There would be 7 Labs of 4 Hours each.
After this Module would be over, you should:
be able to understand process creation, loading, duplication, replacement and destroying.
be adept with Process Management, Signals and Signal Handlers.b
be adroit with IPC Mechanism - Pipes, FIFOs, Message Queues and Shared Memory.
be proficient with Synchronization Techniques - Semaphores.
be seasoned and Skillful in implementing client server architecture using IPC and synchroniz optimally.
have implemented a project using the concepts learned.
It should normally take 6 working days for this module to be completed.
There would be 4 classes of 2 Hours each.
There would be 4 Labs of 4 Hours each.
After this Module would be over, you should be able to:
understand the concepts of Threads as used in linux.
Synchronize Threads using joining and threads semaphores.
debug timing faults in threads and synchronize.
set thread attributes as required.
implemtnt communication among threads.
understand communication endpoints and implement network interface - sockets.
communicate across the network using sockets.
synchronize communication across the network
Implement a network programming project using threads, threads semaphore, sockets using AF_INET.
It should normally take 17 working days for this module to be completed.
There would be 17 classes of 2 Hours each.
There would be 17 Labs of 4 Hours each.
After this Module would be over, you should be able to:
have an indepth driver level underatanding
understand the loadable kernel modules interfaces with the kernel
write a complete GPIO character driver.
synchronize device operations using semaphores, spinlocks, completion, blocking IO, wait queues.
implement advanced device operations like io control, /proc, sysfs.
underatand timing mechanism
implement kernel timers, tasklets and shared queues.
adept with usage of interrupts for devices.
It should normally take 15 working days for this module to be completed
There would be 15 classes of 2 Hours each.
There would be 15 Labs of 4 Hours each.
After this Module would be over, you should be:
able to understand Linux Kernel Architecture
well versed with Linux internals
It should normally take 7 working days for this module to be completed.
There would be 5 classes of 2 Hours each.
There would be 7 Labs of 4 Hours each.
After this Module would be over, you should be able to:
understand the working of parallel port
write device driver for parallel port from scratch in following modes
Compatiblity mode or centronics
Byte mode
nibble mode
ECP mode
EPP mode
use interrupts for parallel port.
It should normally take 7 working days for this module to be completed.
There would be 5 classes of 2 Hours each.
There would be 7 Labs of 4 Hours each.
After this Module would be over, you should be able to:
adept with RS232 protocol
understand the working of serial port
write device driver for serial port from scratch
implement GPIO using serial port device driver
interpreet datasheets for writing device drivers
use interrupts for serial port.
It should normally take 10 working days for this module to be completed.
There would be 10 classes of 2 Hours each.
There would be 10 Labs of 4 Hours each.
After This Module would be over, you should be able to:
understand ARM Architecture in depth
know the Programmer’s Model well
know the ARM Instruction Sets
adept with the following ARM Processor Cores
ARM Architecture v4 Cores
ARM Architecture v5 Cores
ARM Architecture v6 Cores
ARM Architecture v7 Cores
ARM Cortex A8
Know ARM System Design, AMBA
Do Debug and Trace
Write Software for ARM Processors
Use Software Development Tools
Do Exception Handling
Do Embedded Software Development
Understand Development Platforms
It should normally take 7 working days for this module to be completed.
There would be 5 classes of 2 Hours each.
There would be 7 Labs of 4 Hours each.
After this Module would be over, you should be able to:
understand the working of block drivers
write write device driver from scratch
implement GPIO using block device driver
implement block device operations
understand the gendisk structure.
implement IO control
do request processing
use request queues
understand bio structure, request structure fields, barrier requests, nonretryable requests.
implement request completion functions.
work with bios
do block request with dma
understand the mechanism for command pre-preperation
Tagged command queueing
It should normally take 15 working days for this module to be completed.
There would be 10 classes of 2 Hours each.
There would be 15 Labs of 4 Hours each.
After this Module would be over, you should be able to:
underatand the internal for Linux
build a cross-compiled toolchain
configure bootloader-U-boot
Configure, (cross)compile and boot a Linux kernel
Create a simple, BusyBox based root filesystem from scratch
understand block filesystems
Create Flash filesystems – Manipulating flash partitions
Cross-compile libraries and applications
Use Embedded system building tools
Develop and debug applications for the embedded system
Do system optimizations
Module 10: An Embedded Linux on ARM Cortex A8 and configuring GUI
It should normally take 10 working days for this module to be completed.
There would be 10 classes of 2 Hours each.
There would be 10 Labs of 4 Hours each.
After This Module would be over, you should be able to:
Comfortable with respect to programming in C++
Able to Implement and use Data Structures using C++.
Proficient in Abstract Classes and STL Classes.
Having good understanding about g++ compiler.
Able to debug complex C++ programs using gdb.
Ready for System Programming using C++
Module 16: USB Device Driver Development
It should normally take 10 working days for this module to be completed.
There would be 10 classes of 2 Hours each.
There would be 10 Labs of 4 Hours each.
Module 17: Porting Embedded Linux on ARM using Networks
It should normally take 10 working days for this module to be completed.
There would be 10 classes of 2 Hours each.
There would be 10 Labs of 4 Hours each.
Module 20: PCI Device Drivers
It should normally take 10 working days for this module to be completed.
There would be 10 classes of 2 Hours each.
There would be 10 Labs of 4 Hours each.
EmbLogic™ is an ISO 9001:2008(QMS) (Quality Management System) Certified Company.