Posts by Category

Articles

Accessing Complex C Data Structures from Python

14 minute read

Explore advanced techniques for interfacing complex C data structures with Python using ctypes and SWIG. Learn how to seamlessly pass complex data structures...

Building Bespoke Debian Distros for RISC-V

20 minute read

In this article we will go over the steps to build a bespoke Debian distro for RISC-V. We will use QEMU to emulate the RISC-V architecture and build a Debian...

Understanding RISC-V semihosting

14 minute read

Semihosting lets embedded systems talk to a host computer through a debugger interface to perform tasks such as file I/O, and printing to the console. This a...

Using Jenkins with BitBucket Webhooks on AWS

7 minute read

Bitbucket lets you trigger webhooks for git events that are interesting to your build and test infrastructure. In the past, I have played around with it usin...

Adding Custom Packages to Buildroot

3 minute read

This article talks about adding a custom package into buildroot for creating your own Linux distribution for embedded and emulation targets.

Docker 101 for embedded systems Dev and DevOps

21 minute read

I started using docker back in 2016 and ever since, I have been using it in the context of embedded systems DevOps. This article condenses the learning so th...

Building a barebones web-push server

4 minute read

We use push notifications from web-sites on a daily basis. This article is about building one from the ground-up in order to understand how the whole system ...

Exploring virtualization in RISC-V machines

12 minute read

“RISC-V is classically virtualizable” – We come across this statement very often when we read about the merits of the RISC-V ISA. This article looks at what ...

Decrypting embedded TLS communication

2 minute read

While developing cloud connected products, one of the major challenges is debugging application layer errors within a TLS connection. This article describes ...

Understanding JSON Web Tokens

5 minute read

JSON Web Tokens (JWT) are becoming popular even outside the traditional web authentication use-cases with the advent of IoT and connected devices. This artic...

Secure firmware upgrade for embedded systems

8 minute read

General principles, architecture, guidelines and good practices for secure over the air (OTA) and over the host (OTH) firmware upgrade for an embedded device

Understanding X.509 Certificate Structure

12 minute read

An insight into the format and technologies used to pack a X.509 certificate. This tutorial introduces the concepts and parses through a TLS certificate to b...

Introduction to digital certificates

12 minute read

Introduction to digital certificates and the basic concepts of hashes and cryptographic algorithms that are used to build trust based secure systems

Building an E2E IoT system with Raspberry Pi

14 minute read

My experiences with building an end to end IoT system using a Raspberry Pi, an Arduino and a MPU6050. The post describes the details of how to compile and se...

Buildroot and Raspberry Pi

3 minute read

Steps to compile and bring up a minimalist kernel for Raspberry Pi using Buildroot

Writing Linux Device Drivers - Part 1

4 minute read

This tutorial gives a quick introduction to writing Linux device drivers. It will not make you device driver experts, but will give you a starting point to s...

Adding new menu item to PuTTY

1 minute read

I came across a requirement to add a new easy access menu item to the putty terminal window for Windows. This article explains how I did it.

Advanced Shell Scripting

3 minute read

A collection of advanced tips and tricks to create wonderful shell scripts

Test coverage analysis with GCOV

6 minute read

A quick tutorial on using GCOV for test coverage analysis. This will get you started to run analysis on your complex test cases.

UPnP Device Architecture

24 minute read

An article that provides an in-depth understanding about the UPNP protocol and its foundational technologies like HTTP, XML, SOAP etc

USB-3.0

19 minute read

An introduction to the core concepts and building blocks of USB 3.0 device side protocol for those who are aware of USB 2.0

USB-2.0

21 minute read

An in-depth tutorial introducing the USB2.0 device side protocol with detailed illustrations on how transactions happen.

PIC microcontrollers

29 minute read

A tutorial on 8 bit PIC Microcontroller architecture and development tools

Device drivers

Writing Linux Device Drivers - Part 1

4 minute read

This tutorial gives a quick introduction to writing Linux device drivers. It will not make you device driver experts, but will give you a starting point to s...

Tutorial

Accessing Complex C Data Structures from Python

14 minute read

Explore advanced techniques for interfacing complex C data structures with Python using ctypes and SWIG. Learn how to seamlessly pass complex data structures...

Building Bespoke Debian Distros for RISC-V

20 minute read

In this article we will go over the steps to build a bespoke Debian distro for RISC-V. We will use QEMU to emulate the RISC-V architecture and build a Debian...

Understanding RISC-V semihosting

14 minute read

Semihosting lets embedded systems talk to a host computer through a debugger interface to perform tasks such as file I/O, and printing to the console. This a...

Using Jenkins with BitBucket Webhooks on AWS

7 minute read

Bitbucket lets you trigger webhooks for git events that are interesting to your build and test infrastructure. In the past, I have played around with it usin...

Adding Custom Packages to Buildroot

3 minute read

This article talks about adding a custom package into buildroot for creating your own Linux distribution for embedded and emulation targets.

Docker 101 for embedded systems Dev and DevOps

21 minute read

I started using docker back in 2016 and ever since, I have been using it in the context of embedded systems DevOps. This article condenses the learning so th...

Building a barebones web-push server

4 minute read

We use push notifications from web-sites on a daily basis. This article is about building one from the ground-up in order to understand how the whole system ...

Exploring virtualization in RISC-V machines

12 minute read

“RISC-V is classically virtualizable” – We come across this statement very often when we read about the merits of the RISC-V ISA. This article looks at what ...

Decrypting embedded TLS communication

2 minute read

While developing cloud connected products, one of the major challenges is debugging application layer errors within a TLS connection. This article describes ...

Understanding JSON Web Tokens

5 minute read

JSON Web Tokens (JWT) are becoming popular even outside the traditional web authentication use-cases with the advent of IoT and connected devices. This artic...

Secure firmware upgrade for embedded systems

8 minute read

General principles, architecture, guidelines and good practices for secure over the air (OTA) and over the host (OTH) firmware upgrade for an embedded device

Understanding X.509 Certificate Structure

12 minute read

An insight into the format and technologies used to pack a X.509 certificate. This tutorial introduces the concepts and parses through a TLS certificate to b...

Introduction to digital certificates

12 minute read

Introduction to digital certificates and the basic concepts of hashes and cryptographic algorithms that are used to build trust based secure systems

Building an E2E IoT system with Raspberry Pi

14 minute read

My experiences with building an end to end IoT system using a Raspberry Pi, an Arduino and a MPU6050. The post describes the details of how to compile and se...

Buildroot and Raspberry Pi

3 minute read

Steps to compile and bring up a minimalist kernel for Raspberry Pi using Buildroot

Writing Linux Device Drivers - Part 1

4 minute read

This tutorial gives a quick introduction to writing Linux device drivers. It will not make you device driver experts, but will give you a starting point to s...

Adding new menu item to PuTTY

1 minute read

I came across a requirement to add a new easy access menu item to the putty terminal window for Windows. This article explains how I did it.

Advanced Shell Scripting

3 minute read

A collection of advanced tips and tricks to create wonderful shell scripts

Test coverage analysis with GCOV

6 minute read

A quick tutorial on using GCOV for test coverage analysis. This will get you started to run analysis on your complex test cases.

UPnP Device Architecture

24 minute read

An article that provides an in-depth understanding about the UPNP protocol and its foundational technologies like HTTP, XML, SOAP etc

USB-3.0

19 minute read

An introduction to the core concepts and building blocks of USB 3.0 device side protocol for those who are aware of USB 2.0

USB-2.0

21 minute read

An in-depth tutorial introducing the USB2.0 device side protocol with detailed illustrations on how transactions happen.

PIC microcontrollers

29 minute read

A tutorial on 8 bit PIC Microcontroller architecture and development tools

Tutorials