{"id":19203358,"url":"https://github.com/rouming/avr-gdbserver","last_synced_at":"2025-05-12T13:25:01.334Z","repository":{"id":4933304,"uuid":"6090078","full_name":"rouming/AVR-GDBServer","owner":"rouming","description":"Embedded GDB server implementation for  8-bit AVR MCU","archived":false,"fork":false,"pushed_at":"2021-05-17T16:22:11.000Z","size":67,"stargazers_count":21,"open_issues_count":1,"forks_count":10,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-04-20T13:36:38.135Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":"AdamWhitcroft/batch","license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/rouming.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2012-10-05T12:38:37.000Z","updated_at":"2025-02-10T11:57:01.000Z","dependencies_parsed_at":"2022-09-21T20:35:08.776Z","dependency_job_id":null,"html_url":"https://github.com/rouming/AVR-GDBServer","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rouming%2FAVR-GDBServer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rouming%2FAVR-GDBServer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rouming%2FAVR-GDBServer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rouming%2FAVR-GDBServer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rouming","download_url":"https://codeload.github.com/rouming/AVR-GDBServer/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253746072,"owners_count":21957495,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-09T12:48:01.337Z","updated_at":"2025-05-12T13:25:01.305Z","avatar_url":"https://github.com/rouming.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"Embedded GDB server for AVR MCU\n===============================\n\nEmbedded GDB server implementation for 8-bit AVR MCU for debugging\nthru UART.\n\n![UART debugging](image.png)\n\n### Usage:\n\nGDB server on the running AVR MCU can be accessed using UART:\n\n    $ avr-gdb gdb.elf\n    GNU gdb (GDB) 7.4\n\n    (gdb) set remotebaud 9600\n    (gdb) target remote /dev/ttyUSB0`\n\nFull usage example can be seen here: https://youtu.be/36OgekfiLLc\n\n### How it works:\n\nThe operational principle is simple: UART RX is parsed by gdb.c and GDB\ncommands are expected on the wire.  When breakpoint is sent from GDB client,\ncode is modified on that address, EEPROM is updated and original instruction\nis replaced with a trap opcode, which actually is RJMP on iself to make\nprogram spin on that address.  Meanwhile each second timer interrupt happens\nand checks where MCU was interrupted, if interruption address is equal to\none of the breakpoints - gdb.c sends to the GDB client special GDB_SIGTRAP\nstate using UART TX, which indicates that breakpoint was hit.\n\n### Disclaimer:\n\nCode is just an experiment and written for fun, so I did not do any attempts\nto make it architecture independent.  Also because this is completely software\nimplemention without any HW support I fully utilize UART and one timer interrupt.\nAnd yes a lot of code which occupies quite a lot EEPROM.  What a bummer.\n\n### Author\n\nRoman Pen \u003cr.peniaev@gmail.com\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frouming%2Favr-gdbserver","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frouming%2Favr-gdbserver","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frouming%2Favr-gdbserver/lists"}