Embedded Lab / Browser practice
Embedded Practice.
Beginner to Advanced.
Write C. Practise Linux commands and RTOS programming.
Read the problemSolveCheck your answer
Explore topicsFour free exercises · Free account required
Embedded C workspace
Silent recording of the real ECE Lab practice workspace. Write C in the practice editor, run sample inputs and inspect the actual test results. The recordings play automatically in sequence.
What you’ll get
Embedded C
Write C and test your code.
Linux
Practise commands in a Linux terminal.
RTOS
Work with tasks and scheduling.
Embedded MCQs
Check your fundamentals with topic-wise questions and explanations.
Explore practice
Try for freeEmbedded C
Variables & Data Types
Pointers
Bit Manipulation
- Implement abs Without Branchingeasy
- Swap Two Numbers Without Tempeasy
- Check if Nth Bit is Seteasy
- Check if Number is Power of Twoeasy
- Count Set Bitseasy
- Clear the Nth Biteasy
- Set the Nth Biteasy
- Reverse Bits of 32-bit Integermedium
- Byte Swap (Endianness Conversion)medium
- Rotate Bits Lefteasy
- Find the Odd Occurring Elementeasy
- Multiply by 7 Without Operatoreasy
- Extract a Byte from Integereasy
- Toggle the Nth Biteasy
- Convert Decimal to Binary Stringeasy
- Calculate Average Without Overfloweasy
- Swap Nibbles in a Byteeasy
- Isolate Rightmost Set Biteasy
- Count Trailing Zeroseasy
- Find First Set Biteasy
- Circular Shift Righteasy
- Count Leading Zeroseasy
- Compute Word Parityeasy
- Set Multiple Bits using Maskeasy
- Bit Field Packermedium
- Extract Bit Field Rangemedium
- Power of Two Ceilingmedium
- Bitwise Addition (Add without +)medium
- Register Mask Generatormedium
- Endianness Swap 32-bitmedium
- Endianness Swap 16-bit Arraymedium
- BCD to Decimal Convertermedium
- Decimal to BCD Convertermedium
- Reverse Bits of a 32-bit Integermedium
- Check if Number is Power of Foureasy
- Check if Two Numbers are Opposites in Signeasy
- Circular Right Shifteasy
- Calculate Hamming Distanceeasy
- Binary to Gray Code Conversionmedium
- Check for Sparse Numbereasy
- Gray Code to Binary Conversionmedium
Strings
- Implement Custom strcmpeasy
- Reverse a String In-Placeeasy
- Custom atoi Implementationeasy
- Check Palindrome Stringeasy
- Remove Specific Character from Stringeasy
- Count Vowels and Consonantseasy
- String Concatenation Without strcateasy
- Implement Custom atoimedium
- Integer to Hexadecimal Stringmedium
- Hexadecimal String to Integermedium
- String Splitter (Tokenization)medium
- Validate Bracket Sequencesmedium
- Custom strstr (Substring Search)medium
- Check if String is Palindrome (Ignore Special)easy
- Reverse Words in a Stringmedium
- Find First Non-Repeating Charactereasy
Arrays
- Reverse Array In-Placeeasy
- Check if Arrays are Equaleasy
- Find Missing Number in Arrayeasy
- Smallest and Largest in Arrayeasy
- Find Duplicate in Arrayeasy
- Sort Array of Structs by Agemedium
- Rotate Array by K Positionsmedium
- Check if Array is Sorted and Rotatedmedium
- Find the Missing Numbereasy
- Count Frequency of Elements in Arraymedium
- Find the Only Non-Repeated Elementeasy
- Find the Duplicate Numbermedium
Linked Lists
- Reverse a Linked Listmedium
- Linked List Insertion and Displaymedium
- Detect and Remove Loop in Linked Listmedium
- Merge Two Sorted Linked Listsmedium
- Detect Linked List Cyclemedium
- Reverse Linked List IImedium
- Find Middle of Linked Listeasy
- Detect Cycle in Linked Listmedium
- Middle of a Linked Listeasy
- Remove Nth Node From End of Listmedium
- Intersection of Two Linked Listsmedium
Data Structures
- Implement Circular Buffermedium
- Implement Stack Using Arraymedium
- Dynamic Array (Vector) Implementationmedium
- Circular Queue using Arraymedium
- Stack using Linked Listmedium
- Queue using Linked Listmedium
- Implement Queue Using Two Stacksmedium
- Validate Balanced Parentheseseasy
- Adjacency List Constructionmedium
Algorithms
Embedded Systems
- Fixed-Point Multiplicationmedium
- Timer Counter Simulationmedium
- Simple Button Debounce Logicmedium
- UART Frame Validatormedium
- SPI Frame Decodermedium
- Simple State Machinemedium
- CRC-8 Calculationmedium
- I2C 7-bit Address Extractormedium
- Hardware Register Macro Simulatormedium
- Parity Bit Calculatormedium
- ISR Flag Clearing (Simulation)medium
- Implement Square Root Using Binary Searcheasy
- Parse a byte stream with escaped delimitershard
- Elapsed Ticks Across Rollovereasy
Linux
Navigation & Filesystem
Viewing & Editing Files
Permissions
Pipes, Redirection & Text Processing
- Find lines by keywordeasy
- Case-insensitive searcheasy
- Count matching lineseasy
- Search a whole directory treemedium
- Chain three commands togethermedium
- Pull out one columneasy
- Find and replace with sedmedium
- Find the one line that's differenthard
- Keep command output and diagnostics separateeasy
- Filter a log by numeric value and statusmedium
- Build a per-device sensor summarymedium
- Merge configuration with explicit override precedencemedium
- Redact every token field before sharing logsmedium
- Preserve a collector failure while filtering its outputmedium
Processes
Package Management
Shell Environment
Shell Scripting Basics
- Your first scripteasy
- Reading an argumentmedium
- Branching on an argumentmedium
- Loop over a directorymedium
- Branch on whether a command failedmedium
- Read typed inputmedium
- Capstone: find the file with the keywordhard
- Copy filenames containing spaces safelyeasy
- Preserve a command failure in a wrapper scriptmedium
- Validate required deployment configuration keyshard
- Copy a manifest and report every missing filehard
- Retry transient command failures with a finite limithard
- Detect changed or missing calibration fileshard
- Publish a validated release while preserving the last good filehard
RTOS
RTOS: Tasks & Scheduling
- Protect a Shared Counter with a Mutexeasy
- Producer/Consumer with a FreeRTOS Queuemedium
- Signal a Task with a Binary Semaphoreeasy
- Wait for Multiple Workers with a Counting Semaphoremedium
- Task Priority Decides Execution Order, Not Creation Ordereasy
- Avoid Deadlock by Acquiring Locks in a Consistent Orderhard
- Signal a Task with a Lightweight Task Notificationeasy
- Coordinate a Worker with vTaskSuspend/vTaskResumemedium
- Reentrant Locking with a Recursive Mutexhard
- Latest-Value-Wins with xQueueOverwriteeasy
- Read Without Consuming: xQueuePeekeasy
- Passing Structs Through a Queuemedium
- Multiple Producers, One Queue, One Consumermedium
- Worksharing: One Producer, Three Consumershard
- Cap Concurrent Access with a Resource Poolmedium
- Change Priority After Creation with vTaskPrioritySetmedium
- Stop a Task for Good with vTaskDeletemedium
- Strict Alternation with Two Binary Semaphoresmedium
- Protect a Shared "Next Slot" Counter with a Mutexhard
- Queue copies a value rather than storing its addresseasy
- Count a burst of task notificationsmedium
- Handle a full queue without blockingmedium
- Consume a notification burst one count at a timemedium
- Insert urgent work at the front of a queueeasy
- Discard stale jobs with a queue resetmedium
- Measure queue occupancy and remaining capacityeasy
- Poll an empty queue without corrupting the last valueeasy
- Wake a blocked sender when a queue slot opensmedium
- Time out a queue receive and retry after new datamedium
- Observe how a binary semaphore coalesces signalseasy
- Handle saturation of a counting semaphoremedium
- Observe mutex priority inheritance and restorationhard
- Accumulate independent event bits in a notificationmedium
- Publish a latest-value notification payloadmedium
- Reject an overwrite of an unread notificationmedium
- Acknowledge selected notification event bitshard
- Cancel a task blocked on a queue receivehard
- Distinguish yielding from blocking a high-priority taskmedium
- Advance overdue periodic deadlines without drifthard
- Distinguish blocked tasks from suspended tasksmedium