{"id":21849354,"url":"https://github.com/iliasam/mcucapture","last_synced_at":"2025-04-14T14:54:26.128Z","repository":{"id":54525659,"uuid":"219497774","full_name":"iliasam/MCUCapture","owner":"iliasam","description":"Utility for plotting array data from MCU RAM","archived":false,"fork":false,"pushed_at":"2024-11-12T19:56:35.000Z","size":1098,"stargazers_count":28,"open_issues_count":0,"forks_count":5,"subscribers_count":5,"default_branch":"develop","last_synced_at":"2025-03-28T03:51:06.622Z","etag":null,"topics":["array","debug","mcu","openocd","plot","stm32"],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/iliasam.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":"2019-11-04T12:35:36.000Z","updated_at":"2025-02-25T12:36:34.000Z","dependencies_parsed_at":"2022-08-13T18:40:30.296Z","dependency_job_id":null,"html_url":"https://github.com/iliasam/MCUCapture","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/iliasam%2FMCUCapture","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iliasam%2FMCUCapture/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iliasam%2FMCUCapture/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iliasam%2FMCUCapture/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/iliasam","download_url":"https://codeload.github.com/iliasam/MCUCapture/tar.gz/refs/heads/develop","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248901559,"owners_count":21180448,"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":["array","debug","mcu","openocd","plot","stm32"],"created_at":"2024-11-28T00:12:34.061Z","updated_at":"2025-04-14T14:54:26.090Z","avatar_url":"https://github.com/iliasam.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"# MCUCapture\nThis Windows utility plot array data from MCU RAM. Instead of utilities like \"STM Studio\", this utility is working with single RAM array. \nIt can be useful for displaying data captured by ADC, and so on. Supported saving captured array data to file.  \nAlso this utility can be used for capturing B/W screnshots from MCU framebuffer.  \n  \nUtility screenshot:\n![Alt text](Screenshots/picture1.png?raw=true \"Image\")  \n  \nThis utility is using OpenOCD connection to the MCU. Connection to the OpenOCD is made by Telnet at 4444 port.  \nI made a special patched version of OpenOCD to get value watchpoint support for Cortex-M. This is needed for \"Capture Trigger\" functionality. You can download it here: https://yadi.sk/d/tDvl2aGxWSdeHg    \nExample of starting OpenOCD for STM32F4: \"openocd -d2 -f interface/stlink.cfg -f target/stm32f4x.cfg\"  \n\n## Utility usage:  \n#### Getting plot data:  \n1. Enter array address and its length to \"Start address\" and \"Array size, bytes\" fields.\n2. Press \"Manual Read\" button to capture data from MCU. There is no auto halt function and the readout is slow, so there is no synchronization during data readout.  \nPressing \"Wait End WP\" button will set write watchpoint to the the last byte of the array. When watchpoint event happens, \nthe MCU will enter to halt mode, and utility will automatically read data from RAM. After completion of that process watchpoint will be removed.  \nThis mode is not working when data is written to the RAM by DMA.  \nPressing \"Wait Trigger\" button will set value watchpoint to the address entered to \"Variable address\" field. This mode is similar to previous mode, \nbut a certain variable can be used as a \"trigger\".\n\nYou can set data structure by \"Data Structure\" group. It is useful when data is captured by ADC from several channels.  \n\nArray and trigger value addresses can be taken from *.elf, *.out, *.afx files:  \n![Alt text](Screenshots/picture3.png?raw=true \"Image\")  \n\nSelect \"Data Saving\" tab for saving captured data to file. Data capture is started as previously described.  \n\n#### Capturing framebuffer:  \nNow this is supported for B/W displays like OLED with SDD1306 or LCD with ST7565R (single byte contains 8 vertical pixels, data is  organized horizontally).  \n![Alt text](Screenshots/picture2.png?raw=true \"Image\")  \nYou can get cursor position by pressing to the image.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Filiasam%2Fmcucapture","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Filiasam%2Fmcucapture","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Filiasam%2Fmcucapture/lists"}