{"id":8453,"date":"2023-10-03T12:56:37","date_gmt":"2023-10-03T19:56:37","guid":{"rendered":"https:\/\/visualgdb.com\/w\/?p=8453"},"modified":"2023-10-04T14:55:33","modified_gmt":"2023-10-04T21:55:33","slug":"flash-hotpatching-support","status":"publish","type":"post","link":"https:\/\/visualgdb.com\/documentation\/flashpatchers\/","title":{"rendered":"FLASH Hotpatching Support"},"content":{"rendered":"<p>Debugging the code running from the FLASH memory using conventional tools imposes a few limitations on it:<\/p>\n<ul>\n<li>The maximum number of breakpoints in the FLASH code is limited by the hardware breakpoint unit (typically to 6 or 8 breakpoints).<\/li>\n<li><a href=\"https:\/\/visualgdb.com\/documentation\/tracing\/\">Live tracepoints<\/a> that record variable values without stopping the program, can only be set and removed before starting the debug session.<\/li>\n<\/ul>\n<p>To work around these limitations, VisualGDB supports FLASH hotpatching plugins. These plugins seamlessly patch the target FLASH memory to insert a software breakpoint, or a tracepoint without restarting the debug session.<\/p>\n<p>The FLASH hotpatching is supported out-of-the-box for the following device families:<\/p>\n<ul>\n<li>STM32\n<ul>\n<li>STM32F0x\/STM32F1x\/STM32F3x<\/li>\n<li>STM32F2x\/F4x<\/li>\n<li>STM32F7x<\/li>\n<li>STM32L0x<\/li>\n<li>STM32L1x<\/li>\n<li>STM32G4x\/STM32L4x<\/li>\n<li>STM32G0x<\/li>\n<li>STM32L5x\/STM32U5x<\/li>\n<li>STM32WBx\/STM32WLx<\/li>\n<li>STM32H5x<\/li>\n<li>STM32H7x<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p>If your device is not listed above, consider one of the following options:<\/p>\n<ul>\n<li>Try using Segger J-Link. It provides its own FLASH patching mechanism.<\/li>\n<li><a href=\"https:\/\/sysprogs.com\/support\/\">Contact us<\/a> with the details about your device. We are actively developing new FLASH patching plugins and might have a pre-release version for your device.<\/li>\n<li>Consider browsing our <a href=\"https:\/\/github.com\/sysprogs\/BSPTools\/tree\/master\/FLASHPatchers\">open-source FLASH patcher repository<\/a> and making a plugin for your device based on one of the existing plugins.<\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Debugging the code running from the FLASH memory using conventional tools imposes a few limitations on it: The maximum number<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[197],"tags":[],"_links":{"self":[{"href":"https:\/\/visualgdb.com\/w\/wp-json\/wp\/v2\/posts\/8453"}],"collection":[{"href":"https:\/\/visualgdb.com\/w\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/visualgdb.com\/w\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/visualgdb.com\/w\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/visualgdb.com\/w\/wp-json\/wp\/v2\/comments?post=8453"}],"version-history":[{"count":1,"href":"https:\/\/visualgdb.com\/w\/wp-json\/wp\/v2\/posts\/8453\/revisions"}],"predecessor-version":[{"id":8461,"href":"https:\/\/visualgdb.com\/w\/wp-json\/wp\/v2\/posts\/8453\/revisions\/8461"}],"wp:attachment":[{"href":"https:\/\/visualgdb.com\/w\/wp-json\/wp\/v2\/media?parent=8453"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/visualgdb.com\/w\/wp-json\/wp\/v2\/categories?post=8453"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/visualgdb.com\/w\/wp-json\/wp\/v2\/tags?post=8453"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}