+/// Initializes the 'flash' subsystem drivers
+extern int flash_init_drivers(struct command_context_s *cmd_ctx);
+
+/**
+ * Erases @a length bytes in the @a target flash, starting at @a addr.
+ * @returns ERROR_OK if successful; otherwise, an error code.
+ */
+extern int flash_erase_address_range(struct target_s *target, uint32_t addr, uint32_t length);
+/**
+ * Writes @a image into the @a target flash. The @a written parameter
+ * will contain the
+ * @param target The target with the flash to be programmed.
+ * @param image The image that will be programmed to flash.
+ * @param written On return, contains the number of bytes written.
+ * @param erase If non-zero, indicates the flash driver should first
+ * erase the corresponding banks or sectors before programming.
+ * @returns ERROR_OK if successful; otherwise, an error code.
+ */
+extern int flash_write(struct target_s *target, struct image_s *image, uint32_t *written, int erase);
+/**
+ * Forces targets to re-examine their erase/protection state.
+ * This routine must be called when the system may modify the status.
+ */
+extern void flash_set_dirty(void);
+/// @returns The number of flash banks currently defined.
+extern int flash_get_bank_count(void);
+/**
+ * Provides default erased-bank check handling. Checks to see if
+ * the flash driver knows they are erased; if things look uncertain,
+ * this routine will call default_flash_mem_blank_check() to confirm.
+ * @returns ERROR_OK if successful; otherwise, an error code.
+ */
+extern int default_flash_blank_check(struct flash_bank_s *bank);
+/**
+ * Provides a default blank flash memory check. Ensures the contents
+ * of the given bank have truly been erased.
+ * @param bank The flash bank.
+ * @returns ERROR_OK if successful; otherwise, an error code.
+ */
+extern int default_flash_mem_blank_check(struct flash_bank_s *bank);