Interactive Graph

Loading Graph...

Journey

timeline title Campaign Progression section Training Ground 2001 : Spawn Point 2019 : University Arc : Wooden Sword Equipped : Core Stats Unlocked : Side Quest - Sky Courier Trial : Side Quest - Mechanical Scribe section Village Arc 2023 : Village 1 - Matrix : Kingdom of Sight : Cameras, NVRs, Optics 2025 : Village 2 - MediaTek : Forge of Motion : GPUs, Android, Software Growth 2026 : Village 3 - Arm : New Region Unlocked Every player starts somewhere. ...

April 7, 2026 · 4 min

Embedded Interview Questions

Linux Theory User space <-> Kernel space & Driver Interface What communication method i use to communicating between User space to Kernel space. How do the driver/device know which application is communicating with it. write() api in user and kernel space, what are difference in arguments. From which header write() is included. Explain ioctl calls and its handling in kernel and user space. What are the things application is dependent on to call a particular ioctl. What is systemcall table Device Tree & Platform Why and How is Devise Tree used. How is the device tree actually passed or accessed by the drivers. How is the physical device be mapped to the driver device. How is the platform bringup done? And what do we mean by platform devices. Interrupts & Deferred Processing How does interrupt is managed by the kernel? Describe each modules called which are done before calling isr and what are the propagation delay while interrupt is called. How are interrupts managed by the kernel What are arguments to a particular interrupt regestering function Top half and bottom halfs, how are the complex isr managed. Top halves and bottom halves Memory Management & DMA How kernel manages memory, like how malloc works How is the TLD used to manage physical and virtual addresses? What exactly kernel does? What is DMA and how does the driver handels it. What is DMA and how it works? Kernel Debugging & Virtual FS How will you debug kernel crash or panic? What is procfs and sysfs Synchronization & Concurrency Mutex semaphor explanation and difference Race and deadlock conditions Boot & Init Linux boot process What are init systems? Example systemd or any other init system Misc Kernel / Language Concepts Describe static and auto What is volatile used for? Can const be volatile? Write sudo code for character device driver Embedded Communication Protocols I2C Start and stop bits, the data and clock config at start and stop SPI lines Programming Theory Concurrency & OS Concepts What is the difference between Mutex and SpinLock What are mutex, threads, spinlocks Data Structures LinkList Data Structures: Stack, Queues, Heap C Language & Memory Model C Concepts: BSS, Data Segment, ReadOnly segment. Diff between structure and union and their sizes What is pass by value and pass by reference look like? Calculate the no. of elements inside of array if the array pointer is passed to a function. Function Pointers & Declarations Write declaration of An array of 5 pointers to a fucction. These functions are taking int arg and return int Program Execution & Memory Layout What exactly happens, what would be loaded in memory and which segments main(){printf("Hello World")}; cc main.c ./a.out Data Structures & Algorithms (DSA) Arrays & Searching Get the highest and 2nd most highest number from unsorted array without sorting it. int arr[10] = {5, 10, 15, 3, 9, 21, 7, 12, 2, 16} Write a program to search inside of the array in 0(n/2) time complexity. Get a number from user and count the no. of times that number is present inside the array. Bit Manipulation Convert 0x12345678 to 0x34127856 using bit operators Write a macro to toggle a given bit Get a number in hex and start and end range number from user. Write a function which sets the number from the start till the end bit. The program should be independent from the machine architecture. Count no of set bits in a number Linked List Problems Reverse a link list Solve the error occured(sig. fault) in the last question of 1st round. Write a program to find middle point of a linked list Implement Linklist, its structure size, padding, allocating and print list wrappers. Memory Management Assume you have a memory pool of 1G allocated using malloc(). Now, implement my_malloc() and my_free() which will operate on this 1G chunk of memory to service multiple threads in an application. Try to implement the APIs which can alloc/free in O(1) time complexity. Multithreading Write a program which has 2 threads, 1 will take input from the user and another thread will do some processing on that input. Program to print from 0 to 100 sequentially using 2 threads, 1st thread will print only even values and 2nd thread will print only odd values. Debugging & Miscellaneous Implement sizeof operator Write a program to print diamond pattern Print all prime numbers between 1 to 10. Follow up: Store the prime numbers in singly linked-list.

January 23, 2026 · 4 min

BSP Topics

1. Linux Kernel Internals Importance: Understanding kernel internals is crucial for BSP and driver development as it helps in debugging, optimizing performance, and modifying the kernel to meet hardware-specific requirements. Topics: Kernel Architecture: Monolithic vs Microkernel, Kernel and User Space interactions. Process Management: Understanding task_struct, process states, scheduling algorithms. Interrupt Handling: SoftIRQs, tasklets, bottom halves, handling IRQs efficiently. Memory Management: Paging, kmalloc/vmalloc, slab allocator, ARM MMU and memory regions. Syscalls: How system calls work, writing custom syscalls. Kernel Synchronization: Spinlocks, mutexes, semaphores, barriers, RCU. Workqueues and Timers: Deferred execution, using timers for scheduling tasks. 2. Linux Device Drivers Importance: Device drivers are the bridge between hardware and the OS. Understanding drivers is crucial for embedded systems and BSP development. ...

February 4, 2025 · 2 min

Hola Bot

Holonomic Drive Robot: A Versatile Path-Planning Machine Overview The Holonomic Drive Robot is an innovative, three-wheeled robot designed for precision path planning and image-based drawing. It combines advanced robotics algorithms, custom hardware, and creative problem-solving to deliver exceptional performance in a variety of tasks, from geometric pattern generation to drawing intricate images like logos. Key Highlights 1. Motion Planning and Control Implemented a novel path-planning approach to optimize motor velocity and trajectory precision. Designed custom algorithms to address trajectory distortion caused by motor speed limitations. 2. Hardware and Software Integration Successfully integrated ESP32, eYFI Mega, stepper motors, and LiPo batteries into a cohesive system. Overcame challenges such as faulty motor drivers and optimized power delivery for reliability. 3. Image Processing and Simulation Extracted contours from images and translated them into robot motion commands. Utilized ROS and Gazebo for testing and refining the system in a simulated environment. 4. Real-Time Problem Solving Debugged critical hardware issues, such as malfunctioning motor drivers and damaged LiPo cells. Enhanced communication latency between the laptop and ESP32 from 1 second to 200ms by identifying and resolving protocol bottlenecks. 5. Creative Outputs Enabled the robot to draw patterns such as Lissajous figures (infinity loops) and complex logos. Developed a custom ink mixture to ensure visibility and erasability for pattern drawing. Technologies Used Hardware: ESP32, eYFI Mega, LiPo batteries, and stepper motors. Software: ROS for robot control, Gazebo for simulation, and Python, C for software logic. Tools & Libraries: OpenCV for image processing, AccelStepper for motor control, and custom ROS packages for integration. Development Timeline January - February 2023: Prototyping and Hardware Development Designed and built the physical robot body, integrating motor drivers, sensors, and controllers. Calibrated the camera with over 100 samples for precise localization. Debugged and optimized motor driver configurations, achieving simultaneous operation of all wheels. Developed non-blocking motor control using the AccelStepper library. March 2023: Software Refinement and Final Tests Created a contour extraction function for converting images into path points for drawing. Integrated a servo-based pen mechanism for on/off control during drawing operations. Conducted intensive testing, fixing indexing bugs, and optimizing scripts for various patterns, including the Snapchat logo and infinity shapes. Demonstrated successful path-following in a simulation environment using Gazebo. Challenges Overcome Latency in Data Transmission: Resolved slow communication by identifying a missing newline character in transmitted data, reducing latency from 1 second to 200ms. Battery and Power Issues: Diagnosed and replaced faulty LiPo battery cells, ensuring uninterrupted operation. Hardware Failures: Addressed motor driver failures and loose connections with creative soldering solutions and robust wiring techniques. Achievements Successfully implemented conditional path-following to optimize motor velocity during complex path execution. Demonstrated precise image drawing with minimal distortion using camera-calibrated localization. Created a detailed documentation repository and shared project outcomes through YouTube videos, showcasing the robot’s capabilities. Media Video Demonstrations: Watch Demo Video Conclusion The Holonomic Drive Robot is a testament to innovative thinking, technical expertise, and perseverance. It serves as a versatile platform for robotics experimentation, offering potential applications in art, industrial automation, and beyond. ...

March 30, 2023 · 3 min

Vitarana Drone

Duration: Oct 2020 – Feb 2021 Team Members: Rishav Singh, Kashyap Joshi Technology: Python, ROS, Drone/Quadcopter, Gazebo, Git, Linux Overview Vitarana Drone was part of the e-Yantra Robotics Competition 2020-21, an international robotics outreach program hosted by IIT Bombay. Competing against 2,603 teams from 572 colleges, we designed an autonomous drone-based delivery system to execute precise object handling and delivery tasks in a simulated environment. Project Journey Beginning Entered the competition in our 2nd year of B.Tech. Started with 4 members but 2 left in between, we try to bring em on board but it was unavoidable. So work increased on 2 people. But still managed to divide the task in smaller, easily doable parts and divided according to the skills Focused on breaking tasks into manageable parts and acquiring new skills on the go. Key Milestones Task 1: Position and Altitude Control Developed and tuned PID controllers for roll, pitch, yaw, and throttle. Achieved precise setpoint control after extensive testing and parameter tuning. Took around 5 days to study and impliment the algorithm but tuning the PID required 10 days straight. Task 2: Obstacle Avoidance Considering we were given 4 sensors on 4 sides with 25 meters range each, we searched and studied about many path planning algorithms. Implemented a 2D custom Bug Algorithm for object avoidance using sensor inputs. Designed ROS actions for barcode scanning and delivery location determination. Task 3: Advanced Pathfinding Enhanced pathfinding for 3D environments to navigate complex obstacles by changing height(throttle). Used image processing for accurate marker detection and landing precision. Task 4: Delivery Optimization Developed a mechanism for retrieving delivery boxes from a warehouse grid and delivering them to specified locations. Improved marker scanning by adjusting drone altitude to enhance accuracy during detection. Enhanced the obstacle avoidance algorithm for more reliable navigation. Despite being one day late for the deadline, implemented major improvements within a single day, incurring a 25% penalty while ensuring task completion. Task 5: Time-Limited Arena Challenge Tasked with delivering and picking up as many boxes as possible within an 8-minute timeframe, with scoring based on delivery distance. Prioritized delivering boxes to distant locations to maximize points, balancing quality and speed (race against time). We had 2 choices either to deliver near boxes first to increase number of boxes or to deliver furthest boxes first to maximize distance points. We selected the later one because our algo was taking more time to detect and land on marker. Overcame many difficulties like sometimes the markers were so near to each roof that drone scanned wrong marker sometimes. So we had to resolve the issue by taking the nearest path to the provided approx location of marker. Introduced a velocity controller to increase drone speed in obstacle-free zones, enhancing overall efficiency. Task 6: Final Round Challenge Faced a more complex delivery and pickup task with tighter constraints and only two days for completion. Focused on improving code robustness and refining interconnections between controllers to prevent errors and crashes. Documented the code extensively on the final night of submission, working under high pressure with short power naps to maintain productivity. Me and my partner waking up each other after taking 10 min power naps. Main difference between our solution and top 6 solution was that we focused more on stability over speed. Although we missed the finals, the task highlighted the importance of stability and meticulous planning in achieving high performance. Conclusion Participating in this competition provided invaluable lessons in technical problem-solving, team collaboration, and time management. Despite the challenges of a reduced team and tight deadlines, we demonstrated resilience and adaptability, balancing stability with performance optimization. While we narrowly missed the finals, the experience significantly enhanced our expertise in control systems, path planning, and autonomous systems, preparing us for future complex engineering challenges. ...

October 1, 2020 · 4 min