LμKOS Process Management

This post will detail the LμKOS Process Manager’s (PM) subsystem and what makes it tick. The format of this post will roughly follow the previous post for consistency’s sake. The terms here will refer to the terms in the previous post, so hop back there for cross reference. Definitions Term Acronym Definition Thread – A single execution context in one Address Space, and contains associated properties (discussed below) Process – A collection of Threads which all reside in the same…

0
Read More

LμKOS Virtual Memory Management

This post will detail the design of the Virtual Memory Management subsystem of the LμKOS kernel. You’ll note that this post follows along with the virtual memory manager design doc. That said, let’s begin! First, Some Definitions I’ll be using several terms and acronym in this post that are not necessarily ubiquitous, and want to make sure I define them so it’s easy to understand. Term Acronym Definition Virtual Address VA An address which represents a resource in a computing…

1
Read More

Kernel Series: Introducing LμKOS, the Learning Microkernel Operating System

Some may recall a post I wrote a few weeks ago on the differences between microkernel and monolithic kernel operating systems. The motivation for that post had started months ago when I decided to write a microkernel OS from scratch to bolster my understanding of these systems, and generally just to enjoy a hobby of mine; besides, I had a ton of new free time (thanks COVID-19). I’ve been working on a project I’ve called LμKOS (pronounced “Lucas” like the…

1
Read More

Calculus Made Simple

To many, integral and differential calculus may as well be a foreign language from an alien planet. Many people don’t grasp the fundamental concepts which drive the calculus, and consequently fail to derive the value they otherwise could from that knowledge. I’ve always found the key to making use of some bit of knowledge is to internalize it, to restate the concepts in terms that are familiar and comfortable to you, but to compare this restatement and internalization to the…

1
Read More

Kernel Design: Microkernel vs. Monolithic

Motivation This hotly debated topic has been around for decades, and it is just as alive today as it was 28 years ago. The truth is, there are fundamental differences in the theory which drives the design of a monolithic kernel versus a microkernel. In this post, I will extrapolate from my knowledge of various kernel designs to explore what these two primary types are, what their features, benefits, drawbacks and implications may be. I’ll also briefly explore the extension…

1
Read More

Virtualization for Embedded Systems Series: Type-2 Hypervisors Deep Dive

In the previous post in this series, we dove deep into container technology and looked at how to implement some functionality into containers applicable to embedded devices. In this post, we will look at type-2 hypervisors and dive deep into practical ways to use them for embedded systems. This post will be light on content as I am quite busy currently, but wanted to wrap up this series. I will try to circle back and dive deeper into this topic…

0
Read More

Better JTAG on the Cheap with the FT232H

A couple of weeks ago I wrote a post about using the FTDI FT232R as a cheap JTAG debugger. I’ve been using it for a bit now to play with my Raspberry Pi 3B, and now that my code size has grown, the FT232R is just too slow to cut it. Here’s a breakdown: on the FT232R, the max speed I can set the adapter to is 3MHz. This has given me a transfer speed (loading via GDB) of around…

0
Read More
Raspberry Pi

JTAG On the Cheap with the FTDI FT232R

JTAG 101 What is it? JTAG stands for the Joint Test Action Group, and the TAP or Test Access Port this group defined is one of the most (if not the most) common way to program and debug embedded devices and computers of all flavors. For the professional, JTAG devices are bountiful and usually not too much of a strain on the commercial budget. But for the hobbyist, things aren’t so peachy. A Segger J-Link EDU can be had for…

1
Read More

Building a Customized Linux Image for Raspberry Pi with Yocto + Docker Support

Motivation I recently stumbled upon HypriotOS while looking for Docker-ready distributions for my Raspberry Pi 3B+. I flashed this onto and SD card and started playing around with it. It works incredibly well, but I noticed that it was built for armv7l which is a 32-bit implementation. Since the Raspberry Pi 3B+ has a 4x core Cortex-A53 which is 64 bit, I wanted to make use of the 64 bit processor! I’ve worked with Yocto before (in fact, my day…

0
Read More

Turning my Hallway Closet into a Drop Zone: Gallery

Genesis of a Project In our new house, we had a hallways closet that was massive. It was very deep, and fairly wide, but had low overhead, due to the stairs passing above it. My wife had the brilliant idea to turn this into a dropzone for shoes, parcels, mail, etc. She took to Pinterest to gather ideas, and I turned it into a weekend project. The Project Plan Regrettably, I didn’t capture all the “design” pieces, and only have…

0
Read More