123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778 |
- /*
- * srm32sprog.h
- *
- * Created on: Apr 12, 2016
- * Author: jesstr
- */
- #ifndef SRM32SPROG_H_
- #define SRM32SPROG_H_
- #include "stm32f4xx_usart.h"
- #include "gpio_io.h"
- #include "serial.h"
- #include "sys/types.h"
- #define MAX_CONNECT_RETRIES 3
- #define DEFAULT_BAUD 57600
- #define MAX_BLOCK_SIZE 256
- static const uint8_t ACK = 0x79;
- typedef enum {
- CMD_GET_VERSION = 0x00,
- CMD_GET_READ_STATUS = 0x01,
- CMD_GET_ID = 0x02,
- CMD_READ_MEM = 0x11,
- CMD_GO = 0x21,
- CMD_WRITE_MEM = 0x31,
- CMD_ERASE = 0x43,
- CMD_EXTENDED_ERASE = 0x44,
- CMD_WRITE_PROTECT = 0x63,
- CMD_WRITE_UNPROTECT = 0x73,
- CMD_READ_PROTECT = 0x82,
- CMD_READ_UNPROTECT = 0x92
- } Command;
- #define NUM_COMMANDS_KNOWN 12
- enum {
- ID_LOW_DENSITY = 0x0412,
- ID_MED_DENSITY = 0x0410,
- ID_HI_DENSITY = 0x0414,
- ID_CONNECTIVITY = 0x0418,
- ID_VALUE = 0x0420,
- ID_HI_DENSITY_VALUE = 0x0428,
- ID_XL_DENSITY = 0x0430,
- ID_MED_DENSITY_ULTRA_LOW_POWER = 0x0436,
- ID_HI_DENSITY_ULTRA_LOW_POWER = 0x0416
- };
- typedef struct {
- uint8_t bootloaderVer;
- bool commands[NUM_COMMANDS_KNOWN];
- uint32_t flashBeginAddr;
- uint32_t flashEndAddr;
- int flashPagesPerSector;
- size_t flashPageSize;
- useconds_t eraseDelay;
- useconds_t writeDelay;
- } DeviceParameters;
- int stm32sprog_test(void);
- void usleep(uint32_t us);
- void stmRebootForFlash(void);
- void stmReboot(void);
- uint32_t stmCalcFlashCrc(void (* periodic_handler)(uint8_t));
- uint32_t stmReadFlashCrc(void);
- bool stmConnect(void);
- bool stmGetDevParams(void);
- bool stmEraseFlash(void);
- bool stmEraseFW(void);
- bool stmWriteBlock(uint32_t addr, const uint8_t *buff, size_t size);
- void stmProg( uint32_t* addr, uint8_t * ptr, uint32_t len);
- #endif /* SRM32SPROG_H_ */
|