Linux & Python on RISC-V using QEMU from scratch
This article explores how to set up RISC-V on QEMU, boot a simple application on it using the PK kernel, and boot a cross-compiled Linux on the emulation platform. We top it by booting a standard Linux distro with python support.
Analyzing size of ELF sections and symbols to generate a modular report.
If you are working on any serious embedded systems project, you will come across the need to optimize the memory footprint of your code sooner or later. When the crude methods like high levels of compiler optimization and the standard tips and tricks wont cut it any more, you will have to break out your work boots and the hardhat and get to digging.
Setting up a Github Actions based CI system for embedded development using PIC32
GitHub Actions is a workflow automation offering from GitHub. While there are a lot of tutorials out there talking about using GitHub Actions on your web/software project, there are not many on using it for CI/CD workflows for embedded firmware development. In this article, we will go through the steps involved in creating a build test environment for a PIC32 based projects hosted in GitHub.
Decrypting embedded TLS communication
While developing cloud connected products, one of the major challenges is debugging application layer errors within a TLS connection. This article describes a scalable method to decrypt application level communication within a TLS connection even when it happens with a cloud based server.
Understanding JSON Web Tokens
JSON Web Tokens (JWT) are becoming popular even outside the traditional web authentication use-cases with the advent of IoT and connected devices. This article gives you a concise overview of JWT and and all that is need to get started with using them
Secure firmware upgrade for embedded systems
General principles, architecture, guidelines and good practices for secure over the air (OTA) and over the host (OTH) firmware upgrade for an embedded device
JTAG basics and usage in microcontroller debugging
JTAG is omnipresent in the microcontroller and FPGA world in the form of programmers and debuggers. Let us peek under the hood and understand how JTAG works and understand how IDE based debug works with microcontrollers.
Understanding X.509 Certificate Sructure
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 bring the concepts together.
Introduction to digital certificates
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
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 setup a minimal kernel with networking and web server support and developing a minimal websocket server to get real time data into the web page based user interface.
Buildroot and Raspberry Pi
Steps to compile and bring up a minimalist kernel for Raspberry Pi using Buildroot
Writing Linux Device Drivers - Part 1
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 start learning about Linux device drivers.
Adding new menu item to PuTTY
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
A collection of advanced tips and tricks to create wonderful shell scripts
Test coverage analysis with GCOV
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
An article that provides an in-depth understanding about the UPNP protocol and its foundational technologies like HTTP, XML, SOAP etc
USB-3.0
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
An in-depth tutorial introducing the USB2.0 device side protocol with detailed illustrations on how transactions happen.
PIC microcontrollers
A tutorial on 8 bit PIC Microcontroller architecture and development tools