

Int debugger
This is the official public repository for DIPS: Debugger for Intermittently-Powered Systems. The repository consists of all components that make DIPS: - Hardware - Debugger Firmware - Emulator Firmware - Emulator Host…
- Size
- 70 × 54.5 mm
- Copper layers
- 4
- Thickness
- 1.6 mm
- Parts
- 224
- Nets
- 175
- Pads
- 773
- Tracks, vias
- 1,702, 382
- Pours
- 6
- Routed
- Yes
- KiCad
- KiCad 7 (file 20221018)
- Created
- 16 Oct 2022
- Updated
- 27 Jun 2023
Overview
Int debugger is an open-source printed circuit board by TUDSSL, from the TUDSSL/DIPS repository on GitHub. It is a 4-layer board of 70 × 54.5 mm with 224 parts on 175 nets, routed with 1,702 tracks and 382 vias.
It is built around the STM32F103RET6, STM32F373CCT6 and OPA192IDBV, with the INA186A1IDDF, 74LVC2T45DC and TS5A23159DGSR among its other parts. Its parts include 74 capacitors, 68 resistors, 21 ICs, 8 connectors and 5 diodes. It belongs with the interfaces and adapters boards and the STM32 boards of this library.
Main components
12STM32F103RET6
LQFP-64(10x10)-40℃~+85℃ 12bit 12bit 2V~3.6V 32 Bit 51 512KB 64KB 72MHz ARM Cortex-M3 Built-in FLASH LQFP-64(10x10) Microcontrollers (MCU/MPU/SOC) ROHSSTMicroelectronicsMicrocontrollers (MCU/MPU/SOC)STM32F373CCT6
LQFP-48(7x7)-40℃~+85℃ 12bit 12bit、16bit 256KB 2V~3.6V 32 Bit 32KB 36 72MHz ARM Cortex-M4 Built-in FLASH LQFP-48(7x7) Microcontrollers (MCU/MPU/SOC) ROHSSTMicroelectronicsMicrocontrollers (MCU/MPU/SOC)OPA192IDBV
SOT-23-5-18V~-2.25V、2.25V~18V -40℃~+125℃ 1 10MHz 140dB 1mA 200nV/℃ 20V/us 2pA 4.5V~36V 5.5nV/√Hz@1kHz 5pA 5uV 65mA EMI filtering/RF suppression Rail-to-Rail Input, Rail-to-Rail Output SOT-23-5 Precision Op Amps ROHSTexas InstrumentsPrecision Op AmpsINA186A1IDDF
TSOT-23-8-200mV~40V -40℃~+125℃ 0.3V/us 0.5uV/℃ 1 1.7V~5.5V 150dB 25V/V 45kHz 48uA 500pA 50uV High-side detection、Low-side detection、Bidirectional detection、Zero drift / auto-zero、Input filter、Enable/shutdown function ±42V TSOT-23-8 Current Sense Amplifiers ROHSTexas InstrumentsCurrent Sense Amplifiers74LVC2T45DC
VSSOP-8-0.5mm-40℃~+125℃ 1 1.2V~5.5V 1.2V~5.5V 2 420Mbps Bidirectional Power-Off Protection Tri-State VSSOP-8-0.5mm Translators, Level Shifters ROHSNexperiaTranslators, Level ShiftersTS5A23159DGSR
VSSOP-10-0.5mm-40℃~+85℃ 1.1Ω 1.65V~5.5V 100MHz 15ns 2 20ns 2:1 VSSOP-10-0.5mm Analog Switches, Multiplexers ROHSTexas InstrumentsAnalog Switches, MultiplexersTPS7A87RTJ
UncategorisedTexas InstrumentsUSBLC6-2SC6
SOT-23-60.35pF、0.8pF 100nA 150W@8/20us 15V 2 5V 6A@8/20us 6V ESD SOT-23-6 ESD and Surge Protection (TVS/ESD) ROHSUMWESD And Surge Protection (TVS/ESD)MAX6070AAUT30+T
SOT-23-6-40℃~+125℃@(Ta) 10mA 235uA 3.2V~5.5V 3V 4.6uVp-p 5uVrms 6ppm/℃ Fixed Series ±0.04% SOT-23-6 Voltage Reference ROHSMaxim Integrated (Analog Devices)Voltage ReferenceMCP6V82-E/MS
MSOP-8-40℃~+125℃ 2 2pA 4V/us 5MHz 9uV Zero drift / auto-zero、Reverse-phase input protection MSOP-8 Precision Op Amps ROHSMicrochip TechnologyPrecision Op AmpsTS5A3159ADBVRE4
-- Analog Switches, Multiplexers ROHSTexas InstrumentsAnalog Switches, MultiplexersRC0603FR-0710KL
UncategorisedUnknown maker
README
README.mdDIPS
This is the official public repository for DIPS: Debugger for Intermittently-Powered Systems. The repository consists of all components that make DIPS:
Project Overview
Rationale
Intermittently-Powered or Battery-Free systems are low-powered embedded systems that experience frequent power failures. In recent years intermittently-powered systems have been explored excessively by the research community, but there was no good way of debugging these systems. DIPS aims to address this challenge.
Debugging Intermittently-Powered Systems
Common debuggers, like the J-link, are perfect for debugging continuously-powered systems but will lose connection on a power failure when debugging intermittently-powered systems, making it useless for debugging battery-free systems. On top of that, intermittently-powered systems come with their own set of challenges by introducing new architectures like checkpointing. DIPS allows for continuous debugging despite power failures by reconnecting automatically and restoring the debugging state (Breakpoints) to the device under test. Scripts supplement the functionality of DIPS, allowing for automated tests of memory and peripheral consistency.
Features:
DIPS integrates a fully featured emulator with close integration with an onboard hardware debugger. It can power devices under test through various modes and features current measurement capability. A key feature is the ability to pause emulation during debugger interaction, such as breakpoints. The emulator supports the following modes:
- Constant Voltage
- Sawtooth
- Square
- Triangle
- Virtual Buck-Boost (Allows for replaying energy harvesting traces to the device under test)
- Passive mode (Only takes over powering the device when prompted during debugging, requires passive debugging mode mon passive_mode enable)
The hardware debugger supports, through the associated console application, supports the following features:
- energy_guards energy-neutral code sections where the emulator pauses
- energy_breakpoints that only trigger if the voltage is lower than the specified threshold
- dips_mem_check memory state consistency verification script, configured in dips_testing.json
- dips_peripheral_check peripheral state consistency verification script, configured in dips_testing.json
- Printing (DIPS_PRINTF), asserts (DIPS_ASSERT) and manually attaching (DIPS_ATTACH) through a simple C interface
- Passive operation (wait_connect) where the debugger only connects when prompted through a pin.
Hardware
Hardware Debugger
The hardware design of the debugger centers around a STM32F103RET MCU (A) and is based on the Black Magic Debug Probe. It is able to communicate with the energy emulator through SPI. The MCU interfaces with the DUT through SWD/JTAG or SBW (E), I/O interrupt pins and acts as a UART-USB bridge (D). To translate the signals to the DUT voltage, first, the DUT voltage is buffered using a low input bias current buffer amplifier OPA192. Next, all the interfaces with the DUT are level shifted by level translators (C) using the buffered DUT voltage. The debugger connects to the PC with USB (B).
Energy Emulator
Central to the energy emulator is the low-noise TPS7A87 (I) linear regulator. The regulator generates the adjustable supply rail to the DUT (J). Power consumption by the DUT is measured by two INA186 current sense amplifiers (H). The first amplifier with a 5.6 Ω sense resistor measures large currents without imposing a high burden voltage. The second amplifier with a 1000 Ω sense resistor measures low currents and is able to be bypassed at large currents preventing high burden voltages. Two analog switches allow for quickly disabling the output and discharging the output through a 47 Ω resistor. The emulator is controlled by a STM32F373 MCU (G). With its on-board DAC DIPS is able to adjust the linear regulator and samples the output voltage and the output of the current sense amplifiers (each using one of its dedicated on-board Sigma Delta ADCs). The energy emulator connects to the PC with USB (F)
Design files
In the hardware folder both the KICAD design files are provided together with a PDF schematic and gerbers.
Getting Started
This repository has all information to build your own DIPS. Below we describe building and executing the complete repository of DIPS, including hardware, debugger software, emulator software and both emulator and console applications.
Building the Debugger Firmware
The hardware debugger firmware is based on the Black Magic Probe and can be found in the /int-debugger-firmware folder
Build Process
After cloning the repository one can compile the firmware in two ways, first is by running it as a PlatformIO project or by building it from scratch using the provided cmake files running the following section:
$ cd int-debugger-firmware
$ pio runAfter building, you can upload the firmware to the MCU using your favourite flashing method whilst powering the platform using USB.
Last Tested Software Versions
This software was build successfully with these software versions:
- CMake version 3.26.3
- arm-none-eabi-gcc version 13.1.0
- arm-none-eabi-newlib version 4.3.0.20230120
- arm-none-eabi-binutils version 2.40
- PlatformIO version 6.1.7
The Emulator Firmware
The emulator firmware is located in the /int-debugger-emulator folder
Build Process
After cloning the repository the emulator can be compiled and build by running the enclosed cmake commands:
$ cd int-debugger-emulator
$ mkdir build
$ cd build
$ cmake ..
$ makeAfter building, you can upload the firmware to the MCU using your favourite flashing method whilst powering the platform using USB.
Note on the Emulator Firmware
The firmware is based upon the FreeRTOS framework, allowing real-time switching of tasks required for the emulator.
Last Tested Software Versions
This software was build successfully with these software versions:
- CMake version 3.26.3
- arm-none-eabi-gcc version 13.1.0
- arm-none-eabi-newlib version 4.3.0.20230120
- arm-none-eabi-binutils version 2.40
- Protobuf version 21.12
Building the Emulator Host Software
The next part of software runs on the host PC and is used for communicating with the hardware emulator. The sofware can be found in the /int-debugger-emulator-host folder.
Build Process
After cloning the repository the emulator host application can be compiled and build by running the following commands:
$ cd int-debugger-emulator-host
$ cmake .
$ makeLast Tested Software Versions
This software was build successfully with these software versions:
The DIPS Console Software
The next part of software also runs on the host PC and is used as a GDB wrapper, allowing the added features of DIPS. The sofware can be found in the /int-debugger-console folder.
Setup
Since the DIPS console is a python executable, there is no need for compilation. Install the python libraries mentioned in the requirements.txt file and you should be good to go.
Last Tested Software Versions
This software was build successfully with these software versions:
- Python version 3.11.3
- Python-pyGDBmi version 0.11.0.0
- Python-pyserial version 3.5
- Python-prompt_toolkit version 3.0.38
- Python-cmsis_svd version 0.4
Execute DIPS Console Application
The DIPS console application can be started by calling the python3 main.py, if you have an elf-file binary, you can load this by adding this as extra parameter python3 main.py firmware.elf. Other GDB parameters and queries from the command line are avaliable as well.
Connecting to DIPS
If you have your DIPS connected over USB you can connect to the hardware by running the connect command. The console will automatically search for a DIPS serial connection, establish this connection and connect to the attached device under test. Now one can start debugging intermittenlty-powered systems with DIPS, just like debugging regular powered embedded systems. Manual connection to DIPS is also possible by running the following sequence:
(gdb) tar ext /dev/ttyACM0
(gdb) mon s
(gdb) attach 1Sample session
After connecting to the DIPS and the device under test, regular arm-none-eabi-gdb commands are availble for use:
> python3 main.py example.elf
...<GDB Copyright message>
(gdb) connect
Remote debugging using /dev/ttyACM0
Target voltage: 3.00V
Available Targets:
No. Att Driver
1 STM32F40x M3/M4
Attaching to program: <code_folder>/example.elf, Remote target
0x800007c in main ()
(gdb) load
Loading section .text, size 0x5868 lma 0x8000000
Loading section .data, size 0x9e0 lma 0x8005868
Loading section .rodata, size 0x254 lma 0x8006248
Start address 0x800007c, load size 25756
Transfer rate: 31 KB/sec, 919 bytes/write.
(gdb) b main
(gdb) c
Breakpoint 1 at 0x80000e8: file <code_folder>/main.c, line 20.
(gdb)How to Cite This Work
The results of this project have been published in a peer-reviewed academic publication (from which all technical figures in this file originate). Details of the publication are as follows.
- Authors and the project team: Jasper de Winkel, Tom Hoefnagel, Boris Blokland, Przemysław Pawełczak
- Publication title: DIPS: Debug Intermittently-Powered Systems Like Any Embedded System
- Pulication venue: Proceedings of ACM SenSys 2022
- Link to publication
To cite this publication please use the following BiBTeX entry.
@inproceedings{dewinkel:sensys:2022:dips,
author = {de Winkel, Jasper and Hoefnagel, Tom and Blokland, Boris and Pawe\l{}czak, Przemys\l{}aw},
title = {{DIPS}: Debug Intermittently-Powered Systems Like Any Embedded System},
booktitle = {Proc. SenSys},
year = {2022},
address = {Boston, MA, USA},
date = nov # " 6--9",
publisher = {ACM},
url = {https://doi.org/10.1145/3560905.3568543}
}Acknowledgments
This research project was supported by Netherlands Organisation for Scientific Research, partly funded by the Dutch Ministry of Economic Affairs and Climate Policy, through TTW Perspective program ZERO (P15-01) within Project P1.
Copyright
Copyright (C) 2022 TU Delft Embedded Systems Group/Sustainable Systems Laboratory.
MIT Licence or otherwise specified. See license file for details.
Parts
224| Qty | Value | Footprint | References |
|---|---|---|---|
| 33 | 100nF | Capacitor_SMD:C_0603_1608Metric | C1, C2, C3, C4, C10, C11, C12, C17, C19, C20, C21, C22, C23, C38, C41, C43 +17 |
| 18 | 10k | Resistor_SMD:R_0603_1608Metric | R5, R14, R15, R17, R18, R30, R43, R45, R48, R49, R50, R51, R52, R53, R66, R67 +2 |
| 18 | TestPoint | TestPoint:TestPoint_Keystone_5000-5004_Miniature | TP1, TP2, TP3, TP4, TP5, TP6, TP7, TP10, TP11, TP12, TP13, TP15, TP16, TP17, TP18, TP24 +2 |
| 13 | 0 | Resistor_SMD:R_0603_1608Metric | R6, R8, R31, R34, R36, R37, R41, R44, R46, R47, R54, R57, R60 |
| 11 | 10nF | Capacitor_SMD:C_0603_1608Metric | C28, C29, C34, C35, C44, C50, C51, C63, C64, C65, C66 |
| 11 | S2761-46R | jaspers_footprints:S2761-46R | TP14, TP19, TP20, TP21, TP22, TP23, TP25, TP26, TP27, TP28, TP29 |
| 10 | 22uF | Capacitor_SMD:C_0603_1608Metric | C18, C25, C26, C30, C31, C32, C33, C36, C37, C48 |
| 8 | 1uF | Capacitor_SMD:C_0603_1608Metric | C13, C16, C42, C49, C52, C54, C62, C72 |
| 8 | DNP | Capacitor_SMD:C_0603_1608Metric | C39, C40, C58, C59, C60, C61, C67, C70 |
| 6 | 1M | Resistor_SMD:R_0603_1608Metric | R55, R56, R58, R59, R63, R64 |
| 5 | 74LVC2T45DC | Package_SO:VSSOP-8_2.3x2mm_P0.5mm | U1, U2, U3, U4, U5 |
| 4 | 10.7K | Resistor_SMD:R_0603_1608Metric | R20, R22, R26, R28 |
| 4 | 10pF | Capacitor_SMD:C_0603_1608Metric | C14, C15, C24, C27 |
| 4 | 22 | Resistor_SMD:R_0603_1608Metric | R11, R12, R23, R24 |
| 4 | Jumper_NC_Small | jaspers_footprints:SolderJumper-small-nc | JP2, JP3, JP4, JP5 |
| 4 | MountingHole | MountingHole:MountingHole_2.2mm_M2_DIN965_Pad_TopBottom | H1, H2, H3, H4 |
| 3 | 4k7 | Resistor_SMD:R_0603_1608Metric | R13, R16, R29 |
| 3 | DNP | Resistor_SMD:R_0603_1608Metric | R3, R7, R25 |
| 3 | SW_Push | Button_Switch_SMD:SW_SPST_B3U-1000P | SW1, SW2, SW3 |
| 3 | TS5A23159DGS | Package_SO:VSSOP-10_3x3mm_P0.5mm | U6, U16, U21 |
| 2 | 100 | Resistor_SMD:R_0603_1608Metric | R1, R2 |
| 2 | 100 | Resistor_SMD:R_Array_Convex_4x1206 | RN1, RN2 |
| 2 | 15k | Resistor_SMD:R_0603_1608Metric | R33, R62 |
| 2 | 1k5 | Resistor_SMD:R_0603_1608Metric | R10, R39 |
| 2 | 33.2K | Resistor_SMD:R_0603_1608Metric | R19, R21 |
| 2 | 47 | Resistor_SMD:R_1206_3216Metric | R42, R65 |
| 2 | 8MHZ | jaspers_footprints:Crystal_SMD_Abracon_ABM3B-4Pin_5.0x3.2mm | Y1, Y2 |
| 2 | DNP 30k | Resistor_SMD:R_0603_1608Metric | R32, R61 |
| 2 | INA186A1DD | Package_TO_SOT_SMD:SOT-23-8 | U14, U17 |
| 2 | SWD_10 | jaspers_footprints:ftsh-105-01-f-dv-k | J3, J6 |
| 2 | TPS7A87 | jaspers_footprints:Texas-WQFN-20 | U10, U12 |
| 2 | USBLC6-2SC6 | Package_TO_SOT_SMD:SOT-23-6 | U9, U13 |
| 2 | USB_B_Micro | jaspers_footprints:USB_Micro-B_Molex-105017-0001 | J4, J5 |
| 1 | 12 | Resistor_SMD:R_0603_1608Metric | R4 |
| 1 | 18k | Resistor_SMD:R_0603_1608Metric | R40 |
| 1 | 1k | Resistor_SMD:R_0603_1608Metric | R35 |
| 1 | 2k2 | Resistor_SMD:R_Array_Convex_4x1206 | RN3 |
| 1 | 36k | Resistor_SMD:R_0603_1608Metric | R27 |
| 1 | 5.6 | Resistor_SMD:R_0603_1608Metric | R38 |
| 1 | 501953-0407 | jaspers_footprints:Molex_Pico-Clasp_501953-0407_1x04-1MP_P1.00mm_Horizontal | J2 |
| 1 | 501953-0507 | jaspers_footprints:Molex_Pico-Clasp_501953-0507_1x05-1MP_P1.00mm_Horizontal | J7 |
| 1 | DMG1012T | Package_TO_SOT_SMD:SOT-523 | Q1 |
| 1 | D_Schottky | Diode_SMD:D_SOD-323F | D5 |
| 1 | GREEN | LED_SMD:LED_0603_1608Metric | D1 |
| 1 | Jumper_NO_Small | jaspers_footprints:SolderJumper-small-no-150um | JP1 |
| 1 | MAX6070 | Package_TO_SOT_SMD:SOT-23-6 | U18 |
| 1 | MCP6V82 | Package_SO:MSOP-8_3x3mm_P0.65mm | U20 |
| 1 | OPA192xDBV | Package_TO_SOT_SMD:SOT-23-5 | U7 |
| 1 | ORANGE | LED_SMD:LED_0603_1608Metric | D3 |
| 1 | RED | LED_SMD:LED_0603_1608Metric | D2 |
| 1 | RF_Shield_One_Piece | RF_Shielding:Laird_Technologies_BMI-S-209-F_29.36x18.50mm | J8 |
| 1 | STM32F103RETx | Package_QFP:LQFP-64_10x10mm_P0.5mm | U8 |
| 1 | STM32F373CCTx | Package_QFP:LQFP-48_7x7mm_P0.5mm | U11 |
| 1 | SWD_10 | jaspers_footprints:FTSH-105-01-F-D-RA-K | J1 |
| 1 | SolderJumper_3_Bridged12 | Jumper:SolderJumper-3_P1.3mm_Bridged12_Pad1.0x1.5mm | JP6 |
| 1 | TS5A3159ADBVR | Package_TO_SOT_SMD:SOT-23-6 | U15 |
| 1 | TUD_LOGO | jaspers_footprints:DELFT_LOGO2 | U19 |
| 1 | YELLOW | LED_SMD:LED_0603_1608Metric | D4 |
Questions
How big is the Int debugger PCB?
It measures 70 × 54.5 mm and has 4 copper layers, 1.6 mm thick.
What parts does the Int debugger use?
224 parts, built around the STM32F103RET6, STM32F373CCT6, OPA192IDBV and INA186A1IDDF. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.
Where can I download the Int debugger KiCad files?
From the TUDSSL/DIPS repository on GitHub, at the commit this page was made from: the board is hardware/kicad/int-debugger.kicad_pcb and its schematic hardware/kicad/debugger_mcu.kicad_sch. PCBKit opens the board in the browser, with nothing to install.
Can I use the Int debugger design in my own project?
Its repository states no licence, so its author keeps all rights: ask TUDSSL before reusing the design.
Similar boards
- 4 layers64 × 115 mm

- 4 layers79.2 × 152.4 mm

- 6 layers76.5 × 339.8 mm

Fmc host
open-ephys/onix-fmc-host
FMC board to acquire from ONIX headstages and breakout boards
320 parts5 - 4 layers40 × 40 mm

- 6 layers86.3 × 91.9 mm

Eps re project
spacelab-ufsc/eps-re-hardware
Hardware project of the EPS-RE module
372 parts2CERN-OHL-S-2.0 - 4 layers54.6 × 54.6 mm

- 4 layers54.6 × 54.6 mm

- 4 layers90 × 80 mm

