12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 |
- #include "ota_message.h"
- #include "gd32f10x.h"
- #include "w25q32.h"
- #include <stdio.h>
- static OTA_MESSAGE ota_message = {0};
- void clear_ota_message_config_block(void);
- void write_ota_message_to_flash(uint32_t *data, int size){
- uint8_t *pdata = (uint8_t *)data;
- W25Q32_PageWrite(pdata,256*OTA_EVENT_BLOCK);//写在第二扇区的第一页中
- }
- /*
- * 函数名:save_ota_message_config_params(OTA_MESSAGE *params)
- * 输入参数:无
- * 输出参数:无
- * 返回值:无
- * 函数作用:保存ota事件的信息
- */
- int save_ota_message_config_params(OTA_MESSAGE *params)
- {
- if(params == NULL)
- return -1;
- memset(&ota_message, 0, sizeof(OTA_MESSAGE));
- memcpy(&ota_message, params, sizeof(OTA_MESSAGE));
- clear_ota_message_config_block();
- write_ota_message_to_flash((uint32_t *)&ota_message,sizeof(OTA_MESSAGE));
- return 0;
- }
- /*
- * 函数名:load_config_params(CONFIG_PARAMS *params)
- * 输入参数:无
- * 输出参数:无
- * 返回值:ota升级标志是否有效 0有效 -1无效
- * 函数作用:从w25q32中加载ota信息
- */
- int load_ota_message_config_params()
- {
- memset(&ota_message, 0, sizeof(OTA_MESSAGE));//清空原先数据
- W25Q32_Read((uint8_t *)&ota_message, OTA_EVENT_BLOCK*64*1024, sizeof(OTA_MESSAGE)); //从W25Q32中读取结构体数据
- uint32_t *ptr=(uint32_t *)&ota_message;
- if(*ptr == 1U)
- {
- return 0;
- }
- else return -1;
- }
- OTA_MESSAGE *get_config_params()
- {
- return &ota_message;
- }
- /*
- * 函数名:void clear_ota_message_config_block(void)
- * 输入参数:无
- * 输出参数:无
- * 返回值:无
- * 函数作用:清除block内包含的ota事件信息
- */
- void clear_ota_message_config_block(void)
- {
- W25Q32_Erase64K(OTA_EVENT_BLOCK);//擦除一块区域的大小
- }
|