)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"f0b61e0767f3be52a1f89068afcd8638becaa958","unresolved":true,"context_lines":[{"line_number":4,"context_line":"Commit:     Joerg Wunsch \u003copenocd@uriah.heep.sax.de\u003e"},{"line_number":5,"context_line":"CommitDate: 2023-11-21 22:58:18 +0100"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Import CC2538 flash handler"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This has been imported from"},{"line_number":10,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":13,"id":"475b94d7_98913e63","line":7,"updated":"2023-11-24 23:23:58.000000000","message":"Please change it as something like:\nflash: CC2538: add driver and loader","commit_id":"6b209d1d1a29f6706de828d8d249f92d8939e87a"},{"author":{"_account_id":1000622,"name":"Jörg Wunsch","email":"openocd@uriah.heep.sax.de","username":"dl8dtl"},"change_message_id":"ea24150a2b673cf4b1c868891d713cb6876fefe2","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Joerg Wunsch \u003copenocd@uriah.heep.sax.de\u003e"},{"line_number":5,"context_line":"CommitDate: 2023-11-21 22:58:18 +0100"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Import CC2538 flash handler"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This has been imported from"},{"line_number":10,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":13,"id":"b905e9d6_c33b0c27","line":7,"in_reply_to":"475b94d7_98913e63","updated":"2023-11-25 19:24:42.000000000","message":"Done.","commit_id":"6b209d1d1a29f6706de828d8d249f92d8939e87a"}],"/PATCHSET_LEVEL":[{"author":{"_account_id":1000622,"name":"Jörg Wunsch","email":"openocd@uriah.heep.sax.de","username":"dl8dtl"},"change_message_id":"551e2963bebd7059a661185e30844a84bdb37af0","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"cd547ffa_e7bc18c1","updated":"2023-11-15 21:35:38.000000000","message":"hi Axel 😊","commit_id":"f177ae277b9dac59913dd044a4277fc454f1806c"},{"author":{"_account_id":1001938,"name":"Axel W.","username":"awachtler"},"change_message_id":"6881cf7edc3e087e6d0a207e2cd5a848c395f886","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"d0991db1_86cdd115","in_reply_to":"1c3d012d_f18b3d4c","updated":"2023-11-21 04:12:43.000000000","message":"this one?","commit_id":"f177ae277b9dac59913dd044a4277fc454f1806c"},{"author":{"_account_id":1001938,"name":"Axel W.","username":"awachtler"},"change_message_id":"fbadb82b9580316761f9b9dcdb951814e38a505e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"1c3d012d_f18b3d4c","in_reply_to":"cd547ffa_e7bc18c1","updated":"2023-11-16 05:45:22.000000000","message":"looks good","commit_id":"f177ae277b9dac59913dd044a4277fc454f1806c"},{"author":{"_account_id":1000622,"name":"Jörg Wunsch","email":"openocd@uriah.heep.sax.de","username":"dl8dtl"},"change_message_id":"3ffd631f6548b11d07f6aa1594f513c79460bcbe","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"5f61b984_2364d75f","updated":"2023-11-16 19:56:57.000000000","message":"Thanks for reviewing!","commit_id":"ecb6af4bd063d874805e12ccce1f3aec82b9b37c"},{"author":{"_account_id":1000853,"name":"zapb","display_name":"Marc Schink","email":"dev@zapb.de","username":"zapb"},"change_message_id":"e6314ab227a321d69e4e083150e0386c7cea05aa","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"4599fd49_572a56f8","updated":"2023-11-19 11:39:46.000000000","message":"Thanks for the contribution Jörg! Just a few minor coding style issues from my side. I did not mark everything, please check the code for similar issues (proper data types, naming etc.).","commit_id":"c95e3e5c1f05b01de9df37ed26402e06dec7f706"},{"author":{"_account_id":1000622,"name":"Jörg Wunsch","email":"openocd@uriah.heep.sax.de","username":"dl8dtl"},"change_message_id":"e095baa32f1e9888ccdf2fbd30014e508e84ac63","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":11,"id":"86024ad3_3d33477a","updated":"2023-11-19 17:11:31.000000000","message":"Resolved comments, stylistic changes.","commit_id":"4b5c1ad3b1f696fa9c6be6d7ea8fcf2dbfa4a766"},{"author":{"_account_id":1000622,"name":"Jörg Wunsch","email":"openocd@uriah.heep.sax.de","username":"dl8dtl"},"change_message_id":"788a0773c3ee3a58ee876aff07c9f4ed014eb55e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":12,"id":"163fe5b8_0796c305","updated":"2023-11-21 22:03:00.000000000","message":"Except for including contents from .inc, all of Antonio\u0027s comments are resolved.","commit_id":"4f5b584555f15551b6d8d7ed283e369b0853d9c5"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"48cf58a246ec8b32300105ad3a9344e81f8ed42a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":12,"id":"5a41fca6_6e4e9fec","updated":"2023-11-19 22:57:31.000000000","message":"Joerg, thanks for this patch.\nI will not review it deeply as I don\u0027t work in the flash subsystem.\nI have some comment about license boilerplate and missing copyright. Please check them.\nAlso the binary for the firmware is zero for 85%, because incorrectly includes the BSS that is zeroed at firmware start. Would you mind dropping it from the binary? I think there are also stack and buffers after the BSS that get included in the binary. Stack can be dropped, but the buffers will probably require an initialization (I haven\u0027t checked the code).","commit_id":"4f5b584555f15551b6d8d7ed283e369b0853d9c5"},{"author":{"_account_id":1000622,"name":"Jörg Wunsch","email":"openocd@uriah.heep.sax.de","username":"dl8dtl"},"change_message_id":"1cac4e6633371dc403db6a3b37c750679a774ca5","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":14,"id":"48617201_dcbd218e","updated":"2023-11-25 22:34:56.000000000","message":"Moved algorithm binary from cc2538.h to cc2538.c.","commit_id":"c1e7f36f5fe237093895313224818c66645da3e2"},{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"vanekt@fbl.cz","username":"vanekt"},"change_message_id":"3f14a2e89ebbe3253dc1379f5ba648910373c3f1","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":15,"id":"9508ceb4_ebcf88d7","updated":"2023-11-29 16:41:42.000000000","message":"Joerg,\nit\u0027s a pity that TI did not bother submitting this change.\n\nThe main problem I see in this code is overall conception.\n\nOpenOCD flash subsystem usually rely on a short and position independent target algo for flash write only and the rest (e.g. erase) is handled from the host part of the flash handler. We also have a very efficient target_run_flash_async_algorithm() for fast flash programming.\n\nThe TI code API roughly resembles a CMSIS flash loader module (a .FLM exe): a command processor which handles both flash erase and write almost at whole at target side. The target code is much longer and unlike a FLM module has a lot of fixed addresses shared with the host code. OpenOCD is not well prepared for such target loaders:\n- the working area subsystem has no means to handle fixed load address\n- the target algo cannot be loaded and run persistently (e.g. keep running for both erase and programming\n- including target binaries into OpenOCD code should be substituted by elf format loading for longer target code\nAll this makes TI code less efficient in both code size and speed.\n\nAlthough TI code uses ping-pong buffers to speed up the programming, I\u0027m not quite happy about introducing a quite different and poorly tested algorithm. The interleaving also complicates the erase operation unnecessarily.\n\nWe should implement a general FLM support to OpenOCD. Unfortunately I\u0027m not aware of anybody working on this. With this task done we can solve the flash support just by implementing a chip probe and loading a proper FLM.\n\nIf the TI ROM_PageErase() had no early return bug I would regard this code acceptable with some fixes. But taking the bug into account I would recommend to rewrite the flash handler to more traditional OpenOCD code.","commit_id":"c54e2e87d239b3c0f8094a68a90a9cadedc1b131"},{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"vanekt@fbl.cz","username":"vanekt"},"change_message_id":"28496a01809d0ebe5586419b66706ca64395b808","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":15,"id":"99edacf2_3de73825","in_reply_to":"89e35693_5dca0c77","updated":"2023-11-29 20:31:33.000000000","message":"\u003e Thus, I did not find any better solution than waiting the appropriate time (the 20 ms is the maximum time it takes to erase, according to the code), so it at least works.\n\nIs the erase time at least guaranteed in the data sheet?\nSome flash controllers are known to increase erase time as flash wearing getting worse...\n\n\u003e Given that all the magic is inside their ROM (and they don\u0027t document a register-level interface for their flash erase and programming),\n\nDon\u0027t they?\nhttps://www.ti.com/lit/ug/swru319c/swru319c.pdf?ts\u003d1701264445029\u0026ref_url\u003dhttps%253A%252F%252Fwww.ti.com%252Fproduct%252FCC2538%253FkeyMatch%253DCC2538%2526tisearch%253Dsearch-everything%2526usecase%253DGPN-ALT\n\nchapter 8, mainly 8.10","commit_id":"c54e2e87d239b3c0f8094a68a90a9cadedc1b131"},{"author":{"_account_id":1000622,"name":"Jörg Wunsch","email":"openocd@uriah.heep.sax.de","username":"dl8dtl"},"change_message_id":"19a3d9645f5b197349a98447fdefb584d846d7be","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":15,"id":"89e35693_5dca0c77","in_reply_to":"9508ceb4_ebcf88d7","updated":"2023-11-29 20:14:33.000000000","message":"I completely agree that it\u0027s a pity TI (or its contributor) never submitted that. I have no idea how it made it into the jim.sh site either, nor do I find any contact option there.\n\nI think we have exactly two options here: use it, basically as it is, and provide at least *some* flash handling for CC2538, or leave CC2538 in the half-supported state it is by now, where the core can be handled but the flash cannot, so people have to follow cumbersome procedures (download some bit stream to then activate the device\u0027s serial bootloader). I guess in the latter case, most people simply won\u0027t use OpenOCD with CC2538 but look for other alternatives.\n\nRegarding the flash erase (and yes, the terrible hack with waiting 20 ms): I analyzed the existing code, and to me it seems to do the right thing. As that entire flash loader eventually resorts to CC2538\u0027s ROM functions, I had to suspect that those ROM functions simply don\u0027t keep their promise to wait until the flash page is erased, but instead return earlier. Thus, I did not find any better solution than waiting the appropriate time (the 20 ms is the maximum time it takes to erase, according to the code), so it at least works. All my other attempts to make it work didn\u0027t, and always only erased a single flash page at a time.\n\nIt is arguably a poor solution, but at least one that is working well enough to be able to erase and program the flash of an CC2538.\n\nGiven that all the magic is inside their ROM (and they don\u0027t document a register-level interface for their flash erase and programming), there\u0027s not much more we could do about it, without further help from TI.","commit_id":"c54e2e87d239b3c0f8094a68a90a9cadedc1b131"},{"author":{"_account_id":1000622,"name":"Jörg Wunsch","email":"openocd@uriah.heep.sax.de","username":"dl8dtl"},"change_message_id":"d8d90b58851b6fcab7702fa211d30e106276b9b8","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":15,"id":"6d566cb4_388778ea","in_reply_to":"99edacf2_3de73825","updated":"2023-11-30 20:12:02.000000000","message":"The datasheet doesn\u0027t say anything about the erase time, it only mentions an erase count.\nHowever, the above \"user manual\" mentions the same 20 ms that I found as a constant in their source code.\n\nMy proposal: accept the existing loader with its deficiencies, as it has at least proven to work, and is IMHO a big improvement over the status quo: chip supported but no flash support for it. Regarding the wait time (and admittedly, the gross hack), I don\u0027t think it really matters *where* we are waiting, that\u0027s why I hacked it up to the OpenOCD level, where we have a well-defined timing available (from the underlying OS). Until we know it better, waiting 20 ms per flash page is at least something that does work – unlike their original loader which always only erased a single page, and then returned within way less than one second.\n\nI ordered a couple of those boards to experiment with them – the previous one was only on behalf of someone else, and I don\u0027t have it anymore. I\u0027ll then try to see whether I can improve the loader, maybe also replace ROM functions by direct register access. I\u0027d also consider your other comments about the overall picture this loader works. If it proves doable, I could come up with something more in line with the remaining OpenOCD loaders.\n\n(I\u0027ll act on your other remarks though before filing a new patch set.)","commit_id":"c54e2e87d239b3c0f8094a68a90a9cadedc1b131"}],"contrib/loaders/flash/cc2538/Makefile":[{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"48cf58a246ec8b32300105ad3a9344e81f8ed42a","unresolved":true,"context_lines":[{"line_number":1,"context_line":"# SPDX-License-Identifier: BSD-3-Clause"},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"BIN2C \u003d ../../../../src/helper/bin2char.sh"},{"line_number":4,"context_line":""}],"source_content_type":"application/octet-stream","patch_set":12,"id":"7ebeb730_8b34ef17","line":1,"updated":"2023-11-19 22:57:31.000000000","message":"A BSD license requires a copyright.\nAny idea?","commit_id":"4f5b584555f15551b6d8d7ed283e369b0853d9c5"},{"author":{"_account_id":1000622,"name":"Jörg Wunsch","email":"openocd@uriah.heep.sax.de","username":"dl8dtl"},"change_message_id":"0d11065e717a0e635ed2ff2f261794823d61104a","unresolved":true,"context_lines":[{"line_number":1,"context_line":"# SPDX-License-Identifier: BSD-3-Clause"},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"BIN2C \u003d ../../../../src/helper/bin2char.sh"},{"line_number":4,"context_line":""}],"source_content_type":"application/octet-stream","patch_set":12,"id":"c596d5a3_8986b2e2","line":1,"in_reply_to":"7ebeb730_8b34ef17","updated":"2023-11-20 09:00:21.000000000","message":"The original Makefile didn\u0027t have a copyright. Jenkins insisted on a copyright header, and since the remaining files here are 3-clause BSD, I picked that.\n\nI\u0027ll copy over the clauses from the .c/.h files.\n\n(It\u0027s a bit questionable whether a simple file like that could even claim a copyright though.)","commit_id":"4f5b584555f15551b6d8d7ed283e369b0853d9c5"},{"author":{"_account_id":1000622,"name":"Jörg Wunsch","email":"openocd@uriah.heep.sax.de","username":"dl8dtl"},"change_message_id":"788a0773c3ee3a58ee876aff07c9f4ed014eb55e","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# SPDX-License-Identifier: BSD-3-Clause"},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"BIN2C \u003d ../../../../src/helper/bin2char.sh"},{"line_number":4,"context_line":""}],"source_content_type":"application/octet-stream","patch_set":12,"id":"789acedc_543a6e7c","line":1,"in_reply_to":"c596d5a3_8986b2e2","updated":"2023-11-21 22:03:00.000000000","message":"Added.","commit_id":"4f5b584555f15551b6d8d7ed283e369b0853d9c5"}],"contrib/loaders/flash/cc2538/cc2538.lds":[{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"48cf58a246ec8b32300105ad3a9344e81f8ed42a","unresolved":true,"context_lines":[{"line_number":63,"context_line":"\t\t_edata \u003d .;"},{"line_number":64,"context_line":"\t}"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"\t.bss :"},{"line_number":67,"context_line":"\t{"},{"line_number":68,"context_line":"\t\t__bss_start__ \u003d .;"},{"line_number":69,"context_line":"\t\t_bss \u003d .;"},{"line_number":70,"context_line":"\t\t*(.bss*)"},{"line_number":71,"context_line":"\t\t*(COMMON)"},{"line_number":72,"context_line":"\t\t_ebss \u003d .;"},{"line_number":73,"context_line":"\t\t__bss_end__ \u003d .;"},{"line_number":74,"context_line":"\t} \u003e PROGRAM"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"\t.stack :"},{"line_number":77,"context_line":"\t{"}],"source_content_type":"application/octet-stream","patch_set":12,"id":"75f63d6a_5e63c07a","line":74,"range":{"start_line":66,"start_character":1,"end_line":74,"end_character":12},"updated":"2023-11-19 22:57:31.000000000","message":"the BSS looks included in the binary!\nThis causes the binary to be way bigger than needed.\nThere is no need, since the BSS is erased in startup.s","commit_id":"4f5b584555f15551b6d8d7ed283e369b0853d9c5"},{"author":{"_account_id":1000622,"name":"Jörg Wunsch","email":"openocd@uriah.heep.sax.de","username":"dl8dtl"},"change_message_id":"0d11065e717a0e635ed2ff2f261794823d61104a","unresolved":true,"context_lines":[{"line_number":63,"context_line":"\t\t_edata \u003d .;"},{"line_number":64,"context_line":"\t}"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"\t.bss :"},{"line_number":67,"context_line":"\t{"},{"line_number":68,"context_line":"\t\t__bss_start__ \u003d .;"},{"line_number":69,"context_line":"\t\t_bss \u003d .;"},{"line_number":70,"context_line":"\t\t*(.bss*)"},{"line_number":71,"context_line":"\t\t*(COMMON)"},{"line_number":72,"context_line":"\t\t_ebss \u003d .;"},{"line_number":73,"context_line":"\t\t__bss_end__ \u003d .;"},{"line_number":74,"context_line":"\t} \u003e PROGRAM"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"\t.stack :"},{"line_number":77,"context_line":"\t{"}],"source_content_type":"application/octet-stream","patch_set":12,"id":"59b7d3a3_0910c61c","line":74,"range":{"start_line":66,"start_character":1,"end_line":74,"end_character":12},"in_reply_to":"75f63d6a_5e63c07a","updated":"2023-11-20 09:00:21.000000000","message":"OK, good catch!","commit_id":"4f5b584555f15551b6d8d7ed283e369b0853d9c5"},{"author":{"_account_id":1000622,"name":"Jörg Wunsch","email":"openocd@uriah.heep.sax.de","username":"dl8dtl"},"change_message_id":"c34dc1ec2246eface00b04814b36dfb6ab59d2ed","unresolved":true,"context_lines":[{"line_number":63,"context_line":"\t\t_edata \u003d .;"},{"line_number":64,"context_line":"\t}"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"\t.bss :"},{"line_number":67,"context_line":"\t{"},{"line_number":68,"context_line":"\t\t__bss_start__ \u003d .;"},{"line_number":69,"context_line":"\t\t_bss \u003d .;"},{"line_number":70,"context_line":"\t\t*(.bss*)"},{"line_number":71,"context_line":"\t\t*(COMMON)"},{"line_number":72,"context_line":"\t\t_ebss \u003d .;"},{"line_number":73,"context_line":"\t\t__bss_end__ \u003d .;"},{"line_number":74,"context_line":"\t} \u003e PROGRAM"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"\t.stack :"},{"line_number":77,"context_line":"\t{"}],"source_content_type":"application/octet-stream","patch_set":12,"id":"c8359ff6_d5b5cf37","line":74,"range":{"start_line":66,"start_character":1,"end_line":74,"end_character":12},"in_reply_to":"75f63d6a_5e63c07a","updated":"2023-11-21 21:23:16.000000000","message":"Well, for the BSS, you are right.\nUnfortunately, things are not *that* easy to change. Way behind bss and stack, the communication area between the firmware loader and the actual OpenOCD flash handler is located, at a fixed address which needs to be known by the OpenOCD flash handler. Right now, it is hardcoded there, as there is no way to propagate symbol values from the loader into the OpenOCD flash handler. Alas, that area is way beyond BSS and stack, and it is *not* cleared by the startup code.\nBottom line, it needs larger changes, and thus increases the risk of breaking things, so needs more testing than just cosmetic fixes would require.","commit_id":"4f5b584555f15551b6d8d7ed283e369b0853d9c5"},{"author":{"_account_id":1000622,"name":"Jörg Wunsch","email":"openocd@uriah.heep.sax.de","username":"dl8dtl"},"change_message_id":"788a0773c3ee3a58ee876aff07c9f4ed014eb55e","unresolved":false,"context_lines":[{"line_number":63,"context_line":"\t\t_edata \u003d .;"},{"line_number":64,"context_line":"\t}"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"\t.bss :"},{"line_number":67,"context_line":"\t{"},{"line_number":68,"context_line":"\t\t__bss_start__ \u003d .;"},{"line_number":69,"context_line":"\t\t_bss \u003d .;"},{"line_number":70,"context_line":"\t\t*(.bss*)"},{"line_number":71,"context_line":"\t\t*(COMMON)"},{"line_number":72,"context_line":"\t\t_ebss \u003d .;"},{"line_number":73,"context_line":"\t\t__bss_end__ \u003d .;"},{"line_number":74,"context_line":"\t} \u003e PROGRAM"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"\t.stack :"},{"line_number":77,"context_line":"\t{"}],"source_content_type":"application/octet-stream","patch_set":12,"id":"dfeefbfe_e66866e4","line":74,"range":{"start_line":66,"start_character":1,"end_line":74,"end_character":12},"in_reply_to":"c8359ff6_d5b5cf37","updated":"2023-11-21 22:03:00.000000000","message":"I found what I think is a good solution: adding a second zeroing loop in startup.s, to clear the buffers area.\nI had to restrict the objcopy statement to just those output sections that we want to include in the .bin file.","commit_id":"4f5b584555f15551b6d8d7ed283e369b0853d9c5"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"f0b61e0767f3be52a1f89068afcd8638becaa958","unresolved":true,"context_lines":[{"line_number":10,"context_line":"{"},{"line_number":11,"context_line":"\t/* Application is stored in and executes from SRAM */"},{"line_number":12,"context_line":"\tPROGRAM (RWX) : ORIGIN \u003d 0x20000000, LENGTH \u003d 0x1000"},{"line_number":13,"context_line":"        STACK   (RWX) : ORIGIN \u003d 0x20001000, LENGTH \u003d 0x0BD8"},{"line_number":14,"context_line":"\tBUFFERS (RWX) : ORIGIN \u003d 0x20001BD8, LENGTH \u003d 0x3028"},{"line_number":15,"context_line":"}"},{"line_number":16,"context_line":""}],"source_content_type":"application/octet-stream","patch_set":13,"id":"2b496c02_48908b97","line":13,"range":{"start_line":13,"start_character":11,"end_line":13,"end_character":12},"updated":"2023-11-24 23:23:58.000000000","message":"OpenOCD coding style uses TAB of 4 space characters.\nHere there are 8 spaces in place of a single TAB","commit_id":"6b209d1d1a29f6706de828d8d249f92d8939e87a"},{"author":{"_account_id":1000622,"name":"Jörg Wunsch","email":"openocd@uriah.heep.sax.de","username":"dl8dtl"},"change_message_id":"ea24150a2b673cf4b1c868891d713cb6876fefe2","unresolved":false,"context_lines":[{"line_number":10,"context_line":"{"},{"line_number":11,"context_line":"\t/* Application is stored in and executes from SRAM */"},{"line_number":12,"context_line":"\tPROGRAM (RWX) : ORIGIN \u003d 0x20000000, LENGTH \u003d 0x1000"},{"line_number":13,"context_line":"        STACK   (RWX) : ORIGIN \u003d 0x20001000, LENGTH \u003d 0x0BD8"},{"line_number":14,"context_line":"\tBUFFERS (RWX) : ORIGIN \u003d 0x20001BD8, LENGTH \u003d 0x3028"},{"line_number":15,"context_line":"}"},{"line_number":16,"context_line":""}],"source_content_type":"application/octet-stream","patch_set":13,"id":"9af1b968_20a31002","line":13,"range":{"start_line":13,"start_character":11,"end_line":13,"end_character":12},"in_reply_to":"2b496c02_48908b97","updated":"2023-11-25 19:24:42.000000000","message":"Changed to \u003cTAB\u003e","commit_id":"6b209d1d1a29f6706de828d8d249f92d8939e87a"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"f0b61e0767f3be52a1f89068afcd8638becaa958","unresolved":true,"context_lines":[{"line_number":60,"context_line":"\t.stack :"},{"line_number":61,"context_line":"\t{"},{"line_number":62,"context_line":"\t\t_stack \u003d .;"},{"line_number":63,"context_line":"                . \u003d . + LENGTH(STACK);"},{"line_number":64,"context_line":"\t\t_estack \u003d .;"},{"line_number":65,"context_line":"\t} \u003e STACK"},{"line_number":66,"context_line":""}],"source_content_type":"application/octet-stream","patch_set":13,"id":"0c977837_bce320b0","line":63,"updated":"2023-11-24 23:23:58.000000000","message":"and here there are 16 spaces in place of 2 TABs","commit_id":"6b209d1d1a29f6706de828d8d249f92d8939e87a"},{"author":{"_account_id":1000622,"name":"Jörg Wunsch","email":"openocd@uriah.heep.sax.de","username":"dl8dtl"},"change_message_id":"ea24150a2b673cf4b1c868891d713cb6876fefe2","unresolved":false,"context_lines":[{"line_number":60,"context_line":"\t.stack :"},{"line_number":61,"context_line":"\t{"},{"line_number":62,"context_line":"\t\t_stack \u003d .;"},{"line_number":63,"context_line":"                . \u003d . + LENGTH(STACK);"},{"line_number":64,"context_line":"\t\t_estack \u003d .;"},{"line_number":65,"context_line":"\t} \u003e STACK"},{"line_number":66,"context_line":""}],"source_content_type":"application/octet-stream","patch_set":13,"id":"15b41896_bacb84dc","line":63,"in_reply_to":"0c977837_bce320b0","updated":"2023-11-25 19:24:42.000000000","message":"Likewise, \u003cTAB\u003e\u003cTAB\u003e now","commit_id":"6b209d1d1a29f6706de828d8d249f92d8939e87a"}],"contrib/loaders/flash/cc2538/cc2538_algo.inc":[{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"48cf58a246ec8b32300105ad3a9344e81f8ed42a","unresolved":true,"context_lines":[{"line_number":124,"context_line":"0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,"},{"line_number":125,"context_line":"0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,"},{"line_number":126,"context_line":"0x0e,0x33,0xcd,0xab,0x34,0x12,0x6d,0xe6,0xec,0xde,0x05,0x00,0x0b,0x00,0x00,0x00,"},{"line_number":127,"context_line":"0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,"},{"line_number":128,"context_line":"0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,"},{"line_number":129,"context_line":"0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,"},{"line_number":130,"context_line":"0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,"}],"source_content_type":"application/octet-stream","patch_set":12,"id":"7e34f6b0_bc8f475e","line":127,"updated":"2023-11-19 22:57:31.000000000","message":"I expect BSS should start here: line 127 of 833 lines!","commit_id":"4f5b584555f15551b6d8d7ed283e369b0853d9c5"},{"author":{"_account_id":1000622,"name":"Jörg Wunsch","email":"openocd@uriah.heep.sax.de","username":"dl8dtl"},"change_message_id":"24bff2f9c2c6d5a2ae6b1addb137504683f296bd","unresolved":false,"context_lines":[{"line_number":124,"context_line":"0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,"},{"line_number":125,"context_line":"0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,"},{"line_number":126,"context_line":"0x0e,0x33,0xcd,0xab,0x34,0x12,0x6d,0xe6,0xec,0xde,0x05,0x00,0x0b,0x00,0x00,0x00,"},{"line_number":127,"context_line":"0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,"},{"line_number":128,"context_line":"0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,"},{"line_number":129,"context_line":"0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,"},{"line_number":130,"context_line":"0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,"}],"source_content_type":"application/octet-stream","patch_set":12,"id":"80c8d932_ce43aa9e","line":127,"in_reply_to":"7e34f6b0_bc8f475e","updated":"2023-11-21 22:03:21.000000000","message":"Done.","commit_id":"4f5b584555f15551b6d8d7ed283e369b0853d9c5"}],"contrib/loaders/flash/cc2538/flash.c":[{"author":{"_account_id":1000853,"name":"zapb","display_name":"Marc Schink","email":"dev@zapb.de","username":"zapb"},"change_message_id":"e6314ab227a321d69e4e083150e0386c7cea05aa","unresolved":true,"context_lines":[{"line_number":39,"context_line":"#include \"flash.h\""},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"struct rom_api {"},{"line_number":42,"context_line":"\tunsigned long (*crc32)(unsigned char *data,"},{"line_number":43,"context_line":"\t\t\t       unsigned long bytecount);"},{"line_number":44,"context_line":"\tunsigned long (*getflashsize)(void);"},{"line_number":45,"context_line":"\tunsigned long (*getchipid)(void);"}],"source_content_type":"text/x-csrc","patch_set":9,"id":"b05b17f8_776c0158","line":42,"updated":"2023-11-19 11:39:46.000000000","message":"uint32_t is probably more suitable here?","commit_id":"c95e3e5c1f05b01de9df37ed26402e06dec7f706"},{"author":{"_account_id":1000622,"name":"Jörg Wunsch","email":"openocd@uriah.heep.sax.de","username":"dl8dtl"},"change_message_id":"575286121419d9ee4132c5190570d19105ce8ed3","unresolved":true,"context_lines":[{"line_number":39,"context_line":"#include \"flash.h\""},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"struct rom_api {"},{"line_number":42,"context_line":"\tunsigned long (*crc32)(unsigned char *data,"},{"line_number":43,"context_line":"\t\t\t       unsigned long bytecount);"},{"line_number":44,"context_line":"\tunsigned long (*getflashsize)(void);"},{"line_number":45,"context_line":"\tunsigned long (*getchipid)(void);"}],"source_content_type":"text/x-csrc","patch_set":9,"id":"51b42fce_cf0870dc","line":42,"in_reply_to":"1d67eea8_a8264c4a","updated":"2023-11-19 15:18:41.000000000","message":"We could even completely remove it without losing functionality. The only code that is actually used is cc2538_algo.inc.\nSure, I can change all that, but I have a strange feeling when applying stylistic changes to code obtained from outside (after all, it\u0027s in the \"contrib\" directory), as that makes it extremely hard to track possible future revisions made by a 3rd party.","commit_id":"c95e3e5c1f05b01de9df37ed26402e06dec7f706"},{"author":{"_account_id":1000853,"name":"zapb","display_name":"Marc Schink","email":"dev@zapb.de","username":"zapb"},"change_message_id":"b7b8558898657b91c52ac92d52baac6bf7c21893","unresolved":true,"context_lines":[{"line_number":39,"context_line":"#include \"flash.h\""},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"struct rom_api {"},{"line_number":42,"context_line":"\tunsigned long (*crc32)(unsigned char *data,"},{"line_number":43,"context_line":"\t\t\t       unsigned long bytecount);"},{"line_number":44,"context_line":"\tunsigned long (*getflashsize)(void);"},{"line_number":45,"context_line":"\tunsigned long (*getchipid)(void);"}],"source_content_type":"text/x-csrc","patch_set":9,"id":"bf593d00_d1fe53e6","line":42,"in_reply_to":"51b42fce_cf0870dc","updated":"2023-11-19 15:34:22.000000000","message":"\u003e We could even completely remove it without losing functionality. The only code that is actually used is cc2538_algo.inc.\n\nI know, but we don\u0027t accept binary-only flash loaders.\n\n\u003e Sure, I can change all that, but I have a strange feeling when applying stylistic changes to code obtained from outside (after all, it\u0027s in the \"contrib\" directory), as that makes it extremely hard to track possible future revisions made by a 3rd party.\n\nIf there will be changes in the future (which I doubt) they should be made in the official version of OpenOCD anyway.","commit_id":"c95e3e5c1f05b01de9df37ed26402e06dec7f706"},{"author":{"_account_id":1000853,"name":"zapb","display_name":"Marc Schink","email":"dev@zapb.de","username":"zapb"},"change_message_id":"bb262fec4d336d37bc0614ddfbe792fbc973669d","unresolved":true,"context_lines":[{"line_number":39,"context_line":"#include \"flash.h\""},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"struct rom_api {"},{"line_number":42,"context_line":"\tunsigned long (*crc32)(unsigned char *data,"},{"line_number":43,"context_line":"\t\t\t       unsigned long bytecount);"},{"line_number":44,"context_line":"\tunsigned long (*getflashsize)(void);"},{"line_number":45,"context_line":"\tunsigned long (*getchipid)(void);"}],"source_content_type":"text/x-csrc","patch_set":9,"id":"1d67eea8_a8264c4a","line":42,"in_reply_to":"64921c73_89d05da9","updated":"2023-11-19 15:13:37.000000000","message":"Well, the code has to be compliant with the OpenOCD coding style, regardless if the code is provided by the manufacturer or not.","commit_id":"c95e3e5c1f05b01de9df37ed26402e06dec7f706"},{"author":{"_account_id":1000622,"name":"Jörg Wunsch","email":"openocd@uriah.heep.sax.de","username":"dl8dtl"},"change_message_id":"60dd48b99cc70a0a5bf176e43b8d17a71313dcb0","unresolved":true,"context_lines":[{"line_number":39,"context_line":"#include \"flash.h\""},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"struct rom_api {"},{"line_number":42,"context_line":"\tunsigned long (*crc32)(unsigned char *data,"},{"line_number":43,"context_line":"\t\t\t       unsigned long bytecount);"},{"line_number":44,"context_line":"\tunsigned long (*getflashsize)(void);"},{"line_number":45,"context_line":"\tunsigned long (*getchipid)(void);"}],"source_content_type":"text/x-csrc","patch_set":9,"id":"64921c73_89d05da9","line":42,"in_reply_to":"b05b17f8_776c0158","updated":"2023-11-19 15:07:19.000000000","message":"The question to this (and most of your other remarks) is:\nThis is code submitted from / via Texas Instruments. How much do we want to change there? So far, I only changed a few spelling things Jenkins required me to, but did not perform any changes to the actual code.\nThe code is the code for the flash loader itself, i.e. it is fixed to run on the CC2538 target CPU only.","commit_id":"c95e3e5c1f05b01de9df37ed26402e06dec7f706"},{"author":{"_account_id":1000622,"name":"Jörg Wunsch","email":"openocd@uriah.heep.sax.de","username":"dl8dtl"},"change_message_id":"e095baa32f1e9888ccdf2fbd30014e508e84ac63","unresolved":false,"context_lines":[{"line_number":39,"context_line":"#include \"flash.h\""},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"struct rom_api {"},{"line_number":42,"context_line":"\tunsigned long (*crc32)(unsigned char *data,"},{"line_number":43,"context_line":"\t\t\t       unsigned long bytecount);"},{"line_number":44,"context_line":"\tunsigned long (*getflashsize)(void);"},{"line_number":45,"context_line":"\tunsigned long (*getchipid)(void);"}],"source_content_type":"text/x-csrc","patch_set":9,"id":"15266a6f_1a1ca7c9","line":42,"in_reply_to":"bf593d00_d1fe53e6","updated":"2023-11-19 17:11:31.000000000","message":"I don\u0027t think that is an answer to the maintainability argument - anyway, this is not my code, I have no strong feelings about it, and if you value stylistic changes that much, I simply changed all that.","commit_id":"c95e3e5c1f05b01de9df37ed26402e06dec7f706"},{"author":{"_account_id":1000853,"name":"zapb","display_name":"Marc Schink","email":"dev@zapb.de","username":"zapb"},"change_message_id":"e6314ab227a321d69e4e083150e0386c7cea05aa","unresolved":true,"context_lines":[{"line_number":41,"context_line":"struct rom_api {"},{"line_number":42,"context_line":"\tunsigned long (*crc32)(unsigned char *data,"},{"line_number":43,"context_line":"\t\t\t       unsigned long bytecount);"},{"line_number":44,"context_line":"\tunsigned long (*getflashsize)(void);"},{"line_number":45,"context_line":"\tunsigned long (*getchipid)(void);"},{"line_number":46,"context_line":"\tlong (*pageerase)(unsigned long startaddress,"},{"line_number":47,"context_line":"\t\t\t  unsigned long erasesize);"}],"source_content_type":"text/x-csrc","patch_set":9,"id":"33efec32_712d07e0","line":44,"updated":"2023-11-19 11:39:46.000000000","message":"Please use readable names like \u0027get_flash_size\u0027.","commit_id":"c95e3e5c1f05b01de9df37ed26402e06dec7f706"},{"author":{"_account_id":1000622,"name":"Jörg Wunsch","email":"openocd@uriah.heep.sax.de","username":"dl8dtl"},"change_message_id":"e095baa32f1e9888ccdf2fbd30014e508e84ac63","unresolved":false,"context_lines":[{"line_number":41,"context_line":"struct rom_api {"},{"line_number":42,"context_line":"\tunsigned long (*crc32)(unsigned char *data,"},{"line_number":43,"context_line":"\t\t\t       unsigned long bytecount);"},{"line_number":44,"context_line":"\tunsigned long (*getflashsize)(void);"},{"line_number":45,"context_line":"\tunsigned long (*getchipid)(void);"},{"line_number":46,"context_line":"\tlong (*pageerase)(unsigned long startaddress,"},{"line_number":47,"context_line":"\t\t\t  unsigned long erasesize);"}],"source_content_type":"text/x-csrc","patch_set":9,"id":"e33ea929_3cc4c27a","line":44,"in_reply_to":"33efec32_712d07e0","updated":"2023-11-19 17:11:31.000000000","message":"changed","commit_id":"c95e3e5c1f05b01de9df37ed26402e06dec7f706"},{"author":{"_account_id":1000853,"name":"zapb","display_name":"Marc Schink","email":"dev@zapb.de","username":"zapb"},"change_message_id":"e6314ab227a321d69e4e083150e0386c7cea05aa","unresolved":true,"context_lines":[{"line_number":80,"context_line":"extern uint32_t flash_bank_erase(void)"},{"line_number":81,"context_line":"{"},{"line_number":82,"context_line":"\tint i;"},{"line_number":83,"context_line":"\tlong ret;"},{"line_number":84,"context_line":"\t/* Some pages may be locked by bits in the CCA.\t Erasing the CCA"},{"line_number":85,"context_line":"\t   first will ensure that those pages will become unlocked."},{"line_number":86,"context_line":"\t   So, since the CCA is the last page in flash, let\u0027s just erase"}],"source_content_type":"text/x-csrc","patch_set":9,"id":"f6302068_34631ac0","line":83,"updated":"2023-11-19 11:39:46.000000000","message":"uint32_t is probably the right choice here and \u0027ret\u0027 can be declared inside the for-loop","commit_id":"c95e3e5c1f05b01de9df37ed26402e06dec7f706"},{"author":{"_account_id":1000622,"name":"Jörg Wunsch","email":"openocd@uriah.heep.sax.de","username":"dl8dtl"},"change_message_id":"e095baa32f1e9888ccdf2fbd30014e508e84ac63","unresolved":false,"context_lines":[{"line_number":80,"context_line":"extern uint32_t flash_bank_erase(void)"},{"line_number":81,"context_line":"{"},{"line_number":82,"context_line":"\tint i;"},{"line_number":83,"context_line":"\tlong ret;"},{"line_number":84,"context_line":"\t/* Some pages may be locked by bits in the CCA.\t Erasing the CCA"},{"line_number":85,"context_line":"\t   first will ensure that those pages will become unlocked."},{"line_number":86,"context_line":"\t   So, since the CCA is the last page in flash, let\u0027s just erase"}],"source_content_type":"text/x-csrc","patch_set":9,"id":"e5697f73_2febd7e1","line":83,"in_reply_to":"f6302068_34631ac0","updated":"2023-11-19 17:11:31.000000000","message":"changed","commit_id":"c95e3e5c1f05b01de9df37ed26402e06dec7f706"},{"author":{"_account_id":1000853,"name":"zapb","display_name":"Marc Schink","email":"dev@zapb.de","username":"zapb"},"change_message_id":"e6314ab227a321d69e4e083150e0386c7cea05aa","unresolved":true,"context_lines":[{"line_number":85,"context_line":"\t   first will ensure that those pages will become unlocked."},{"line_number":86,"context_line":"\t   So, since the CCA is the last page in flash, let\u0027s just erase"},{"line_number":87,"context_line":"\t   sectors backwards. */"},{"line_number":88,"context_line":"\tint num_sectors \u003d ROM-\u003egetflashsize() / FLASH_ERASE_SIZE;"},{"line_number":89,"context_line":"\tfor (i \u003d num_sectors - 1; i \u003e\u003d 0; i--) {"},{"line_number":90,"context_line":"\t\tret \u003d flash_sector_erase(i);"},{"line_number":91,"context_line":"\t\tif (ret !\u003d 0)"}],"source_content_type":"text/x-csrc","patch_set":9,"id":"72fbf4c6_0d1ac64c","line":88,"updated":"2023-11-19 11:39:46.000000000","message":"num_sectors can not be negative -\u003e unsigned int","commit_id":"c95e3e5c1f05b01de9df37ed26402e06dec7f706"},{"author":{"_account_id":1000622,"name":"Jörg Wunsch","email":"openocd@uriah.heep.sax.de","username":"dl8dtl"},"change_message_id":"e095baa32f1e9888ccdf2fbd30014e508e84ac63","unresolved":false,"context_lines":[{"line_number":85,"context_line":"\t   first will ensure that those pages will become unlocked."},{"line_number":86,"context_line":"\t   So, since the CCA is the last page in flash, let\u0027s just erase"},{"line_number":87,"context_line":"\t   sectors backwards. */"},{"line_number":88,"context_line":"\tint num_sectors \u003d ROM-\u003egetflashsize() / FLASH_ERASE_SIZE;"},{"line_number":89,"context_line":"\tfor (i \u003d num_sectors - 1; i \u003e\u003d 0; i--) {"},{"line_number":90,"context_line":"\t\tret \u003d flash_sector_erase(i);"},{"line_number":91,"context_line":"\t\tif (ret !\u003d 0)"}],"source_content_type":"text/x-csrc","patch_set":9,"id":"349dcff4_f7a248ea","line":88,"in_reply_to":"72fbf4c6_0d1ac64c","updated":"2023-11-19 17:11:31.000000000","message":"changed","commit_id":"c95e3e5c1f05b01de9df37ed26402e06dec7f706"},{"author":{"_account_id":1000853,"name":"zapb","display_name":"Marc Schink","email":"dev@zapb.de","username":"zapb"},"change_message_id":"e6314ab227a321d69e4e083150e0386c7cea05aa","unresolved":true,"context_lines":[{"line_number":86,"context_line":"\t   So, since the CCA is the last page in flash, let\u0027s just erase"},{"line_number":87,"context_line":"\t   sectors backwards. */"},{"line_number":88,"context_line":"\tint num_sectors \u003d ROM-\u003egetflashsize() / FLASH_ERASE_SIZE;"},{"line_number":89,"context_line":"\tfor (i \u003d num_sectors - 1; i \u003e\u003d 0; i--) {"},{"line_number":90,"context_line":"\t\tret \u003d flash_sector_erase(i);"},{"line_number":91,"context_line":"\t\tif (ret !\u003d 0)"},{"line_number":92,"context_line":"\t\t\treturn ret;"}],"source_content_type":"text/x-csrc","patch_set":9,"id":"5e626e04_921312f8","line":89,"updated":"2023-11-19 11:39:46.000000000","message":"Declare \u0027i\u0027 inside the for-loop","commit_id":"c95e3e5c1f05b01de9df37ed26402e06dec7f706"},{"author":{"_account_id":1000622,"name":"Jörg Wunsch","email":"openocd@uriah.heep.sax.de","username":"dl8dtl"},"change_message_id":"e095baa32f1e9888ccdf2fbd30014e508e84ac63","unresolved":false,"context_lines":[{"line_number":86,"context_line":"\t   So, since the CCA is the last page in flash, let\u0027s just erase"},{"line_number":87,"context_line":"\t   sectors backwards. */"},{"line_number":88,"context_line":"\tint num_sectors \u003d ROM-\u003egetflashsize() / FLASH_ERASE_SIZE;"},{"line_number":89,"context_line":"\tfor (i \u003d num_sectors - 1; i \u003e\u003d 0; i--) {"},{"line_number":90,"context_line":"\t\tret \u003d flash_sector_erase(i);"},{"line_number":91,"context_line":"\t\tif (ret !\u003d 0)"},{"line_number":92,"context_line":"\t\t\treturn ret;"}],"source_content_type":"text/x-csrc","patch_set":9,"id":"9b8cbf1d_d6a165cf","line":89,"in_reply_to":"5e626e04_921312f8","updated":"2023-11-19 17:11:31.000000000","message":"changed","commit_id":"c95e3e5c1f05b01de9df37ed26402e06dec7f706"},{"author":{"_account_id":1000853,"name":"zapb","display_name":"Marc Schink","email":"dev@zapb.de","username":"zapb"},"change_message_id":"e6314ab227a321d69e4e083150e0386c7cea05aa","unresolved":true,"context_lines":[{"line_number":100,"context_line":"\tlong ret;"},{"line_number":101,"context_line":"\tret \u003d ROM-\u003eprogramflash((unsigned long *)data_buffer, address, count);"},{"line_number":102,"context_line":"\tif (ret \u003d\u003d -1)"},{"line_number":103,"context_line":"\t\treturn 0x104;"},{"line_number":104,"context_line":"\tif (ret \u003d\u003d -2)"},{"line_number":105,"context_line":"\t\treturn 0x105;"},{"line_number":106,"context_line":"\tif (ret !\u003d 0)"}],"source_content_type":"text/x-csrc","patch_set":9,"id":"c70d0d73_e6ddb42e","line":103,"updated":"2023-11-19 11:39:46.000000000","message":"What do these magic values mean?","commit_id":"c95e3e5c1f05b01de9df37ed26402e06dec7f706"},{"author":{"_account_id":1000622,"name":"Jörg Wunsch","email":"openocd@uriah.heep.sax.de","username":"dl8dtl"},"change_message_id":"e095baa32f1e9888ccdf2fbd30014e508e84ac63","unresolved":false,"context_lines":[{"line_number":100,"context_line":"\tlong ret;"},{"line_number":101,"context_line":"\tret \u003d ROM-\u003eprogramflash((unsigned long *)data_buffer, address, count);"},{"line_number":102,"context_line":"\tif (ret \u003d\u003d -1)"},{"line_number":103,"context_line":"\t\treturn 0x104;"},{"line_number":104,"context_line":"\tif (ret \u003d\u003d -2)"},{"line_number":105,"context_line":"\t\treturn 0x105;"},{"line_number":106,"context_line":"\tif (ret !\u003d 0)"}],"source_content_type":"text/x-csrc","patch_set":9,"id":"15a85978_0bf558d4","line":103,"in_reply_to":"c70d0d73_e6ddb42e","updated":"2023-11-19 17:11:31.000000000","message":"Replaced them by less magic #defines.","commit_id":"c95e3e5c1f05b01de9df37ed26402e06dec7f706"}],"contrib/loaders/flash/cc2538/flash.h":[{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"f0b61e0767f3be52a1f89068afcd8638becaa958","unresolved":true,"context_lines":[{"line_number":4,"context_line":"* Copyright (C) 2020 Loci Controls Inc"},{"line_number":5,"context_line":"* Copyright (C) 2016-2018 Texas Instruments Incorporated - http://www.ti.com/"},{"line_number":6,"context_line":"*"},{"line_number":7,"context_line":"* Redistribution and use in source and binary forms, with or without"},{"line_number":8,"context_line":"* modification, are permitted provided that the following conditions"},{"line_number":9,"context_line":"* are met:"},{"line_number":10,"context_line":"*"}],"source_content_type":"text/x-csrc","patch_set":13,"id":"0d6f5416_a81ee9ad","line":7,"updated":"2023-11-24 23:23:58.000000000","message":"please remove the license boilerplate from this and the next files","commit_id":"6b209d1d1a29f6706de828d8d249f92d8939e87a"},{"author":{"_account_id":1000622,"name":"Jörg Wunsch","email":"openocd@uriah.heep.sax.de","username":"dl8dtl"},"change_message_id":"ea24150a2b673cf4b1c868891d713cb6876fefe2","unresolved":false,"context_lines":[{"line_number":4,"context_line":"* Copyright (C) 2020 Loci Controls Inc"},{"line_number":5,"context_line":"* Copyright (C) 2016-2018 Texas Instruments Incorporated - http://www.ti.com/"},{"line_number":6,"context_line":"*"},{"line_number":7,"context_line":"* Redistribution and use in source and binary forms, with or without"},{"line_number":8,"context_line":"* modification, are permitted provided that the following conditions"},{"line_number":9,"context_line":"* are met:"},{"line_number":10,"context_line":"*"}],"source_content_type":"text/x-csrc","patch_set":13,"id":"e7c224f6_96994d6a","line":7,"in_reply_to":"0d6f5416_a81ee9ad","updated":"2023-11-25 19:24:42.000000000","message":"done","commit_id":"6b209d1d1a29f6706de828d8d249f92d8939e87a"}],"contrib/loaders/flash/cc2538/flashloader.c":[{"author":{"_account_id":1000853,"name":"zapb","display_name":"Marc Schink","email":"dev@zapb.de","username":"zapb"},"change_message_id":"e6314ab227a321d69e4e083150e0386c7cea05aa","unresolved":true,"context_lines":[{"line_number":84,"context_line":"\tlast_sector_idx \u003d flash_address_to_sector(address + byte_count - 1);"},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"\t/*  Erase given sector(s) */"},{"line_number":87,"context_line":"\tfor (idx \u003d first_sector_idx; idx \u003c\u003d last_sector_idx; idx++) {"},{"line_number":88,"context_line":"\t\t/* Only erase sectors that haven\u0027t already been erased */"},{"line_number":89,"context_line":"\t\tif (!g_is_erased[idx]) {"},{"line_number":90,"context_line":"\t\t\tstatus \u003d flash_sector_erase(idx);"}],"source_content_type":"text/x-csrc","patch_set":9,"id":"88ca625d_e4547ebc","line":87,"updated":"2023-11-19 11:39:46.000000000","message":"idx can be declared here","commit_id":"c95e3e5c1f05b01de9df37ed26402e06dec7f706"},{"author":{"_account_id":1000622,"name":"Jörg Wunsch","email":"openocd@uriah.heep.sax.de","username":"dl8dtl"},"change_message_id":"e095baa32f1e9888ccdf2fbd30014e508e84ac63","unresolved":false,"context_lines":[{"line_number":84,"context_line":"\tlast_sector_idx \u003d flash_address_to_sector(address + byte_count - 1);"},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"\t/*  Erase given sector(s) */"},{"line_number":87,"context_line":"\tfor (idx \u003d first_sector_idx; idx \u003c\u003d last_sector_idx; idx++) {"},{"line_number":88,"context_line":"\t\t/* Only erase sectors that haven\u0027t already been erased */"},{"line_number":89,"context_line":"\t\tif (!g_is_erased[idx]) {"},{"line_number":90,"context_line":"\t\t\tstatus \u003d flash_sector_erase(idx);"}],"source_content_type":"text/x-csrc","patch_set":9,"id":"0dc23462_16e1628b","line":87,"in_reply_to":"88ca625d_e4547ebc","updated":"2023-11-19 17:11:31.000000000","message":"changed","commit_id":"c95e3e5c1f05b01de9df37ed26402e06dec7f706"},{"author":{"_account_id":1000853,"name":"zapb","display_name":"Marc Schink","email":"dev@zapb.de","username":"zapb"},"change_message_id":"e6314ab227a321d69e4e083150e0386c7cea05aa","unresolved":true,"context_lines":[{"line_number":109,"context_line":""},{"line_number":110,"context_line":"\tuint32_t status \u003d flash_program(src, address, byte_count);"},{"line_number":111,"context_line":"\tif (status !\u003d 0) {"},{"line_number":112,"context_line":"\t\tstatus \u003d (STATUS_FAILED_PROGRAM |"},{"line_number":113,"context_line":"\t\t\t  ((status \u003c\u003c STATUS_ROM_CODE_S) \u0026 STATUS_ROM_CODE_M));"},{"line_number":114,"context_line":"\t}"},{"line_number":115,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":9,"id":"7b109dfd_f01c615f","line":112,"updated":"2023-11-19 11:39:46.000000000","message":"\u0027status\u0027 is not used afterwards?","commit_id":"c95e3e5c1f05b01de9df37ed26402e06dec7f706"},{"author":{"_account_id":1000622,"name":"Jörg Wunsch","email":"openocd@uriah.heep.sax.de","username":"dl8dtl"},"change_message_id":"e095baa32f1e9888ccdf2fbd30014e508e84ac63","unresolved":false,"context_lines":[{"line_number":109,"context_line":""},{"line_number":110,"context_line":"\tuint32_t status \u003d flash_program(src, address, byte_count);"},{"line_number":111,"context_line":"\tif (status !\u003d 0) {"},{"line_number":112,"context_line":"\t\tstatus \u003d (STATUS_FAILED_PROGRAM |"},{"line_number":113,"context_line":"\t\t\t  ((status \u003c\u003c STATUS_ROM_CODE_S) \u0026 STATUS_ROM_CODE_M));"},{"line_number":114,"context_line":"\t}"},{"line_number":115,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":9,"id":"c8722dd2_4588da55","line":112,"in_reply_to":"7b109dfd_f01c615f","updated":"2023-11-19 17:11:31.000000000","message":"only used for the return value","commit_id":"c95e3e5c1f05b01de9df37ed26402e06dec7f706"},{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"vanekt@fbl.cz","username":"vanekt"},"change_message_id":"3f14a2e89ebbe3253dc1379f5ba648910373c3f1","unresolved":true,"context_lines":[{"line_number":40,"context_line":"#include \"flash.h\""},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"/* Array holding erased state of the flash sectors. */"},{"line_number":43,"context_line":"static bool g_is_erased[FLASH_MAX_SECTOR_COUNT];"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"extern uint8_t g_retain_buf[];"},{"line_number":46,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":15,"id":"17bda2c1_b945fb85","line":43,"updated":"2023-11-29 16:41:42.000000000","message":"Remove the array an all usage of it. There is no point in suspecting OpenOCD erases a sectors multiple times in one erase command. The life-time of this algo and g_is_erased is just one operation - so the next erase gets the array initialized to \u0027not erased\u0027 state again","commit_id":"c54e2e87d239b3c0f8094a68a90a9cadedc1b131"}],"contrib/loaders/flash/cc2538/startup.s":[{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"48cf58a246ec8b32300105ad3a9344e81f8ed42a","unresolved":true,"context_lines":[{"line_number":1,"context_line":"/* SPDX-License-Identifier: BSD-3-Clause */"},{"line_number":2,"context_line":"        .section .entry"},{"line_number":3,"context_line":"        .global entry"},{"line_number":4,"context_line":"        .syntax unified"}],"source_content_type":"text/x-gas","patch_set":12,"id":"41eb25b6_97948460","line":1,"updated":"2023-11-19 22:57:31.000000000","message":"again, missing copyright","commit_id":"4f5b584555f15551b6d8d7ed283e369b0853d9c5"},{"author":{"_account_id":1000622,"name":"Jörg Wunsch","email":"openocd@uriah.heep.sax.de","username":"dl8dtl"},"change_message_id":"788a0773c3ee3a58ee876aff07c9f4ed014eb55e","unresolved":false,"context_lines":[{"line_number":1,"context_line":"/* SPDX-License-Identifier: BSD-3-Clause */"},{"line_number":2,"context_line":"        .section .entry"},{"line_number":3,"context_line":"        .global entry"},{"line_number":4,"context_line":"        .syntax unified"}],"source_content_type":"text/x-gas","patch_set":12,"id":"04f77fcd_d2f663ba","line":1,"in_reply_to":"41eb25b6_97948460","updated":"2023-11-21 22:03:00.000000000","message":"Added.","commit_id":"4f5b584555f15551b6d8d7ed283e369b0853d9c5"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"48cf58a246ec8b32300105ad3a9344e81f8ed42a","unresolved":true,"context_lines":[{"line_number":17,"context_line":"        mov sp, r0"},{"line_number":18,"context_line":"        isb"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"        /* Clear BSS */"},{"line_number":21,"context_line":"        mov r0, #0"},{"line_number":22,"context_line":"        ldr r1, \u003d_bss"},{"line_number":23,"context_line":"        ldr r2, \u003d_ebss"}],"source_content_type":"text/x-gas","patch_set":12,"id":"8bc06ff4_2d419fca","line":20,"updated":"2023-11-19 22:57:31.000000000","message":"here is where the BSS get erased","commit_id":"4f5b584555f15551b6d8d7ed283e369b0853d9c5"},{"author":{"_account_id":1000622,"name":"Jörg Wunsch","email":"openocd@uriah.heep.sax.de","username":"dl8dtl"},"change_message_id":"788a0773c3ee3a58ee876aff07c9f4ed014eb55e","unresolved":false,"context_lines":[{"line_number":17,"context_line":"        mov sp, r0"},{"line_number":18,"context_line":"        isb"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"        /* Clear BSS */"},{"line_number":21,"context_line":"        mov r0, #0"},{"line_number":22,"context_line":"        ldr r1, \u003d_bss"},{"line_number":23,"context_line":"        ldr r2, \u003d_ebss"}],"source_content_type":"text/x-gas","patch_set":12,"id":"5c81b048_03947e8f","line":20,"in_reply_to":"8bc06ff4_2d419fca","updated":"2023-11-21 22:03:00.000000000","message":"See above.","commit_id":"4f5b584555f15551b6d8d7ed283e369b0853d9c5"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"48cf58a246ec8b32300105ad3a9344e81f8ed42a","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":12,"id":"58b4ce0d_133aa2db","line":39,"updated":"2023-11-19 22:57:31.000000000","message":"extra empty line at the end of the file","commit_id":"4f5b584555f15551b6d8d7ed283e369b0853d9c5"},{"author":{"_account_id":1000622,"name":"Jörg Wunsch","email":"openocd@uriah.heep.sax.de","username":"dl8dtl"},"change_message_id":"788a0773c3ee3a58ee876aff07c9f4ed014eb55e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":12,"id":"49080125_a318ced7","line":39,"in_reply_to":"58b4ce0d_133aa2db","updated":"2023-11-21 22:03:00.000000000","message":"Removed.","commit_id":"4f5b584555f15551b6d8d7ed283e369b0853d9c5"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"f0b61e0767f3be52a1f89068afcd8638becaa958","unresolved":true,"context_lines":[{"line_number":47,"context_line":"        bl __libc_init_array"},{"line_number":48,"context_line":"        bl main"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"        /* Main returned -- hang */"},{"line_number":51,"context_line":"        b ."}],"source_content_type":"text/x-gas","patch_set":13,"id":"91867d7c_68987ee6","line":51,"range":{"start_line":50,"start_character":0,"end_line":51,"end_character":11},"updated":"2023-11-24 23:23:58.000000000","message":"I think that other flash loaders use a breakpoint instruction \"bkpt #0\" to halt and alert the driver the core is executed.\nThe register \"r0\" can return an error code.\ncontrib/loaders/erase_check/armv4_5_erase_check.s\ncontrib/loaders/flash/stm32/stm32f2x.S","commit_id":"6b209d1d1a29f6706de828d8d249f92d8939e87a"},{"author":{"_account_id":1000622,"name":"Jörg Wunsch","email":"openocd@uriah.heep.sax.de","username":"dl8dtl"},"change_message_id":"ea24150a2b673cf4b1c868891d713cb6876fefe2","unresolved":false,"context_lines":[{"line_number":47,"context_line":"        bl __libc_init_array"},{"line_number":48,"context_line":"        bl main"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"        /* Main returned -- hang */"},{"line_number":51,"context_line":"        b ."}],"source_content_type":"text/x-gas","patch_set":13,"id":"6a8c1931_d7980bd6","line":51,"range":{"start_line":50,"start_character":0,"end_line":51,"end_character":11},"in_reply_to":"91867d7c_68987ee6","updated":"2023-11-25 19:24:42.000000000","message":"Well, I am not the author of the loader, so I hesitate to perform major changes.\n\nThis loop behind main() is never reached, as main() itself in the loader uses an infinite loop.\n\nCommunication with the OpenOCD host is performed by a dedicated area in the target memory.","commit_id":"6b209d1d1a29f6706de828d8d249f92d8939e87a"}],"src/flash/nor/cc2538.c":[{"author":{"_account_id":1000853,"name":"zapb","display_name":"Marc Schink","email":"dev@zapb.de","username":"zapb"},"change_message_id":"e6314ab227a321d69e4e083150e0386c7cea05aa","unresolved":true,"context_lines":[{"line_number":325,"context_line":"\tstruct cc2538_bank *cc2538_bank \u003d bank-\u003edriver_priv;"},{"line_number":326,"context_line":""},{"line_number":327,"context_line":"\tuint32_t value;"},{"line_number":328,"context_line":"\tint num_sectors;"},{"line_number":329,"context_line":""},{"line_number":330,"context_line":"\tint retval;"},{"line_number":331,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":9,"id":"ddcb6b3e_80cbfdc4","line":328,"updated":"2023-11-19 11:39:46.000000000","message":"\u0027num_sectors\u0027 can not be negative -\u003e unsigned int","commit_id":"c95e3e5c1f05b01de9df37ed26402e06dec7f706"},{"author":{"_account_id":1000622,"name":"Jörg Wunsch","email":"openocd@uriah.heep.sax.de","username":"dl8dtl"},"change_message_id":"e095baa32f1e9888ccdf2fbd30014e508e84ac63","unresolved":false,"context_lines":[{"line_number":325,"context_line":"\tstruct cc2538_bank *cc2538_bank \u003d bank-\u003edriver_priv;"},{"line_number":326,"context_line":""},{"line_number":327,"context_line":"\tuint32_t value;"},{"line_number":328,"context_line":"\tint num_sectors;"},{"line_number":329,"context_line":""},{"line_number":330,"context_line":"\tint retval;"},{"line_number":331,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":9,"id":"9861bb25_7747f6ba","line":328,"in_reply_to":"ddcb6b3e_80cbfdc4","updated":"2023-11-19 17:11:31.000000000","message":"I also changed the for loop variable to unsigned thus, otherwise the loop would cause a signed/unsigned mix.","commit_id":"c95e3e5c1f05b01de9df37ed26402e06dec7f706"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"48cf58a246ec8b32300105ad3a9344e81f8ed42a","unresolved":true,"context_lines":[{"line_number":3,"context_line":" *   Copyright (C) 2020 Loci Controls Inc                                  *"},{"line_number":4,"context_line":" *   Copyright (C) 2017 by Texas Instruments, Inc.                         *"},{"line_number":5,"context_line":" *                                                                         *"},{"line_number":6,"context_line":" *   This program is free software; you can redistribute it and/or modify  *"},{"line_number":7,"context_line":" *   it under the terms of the GNU General Public License as published by  *"},{"line_number":8,"context_line":" *   the Free Software Foundation; either version 2 of the License, or     *"},{"line_number":9,"context_line":" *   (at your option) any later version.                                   *"}],"source_content_type":"text/x-csrc","patch_set":12,"id":"47303f76_5d24a11f","line":6,"updated":"2023-11-19 22:57:31.000000000","message":"please remove the license boilerplate in every file\nThe SPDX line on top is enough, but be careful to keep every copyright line","commit_id":"4f5b584555f15551b6d8d7ed283e369b0853d9c5"},{"author":{"_account_id":1000622,"name":"Jörg Wunsch","email":"openocd@uriah.heep.sax.de","username":"dl8dtl"},"change_message_id":"788a0773c3ee3a58ee876aff07c9f4ed014eb55e","unresolved":false,"context_lines":[{"line_number":3,"context_line":" *   Copyright (C) 2020 Loci Controls Inc                                  *"},{"line_number":4,"context_line":" *   Copyright (C) 2017 by Texas Instruments, Inc.                         *"},{"line_number":5,"context_line":" *                                                                         *"},{"line_number":6,"context_line":" *   This program is free software; you can redistribute it and/or modify  *"},{"line_number":7,"context_line":" *   it under the terms of the GNU General Public License as published by  *"},{"line_number":8,"context_line":" *   the Free Software Foundation; either version 2 of the License, or     *"},{"line_number":9,"context_line":" *   (at your option) any later version.                                   *"}],"source_content_type":"text/x-csrc","patch_set":12,"id":"e2e9463f_fcdb818f","line":6,"in_reply_to":"47303f76_5d24a11f","updated":"2023-11-21 22:03:00.000000000","message":"Done.","commit_id":"4f5b584555f15551b6d8d7ed283e369b0853d9c5"},{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"vanekt@fbl.cz","username":"vanekt"},"change_message_id":"3f14a2e89ebbe3253dc1379f5ba648910373c3f1","unresolved":true,"context_lines":[{"line_number":57,"context_line":"\t\t\treturn retval;"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"\t\telapsed_ms \u003d timeval_ms() - start_ms;"},{"line_number":60,"context_line":"\t\tif (elapsed_ms \u003e 500)"},{"line_number":61,"context_line":"\t\t\tkeep_alive();"},{"line_number":62,"context_line":"\t\tif (elapsed_ms \u003e FLASH_TIMEOUT)"},{"line_number":63,"context_line":"\t\t\tbreak;"},{"line_number":64,"context_line":"\t};"}],"source_content_type":"text/x-csrc","patch_set":15,"id":"416f7848_414958cc","line":61,"range":{"start_line":60,"start_character":1,"end_line":61,"end_character":16},"updated":"2023-11-29 16:41:42.000000000","message":"It\u0027s no problem to call keep_alive() every loop round","commit_id":"c54e2e87d239b3c0f8094a68a90a9cadedc1b131"},{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"vanekt@fbl.cz","username":"vanekt"},"change_message_id":"3f14a2e89ebbe3253dc1379f5ba648910373c3f1","unresolved":true,"context_lines":[{"line_number":93,"context_line":""},{"line_number":94,"context_line":"\t/* Confirm the defined working address is the area we need to use */"},{"line_number":95,"context_line":"\tif (cc2538_bank-\u003eworking_area-\u003eaddress !\u003d CC2538_ALGO_BASE_ADDRESS)"},{"line_number":96,"context_line":"\t\treturn ERROR_TARGET_RESOURCE_NOT_AVAILABLE;"},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"\t/* Write flash helper algorithm into target memory */"},{"line_number":99,"context_line":"\tretval \u003d target_write_buffer(target, CC2538_ALGO_BASE_ADDRESS,"}],"source_content_type":"text/x-csrc","patch_set":15,"id":"04f1c6eb_68009960","line":96,"updated":"2023-11-29 16:41:42.000000000","message":"An explaining LOG_ERROR please!","commit_id":"c54e2e87d239b3c0f8094a68a90a9cadedc1b131"},{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"vanekt@fbl.cz","username":"vanekt"},"change_message_id":"3f14a2e89ebbe3253dc1379f5ba648910373c3f1","unresolved":true,"context_lines":[{"line_number":154,"context_line":""},{"line_number":155,"context_line":"\tcc2538_bank \u003d malloc(sizeof(struct cc2538_bank));"},{"line_number":156,"context_line":"\tif (!cc2538_bank)"},{"line_number":157,"context_line":"\t\treturn ERROR_FAIL;"},{"line_number":158,"context_line":""},{"line_number":159,"context_line":"\t/* Initialize private flash information */"},{"line_number":160,"context_line":"\tmemset((void *)cc2538_bank, 0x00, sizeof(struct cc2538_bank));"}],"source_content_type":"text/x-csrc","patch_set":15,"id":"a603c98e_6380da4a","line":157,"updated":"2023-11-29 16:41:42.000000000","message":"An error message please, e.g. LOG_ERROR(\"Out of memory\");","commit_id":"c54e2e87d239b3c0f8094a68a90a9cadedc1b131"},{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"vanekt@fbl.cz","username":"vanekt"},"change_message_id":"3f14a2e89ebbe3253dc1379f5ba648910373c3f1","unresolved":true,"context_lines":[{"line_number":157,"context_line":"\t\treturn ERROR_FAIL;"},{"line_number":158,"context_line":""},{"line_number":159,"context_line":"\t/* Initialize private flash information */"},{"line_number":160,"context_line":"\tmemset((void *)cc2538_bank, 0x00, sizeof(struct cc2538_bank));"},{"line_number":161,"context_line":""},{"line_number":162,"context_line":"\t/* Finish initialization of bank */"},{"line_number":163,"context_line":"\tbank-\u003edriver_priv \u003d cc2538_bank;"}],"source_content_type":"text/x-csrc","patch_set":15,"id":"464fe951_e19b1a6f","line":160,"range":{"start_line":160,"start_character":8,"end_line":160,"end_character":16},"updated":"2023-11-29 16:41:42.000000000","message":"Useless type cast","commit_id":"c54e2e87d239b3c0f8094a68a90a9cadedc1b131"},{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"vanekt@fbl.cz","username":"vanekt"},"change_message_id":"3f14a2e89ebbe3253dc1379f5ba648910373c3f1","unresolved":true,"context_lines":[{"line_number":161,"context_line":""},{"line_number":162,"context_line":"\t/* Finish initialization of bank */"},{"line_number":163,"context_line":"\tbank-\u003edriver_priv \u003d cc2538_bank;"},{"line_number":164,"context_line":"\tbank-\u003enext \u003d NULL;"},{"line_number":165,"context_line":""},{"line_number":166,"context_line":"\treturn ERROR_OK;"},{"line_number":167,"context_line":"}"}],"source_content_type":"text/x-csrc","patch_set":15,"id":"3d3e384b_12be6f83","line":164,"range":{"start_line":164,"start_character":1,"end_line":164,"end_character":19},"updated":"2023-11-29 16:41:42.000000000","message":"Don\u0027t touch, the flash infrastructure handles the next pointer","commit_id":"c54e2e87d239b3c0f8094a68a90a9cadedc1b131"},{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"vanekt@fbl.cz","username":"vanekt"},"change_message_id":"3f14a2e89ebbe3253dc1379f5ba648910373c3f1","unresolved":true,"context_lines":[{"line_number":188,"context_line":"\t * thereby clearing all possible lockbits."},{"line_number":189,"context_line":"\t */"},{"line_number":190,"context_line":"\taddress \u003d bank-\u003ebase + last * CC2538_SECTOR_LENGTH;"},{"line_number":191,"context_line":"\tlength \u003d (last - first + 1) * CC2538_SECTOR_LENGTH;"},{"line_number":192,"context_line":""},{"line_number":193,"context_line":"\tretval \u003d cc2538_init(bank);"},{"line_number":194,"context_line":"\tif (retval !\u003d ERROR_OK)"}],"source_content_type":"text/x-csrc","patch_set":15,"id":"45ad7a51_974099a4","line":191,"updated":"2023-11-29 16:41:42.000000000","message":"The first/last sector indices are converted to address/length.\nAt target side flashloader_erase_sectors() converts them back to\nfirst_sector_idx/last_sector_idx to be in turn converted to address again in flash_sector_erase(). Nice mess!","commit_id":"c54e2e87d239b3c0f8094a68a90a9cadedc1b131"},{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"vanekt@fbl.cz","username":"vanekt"},"change_message_id":"3f14a2e89ebbe3253dc1379f5ba648910373c3f1","unresolved":false,"context_lines":[{"line_number":208,"context_line":"\t\t\t\t\t     sizeof(algo_params), (uint8_t *)\u0026algo_params);"},{"line_number":209,"context_line":""},{"line_number":210,"context_line":"\t\t/* If no error, wait for erase to finish */"},{"line_number":211,"context_line":"\t\tindex ^\u003d 1;"},{"line_number":212,"context_line":"\t\tif (retval !\u003d ERROR_OK)"},{"line_number":213,"context_line":"\t\t\tretval \u003d cc2538_wait_algo_done(bank, cc2538_bank-\u003eparams_addr[index]);"},{"line_number":214,"context_line":"\t\t/*"}],"source_content_type":"text/x-csrc","patch_set":15,"id":"05f655ec_d4d5404a","line":211,"updated":"2023-11-29 16:41:42.000000000","message":"Hmm, interleaving buffers seems completely useless for erase but yes, it is required by the target side main()","commit_id":"c54e2e87d239b3c0f8094a68a90a9cadedc1b131"},{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"vanekt@fbl.cz","username":"vanekt"},"change_message_id":"3f14a2e89ebbe3253dc1379f5ba648910373c3f1","unresolved":true,"context_lines":[{"line_number":211,"context_line":"\t\tindex ^\u003d 1;"},{"line_number":212,"context_line":"\t\tif (retval !\u003d ERROR_OK)"},{"line_number":213,"context_line":"\t\t\tretval \u003d cc2538_wait_algo_done(bank, cc2538_bank-\u003eparams_addr[index]);"},{"line_number":214,"context_line":"\t\t/*"},{"line_number":215,"context_line":"\t\t * For whatever reason, it seems the ROM functions"},{"line_number":216,"context_line":"\t\t * might return before the page is actually erased,"},{"line_number":217,"context_line":"\t\t * thus preventing any further erase operations from"}],"source_content_type":"text/x-csrc","patch_set":15,"id":"c35af369_88408bfe","line":214,"updated":"2023-11-29 16:41:42.000000000","message":"If wait_algo_done() returns an error the loop continues. If the target algo is dead for whatever reason, we would wait up to number of sectors x 10 sec timeout","commit_id":"c54e2e87d239b3c0f8094a68a90a9cadedc1b131"},{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"vanekt@fbl.cz","username":"vanekt"},"change_message_id":"3f14a2e89ebbe3253dc1379f5ba648910373c3f1","unresolved":true,"context_lines":[{"line_number":218,"context_line":"\t\t * proceeding. Thus, wait 20 ms between each page"},{"line_number":219,"context_line":"\t\t * erase operations."},{"line_number":220,"context_line":"\t\t */"},{"line_number":221,"context_line":"\t\tusleep(20000);"},{"line_number":222,"context_line":"\t\taddress -\u003d CC2538_SECTOR_LENGTH;"},{"line_number":223,"context_line":"\t\tlength -\u003d CC2538_SECTOR_LENGTH;"},{"line_number":224,"context_line":"\t}"}],"source_content_type":"text/x-csrc","patch_set":15,"id":"6c135b02_93baa840","line":221,"updated":"2023-11-29 16:41:42.000000000","message":"What a hack! It presumably prevents using the (faster) target side loop in flashloader_erase_sectors().\nWouldn\u0027t be better to use FLASH_CTRL_FCTL and FLASH_CTRL_FADDR registers directly without a target algo and avoid calling such buggy ROM API?","commit_id":"c54e2e87d239b3c0f8094a68a90a9cadedc1b131"},{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"vanekt@fbl.cz","username":"vanekt"},"change_message_id":"3f14a2e89ebbe3253dc1379f5ba648910373c3f1","unresolved":true,"context_lines":[{"line_number":287,"context_line":""},{"line_number":288,"context_line":"\t\t/* Wait for next ping pong buffer to be ready */"},{"line_number":289,"context_line":"\t\tindex ^\u003d 1;"},{"line_number":290,"context_line":"\t\tretval \u003d cc2538_wait_algo_done(bank, cc2538_bank-\u003eparams_addr[index]);"},{"line_number":291,"context_line":"\t\tif (retval !\u003d ERROR_OK)"},{"line_number":292,"context_line":"\t\t\tbreak;"},{"line_number":293,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":15,"id":"e6d80a1b_8eced2af","line":290,"updated":"2023-11-29 16:41:42.000000000","message":"In the first loop run this waits for not yet initialized algo_params set. It probably returns OK without waiting due to initialization at the target side, but does not look nice from the point of code readability.","commit_id":"c54e2e87d239b3c0f8094a68a90a9cadedc1b131"},{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"vanekt@fbl.cz","username":"vanekt"},"change_message_id":"3f14a2e89ebbe3253dc1379f5ba648910373c3f1","unresolved":true,"context_lines":[{"line_number":303,"context_line":"\t/* If no error yet, wait for last buffer to finish */"},{"line_number":304,"context_line":"\tif (retval \u003d\u003d ERROR_OK) {"},{"line_number":305,"context_line":"\t\tindex ^\u003d 1;"},{"line_number":306,"context_line":"\t\tretval \u003d cc2538_wait_algo_done(bank, cc2538_bank-\u003eparams_addr[index]);"},{"line_number":307,"context_line":"\t}"},{"line_number":308,"context_line":""},{"line_number":309,"context_line":"\t/* Regardless of errors, try to close down algo */"}],"source_content_type":"text/x-csrc","patch_set":15,"id":"f05ff212_1b17e4d4","line":306,"updated":"2023-11-29 16:41:42.000000000","message":"And this waits even in trivial case of count \u003d 0 and no loop round.","commit_id":"c54e2e87d239b3c0f8094a68a90a9cadedc1b131"},{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"vanekt@fbl.cz","username":"vanekt"},"change_message_id":"3f14a2e89ebbe3253dc1379f5ba648910373c3f1","unresolved":true,"context_lines":[{"line_number":348,"context_line":"\tbank-\u003ebase \u003d CC2538_FLASH_BASE_ADDR;"},{"line_number":349,"context_line":"\tbank-\u003enum_sectors \u003d num_sectors;"},{"line_number":350,"context_line":"\tbank-\u003esize \u003d num_sectors * CC2538_SECTOR_LENGTH;"},{"line_number":351,"context_line":"\tbank-\u003ewrite_start_alignment \u003d 0;"},{"line_number":352,"context_line":"\tbank-\u003ewrite_end_alignment \u003d 0;"},{"line_number":353,"context_line":""},{"line_number":354,"context_line":"\tfor (unsigned int i \u003d 0; i \u003c num_sectors; i++) {"},{"line_number":355,"context_line":"\t\tbank-\u003esectors[i].offset \u003d i * CC2538_SECTOR_LENGTH;"}],"source_content_type":"text/x-csrc","patch_set":15,"id":"70d19c16_ea84d9d2","line":352,"range":{"start_line":351,"start_character":1,"end_line":352,"end_character":31},"updated":"2023-11-29 16:41:42.000000000","message":"No. Should be 4 for a 32-bit word alignment.\nSee https://www.ti.com/lit/ug/swru333a/swru333a.pdf?ts\u003d1701264819940\u0026ref_url\u003dhttps%253A%252F%252Fwww.ti.com%252Ftool%252FCC2538-SW\n3.2.2.9 ROM_ProgramFlash\nor\nhttps://www.ti.com/lit/ug/swru319c/swru319c.pdf?ts\u003d1701264445029\u0026ref_url\u003dhttps%253A%252F%252Fwww.ti.com%252Fproduct%252FCC2538%253FkeyMatch%253DCC2538%2526tisearch%253Dsearch-everything%2526usecase%253DGPN-ALT\n8.3 Flash Write\n*The flash is programmed serially with a sequence of one or more 32-bit words (4 bytes)*...","commit_id":"c54e2e87d239b3c0f8094a68a90a9cadedc1b131"}],"src/flash/nor/cc2538.h":[{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"48cf58a246ec8b32300105ad3a9344e81f8ed42a","unresolved":true,"context_lines":[{"line_number":56,"context_line":""},{"line_number":57,"context_line":"/* Flash helper algorithm */"},{"line_number":58,"context_line":"const uint8_t cc2538_algo[] \u003d {"},{"line_number":59,"context_line":"#include \"../../../contrib/loaders/flash/cc2538/cc2538_algo.inc\""},{"line_number":60,"context_line":"};"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":12,"id":"f853bed3_b2bf088d","line":59,"updated":"2023-11-19 22:57:31.000000000","message":"The rule is that include files contains only declarations, no initialization of variables.\nBut actually the whole file can disappear and it\u0027s content be copy/paste inside cc2538.c","commit_id":"4f5b584555f15551b6d8d7ed283e369b0853d9c5"},{"author":{"_account_id":1000622,"name":"Jörg Wunsch","email":"openocd@uriah.heep.sax.de","username":"dl8dtl"},"change_message_id":"ea24150a2b673cf4b1c868891d713cb6876fefe2","unresolved":false,"context_lines":[{"line_number":56,"context_line":""},{"line_number":57,"context_line":"/* Flash helper algorithm */"},{"line_number":58,"context_line":"const uint8_t cc2538_algo[] \u003d {"},{"line_number":59,"context_line":"#include \"../../../contrib/loaders/flash/cc2538/cc2538_algo.inc\""},{"line_number":60,"context_line":"};"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":12,"id":"895d39c7_72a59516","line":59,"in_reply_to":"2720ef76_16ef8277","updated":"2023-11-25 19:24:42.000000000","message":"I did understand you correctly - but still, analysis shows that this flash loader just behaves exactly as many other flash loaders right now.\n\nIf that needs to be changed, the place to change it were src/helper/bin2char.sh which generates these files. It would need to generate a fully self-contained, compilable C code file instead of just array contents. That way, it could be compiled and linked then as part of the flash driver.\n\ncopy\u0026pasting the respective array contents is IMHO an even worse solution than the status quo is.\n\nAll of the following occurences just work in an identical way:\n\n% grep -ri --include\u003d\u0027*.c\u0027 \u0027\\.\\./\\.\\..*\\.inc\u0027 src/flash/\nsrc/flash/nor/stmqspi.c:                #include \"../../../contrib/loaders/flash/stmqspi/stmqspi_erase_check.inc\"\nsrc/flash/nor/stmqspi.c:                #include \"../../../contrib/loaders/flash/stmqspi/stmoctospi_erase_check.inc\"\nsrc/flash/nor/stmqspi.c:                #include \"../../../contrib/loaders/flash/stmqspi/stmqspi_crc32.inc\"\nsrc/flash/nor/stmqspi.c:                #include \"../../../contrib/loaders/flash/stmqspi/stmoctospi_crc32.inc\"\nsrc/flash/nor/stmqspi.c:#include \"../../../contrib/loaders/flash/stmqspi/stmqspi_read.inc\"\nsrc/flash/nor/stmqspi.c:#include \"../../../contrib/loaders/flash/stmqspi/stmoctospi_read.inc\"\nsrc/flash/nor/stmqspi.c:#include \"../../../contrib/loaders/flash/stmqspi/stmqspi_write.inc\"\nsrc/flash/nor/stmqspi.c:#include \"../../../contrib/loaders/flash/stmqspi/stmoctospi_write.inc\"\nsrc/flash/nor/sh_qspi.c:#include \"../../../contrib/loaders/flash/sh_qspi/sh_qspi.inc\"\nsrc/flash/nor/stm32f1x.c:#include \"../../../contrib/loaders/flash/stm32/stm32f1x.inc\"\nsrc/flash/nor/stm32f1x.c:#include \"../../../contrib/loaders/flash/gd32vf103/gd32vf103.inc\"\nsrc/flash/nor/stm32f2x.c:#include \"../../../contrib/loaders/flash/stm32/stm32f2x.inc\"\nsrc/flash/nor/msp432.c:#include \"../../../contrib/loaders/flash/msp432/msp432p401x_algo.inc\"\nsrc/flash/nor/msp432.c:#include \"../../../contrib/loaders/flash/msp432/msp432p411x_algo.inc\"\nsrc/flash/nor/msp432.c:#include \"../../../contrib/loaders/flash/msp432/msp432e4x_algo.inc\"\nsrc/flash/nor/nrf5.c:#include \"../../../contrib/loaders/flash/nrf5/nrf5.inc\"\nsrc/flash/nor/npcx.c:#include \"../../../contrib/loaders/flash/npcx/npcx_algo.inc\"\nsrc/flash/nor/stm32h7x.c:#include \"../../../contrib/loaders/flash/stm32/stm32h7x.inc\"\nsrc/flash/nor/fm4.c:#include \"../../../contrib/loaders/flash/fm4/erase.inc\"\nsrc/flash/nor/fm4.c:#include \"../../../contrib/loaders/flash/fm4/write.inc\"\nsrc/flash/nor/xmc1xxx.c:#include \"../../../contrib/loaders/flash/xmc1xxx/erase.inc\"\nsrc/flash/nor/xmc1xxx.c:#include \"../../../contrib/loaders/flash/xmc1xxx/erase_check.inc\"\nsrc/flash/nor/xmc1xxx.c:#include \"../../../contrib/loaders/flash/xmc1xxx/write.inc\"\nsrc/flash/nor/stm32lx.c:#include \"../../../contrib/loaders/flash/stm32/stm32lx.inc\"\nsrc/flash/nor/stm32l4x.c:#include \"../../../contrib/loaders/flash/stm32/stm32l4x.inc\"\nsrc/flash/nor/max32xxx.c:#include \"../../../contrib/loaders/flash/max32xxx/max32xxx.inc\"\nsrc/flash/nor/bluenrg-x.c:#include \"../../../contrib/loaders/flash/bluenrg-x/bluenrg-x_write.inc\"\nsrc/flash/nor/kinetis_ke.c:#include \"../../../contrib/loaders/flash/kinetis_ke/kinetis_ke_watchdog.inc\"\nsrc/flash/nor/kinetis_ke.c:#include \"../../../contrib/loaders/flash/kinetis_ke/kinetis_ke_flash.inc\"\nsrc/flash/nor/numicro.c:#include \"../../../contrib/loaders/flash/numicro/numicro_m0.inc\"\nsrc/flash/nor/numicro.c:#include \"../../../contrib/loaders/flash/numicro/numicro_m4.inc\"\nsrc/flash/nor/cc3220sf.c:#include \"../../../contrib/loaders/flash/cc3220sf/cc3220sf.inc\"\nsrc/flash/nor/rsl10.c:#include \"../../../contrib/loaders/flash/rsl10/rom_launcher.inc\"\nsrc/flash/nor/cc26xx.c:#include \"../../../contrib/loaders/flash/cc26xx/cc26x0_algo.inc\"\nsrc/flash/nor/cc26xx.c:#include \"../../../contrib/loaders/flash/cc26xx/cc26x2_algo.inc\"\nsrc/flash/nor/kinetis.c:#include \"../../../contrib/loaders/watchdog/armv7m_kinetis_wdog.inc\"\nsrc/flash/nor/kinetis.c:#include \"../../../contrib/loaders/watchdog/armv7m_kinetis_wdog32.inc\"\nsrc/flash/nor/kinetis.c:#include \"../../../contrib/loaders/flash/kinetis/kinetis_flash.inc\"\nsrc/flash/nor/fespi.c:#include \"../../../contrib/loaders/flash/fespi/riscv32_fespi.inc\"\nsrc/flash/nor/fespi.c:#include \"../../../contrib/loaders/flash/fespi/riscv64_fespi.inc\"","commit_id":"4f5b584555f15551b6d8d7ed283e369b0853d9c5"},{"author":{"_account_id":1000622,"name":"Jörg Wunsch","email":"openocd@uriah.heep.sax.de","username":"dl8dtl"},"change_message_id":"a36dab3046b6c148f7ab753ec2d84ef3552e9084","unresolved":true,"context_lines":[{"line_number":56,"context_line":""},{"line_number":57,"context_line":"/* Flash helper algorithm */"},{"line_number":58,"context_line":"const uint8_t cc2538_algo[] \u003d {"},{"line_number":59,"context_line":"#include \"../../../contrib/loaders/flash/cc2538/cc2538_algo.inc\""},{"line_number":60,"context_line":"};"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":12,"id":"cdbcd16f_d66e987b","line":59,"in_reply_to":"77ccf6fb_0b17bf2a","updated":"2023-11-21 09:00:34.000000000","message":"I did a quick review of the other flash handlers.\nI found 42 flash handlers that do exactly the same: generate a .inc file with the actual loader contents under contrib/loader, and then include it into the actual code. So why would cc2538 handle that differently?","commit_id":"4f5b584555f15551b6d8d7ed283e369b0853d9c5"},{"author":{"_account_id":1000622,"name":"Jörg Wunsch","email":"openocd@uriah.heep.sax.de","username":"dl8dtl"},"change_message_id":"1cac4e6633371dc403db6a3b37c750679a774ca5","unresolved":false,"context_lines":[{"line_number":56,"context_line":""},{"line_number":57,"context_line":"/* Flash helper algorithm */"},{"line_number":58,"context_line":"const uint8_t cc2538_algo[] \u003d {"},{"line_number":59,"context_line":"#include \"../../../contrib/loaders/flash/cc2538/cc2538_algo.inc\""},{"line_number":60,"context_line":"};"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":12,"id":"8bda88ed_e30ae985","line":59,"in_reply_to":"895d39c7_72a59516","updated":"2023-11-25 22:34:56.000000000","message":"Sorry, after re-reading your comment, I realized my misunderstanding.\n\nOK, I moved the array definition from the .h to the .c file.","commit_id":"4f5b584555f15551b6d8d7ed283e369b0853d9c5"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"f0b61e0767f3be52a1f89068afcd8638becaa958","unresolved":true,"context_lines":[{"line_number":56,"context_line":""},{"line_number":57,"context_line":"/* Flash helper algorithm */"},{"line_number":58,"context_line":"const uint8_t cc2538_algo[] \u003d {"},{"line_number":59,"context_line":"#include \"../../../contrib/loaders/flash/cc2538/cc2538_algo.inc\""},{"line_number":60,"context_line":"};"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":12,"id":"2720ef76_16ef8277","line":59,"in_reply_to":"c9204b9b_142abe86","updated":"2023-11-24 23:23:58.000000000","message":"Sorry, my comment wasn\u0027t clear.\nMy suggestion, here, was to remove the file cc2538.h and copy its content inside cc2538.c\nThe include of the file cc2538_algo.inc is correct, but it should be included by a file.c, not by a file.h.\nBy moving the content of cc2538.h inside cc2538.c it avoids declaring an array with all its content in a file.h","commit_id":"4f5b584555f15551b6d8d7ed283e369b0853d9c5"},{"author":{"_account_id":1000622,"name":"Jörg Wunsch","email":"openocd@uriah.heep.sax.de","username":"dl8dtl"},"change_message_id":"788a0773c3ee3a58ee876aff07c9f4ed014eb55e","unresolved":false,"context_lines":[{"line_number":56,"context_line":""},{"line_number":57,"context_line":"/* Flash helper algorithm */"},{"line_number":58,"context_line":"const uint8_t cc2538_algo[] \u003d {"},{"line_number":59,"context_line":"#include \"../../../contrib/loaders/flash/cc2538/cc2538_algo.inc\""},{"line_number":60,"context_line":"};"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":12,"id":"c9204b9b_142abe86","line":59,"in_reply_to":"cdbcd16f_d66e987b","updated":"2023-11-21 22:03:00.000000000","message":"Again, to me include array contents from .inc appears to be the status quo, so I did not change this.","commit_id":"4f5b584555f15551b6d8d7ed283e369b0853d9c5"},{"author":{"_account_id":1000622,"name":"Jörg Wunsch","email":"openocd@uriah.heep.sax.de","username":"dl8dtl"},"change_message_id":"0d11065e717a0e635ed2ff2f261794823d61104a","unresolved":true,"context_lines":[{"line_number":56,"context_line":""},{"line_number":57,"context_line":"/* Flash helper algorithm */"},{"line_number":58,"context_line":"const uint8_t cc2538_algo[] \u003d {"},{"line_number":59,"context_line":"#include \"../../../contrib/loaders/flash/cc2538/cc2538_algo.inc\""},{"line_number":60,"context_line":"};"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":12,"id":"77ccf6fb_0b17bf2a","line":59,"in_reply_to":"f853bed3_b2bf088d","updated":"2023-11-20 09:00:21.000000000","message":"Well, copy\u0026paste would not automatically include it if it ever changes (and it will change after I work on your above remarks ;-). I\u0027d prefer then to have the loader Makefile creating a fully self-contained, compilable source file with the binary loader.","commit_id":"4f5b584555f15551b6d8d7ed283e369b0853d9c5"}],"tcl/target/cc2538.cfg":[{"author":{"_account_id":1000853,"name":"zapb","display_name":"Marc Schink","email":"dev@zapb.de","username":"zapb"},"change_message_id":"e6314ab227a321d69e4e083150e0386c7cea05aa","unresolved":true,"context_lines":[{"line_number":1,"context_line":"# SPDX-License-Identifier: GPL-2.0-or-later"},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"# Config for Texas Instruments low power RF SoC CC2538"},{"line_number":4,"context_line":"# http://www.ti.com/lit/pdf/swru319"}],"source_content_type":"text/x-ttcn-cfg","patch_set":9,"id":"65a7ef40_1f78966e","side":"PARENT","line":1,"updated":"2023-11-19 11:39:46.000000000","message":"Why did you remove the license header?","commit_id":"9fcf33da8e09fb93a1f3f1eb0409e64a820698b4"},{"author":{"_account_id":1000622,"name":"Jörg Wunsch","email":"openocd@uriah.heep.sax.de","username":"dl8dtl"},"change_message_id":"60dd48b99cc70a0a5bf176e43b8d17a71313dcb0","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# SPDX-License-Identifier: GPL-2.0-or-later"},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"# Config for Texas Instruments low power RF SoC CC2538"},{"line_number":4,"context_line":"# http://www.ti.com/lit/pdf/swru319"}],"source_content_type":"text/x-ttcn-cfg","patch_set":9,"id":"ebc07a39_ab41caaf","side":"PARENT","line":1,"in_reply_to":"65a7ef40_1f78966e","updated":"2023-11-19 15:07:19.000000000","message":"Oops, that was an oversight. I only noticed they added a code snippet to that file but missed that they apparently derived that before the addition of the license headers.\nI\u0027ll fix that immediately.","commit_id":"9fcf33da8e09fb93a1f3f1eb0409e64a820698b4"}]}
