Skip to content

In-Javascript ARM Thumb emulator, with js based IO Peripheral implementations for creating code-accurate digital twins

Notifications You must be signed in to change notification settings

kaylee-kerin/handyarm

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

29 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ARM Thumb Emulator for Browser-Based Computer Systems

A JavaScript-based computer emulator focusing on ARM Thumb instruction set implementation. This project provides core components (CPU, RAM, ROM, DMA, UART) for building hardware emulators in the browser.

Table of Contents

Introduction

This emulator provides a foundation for building ARM Thumb-based computer systems in the browser. The core components are designed to work together via a common bus interface, allowing flexible hardware configurations.

Key features:

  • Bus-based architecture connects all peripherals and CPUs
  • Implements RAM and ROM storage
  • Includes DMA controller for memory management
  • Supports serial communication (UART)
  • Designed for ARM Thumb instruction set emulation

Architecture Overview

The system is built around several core components:

1. The Bus

  • Handles address decoding and device discovery
  • Routes read/write operations to the appropriate peripherals
  • Core.js/src/bus.js

2. Memory Components

  • RAM: Dynamic memory with bounds checking (src/ram.js)
  • ROM: Read-only storage with validation (src/rom.js)

3. Usage

  • Examples of C code used to interact with the block_input/block_output operations is available in usage_examples/

About

In-Javascript ARM Thumb emulator, with js based IO Peripheral implementations for creating code-accurate digital twins

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published