Firmware and Systems Software Engineering

A structured path to mastering the essentials!

IF YOU INVESTED IN US IN THE PAST, PLEASE EMAIL US AT SUPPORT@PYJAMABRAH.COM AND WE WILL WORK ON AN OFFER FOR YOU. SEND THE DETAILS OF THE INVESTMENTS.

Embedded Systems Software Engineering includes writing firmware for microcontrollers and system software for application grade CPUs involving bootloaders, device trees and higher level operating systems.

While there are several resources available online. Each offers a narrow view of one entity of the several. We have created and organised courses, that will take you from Zero to Hero in Firmware and Systems Software Engineering.

Bestseller Beginner Intermediate | Delivered by Piyush Itankar Mahmad Bharmal

(4.9) (24 ratings) 109 students

Last updated: 2 May 2025 | English | Quarterly and Yearly Access.

Course Includes

~ >50 hr  on-demand Video.
100+  Recorded lessons.
10+  downloadable resources.
Certificate  on completion of course.
Cheat sheets and/or quick reference guides.
Case studies based on open-source code.
Coding exercises and challenges.
5+ End-to-end project implementations.
New content regularly added!

A Message from the instructor

What you Learn

Master C programming, converting to Assembly and machine code.
Grasp ARM-M, ARM-A, and RISC-V memory maps and programmer's models.
Write and debug C programs for practical use.
Command C constructs - functions, pointers, structs, unions, enums.
Analyze data types - integers, floats, doubles, signed/unsigned, const, volatile.
Understand data type memory representation - 2's complement, floating-point encoding.
Implement control structures (if, else, switch, loops, goto) and track assembly effects.
Manipulate arrays, strings, pointers, and perform pointer arithmetic.
Leverage debug tools - GDB, make, addr2line etc.
Build mental models for pointers in firmware, Linux, FreeRTOS, Zephyr.
Master pointer operations - pointer-to-pointer, arrays, function pointers.
Handle pointer arithmetic, void pointers, NULL pointers in kernels.
Manage dynamic memory with malloc(), free(); avoid leaks, dangling pointers.
Learn low-level programming with RISC-V and Assembly.
Write and debug RISC-V (rv32i) assembly programs; convert C to assembly.
Use QEMU, GDB, Makefiles for low-level debugging.
Develop baremetal firmware, drivers; print “Hello, World!” on UART.
Understand ARM Cortex-M, Cortex-A architecture, registers, boot processes.
Write Cortex-M assembly, including schedulers with context switching, SysTick.
Master exception handling, vector tables, system registers via QEMU.
Create, debug Makefiles for build automation; write GNU linker scripts.
Use Git, Gerrit for version control, code reviews.
Dissect FreeRTOS kernel; port to new targets with task scheduling.
Develop Linux kernel modules; manage with insmod, rmmod, lsmod.
Implement /proc entries, system calls, device drivers in sandbox.
Explore embedded systems roles, job skills, and career paths.
Generate digital audio in C using sampling, file operations.
Simulate real-world coding with QEMU, Codespace, Multipass.
Build mental models of CPU, memory, state machines, scheduling.
Tackle interview questions on C, memory, interrupts, bit manipulation.
Complete projects - schedulers, digital audio, Linux drivers.

Content List

The list below is a complete list of courses, lectures, quizzes, code reviews, projects, notes etc available on the learning portal at the moment. This list is constantly update with new content every few days...

Important: Planned courses are not yet ready for learners and will be added as the current recording concludes.

The Philosophy behind the courses?

We have been creating content for the Embedded Software Engineering community for over a year now. If you have been following us, you would know that we have launched courses in the past, with Firmware Engineering Arsenal (later renamed to Firmware Engineering) being the most popular one. The Courses on C lnaguage and C Pointer have been an all time hit and got us to where we are.

We noticed that we (a small) team were having a hard time supporting different courses individually. And learners were feeling left out when we included one course in one bundle but not another. To make life easy for all, we have decided to offer all the courses to everyone under quarterly and yearly subscription plans. This we believe will free us from the complications that come with attended to everyone on different chat windows.

To help reinforce all the learnings and ensure the learner has a deep sense of practical usage of the lessons, we have introduced Tech Sync (Workshops) where we present live on topics and take questions.

View of the Learning Portal

Learning Paths - For anxiety free life!

Embedded Engineering has not had a linear path. We are attempting to being order to the chaos. The courses are deliberately designed and ordered in the way they are. You can take each course individually or just follow the learning paths shown in the image below. The ones of the left are for firmware engineers (or aspiring candidates) and the ones on right are for those interested in systems software engineering.

Learning Paths

Firmware Engineering

Firmware Engineering involves working with microntrollers. These are typically 32-Bit CPUs (like ARM Cortex-M, RISC-V RV32 etc) with focus on power saving. Engineers tend to either write bare metal code or use an RTOS (like FreeRTOS, Zephys, ThreadX etc) if there is a need to handle complicated state machines.

Having a good understanding of what the CPU does as the result of the C code is a skill that will put you in the top 1% of the entry level Firmware engineers. Being able to understand a senior and co-operate to write the code is more than enough. Notice that the C language and C Pointers course will exactly help you become this. The C Language course is all about insights and based on the RISC-V CPU. So not only do you learn C the way it should be (by being able to reason down to the CPU) but also you learn programmers model and assembly for the RISC-V CPU. Double win!

The ARM Cortex-M 101/102 Introduces the ARM-M Architecture and focuses on booting and programming the CPU in Assembly. You will write a secheduler in assembly as part of these courses, this is deliberate and makes way for understanding FreeRTOS which follows. Going through these courses, you will notice how similar the RISC-V and ARM-M architectures are. By the end of the ARM courses, you will be having the skills of a senior firmware engineer.

The FreeRTOS course is laser focused on tearing down and reasoning about the scheduler and the OS primitives (mutex, semaphores etc). There are many engineers who work with FreeRTOS on a daily basis but don’t understand the internals and thus, hit a glass-roof in their career. Being able to reason about OS constructs like mutex, semaphore, spinlocks etc is important. You will also learn the rare skill of porting FreeRTOS from scratch on a new ARM-M target!!

To grow up the ladder you will need to master the CPU’s programmer model, architecture and be able to use the toolchain (gcc, ld, as, ar, gdb etc) to place the code/data in the memory, debug the solution and write build automation help.

Senior or Staff level engineers worry about details like power, performance, stability and fault tolerance of the firmware. Being an absolute master of C, CPU Architecture, Operating Systems and Debug tools is a must! If you notice, the courses are lined up to get you to becoming a master…

Systems Engineering

Stellar Systems Software Engineers are firmware engineers who are working with Application Grade CPU (ARM Cortex-A, RISC-V RV64, AMD, Intel etc), Complex and interconnected system capable of running Higher Level Operating System (Linux, Mac-OS, Windows etc), Hypervisors and Virtualizer and Systems capable of running general applications like the chrome browsers.

The Application processors are complicated in their architecture and have layers privileges and modes. Systems Engineer need to have a good understanding of the CPUs to be able to reason about the systems level on-goings. They are involved in working with Bootloaders, hypervisors, OS Kernel (Linux, Windows etc) and need to be very thorough with the understanding of the Operating Systems.

The courses included focus on the ARM Cortex-A (aarch64) and RISC-V RV64 architectures. The introductory courses give a over all view of the given architecture. Once the architecture is understood, the next in line is the Linux Device Drivers. The 101 course, provides a deep insight into how the Linux Kernel Drivers work and the anatomy of a general character driver.

We focus on the ARM-A class CPUs just because they are very popular and used in Mobiles, Watches, Tablets, Desktops/Laptops and Servers! Investment into learning this architecture is to prepare for the future and bullet proof your career!

General Skills

Honing technical skills is not enough. For these reasons we have included courses on general skills that a Firmware/Systems Software Engineer should have. When working in teams, collaboration is a big one and most semiconductor companies use tools like Git and Gerrit for source code management. Master these will enable you to be a reliable teammate!

The ART of Interviewing is a collection of special topics and interview experiences that will arm you with the knowledge and mindset to have a productive technical discussion with an interviewer (not to mention, become a better interviewer too)!

More!

We will be adding more courses in the paths so eventually this becomes a robust and reliable path to take as to become a firmware or systems software engineer. The subscribers of course will get the updates for free :)

Our Recommendation

Unless you are a student or an early professional who cannot afford the Yearly plan, our recommendation is to go for the Yearly Subscription to get the most bang for the buck.

Certificate

The journey through the course is a challenging one! Our courses are packed with insights and will take time to sink in. You will be awarded with a Certificate of Mastery when you complete 95% of the course work.

What you see above is a sample certificate (`Piyush Itankar` is a sample student name). The design of this certificate will be modified from time to time to make it more shiny and reflect the rightly earned pride!

There will always be a dedicated certificate identification number to verify it with us. This should enable anyone to check the authenticity of the certificate.

How this is different from Others

FeatureUs!Others
C language and pointers with focus on machine behavior
Detailed analysis of data types and significance.
Assembly and C Coding without IDE
Detailed explanation and view of Programmer's model of CPU.
Mental models of various components in the System to reason based off.
A Bottom-Up Approach with the tinge of answering the `Whys`.
Thorough explanation of toolchain utilities (gcc, as, ld, ar, gdb etc)
Connecting the concepts with practical use cases and use in industry.
Hands-on experiments to prove every concept.
Focused on practical professional insights
Teach multiple CPU architectures (ARM-M, ARM-A, RISC-V).
Cover the toolchain utilities like compiler, assembler, linker and debug tools like GDB?
Learn at your own pace.
Superficial and confusing explanation
Burn a hole in the pocket with Fee
On campus presence required.

Instructors

Piyush Itankar
Embedded Engineer (L5), Google
Electrical Engineer holding a Master’s degree in Embedded Systems, with a proven track record at industry giants. At Intel, contributed expertise to Navigation Firmware, Bluetooth Driver development, and RF validation software. Currently thriving as an Embedded Software Engineer at Google, drove innovation in Firmware development for the Power Management Sub-system on Tensor SoCs (Pixel Phones) and presently advancing system software for the Pixel Watch.
Mahmad Bharmal
Embedded Engineer (L4), Google
Computer Science Engineer with a Masters in Embedded Systems Design. Worked on Firmware for Intel's Bluetooth solutions, followed by Silicon Validation Software for the Tensor SoCs, and presently working on the Pixel Watch Software. He is system software expert with a decade of experience.

Praise from our learners

(4.9) course rating. 24 ratings

Here’s what those who are learning from the courses have to say about the content and delivery.

Shweta S
(5)
A well structured course for beginners to expirenced professionals, one who is keen in learning what the C program does to the underlying system, this course is for them. I personally enjoyed the debugging using the gdb dashboard. I am looking forward to dive deeper as the course unfolds, I highly recommend this course for all the embedded engineers.
Rohit Alate
(5)
Hello Team, if possible , please create the playlist in some sequence in which we should go through , so it will be really helpful.thanks in advance, and content wise you guys are amazing..... and i would say thanks to team to creating such platform for us...
PADMALAYA RAWAL
(5)
This bundle is crazily interactive. Be aware that it will make you addicted to learning more about embedded systems beyond just looking for jobs. Thanks to the team, who are adding more courses to the bundle, it's never going to be outdated! Loving it❤️‍🔥
Inturi Sri Sasi Kiran
(5)
I am taking a moment to give shout out the the authors of this course, sorry actually it's not just a course it is standard text book for an Embedded Engineer or who wants learn Embedded Engineering. I will strongly recommend this course to the college students especially those who are looking for a career in the Embedded sector.
Gnanesh Sureshchandra
(5)
This course gives you exactly what you need to know about pointers! And more importantly how to think about pointers this is really important, and every embedded engineer must know. Once again thanks a lot for this content creators. Expecting more courses from you in future. (for: C Pointers)
Arjun
(5)
Awesome, within an hour, if an engineer learns the boot up process of arm - cortex-m, that is unbelievable, instructor is really apt at the matter. Thanks (for: ARM Cortex-M 101)
Selva Gandhi P
(5)
I want to say that this course has truly been eye-opening for building my career. Thank you so much, brother, for all the support and guidance. 🙏🏻
Imene Benamor
(5)
I'm currently taking this course, and it's been great so far! The content is clear, practical, and easy to follow. I'm already learning a lot and looking forward to diving deeper. Would definitely recommend it to anyone looking to build or strengthen their skills in embedded systems.
Earnest Kihara
(5)
I wish I had came across this course when I was getting started into embedded C, thankyou Piyush for coming up with this course ,its worth it . I recommend it to all beginner and intermiadiate students and anyone else who feels there is some dots they can't connect in C
Pavankalyan G
(5)
Really enjoyed reading this book! It provides great insights and is well-written.
@n.5s4584
(5)
I just wanted to take a moment to appreciate the amazing content you create! Your videos are not only engaging but also incredibly valuable. I’ve learned so much from your channel, and I always look forward to your uploads. Thank you for sharing your knowledge and insights—keep up the great work! Wishing you all the success you deserve.
@its_me_to-i4e
(5)
Your content is amazing! Last time, I bought the advanced C pointer course, and it was so helpful for embedded systems. Please consider making the course fees more affordable so that students like me can easily access them. Keep up the great work
@sharifyy
(5)
your content is amazing, I give it 5 stars
@techpartel9858
(5)
The flow of this course is Amazing. It covers a whole system overview of how your C code runs and how it's dumped in your hardware. Everything is excellent. Thank you, @piyush.
@Simi-bc8sb
(4.9)
Great content. I really appreciate. Thank you
@ElizabethGreene
(5)
31/Jan/2025
Was there any reason why you preferred the RISCV32i chip over an x86 chip in QEMU? I appreciate the lesson in cross compiling too, but was curious why. Thanks for making these. 10/10
@soumyadipkar9451
(5)
31/Jan/2025
Enjoyed the session a lot sir! GDB Dashboard is truly amazing! 🔥
@vimalathithand917
31/Jan/2025
Just what I was looking for ! I'm sure that this series is going to be a blast ! Please don't stop the series in the middle and thanks a lot !
@aadishm4793
30/Jan/2025
Great content!!
@Ujjaval___
30/Jan/2025
AMAZING VIDEOS
@aadishm4793
30/Jan/2025
Awesome as all the videos 👍👍🔥
@Padmalayarawal
(5)
30/Jan/2025
Really loved your new content, can't ask for more crazy stuff.
@shabeehabbas4737
29/Jan/2025
Hello bro just saw the this video and I cant wait to start the course, the roadmap is unconventional which is why I think its the most awesome one, please dont stop uploading such great content ❤❤❤
@ankitrajbhar6045
(5)
31/Jan/2025
This is what I actually needed in life today.. thanks a tons..
Bhanu Sri Dasari
(5)
Great content
Ashith Polepalli
(5)
Excellent content to learn firmware
Rahul Kumar
(5)
no second thought.. go for it
Vikas Naga
(5)
The best course in Embedded System so far.
Mariyam Shahid
(5)
the best content on c!
@EEShyama
Loving these lectures!! Please keep them coming.
@RavindraBhandari-nf8vs
(4)
31/Jan/2025
I like your teaching method 🫡

Requirements

GitHub account to do the hands-on coding in Codespaces.
Interest in the lower level working of the system.
Some exposure to Digital systems is good (but not strictly required).
Basic understanding of number systems, logic gates, bits and bytes is good to have (but not strictly required).

Who this course is for

Students in Academia with C as a subject in the course.
Early Career Professionals using C as development language.
Embedded Systems Engineers.
System Software Engineers.
Electrical/Electronics Engineers working on hardware programming.
Systems Engineer seeking gain system level insights.
Those curious to learn the underlying details of Systems and how to program it using C.
Those seeking a job change and preparing for interviews.

FAQs