soft_flash.h 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. #ifndef _SOFT_FLASH_
  2. #define _SOFT_FLASH_
  3. #include "stdbool.h"
  4. #include "stm32f4xx_hal.h"
  5. /*内存分配
  6. stm32f405rgt6 12个扇区 4个16kb,1个64kb,7个128kb 一页2kb
  7. bootloader: 0 - 32kb 0x8000000 - 0x80008000
  8. 升级标志位: 32kb 0x80008000
  9. 参数信息: 48kb - 64kb 0x800C0000 - 0x80100000
  10. APP: 64kb - 1024kb 0x80100000 - 0x81000000 128kb 地址 0x8020000 //给EFT测试 更改3处
  11. */
  12. //升级标志位
  13. #define FLASH_UPDATE_ADDR (uint32_t)0x8008000
  14. //参数信息
  15. #define FLASH_PAR_ADDR (uint32_t)0x800C000
  16. //APP
  17. #define FLASH_APP_ADDR (uint32_t)0x8020000
  18. //STM32F405 芯片ID地址
  19. #define FLASH_ID_ADDR (uint32_t)0x1FFF7A10
  20. #define PAR_FALG 0xABCD
  21. extern bool write_flash_flag;
  22. #pragma pack(1)
  23. typedef struct
  24. {
  25. uint16_t flash_flag;
  26. int pmu_serial; //PMU序列号
  27. int uavtype; //机型
  28. int abnormal_outage_flag; //异常断电标志
  29. int voltage; //电压校准
  30. int chip_passid; //芯片ID加密码
  31. }flash_data;
  32. #pragma pack()
  33. extern flash_data stor_par;
  34. extern flash_data cur_par;
  35. extern bool Check_Chip_Verified;
  36. void ReadFlashNBtye(uint32_t ReadAddress, uint8_t *pdata, uint16_t size);
  37. HAL_StatusTypeDef WriteFlashNBtye(uint32_t ReadAddress, uint8_t *pdata, uint16_t size);
  38. void write_flash_function(void);
  39. void flash_init(void);
  40. int GetSectorFromAddress(uint32_t address);
  41. #endif