From Microcontroller to Mainframe

In the past 20 years I worked on systems as small as 8bit microcontrollers with no Operating System to systems as large as IBM Z-Series Mainframes. I wrote software for small FreeRTOS, Zephyr and RTEMS based controllers with only a few LED’s as “output” to GUI programs for Windows and Linux.

Since low level programming has some special demands on the programming language the main languages I use, and consider myself a professional in, are C, C++, and when it can’t be avoided assembly. Other languages like Python, bash-scripting, lua, cmake, are also part of my daily work.

Due to personal interest and experience there are some areas where I can offer additional knowledge that can speedup things compared to software developers that are new in those areas.

Linux Embedded Distribution Development

For systems that can’t use an average Linux distribution like Debian, Fedora, etc. because of for example storage size restrains I develop highly customizable distributions based on PtxDist or Yocto that can be as small as 8 MByte.

Low Level Driver Development

When there is a need for a small specialized Linux distribution it most of the times means there is some custom hardware in use. For that hardware I can develop low level device drivers for the Linux kernel and bootloaders like U-Boot and Barebox.

RTOS and Baremetal

For systems where a 8 MByte OS is still to large I can offer baremetal or RTEMS, FreeRTOS and Zephyr based solutions on PowerPC, AVR32, and mostly ARM.

Lighting Control

Lighting Control for stage and theater is an rather specialized area with several unique technologies. Having knowledge of technologies like for example DMX, RDM, Art-Net and ACN, makes it a lot easier for me to get up to speed in software development projects that deal with those technologies.

Public Information Systems

Like with Lighting Control systems, Public Information Systems in the public transportation area deal with specialized protocols and demands. Working for clients in doing public transportation information systems and for clients doing public transportation power converters I collected extensive knowledge in that area.

Lenovo W530 Battery Upgrade

Not just washing green

Lenovo W530 Battery Upgrade

So the battery of my almost brand new (ok it is from 2012) Lenovo W530 lasted about 2 minutes when not plugged into mains power. Since the laptop is still OK I bought a replacement battery that fitted fine but the laptop greeted me with the following BIOS message.

/img/lenovo_accu_bios_error.png

Of course that is purely to protect me, because nobody else can make batteries like Lenovo. It has of course nothing to do with the fact that 3rd party batteries cost about 40euro and the Lenovo way over 100euro. And even if I would want to pay it, they are not available anymore.

[Read More]

Prettige Kerst

Merry X-Mas

Prettige Kerst

A few years back I wrote a RISC-V core and a DVI output demo and back then I mentioned I would add extra features to both of them. The past few years I not only updated my RISC-V core, but also combined it with the DVI output core to create basically a SOC.

The RISC-V core now can run GCC compiled code, so no need for hand written assembly code anymore. There are still several key features missing, like IRQ/Trap support (which makes it impossible to run some sort of OS at the moment).

[Read More]

Prettige Kerst

Merry X-Mas

Prettige Kerst

Prettige Kerst, Merry X-Mas. About 30 years ago in school I had to write one of my first C++ programs, it was supposed to print out a X-Mas tree on a green monochrome HP vt100 terminal connected to a HP-UX Unix machine.

/img/kerst_2022_output.png

I am not going to lie, I did have to think on how to write it again :-), and I have no idea if I wrote it like this back than in the early 90’s. Probably not, that was years before even C++98.

[Read More]

Core Memory - The Basics

Part 1/3

Core Memory - The Basics

Anybody that ever did some programming on a Unix based system will be familiar with Core Dumps, but ever wondered where that name came from?

It comes from a time (1950s - 1970s) where computer stored data on ferrite cores, a lot of tiny ferrite cores. And in case something went wrong, the data stored on those tiny ferrite cores was printed, dumped, on paper to be analyzed, a core dump.

/img/core_memory_module.jpg
/img/core_memory_match.jpg

[Read More]

Prettige Kerst

Merry X-Mas

Prettige Kerst

Prettige Kerst, Merry X-Mas, of course in style, by using a Digilent Nexys Video FPGA board to control a HDMI monitor.

/img/kerst_2021_final.jpg

The idea behind this mini X-Mas holiday project was to create a GPU for my RISC-V core, so it could output things on a monitor instead only turn on/off some LED’s. Since my VHDL skills are still not that great and calculating 1920x1080 pixels at 60Hz would mean FPGA clocks up to 147MHz which leave very little room for mistakes. Since I wanted it to have a bit of a C64 feeling I reduced the internal resolution from 1920x1080 to 480x270. Also I reduced the HDMI output from 1920x1080@60 to 1920x1080@30 so everything only has to run as 74MHz.

[Read More]

SID Bridge

Cortex M3 + FPGA Based SID player

SID Bridge

In 2020 I made a SID player based on a Lattice MachXO2 that was connected via SPI to a STM32G4 board running Zephyr.

/img/sid_setup.png

Now I got a Trenz SMF2000 board that has a Microsemi SmartFusion2 that has a Cortex M3 and a FPGA on one chip, so connecting the CPU to the FPGA is a lot easier. Instead of going via SPI from CPU to FPGA, it is possible to use a AHB bus to connect the CPU to the FPGA fabric. The connection from the FPGA to the SID chip still needs the 5 address + 8 data + clk + cs + rw + rst = 17 pins like with the previous setup.

[Read More]

DMX FPGA

Xilinx Zynq DMX controller

DMX FPGA

One of my first projects when I started working for transtechnik (now ETC) was a DMX512 router, called E-Gate. References to that project can still be found on the ETC website. And even the windows software I wrote, called E-Gatekeeper, can still be downloaded, and it still works (even on Windows 10)

/img/e-gatekeeper.png

(E-gatekeeper screenshot image copyright by ETC GmbH)

The hardware was based on a Motorola (now NXP) PowerPC MPC860 CPU with a Xilinx FPGA. Back then (this was early 2000) the FPGA design was not done by me, but FPGA’s always fascinated me.

[Read More]

Golden Oldie

Everything should have a RS232/Serial port

Golden Oldie

Even tough RS232 is from the 60’s it is still something that should be available on every device (a TTL version is acceptable too). Most embedded CPU’s, even big ones like the iMX8 have one or more serial ports that are useable without the need of complex software stacks.

Especially that serial ports can be used without a complex software stack, on some CPU’s it can be as simple as writing a byte to a register, makes them a very powerful tool. USB and even PCI based devices already need a lot software before they can output anything, which makes them more error prone and more resource intensive.

[Read More]

Apple pie from scratch

Designing a pipelined RISC-V SoC

Apple pie from scratch

If you wish to make an apple pie from scratch, you must first invent the universe.

The famous quote from Carl Sagan could also be applied to computer science, if you want to make a program from scratch you must first invent the universe. Since I only had 2 weeks vacation, and inventing a whole universe would have been to much work, I skipped a few parts and started with designing a RISC-V core.

[Read More]