//----------------------------------------------------------------
// Master TAP instructions from MC56F8000RM.pdf
//----------------------------------------------------------------
-#define MASTER_TAP_CMD_BYPASS 0xFF
-#define MASTER_TAP_CMD_IDCODE 0x02
-#define MASTER_TAP_CMD_TLM_SEL 0x05
-#define MASTER_TAP_CMD_FLASH_ERASE 0x08
+#define MASTER_TAP_CMD_BYPASS 0xF
+#define MASTER_TAP_CMD_IDCODE 0x2
+#define MASTER_TAP_CMD_TLM_SEL 0x5
+#define MASTER_TAP_CMD_FLASH_ERASE 0x8
//----------------------------------------------------------------
//----------------------------------------------------------------
//TODO
uint32_t stored_pc;
int flush;
-}context;
+};
+
+extern struct dsp5680xx_common dsp5680xx_context;
static inline struct dsp5680xx_common *target_to_dsp5680xx(struct target *target){
return target->arch_info;
/**
* Writes to flash memory.
* Does not check if flash is erased, it's up to the user to erase the flash before running this function.
+ * The flashing algorithm runs from RAM, reading from a register to which this function writes to. The algorithm is open loop, there is no control to verify that the FM read the register before writing the next data. A closed loop approach was much slower, and the current implementation does not fail, and if it did the crc check would detect it, allowing to flash again.
*
* @param target
* @param buffer
- * @param address
+ * @param address Word addressing.
* @param count In bytes.
+ * @param verify_flash Execute a CRC check after flashing.
*
* @return
*/
-int dsp5680xx_f_wr(struct target * target, uint8_t *buffer, uint32_t address, uint32_t count);
+int dsp5680xx_f_wr(struct target * target, uint8_t *buffer, uint32_t address, uint32_t count, int is_flash_lock);
/**
* The FM has the funcionality of checking if the flash array is erased. This function executes it. It does not support individual sector analysis.
int dsp5680xx_f_erase(struct target * target, int first, int last);
/**
- * Reads the memory mapped protection register.
+ * Reads the memory mapped protection register. A 1 implies the sector is protected, a 0 implies the sector is not protected.
*
* @param target
* @param protected Data read from the protection register.