1 #ifndef STLINK_TOOLS_FLASH_H_ 2 #define STLINK_TOOLS_FLASH_H_ 3 4 #include <stdint.h> 5 6 #include <stlink.h> 7 8 #define DEBUG_LOG_LEVEL 100 9 #define STND_LOG_LEVEL 50 10 #define ENABLE_OPT 1 11 12 enum flash_cmd {FLASH_CMD_NONE = 0, FLASH_CMD_WRITE = 1, FLASH_CMD_READ = 2, FLASH_CMD_ERASE = 3, CMD_RESET = 4}; 13 enum flash_format {FLASH_FORMAT_BINARY = 0, FLASH_FORMAT_IHEX = 1}; 14 enum flash_area {FLASH_MAIN_MEMORY = 0, FLASH_SYSTEM_MEMORY = 1, FLASH_OTP = 2, FLASH_OPTION_BYTES = 3, FLASH_OPTION_BYTES_BOOT_ADD = 4, FLASH_OPTCR = 5, FLASH_OPTCR1 = 6}; 15 struct flash_opts { 16 enum flash_cmd cmd; 17 uint8_t serial[STLINK_SERIAL_BUFFER_SIZE]; 18 const char* filename; 19 stm32_addr_t addr; 20 size_t size; 21 int reset; 22 int log_level; 23 enum flash_format format; 24 enum flash_area area; 25 uint32_t val; 26 size_t flash_size; // --flash=n[k][m] 27 int opt; // enable empty tail data drop optimization 28 int freq; // --freq=n[k][m] frequency of JTAG/SWD 29 enum connect_type connect; 30 }; 31 32 #define FLASH_OPTS_INITIALIZER {0, { 0 }, NULL, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} 33 34 int flash_get_opts(struct flash_opts* o, int ac, char** av); 35 36 #endif // STLINK_FLASH_H_ 37