25개 이상의 토픽을 선택하실 수 없습니다. Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

116 lines
2.8 KiB

#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;
}