)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":1000853,"name":"zapb","display_name":"Marc Schink","email":"dev@zapb.de","username":"zapb"},"change_message_id":"5f201f4c2d576dd86152e4d9cf0241bbce3b8da6","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"bf4d62a5_c7230eed","updated":"2025-04-18 07:48:23.000000000","message":"@Tomas: any general objections? I think it would be good if we had \u0027full\u0027 support for the chip.","commit_id":"ba5e0d5ad0ae88337d91ef29111a0e89b0f23563"},{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"vanekt@fbl.cz","username":"vanekt"},"change_message_id":"83b347dc5ba3cd8f445d0a2dca2308fcda6a7477","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"f3355f65_925dc663","in_reply_to":"bf4d62a5_c7230eed","updated":"2025-04-18 08:14:14.000000000","message":"Sorry Marc, I haven\u0027t time to test it yet. I just quickly check the code - looks good, just a couple of minor comments. I will test ASAP","commit_id":"ba5e0d5ad0ae88337d91ef29111a0e89b0f23563"},{"author":{"_account_id":1000853,"name":"zapb","display_name":"Marc Schink","email":"dev@zapb.de","username":"zapb"},"change_message_id":"0f2a1819f45d9381a9baa51f4e67738524cf6da0","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"76399f3d_3a5f18dc","updated":"2025-04-22 19:07:41.000000000","message":"Thanks, done!","commit_id":"93d396de8321f2d4b98d6eb3e57874dba4dec917"},{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"vanekt@fbl.cz","username":"vanekt"},"change_message_id":"0b8fa188a3012fe557684035fa809e1184059053","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"0ecca22d_c37fe3ae","updated":"2025-04-25 08:10:43.000000000","message":"Finally I tested on DK hw. RRAM write works perfectly.","commit_id":"4cd3338903dc7536040b277126e34abed710f8a2"},{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"vanekt@fbl.cz","username":"vanekt"},"change_message_id":"857be22b8ce94f512e52935e91ef18fcbe6cdaba","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":5,"id":"2e6cc19c_23504484","updated":"2025-05-03 06:29:39.000000000","message":"One more problem: memory map prepared for gdb is broken, the flash region missing.\nThe infrastructure cannot cope with zero sectors again.\nNot sure if defining one sector of rram size wouldn\u0027t be easier.","commit_id":"4cd3338903dc7536040b277126e34abed710f8a2"},{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"vanekt@fbl.cz","username":"vanekt"},"change_message_id":"b18caf008c7fcd7e0456178232eeb88b400f1acc","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"83598d31_0dc6b812","in_reply_to":"2e6cc19c_23504484","updated":"2025-12-14 20:58:47.000000000","message":"Done","commit_id":"4cd3338903dc7536040b277126e34abed710f8a2"},{"author":{"_account_id":1002459,"name":"Holger Mößinger","email":"git@holger-moessinger.de","username":"hm2dev"},"change_message_id":"4f8c00a5f0d419e2760a0064f2fa7a97668e703f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"79194331_03eb2916","updated":"2026-01-15 10:20:25.000000000","message":"Thanks for this change.\nI have successfully built and tested it on real nrf54L15 hardware on a custom board.\n\nWriting and verifying flash works with the configuration\n`flash bank $_CHIPNAME.flash nrf54 0x00000000 0 0 0 $_TARGETNAME`\nadded to the current `nrf54l.cfg` file and using the recovery function from [change 9268](https://review.openocd.org/c/openocd/+/9268) where necessary.\n\n\n\nProgramming using the `program` TCL script fails and also outputs a \"Bank is invalid\" coming from flash_iterate_address_range_inner at src\\flash\\nor\\core.c:L466 due to a check for `num_sectors \u003d\u003d 0`.\n\n`flash_iterate_address_range_inner` is called from `flash_iterate_address_range` which is used by `flash_erase_address_range` and `flash_unlock_address_range`.\n\nHowever, as Tomas Vanek already noted in [his comment](https://review.openocd.org/c/openocd/+/8818/comment/14ae80a2_2a286df4/) that is probably a different change.\n\nI would be happy to make that additional change, however I am not sure wich solution would be in the interest of OpenOCD overall.\n\nThe simple solution could be to separate the check for `num_sectors \u003d\u003d 0` from the check for `size \u003d\u003d 0` and only return the `ERROR_FLASH_BANK_INVALID` for the size check and simply return (\u003d do nothing or just output a warning?) if `num_sectors \u003d\u003d 0`.\nOn the other hand, it is probably better to somehow completely skip the unlock and erase command by giving the flash driver a way to indicate that they are not necessary.","commit_id":"249439f0120f7e2afc4d97f1cd73c28d3463a2c1"},{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"vanekt@fbl.cz","username":"vanekt"},"change_message_id":"9cede8a26b26c03779991143a0190bd6eb99f524","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"50527d2d_564647cf","updated":"2026-01-05 16:44:23.000000000","message":"Thanks!","commit_id":"249439f0120f7e2afc4d97f1cd73c28d3463a2c1"}],"src/flash/nor/nrf54.c":[{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"vanekt@fbl.cz","username":"vanekt"},"change_message_id":"83b347dc5ba3cd8f445d0a2dca2308fcda6a7477","unresolved":true,"context_lines":[{"line_number":146,"context_line":"\treturn true;"},{"line_number":147,"context_line":"}"},{"line_number":148,"context_line":""},{"line_number":149,"context_line":"static int nrf54_protect_check(struct flash_bank *bank)"},{"line_number":150,"context_line":"{"},{"line_number":151,"context_line":"\treturn ERROR_FLASH_OPER_UNSUPPORTED;"},{"line_number":152,"context_line":"}"},{"line_number":153,"context_line":""},{"line_number":154,"context_line":"static int nrf54_protect(struct flash_bank *bank, int set, unsigned int first,"},{"line_number":155,"context_line":"\t\tunsigned int last)"},{"line_number":156,"context_line":"{"},{"line_number":157,"context_line":"\treturn ERROR_FLASH_OPER_UNSUPPORTED;"},{"line_number":158,"context_line":"}"}],"source_content_type":"text/x-csrc","patch_set":3,"id":"21283d98_ac9099ba","line":155,"range":{"start_line":149,"start_character":0,"end_line":155,"end_character":1},"updated":"2025-04-18 08:14:14.000000000","message":"Please don\u0027t define such stubs - infrastructure works the same way without them - or even better in case of the protect stub (shows `Flash protection is not supported` instead of `failed setting protection for blocks`)","commit_id":"ba5e0d5ad0ae88337d91ef29111a0e89b0f23563"},{"author":{"_account_id":1000853,"name":"zapb","display_name":"Marc Schink","email":"dev@zapb.de","username":"zapb"},"change_message_id":"0f2a1819f45d9381a9baa51f4e67738524cf6da0","unresolved":false,"context_lines":[{"line_number":146,"context_line":"\treturn true;"},{"line_number":147,"context_line":"}"},{"line_number":148,"context_line":""},{"line_number":149,"context_line":"static int nrf54_protect_check(struct flash_bank *bank)"},{"line_number":150,"context_line":"{"},{"line_number":151,"context_line":"\treturn ERROR_FLASH_OPER_UNSUPPORTED;"},{"line_number":152,"context_line":"}"},{"line_number":153,"context_line":""},{"line_number":154,"context_line":"static int nrf54_protect(struct flash_bank *bank, int set, unsigned int first,"},{"line_number":155,"context_line":"\t\tunsigned int last)"},{"line_number":156,"context_line":"{"},{"line_number":157,"context_line":"\treturn ERROR_FLASH_OPER_UNSUPPORTED;"},{"line_number":158,"context_line":"}"}],"source_content_type":"text/x-csrc","patch_set":3,"id":"7755d300_9c89ca81","line":155,"range":{"start_line":149,"start_character":0,"end_line":155,"end_character":1},"in_reply_to":"21283d98_ac9099ba","updated":"2025-04-22 19:07:41.000000000","message":"Ack","commit_id":"ba5e0d5ad0ae88337d91ef29111a0e89b0f23563"},{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"vanekt@fbl.cz","username":"vanekt"},"change_message_id":"83b347dc5ba3cd8f445d0a2dca2308fcda6a7477","unresolved":true,"context_lines":[{"line_number":337,"context_line":"\treturn ERROR_FLASH_OPER_UNSUPPORTED;"},{"line_number":338,"context_line":"}"},{"line_number":339,"context_line":""},{"line_number":340,"context_line":"static void nrf54_free_driver_priv(struct flash_bank *bank)"},{"line_number":341,"context_line":"{"},{"line_number":342,"context_line":"\tfree(bank-\u003edriver_priv);"},{"line_number":343,"context_line":"}"},{"line_number":344,"context_line":""},{"line_number":345,"context_line":"FLASH_BANK_COMMAND_HANDLER(nrf54_flash_bank_command)"},{"line_number":346,"context_line":"{"}],"source_content_type":"text/x-csrc","patch_set":3,"id":"379829e1_30fa789c","line":343,"range":{"start_line":340,"start_character":1,"end_line":343,"end_character":1},"updated":"2025-04-18 08:14:14.000000000","message":"Same as `default_flash_free_driver_priv()`. Why don\u0027t use it?","commit_id":"ba5e0d5ad0ae88337d91ef29111a0e89b0f23563"},{"author":{"_account_id":1000853,"name":"zapb","display_name":"Marc Schink","email":"dev@zapb.de","username":"zapb"},"change_message_id":"0f2a1819f45d9381a9baa51f4e67738524cf6da0","unresolved":false,"context_lines":[{"line_number":337,"context_line":"\treturn ERROR_FLASH_OPER_UNSUPPORTED;"},{"line_number":338,"context_line":"}"},{"line_number":339,"context_line":""},{"line_number":340,"context_line":"static void nrf54_free_driver_priv(struct flash_bank *bank)"},{"line_number":341,"context_line":"{"},{"line_number":342,"context_line":"\tfree(bank-\u003edriver_priv);"},{"line_number":343,"context_line":"}"},{"line_number":344,"context_line":""},{"line_number":345,"context_line":"FLASH_BANK_COMMAND_HANDLER(nrf54_flash_bank_command)"},{"line_number":346,"context_line":"{"}],"source_content_type":"text/x-csrc","patch_set":3,"id":"10a85a57_508db5a7","line":343,"range":{"start_line":340,"start_character":1,"end_line":343,"end_character":1},"in_reply_to":"379829e1_30fa789c","updated":"2025-04-22 19:07:41.000000000","message":"Ack","commit_id":"ba5e0d5ad0ae88337d91ef29111a0e89b0f23563"},{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"vanekt@fbl.cz","username":"vanekt"},"change_message_id":"0b8fa188a3012fe557684035fa809e1184059053","unresolved":true,"context_lines":[{"line_number":184,"context_line":"\t}"},{"line_number":185,"context_line":""},{"line_number":186,"context_line":"\tnrf54_info-\u003epart_name \u003d part_name;"},{"line_number":187,"context_line":"\tbank-\u003esize \u003d ficr_info-\u003esram_size * 1024;"},{"line_number":188,"context_line":""},{"line_number":189,"context_line":"\tnrf54_info-\u003eprobed \u003d true;"},{"line_number":190,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":5,"id":"e7a8792d_b4d09eb0","line":187,"range":{"start_line":187,"start_character":25,"end_line":187,"end_character":29},"updated":"2025-04-25 08:10:43.000000000","message":"rram_size","commit_id":"4cd3338903dc7536040b277126e34abed710f8a2"},{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"vanekt@fbl.cz","username":"vanekt"},"change_message_id":"b18caf008c7fcd7e0456178232eeb88b400f1acc","unresolved":false,"context_lines":[{"line_number":184,"context_line":"\t}"},{"line_number":185,"context_line":""},{"line_number":186,"context_line":"\tnrf54_info-\u003epart_name \u003d part_name;"},{"line_number":187,"context_line":"\tbank-\u003esize \u003d ficr_info-\u003esram_size * 1024;"},{"line_number":188,"context_line":""},{"line_number":189,"context_line":"\tnrf54_info-\u003eprobed \u003d true;"},{"line_number":190,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":5,"id":"220edf03_c100bf91","line":187,"range":{"start_line":187,"start_character":25,"end_line":187,"end_character":29},"in_reply_to":"e7a8792d_b4d09eb0","updated":"2025-12-14 20:58:47.000000000","message":"Done","commit_id":"4cd3338903dc7536040b277126e34abed710f8a2"},{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"vanekt@fbl.cz","username":"vanekt"},"change_message_id":"0b8fa188a3012fe557684035fa809e1184059053","unresolved":true,"context_lines":[{"line_number":323,"context_line":"static int nrf54_erase(struct flash_bank *bank, unsigned int first,"},{"line_number":324,"context_line":"\t\tunsigned int last)"},{"line_number":325,"context_line":"{"},{"line_number":326,"context_line":"\treturn ERROR_FLASH_OPER_UNSUPPORTED;"},{"line_number":327,"context_line":"}"},{"line_number":328,"context_line":""},{"line_number":329,"context_line":"FLASH_BANK_COMMAND_HANDLER(nrf54_flash_bank_command)"}],"source_content_type":"text/x-csrc","patch_set":5,"id":"14ae80a2_2a286df4","line":326,"updated":"2025-04-25 08:10:43.000000000","message":"Currently the flash infrastructure shows just `failed erasing sectors x to x`, it may be misleading for an user not aware of RRAM principles.\nWe should also give a hint that erasing is not necessary.\nCould we induce that erasing is not necessary from ERROR_FLASH_OPER_UNSUPPORTED returned after erase or would be better to introduce more specific ERROR_FLASH_HAS_NO_ERASE or sth similar?\n\nAnyway feel free to make changes in flash/nor/core.c `flash_driver_erase()`\n\nNo doubts the commands `flash erase_sector` and `erase_address` have to fail on the RRAM bank. On the other hand to maintain better compatibility with flash devices we could silently ignore `erase` flag in `flash write_image` to allow `program` Tcl script usage. Of course this out of scope of this change.","commit_id":"4cd3338903dc7536040b277126e34abed710f8a2"},{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"vanekt@fbl.cz","username":"vanekt"},"change_message_id":"0b8fa188a3012fe557684035fa809e1184059053","unresolved":true,"context_lines":[{"line_number":367,"context_line":"\t.read \u003d default_flash_read,"},{"line_number":368,"context_line":"\t.probe \u003d nrf54_probe,"},{"line_number":369,"context_line":"\t.auto_probe \u003d nrf54_auto_probe,"},{"line_number":370,"context_line":"\t.erase_check \u003d default_flash_blank_check,"},{"line_number":371,"context_line":"\t.free_driver_priv \u003d default_flash_free_driver_priv,"},{"line_number":372,"context_line":"};"}],"source_content_type":"text/x-csrc","patch_set":5,"id":"01f76d35_1c3e41d2","line":370,"range":{"start_line":370,"start_character":16,"end_line":370,"end_character":41},"updated":"2025-04-25 08:10:43.000000000","message":"`default_flash_blank_check` works on sector by sector basis and on zero sectors RRAM bank always returns `Bank is erased`. Seems misleading.\n\nI think we do not need an erase check for RRAM as RRAM does not need/have erase and contains random data in virgin state. Use a stub returning error instead?","commit_id":"4cd3338903dc7536040b277126e34abed710f8a2"},{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"vanekt@fbl.cz","username":"vanekt"},"change_message_id":"b18caf008c7fcd7e0456178232eeb88b400f1acc","unresolved":true,"context_lines":[{"line_number":367,"context_line":"\t.read \u003d default_flash_read,"},{"line_number":368,"context_line":"\t.probe \u003d nrf54_probe,"},{"line_number":369,"context_line":"\t.auto_probe \u003d nrf54_auto_probe,"},{"line_number":370,"context_line":"\t.erase_check \u003d default_flash_blank_check,"},{"line_number":371,"context_line":"\t.free_driver_priv \u003d default_flash_free_driver_priv,"},{"line_number":372,"context_line":"};"}],"source_content_type":"text/x-csrc","patch_set":5,"id":"224deec1_4a9f194a","line":370,"range":{"start_line":370,"start_character":16,"end_line":370,"end_character":41},"in_reply_to":"01f76d35_1c3e41d2","updated":"2025-12-14 20:58:47.000000000","message":"There is a RRAM eraseall mostly intended for security.\nSo RRAM has at least defined erased state (0xff) and some (not too strong) reason to keep `flash erase_check` command working.","commit_id":"4cd3338903dc7536040b277126e34abed710f8a2"},{"author":{"_account_id":1000853,"name":"zapb","display_name":"Marc Schink","email":"dev@zapb.de","username":"zapb"},"change_message_id":"65b48cc536208bb9f6d235922aa0febd7a512f94","unresolved":true,"context_lines":[{"line_number":367,"context_line":"\t.read \u003d default_flash_read,"},{"line_number":368,"context_line":"\t.probe \u003d nrf54_probe,"},{"line_number":369,"context_line":"\t.auto_probe \u003d nrf54_auto_probe,"},{"line_number":370,"context_line":"\t.erase_check \u003d default_flash_blank_check,"},{"line_number":371,"context_line":"\t.free_driver_priv \u003d default_flash_free_driver_priv,"},{"line_number":372,"context_line":"};"}],"source_content_type":"text/x-csrc","patch_set":5,"id":"bc7713fe_27aa8e03","line":370,"range":{"start_line":370,"start_character":16,"end_line":370,"end_character":41},"in_reply_to":"224deec1_4a9f194a","updated":"2025-12-17 12:02:21.000000000","message":"Yep, makes sense. See my change in https://review.openocd.org/c/openocd/+/9319","commit_id":"4cd3338903dc7536040b277126e34abed710f8a2"},{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"vanekt@fbl.cz","username":"vanekt"},"change_message_id":"9cede8a26b26c03779991143a0190bd6eb99f524","unresolved":false,"context_lines":[{"line_number":367,"context_line":"\t.read \u003d default_flash_read,"},{"line_number":368,"context_line":"\t.probe \u003d nrf54_probe,"},{"line_number":369,"context_line":"\t.auto_probe \u003d nrf54_auto_probe,"},{"line_number":370,"context_line":"\t.erase_check \u003d default_flash_blank_check,"},{"line_number":371,"context_line":"\t.free_driver_priv \u003d default_flash_free_driver_priv,"},{"line_number":372,"context_line":"};"}],"source_content_type":"text/x-csrc","patch_set":5,"id":"bd02b118_a6040833","line":370,"range":{"start_line":370,"start_character":16,"end_line":370,"end_character":41},"in_reply_to":"bc7713fe_27aa8e03","updated":"2026-01-05 16:44:23.000000000","message":"Done","commit_id":"4cd3338903dc7536040b277126e34abed710f8a2"},{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"vanekt@fbl.cz","username":"vanekt"},"change_message_id":"b18caf008c7fcd7e0456178232eeb88b400f1acc","unresolved":true,"context_lines":[{"line_number":269,"context_line":"\t\tif (retval !\u003d ERROR_OK)"},{"line_number":270,"context_line":"\t\t\tgoto error;"},{"line_number":271,"context_line":""},{"line_number":272,"context_line":"\t\tretval \u003d nrf54_wait_until_ready(target, 1000);"},{"line_number":273,"context_line":"\t\tif (retval !\u003d ERROR_OK)"},{"line_number":274,"context_line":"\t\t\tgoto error;"},{"line_number":275,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":6,"id":"534a61cd_27804cfa","line":272,"updated":"2025-12-14 20:58:47.000000000","message":"Surprisingly long write triggers \n```\n\u003e flash write_image rand_1M.bin 0x8000\nwrote 1048576 bytes from file rand_1M.bin in 24.578466s (41.662 KiB/s)\nkeep_alive() was not invoked in the 1000 ms timelimit. GDB alive packet not sent! (24785 ms). Workaround: increase \"set remotetimeout\" in GDB\n```\n\nat adapter speed 1000.\nProbably NRF54_RRAMC_REG_READY never reads as not-ready and `keep_alive()` never gets called.","commit_id":"0994d7e7c9ce2e982fab13395a299c4b76eb4b05"},{"author":{"_account_id":1000853,"name":"zapb","display_name":"Marc Schink","email":"dev@zapb.de","username":"zapb"},"change_message_id":"2be16426ca256cd8718b4adfbaeaf940588f64d9","unresolved":false,"context_lines":[{"line_number":269,"context_line":"\t\tif (retval !\u003d ERROR_OK)"},{"line_number":270,"context_line":"\t\t\tgoto error;"},{"line_number":271,"context_line":""},{"line_number":272,"context_line":"\t\tretval \u003d nrf54_wait_until_ready(target, 1000);"},{"line_number":273,"context_line":"\t\tif (retval !\u003d ERROR_OK)"},{"line_number":274,"context_line":"\t\t\tgoto error;"},{"line_number":275,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":6,"id":"f85084c3_40be007c","line":272,"in_reply_to":"22b20838_453a3fff","updated":"2026-01-05 15:48:03.000000000","message":"Yep, you\u0027re right I was not connected via GDB. Thanks! Should be fixed now.","commit_id":"0994d7e7c9ce2e982fab13395a299c4b76eb4b05"},{"author":{"_account_id":1000853,"name":"zapb","display_name":"Marc Schink","email":"dev@zapb.de","username":"zapb"},"change_message_id":"65b48cc536208bb9f6d235922aa0febd7a512f94","unresolved":true,"context_lines":[{"line_number":269,"context_line":"\t\tif (retval !\u003d ERROR_OK)"},{"line_number":270,"context_line":"\t\t\tgoto error;"},{"line_number":271,"context_line":""},{"line_number":272,"context_line":"\t\tretval \u003d nrf54_wait_until_ready(target, 1000);"},{"line_number":273,"context_line":"\t\tif (retval !\u003d ERROR_OK)"},{"line_number":274,"context_line":"\t\t\tgoto error;"},{"line_number":275,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":6,"id":"9790d74b_5a9294ff","line":272,"in_reply_to":"534a61cd_27804cfa","updated":"2025-12-17 12:02:21.000000000","message":"Interesting, cannot reproduce this behaviour here - not even with an adapter speed of 100 kHz:\n\n\n```\n\u003e adapter speed 100\nadapter speed: 100 kHz\n\u003e flash write_image rand_1M.bin 0x8000\nwrote 1048576 bytes from file rand_1M.bin in 154.837021s (6.613 KiB/s)                                                                                                                   \n```","commit_id":"0994d7e7c9ce2e982fab13395a299c4b76eb4b05"},{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"vanekt@fbl.cz","username":"vanekt"},"change_message_id":"06329e3ed2b0ae3c989fb3e6f71a9acd1848fb26","unresolved":true,"context_lines":[{"line_number":269,"context_line":"\t\tif (retval !\u003d ERROR_OK)"},{"line_number":270,"context_line":"\t\t\tgoto error;"},{"line_number":271,"context_line":""},{"line_number":272,"context_line":"\t\tretval \u003d nrf54_wait_until_ready(target, 1000);"},{"line_number":273,"context_line":"\t\tif (retval !\u003d ERROR_OK)"},{"line_number":274,"context_line":"\t\t\tgoto error;"},{"line_number":275,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":6,"id":"22b20838_453a3fff","line":272,"in_reply_to":"9790d74b_5a9294ff","updated":"2026-01-03 13:30:48.000000000","message":"When testing from OpenOCD command line make sure gdb is connected or test gdb `load` command with an image long enough.\n\nA ncs zephyr image of load size 27574 needs `adapter speed 500` to emit\n```\nWarn : keep_alive() was not invoked in the 1000 ms timelimit. GDB alive packet not sent! (1030 ms). Workaround: increase \"set remotetimeout\" in GDB\n```\nThe warning goes to OpenOCD log output and telnet command line, it\u0027s not visible in gdb!","commit_id":"0994d7e7c9ce2e982fab13395a299c4b76eb4b05"}]}
