RSSAmplifier

Blog

projects by kiwih

I like to tinker and make things and sometimes write about what I've done

01001000.xyzRSS feed ↗17 posts

Latest posts

Tutorial: Installing Vitis / Vivado 2024.1 on Ubuntu Linux inside a Distrobox

This is harder than you'd think - This guide describes the steps involved to install Vitis / Vivado 2024.1 on Ubuntu Linux inside a Distrobox container. This is useful if you want to run Vitis on a Linux host without polluting your host system with all the dependencies and libraries that Vitis requires. Distrobox makes it easy...

Chip-Chat: My journey making the world's first LLM-architected and taped-out silicon design

Using ChatGPT to write Verilog and produce a chip for my christmas tree - TL;DR: I architectured a microcontroller chip in early 2023 using ChatGPT and it was taped out. Now it controls my christmas tree. This was the first time anyone had used an LLM to design silicon. Our paper appeared at MLCAD’23, arXiv link. All chat logs are provided in our repository...

Thoughts on AI-generated content

GPT-3, DALL-E, Codex, and more - It was long expected that among all the practices which scientists could apply computers to, that art would remain safe: after all, how can one program a machine to have creativity? Yet, in the last two years we have seen an explosive emergence of new AI-based tools that are not...

Tutorial: A scan chain attack on an implementation of DES

A primer to hardware security - Scan chains, a Design for Test (DFT) technique, are implemented in integrated circuits (ICs) in order to test their correct functionality. They provide high fault coverage and do not need complex hardware for test pattern generation or signature analysis. They function by converting all internal flip-flops into scannable flip-flops, pairing...

FLAW3D: Hiding a Trojan in an AVR Arduino Bootloader

Code injection and memory editing! - Currently there is a lot of academic interest in the potential for malicious modifications being added to designs during their manufacturing lifecycle. These include, for instance, Integrated Circuits, where Hardware Trojans might modify the behaviour of key IP blocks, or PCBs, where design modifications could add or remove components in...

Developing a basic development board for Raspberry Pi Pico modules

Because breadboarding is a pain and 2-layer PCBs are cheap - Recently I purchased some Raspberry Pi Pico modules. This is blogpost #2 on the subject, where I will walk through a basic development board that I designed to be used to familiarise myself with the new RP2040 silicon. In the rest of the blog post I’ll have a yarn. If...

Raspberry Pi Pico: First Impressions

This + MicroPython = an absolute joy - A few days ago the Raspberry Pi foundation made the surprise announcement that they’d had their own silicon produced in the form of a dual-core ARM Cortex M0+ microcontroller. I say “surprising” for a number of reasons: (1) until now, Raspberry Pi have focused on their eponymous single-board computer series,...

Tutorial: Timers and PWM (and a cheeky AM radio transmission) using STM32CubeIDE

And a brief look at timer interrupts - Measuring, monitoring, and reacting to the passage of time in embedded systems is an ubiquitous requirement. For instance, you might decide that you want to toggle an output every millisecond. You might be tasked to implement a system that samples an ADC once a second. You might want to change...

Tutorial: An SD card over SPI using STM32CubeIDE and FatFS

Let's have some fun with files - Embedded projects often call for some kind of data storage and retrieval. For instance, you might have need for a data logger to record data points over long periods of time. You might have user settings that need to be preserved after the device is shut off and rebooted. You...

Walkthrough: Updating the Firmware on an Anet A8 (Mainboard Version 1.7)

Depicted in 2020 - For the first time ever, I have a 3d printer! Well, it’s not actually mine, but it’s on my desk - it’s mine to use (and abuse). I wanted to update the firmware on it, but was worried about bricking it. This blogpost is about the procedure I went through...

Improving Snakes and Ladders

A simple change to add agency to an otherwise autonomous game - I just moved to the USA, and as a leaving gift, a work colleague gave a New Zealand themed version of the classic game Snakes and Ladders (the NZ theme being that this was Taniwha and Ladders, of course). Of course, we all know the rules of Snakes and Ladders...

Tutorial: Getting started with an ST development board using STM32CubeIDE

Project initialisation, intro to debugging, and the virtual COM port - Getting started with an 32-bit ARM-based microcontroller is always a little daunting. There’s a plethora of available microcontrollers, platforms, development boards, tools, and software. Everyone seems to have their own opinion on what is best to use, and debates between the available options range in tone from pleasant and…

Walkthrough: Reading an Agilent oscilloscope via RS232

Enabling data transfer from 'scope to PC - Recently I acquired an older Agilent 54621A oscilloscope for my at-home workstation, and yes, that is a floppy drive on the front. According to the person I got it from, the floppy drive still works, and they successfully used it to load data captures to their PC as recently as...

Rescuing a trashed LED Matrix

Reverse engineering a simple embedded system! - I was cycling through a light industrial area in Auckland City when I came across a rubbish bin awaiting pickup on the side of the road. It caught my eye as it was practically overflowing with discarded LED Matrix modules - big ones, about a foot in each dimension! I...

The PIC16F-antastic picmicro clone

Can we emulate a PIC16F core using an FPGA? - In this project I set out to create a cycle-accurate FPGA-ready clone of the picmicro-midrange core, i.e. it is a PIC on an FPGA! While there are other FPGA ready clones of PICs, I still wanted to make my own as a learning experience. As a point of difference, however,...

An LCD on a PIC16F

Making an SSD1306 work under serious resource constraints - The goal here was to take a common (and cheap) SSD1306 LCD module and drive it using a PIC16F677A. Now, there’s a lot of code online - libraries and such - for driving an SSD1306, but the problem is that these all use buffered memory (i.e. a temporary screenbuffer to...

A CubeMX compatible SD card driver

For use with FatFS! - The first time that I tried to get an SD card working with CubeMX I found a most interesting affair - not particularly complicated, but definitely a little fiddly. 2020 edit: There is a more detailed and up to date version of this post. Use it instead. At any rate,...