myBootloader.h 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. #ifndef __myBootloader_H
  2. #define __myBootloader_H
  3. #include "stm32f10x.h"
  4. #include "stdbool.h"
  5. // 0x08004000~0x0800FFFF的空间为APP使用
  6. #define APP_START_ADDR 0x0800C800
  7. // IAP地址最后一个Page放Flag
  8. #define IAP_UPGRADE_FLAG_ADDR (APP_START_ADDR-2048)
  9. // 用户的APP code 收到上位机 0x5AA5 命令后, 会设置此旗标, 表示后续将进行APP更新, 详见应用指南
  10. #define IAP_UPGRADE_FLAG 0x41544B38
  11. #define SRAM_SIZE 48
  12. typedef void (*iapfun)(void); //定义一个函数类型的参数.
  13. typedef struct{
  14. uint8_t cmd_head;
  15. uint8_t cmd_addr[4];
  16. uint8_t cmd_buf[2248];
  17. uint8_t cmd_check;
  18. }CMD_DATA_STRUCT;
  19. typedef enum{
  20. CMD_DATA_IDLE,
  21. CMD_DATA_ADDR,
  22. CMD_DATA_BUF,
  23. CMD_DATA_CHACK,
  24. CMD_DATA_DONE,
  25. CMD_DATA_ERR,
  26. }CMD_DATA_STEP;
  27. typedef enum{
  28. CMD_CTR_IDLE,
  29. CMD_CTR_INIT,
  30. CMD_CTR_DONE,
  31. CMD_CTR_ERR,
  32. CMD_CTR_APP,
  33. }CMD_CTR_STEP;
  34. typedef enum{
  35. CMD_PRO_IDLE,
  36. CMD_PRO_START,
  37. CMD_PRO_GET_INIT,
  38. CMD_PRO_GET_OFFSET_ADDR,
  39. CMD_PRO_RECV_ING,
  40. CMD_PRO_WRITE_2KBYTE,
  41. CMD_PRO_CRC_ERROR,
  42. CMD_PRO_ADDR_ERROR,
  43. CMD_PRO_BOOT_DONE,
  44. }CMD_PRO_STA;
  45. typedef enum{
  46. UPDATE_PRE,
  47. UPDATE_CLEAR_FLAG,
  48. UPDATE_ING,
  49. UPDATE_DONE,
  50. }UPDATE_STATUS_te;
  51. void IAP_Load_APP(uint32_t appxaddr);
  52. uint8_t decodeBootLoadData(uint8_t *src, uint16_t len);
  53. void myFlash_setBootloadFlag(void);
  54. void myFlash_clearBootloadFlag(void);
  55. bool myFlash_checkFlag(void);
  56. #endif