First of all, overall I think the code looks good!
Some nit-picking below.
The OpenOCD error handling is modeled upon exception handling, report error
in place and then just propagate errors (exceptions) without changing the return
value.
1. Switch to LOG_ERROR.
+FLASH_BANK_COMMAND_HANDLER(kinetis_flash_bank_command)
+{
+ if (CMD_ARGC < 6) {
+ LOG_WARNING("incomplete flash_bank kinetis configuration %d",
+ CMD_ARGC);
+ return ERROR_FLASH_OPERATION_FAILED;
+ }
2. Just return LOG_ERROR()
+static int kinetis_protect(struct flash_bank *bank, int set, int first,
+ int last)
+{
+ struct flash_bank *master_bank = kinetis_get_master_bank(bank);
+
+ LOG_WARNING("kinetis_protect not supported yet");
+
+ if (bank->target->state != TARGET_HALTED) {
+ LOG_ERROR("Target not halted");
+ return ERROR_TARGET_NOT_HALTED;
+ }
+
+ if (master_bank == NULL) {
+ return ERROR_FLASH_OPERATION_FAILED;
+ }
+
+ return ERROR_OK;
+}
3. Modify to return error as primary return value and pointer in
secondary return
value, then just propagate the return value unchanged upon error.
+static struct flash_bank *kinetis_get_master_bank(struct flash_bank *bank)
4. This fn does not propagate failure:
+static void kinetis_update_bank_info(struct flash_bank *bank)
+{
+ struct flash_bank *master_bank = kinetis_get_master_bank(bank);
+
+ if (master_bank == NULL) {
+ return;
+ }
+
5. propagate (just return) the error code, do not change it:
+ if (kinetis_ftfl_command(bank, w0, w1, w2) != ERROR_OK) {
+ return ERROR_FLASH_OPERATION_FAILED;
+ }
+
+
--
Ø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