Tux Machines

Open Hardware Projects and Hacking

Posted by Roy Schestowitz on Jan 25, 2023

=> today's leftovers | FSF board adopts updated by-laws to protect copyleft (UPDATED)

=> ↺ ECE4760 rp2040 DMA machine

ECE4760 rp2040 DMA machine

=> ↺ ECE4760 rp2040 DMA machine

DMA uses memory controllers separate from the CPU to accelerate data movment between memory locations, or between peripherials and memory. The RP2040 has 12 DMA channels which can stream an agregate of over 100 megabytes/sec without affecting CPU performance, in many cases. There are a huge number of options available to set up a DMA transfer. You can think of a DMA channel controller as a separate, programmable, processor with the main job of moving data. Memory on the rp2040 is arranged as a bus matrix with separate memory bus control masters for each ARM core and for the DMA system, and several memory bus targets accessed by the masters. Each bus target can be accessed on each machine cycle.
Here we use the DMA subsystem to produce a complete computing system, independent of the main ARM cpus. The DMA machine makes use of memory-copy ability, transport_triggered operations, and self-modifying code. The code consists of a sequence of DMA block descriptors stored in an array. The implemented operations are Turing Complete, and run at about the speed of an Arduino. About 8 million DMA blocks/second can be fetched/executed. There is a history of using only memory-moves to build a general cpu. In 2013 Stephen Dolan published x86 mov is Turing-Complete describing an example of a one-opcode machine. The paper Run-DMA by Michael Rushanan and Stephen Checkoway shows how to do this with one version (Raspbery Pi 2) of ARM DMA. The DMA system on the RP2040 has more transport-triggered functions and is a little easier to build. Joseph Primmer and I built a DMA processor using the Microchip PIC32 DMA system. Addition and branching had to be based on table-lookup. See DMA Weird machine.

Stadia controller Bluetooth Mode

=> ↺ Stadia controller Bluetooth Mode

The Google Stadia controller is a favorite, even with Stadia being shut down days ago. There are instructions from Google on switching the controller from WiFi to Bluetooth mode to game on other devices.

∀2 Retro Computing's RP2040-Powered Analog Adds a VGA Output, Wi-Fi Connectivity to Your Apple II - Hackster.io

=> ↺ ∀2 Retro Computing's RP2040-Powered Analog Adds a VGA Output, Wi-Fi Connectivity to Your Apple II - Hackster.io

Vintage computing start-up ∀2 Retro Computing has launched a shiny new video card designed for the classic Apple II family of eight-bit microcomputers — powered by a Raspberry Pi Pico, mounted above a surprisingly thin add-in board.
"Extending the great work of Mark Aikens," ∀2 Retro Computing's David Kuder explains, referring to the earlier AppleII-VGA add-in card, "the ∀2 Analog is a VGA video solution for your Apple II computer. We've added support for 16-Color 140×192 and Monochrome 560×192 'Double-HiRes,' 80×48 'Double-LoRes,' and 80 column modes for Apple IIe computers."

Porting Doom just got easier with doomgeneric

=> ↺ Porting Doom just got easier with doomgeneric

The work is under a GNU General Public License v2.0.

The Newbie’s Guide to Programming an ESP32 on the Arduino IDE - IoT Tech Trends

=> ↺ The Newbie’s Guide to Programming an ESP32 on the Arduino IDE - IoT Tech Trends

Did you know that you can program other boards on the Arduino IDE? If you’re in need of a 3.3V logic microcontroller platform but can’t use PlatformIO, this one’s the guide for you!
With an ESP32, you can power 3.3V TFT displays, low-power sensors, and cheap camera modules that would otherwise break on an Arduino’s 5V circuits.

Self-soldering circuits

=> ↺ Self-soldering circuits

Carl Bugeja designs circuit boards with a low-resistance copper layer which is used to pass current to heat the board and reflow the top surface mount components on top.

Reverse-engineering the conditional jump circuitry in the 8086 processor

=> ↺ Reverse-engineering the conditional jump circuitry in the 8086 processor

Intel introduced the 8086 microprocessor in 1978 and it had a huge influence on computing. I'm reverse-engineering the 8086 by examining the circuitry on its silicon die and in this blog post I take a look at how conditional jumps are implemented. Conditional jumps are an important part of any instruction set, changing the flow of execution based on a condition. Although this instruction may seem simple, it involves many parts of the CPU: the 8086 uses microcode along with special-purpose condition logic.
[...]
The 8086 die under a microscope, with main functional blocks labeled. This photo shows the chip's single metal layer; the polysilicon and silicon are underneath. Click on this image (or any other) for a larger version.
[...]
The 8086 uses a hybrid approach: although the 8086 uses microcode, much of the instruction functionality is implemented with gate logic. This approach removed duplication from the microcode and kept the microcode small enough for 1978 technology. In a sense, the microcode is parameterized. For instance, the microcode can specify a generic Arithmetic/Logic Unit (ALU) operation, and the gate logic determines from the instruction which ALU (Arithmetic/Logic Unit) operation to perform. More relevant to this blog post, the microcode can specify a generic conditional test and the gate logic determines which condition to use. Although this made the 8086's gate logic more complicated, the tradeoff was worthwhile.

Arduino Is Out To (Rocket) Launch

=> ↺ Arduino Is Out To (Rocket) Launch

It looks like an ordinary toolbox, but when you open up the Arduino Launch Control System, you’ll find a safe method for triggering model rocket launches. The system uses two separate power supplies. Both must be on for a successful launch and one requires a key. To trigger a 10-second countdown, the operator must hold down two buttons. Releasing either button will stop the countdown.

=> gemini.tuxmachines.org

Proxy Information
Original URL
gemini://gemini.tuxmachines.org/n/2023/01/25/Open_hardware_Projects_and_Hacking.gmi
Status Code
Success (20)
Meta
text/gemini;lang=en-GB
Capsule Response Time
139.498948 milliseconds
Gemini-to-HTML Time
0.863054 milliseconds

This content has been proxied by September (ba2dc).