feat:新增TFTP IAP升级功能

修改事项:
1、新增TFTP IAP升级功能,只是代码移植完毕,没有测试使用
2、代码空间编译优化,零等待区域空间已满,而应用层代码已全部挪移到非零等待区域中,但还是会增加零等待区的空间占用。 待优化
This commit is contained in:
caocong
2025-12-10 14:06:45 +08:00
parent d2d8800788
commit cc8783e9f8
22 changed files with 1611 additions and 65 deletions

View File

@@ -605,8 +605,8 @@ __attribute__((section(".non_0_wait"))) uint8_t Udp_Internal_Read_MCU_System_Sen
SRAM_DMA_Read_Buff(&Global_Large_Buff[BLV_UDP_HEAD_LEN+121],4,SRAM_Register_Start_ADDRESS + Register_MandateUTC_OFFSET);
SRAM_DMA_Read_Buff(&Global_Large_Buff[BLV_UDP_HEAD_LEN+125],4,SRAM_Register_Start_ADDRESS + Register_MandateExpiresTime_OFFSET);
SRAM_DMA_Read_Buff(&Global_Large_Buff[BLV_UDP_HEAD_LEN+129],128,SRAM_Register_Start_ADDRESS + Register_RoomNumNote_OFFSET);
Flash_Read(&Global_Large_Buff[BLV_UDP_HEAD_LEN+257],64,FLASH_MCU_Model_Revision_ADDRESS);
Flash_Read(&Global_Large_Buff[BLV_UDP_HEAD_LEN+321],64,FLASH_MCU_Control_Revision_ADDRESS);
Flash_Read(&Global_Large_Buff[BLV_UDP_HEAD_LEN+257],64,SPIFLASH_MCU_Model_Revision_ADDRESS);
Flash_Read(&Global_Large_Buff[BLV_UDP_HEAD_LEN+321],64,SPIFLASH_MCU_Control_Revision_ADDRESS);
//temp_rev = Read_LogicFile_Information(0x04,(uint8_t *)&temp_data); //<2F><>ѯLOGIC<49>ļ<EFBFBD><C4BC>еľƵ<C4BE><C6B5><EFBFBD><EFBFBD><EFBFBD> - 32Byte
if(temp_rev == 0x00)
@@ -1162,7 +1162,6 @@ __attribute__((section(".non_0_wait"))) uint8_t Udp_Internal_SeriaNet_Uploading(
NetCRC16(&Global_Large_Buff[0],data_len);
WCHNET_SocketUdpSendTo(g_netinfo.SocketId[SocketIdnex_BLVSeriver], &Global_Large_Buff[0], &data_len, pc_ip, pc_port);
return 0x00;
}
@@ -1189,11 +1188,10 @@ __attribute__((section(".non_0_wait"))) uint8_t Udp_Internal_SeriaNet_Uploading2
if((server_info.frame_no < 0xfffe) && (server_info.frame_no >= 0x8000))
{
server_info.frame_no++;
}
else
{
}else{
server_info.frame_no = 0x8000;
}
/*<2A><>ȡPC IP<49><50>ַ*/
SRAM_DMA_Read_Buff(pc_ip,4,SRAM_IAP_IP_ADDRESS);
pc_port = SRAM_Read_Word(SRAM_IAP_PORT_ADDRESS);
@@ -1276,7 +1274,7 @@ __attribute__((section(".non_0_wait"))) void BLV_UDP_Comm_Task(void)
{
udp_state_tick = SysTick_1ms;
if(server_info.init_flag == 0x00) return ; //DNS<4E><53><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD><CAA7>ֱ<EFBFBD><D6B1><EFBFBD>˳<EFBFBD>
if( (WCHNET_Get_PHY_Linked_Status() == 0x01) || (server_info.init_flag == 0x00) ) return ; //DNS<4E><53><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD><CAA7>ֱ<EFBFBD><D6B1><EFBFBD>˳<EFBFBD>
/*<2A><><EFBFBD>Ҳ<EFBFBD><D2B2><EFBFBD>TFTP<54><50><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
// if(IAPVarTypeStruct_Ptr != NULL)

View File

@@ -90,4 +90,6 @@ uint8_t Udp_Internal_SeriaNet_Uploading(uint8_t port,uint32_t baud,uint32_t data
uint8_t Udp_Internal_SeriaNet_Uploading2(uint8_t port,uint32_t baud,uint8_t* data, uint16_t DataLen);
uint8_t Udp_Internal_SeriaNet_Response_Timeout(void);
void BLV_UDP_Comm_Task(void);
#endif /* MCU_DRIVER_INC_BLV_NETCOMM_FUNCTION_H_ */

View File

@@ -10,6 +10,10 @@
/*APP<50><50><EFBFBD>ݼ<EFBFBD><DDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> - <20><>ʼ*/
#define APPFlag_UartUpgrade_Reset 0xBBC1 //APP<50><50><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־λ
#define APP_BLOCK_MAX 460 //APP<50><50><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ460<36><30>һ<EFBFBD><D2BB> -> 512Byte
#define CONFIG_BLOCK_MAX 850 //<2F><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ850<35><30>һ<EFBFBD><D2BB> -> 512Byte
#define App_CRC_Size 2048 //App CRC У<><D0A3><EFBFBD><EFBFBD><EFBFBD>ݴ<EFBFBD>С
#define SPIFLASH_APP_Start_Addr 0x00000000
@@ -22,14 +26,16 @@
#define SPIFLASH_APP_Data_End_Addr 0x0006FFFF
#define SPIFLASH_APP_End_Addr 0x0006FFFF
/*APP<50><50><EFBFBD>ݼ<EFBFBD><DDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> - <20><><EFBFBD><EFBFBD>*/
#define FLASH_Register_Start_ADDRESS 0x00088000 //<2F><>Ŀ<EFBFBD><C4BF><EFBFBD><EFBFBD><EFBFBD>Ĵ<EFBFBD><C4B4><EFBFBD>ֵ - <20><>ʼ<EFBFBD><CABC>ַ
#define FLASH_Register_End_ADDRESS 0x000887FF //<2F><>Ŀ<EFBFBD><C4BF><EFBFBD><EFBFBD><EFBFBD>Ĵ<EFBFBD><C4B4><EFBFBD>ֵ - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ
#define SPIFLASH_Register_Start_ADDRESS 0x00088000 //<2F><>Ŀ<EFBFBD><C4BF><EFBFBD><EFBFBD><EFBFBD>Ĵ<EFBFBD><C4B4><EFBFBD>ֵ - <20><>ʼ<EFBFBD><CABC>ַ
#define SPIFLASH_Register_End_ADDRESS 0x000887FF //<2F><>Ŀ<EFBFBD><C4BF><EFBFBD><EFBFBD><EFBFBD>Ĵ<EFBFBD><C4B4><EFBFBD>ֵ - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ
#define FLASH_MCU_Model_Revision_ADDRESS 0x0008A000 //MCU<43><EFBFBD>ͺ<EFBFBD> 64Byte
#define FLASH_MCU_Control_Revision_ADDRESS 0x0008A040 //MCU<43>пذ汾<D8B0>ͺ<EFBFBD> 64Byte
#define SPIFLASH_MCU_Model_Revision_ADDRESS 0x0008A000 //MCU<43><EFBFBD>ͺ<EFBFBD> 64Byte
#define SPIFLASH_MCU_Control_Revision_ADDRESS 0x0008A040 //MCU<43>пذ汾<D8B0>ͺ<EFBFBD> 64Byte
/*<2A><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/

121
MCU_Driver/inc/mcu_flash.h Normal file
View File

@@ -0,0 +1,121 @@
/*
* mcu_flash.h
*
* Created on: Dec 8, 2025
* Author: cc
*/
#ifndef MCU_DRIVER_INC_MCU_FLASH_H_
#define MCU_DRIVER_INC_MCU_FLASH_H_
#include "ch564.h"
#include <stdint.h>
#define MCU_APP_Flash_PageSize 0x00001000 //MCU FlashҳΪ4096Byte
#define APP_Flash_WriteNum 0x05 //APPд<50><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define App_Procedure_Ready 0x66 //APP׼<50><D7BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־λ
#define App_Procedure_Not_Ready 0x44 //Appδ׼<CEB4><D7BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־λ
//MCU Flash Address range(0x0 -- 0x6FFFF) Size(448K)
#define MCU_APP_Flash_Start_Addr 0x00007000 //MCU Flash<73><68>APP<50><50><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC>ַ
#define MCU_APP_Data_Start_Addr 0x00007000 //MCU Flash APP<50><50><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC>ַ
#define MCU_APP_Data_End_Addr 0x00027DFF //MCU Flash APP<50><50><EFBFBD>ݽ<EFBFBD><DDBD><EFBFBD><EFBFBD><EFBFBD>ַ
#define MCU_APP_Feature_Addr 0x00027E00 //MCU Flash <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݱ<EFBFBD><DDB1><EFBFBD><EFBFBD><EFBFBD>ַ
#define MCU_APP_Flash_End_Addr 0x00027FFF //MCU Flash<73><68>APP<50>Ľ<EFBFBD><C4BD><EFBFBD><EFBFBD><EFBFBD>ַ
#define MCU_APP_Feature_PageAddr 0x00027000 //MCU APP<50><50><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ҳ<EFBFBD>ĵ<EFBFBD>ַ
#define MCU_APP_Feature_PageOffset 0x00000E00 //MCU APP<50><50><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҳ<EFBFBD><D2B3>ƫ<EFBFBD><C6AB><EFBFBD><EFBFBD>
#define APP_FEATURE_SIZE 0x0200 //512Byte
//EEPROM Address range(0x70000 -- 0x77FFF) Size(32K)
#define MCU_EEPROM_Start_Addr 0x00070000
#define MCU_EEPROM_MCUDevInfo_Address 0x00070000 //MCU <20><EFBFBD><E8B1B8>Ϣ<EFBFBD><CFA2>ַ<EFBFBD>̶<EFBFBD>Ϊ0x00070000<30><30><EFBFBD><EFBFBD>СΪ4096 <20><><EFBFBD><EFBFBD><EFBFBD>򲻿ɸĶ<C9B8>
#define MCU_EEPROM_End_Addr 0x00078000
/* EEPROM <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݸ<EFBFBD>ʽ<EFBFBD><CABD>
* FLAG - 1Byte <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־λ
* LEN - 2Byte <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>
* CHECK - 1Byte <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>У<EFBFBD><D0A3>
* DATA - nByte <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*
* */
#define EEPROM_SVAE_FLAG 0xAE
#define EEPROM_DATA_Size_Max 0x40 //Ŀǰ<C4BF><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ100Byte
#define EEPROM_PARA_Size 50
#define EEPROM_DEV_NAME_Size 32
#define EEPROM_Offset_SaveFlag 0x00
#define EEPROM_Offset_Datalen 0x01
#define EEPROM_Offset_Check 0x03
#define EEPROM_Offset_Data 0x04
/* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݽṹ<DDBD><E1B9B9>
* ע<><EFBFBD><E2A3BA><EFBFBD><EFBFBD>risc-v<><76><EFBFBD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD>ֽڶ<D6BD><DAB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* <20><><EFBFBD>Ա<EFBFBD><D4B1><EFBFBD><EFBFBD><EFBFBD>Flash/MCU Flash<73>е<EFBFBD>˳<EFBFBD><CBB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E5B6A8>˳<EFBFBD><CBB3><EFBFBD><EFBFBD>һ<EFBFBD>£<EFBFBD>ʹ<EFBFBD><CAB9>ʱ<EFBFBD><CAB1>ע<EFBFBD><D7A2>
* */
typedef enum{
Feature_Check = 0x00, //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 512Byte <20><>CRCУ<43><D0A3> - 2Byte
Feature_AppFlag = 0x02, //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> - APP<50><50>־λ - 1Byte
Feature_AppStart = 0x03, //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> - APP<50><50>ʼ<EFBFBD><CABC>ַ - 4Byte
Feature_AppEnd = 0x07, //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> - APP<50><50><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ - 4Byte
Feature_AppCrcSize = 0x0B, //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> - APP CRC<52>ij<EFBFBD><C4B3><EFBFBD> - 2Byte
Feature_AppCrcLen = 0x0D, //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> - APP CRCУ<43><D0A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݴ<EFBFBD>С - 2Byte
Feature_AppFlashCrc = 0x0F, //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> - APP CRC
}FEATURE_E;
#define APP_Feature_CRC_Size 497
typedef struct{
uint8_t app_flag; //APP <20><>־λ
uint8_t app_crc[APP_Feature_CRC_Size]; //APP CRCУ<43><D0A3>ֵ
uint16_t app_crc_size; //APP CRCУ<43><D0A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݴ<EFBFBD>С
uint16_t app_crc_len; //APP CRCУ<43><D0A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>
uint16_t crc_check; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>CRCֵ - <20><><EFBFBD><EFBFBD>У<EFBFBD><D0A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7>Ϸ<EFBFBD>
uint32_t app_start_addr; //APP<50><50>ʼ<EFBFBD><CABC>ַ
uint32_t app_end_addr; //APP<50><50><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ
}G_SYS_FEATURE_T;
/*<2A><><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>MCU EEPROM<4F><4D><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
typedef struct{
uint8_t dev_addr; //<2F><EFBFBD><E8B1B8>ַ
uint8_t dev_type; //<2F><EFBFBD><E8B1B8><EFBFBD><EFBFBD>
uint8_t dev_boot_ver; //<2F>豸Boot<6F><74><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E6B1BE>
uint8_t dev_app_ver; //<2F>豸APP<50><50><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E6B1BE>
uint8_t dev_name_len; //<2F><EFBFBD><E8B1B8><EFBFBD>Ƶij<C6B5><C4B3><EFBFBD>
uint8_t dev_name[EEPROM_DEV_NAME_Size]; //<2F><EFBFBD><E8B1B8><EFBFBD><EFBFBD>
}E_MCU_DEV_INFO;
extern E_MCU_DEV_INFO g_mcu_dev;
extern G_SYS_FEATURE_T g_app_feature;
extern uint8_t g_flash_buff[570];
void EEPROM_Init(void);
uint8_t MCU_APP_Flash_Write(uint8_t* pBuffer,uint16_t NumByteToWrite,uint32_t writeAddr);
uint8_t MCU_APP_Flash_Read(uint8_t* pBuffer,uint16_t NumByteToWrite,uint32_t readAddr);
uint8_t MCU_APP_Flash_Erase(uint32_t readAddr,uint16_t NumByteToWrite);
uint8_t MCU_APP_Flash_ALLErase(void);
uint8_t MCU_EEPROM_Write(uint8_t* pBuffer,uint16_t NumByteToWrite,uint32_t writeAddr);
uint8_t MCU_EEPROM_Read(uint8_t* pBuffer,uint16_t NumByteToWrite,uint32_t readAddr);
uint8_t MCU_EEPROM_Erase(uint32_t readAddr,uint16_t NumByteToWrite);
uint8_t MCU_EEPROM_ALLErase(void);
uint8_t EEPROM_CheckSum(uint8_t *data,uint16_t len);
uint8_t EEPROM_ReadMCUDevInfo(E_MCU_DEV_INFO *info);
uint8_t EEPROM_WriteMCUDevInfo(E_MCU_DEV_INFO *info);
void EEPROM_Default_MCUDevInfo(E_MCU_DEV_INFO *info);
void EEPROM_Validate_MCUDevInfo(E_MCU_DEV_INFO *info);
uint8_t Read_APP_Feature_Info(uint8_t option,G_SYS_FEATURE_T *feature_info);
uint8_t Write_APP_Feature_Info(uint8_t option,G_SYS_FEATURE_T *feature_info);
void APP_Feature_Info_Printf(G_SYS_FEATURE_T *feature_info);
#endif /* MCU_DRIVER_INC_MCU_FLASH_H_ */

View File

@@ -61,5 +61,7 @@ void Flash_Write_Page(uint8_t* pBuffer,uint16_t NumByteToWrite,uint32_t writeAdd
void Flash_Write_NoCheck(uint8_t* pBuffer,uint16_t NumByteToWrite,uint32_t writeAddr);
void Flash_Write(uint8_t* pBuffer,uint16_t NumByteToWrite,uint32_t WriteAddr);
void SPI_FLASH_APP_Data_Erase(void);
void SPI_FLASH_Logic_File_Erase(void);
#endif /* MCU_DRIVER_INC_SPI_FLASH_H_ */

View File

@@ -361,7 +361,7 @@ __attribute__((section(".non_0_wait"))) void Expand_Scene_Get(void)
* Description : <20><EFBFBD><E8B1B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD>ʼ<EFBFBD><CABC>
* Ϊ<><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD>ĵ<EFBFBD><C4B5><EFBFBD>չ<EFBFBD><EFBFBD><E8B1B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD>ڵ㸳ֵ<E3B8B3><D6B5>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>ʱ<EFBFBD>ij<EFBFBD><C4B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>е<EFBFBD>ַ<EFBFBD><D6B7>ֵ<EFBFBD><D6B5> Ϊ<><CEAA><EFBFBD>Ƴ<EFBFBD><C6B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E8B1B8><EFBFBD>е<EFBFBD>ַ<EFBFBD>õ<EFBFBD>
*******************************************************************************/
void Expand_DevDly_Get(void)
__attribute__((section(".non_0_wait"))) void Expand_DevDly_Get(void)
{
uint8_t KeepFlag = 0x00;
uint16_t i = 0,j = 0;

632
MCU_Driver/mcu_flash.c Normal file
View File

@@ -0,0 +1,632 @@
/*
* mcu_flash.c
*
* Created on: Dec 8, 2025
* Author: cc
*/
#include "includes.h"
#include <string.h>
E_MCU_DEV_INFO g_mcu_dev;
G_SYS_FEATURE_T g_app_feature; //APP<50><50><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
uint8_t g_flash_buff[570] = {0};
/*******************************************************************************
* Function Name : EEPROM_Init
* Description : EEPROM <20><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*******************************************************************************/
__attribute__((section(".non_0_wait"))) void EEPROM_Init(void)
{
uint8_t rev = 0;
rev = EEPROM_ReadMCUDevInfo(&g_mcu_dev);
if(rev == 0x00){
//<2F><>ȡ<EFBFBD>ɹ<EFBFBD><C9B9><EFBFBD><EFBFBD><EFBFBD>ʼУ<CABC><D0A3><EFBFBD><EFBFBD><EFBFBD>²<EFBFBD><C2B2><EFBFBD>
EEPROM_Validate_MCUDevInfo(&g_mcu_dev);
}else{
//<2F><>ȡʧ<C8A1>ܣ<EFBFBD><DCA3>ָ<EFBFBD>Ĭ<EFBFBD>ϲ<EFBFBD><CFB2><EFBFBD>
Dbg_Println(DBG_BIT_SYS_STATUS_bit,"EE Use Defalut Para");
EEPROM_Default_MCUDevInfo(&g_mcu_dev);
Dbg_Println(DBG_BIT_SYS_STATUS_bit,"EE DevBootVer:%d",g_mcu_dev.dev_boot_ver);
Dbg_Println(DBG_BIT_SYS_STATUS_bit,"EE DevNameLen:%d",g_mcu_dev.dev_name_len);
Dbg_Println(DBG_BIT_SYS_STATUS_bit,"EE DevName:%s",g_mcu_dev.dev_name);
}
}
/*******************************************************************************
* Function Name : MCU_Flash_Write
* Description : MCU Flash<73><68><EFBFBD><EFBFBD>д<EFBFBD><EFBFBD><EBBAAF>
* Input :
pBuffer<65><72>д<EFBFBD><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
NumByteToWrite<74><65>д<EFBFBD><D0B4><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD> -- д<><EFBFBD>ȱ<EFBFBD><C8B1><EFBFBD>Ϊ4<CEAA>ı<EFBFBD><C4B1><EFBFBD>
writeAddr<64><72>д<EFBFBD><D0B4><EFBFBD><EFBFBD>ַ 0x00004000 ~ 0x0006FFFF 432KB
*******************************************************************************/
__attribute__((section(".non_0_wait"))) uint8_t MCU_APP_Flash_Write(uint8_t* pBuffer,uint16_t NumByteToWrite,uint32_t writeAddr)
{
FLASH_Status sta;
/* У<><D0A3>д<EFBFBD><D0B4><EFBFBD><EFBFBD>ַ<EFBFBD>ͳ<EFBFBD><CDB3><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> - д<><D0B4><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD>APP Flash<73><68>Χ<EFBFBD><CEA7><EFBFBD>Լ<EFBFBD>д<EFBFBD><EFBFBD><EBB3A4><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>4Byte<74><65><EFBFBD><EFBFBD>*/
if( ( writeAddr < MCU_APP_Flash_Start_Addr ) || ( ( writeAddr + NumByteToWrite ) > MCU_EEPROM_Start_Addr ) || ((NumByteToWrite % 4) != 0x00) ) {
Dbg_Println(DBG_BIT_SYS_STATUS_bit,"MCU APP Flash Addr Error:%x - %x\r\n", writeAddr, NumByteToWrite);
return 0x01;
}
FLASH_Unlock();
sta = FLASH_ROMA_WRITE(writeAddr, pBuffer, NumByteToWrite);
FLASH_Lock();
if (sta != FLASH_COMPLETE){
Dbg_Println(DBG_BIT_SYS_STATUS_bit,"Operation FLASH_ROMA_WRITE failed %#x!! Err Code %x\r\n", writeAddr, sta);
return 0x01;
}
sta = FLASH_ROMA_VERIFY(writeAddr, pBuffer, NumByteToWrite);
if (sta != FLASH_COMPLETE){
Dbg_Println(DBG_BIT_SYS_STATUS_bit,"Operation FLASH_ROMA_VERIFY failed %#x!! Err Code %x\r\n", writeAddr, sta);
return 0x01;
}
return 0x00;
}
/*******************************************************************************
* Function Name : MCU_Flash_Read
* Description : MCU Flash<73><68><EFBFBD>ݶ<EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>
* Input :
pBuffer<65><72>д<EFBFBD><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
NumByteToWrite<74><65>д<EFBFBD><D0B4><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD> -- д<><EFBFBD>ȱ<EFBFBD><C8B1><EFBFBD>Ϊ4<CEAA>ı<EFBFBD><C4B1><EFBFBD>
readAddr<64><72><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1>ַ 0x00004000 ~ 0x0006FFFF 432KB
*******************************************************************************/
__attribute__((section(".non_0_wait"))) uint8_t MCU_APP_Flash_Read(uint8_t* pBuffer,uint16_t NumByteToWrite,uint32_t readAddr)
{
FLASH_Status sta;
/* У<><D0A3><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1>ַ<EFBFBD>ͳ<EFBFBD><CDB3><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> - <20><>ȡ<EFBFBD><C8A1>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD>APP Flash<73><68>Χ<EFBFBD><CEA7>*/
if( ( readAddr < MCU_APP_Flash_Start_Addr ) || ( ( readAddr + NumByteToWrite ) > MCU_EEPROM_Start_Addr ) ) {
Dbg_Println(DBG_BIT_SYS_STATUS_bit,"MCU APP Flash Addr Error:%x - %x\r\n", readAddr, NumByteToWrite);
return 0x01;
}
sta = FLASH_ROMA_READ(readAddr, pBuffer, NumByteToWrite);
if (sta != FLASH_COMPLETE){
Dbg_Println(DBG_BIT_SYS_STATUS_bit,"Operation FLASH_ROMA_READ failed %x!! Err Code %x\r\n", readAddr, sta);
return 0x01;
}
return 0x00;
}
/*******************************************************************************
* Function Name : MCU_APP_Flash_Erase
* Description : MCU Flash<73><68><EFBFBD>ݲ<EFBFBD><DDB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* Input :
pBuffer<65><72>д<EFBFBD><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
NumByteToWrite<74><65>д<EFBFBD><D0B4><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD> -- д<><EFBFBD>ȱ<EFBFBD><C8B1><EFBFBD>Ϊ4<CEAA>ı<EFBFBD><C4B1><EFBFBD>
readAddr<64><72><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1>ַ 0x00004000 ~ 0x0006FFFF 432KB
*******************************************************************************/
__attribute__((section(".non_0_wait"))) uint8_t MCU_APP_Flash_Erase(uint32_t readAddr,uint16_t NumByteToWrite)
{
FLASH_Status sta;
/* У<><D0A3><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1>ַ<EFBFBD>ͳ<EFBFBD><CDB3><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> - <20><>ȡ<EFBFBD><C8A1>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD>APP Flash<73><68>Χ<EFBFBD><CEA7>*/
if( ( readAddr < MCU_APP_Flash_Start_Addr ) || ( ( readAddr + NumByteToWrite ) > MCU_EEPROM_Start_Addr ) ) {
Dbg_Println(DBG_BIT_SYS_STATUS_bit,"MCU EEPROM Addr Error:%x - %x\r\n", readAddr, NumByteToWrite);
return 0x01;
}
FLASH_Unlock();
sta = FLASH_ROMA_ERASE(readAddr, NumByteToWrite);
FLASH_Lock();
if (sta != FLASH_COMPLETE){
Dbg_Println(DBG_BIT_SYS_STATUS_bit,"Operation FLASH_ROMA_ERASE failed %x!! Err Code %x\r\n", readAddr, sta);
return 0x01;
}
return 0x00;
}
/*******************************************************************************
* Function Name : MCU_APP_Flash_ALLErase
* Description : MCU Flash<73><68><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> - APP<50><50><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(<28><><EFBFBD><EFBFBD>APP<50><50><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
*******************************************************************************/
__attribute__((section(".non_0_wait"))) uint8_t MCU_APP_Flash_ALLErase(void)
{
FLASH_Status sta;
for(uint32_t i=MCU_APP_Flash_Start_Addr;i<MCU_APP_Flash_End_Addr;i+=MCU_APP_Flash_PageSize)
{
Dbg_Println(DBG_BIT_SYS_STATUS_bit,"Operation FLASH_ROMA_ERASE - %x!! \r\n", i);
FLASH_Unlock();
sta = FLASH_ROMA_ERASE(i, MCU_APP_Flash_PageSize);
FLASH_Lock();
if (sta != FLASH_COMPLETE){
Dbg_Println(DBG_BIT_SYS_STATUS_bit,"Operation FLASH_ROMA_ERASE failed %x!! Err Code %x\r\n", i, sta);
return 0x01;
}
}
return 0x00;
}
/*******************************************************************************
* Function Name : MCU_EEPROM_Write
* Description : MCU EEPROM<4F><4D><EFBFBD><EFBFBD>д<EFBFBD><EFBFBD><EBBAAF>
* Input :
pBuffer<65><72>д<EFBFBD><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
NumByteToWrite<74><65>д<EFBFBD><D0B4><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD> -- д<><EFBFBD>ȱ<EFBFBD><C8B1><EFBFBD>Ϊ4<CEAA>ı<EFBFBD><C4B1><EFBFBD>
writeAddr<64><72>д<EFBFBD><D0B4><EFBFBD><EFBFBD>ַ 0x00004000 ~ 0x0006FFFF 432KB
*******************************************************************************/
__attribute__((section(".non_0_wait"))) uint8_t MCU_EEPROM_Write(uint8_t* pBuffer,uint16_t NumByteToWrite,uint32_t writeAddr)
{
FLASH_Status sta;
/* У<><D0A3>д<EFBFBD><D0B4><EFBFBD><EFBFBD>ַ<EFBFBD>ͳ<EFBFBD><CDB3><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> - д<><D0B4><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD>APP Flash<73><68>Χ<EFBFBD><CEA7><EFBFBD>Լ<EFBFBD>д<EFBFBD><EFBFBD><EBB3A4><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>4Byte<74><65><EFBFBD><EFBFBD>*/
if( ( writeAddr < MCU_EEPROM_Start_Addr ) || ( ( writeAddr + NumByteToWrite ) > MCU_EEPROM_End_Addr ) || ((NumByteToWrite % 4) != 0x00)) {
Dbg_Println(DBG_BIT_SYS_STATUS_bit,"MCU EEPROM Addr Error:%x - %x\r\n", writeAddr, NumByteToWrite);
return 0x01;
}
FLASH_Unlock();
sta = EEPROM_WRITE(writeAddr, pBuffer, NumByteToWrite);
FLASH_Lock();
if (sta != FLASH_COMPLETE){
Dbg_Println(DBG_BIT_SYS_STATUS_bit,"Operation FLASH_ROMA_WRITE failed %x!! Err Code %x\r\n", writeAddr, sta);
return 0x01;
}
return 0x00;
}
/*******************************************************************************
* Function Name : MCU_EEPROM_Read
* Description : MCU EEPROM<4F><4D><EFBFBD>ݶ<EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>
* Input :
pBuffer<65><72>д<EFBFBD><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
NumByteToWrite<74><65>д<EFBFBD><D0B4><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD> -- д<><EFBFBD>ȱ<EFBFBD><C8B1><EFBFBD>Ϊ4<CEAA>ı<EFBFBD><C4B1><EFBFBD>
readAddr<64><72><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1>ַ 0x00004000 ~ 0x0006FFFF 432KB
*******************************************************************************/
__attribute__((section(".non_0_wait"))) uint8_t MCU_EEPROM_Read(uint8_t* pBuffer,uint16_t NumByteToWrite,uint32_t readAddr)
{
FLASH_Status sta;
/* У<><D0A3><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1>ַ<EFBFBD>ͳ<EFBFBD><CDB3><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> - <20><>ȡ<EFBFBD><C8A1>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD>APP Flash<73><68>Χ<EFBFBD><CEA7>*/
if( ( readAddr < MCU_EEPROM_Start_Addr ) || ( ( readAddr + NumByteToWrite ) > MCU_EEPROM_End_Addr ) ) {
Dbg_Println(DBG_BIT_SYS_STATUS_bit,"MCU EEPROM Addr Error:%x - %x\r\n", readAddr, NumByteToWrite);
return 0x01;
}
sta = EEPROM_READ(readAddr, pBuffer, NumByteToWrite);
if (sta != FLASH_COMPLETE){
Dbg_Println(DBG_BIT_SYS_STATUS_bit,"Operation FLASH_ROMA_READ failed %x!! Err Code %x\r\n", readAddr, sta);
return 0x01;
}
return 0x00;
}
/*******************************************************************************
* Function Name : MCU_EEPROM_Erase
* Description : MCU EEPROM<4F><4D><EFBFBD>ݲ<EFBFBD><DDB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* Input :
eraseAddr<64><72><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ 0x70000 -- 0x77FFF
length<74><68>ֻ<EFBFBD>ܰ<EFBFBD><DCB0>տ<EFBFBD><D5BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>СΪ4096
*******************************************************************************/
__attribute__((section(".non_0_wait"))) uint8_t MCU_EEPROM_Erase(uint32_t eraseAddr,uint16_t length)
{
FLASH_Status sta;
/* У<><D0A3><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1>ַ<EFBFBD>ͳ<EFBFBD><CDB3><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> - <20><>ȡ<EFBFBD><C8A1>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD>APP Flash<73><68>Χ<EFBFBD><CEA7> */
if( ( eraseAddr < MCU_EEPROM_Start_Addr ) || ( ( eraseAddr + length ) > MCU_EEPROM_End_Addr ) ) {
Dbg_Println(DBG_BIT_SYS_STATUS_bit,"MCU EEPROM Addr Error:%x - %x\r\n", eraseAddr, length);
return 0x01;
}
FLASH_Unlock();
sta = EEPROM_ERASE(eraseAddr, length);
FLASH_Lock();
if (sta != FLASH_COMPLETE){
Dbg_Println(DBG_BIT_SYS_STATUS_bit,"Operation MCU_EEPROM_Erase failed %x!! Err Code %x\r\n", eraseAddr, sta);
return 0x01;
}
return 0x00;
}
/*******************************************************************************
* Function Name : MCU_EEPROM_ALLErase
* Description : MCU Flash<73><68><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> - EEPROM<4F><4D><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*******************************************************************************/
__attribute__((section(".non_0_wait"))) uint8_t MCU_EEPROM_ALLErase(void)
{
FLASH_Status sta;
for(uint32_t i=MCU_EEPROM_Start_Addr;i<MCU_EEPROM_End_Addr;i+=MCU_APP_Flash_PageSize)
{
FLASH_Unlock();
sta = EEPROM_ERASE(i, MCU_APP_Flash_PageSize);
FLASH_Lock();
if (sta != FLASH_COMPLETE){
Dbg_Println(DBG_BIT_SYS_STATUS_bit,"Operation FLASH_ROMA_ERASE failed %x!! Err Code %x\r\n", i, sta);
return 0x01;
}
}
return 0x01;
}
/*******************************************************************************
* Function Name : EEPROM_CheckSum
* Description : EEPROM У<><EFBFBD><E9BAAF>
*******************************************************************************/
__attribute__((section(".non_0_wait"))) uint8_t EEPROM_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 : EEPROM_ReadMCUDevInfo
* Description : <20><>EEPROM<4F>ж<EFBFBD>ȡ<EFBFBD><EFBFBD><E8B1B8>Ϣ
*******************************************************************************/
__attribute__((section(".non_0_wait"))) uint8_t EEPROM_ReadMCUDevInfo(E_MCU_DEV_INFO *info)
{
uint16_t read_len = 0;
uint32_t read_addr = MCU_EEPROM_MCUDevInfo_Address;
memset(Temp_Flash_Buff,0,sizeof(Temp_Flash_Buff));
Dbg_Println(DBG_BIT_SYS_STATUS_bit,"EEPROM_READ : %x ",read_addr);
Dbg_Println(DBG_BIT_SYS_STATUS_bit,"EEPROM_READ 1");
// FLASH_Unlock();
// EEPROM_ERASE(read_addr , 0x1000);
// FLASH_Lock();
Dbg_Println(DBG_BIT_SYS_STATUS_bit,"EEPROM_READ 2");
EEPROM_READ(read_addr,Temp_Flash_Buff,1024);
Dbg_Print_Buff(DBG_BIT_SYS_STATUS_bit,"Dev Info:",Temp_Flash_Buff,4);
if(Temp_Flash_Buff[0] == EEPROM_SVAE_FLAG){
read_len = Temp_Flash_Buff[2];
read_len <<= 8;
read_len |= Temp_Flash_Buff[1];
Dbg_Println(DBG_BIT_SYS_STATUS_bit,"read_len : %d ",read_len);
if(read_len <= EEPROM_DATA_Size_Max){
Dbg_Println(DBG_BIT_SYS_STATUS_bit,"read_para %0x%x\r\n",MCU_EEPROM_MCUDevInfo_Address);
//EEPROM_READ(MCU_EEPROM_MCUDevInfo_Address,g_read_buff,1024);
Dbg_Print_Buff(DBG_BIT_SYS_STATUS_bit,"Dev Info Para:",&Temp_Flash_Buff[4],read_len);
if(EEPROM_CheckSum(&Temp_Flash_Buff[4],sizeof(E_MCU_DEV_INFO)) == Temp_Flash_Buff[3]){
//У<><D0A3><EFBFBD>ɹ<EFBFBD>
memcpy((uint8_t *)info,Temp_Flash_Buff,sizeof(E_MCU_DEV_INFO));
Dbg_Println(DBG_BIT_SYS_STATUS_bit,"EE DevAddr:%d",info->dev_addr);
Dbg_Println(DBG_BIT_SYS_STATUS_bit,"EE DevType:%d",info->dev_type);
Dbg_Println(DBG_BIT_SYS_STATUS_bit,"EE DevBootVer:%d",info->dev_boot_ver);
Dbg_Println(DBG_BIT_SYS_STATUS_bit,"EE DevAppVer:%d",info->dev_app_ver);
Dbg_Println(DBG_BIT_SYS_STATUS_bit,"EE DevNameLen:%d",info->dev_name_len);
Dbg_Println(DBG_BIT_SYS_STATUS_bit,"EE DevName:%s",info->dev_name);
return 0x00;
}
}
}
return 0x01;
}
/*******************************************************************************
* Function Name : EEPROM_WriteMCUDevInfo
* Description : <20><><EFBFBD><EFBFBD><E8B1B8>Ϣд<CFA2>뵽EEPROM<4F><4D>
*******************************************************************************/
__attribute__((section(".non_0_wait"))) uint8_t EEPROM_WriteMCUDevInfo(E_MCU_DEV_INFO *info)
{
uint8_t save_data[EEPROM_DATA_Size_Max + 6];
uint16_t save_len = sizeof(E_MCU_DEV_INFO);
if(save_len >= EEPROM_DATA_Size_Max) save_len = EEPROM_DATA_Size_Max;
save_data[0] = EEPROM_SVAE_FLAG;
save_data[1] = save_len & 0xFF;
save_data[2] = (save_len >> 8) & 0xFF;
memcpy(&save_data[4],(uint8_t *)info,save_len);
save_data[3] = EEPROM_CheckSum(&save_data[4],save_len);
save_len+=4;
MCU_EEPROM_Write(save_data,save_len,MCU_EEPROM_MCUDevInfo_Address);
return 0;
}
/*******************************************************************************
* Function Name : EEPROM_Default_MCUDevInfo
* Description : EEPROM<4F>в<EFBFBD><D0B2><EFBFBD><EFBFBD>ָ<EFBFBD>Ĭ<EFBFBD><C4AC>ֵ<EFBFBD><D6B5><EFBFBD>ҽ<EFBFBD>Ĭ<EFBFBD>ϲ<EFBFBD><CFB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>EEPROM<4F><4D>
*******************************************************************************/
__attribute__((section(".non_0_wait"))) void EEPROM_Default_MCUDevInfo(E_MCU_DEV_INFO *info)
{
#if (Project_Area == 0x01)
/*Boot <20><><EFBFBD><EFBFBD>*/
info->dev_addr = 0x00;
info->dev_type = 0x00;
info->dev_app_ver = 0x00;
info->dev_boot_ver = Project_FW_Version;
info->dev_name_len = sizeof(Peoject_Name);
memset((char *)info->dev_name,0,EEPROM_DEV_NAME_Size);
memcpy((char *)info->dev_name,(char *)Peoject_Name,info->dev_name_len);
//EEPROM_WriteMCUDevInfo(info);
#elif (Project_Area == 0x02)
/*APP <20><><EFBFBD><EFBFBD>*/
info->dev_addr = 0x00;
info->dev_type = Project_Type;
info->dev_app_ver = Project_FW_Version;
info->dev_name_len = sizeof(Peoject_Name);
memset((char *)info->dev_name,0,EEPROM_DEV_NAME_Size);
memcpy((char *)info->dev_name,(char *)Peoject_Name,info->dev_name_len);
EEPROM_WriteMCUDevInfo(info);
#endif
}
/*******************************************************************************
* Function Name : EEPROM_Validate_MCUDevInfo
* Description : У<><D0A3><EFBFBD><EFBFBD>EEPROM <20>ж<EFBFBD>ȡ<EFBFBD>IJ<EFBFBD><C4B2><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD>ȷ<EFBFBD><C8B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȷ<EFBFBD>Ļ<EFBFBD><C4BB><EFBFBD><EFBFBD><EFBFBD><E3BDAB>ǰ<EFBFBD><C7B0>ȷ<EFBFBD>IJ<EFBFBD><C4B2><EFBFBD>д<EFBFBD><D0B4>
APP<50><50><EFBFBD><EFBFBD><EFBFBD>У<EFBFBD><D0A3>ж<EFBFBD>APP<50><50><EFBFBD><EFBFBD><EFBFBD><EFBFBD>EEPROM<4F>м<EFBFBD>¼<EFBFBD><C2BC><EFBFBD>Ƿ<EFBFBD>һ<EFBFBD><D2BB>
Boot<6F><74><EFBFBD><EFBFBD><EFBFBD>У<EFBFBD><D0A3>ж<EFBFBD>Boot<6F><74><EFBFBD><EFBFBD><EFBFBD><EFBFBD>EEPROM<4F>м<EFBFBD>¼<EFBFBD><C2BC><EFBFBD>Ƿ<EFBFBD>һ<EFBFBD><D2BB>
*******************************************************************************/
__attribute__((section(".non_0_wait"))) void EEPROM_Validate_MCUDevInfo(E_MCU_DEV_INFO *info)
{
#if (Project_Area == 0x01)
/*Boot <20><><EFBFBD><EFBFBD>*/
uint8_t save_flag = 0;
if(info->dev_boot_ver != Project_FW_Version)
{
info->dev_boot_ver = Project_FW_Version;
save_flag = 0x01;
}
if(save_flag == 0x01)
{
EEPROM_WriteMCUDevInfo(info);
}
#elif (Project_Area == 0x02)
/*APP <20><><EFBFBD><EFBFBD>*/
U8_T save_flag = 0;
if(info->dev_app_ver != Project_FW_Version)
{
info->dev_app_ver = Project_FW_Version;
save_flag = 0x01;
}
if(info->dev_type != Project_Type)
{
info->dev_type = Project_Type;
save_flag = 0x01;
}
if(info->dev_name_len != sizeof(Peoject_Name))
{
info->dev_name_len = sizeof(Peoject_Name);
save_flag = 0x01;
}
if(strncmp((char *)info->dev_name,(char *)Peoject_Name,sizeof(Peoject_Name)))
{
memcpy((char *)info->dev_name,(char *)Peoject_Name,info->dev_name_len);
save_flag = 0x01;
}
if(save_flag == 0x01)
{
EEPROM_WriteMCUDevInfo(info);
}
#endif
}
/*******************************************************************************
* Function Name : Read_APP_Feature_Info
* Description : <20><>ȡAPP<50><50><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*******************************************************************************/
__attribute__((section(".non_0_wait"))) uint8_t Read_APP_Feature_Info(uint8_t option,G_SYS_FEATURE_T *feature_info)
{
uint16_t crc_val = 0,crc_val2 = 0;
uint32_t temp_val = 0;
memset(Temp_Flash_Buff,0,sizeof(Temp_Flash_Buff));
if(option == 0x01){
//<2F><>ȡMCU Flash APP<50><50><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
MCU_APP_Flash_Read(Temp_Flash_Buff,APP_FEATURE_SIZE,MCU_APP_Feature_Addr);
}else if(option == 0x02){
//<2F><>ȡ<EFBFBD>ⲿ Flash APP<50><50><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
Flash_Read(Temp_Flash_Buff,APP_FEATURE_SIZE,SPIFLASH_APP_FEATURE_Addr);
}
Dbg_Print_Buff(DBG_BIT_SYS_STATUS_bit,"APP Feature :",Temp_Flash_Buff,APP_FEATURE_SIZE);
crc_val = Temp_Flash_Buff[1];
crc_val <<= 0x08;
crc_val |= Temp_Flash_Buff[0];
crc_val2 = NetCRC16_2(&Temp_Flash_Buff[2],510);
Dbg_Println(DBG_BIT_SYS_STATUS_bit,"%s CRC: %x - %x",__func__,crc_val,crc_val2);
if(crc_val == crc_val2)
{
/*<2A><><EFBFBD><EFBFBD>У<EFBFBD><D0A3>ͨ<EFBFBD><CDA8>*/
feature_info->app_flag = Temp_Flash_Buff[Feature_AppFlag];
temp_val = Temp_Flash_Buff[Feature_AppStart + 3];
temp_val <<= 8;
temp_val |= Temp_Flash_Buff[Feature_AppStart + 2];
temp_val <<= 8;
temp_val |= Temp_Flash_Buff[Feature_AppStart + 1];
temp_val <<= 8;
temp_val |= Temp_Flash_Buff[Feature_AppStart];
feature_info->app_start_addr = temp_val;
temp_val = Temp_Flash_Buff[Feature_AppEnd + 3];
temp_val <<= 8;
temp_val |= Temp_Flash_Buff[Feature_AppEnd + 2];
temp_val <<= 8;
temp_val |= Temp_Flash_Buff[Feature_AppEnd + 1];
temp_val <<= 8;
temp_val |= Temp_Flash_Buff[Feature_AppEnd];
feature_info->app_end_addr = temp_val;
temp_val = Temp_Flash_Buff[Feature_AppCrcSize + 1];
temp_val <<= 8;
temp_val |= Temp_Flash_Buff[Feature_AppCrcSize];
feature_info->app_crc_size = temp_val;
temp_val = Temp_Flash_Buff[Feature_AppCrcLen + 1];
temp_val <<= 8;
temp_val |= Temp_Flash_Buff[Feature_AppCrcLen];
feature_info->app_crc_len = temp_val;
memcpy(feature_info->app_crc,&Temp_Flash_Buff[Feature_AppFlashCrc],APP_Feature_CRC_Size);
/*У<><D0A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Χ*/
if( ( feature_info->app_start_addr < MCU_APP_Flash_Start_Addr ) || ( feature_info->app_start_addr > MCU_APP_Data_End_Addr ) ){
Dbg_Println(DBG_BIT_SYS_STATUS_bit,"%s app_start_addr:0x%x Error",__func__, feature_info->app_start_addr);
return 0x02;
}
if( ( feature_info->app_end_addr > MCU_APP_Data_End_Addr ) || ( feature_info->app_start_addr > feature_info->app_end_addr ) ){
Dbg_Println(DBG_BIT_SYS_STATUS_bit,"%s app_end_addr:0x%x - 0x%x Error",__func__,feature_info->app_start_addr,feature_info->app_end_addr);
return 0x02;
}
if( feature_info->app_crc_size != MCU_APP_Flash_PageSize ){
Dbg_Println(DBG_BIT_SYS_STATUS_bit,"%s app_crc_size:%#x Error",__func__,feature_info->app_crc_size);
return 0x02;
}
return 0x00;
}
return 0x01;
}
/*******************************************************************************
* Function Name : Write_APP_Feature_Info
* Description : д<><D0B4>APP<50><50><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*******************************************************************************/
__attribute__((section(".non_0_wait"))) uint8_t Write_APP_Feature_Info(uint8_t option,G_SYS_FEATURE_T *feature_info)
{
uint8_t rev = 0;
memset(Temp_Flash_Buff,0,sizeof(Temp_Flash_Buff));
memset(g_flash_buff,0,sizeof(g_flash_buff));
g_flash_buff[Feature_AppFlag] = feature_info->app_flag;
g_flash_buff[Feature_AppStart] = feature_info->app_start_addr & 0xFF;
g_flash_buff[Feature_AppStart + 1] = ( feature_info->app_start_addr >> 8 ) & 0xFF;
g_flash_buff[Feature_AppStart + 2] = ( feature_info->app_start_addr >> 16 ) & 0xFF;
g_flash_buff[Feature_AppStart + 3] = ( feature_info->app_start_addr >> 24 ) & 0xFF;
g_flash_buff[Feature_AppEnd] = feature_info->app_end_addr & 0xFF;
g_flash_buff[Feature_AppEnd + 1] = ( feature_info->app_end_addr >> 8 ) & 0xFF;
g_flash_buff[Feature_AppEnd + 2] = ( feature_info->app_end_addr >> 16 ) & 0xFF;
g_flash_buff[Feature_AppEnd + 3] = ( feature_info->app_end_addr >> 24 ) & 0xFF;
g_flash_buff[Feature_AppCrcSize] = feature_info->app_crc_size & 0xFF;
g_flash_buff[Feature_AppCrcSize + 1] = ( feature_info->app_crc_size >> 8 ) & 0xFF;
g_flash_buff[Feature_AppCrcLen] = feature_info->app_crc_len & 0xFF;
g_flash_buff[Feature_AppCrcLen + 1] = ( feature_info->app_crc_len >> 8 ) & 0xFF;
memcpy(&g_flash_buff[Feature_AppFlashCrc],feature_info->app_crc,APP_Feature_CRC_Size);
feature_info->crc_check = NetCRC16_2(&g_flash_buff[2], 510);
g_flash_buff[Feature_Check] = feature_info->crc_check & 0xFF;
g_flash_buff[Feature_Check + 1] = ( feature_info->crc_check >> 8 ) & 0xFF;
if(option == 0x01){
//<2F><>ȡMCU Flash APP<50><50><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>СΪ512Byte<74><65>mcu flash ÿ<><C3BF>д<EFBFBD><EFBFBD><EBB6BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><D0B4><EFBFBD>Լ<EFBFBD><D4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 4096byte
/*д<><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD> - 1<><31><EFBFBD>ȶ<EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
MCU_APP_Flash_Read(Temp_Flash_Buff,MCU_APP_Flash_PageSize,MCU_APP_Feature_PageAddr);
memcpy(&Temp_Flash_Buff[MCU_APP_Feature_PageOffset],g_flash_buff,512);
/*д<><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD> - 2<><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
rev = MCU_APP_Flash_Erase(MCU_APP_Feature_PageAddr,MCU_APP_Flash_PageSize);
if(rev != 0x00) {
Dbg_Println(DBG_BIT_SYS_STATUS_bit,"MCU_APP_Flash_Erase Fail:%d %x - %x",rev,MCU_APP_Feature_PageAddr,MCU_APP_Flash_PageSize);
return 0x01;
}
/*д<><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD> - 3<><33>д<EFBFBD><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
rev = MCU_APP_Flash_Write(Temp_Flash_Buff,MCU_APP_Flash_PageSize,MCU_APP_Feature_PageAddr);
if(rev != 0x00) {
Dbg_Println(DBG_BIT_SYS_STATUS_bit,"MCU_APP_Flash_Write Fail:%d %#x - %#x",rev,MCU_APP_Feature_PageAddr,MCU_APP_Flash_PageSize);
return 0x02;
}
/*д<><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD> - 4<><34>У<EFBFBD><D0A3>д<EFBFBD><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
rev = FLASH_ROMA_VERIFY(MCU_APP_Feature_PageAddr,Temp_Flash_Buff,MCU_APP_Flash_PageSize);
if(rev != 0x00) {
Dbg_Println(DBG_BIT_SYS_STATUS_bit,"FLASH_ROMA_VERIFY Fail:%d %#x - %#x",rev,MCU_APP_Feature_PageAddr,MCU_APP_Flash_PageSize);
return 0x03;
}
}else if(option == 0x02){
//<2F><>ȡ<EFBFBD>ⲿ Flash APP<50><50><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
Dbg_Print_Buff(DBG_BIT_SYS_STATUS_bit,"SPI Flash Para:",g_flash_buff,APP_FEATURE_SIZE);
Flash_Write(g_flash_buff,APP_FEATURE_SIZE,SPIFLASH_APP_FEATURE_Addr);
}
return 0x00;
}
/*******************************************************************************
* Function Name : APP_Feature_Info_Printf
* Description : APP<50><50><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݴ<EFBFBD>ӡ
*******************************************************************************/
__attribute__((section(".non_0_wait"))) void APP_Feature_Info_Printf(G_SYS_FEATURE_T *feature_info)
{
Dbg_Println(DBG_BIT_SYS_STATUS_bit,"Feature crc_check: %x \r\n",feature_info->crc_check);
Dbg_Println(DBG_BIT_SYS_STATUS_bit,"Feature app_flag: %x \r\n",feature_info->app_flag);
Dbg_Println(DBG_BIT_SYS_STATUS_bit,"Feature app_start_addr: %x \r\n",feature_info->app_start_addr);
Dbg_Println(DBG_BIT_SYS_STATUS_bit,"Feature app_end_addr: %x \r\n",feature_info->app_end_addr);
Dbg_Println(DBG_BIT_SYS_STATUS_bit,"Feature app_crc_len: %d \r\n",feature_info->app_crc_len);
Dbg_Print_Buff(DBG_BIT_SYS_STATUS_bit,"Feature app_crc:",feature_info->app_crc,471);
}

View File

@@ -55,7 +55,7 @@ static unsigned char PADDING[64] = {
#define HH(a, b, c, d, x, s, ac) { (a) += H ((b), (c), (d)) + (x) + (UINT4)(ac); (a) = ROTATE_LEFT ((a), (s)); (a) += (b); }
#define II(a, b, c, d, x, s, ac) { (a) += I ((b), (c), (d)) + (x) + (UINT4)(ac); (a) = ROTATE_LEFT ((a), (s)); (a) += (b); }
void Encode(unsigned char *output, UINT4 *input, unsigned int len)
__attribute__((section(".non_0_wait"))) void Encode(unsigned char *output, UINT4 *input, unsigned int len)
{
unsigned int i, j;
@@ -67,7 +67,7 @@ void Encode(unsigned char *output, UINT4 *input, unsigned int le
}
}
void MD5Init(MD5_CTX *context)
__attribute__((section(".non_0_wait"))) void MD5Init(MD5_CTX *context)
{
context->count[0] = context->count[1] = 0;
context->state[0] = 0x67452301;
@@ -76,7 +76,7 @@ void MD5Init(MD5_CTX *context)
context->state[3] = 0x10325476;
}
void Decode(UINT4 *output, unsigned char *input, unsigned int len)
__attribute__((section(".non_0_wait"))) void Decode(UINT4 *output, unsigned char *input, unsigned int len)
{
unsigned int i, j;
@@ -86,7 +86,7 @@ void Decode(UINT4 *output, unsigned char *input, unsigned int le
}
void MD5Transform (UINT4 state[4], unsigned char block[64])
__attribute__((section(".non_0_wait"))) void MD5Transform (UINT4 state[4], unsigned char block[64])
{
UINT4 a = state[0], b = state[1], c = state[2], d = state[3], x[16];
Decode (x, block, 64);
@@ -161,7 +161,7 @@ void MD5Transform (UINT4 state[4], unsigned char block[64])
memset ((POINTER)x, 0, sizeof (x));
}
void MD5Update(MD5_CTX *context, unsigned char *input, unsigned int inputLen)
__attribute__((section(".non_0_wait"))) void MD5Update(MD5_CTX *context, unsigned char *input, unsigned int inputLen)
{
unsigned int i, index, partLen;
@@ -183,7 +183,7 @@ void MD5Update(MD5_CTX *context, unsigned char *input, unsigned in
memcpy((POINTER)&context->buffer[index], (POINTER)&input[i], inputLen-i);
}
void MD5_SRAM_Update(MD5_CTX *context, uint32_t add, unsigned int inputLen)
__attribute__((section(".non_0_wait"))) void MD5_SRAM_Update(MD5_CTX *context, uint32_t add, unsigned int inputLen)
{
unsigned int i, index, partLen;
uint32_t addr = add;
@@ -215,7 +215,7 @@ void MD5_SRAM_Update(MD5_CTX *context, uint32_t add, unsigned int in
SRAM_DMA_Read_Buff((POINTER)&context->buffer[index], inputLen-i, addr);
}
void MD5_FLASH_Update(MD5_CTX *context, uint32_t add, unsigned int inputLen)
__attribute__((section(".non_0_wait"))) void MD5_FLASH_Update(MD5_CTX *context, uint32_t add, unsigned int inputLen)
{
unsigned int i, index, partLen;
uint32_t addr = add;
@@ -246,7 +246,7 @@ void MD5_FLASH_Update(MD5_CTX *context, uint32_t add, unsigned int inp
Flash_Read((POINTER)&context->buffer[index], inputLen-i, addr);
}
void MD5Final(unsigned char digest[16], MD5_CTX *context)
__attribute__((section(".non_0_wait"))) void MD5Final(unsigned char digest[16], MD5_CTX *context)
{
unsigned char bits[8];
unsigned int index, padLen;
@@ -260,7 +260,7 @@ void MD5Final(unsigned char digest[16], MD5_CTX *context)
memset ((POINTER)context, 0, sizeof (*context));
}
void MD5Digest(char *pszInput, unsigned int nInputSize, char *pszOutPut)
__attribute__((section(".non_0_wait"))) void MD5Digest(char *pszInput, unsigned int nInputSize, char *pszOutPut)
{
MD5_CTX context;
//unsigned int len = strlen (pszInput);
@@ -271,7 +271,7 @@ void MD5Digest(char *pszInput, unsigned int nInputSize, char *pszO
MD5Final ((unsigned char *)pszOutPut, &context);
}
void MD5Digest_SRAM(uint32_t add, unsigned int nInputSize, char *pszOutPut)
__attribute__((section(".non_0_wait"))) void MD5Digest_SRAM(uint32_t add, unsigned int nInputSize, char *pszOutPut)
{
MD5_CTX context;
//unsigned int len = strlen (pszInput);
@@ -282,7 +282,7 @@ void MD5Digest_SRAM(uint32_t add, unsigned int nInputSize, char *psz
MD5Final((unsigned char *)pszOutPut, &context);
}
void MD5Digest_FLASH(uint32_t add, unsigned int nInputSize, char *pszOutPut)
__attribute__((section(".non_0_wait"))) void MD5Digest_FLASH(uint32_t add, unsigned int nInputSize, char *pszOutPut)
{
MD5_CTX context;
unsigned int len = nInputSize;

View File

@@ -167,7 +167,7 @@ __attribute__((section(".non_0_wait"))) void Retain_Flash_Register_Data(void)
memset(Global_Large_Buff,0,Register_OFFSET_LEN);
Flash_Read(Global_Large_Buff,Register_OFFSET_LEN,FLASH_Register_Start_ADDRESS);
Flash_Read(Global_Large_Buff,Register_OFFSET_LEN,SPIFLASH_Register_Start_ADDRESS);
for(i = 0;i<Register_OFFSET_LEN;i++)
{
@@ -182,7 +182,7 @@ __attribute__((section(".non_0_wait"))) void Retain_Flash_Register_Data(void)
/*<2A><><EFBFBD><EFBFBD><EFBFBD>ݱ<EFBFBD><DDB1>浽Flash<73><68>*/
if(temp != 0x00)
{
Flash_Write(Global_Large_Buff,Register_OFFSET_LEN,FLASH_Register_Start_ADDRESS);
Flash_Write(Global_Large_Buff,Register_OFFSET_LEN,SPIFLASH_Register_Start_ADDRESS);
}
}
@@ -195,7 +195,7 @@ __attribute__((section(".non_0_wait"))) void Read_Flash_Register_Data(void)
{
memset(Global_Large_Buff,0,Register_OFFSET_LEN);
Flash_Read(Global_Large_Buff,Register_OFFSET_LEN,FLASH_Register_Start_ADDRESS);
Flash_Read(Global_Large_Buff,Register_OFFSET_LEN,SPIFLASH_Register_Start_ADDRESS);
SRAM_DMA_Write_Buff(Global_Large_Buff,Register_OFFSET_LEN,SRAM_Register_Start_ADDRESS);
}

View File

@@ -490,7 +490,31 @@ __attribute__((section(".non_0_wait"))) void Flash_Write(uint8_t* pBuffer,uint16
}
}
/*******************************************************************************
* Function Name : SPI_FLASH_APP_Data_Erase
* Description : <20>ⲿFlash APP<50>ռ<EFBFBD><D5BC><EFBFBD><EFBFBD><EFBFBD>
* APP<50>ռ<EFBFBD><D5BC><EFBFBD>С Size: 0x00070000 <20><>ַ<EFBFBD><D6B7>Χ<EFBFBD><CEA7>0x00000000 ~ 0x0006FFFF
*******************************************************************************/
__attribute__((section(".non_0_wait"))) void SPI_FLASH_APP_Data_Erase(void)
{
for(uint8_t i = 0;i < 7;i++)
{
Flash_Erase_Block(i);
}
}
/*******************************************************************************
* Function Name : SPI_FLASH_Logic_File_Erase
* Description : <20>ⲿFlash <20><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC>ռ<EFBFBD><D5BC><EFBFBD><EFBFBD><EFBFBD>
* APP<50>ռ<EFBFBD><D5BC><EFBFBD>С Size: 0x00090000 <20><>ַ<EFBFBD><D6B7>Χ<EFBFBD><CEA7>0x00070000 ~ 0x000FFFFF
*******************************************************************************/
__attribute__((section(".non_0_wait"))) void SPI_FLASH_Logic_File_Erase(void)
{
for(uint8_t i = 7;i < 16;i++)
{
Flash_Erase_Block(i);
}
}

View File

@@ -341,7 +341,7 @@ __attribute__((section(".non_0_wait"))) void UART3_RECEIVE(void)
*
* @return none
*/
uint8_t UART0_ChangeBaud(uint32_t baudrate)
__attribute__((section(".non_0_wait"))) uint8_t UART0_ChangeBaud(uint32_t baudrate)
{
uint16_t delay_num = 0;
@@ -392,7 +392,7 @@ uint8_t UART0_ChangeBaud(uint32_t baudrate)
*
* @return none
*/
uint8_t UART1_ChangeBaud(uint32_t baudrate)
__attribute__((section(".non_0_wait"))) uint8_t UART1_ChangeBaud(uint32_t baudrate)
{
uint16_t delay_num = 0;
@@ -440,7 +440,7 @@ uint8_t UART1_ChangeBaud(uint32_t baudrate)
*
* @return none
*/
uint8_t UART2_ChangeBaud(uint32_t baudrate)
__attribute__((section(".non_0_wait"))) uint8_t UART2_ChangeBaud(uint32_t baudrate)
{
uint16_t delay_num = 0;
@@ -488,7 +488,7 @@ uint8_t UART2_ChangeBaud(uint32_t baudrate)
*
* @return none
*/
uint8_t UART3_ChangeBaud(uint32_t baudrate)
__attribute__((section(".non_0_wait"))) uint8_t UART3_ChangeBaud(uint32_t baudrate)
{
uint16_t delay_num = 0;
@@ -535,7 +535,7 @@ uint8_t UART3_ChangeBaud(uint32_t baudrate)
* Input : over_time -- <20>ȴ<EFBFBD><C8B4><EFBFBD>ʱʱ<CAB1><CAB1>
* Return : None
*******************************************************************************/
void Uart0_Flush(uint16_t over_time)
__attribute__((section(".non_0_wait"))) void Uart0_Flush(uint16_t over_time)
{
uint16_t delay_num = 0;
@@ -556,7 +556,7 @@ void Uart0_Flush(uint16_t over_time)
* Input : over_time -- <20>ȴ<EFBFBD><C8B4><EFBFBD>ʱʱ<CAB1><CAB1>
* Return : None
*******************************************************************************/
void Uart1_Flush(uint16_t over_time)
__attribute__((section(".non_0_wait"))) void Uart1_Flush(uint16_t over_time)
{
uint16_t delay_num = 0;
@@ -577,7 +577,7 @@ void Uart1_Flush(uint16_t over_time)
* Input : over_time -- <20>ȴ<EFBFBD><C8B4><EFBFBD>ʱʱ<CAB1><CAB1>
* Return : None
*******************************************************************************/
void Uart2_Flush(uint16_t over_time)
__attribute__((section(".non_0_wait"))) void Uart2_Flush(uint16_t over_time)
{
uint16_t delay_num = 0;
@@ -598,7 +598,7 @@ void Uart2_Flush(uint16_t over_time)
* Input : over_time -- <20>ȴ<EFBFBD><C8B4><EFBFBD>ʱʱ<CAB1><CAB1>
* Return : None
*******************************************************************************/
void Uart3_Flush(uint16_t over_time)
__attribute__((section(".non_0_wait"))) void Uart3_Flush(uint16_t over_time)
{
uint16_t delay_num = 0;
@@ -622,7 +622,7 @@ void Uart3_Flush(uint16_t over_time)
* len - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>
* Return : None
*******************************************************************************/
void Uart_SendString(uint8_t uart_id,uint8_t* buff,uint16_t len)
__attribute__((section(".non_0_wait"))) void Uart_SendString(uint8_t uart_id,uint8_t* buff,uint16_t len)
{
switch(uart_id)
{
@@ -651,7 +651,7 @@ void Uart_SendString(uint8_t uart_id,uint8_t* buff,uint16_t len)
l - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>
* Return : None
*******************************************************************************/
void MCU485_SendString_1(uint8_t *buf, uint16_t len)
__attribute__((section(".non_0_wait"))) void MCU485_SendString_1(uint8_t *buf, uint16_t len)
{
uint16_t delay_num = 0;
@@ -680,7 +680,7 @@ void MCU485_SendString_1(uint8_t *buf, uint16_t len)
len - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>
* Return : None
*******************************************************************************/
void MCU485_SendString_2(uint8_t *buf, uint16_t len)
__attribute__((section(".non_0_wait"))) void MCU485_SendString_2(uint8_t *buf, uint16_t len)
{
uint16_t delay_num = 0;
@@ -709,7 +709,7 @@ void MCU485_SendString_2(uint8_t *buf, uint16_t len)
len - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>
* Return : None
*******************************************************************************/
void MCU485_SendString_3(uint8_t *buf, uint16_t len)
__attribute__((section(".non_0_wait"))) void MCU485_SendString_3(uint8_t *buf, uint16_t len)
{
uint16_t delay_num = 0;
@@ -738,7 +738,7 @@ void MCU485_SendString_3(uint8_t *buf, uint16_t len)
len -- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>
* Return : None
*******************************************************************************/
void MCU485_SendString(uint8_t uart_id,uint8_t* buff,uint16_t len)
__attribute__((section(".non_0_wait"))) void MCU485_SendString(uint8_t uart_id,uint8_t* buff,uint16_t len)
{
switch(uart_id)
{
@@ -774,7 +774,7 @@ void MCU485_SendString(uint8_t uart_id,uint8_t* buff,uint16_t len)
len -- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>
* Return : None
*******************************************************************************/
void MCU485_SendSRAMData(uint8_t uart_id,uint32_t data_addr,uint16_t len)
__attribute__((section(".non_0_wait"))) void MCU485_SendSRAMData(uint8_t uart_id,uint32_t data_addr,uint16_t len)
{
uint16_t buff_len = len;
uint8_t send_buff[buff_len];
@@ -794,7 +794,7 @@ void MCU485_SendSRAMData(uint8_t uart_id,uint32_t data_addr,uint16_t len)
buff - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
len -- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>
*******************************************************************************/
void Write_Uart_SendBuff(uint8_t uart_id,uint8_t uart_outime,uint8_t* buff,uint16_t len)
__attribute__((section(".non_0_wait"))) void Write_Uart_SendBuff(uint8_t uart_id,uint8_t uart_outime,uint8_t* buff,uint16_t len)
{
switch(uart_id)
{