|
|
#include "OTA_H.h"
|
|
|
#include <string.h>
|
|
|
#include "type.h"
|
|
|
#include "eflash_drv.h"
|
|
|
#include "type.h"
|
|
|
#include <stdio.h>
|
|
|
|
|
|
|
|
|
|
|
|
extern UINT32 g_sys_clk;
|
|
|
|
|
|
unsigned char ota_lt_buf[OTA_LT_LENGTH];
|
|
|
|
|
|
|
|
|
|
|
|
//接收模组传输数据 储存模组传输的数据
|
|
|
int OTA_APP_MCU(uint8_t *data, unsigned int len, unsigned int offset)
|
|
|
{
|
|
|
|
|
|
int data_offset = 0;
|
|
|
// char buf[3 + OTA_MCU_DATA_LENGTH] = {0};
|
|
|
// for(int i = 0; i < pkg_quitient; i++){
|
|
|
/****************************************接收数据**********************************/
|
|
|
/* if(firmware_buff_index > 0){
|
|
|
memcpy((void *)&buf[3], (void *)&firmware_buff[0], firmware_buff_index);
|
|
|
memcpy((void *)&buf[3 + firmware_buff_index], (void *)data, (HLT_OTA_FIRMWARE_PACKAGE_LEN - firmware_buff_index));
|
|
|
data_offset += (HLT_OTA_FIRMWARE_PACKAGE_LEN - firmware_buff_index);
|
|
|
firmware_buff_index = 0;
|
|
|
}else{
|
|
|
memcpy((void *)&buf[3], (void *)(data + data_offset), OTA_MCU_DATA_LENGTH);
|
|
|
data_offset += HLT_OTA_FIRMWARE_PACKAGE_LEN;
|
|
|
}
|
|
|
|
|
|
buf[0] = (firmware_pkg_seq >> 8) & 0xFF;
|
|
|
buf[1] = firmware_pkg_seq++ & 0xFF;
|
|
|
buf[2] = OTA_MCU_DATA_LENGTH;*/
|
|
|
/************************接收完数据;以及封装好包**************************************************/
|
|
|
/* while(hlt_message_num_items() > 0){
|
|
|
hlt_os_sleep_ms(10);
|
|
|
}
|
|
|
|
|
|
send_commond_firmware_content_to_mcu((3 + HLT_OTA_FIRMWARE_PACKAGE_LEN), buf);
|
|
|
|
|
|
}
|
|
|
*/
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
|
|
|
|
//将数据写入Flash
|
|
|
|
|
|
|
|
|
|
|
|
//开机后 将flash的数据拷贝至app区域 app(0x800A000)
|
|
|
|
|
|
|
|
|
|
|
|
//写flash
|
|
|
|
|
|
|
|
|
unsigned int DATA[5] = {0x12345678 };
|
|
|
unsigned int DATA1[5] = {0 };
|
|
|
void SaveData(void)
|
|
|
{
|
|
|
unsigned char buff[20] = {0x12,0x34,0x56,0x78};
|
|
|
/*
|
|
|
memcpy(&buff[0], (void *)DATA[0], 4);
|
|
|
|
|
|
memcpy(&buff[4], (void *)DATA[1], 4);
|
|
|
memcpy(&buff[8], (void *)DATA[2], 4);
|
|
|
memcpy(&buff[12], (void *)DATA[3], 4);
|
|
|
memcpy(&buff[16], (void *)DATA[4], 4);
|
|
|
*/
|
|
|
EFLASH_Init(g_sys_clk / 1000);
|
|
|
EFLASH_SetWritePermission();
|
|
|
unsigned char reVal = EFLASH_Write(flh_sAddr1, buff, 4);
|
|
|
EFLASH_ClrWritePermission();
|
|
|
printf("reVal = %d \r\n",reVal);
|
|
|
printf("TRUE = %d \r\n",TRUE);
|
|
|
}
|
|
|
|
|
|
|
|
|
//读flash
|
|
|
|
|
|
unsigned char GetAdjdata(void)
|
|
|
{
|
|
|
unsigned char i, buff[20] = {0};
|
|
|
for (i = 0; i < 17; i++)
|
|
|
{
|
|
|
// printf("hhh%dhhhh\r\n",(UINT8)(0x0800A000));
|
|
|
buff[i] = EFLASH_ByteRead(flh_sAddr1+i);//EFLASH_ByteRead(0x00001000); (unsigned char)(*(volatile unsigned int *)(0x0800A000));
|
|
|
}
|
|
|
memcpy((void *)DATA[0], &buff[0], 4);
|
|
|
|
|
|
memcpy((void *)DATA[1], &buff[4], 4);
|
|
|
memcpy((void *)DATA[2], &buff[8], 4);
|
|
|
memcpy((void *)DATA[3], &buff[12], 4);
|
|
|
memcpy((void *)DATA[4], &buff[16], 4);
|
|
|
for (i = 0; i < 4; i++)
|
|
|
printf(" buff[%d] = %x\r\n",i,DATA[i]);
|
|
|
return 1;
|
|
|
}
|
|
|
|
|
|
|
|
|
unsigned int ota_lt(unsigned int addr , unsigned char * ota_mcu_buf , unsigned int length)
|
|
|
{
|
|
|
|
|
|
//拆包数据!!!
|
|
|
// analysis_ota_package();
|
|
|
EFLASH_Init(g_sys_clk / 1000);
|
|
|
EFLASH_SetWritePermission();
|
|
|
unsigned char reVal = EFLASH_Write(addr, ota_mcu_buf, length);
|
|
|
EFLASH_ClrWritePermission();
|
|
|
|
|
|
return 0;
|
|
|
}
|