236 lines
7.2 KiB
C
236 lines
7.2 KiB
C
|
|
/*
|
|||
|
|
* check_fun.c
|
|||
|
|
*
|
|||
|
|
* Created on: Nov 8, 2025
|
|||
|
|
* Author: cc
|
|||
|
|
*/
|
|||
|
|
|
|||
|
|
#include "includes.h"
|
|||
|
|
|
|||
|
|
/*******************************************************************************
|
|||
|
|
* Function Name : Log_CheckSum
|
|||
|
|
* Description : <EFBFBD><EFBFBD>У<EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݴ<EFBFBD>SRAM<EFBFBD>ж<EFBFBD>ȡ
|
|||
|
|
*******************************************************************************/
|
|||
|
|
__attribute__((section(".non_0_wait"))) uint8_t Log_CheckSum(uint32_t addr,uint8_t len)
|
|||
|
|
{
|
|||
|
|
uint8_t data_sum = 0;
|
|||
|
|
for(uint8_t i = 0;i<len;i++)
|
|||
|
|
{
|
|||
|
|
data_sum += SRAM_Read_Byte(addr+i);
|
|||
|
|
}
|
|||
|
|
return ~data_sum;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/*******************************************************************************
|
|||
|
|
* Function Name : Data_CheckSum
|
|||
|
|
* Description : <EFBFBD><EFBFBD>У<EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD>
|
|||
|
|
*******************************************************************************/
|
|||
|
|
__attribute__((section(".non_0_wait"))) uint8_t Data_CheckSum(uint8_t* data,uint16_t len)
|
|||
|
|
{
|
|||
|
|
uint8_t data_sum = 0;
|
|||
|
|
for(uint16_t i = 0;i<len;i++)
|
|||
|
|
{
|
|||
|
|
data_sum += data[i];
|
|||
|
|
}
|
|||
|
|
return ~data_sum;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/*******************************************************************************
|
|||
|
|
* Function Name : CheckSum_Overlook_Check
|
|||
|
|
* Description : <EFBFBD><EFBFBD>У<EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD>У<EFBFBD><EFBFBD><EFBFBD>ֱ<EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
* input: data: <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD>
|
|||
|
|
len <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܳ<EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
check_id: У<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>±<EFBFBD>
|
|||
|
|
*******************************************************************************/
|
|||
|
|
__attribute__((section(".non_0_wait"))) uint8_t CheckSum_Overlook_Check(uint8_t *data, uint16_t len, uint16_t check_id)
|
|||
|
|
{
|
|||
|
|
uint8_t data_sum = 0;
|
|||
|
|
|
|||
|
|
for(uint16_t i = 0;i<len;i++)
|
|||
|
|
{
|
|||
|
|
if(check_id != i) data_sum += data[i];
|
|||
|
|
}
|
|||
|
|
return ~data_sum;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/*******************************************************************************
|
|||
|
|
* Function Name : NetCRC16
|
|||
|
|
* Description : CRCУ<EFBFBD><EFBFBD> - <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֽ<EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
*******************************************************************************/
|
|||
|
|
__attribute__((section(".non_0_wait"))) void NetCRC16(uint8_t *aStr ,uint16_t len)
|
|||
|
|
{
|
|||
|
|
uint16_t alen = len-2; //CRC16
|
|||
|
|
uint16_t xda , xdapoly ;
|
|||
|
|
uint16_t i,j, xdabit ;
|
|||
|
|
xda = 0xFFFF ;
|
|||
|
|
xdapoly = 0xA001 ; // (X**16 + X**15 + X**2 + 1)
|
|||
|
|
for(i=0;i<alen;i++)
|
|||
|
|
{
|
|||
|
|
xda ^= aStr[i] ;
|
|||
|
|
for(j=0;j<8;j++)
|
|||
|
|
{
|
|||
|
|
xdabit = (uint8_t )(xda & 0x01) ;
|
|||
|
|
xda >>= 1 ;
|
|||
|
|
if( xdabit ) xda ^= xdapoly ;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
aStr[alen] = (uint8_t)(xda & 0xFF) ;
|
|||
|
|
aStr[alen+1] = (uint8_t)(xda>>8) ;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/*******************************************************************************
|
|||
|
|
* Function Name : NetCRC16_2
|
|||
|
|
* Description : CRCУ<EFBFBD><EFBFBD> - <EFBFBD><EFBFBD>ȡSRAM<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
* Input :
|
|||
|
|
aStr : <EFBFBD><EFBFBD>ҪУ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ
|
|||
|
|
len : <EFBFBD><EFBFBD><EFBFBD>ݵij<EFBFBD><EFBFBD><EFBFBD> -- Flash<EFBFBD>е<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>У<EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>512Byte
|
|||
|
|
* Return : <EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD>У<EFBFBD><EFBFBD>ֵ
|
|||
|
|
*******************************************************************************/
|
|||
|
|
__attribute__((section(".non_0_wait"))) uint16_t NetCRC16_2(uint8_t *aStr ,uint16_t len)
|
|||
|
|
{
|
|||
|
|
uint16_t xda , xdapoly ;
|
|||
|
|
uint16_t i,j, xdabit ;
|
|||
|
|
xda = 0xFFFF ;
|
|||
|
|
xdapoly = 0xA001 ; // (X**16 + X**15 + X**2 + 1)
|
|||
|
|
for(i=0;i<len;i++)
|
|||
|
|
{
|
|||
|
|
xda ^= aStr[i] ;
|
|||
|
|
for(j=0;j<8;j++)
|
|||
|
|
{
|
|||
|
|
xdabit = (uint8_t )(xda & 0x01) ;
|
|||
|
|
xda >>= 1 ;
|
|||
|
|
if( xdabit ) xda ^= xdapoly ;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
return xda;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/*******************************************************************************
|
|||
|
|
* Function Name : NetCRC16_Data
|
|||
|
|
* Description : CRCУ<EFBFBD><EFBFBD> - CRC<EFBFBD>ڼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
* Input :
|
|||
|
|
aStr : <EFBFBD><EFBFBD>ҪУ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ
|
|||
|
|
len : <EFBFBD><EFBFBD><EFBFBD>ݵij<EFBFBD><EFBFBD><EFBFBD> -- Flash<EFBFBD>е<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>У<EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>512Byte
|
|||
|
|
crc_id <EFBFBD><EFBFBD>CRC<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>е<EFBFBD><EFBFBD>±<EFBFBD>λ<EFBFBD>ã<EFBFBD><EFBFBD>͵<EFBFBD>ַ<EFBFBD><EFBFBD>ǰ
|
|||
|
|
* Return : <EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD>У<EFBFBD><EFBFBD>ֵ
|
|||
|
|
*******************************************************************************/
|
|||
|
|
__attribute__((section(".non_0_wait"))) uint16_t NetCRC16_Data(uint8_t *aStr ,uint16_t len,uint16_t crc_id)
|
|||
|
|
{
|
|||
|
|
uint16_t xda , xdapoly ;
|
|||
|
|
uint16_t i,j, xdabit ;
|
|||
|
|
xda = 0xFFFF ;
|
|||
|
|
xdapoly = 0xA001 ; // (X**16 + X**15 + X**2 + 1)
|
|||
|
|
for(i=0;i<len;i++)
|
|||
|
|
{
|
|||
|
|
if((i == crc_id) || (i == (crc_id + 1)))
|
|||
|
|
{
|
|||
|
|
xda ^= 0x00;
|
|||
|
|
}else {
|
|||
|
|
xda ^= aStr[i];
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
for(j=0;j<8;j++)
|
|||
|
|
{
|
|||
|
|
xdabit = (uint8_t )(xda & 0x01) ;
|
|||
|
|
xda >>= 1 ;
|
|||
|
|
if( xdabit ) xda ^= xdapoly ;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
return xda;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/*******************************************************************************
|
|||
|
|
* Function Name : DoubleData_CheckSum
|
|||
|
|
* Description : <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>У<EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD>
|
|||
|
|
* Data1 <EFBFBD><EFBFBD><EFBFBD>ݰ<EFBFBD>1
|
|||
|
|
* Data1Len <EFBFBD><EFBFBD><EFBFBD>ݰ<EFBFBD>1<EFBFBD>ij<EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
* Data2 <EFBFBD><EFBFBD><EFBFBD>ݰ<EFBFBD>2
|
|||
|
|
* Data2Len <EFBFBD><EFBFBD><EFBFBD>ݰ<EFBFBD>2<EFBFBD>ij<EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
*******************************************************************************/
|
|||
|
|
__attribute__((section(".non_0_wait"))) uint8_t DoubleData_CheckSum(uint8_t *Data1, uint16_t Data1Len, uint8_t *Data2, uint16_t Data2Len)
|
|||
|
|
{
|
|||
|
|
uint8_t data_sum = 0;
|
|||
|
|
uint16_t i;
|
|||
|
|
|
|||
|
|
for(i = 0; i < Data1Len;i++)
|
|||
|
|
{
|
|||
|
|
data_sum += Data1[i];
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
for(i = 0; i < Data2Len; i++)
|
|||
|
|
{
|
|||
|
|
data_sum += Data2[i];
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
return ~data_sum;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/*******************************************************************************
|
|||
|
|
* Function Name : SOR_CRC
|
|||
|
|
* Description : <EFBFBD><EFBFBD>У<EFBFBD><EFBFBD>
|
|||
|
|
*******************************************************************************/
|
|||
|
|
__attribute__((section(".non_0_wait"))) uint8_t SOR_CRC(uint8_t *Data, uint8_t DataLen)
|
|||
|
|
{
|
|||
|
|
uint8_t i;
|
|||
|
|
uint8_t sor_data = 0;
|
|||
|
|
|
|||
|
|
for(i = 0; i < DataLen; i++)//i<><69><EFBFBD><EFBFBD>Ϊ0 <20><>Ҳ<EFBFBD><D2B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>1
|
|||
|
|
{
|
|||
|
|
sor_data = sor_data+Data[i];
|
|||
|
|
}
|
|||
|
|
return sor_data;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/*******************************************************************************
|
|||
|
|
* Function Name : DevAction_Data_Check
|
|||
|
|
* Description : <EFBFBD>豸<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>У<EFBFBD><EFBFBD>
|
|||
|
|
*******************************************************************************/
|
|||
|
|
__attribute__((section(".non_0_wait"))) uint8_t DeAction_Data_Check(uint32_t sram_addr)
|
|||
|
|
{
|
|||
|
|
uint16_t data_len = SRAM_Read_Word(sram_addr + sizeof(Dev_Action_Core) + sizeof(Dev_Action_Input) + sizeof(Dev_Action_Cond) + sizeof(Dev_Action_State) + 1);
|
|||
|
|
uint8_t data_sum = 0;
|
|||
|
|
uint8_t check_temp_buff[SRAM_DevAction_List_Size] = {0};
|
|||
|
|
|
|||
|
|
if(data_len > SRAM_DevAction_List_Size)
|
|||
|
|
{
|
|||
|
|
Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"<EFBFBD><EFBFBD>ǰ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>У<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>1<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǰ<EFBFBD><EFBFBD>ַ:%08X <20>洢<EFBFBD>ij<EFBFBD><C4B3>ȣ<EFBFBD>%04X",sram_addr, data_len);
|
|||
|
|
return 1;
|
|||
|
|
}
|
|||
|
|
memset(check_temp_buff,0,SRAM_DevAction_List_Size);
|
|||
|
|
|
|||
|
|
SRAM_DMA_Read_Buff(check_temp_buff,data_len,sram_addr);
|
|||
|
|
|
|||
|
|
for(uint16_t i = 0;i<data_len;i++)
|
|||
|
|
{
|
|||
|
|
data_sum += check_temp_buff[i];
|
|||
|
|
}
|
|||
|
|
return ~data_sum;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/*******************************************************************************
|
|||
|
|
* Function Name : Dev_CheckSum
|
|||
|
|
* Description : <EFBFBD><EFBFBD>У<EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݴ<EFBFBD>SRAM<EFBFBD>ж<EFBFBD>ȡ
|
|||
|
|
*******************************************************************************/
|
|||
|
|
__attribute__((section(".non_0_wait"))) uint8_t DevAction_CheckSum(uint32_t addr,uint16_t len)
|
|||
|
|
{
|
|||
|
|
uint8_t data_sum = 0;
|
|||
|
|
uint8_t check_temp_buff[SRAM_DevAction_List_Size];// = {0};
|
|||
|
|
if(len > SRAM_DevAction_List_Size)
|
|||
|
|
{
|
|||
|
|
Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"<EFBFBD><EFBFBD>ǰ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>У<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>2<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǰ<EFBFBD><EFBFBD>ַ:%08X <20>洢<EFBFBD>ij<EFBFBD><C4B3>ȣ<EFBFBD>%04X",addr, len);
|
|||
|
|
return 1;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
memset(check_temp_buff,0,SRAM_DevAction_List_Size);
|
|||
|
|
SRAM_DMA_Read_Buff(check_temp_buff,len,addr);
|
|||
|
|
|
|||
|
|
for(uint16_t i = 0;i<len;i++)
|
|||
|
|
{
|
|||
|
|
data_sum += check_temp_buff[i];
|
|||
|
|
}
|
|||
|
|
return ~data_sum;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|