)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"dca3e888370d8fd644f01270c645bc6c179e5c6b","unresolved":false,"context_lines":[{"line_number":9,"context_line":"this command will help to enable/disable or display the TrustZone security,"},{"line_number":10,"context_line":"using the TZEN option bit."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Note: This command works only with devices with TrusZone, eg. STM32L5."},{"line_number":13,"context_line":"Note: This command will perform an OBL_Launch after modifying the TZEN."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Change-Id: I4aef15bf57d09c1658d37858143d23b1d43de1f0"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":17,"id":"2ecb373e_2ee68714","line":12,"updated":"2021-08-15 23:13:35.000000000","message":"Typo s/TrusZone/TrustZone/","commit_id":"c3a836dee84e3ce3e424eb08633ceb2a7fea7450"}],"doc/openocd.texi":[{"author":{"_account_id":1000863,"name":"Tarek BOCHKATI","email":"tarek.bouchkati@gmail.com","username":"BouchkatiTarek"},"change_message_id":"064009f1053b331a4cd7ea1f52e95646cd367cd6","unresolved":false,"context_lines":[{"line_number":6953,"context_line":"option byte, Watchdog configuration, BOR level etc."},{"line_number":6954,"context_line":"@end deffn"},{"line_number":6955,"context_line":""},{"line_number":6956,"context_line":"@deffn Command {stm32l4x option_write} num reg_offset reg_mask"},{"line_number":6957,"context_line":"Write an option byte register of the stm32l4x device."},{"line_number":6958,"context_line":"The @var{num} parameter is a value shown by @command{flash banks}, @var{reg_offset}"},{"line_number":6959,"context_line":"is the register offset of the Option byte to write, and @var{reg_mask} is the mask"}],"source_content_type":"text/x-texinfo","patch_set":1,"id":"2e76d7c5_b515f3eb","line":6956,"range":{"start_line":6956,"start_character":0,"end_line":6956,"end_character":62},"updated":"2020-04-01 17:41:03.000000000","message":"do you thing a note here, saying that option_write do not trigger the OBL LAUNCH, is enough to avoid any confusion ?","commit_id":"6e039a1763bdf585a6b3b38a630a788854a22522"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"dca3e888370d8fd644f01270c645bc6c179e5c6b","unresolved":false,"context_lines":[{"line_number":7403,"context_line":""},{"line_number":7404,"context_line":"@deffn Command {stm32l4x trustzone} num [@option{enable} | @option{disable}]"},{"line_number":7405,"context_line":"Enables or disables Global TrustZone Security, using the TZEN option bit."},{"line_number":7406,"context_line":"if neither @option{enabled} nor @option{disable} are specified, the command will display"},{"line_number":7407,"context_line":"the TrustZone status."},{"line_number":7408,"context_line":"@emph{Note:} This command works only with devices with TrusZone, eg. STM32L5."},{"line_number":7409,"context_line":"@emph{Note:} This command will perform an OBL_Launch after modifying the TZEN."}],"source_content_type":"text/x-texinfo","patch_set":17,"id":"2ecb373e_0ee14bfb","line":7406,"updated":"2021-08-15 23:13:35.000000000","message":"Start new paragraph in uppercase","commit_id":"c3a836dee84e3ce3e424eb08633ceb2a7fea7450"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"dca3e888370d8fd644f01270c645bc6c179e5c6b","unresolved":false,"context_lines":[{"line_number":7405,"context_line":"Enables or disables Global TrustZone Security, using the TZEN option bit."},{"line_number":7406,"context_line":"if neither @option{enabled} nor @option{disable} are specified, the command will display"},{"line_number":7407,"context_line":"the TrustZone status."},{"line_number":7408,"context_line":"@emph{Note:} This command works only with devices with TrusZone, eg. STM32L5."},{"line_number":7409,"context_line":"@emph{Note:} This command will perform an OBL_Launch after modifying the TZEN."},{"line_number":7410,"context_line":"@end deffn"},{"line_number":7411,"context_line":"@end deffn"}],"source_content_type":"text/x-texinfo","patch_set":17,"id":"2ecb373e_6edc8f4c","line":7408,"range":{"start_line":7408,"start_character":55,"end_line":7408,"end_character":63},"updated":"2021-08-15 23:13:35.000000000","message":"typo s/TrusZone/TrustZone/","commit_id":"c3a836dee84e3ce3e424eb08633ceb2a7fea7450"}],"src/flash/nor/stm32l4x.c":[{"author":{"_account_id":1000853,"name":"zapb","display_name":"Marc Schink","email":"dev@zapb.de","username":"zapb"},"change_message_id":"61902da9666d1016be054783d2fa43708ce907a2","unresolved":false,"context_lines":[{"line_number":139,"context_line":"\tRDP_LEVEL_2   \u003d 0xCC"},{"line_number":140,"context_line":"};"},{"line_number":141,"context_line":""},{"line_number":142,"context_line":"enum stm32l4_obl_launch {"},{"line_number":143,"context_line":"\tOBL_LAUNCH_PERFORM,"},{"line_number":144,"context_line":"\tOBL_LAUNCH_POSTPONE"},{"line_number":145,"context_line":"};"}],"source_content_type":"text/x-csrc","patch_set":1,"id":"2e76d7c5_1255dd52","line":142,"updated":"2020-03-26 08:06:06.000000000","message":"Do we really need an enum for that?","commit_id":"6e039a1763bdf585a6b3b38a630a788854a22522"},{"author":{"_account_id":1000863,"name":"Tarek BOCHKATI","email":"tarek.bouchkati@gmail.com","username":"BouchkatiTarek"},"change_message_id":"da2b47ea5c3a2346f49ffefefa1543e5d4d20771","unresolved":false,"context_lines":[{"line_number":139,"context_line":"\tRDP_LEVEL_2   \u003d 0xCC"},{"line_number":140,"context_line":"};"},{"line_number":141,"context_line":""},{"line_number":142,"context_line":"enum stm32l4_obl_launch {"},{"line_number":143,"context_line":"\tOBL_LAUNCH_PERFORM,"},{"line_number":144,"context_line":"\tOBL_LAUNCH_POSTPONE"},{"line_number":145,"context_line":"};"}],"source_content_type":"text/x-csrc","patch_set":1,"id":"2e76d7c5_d28be5c2","line":142,"in_reply_to":"2e76d7c5_1255dd52","updated":"2020-03-26 15:31:01.000000000","message":"technically no need.\nyou can say it\u0027s a personal taste with a purpose:\nwhen calling the function stm32l4_write_option, when you find true/false, it\u0027s not explicit as you read OBL_LAUNCH_POSTPONE / _PERFORM","commit_id":"6e039a1763bdf585a6b3b38a630a788854a22522"},{"author":{"_account_id":1000853,"name":"zapb","display_name":"Marc Schink","email":"dev@zapb.de","username":"zapb"},"change_message_id":"61902da9666d1016be054783d2fa43708ce907a2","unresolved":false,"context_lines":[{"line_number":709,"context_line":""},{"line_number":710,"context_line":"static int stm32l4_write_option(struct flash_bank *bank, uint32_t reg,"},{"line_number":711,"context_line":"\tenum reg_param_type reg_param_type,\tuint32_t value, uint32_t mask,"},{"line_number":712,"context_line":"\tenum stm32l4_obl_launch obl_launch)"},{"line_number":713,"context_line":"{"},{"line_number":714,"context_line":"\tuint32_t optiondata;"},{"line_number":715,"context_line":"\tint retval, retval2;"}],"source_content_type":"text/x-csrc","patch_set":1,"id":"2e76d7c5_b2518967","line":712,"updated":"2020-03-26 08:06:06.000000000","message":"I think it would be sufficient to use a \u0027bool launch_obl\u0027","commit_id":"6e039a1763bdf585a6b3b38a630a788854a22522"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"338b6b88d1b8853b5e220bb1cbf8b6cb6eebdbf3","unresolved":false,"context_lines":[{"line_number":709,"context_line":""},{"line_number":710,"context_line":"static int stm32l4_write_option(struct flash_bank *bank, uint32_t reg,"},{"line_number":711,"context_line":"\tenum reg_param_type reg_param_type,\tuint32_t value, uint32_t mask,"},{"line_number":712,"context_line":"\tenum stm32l4_obl_launch obl_launch)"},{"line_number":713,"context_line":"{"},{"line_number":714,"context_line":"\tuint32_t optiondata;"},{"line_number":715,"context_line":"\tint retval, retval2;"}],"source_content_type":"text/x-csrc","patch_set":1,"id":"2e76d7c5_7528bb32","line":712,"in_reply_to":"2e76d7c5_55101f04","updated":"2020-04-01 12:12:05.000000000","message":"ok","commit_id":"6e039a1763bdf585a6b3b38a630a788854a22522"},{"author":{"_account_id":1000863,"name":"Tarek BOCHKATI","email":"tarek.bouchkati@gmail.com","username":"BouchkatiTarek"},"change_message_id":"1b99c8e5dfa3303a74739b1096db93fe0f8da5d7","unresolved":false,"context_lines":[{"line_number":709,"context_line":""},{"line_number":710,"context_line":"static int stm32l4_write_option(struct flash_bank *bank, uint32_t reg,"},{"line_number":711,"context_line":"\tenum reg_param_type reg_param_type,\tuint32_t value, uint32_t mask,"},{"line_number":712,"context_line":"\tenum stm32l4_obl_launch obl_launch)"},{"line_number":713,"context_line":"{"},{"line_number":714,"context_line":"\tuint32_t optiondata;"},{"line_number":715,"context_line":"\tint retval, retval2;"}],"source_content_type":"text/x-csrc","patch_set":1,"id":"2e76d7c5_55101f04","line":712,"in_reply_to":"2e76d7c5_55d33f61","updated":"2020-04-01 11:24:20.000000000","message":"no, unfortunately, it cannot be extracted:\nOBL_LAUNCH bit is part from the flash control register (FLASH_CR).\nSo, it cannot be extracted as this function accepts \u0027semantically\u0027 an option register.\n\nNote: there is no check if the user passes a register offset pointing to non-option register (as the offsets are different between devices). this check could be an enhancement idea.\n\nIf the user is setting the TZEN through the option_write command, he is violating the purpose of this command because FLASH_CR is not an option register.","commit_id":"6e039a1763bdf585a6b3b38a630a788854a22522"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"5662731d9d8b2147c1d89493afeebb04b0f25ad7","unresolved":false,"context_lines":[{"line_number":709,"context_line":""},{"line_number":710,"context_line":"static int stm32l4_write_option(struct flash_bank *bank, uint32_t reg,"},{"line_number":711,"context_line":"\tenum reg_param_type reg_param_type,\tuint32_t value, uint32_t mask,"},{"line_number":712,"context_line":"\tenum stm32l4_obl_launch obl_launch)"},{"line_number":713,"context_line":"{"},{"line_number":714,"context_line":"\tuint32_t optiondata;"},{"line_number":715,"context_line":"\tint retval, retval2;"}],"source_content_type":"text/x-csrc","patch_set":1,"id":"2e76d7c5_55d33f61","line":712,"in_reply_to":"2e76d7c5_72b8d174","updated":"2020-03-31 14:15:37.000000000","message":"I\u0027m not expert here, but do we really need an additional parameter here? Can the \"obl_lunch\" flag be \"extracted\" from the other parameters reg, value and mask?\nWhat if the user set tzen using \"option_write\" command? With this patch obl_lunch is skipped.\n\nRegarding bool/enum, I do not have preference. Just do not pass directly true/false because would kill readabilty. Either enum or macros for bool.","commit_id":"6e039a1763bdf585a6b3b38a630a788854a22522"},{"author":{"_account_id":1000863,"name":"Tarek BOCHKATI","email":"tarek.bouchkati@gmail.com","username":"BouchkatiTarek"},"change_message_id":"064009f1053b331a4cd7ea1f52e95646cd367cd6","unresolved":false,"context_lines":[{"line_number":709,"context_line":""},{"line_number":710,"context_line":"static int stm32l4_write_option(struct flash_bank *bank, uint32_t reg,"},{"line_number":711,"context_line":"\tenum reg_param_type reg_param_type,\tuint32_t value, uint32_t mask,"},{"line_number":712,"context_line":"\tenum stm32l4_obl_launch obl_launch)"},{"line_number":713,"context_line":"{"},{"line_number":714,"context_line":"\tuint32_t optiondata;"},{"line_number":715,"context_line":"\tint retval, retval2;"}],"source_content_type":"text/x-csrc","patch_set":1,"id":"2e76d7c5_d512ef00","line":712,"in_reply_to":"2e76d7c5_7528bb32","updated":"2020-04-01 17:41:03.000000000","message":"Antonio, I\u0027m wrong, this statement is crap:\n\u003e\u003e If the user is setting the TZEN through the option_write command, he is violating the purpose of this command because FLASH_CR is not an option register.\n\nwhen I re-read your comment: I understood clearly your point, and you are right. for example: if the user enter\nstm324x write_option 0 0x40 0x80000000 0x80000000\nto set TZEN manually, the obl_launch is skiped !\nand possible the operation could fail if RDP is not adequate.\n\nBTW, the command option_write default behavior is not changed, previously it does not trigger the OBL LAUNCH.\nand the user have to call the option_load command explicitly.","commit_id":"6e039a1763bdf585a6b3b38a630a788854a22522"},{"author":{"_account_id":1000863,"name":"Tarek BOCHKATI","email":"tarek.bouchkati@gmail.com","username":"BouchkatiTarek"},"change_message_id":"da2b47ea5c3a2346f49ffefefa1543e5d4d20771","unresolved":false,"context_lines":[{"line_number":709,"context_line":""},{"line_number":710,"context_line":"static int stm32l4_write_option(struct flash_bank *bank, uint32_t reg,"},{"line_number":711,"context_line":"\tenum reg_param_type reg_param_type,\tuint32_t value, uint32_t mask,"},{"line_number":712,"context_line":"\tenum stm32l4_obl_launch obl_launch)"},{"line_number":713,"context_line":"{"},{"line_number":714,"context_line":"\tuint32_t optiondata;"},{"line_number":715,"context_line":"\tint retval, retval2;"}],"source_content_type":"text/x-csrc","patch_set":1,"id":"2e76d7c5_72b8d174","line":712,"in_reply_to":"2e76d7c5_b2518967","updated":"2020-03-26 15:31:01.000000000","message":"yes possible, and then for readability we can use defines like :\n#define OBL_LAUNCH_POSTPONE false\n#define OBL_LAUNCH_PERFORM  true\n\nwhat do you think ?","commit_id":"6e039a1763bdf585a6b3b38a630a788854a22522"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"b393c1ef5f64df0c04b33f79eb03e817ba5599d0","unresolved":false,"context_lines":[{"line_number":739,"context_line":"\treturn ERROR_OK;"},{"line_number":740,"context_line":"}"},{"line_number":741,"context_line":""},{"line_number":742,"context_line":"static int stm32l4_write_option(struct flash_bank *bank, uint32_t reg_offset,"},{"line_number":743,"context_line":"\tuint32_t value, uint32_t mask, enum stm32l4_obl_launch obl_launch)"},{"line_number":744,"context_line":"{"},{"line_number":745,"context_line":"\tuint32_t optiondata;"},{"line_number":746,"context_line":"\tint retval, retval2;"}],"source_content_type":"text/x-csrc","patch_set":4,"id":"ceda9b01_040cc63c","line":743,"range":{"start_line":742,"start_character":0,"end_line":743,"end_character":67},"updated":"2020-11-07 15:20:55.000000000","message":"Extending the list of parameters of this function just to \u0027append\u0027 one write at the end of the function?\nAnd this is required only in one case, the trustzone command.\nI would prefer you add a function stm32l4_perform_obl_launch() that just do the write, then call it at the end of the trustzone command.","commit_id":"4d6735390c0f7dee6b7a8edd6cff50dc2d2a5604"},{"author":{"_account_id":1000863,"name":"Tarek BOCHKATI","email":"tarek.bouchkati@gmail.com","username":"BouchkatiTarek"},"change_message_id":"89a3bdb75f89c7e2bad2c6011972c5155f85e9ac","unresolved":false,"context_lines":[{"line_number":739,"context_line":"\treturn ERROR_OK;"},{"line_number":740,"context_line":"}"},{"line_number":741,"context_line":""},{"line_number":742,"context_line":"static int stm32l4_write_option(struct flash_bank *bank, uint32_t reg_offset,"},{"line_number":743,"context_line":"\tuint32_t value, uint32_t mask, enum stm32l4_obl_launch obl_launch)"},{"line_number":744,"context_line":"{"},{"line_number":745,"context_line":"\tuint32_t optiondata;"},{"line_number":746,"context_line":"\tint retval, retval2;"}],"source_content_type":"text/x-csrc","patch_set":4,"id":"ceda9b01_6400326e","line":743,"range":{"start_line":742,"start_character":0,"end_line":743,"end_character":67},"in_reply_to":"ceda9b01_040cc63c","updated":"2020-11-09 16:43:37.000000000","message":"Done, please check http://openocd.zylin.com/#/c/5542/5/src/flash/nor/stm32l4x.c@737","commit_id":"4d6735390c0f7dee6b7a8edd6cff50dc2d2a5604"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"b393c1ef5f64df0c04b33f79eb03e817ba5599d0","unresolved":false,"context_lines":[{"line_number":1750,"context_line":"\t\tretval \u003d stm32l4_write_option(bank, stm32l4_info-\u003eflash_regs[STM32_FLASH_OPTR_INDEX],"},{"line_number":1751,"context_line":"\t\t\t\tRDP_LEVEL_0 | FLASH_TZEN, FLASH_RDP_MASK | FLASH_TZEN, OBL_LAUNCH_PERFORM);"},{"line_number":1752,"context_line":"\t}"},{"line_number":1753,"context_line":""},{"line_number":1754,"context_line":"\t/* force re-probe */"},{"line_number":1755,"context_line":"\tstm32l4_info-\u003eprobed \u003d false;"},{"line_number":1756,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":4,"id":"ceda9b01_a4185a7b","line":1753,"updated":"2020-11-07 15:20:55.000000000","message":"add here:\nif (retval \u003d\u003d ERROR_OK)\n  retval \u003d stm32l4_perform_obl_launch();","commit_id":"4d6735390c0f7dee6b7a8edd6cff50dc2d2a5604"},{"author":{"_account_id":1000863,"name":"Tarek BOCHKATI","email":"tarek.bouchkati@gmail.com","username":"BouchkatiTarek"},"change_message_id":"89a3bdb75f89c7e2bad2c6011972c5155f85e9ac","unresolved":false,"context_lines":[{"line_number":1750,"context_line":"\t\tretval \u003d stm32l4_write_option(bank, stm32l4_info-\u003eflash_regs[STM32_FLASH_OPTR_INDEX],"},{"line_number":1751,"context_line":"\t\t\t\tRDP_LEVEL_0 | FLASH_TZEN, FLASH_RDP_MASK | FLASH_TZEN, OBL_LAUNCH_PERFORM);"},{"line_number":1752,"context_line":"\t}"},{"line_number":1753,"context_line":""},{"line_number":1754,"context_line":"\t/* force re-probe */"},{"line_number":1755,"context_line":"\tstm32l4_info-\u003eprobed \u003d false;"},{"line_number":1756,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":4,"id":"ceda9b01_24fa2a74","line":1753,"in_reply_to":"ceda9b01_a4185a7b","updated":"2020-11-09 16:43:37.000000000","message":"Done","commit_id":"4d6735390c0f7dee6b7a8edd6cff50dc2d2a5604"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"b393c1ef5f64df0c04b33f79eb03e817ba5599d0","unresolved":false,"context_lines":[{"line_number":1754,"context_line":"\t/* force re-probe */"},{"line_number":1755,"context_line":"\tstm32l4_info-\u003eprobed \u003d false;"},{"line_number":1756,"context_line":""},{"line_number":1757,"context_line":"\tif (retval !\u003d ERROR_OK)"},{"line_number":1758,"context_line":"\t\treturn retval;"},{"line_number":1759,"context_line":""},{"line_number":1760,"context_line":"\treturn retval;"},{"line_number":1761,"context_line":"}"},{"line_number":1762,"context_line":""},{"line_number":1763,"context_line":"COMMAND_HANDLER(stm32l4_handle_option_load_command)"}],"source_content_type":"text/x-csrc","patch_set":4,"id":"ceda9b01_c4155e42","line":1760,"range":{"start_line":1757,"start_character":0,"end_line":1760,"end_character":15},"updated":"2020-11-07 15:20:55.000000000","message":"directly\nreturn retval;","commit_id":"4d6735390c0f7dee6b7a8edd6cff50dc2d2a5604"},{"author":{"_account_id":1000863,"name":"Tarek BOCHKATI","email":"tarek.bouchkati@gmail.com","username":"BouchkatiTarek"},"change_message_id":"89a3bdb75f89c7e2bad2c6011972c5155f85e9ac","unresolved":false,"context_lines":[{"line_number":1754,"context_line":"\t/* force re-probe */"},{"line_number":1755,"context_line":"\tstm32l4_info-\u003eprobed \u003d false;"},{"line_number":1756,"context_line":""},{"line_number":1757,"context_line":"\tif (retval !\u003d ERROR_OK)"},{"line_number":1758,"context_line":"\t\treturn retval;"},{"line_number":1759,"context_line":""},{"line_number":1760,"context_line":"\treturn retval;"},{"line_number":1761,"context_line":"}"},{"line_number":1762,"context_line":""},{"line_number":1763,"context_line":"COMMAND_HANDLER(stm32l4_handle_option_load_command)"}],"source_content_type":"text/x-csrc","patch_set":4,"id":"ceda9b01_44ff2e63","line":1760,"range":{"start_line":1757,"start_character":0,"end_line":1760,"end_character":15},"in_reply_to":"ceda9b01_c4155e42","updated":"2020-11-09 16:43:37.000000000","message":"Done","commit_id":"4d6735390c0f7dee6b7a8edd6cff50dc2d2a5604"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"a7cf6cb054e132ca72f7db1ae250c74c5cee3df1","unresolved":false,"context_lines":[{"line_number":798,"context_line":"\t\tgoto err_lock;"},{"line_number":799,"context_line":""},{"line_number":800,"context_line":"\tretval \u003d stm32l4_wait_status_busy(bank, FLASH_ERASE_TIMEOUT);"},{"line_number":801,"context_line":"\tif (retval !\u003d ERROR_OK)"},{"line_number":802,"context_line":"\t\tgoto err_lock;"},{"line_number":803,"context_line":""},{"line_number":804,"context_line":"err_lock:"},{"line_number":805,"context_line":"\tretval2 \u003d stm32l4_write_flash_reg_by_index(bank, STM32_FLASH_CR_INDEX, FLASH_LOCK | FLASH_OPTLOCK);"}],"source_content_type":"text/x-csrc","patch_set":5,"id":"ceda9b01_e4f3c29a","line":802,"range":{"start_line":801,"start_character":0,"end_line":802,"end_character":16},"updated":"2020-11-09 16:31:46.000000000","message":"Remove these two lines and just fall-through.\nWhere not present in the original code and have sense only in patch till v4.","commit_id":"3f82533d5421ba0ab23d7788d4c5decea542e25a"},{"author":{"_account_id":1000863,"name":"Tarek BOCHKATI","email":"tarek.bouchkati@gmail.com","username":"BouchkatiTarek"},"change_message_id":"89a3bdb75f89c7e2bad2c6011972c5155f85e9ac","unresolved":false,"context_lines":[{"line_number":799,"context_line":""},{"line_number":800,"context_line":"\tretval \u003d stm32l4_wait_status_busy(bank, FLASH_ERASE_TIMEOUT);"},{"line_number":801,"context_line":"\tif (retval !\u003d ERROR_OK)"},{"line_number":802,"context_line":"\t\tgoto err_lock;"},{"line_number":803,"context_line":""},{"line_number":804,"context_line":"err_lock:"},{"line_number":805,"context_line":"\tretval2 \u003d stm32l4_write_flash_reg_by_index(bank, STM32_FLASH_CR_INDEX, FLASH_LOCK | FLASH_OPTLOCK);"}],"source_content_type":"text/x-csrc","patch_set":5,"id":"ceda9b01_642fd2f4","line":802,"in_reply_to":"ceda9b01_e4f3c29a","updated":"2020-11-09 16:43:37.000000000","message":"Done","commit_id":"3f82533d5421ba0ab23d7788d4c5decea542e25a"},{"author":{"_account_id":1000863,"name":"Tarek BOCHKATI","email":"tarek.bouchkati@gmail.com","username":"BouchkatiTarek"},"change_message_id":"894a0de1286cef7cdc5d91e4b9b668d248674315","unresolved":false,"context_lines":[{"line_number":796,"context_line":""},{"line_number":797,"context_line":"\tretval \u003d stm32l4_unlock_reg(bank);"},{"line_number":798,"context_line":"\tif (retval !\u003d ERROR_OK)"},{"line_number":799,"context_line":"\t\tgoto err_lock;"},{"line_number":800,"context_line":""},{"line_number":801,"context_line":"\tretval \u003d stm32l4_unlock_option_reg(bank);"},{"line_number":802,"context_line":"\tif (ERROR_OK !\u003d retval)"}],"source_content_type":"text/x-csrc","patch_set":12,"id":"aedf27f1_43216699","line":799,"range":{"start_line":799,"start_character":2,"end_line":799,"end_character":16},"updated":"2021-05-25 14:36:12.000000000","message":"[scenario 1] we can directly return retval, but there is chance the error occurred after the write did actually happen.\nso we need to make sure that FLASH_CR is locked after this function exit\nnote: if we lock the FLASH_CR even when it\u0027s already locked, we have no error.","commit_id":"841a08c9a485ef2aaea83f6b307df13a1f079a4a"},{"author":{"_account_id":1000410,"name":"Oleksij Rempel","email":"linux@rempel-privat.de","username":"olerem"},"change_message_id":"27ac87b651113e87df0753293cd159647fbb5fa1","unresolved":false,"context_lines":[{"line_number":799,"context_line":"\t\tgoto err_lock;"},{"line_number":800,"context_line":""},{"line_number":801,"context_line":"\tretval \u003d stm32l4_unlock_option_reg(bank);"},{"line_number":802,"context_line":"\tif (ERROR_OK !\u003d retval)"},{"line_number":803,"context_line":"\t\tgoto err_lock;"},{"line_number":804,"context_line":""},{"line_number":805,"context_line":"\t/* Set OBL_LAUNCH bit in CR -\u003e system reset and option bytes reload,"}],"source_content_type":"text/x-csrc","patch_set":12,"id":"ceda9b01_c591ce53","line":802,"updated":"2021-03-28 09:42:25.000000000","message":"please use same style (retval !\u003d ERROR_OK) in all part of this patch.","commit_id":"841a08c9a485ef2aaea83f6b307df13a1f079a4a"},{"author":{"_account_id":1000863,"name":"Tarek BOCHKATI","email":"tarek.bouchkati@gmail.com","username":"BouchkatiTarek"},"change_message_id":"894a0de1286cef7cdc5d91e4b9b668d248674315","unresolved":false,"context_lines":[{"line_number":799,"context_line":"\t\tgoto err_lock;"},{"line_number":800,"context_line":""},{"line_number":801,"context_line":"\tretval \u003d stm32l4_unlock_option_reg(bank);"},{"line_number":802,"context_line":"\tif (ERROR_OK !\u003d retval)"},{"line_number":803,"context_line":"\t\tgoto err_lock;"},{"line_number":804,"context_line":""},{"line_number":805,"context_line":"\t/* Set OBL_LAUNCH bit in CR -\u003e system reset and option bytes reload,"}],"source_content_type":"text/x-csrc","patch_set":12,"id":"aedf27f1_834e6e71","line":802,"in_reply_to":"ceda9b01_c591ce53","updated":"2021-05-25 14:36:12.000000000","message":"Done","commit_id":"841a08c9a485ef2aaea83f6b307df13a1f079a4a"},{"author":{"_account_id":1000853,"name":"zapb","display_name":"Marc Schink","email":"dev@zapb.de","username":"zapb"},"change_message_id":"77488acec5aae68a000deb0728494a46e097cedc","unresolved":false,"context_lines":[{"line_number":799,"context_line":"\t\tgoto err_lock;"},{"line_number":800,"context_line":""},{"line_number":801,"context_line":"\tretval \u003d stm32l4_unlock_option_reg(bank);"},{"line_number":802,"context_line":"\tif (ERROR_OK !\u003d retval)"},{"line_number":803,"context_line":"\t\tgoto err_lock;"},{"line_number":804,"context_line":""},{"line_number":805,"context_line":"\t/* Set OBL_LAUNCH bit in CR -\u003e system reset and option bytes reload,"}],"source_content_type":"text/x-csrc","patch_set":12,"id":"ceda9b01_a58b6a1a","line":802,"in_reply_to":"ceda9b01_c591ce53","updated":"2021-03-28 09:56:55.000000000","message":"Oleksij, we have lots of code this way. There is even an example with this style in the \u0027style guide\u0027. I don\u0027t like it either, shall we adapt the coding style?","commit_id":"841a08c9a485ef2aaea83f6b307df13a1f079a4a"},{"author":{"_account_id":1000863,"name":"Tarek BOCHKATI","email":"tarek.bouchkati@gmail.com","username":"BouchkatiTarek"},"change_message_id":"894a0de1286cef7cdc5d91e4b9b668d248674315","unresolved":false,"context_lines":[{"line_number":800,"context_line":""},{"line_number":801,"context_line":"\tretval \u003d stm32l4_unlock_option_reg(bank);"},{"line_number":802,"context_line":"\tif (ERROR_OK !\u003d retval)"},{"line_number":803,"context_line":"\t\tgoto err_lock;"},{"line_number":804,"context_line":""},{"line_number":805,"context_line":"\t/* Set OBL_LAUNCH bit in CR -\u003e system reset and option bytes reload,"},{"line_number":806,"context_line":"\t * but the RMs explicitly do *NOT* list this as power-on reset cause, and:"}],"source_content_type":"text/x-csrc","patch_set":12,"id":"aedf27f1_e335fad8","line":803,"range":{"start_line":803,"start_character":2,"end_line":803,"end_character":16},"updated":"2021-05-25 14:36:12.000000000","message":"[scenario 2] same as above, but with the obligation to lock FLASH_CR register (FLASH_LOCK)","commit_id":"841a08c9a485ef2aaea83f6b307df13a1f079a4a"},{"author":{"_account_id":1000410,"name":"Oleksij Rempel","email":"linux@rempel-privat.de","username":"olerem"},"change_message_id":"27ac87b651113e87df0753293cd159647fbb5fa1","unresolved":false,"context_lines":[{"line_number":808,"context_line":"\t * connected through JTAG/SWD, apply a POR (power-on reset) instead of a system reset.\""},{"line_number":809,"context_line":"\t */"},{"line_number":810,"context_line":""},{"line_number":811,"context_line":"\t/* ignore the returned error value because the device is reset after OBL Launch*/"},{"line_number":812,"context_line":"\tretval \u003d ERROR_OK;"},{"line_number":813,"context_line":"\tstm32l4_write_flash_reg_by_index(bank, STM32_FLASH_CR_INDEX, FLASH_OBL_LAUNCH);"},{"line_number":814,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":12,"id":"ceda9b01_858bc61f","line":811,"updated":"2021-03-28 09:42:25.000000000","message":"Even after comment i do not understand why :)\nIf we write to the target we have multiple places where we can get an error. For example JTAG adapter can return error duo to some buffer overflow or other adapter related issues.","commit_id":"841a08c9a485ef2aaea83f6b307df13a1f079a4a"},{"author":{"_account_id":1000863,"name":"Tarek BOCHKATI","email":"tarek.bouchkati@gmail.com","username":"BouchkatiTarek"},"change_message_id":"894a0de1286cef7cdc5d91e4b9b668d248674315","unresolved":false,"context_lines":[{"line_number":808,"context_line":"\t * connected through JTAG/SWD, apply a POR (power-on reset) instead of a system reset.\""},{"line_number":809,"context_line":"\t */"},{"line_number":810,"context_line":""},{"line_number":811,"context_line":"\t/* ignore the returned error value because the device is reset after OBL Launch*/"},{"line_number":812,"context_line":"\tretval \u003d ERROR_OK;"},{"line_number":813,"context_line":"\tstm32l4_write_flash_reg_by_index(bank, STM32_FLASH_CR_INDEX, FLASH_OBL_LAUNCH);"},{"line_number":814,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":12,"id":"aedf27f1_231c626a","line":811,"in_reply_to":"ceda9b01_858bc61f","updated":"2021-05-25 14:36:12.000000000","message":"Please check the explanation on scenario 3\nDo you think adding this explanation in a comment could be helpful ?\nstgh like\n/* Setting OBL_LAUNCH generates a reset so the option byte loading is performed\nunder system reset\ndue to this reset ST-Link reports an SWD_DP_ERROR, despite the write was successful\nthen just ignore the returned value\n*/","commit_id":"841a08c9a485ef2aaea83f6b307df13a1f079a4a"},{"author":{"_account_id":1000410,"name":"Oleksij Rempel","email":"linux@rempel-privat.de","username":"olerem"},"change_message_id":"27ac87b651113e87df0753293cd159647fbb5fa1","unresolved":false,"context_lines":[{"line_number":809,"context_line":"\t */"},{"line_number":810,"context_line":""},{"line_number":811,"context_line":"\t/* ignore the returned error value because the device is reset after OBL Launch*/"},{"line_number":812,"context_line":"\tretval \u003d ERROR_OK;"},{"line_number":813,"context_line":"\tstm32l4_write_flash_reg_by_index(bank, STM32_FLASH_CR_INDEX, FLASH_OBL_LAUNCH);"},{"line_number":814,"context_line":""},{"line_number":815,"context_line":"\t/* Need to re-probe after change */"}],"source_content_type":"text/x-csrc","patch_set":12,"id":"ceda9b01_6586e21a","line":812,"updated":"2021-03-28 09:42:25.000000000","message":"this line is not needed. retval is set to ERROR_OK by previous function.","commit_id":"841a08c9a485ef2aaea83f6b307df13a1f079a4a"},{"author":{"_account_id":1000863,"name":"Tarek BOCHKATI","email":"tarek.bouchkati@gmail.com","username":"BouchkatiTarek"},"change_message_id":"894a0de1286cef7cdc5d91e4b9b668d248674315","unresolved":false,"context_lines":[{"line_number":809,"context_line":"\t */"},{"line_number":810,"context_line":""},{"line_number":811,"context_line":"\t/* ignore the returned error value because the device is reset after OBL Launch*/"},{"line_number":812,"context_line":"\tretval \u003d ERROR_OK;"},{"line_number":813,"context_line":"\tstm32l4_write_flash_reg_by_index(bank, STM32_FLASH_CR_INDEX, FLASH_OBL_LAUNCH);"},{"line_number":814,"context_line":""},{"line_number":815,"context_line":"\t/* Need to re-probe after change */"}],"source_content_type":"text/x-csrc","patch_set":12,"id":"aedf27f1_2353021c","line":812,"in_reply_to":"ceda9b01_6586e21a","updated":"2021-05-25 14:36:12.000000000","message":"Done","commit_id":"841a08c9a485ef2aaea83f6b307df13a1f079a4a"},{"author":{"_account_id":1000863,"name":"Tarek BOCHKATI","email":"tarek.bouchkati@gmail.com","username":"BouchkatiTarek"},"change_message_id":"894a0de1286cef7cdc5d91e4b9b668d248674315","unresolved":false,"context_lines":[{"line_number":810,"context_line":""},{"line_number":811,"context_line":"\t/* ignore the returned error value because the device is reset after OBL Launch*/"},{"line_number":812,"context_line":"\tretval \u003d ERROR_OK;"},{"line_number":813,"context_line":"\tstm32l4_write_flash_reg_by_index(bank, STM32_FLASH_CR_INDEX, FLASH_OBL_LAUNCH);"},{"line_number":814,"context_line":""},{"line_number":815,"context_line":"\t/* Need to re-probe after change */"},{"line_number":816,"context_line":"\tstruct stm32l4_flash_bank *stm32l4_info \u003d bank-\u003edriver_priv;"}],"source_content_type":"text/x-csrc","patch_set":12,"id":"aedf27f1_03335ef4","line":813,"range":{"start_line":813,"start_character":1,"end_line":813,"end_character":80},"updated":"2021-05-25 14:36:12.000000000","message":"[scenario 3] assuming the write is successful, then :\n\"Setting OBL_LAUNCH generates a reset so the option byte loading is performed\nunder system reset\"\nin this case we get an error in adapter level:\nusing stlink-dap we get STLINK_SWD_DP_ERROR,\nthen this error \"Fail reading CTRL/STAT register. Force reconnect\"\n\nnote: the flash and flash options are locked after successful OBL_LAUNCH,\nso locking in line 820 is not needed but not harmful.\n\nif this really failed, I have no clue how to differentiate between the real failure\nand the error we get after OBL. But in this case locking FLASH_CR is mandatory.\n\nnote: previously we return always an error.","commit_id":"841a08c9a485ef2aaea83f6b307df13a1f079a4a"},{"author":{"_account_id":1000410,"name":"Oleksij Rempel","email":"linux@rempel-privat.de","username":"olerem"},"change_message_id":"27ac87b651113e87df0753293cd159647fbb5fa1","unresolved":false,"context_lines":[{"line_number":817,"context_line":"\tstm32l4_info-\u003eprobed \u003d false;"},{"line_number":818,"context_line":""},{"line_number":819,"context_line":"err_lock:"},{"line_number":820,"context_line":"\tretval2 \u003d stm32l4_write_flash_reg_by_index(bank, STM32_FLASH_CR_INDEX, FLASH_LOCK | FLASH_OPTLOCK);"},{"line_number":821,"context_line":""},{"line_number":822,"context_line":"\tif (retval !\u003d ERROR_OK)"},{"line_number":823,"context_line":"\t\treturn retval;"}],"source_content_type":"text/x-csrc","patch_set":12,"id":"ceda9b01_2580daf8","line":820,"updated":"2021-03-28 09:42:25.000000000","message":"why should we try to write if there is some error?","commit_id":"841a08c9a485ef2aaea83f6b307df13a1f079a4a"},{"author":{"_account_id":1000863,"name":"Tarek BOCHKATI","email":"tarek.bouchkati@gmail.com","username":"BouchkatiTarek"},"change_message_id":"894a0de1286cef7cdc5d91e4b9b668d248674315","unresolved":false,"context_lines":[{"line_number":817,"context_line":"\tstm32l4_info-\u003eprobed \u003d false;"},{"line_number":818,"context_line":""},{"line_number":819,"context_line":"err_lock:"},{"line_number":820,"context_line":"\tretval2 \u003d stm32l4_write_flash_reg_by_index(bank, STM32_FLASH_CR_INDEX, FLASH_LOCK | FLASH_OPTLOCK);"},{"line_number":821,"context_line":""},{"line_number":822,"context_line":"\tif (retval !\u003d ERROR_OK)"},{"line_number":823,"context_line":"\t\treturn retval;"}],"source_content_type":"text/x-csrc","patch_set":12,"id":"aedf27f1_a32ff284","line":820,"in_reply_to":"ceda9b01_2580daf8","updated":"2021-05-25 14:36:12.000000000","message":"I have tried to expand my answer on the 3 scenarios above","commit_id":"841a08c9a485ef2aaea83f6b307df13a1f079a4a"},{"author":{"_account_id":1000410,"name":"Oleksij Rempel","email":"linux@rempel-privat.de","username":"olerem"},"change_message_id":"27ac87b651113e87df0753293cd159647fbb5fa1","unresolved":false,"context_lines":[{"line_number":1814,"context_line":""},{"line_number":1815,"context_line":"\tstruct flash_bank *bank;"},{"line_number":1816,"context_line":"\tint retval \u003d CALL_COMMAND_HANDLER(flash_command_get_bank, 0, \u0026bank);"},{"line_number":1817,"context_line":"\tif (ERROR_OK !\u003d retval)"},{"line_number":1818,"context_line":"\t\treturn retval;"},{"line_number":1819,"context_line":""},{"line_number":1820,"context_line":"\tstruct stm32l4_flash_bank *stm32l4_info \u003d bank-\u003edriver_priv;"}],"source_content_type":"text/x-csrc","patch_set":12,"id":"ceda9b01_457dde16","line":1817,"updated":"2021-03-28 09:42:25.000000000","message":"same style: (retval !\u003d ERROR_OK)","commit_id":"841a08c9a485ef2aaea83f6b307df13a1f079a4a"},{"author":{"_account_id":1000863,"name":"Tarek BOCHKATI","email":"tarek.bouchkati@gmail.com","username":"BouchkatiTarek"},"change_message_id":"894a0de1286cef7cdc5d91e4b9b668d248674315","unresolved":false,"context_lines":[{"line_number":1814,"context_line":""},{"line_number":1815,"context_line":"\tstruct flash_bank *bank;"},{"line_number":1816,"context_line":"\tint retval \u003d CALL_COMMAND_HANDLER(flash_command_get_bank, 0, \u0026bank);"},{"line_number":1817,"context_line":"\tif (ERROR_OK !\u003d retval)"},{"line_number":1818,"context_line":"\t\treturn retval;"},{"line_number":1819,"context_line":""},{"line_number":1820,"context_line":"\tstruct stm32l4_flash_bank *stm32l4_info \u003d bank-\u003edriver_priv;"}],"source_content_type":"text/x-csrc","patch_set":12,"id":"aedf27f1_43588635","line":1817,"in_reply_to":"ceda9b01_457dde16","updated":"2021-05-25 14:36:12.000000000","message":"Done","commit_id":"841a08c9a485ef2aaea83f6b307df13a1f079a4a"},{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"vanekt@fbl.cz","username":"vanekt"},"change_message_id":"b0f45adf7c19c570d68bd44a0f5ee76d4a4813e0","unresolved":false,"context_lines":[{"line_number":1860,"context_line":"\t\t}"},{"line_number":1861,"context_line":""},{"line_number":1862,"context_line":"\t\tretval \u003d stm32l4_write_option(bank, stm32l4_info-\u003eflash_regs[STM32_FLASH_OPTR_INDEX],"},{"line_number":1863,"context_line":"\t\t\t\tRDP_LEVEL_0 | FLASH_TZEN, FLASH_RDP_MASK | FLASH_TZEN);"},{"line_number":1864,"context_line":"\t}"},{"line_number":1865,"context_line":""},{"line_number":1866,"context_line":"\tif (retval !\u003d ERROR_OK)"}],"source_content_type":"text/x-csrc","patch_set":12,"id":"ceda9b01_c838059e","line":1863,"range":{"start_line":1863,"start_character":16,"end_line":1863,"end_character":28},"updated":"2021-04-03 21:24:50.000000000","message":"??? !!!!!!!!!!\nDid you ever test it? Why do you waste reviewers time??","commit_id":"841a08c9a485ef2aaea83f6b307df13a1f079a4a"},{"author":{"_account_id":1000863,"name":"Tarek BOCHKATI","email":"tarek.bouchkati@gmail.com","username":"BouchkatiTarek"},"change_message_id":"894a0de1286cef7cdc5d91e4b9b668d248674315","unresolved":false,"context_lines":[{"line_number":1860,"context_line":"\t\t}"},{"line_number":1861,"context_line":""},{"line_number":1862,"context_line":"\t\tretval \u003d stm32l4_write_option(bank, stm32l4_info-\u003eflash_regs[STM32_FLASH_OPTR_INDEX],"},{"line_number":1863,"context_line":"\t\t\t\tRDP_LEVEL_0 | FLASH_TZEN, FLASH_RDP_MASK | FLASH_TZEN);"},{"line_number":1864,"context_line":"\t}"},{"line_number":1865,"context_line":""},{"line_number":1866,"context_line":"\tif (retval !\u003d ERROR_OK)"}],"source_content_type":"text/x-csrc","patch_set":12,"id":"aedf27f1_e33c1abf","line":1863,"range":{"start_line":1863,"start_character":16,"end_line":1863,"end_character":28},"in_reply_to":"ceda9b01_c838059e","updated":"2021-05-25 14:36:12.000000000","message":"My apologies, it seems that I have taken the regression for granted !!\nsorry","commit_id":"841a08c9a485ef2aaea83f6b307df13a1f079a4a"},{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"vanekt@fbl.cz","username":"vanekt"},"change_message_id":"b0f45adf7c19c570d68bd44a0f5ee76d4a4813e0","unresolved":false,"context_lines":[{"line_number":1863,"context_line":"\t\t\t\tRDP_LEVEL_0 | FLASH_TZEN, FLASH_RDP_MASK | FLASH_TZEN);"},{"line_number":1864,"context_line":"\t}"},{"line_number":1865,"context_line":""},{"line_number":1866,"context_line":"\tif (retval !\u003d ERROR_OK)"},{"line_number":1867,"context_line":"\t\tretval \u003d stm32l4_perform_obl_launch(bank);"},{"line_number":1868,"context_line":""},{"line_number":1869,"context_line":"\treturn retval;"}],"source_content_type":"text/x-csrc","patch_set":12,"id":"ceda9b01_683d598a","line":1866,"range":{"start_line":1866,"start_character":12,"end_line":1866,"end_character":14},"updated":"2021-04-03 21:24:50.000000000","message":"Obviously the condition should be \u003d\u003d ERROR_OK\nor even better use a standard pattern\n\n  if (retval !\u003d ERROR_OK)\n    return retval;\n\nand then call stm32l4_perform_obl_launch(bank);","commit_id":"841a08c9a485ef2aaea83f6b307df13a1f079a4a"},{"author":{"_account_id":1000863,"name":"Tarek BOCHKATI","email":"tarek.bouchkati@gmail.com","username":"BouchkatiTarek"},"change_message_id":"894a0de1286cef7cdc5d91e4b9b668d248674315","unresolved":false,"context_lines":[{"line_number":1863,"context_line":"\t\t\t\tRDP_LEVEL_0 | FLASH_TZEN, FLASH_RDP_MASK | FLASH_TZEN);"},{"line_number":1864,"context_line":"\t}"},{"line_number":1865,"context_line":""},{"line_number":1866,"context_line":"\tif (retval !\u003d ERROR_OK)"},{"line_number":1867,"context_line":"\t\tretval \u003d stm32l4_perform_obl_launch(bank);"},{"line_number":1868,"context_line":""},{"line_number":1869,"context_line":"\treturn retval;"}],"source_content_type":"text/x-csrc","patch_set":12,"id":"aedf27f1_63490a6a","line":1866,"range":{"start_line":1866,"start_character":12,"end_line":1866,"end_character":14},"in_reply_to":"ceda9b01_683d598a","updated":"2021-05-25 14:36:12.000000000","message":"done","commit_id":"841a08c9a485ef2aaea83f6b307df13a1f079a4a"},{"author":{"_account_id":1000410,"name":"Oleksij Rempel","email":"linux@rempel-privat.de","username":"olerem"},"change_message_id":"27ac87b651113e87df0753293cd159647fbb5fa1","unresolved":false,"context_lines":[{"line_number":1864,"context_line":"\t}"},{"line_number":1865,"context_line":""},{"line_number":1866,"context_line":"\tif (retval !\u003d ERROR_OK)"},{"line_number":1867,"context_line":"\t\tretval \u003d stm32l4_perform_obl_launch(bank);"},{"line_number":1868,"context_line":""},{"line_number":1869,"context_line":"\treturn retval;"},{"line_number":1870,"context_line":"}"}],"source_content_type":"text/x-csrc","patch_set":12,"id":"ceda9b01_e579722b","line":1867,"updated":"2021-03-28 09:42:25.000000000","message":"if jtag transfer failed, we need to try more jtag transfers? why?","commit_id":"841a08c9a485ef2aaea83f6b307df13a1f079a4a"},{"author":{"_account_id":1000863,"name":"Tarek BOCHKATI","email":"tarek.bouchkati@gmail.com","username":"BouchkatiTarek"},"change_message_id":"894a0de1286cef7cdc5d91e4b9b668d248674315","unresolved":false,"context_lines":[{"line_number":1864,"context_line":"\t}"},{"line_number":1865,"context_line":""},{"line_number":1866,"context_line":"\tif (retval !\u003d ERROR_OK)"},{"line_number":1867,"context_line":"\t\tretval \u003d stm32l4_perform_obl_launch(bank);"},{"line_number":1868,"context_line":""},{"line_number":1869,"context_line":"\treturn retval;"},{"line_number":1870,"context_line":"}"}],"source_content_type":"text/x-csrc","patch_set":12,"id":"aedf27f1_c32c7692","line":1867,"in_reply_to":"ceda9b01_e579722b","updated":"2021-05-25 14:36:12.000000000","message":"please check my response above","commit_id":"841a08c9a485ef2aaea83f6b307df13a1f079a4a"}]}
