Sitemap

A list of all the posts and pages found on the site. For you robots out there is an XML version available for digesting as well.

Pages

Open CAD Tools

Free and Opensource Tools that can be used for Hardware Designing and Validation

Posts

Instructor’s Guide to GitHub Classroom

8 minute read

Published:

Version control is a foundational skill in modern software development, and Git remains the most influential tool in this space. This post provides a brief history of Git, an overview of the ecosystem of platforms built around it, and a short, instructor-focused guide to using GitHub Classroom for managing programming assignments.

Routour🗼: Building the Ultimate Travel Router

6 minute read

Published:

Recently I finished the project Routour🗼, a powerful travel router that is compact yet supports many features with components including Raspberry Pi Compute Module 4 (CM4), Intel BE200 WiFi card, DeskPi Mini Cube, and RaspAP with Debian and can be powered by a small power bank. In this post, I am documenting the entire process since I believe this would help someone in the future. This includes the hardware modifications and software configurations needed to achieve a feature-rich yet portable network router.

CrPT🔑: Lattice Problem

4 minute read

Published:

Welcome to the second episode of the CrPT🔑 series. In this episode, I discuss lattices and how they are connected to cryptography. As we discussed in the introduction episode, since quantum computers are expected to break many current asymmetric algorithms, lattice-based methods have attracted growing interest as a promising post-quantum alternative. Lattice-based cryptography relies on the hardness of solving lattice problems, let’s look at the fundamental idea behind them.

CrPT🔑: Applications of Cryptography

8 minute read

Published:

Welcome to my new blog series CrPT🔑 that discuss about applications of cryptography. In this first episode, I will explore current trends in cryptography and their impact on various applications. With significant developments in Artificial Intelligence (AI) and recent breakthroughs in quantum computing, it is a great time to discuss the future of cryptography. This episode aims to examine the factors that will and will not influence the future of applications that rely on cryptography.

Android Device Security and GSI: A Layman’s Guide

5 minute read

Published:

Android devices come with several security components that work together to protect your device and personal data. Here’s a simple explanation of who makes these components, their security implications, and how they collaborate to keep your device (data) safe.

Upgrading a Raspberry Pi CM4

2 minute read

Published:

I had couple of Raspberry Pi CM4 boards with the lowest specs, each with 1GB of memory and 8GB of eMMC. Both of these specs are not great when you want to do some resource intensive computations with these single board computing devices. This became a limiting factor especially when trying to run heavier workloads, containerized applications, or even basic development environments.

TinyOS🐞: Interrupts and Peripherals

9 minute read

Published:

A computer needs to communicate with the external world to perform tasks. To facilitate this, we have peripheral hardware. When these peripherals need to talk to the operating system, we have interrupts. In this episode of TinyOS🐞 tutorial series, we will be looking at interrupts and how to use them.

TinyOS🐞: Spinlocks

8 minute read

Published:

In this episode of episode of the TinyOS🐞 tutorial series, we will be looking at how to protect critical sections in processes using spinlocks.

TinyOS🐞: Preemptive Scheduling

9 minute read

Published:

In the MultiTasking episode of the TinyOS🐞 tutorial series, we implemented “Cooperative Multitasking”. Next in TimerInterrupt episode, we discussed how the RISC-V time interrupt mechanism works. If you have missed them, I highly recommend going through them before proceeding.

TinyOS🐞: TimerInterrupts

11 minute read

Published:

In the previous episode MultiTasking, we implemented a operating system with cooperative multitasking. However, without the implementation of an interruption mechanism, our system cannot support preemptive multitasking.

TinyOS🐞: Multitasking

5 minute read

Published:

In the previous episode ContextSwitch of TinyOS🐞, we introduced the context switching mechanism under the RISC-V architecture. In this episode we will be looking at Multitasking in our DIY operating system.

Docker for Research🐳

5 minute read

Published:

Lots of researchers have been curious about my Docker setups. Docker is actually a super handy tool for research. So, in this article, I’ll walk you through the basics of Docker for engineers/researchers.

TinyOS🐞: Context-Switch

5 minute read

Published:

In the previous episode HelloWorld of TinyOS🐞, we discussed how to print strings to the UART serial port for a specific processor on QEMU that utilises RISC-V architecture. This episode takes us further into the operating system territory, introducing the concept of “Context-Switching”.

TinyOS🐞: HelloWorld

9 minute read

Published:

Welcome to the first and simplest episode of TinyOS🐞. In this episode we will be looking at memory map settings of QEMU and writing a simple HelloWorld program. If you missed the introduction article about TinyOS🐞, you can find it here.

TinyOS🐞: Operating System Tutorial

1 minute read

Published:

TinyOS🐞 is a tutorial series about minimal operating system kernel implementation based on the comprehensive tutorial series mini-risscv-os. This operating system kernel is based on RISC-V instruction set architecture. Credits goes to the original authors of mini-risscv-os. A fully built environment is available as a docker environment. This tutorial will cover several chapters related to implementing a operating system from begining.

Verification of Systems Code

12 minute read

Published:

Previously we looked at the verification of Verilog hardware implementations. In this post, we will be looking at the verification of firmware or systems code. Here the hardware implementation is abstracted with Instruction Level Abstraction (ILA). This allows us to make complex verification problems more tractable.

Veri(fy)log : Verifying Hardware with Rosette

6 minute read

Published:

In previous post, we discussed Racket and Rosette. This is the post where we are going to verify our hardware designs using the infrastructure we have developed so far. In a nutshell, we will be looking at verifying Verilog hardware designs with Rosette.

Rosette101

15 minute read

Published:

This post is focusing on the verification with Rosette. Rosette defines extensions on Racket programming language to uplift the process of verification of implementations. We introduced Racket basics in the previous post. To make things more interesting we have used Jupyter Notebook environment. This time we will be using Rosette in the same environment, which will make verification problems much more interactive and fun.

Racket101

7 minute read

Published:

In this post, we will be looking at basic Racket programming. At the end of the post, we will be doing some Racket programming exercises on the Jyputer environment. If you missed the previous post, where we looked at setting up the environment for the RackeTutes tutorial series, you can check it out from here.

Racket with Jupyter

1 minute read

Published:

RackeTutes is a tutorial series for Racket and Rosette solver-aided programming language to promote “Secure and validated” hardware designs.

Future of Computing Giants

5 minute read

Published:

This article is based on a talk conducted by Professor Jack Dongarra, who is a world renowned expert in numerical computing and tools for parallel computing and also the Turing Award winner in the year 2021.

Bootloader at Home?

6 minute read

Published:

So far we looked at implementing firmware for bare metal use cases. But you may have seen that in most of the hardware SDK’s, they suggest using a bootloader to load your programs.

Linker Scripts in Brief

6 minute read

Published:

In this episode of the firmware tutorial, let us build a firmware linker script from scratch for picoRV processor. You may remember in the previous tutorials we have used sections.lds to get the elf file. This linker file contains information about how much memory is available in our system and where and where specific hardware components use the memory so that the compiler can place different functions appropriately.

Hello World! Firmware

5 minute read

Published:

In the previous article, we looked at the different steps involved in the process of compiling firmware that is ready to run on actual hardware. For that, we have used the default firmware given in the picoRV repo. In this article, we write a very simple program from scratch to print “HELLO WORLD” to the UART output of the picoRV processor.

Firmware at Bare metal

5 minute read

Published:

In this tutorial, we are going to look at writing firmware for an embedded hardware device. This tutorial is solely focused on simulations. However, it can be synthesized to work on FPGAs.

Neural Network on 8-bits?

2 minute read

Published:

XOR neural network is one of the basic and simplest neural networks. It is trained by XOR gate input as input features and XOR gate output as the prediction. A basic XOR gate can be created using 3 layers neural network. The architecture that I have used and how I inferred it on FPGA is discussed here onwards.

Learn from Failures

6 minute read

Published:

This article is about two incidents that happened in the past, creating catastrophic tragedies due to mistakes in simple lines of code. Incidents like this signify the importance of verification of the systems that we build.

projects

Automatic Implementation of Secure Silicon (AISS)

The Automatic Implementation of Secure Silicon (AISS) program aimed to reduce the complexity and overhead associated with developing secure integrated circuits. While this was a collaborative effort rather than an individual project, I contributed to AISS during my graduate studies.

DUO-DE: Surface-Duo Dual Experience

Microsoft officially ceased updates and support for the Surface Duo line in early 2023, marking the end of its interest in the dual-screen smartphone market. However, with AOSP GSI and the help of the opensource community, we duilt the Surface Duo Dual Experience (DUO-DE) custom ROM with OTA update support.

Project Evie: Fire Extinguisher Setup

If you ever plan to install a fire extinguisher inside your Alpha chassis car, or take it to the track, you may already know there are several existing solutions for mounting it. The basic requirement in either case is having a fire extinguisher within arm’s reach inside the vehicle. However, most of the mounts I found online position it directly in front of the passenger seat, which can be intrusive for daily driving and may also interfere with or damage the OEM interior over time.

Project Evie: Tweaks on GM Alpha Platform

The GM Alpha platform is a foundation of performance-focused vehicles such as the Cadillac ATS and CTS, Chevrolet Camaro (6th generation), offering a well-balanced chassis, strong powertrain options, and a highly flexible architecture. In this series, I document a set of practical modifications for this platform.

Depth Map Generation on FPGA

Real-time depth map generation on low end FPGA with supporting 320x240 and 160x120 resolutions. The main objective of this project is to implement a reliable embedded system on a lower end FPGA with limited resources. This project is based on Disparity calculation based on Sum of Absolute Difference algorithm and creating a depth map.

RoboCat Drone: Robust Flying Project

Design files of the simple heavy lifting drone created for Drone enduarance race Sky of Icarus. The frame’s design incorporates reinforcement at critical stress points, such as motor mounts and landing gear attachments, to distribute forces evenly and prevent structural failure.

Realtime Kinematics and NTRIP

Real-Time Kinematics (RTK) GPS is a precise positioning technology that enhances the accuracy of standard GPS systems by utilizing additional information from reference stations. Traditional GPS receivers provide location information with an accuracy ranging from a few meters to several tens of meters.

publications

talks

teaching