Hi,
the code looks very good! Nit-picking below.
Please address the comments below and add a commit comment.
1. Make changes.
2. Create commit & patch
git add .
git commit
# write comment
git format-patch HEAD^
=> email patch w/commit comments.
Read openocd/HACKING for more info.
Thanks!
1. Switch to LOG_ERROR
+ struct stm32lx_flash_bank *stm32lx_info;
+ if (CMD_ARGC < 6)
+ {
+ LOG_WARNING("incomplete flash_bank stm32lx configuration");
+ return ERROR_FLASH_BANK_INVALID;
+ }
2. Delete unimplemented code, leave only a comment. Mass erase is
notoriously hard
to test based upon feedback on the list so we want this seriously
tested before we want
to introduce extra code-paths.
+ // Mass erase does not work yet
+ if (0)
+ {
+ if ((first == 0) && (last == bank->num_sectors - 1))
+ {
+ // Erase all if required
+ return stm32lx_mass_erase(bank);
+ }
+ }
+
3. Return error message or at least add comment that this is a
successful no-op always.
+static int stm32lx_protect(struct flash_bank *bank, int set, int first,
+ int last)
+{
+ return ERROR_OK;
+}
+
4. Remove "err:"
+ LOG_ERROR("err: failed to unlock program memory");
+ return retval;
+ }
5. add timeout
stm32lx_wait_until_bsy_clear
6. add memory allocation check.
+ // allocate a buffer to read memory
+ uint8_t *buffer = malloc(buffer_size);
7. reformat to use multiple lines as is done elsewhere in the code.
+static const struct command_registration stm32lx_command_handlers[] =
+{
+{ .name = "stm32lx", .mode = COMMAND_ANY, .help =
+"stm32lx flash command group", .chain =
+stm32lx_exec_command_handlers, },
+COMMAND_REGISTRATION_DONE };
8. Remove these comments, they add no information:
+ // auto probe command
+ .auto_probe = stm32lx_auto_probe,
9. Remove or elaborate on these comments. Perhaps better write a short
paragraph instead of these inline comments. The comments say nothing
that the code doesn't already.
+// prototypes
+static int stm32lx_unlock_pecr(struct flash_bank *bank)
+{
+ // Write key2
+ retval = target_write_u32(target, FLASH_PEKEYR, PEKEY2);
+ // Then unlock the program memory, write key1
+ retval = target_write_u32(target, FLASH_PRGKEYR, PRGKEY1);
9. Just for information. You are here adding two errors, first
target_write_memory()
reports an error, then you amend that information with a bit of
context, which is
OK if that's what you intended.
+ retval = target_read_u32(target, FLASH_OBR, ®32);
+ if (retval != ERROR_OK)
+ {
+ LOG_ERROR("stm32lx_read_rdp: failed to read FLASH_OBR");
10. Remove this error message? Change to LOG_DEBUG()? Certainly remove
"stm32lx_write_rdp:" because LOG_ERROR() adds that info already.
+ retval = stm32lx_unlock_option_byte(bank);
+ if (retval != ERROR_OK)
+ {
+ LOG_ERROR("stm32lx_write_rdp: failed to unlock option byte");
+ return retval;
--
Øyvind Harboe - Can Zylin Consulting help on your project?
US toll free 1-866-980-3434
http://www.zylin.com/
_______________________________________________
Openocd-development mailing list
[email protected]
https://lists.berlios.de/mailman/listinfo/openocd-development