Content tagged embedded-system

There are many pretty great ARM boards out there, but the stock firmware for most of them is ridden with binary blobs and is generally an abandonware. Fortunately, it's usually not that hard to make Debian work on most of them, including all the necessary multimedia peripherals.

Ever since I can remember, I have wanted to build a quadcopter. Sure, you can buy one that will be way better than whatever you can make yourself, but where's the fun in that? The proper way to do it is to order a bunch of stuff that seems reasonable, put it together, make it (barely) fly, and iterate until the point where a swarm of them can play ping-pong.

I have a love-hate relationship with developing software for embedded systems. On the one hand, it's loads of fun. On the other, there seem to be lots of closed-up magic proprietary blobs required to make things work. The same can usually be achieved with pure open source if you put some time and understanding into it. This post describes an open-source template for FRDM-K64F.

This post revisits the game project some half a year after the game already worked. The game used timers to handle asynchronicity, which was pretty messy. This post introduces an RTOS, complete with multiprocessing, a scheduler, and semaphores.

Installing and running Zephyr RTOS on Arduino 101 using custom-built open source toolchains.

Making the UEFI installation of the UP Board boot Debian and making Debian drive the multimedia peripherals.

Installing and running Zephyr RTOS on FRDM-K64F.

The last thing we need is some randomness for the game not to be boring. We will build a Linear Congruential Generator that reads out the timer register on the first button event to get a seed. We will also need a game engine so that things don't get too messy.

It would not be a cool game if it did not make funky noises. This post describes a way to build a sound device using a DAC and a bunch of resistors. This device will be able to play Nokia's RTTTL tunes.

We need to handle IO to move the defender and fire at the invaders. GPIO-connected buttons will do fine to trigger the shots, and we will read out a potentiometer through an ADC to determine the defender's position. This post describes the HAL functions for that and for handling timers, which is always helpful.

It's obvious, but Silly Invaders needs a display to display invaders. This post describes HAL calls to handle an old Nokia phone display through SSI and other things that were necessary to make it work, such as heap management.

I want my Alien Invaders to be portable and work on other microcontrollers. For that reason, the game logic will use a Hardware Abstraction Layer to communicate with the device. This post describes a stem of that layer dealing with hardware initialization and UART. Every future post will extend it with new functionality.

I have decided to build a simple Alien Invader game to learn more about microcontrollers. It will use Tiva as a base and a bunch of simple peripherals for I/O. This post describes a convenient development environment without any proprietary fluff.

Typically, all the tutorials on building and debugging software for the Tiva microcontroller use Windows and clickable GUI IDEs. We can achieve the same with open source tools and eliminate all the useless fluff.

I wanted to learn basic electronics, but it's dead boring to do it on paper, so I decided to build a robot. It can follow the light and reacts to sound.

I like my computers to run Debian. Deploying it on strange devices is loads of fun. Here's how to bootstrap it on Cubox-i4Pro.