• Stars
    star
    149
  • Rank 248,619 (Top 5 %)
  • Language
    C
  • License
    Apache License 2.0
  • Created over 12 years ago
  • Updated 4 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

MRI - Monitor for Remote Inspection. The gdb compatible debug monitor for Cortex-M devices.

MRI - Monitor for Remote Inspection

MRI is a debug monitor which allows the GNU debugger, GDB, to debug Cortex-M3/M4 processors. This makes it possible to debug applications running on Cortex-M devices using a full featured source level debugger with no extra hardware other than a serial connection.

Important Notes:

  • MRI is meant to work with arm-none-eabi-gdb. See notes here about running other OS ABI versions of GDB with ARM target support.
  • This project just contains the sources to build the MRI debug monitor library but doesn't show how to link it into your program and make use of it. Such an example is provided by the GCC4MBED project.

MRI Features

  • 6+ hardware breakpoints (actual number depends on device)
  • 4+ data watchpoints (actual number depends on device)
  • single stepping
  • runs over any of the UART ports on the device (selected when user compiles their code)
  • baud rate is determined at runtime (through GDB command line) on devices that support auto-baud detection
  • semi-host functionality:
    • stdout/stderr/stdin are redirected to/from the GDB console
    • mbed LocalFileSystem semi-host support (fopen, fwrite, fread, fseek, and fclose) - mbed-LPC1768 only
    • maintains access to mbed device's unique ethernet address - mbed-LPC1768 only
  • works with free GNU Tools for ARM Embedded Processors
  • no program binary size limitations
  • open source (Apache Licensed)

Devices Supported

Device Sample Boards
NXP LPC17xx mbed-1768
LPC1769 LPCXpresso Board
NXP LPC43xx Micromint Bambino 210
STM32F429XX STM32F429 Discovery kit

How to Clone

This project uses submodules (CppUTest for unit testing). Cloning requires a few more steps to get all of the necessary code.

git clone [email protected]:adamgreen/mri.git
cd mri
git submodule init
git submodule update

- or -

git clone --recursive [email protected]:adamgreen/mri.git

More MRI Information

Getting started with MRI in GCC4MBED: Documents how to setup the mbed device and GCC4MBED project to use MRI for debugging binaries. Also provides a walk through of a debugging session with one of the GCC4MBED samples.

Supported Host Platforms: Which platforms has GDB been run on while connected to MRI.

Supported Devices: Which devices can currently be debugged with MRI.

Why use MRI: Documents the advantages of using a debug monitor like MRI and its known limitations.

Porting MRI: Notes on how to port MRI to new devices.

Reporting a Problem: How to extract information from your PC to show what was happening at the time a problem occurs in a MRI debugging session.

FAQ

More Repositories

1

CrashCatcher

Catch Hard Faults on Cortex-M devices and save out a crash dump to be used by CrashDebug.
C++
214
star
2

gcc4mbed

Project to allow GCC compilation of code using mbed SDK libraries.
Makefile
174
star
3

CrashDebug

Tool to enable post-mortem debugging of Cortex-M crashes with GDB.
C++
109
star
4

QuadratureDecoder

QuadratureDecoder - PIO based Encoder Library for the RP2040
C++
31
star
5

bb-8

My attempt to build a replica of the BB-8 droid from Star Wars.
C
28
star
6

MiP

My WowWee MiP balancing robot hacks.
Objective-C
17
star
7

i2cperipheral

i2cperipheral - MicroPython I2C Peripheral Library for the RP2040
C
14
star
8

pinkySim

ARMv6-M Thumb instruction simulator.
C++
13
star
9

snapNcrackle

The Merlin 8 for Apple II compatible cross-assembler used to build POP sources.
C++
10
star
10

CHiP

The WowWee CHiP Robot Dog - My Hacks!
10
star
11

MiP-Capi

C API for the WowWee MiP self-balancing robot.
C
8
star
12

MiP_ProMini-Pack

16MHz/5V version of Sparkfun's retired MiP ProMini-Pack.
C++
6
star
13

Ferdinand16

My SRS Robo-Magellan 2016/2017 attempt.
Eagle
5
star
14

CppUTest

Custom fork of CppUTest unit testing code that I use from multiple projects.
C++
4
star
15

Retrochallenge-2016-January

Retrochallenge (2016-January) - Tandy Color Computer Cartridge.
Eagle
4
star
16

Ferdinand14

SRS Robo-Magellan 2014 attempt.
Processing
3
star
17

3pi-2040

My experiments with Pololu's 3pi+ 2040 robot.
Python
3
star
18

mri-swd

MRI-SWD - GDB compatible hardware probe which allows debugging of Cortex-M based microcontrollers over SWD.
C++
3
star
19

CHiP-Capi

C API for the WowWee CHiP robot dog.
C
2
star
20

nrf52-SmartWatch

Start of my custom firmware for the Bangle.js 2 Smart Watch.
C
2
star
21

Retrochallenge-2014WW

My 2014 Winter Warmup Project for the Retrochallenge.
Assembly
2
star
22

LYWSD02

macOS program to set current time and temperature units on Bluetooth eInk Display Clock with Temperature Humidity Sensor - LYWSD02. Sold by Adafruit as product #5023.
Objective-C
2
star
23

BleHidKeyboard

Converting a USB keyboard to Bluetooth Low Energy using a nRF51422.
C
2
star
24

arm-none-eabi-for-arm64-apple-darwin

Native GNU Arm Embedded Toolchain for Arm Macintosh hosts.
Shell
1
star
25

NeoPixelTree

mbed LPC1768 example for controlling Adafruit NeoPixels via DMA based SPI output.
C++
1
star
26

spin2ascii

Rust
1
star
27

FreqGen

Simple audio waveform generator using the mbed-LPC1768 DAC.
C++
1
star
28

mriprog

Use MRI debug monitor to remotely reprogram LPC1768 targets.
C
1
star
29

Retrochallenge-2013SC

My 2013 Summer Challenge Project for the Retrochallenge.
1
star
30

rugrover

A Work In Progress: My modern interpretation of the Rug Warrior Pro
C
1
star
31

SDCard

SDFileSystem for LPC17xx
C++
1
star
32

pololu-3pi-plus-2040-arduino-library

Library to help interface with the the on-board hardware of the Pololu 3pi+ 2040 robot.
C++
1
star
33

Retrochallenge-2015-July

My 2015-July Project for the Retrochallenge.
C
1
star