craig@craigjb.com
GitHubhttps://github.com/craigjb Mastodonhttps://twitter.com/craig_jbishop

Convincing probe-rs to Work with VexRiscv


Over the last few years, Rust tooling for embedded development has become quite good. Specifically, the probe-rs and defmt (with RTT) projects address common needs like downloading firmware, running tests in-situ, logging with minimal overhead, and catching crashes. ARM-based microcontrollers, such as the STM32 family, are well supported nowadays. RISC-V support is still expanding, but the basics are all there.

I’d like to take advantage of these embedded Rust tools while developing firmware on a VexRiscv FPGA soft core. So, in this post I’ll show how I convinced probe-rs to play nice with my JTAG adapter, connect over a JTAG tunnel, and run from RAM without breaking defmt-rtt logs.

Continue reading
Convincing probe-rs to Work with VexRiscv

Debugging VexRiscv Over a JTAG Tunnel with OpenOCD


Wouldn’t it be nice if the same JTAG cable used to configure a FPGA could also debug a RISC-V core implemented in the fabric? Turns out, it’s possible! For a new project using a VexRiscv core to control a few things, I wanted to try tunneled JTAG access. Also, I may have forgotten to add a separate JTAG header on my board design… Anyway, I’ll share how to configure VexRiscv and OpenOCD to use one cable for both.

Continue reading
Debugging VexRiscv Over a JTAG Tunnel with OpenOCD

From eBay junk to JTAG on a gigantic FPGA board


eBay is a magical place, somewhere in the middle of the vast AliExpress-Digikey spectrum… well, it is magical for those interested in giant FPGA parts anyway. In previous posts, I detailed the Gameslab, which is a handheld game console built around reballed Zynq (XC7Z035) parts off eBay, which turned out to be perfectly fine after fixing my own mistakes. So, I’m no stranger to the hopes and fears of buying used and unknown quality FPGA components off eBay. That said, thanks to @rombik_su on Twitter, I’m down an even deeper rabbit hole on a HAPS-DX7 board with a Xilinx Virtex-7 XC7VX980T (whopping 612 kLUTs), a smaller Kintex XC7K70T, and a relatively tiny Lattice LCMXO2-7000HC. I’ll try to document the journey in this post.

Continue reading
From eBay junk to JTAG on a gigantic FPGA board

Rust on Risc-V (VexRiscv) on SpinalHDL with SymbiFlow on the Hackaday Supercon Badge


What do Rust, Risc-V, and SpinalHDL all have in common? They can all run on the Hackaday Supercon 2019 badge! In this rather lengthy post, I go through how to get started with SpinalHDL on the badge, how to setup a Risc-V soft core using VexRiscv, how to assemble a basic program for it, and finally how to target and build embedded Rust for it.

Continue reading
Rust on Risc-V (VexRiscv) on SpinalHDL with SymbiFlow on the Hackaday Supercon Badge

Interview with David Galloway - Retro game dev, Game Boy dev and more!


This week I had the awesome opportunity to interview David Galloway, a long-time game developer across many platforms. We met because I was wrong about the nature of the Game Boy CPU in this post, and I’m glad I made that mistake, because what an amazing guy to meet! In this extra-length interview, we discuss early 6052 games, Apple II game development, early 1990s game dev, Game Boy dev, speed-code for sprites, texture atlases, radiosity maps, video card drivers, and more!


Continue reading
Interview with David Galloway - Retro game dev, Game Boy dev and more!

STM32L0 Rust Part 1 - Getting Started


The embedded Rust development ecosystem is changing fast. A bunch has changed even since early 2019 when I started prototyping firmware for the Gameslab’s system controller (STM32L0). Most of the changes are incredible! Device support crates, hardware abstraction layers (HALs), and even USB support are all very usable now for Cortex-M devices. In this post, I’ll summarize the ecosystem and show how to get started with embedded Rust on a STM32L0 part.

Continue reading
STM32L0 Rust Part 1 - Getting Started

Desert Rust slides: crate organization


These are the slides from a talk I gave at Desert Rust, our Phoenix metro area Rust developer meetup.

Continue reading
Desert Rust slides: crate organization

Gameslab schematic


Here’s the Gameslab schematic in all of its completely non-cost-optimized glory! I had linked to it in a previous post, but this makes it more obvious. Made with KiCad!

Continue reading
Gameslab schematic

Gameslab case in detail


The Gameslab case is made of three custom-machine aluminum plates and held together by only four screws. Notice there aren’t any screw holes showing on the front.

Continue reading

Fried by design and fried by accident


On the way to a working Gameslab, I had a few failures, some more “fun” than others. For example, it turns out that when your giant Zynq FPGA heats up to 70C while idling without any configuration, you might have a problem somewhere. Also, don’t solder while batteries are plugged in. Things die when you do. And, let’s not forget my newly found, strong distaste for QFP parts.

Continue reading
Fried by design and fried by accident
Copyright © 2017 Craig J Bishop