From 26f1bbb933442a840e74b47db42c5c523829e410 Mon Sep 17 00:00:00 2001 From: josesimoes Date: Tue, 24 Nov 2020 01:31:34 +0000 Subject: [PATCH 1/2] Rework WP commands - Move Monitor_ReadMemory, Monitor_WriteMemory, Monitor_EraseMemory, Monitor_QueryConfiguration, Monitor_QueryConfiguration, Monitor_UpdateConfiguration, Monitor_CheckMemory, Monitor_MemoryMap, and Monitor_FlashSectorMap implementations to a common location. - Remove unnecessary flags check on several commands. - Remove weak attribute on several WP commands implementation. --- .../Include/WireProtocol_MonitorCommands.h | 1 + .../WireProtocol_MonitorCommands.c | 353 ++++++++++++++---- .../nanoBooter/WireProtocol_MonitorCommands.c | 334 +---------------- .../nanoBooter/WireProtocol_MonitorCommands.c | 296 +-------------- targets/os/win32/nanoCLR/Various.cpp | 7 + 5 files changed, 300 insertions(+), 691 deletions(-) diff --git a/src/CLR/Include/WireProtocol_MonitorCommands.h b/src/CLR/Include/WireProtocol_MonitorCommands.h index feb5e4b747..dea50aeb77 100644 --- a/src/CLR/Include/WireProtocol_MonitorCommands.h +++ b/src/CLR/Include/WireProtocol_MonitorCommands.h @@ -193,6 +193,7 @@ extern "C" int Monitor_TargetInfo(WP_Message *message); // helper functions + int AccessMemory(uint32_t location, uint32_t lengthInBytes, uint8_t *buffer, int32_t mode, uint32_t *errorCode); int nanoBooter_GetTargetInfo(TargetInfo *targetInfo); int NanoBooter_GetReleaseInfo(ReleaseInfo *releaseInfo); diff --git a/src/CLR/WireProtocol/WireProtocol_MonitorCommands.c b/src/CLR/WireProtocol/WireProtocol_MonitorCommands.c index c0733ba009..499f5d4cf3 100644 --- a/src/CLR/WireProtocol/WireProtocol_MonitorCommands.c +++ b/src/CLR/WireProtocol/WireProtocol_MonitorCommands.c @@ -5,63 +5,106 @@ #include #include "WireProtocol_MonitorCommands.h" +#include #include -//////////////////////////////////////////////////// +#if !defined(_WIN32) -// provided as weak to be replaced by actual implementation by application -__nfweak int Monitor_Ping(WP_Message *message) -{ - (void)(message); - - // default to false - return false; -} +////////////////////////////////////////////////// -// provided as weak to be replaced by actual implementation by application -__nfweak int Monitor_OemInfo(WP_Message *message) +int Monitor_Ping(WP_Message *message) { if ((message->m_header.m_flags & WP_Flags_c_Reply) == 0) { - Monitor_OemInfo_Reply cmdReply; + Monitor_Ping_Reply cmdReply; + cmdReply.Source = Monitor_Ping_c_Ping_Source_NanoBooter; + cmdReply.Flags = 0; + + // fill in the flags +#if defined(WP_IMPLEMENTS_CRC32) + cmdReply.Flags |= Monitor_Ping_c_Ping_WPFlag_SupportsCRC32; +#endif + +// Wire Protocol packet size +#if (WP_PACKET_SIZE == 512) + cmdReply.Flags |= Monitor_Ping_c_PacketSize_0512; +#elif (WP_PACKET_SIZE == 256) + cmdReply.Flags |= Monitor_Ping_c_PacketSize_0256; +#elif (WP_PACKET_SIZE == 128) + cmdReply.Flags |= Monitor_Ping_c_PacketSize_0128; +#elif (WP_PACKET_SIZE == 1024) + cmdReply.Flags |= Monitor_Ping_c_PacketSize_1024; +#endif - bool fOK = NanoBooter_GetReleaseInfo(&cmdReply.m_releaseInfo) == true; + if (Target_HasNanoBooter()) + { + cmdReply.Flags |= Monitor_Ping_c_HasNanoBooter; + } - WP_ReplyToCommand(message, fOK, false, &cmdReply, sizeof(cmdReply)); + if (Target_HasProprietaryBooter()) + { + cmdReply.Flags |= Monitor_Ping_c_HasProprietaryBooter; + } + + if (Target_IFUCapable()) + { + cmdReply.Flags |= Monitor_Ping_c_IFUCapable; + } + + if (Target_ConfigUpdateRequiresErase()) + { + cmdReply.Flags |= Monitor_Ping_c_ConfigBlockRequiresErase; + } + + WP_ReplyToCommand(message, true, false, &cmdReply, sizeof(cmdReply)); } return true; } // provided as weak to be replaced by actual implementation by application -__nfweak int Monitor_ReadMemory(WP_Message *message) +__nfweak int Monitor_OemInfo(WP_Message *message) { - (void)(message); + Monitor_OemInfo_Reply cmdReply; - // default to false - return false; + bool fOK = NanoBooter_GetReleaseInfo(&cmdReply.m_releaseInfo) == true; + + WP_ReplyToCommand(message, fOK, false, &cmdReply, sizeof(cmdReply)); + + return true; } -// provided as weak to be replaced by actual implementation by application -__nfweak int Monitor_WriteMemory(WP_Message *message) +int Monitor_ReadMemory(WP_Message *message) { - (void)(message); + CLR_DBG_Commands_Monitor_ReadMemory *cmd = (CLR_DBG_Commands_Monitor_ReadMemory *)message->m_payload; - // default to false - return false; + unsigned char buf[1024]; + unsigned int len = cmd->length; + if (len > sizeof(buf)) + len = sizeof(buf); + uint32_t errorCode; + + AccessMemory(cmd->address, len, buf, AccessMemory_Read, &errorCode); + + WP_ReplyToCommand(message, true, false, buf, len); + + return true; } -// provided as weak to be replaced by actual implementation by application -__nfweak int Monitor_Reboot(WP_Message *message) +int Monitor_WriteMemory(WP_Message *message) { - (void)(message); + CLR_DBG_Commands_Monitor_WriteMemory *cmd = (CLR_DBG_Commands_Monitor_WriteMemory *)message->m_payload; + CLR_DBG_Commands_Monitor_WriteMemory_Reply cmdReply; - // default to false - return false; + AccessMemory(cmd->address, cmd->length, cmd->data, AccessMemory_Write, &cmdReply); + + WP_ReplyToCommand(message, true, false, &cmdReply, sizeof(cmdReply)); + + return true; } // provided as weak to be replaced by actual implementation by application -__nfweak int Monitor_EraseMemory(WP_Message *message) +__nfweak int Monitor_Reboot(WP_Message *message) { (void)(message); @@ -69,62 +112,245 @@ __nfweak int Monitor_EraseMemory(WP_Message *message) return false; } -// provided as weak to be replaced by actual implementation by application -__nfweak int Monitor_QueryConfiguration(WP_Message *message) +int Monitor_EraseMemory(WP_Message *message) { - (void)(message); + CLR_DBG_Commands_Monitor_EraseMemory *cmd = (CLR_DBG_Commands_Monitor_EraseMemory *)message->m_payload; + CLR_DBG_Commands_Monitor_EraseMemory_Reply cmdReply; - // default to false - return false; + // TODO: not sure if we really need this + // nanoBooter_OnStateChange( State_MemoryErase, (void*)cmd->m_address ); + + AccessMemory(cmd->address, cmd->length, NULL, AccessMemory_Erase, &cmdReply); + + WP_ReplyToCommand(message, true, false, &cmdReply, sizeof(cmdReply)); + + return true; } -// provided as weak to be replaced by actual implementation by application -__nfweak int Monitor_UpdateConfiguration(WP_Message *message) +int Monitor_QueryConfiguration(WP_Message *message) { - (void)(message); + bool success = false; - // default to false - return false; + // include handling of configuration block only if feature is available +#if (HAS_CONFIG_BLOCK == TRUE) + + Monitor_QueryConfiguration_Command *cmd = (Monitor_QueryConfiguration_Command *)message->m_payload; + int size = 0; + + HAL_Configuration_NetworkInterface configNetworkInterface; + HAL_Configuration_Wireless80211 configWireless80211NetworkInterface; + + switch ((DeviceConfigurationOption)cmd->Configuration) + { + case DeviceConfigurationOption_Network: + + if (ConfigurationManager_GetConfigurationBlock( + (void *)&configNetworkInterface, + (DeviceConfigurationOption)cmd->Configuration, + cmd->BlockIndex) == true) + { + size = sizeof(HAL_Configuration_NetworkInterface); + success = true; + + WP_ReplyToCommand(message, success, false, (uint8_t *)&configNetworkInterface, size); + } + break; + + case DeviceConfigurationOption_Wireless80211Network: + + if (ConfigurationManager_GetConfigurationBlock( + (void *)&configWireless80211NetworkInterface, + (DeviceConfigurationOption)cmd->Configuration, + cmd->BlockIndex) == true) + { + size = sizeof(HAL_Configuration_Wireless80211); + success = true; + + WP_ReplyToCommand(message, success, false, (uint8_t *)&configWireless80211NetworkInterface, size); + } + break; + + case DeviceConfigurationOption_WirelessNetworkAP: + // TODO missing implementation for now + break; + + default: + break; + } + + if (!success) + { + WP_ReplyToCommand(message, success, false, NULL, size); + } + +#else + + (void)message; + +#endif // (HAS_CONFIG_BLOCK == TRUE) + + return success; } -// provided as weak to be replaced by actual implementation by application -__nfweak int Monitor_CheckMemory(WP_Message *message) +int Monitor_UpdateConfiguration(WP_Message *message) { - (void)(message); + bool success = false; - // default to false - return false; + // include handling of configuration block only if feature is available +#if (HAS_CONFIG_BLOCK == TRUE) + + Monitor_UpdateConfiguration_Command *cmd = (Monitor_UpdateConfiguration_Command *)message->m_payload; + Monitor_UpdateConfiguration_Reply cmdReply; + + switch ((DeviceConfigurationOption)cmd->Configuration) + { + case DeviceConfigurationOption_Network: + case DeviceConfigurationOption_Wireless80211Network: + case DeviceConfigurationOption_X509CaRootBundle: + case DeviceConfigurationOption_All: + if (ConfigurationManager_StoreConfigurationBlock( + cmd->Data, + (DeviceConfigurationOption)cmd->Configuration, + cmd->BlockIndex, + cmd->Length, + cmd->Offset, + cmd->Done) == true) + { + cmdReply.ErrorCode = 0; + success = true; + } + else + { + cmdReply.ErrorCode = 100; + } + break; + + default: + cmdReply.ErrorCode = 10; + } + + WP_ReplyToCommand(message, success, false, &cmdReply, sizeof(cmdReply)); + +#else + + (void)message; + +#endif // (HAS_CONFIG_BLOCK == TRUE) + + return success; } -// provided as weak to be replaced by actual implementation by application -__nfweak int Monitor_MemoryMap(WP_Message *message) +int Monitor_CheckMemory(WP_Message *message) { - (void)(message); + bool ret = false; - // default to false - return false; + CLR_DBG_Commands_Monitor_CheckMemory *cmd = (CLR_DBG_Commands_Monitor_CheckMemory *)message->m_payload; + CLR_DBG_Commands_Monitor_CheckMemory_Reply cmdReply; + uint32_t errorCode; + + ret = AccessMemory(cmd->address, cmd->length, (uint8_t *)&cmdReply, AccessMemory_Check, &errorCode); + + WP_ReplyToCommand(message, ret, false, &cmdReply, sizeof(cmdReply)); + + return ret; } -// provided as weak to be replaced by actual implementation by application -__nfweak int Monitor_FlashSectorMap(WP_Message *message) +int Monitor_MemoryMap(WP_Message *message) { - (void)(message); + MemoryMap_Range map[2]; - // default to false - return false; + map[0].m_address = HalSystemConfig.RAM1.Base; + map[0].m_length = HalSystemConfig.RAM1.Size; + map[0].m_flags = Monitor_MemoryMap_c_RAM; + + map[1].m_address = HalSystemConfig.FLASH1.Base; + map[1].m_length = HalSystemConfig.FLASH1.Size; + map[1].m_flags = Monitor_MemoryMap_c_FLASH; + + WP_ReplyToCommand(message, true, false, map, sizeof(map)); + + return true; } -// provided as weak to be replaced by actual implementation by application -__nfweak int Monitor_TargetInfo(WP_Message *message) +int Monitor_FlashSectorMap(WP_Message *message) { if ((message->m_header.m_flags & WP_Flags_c_Reply) == 0) { - Monitor_TargetInfo_Reply cmdReply; + struct Flash_BlockRegionInfo + { + unsigned int StartAddress; + unsigned int NumBlocks; + unsigned int BytesPerBlock; + unsigned int Usage; + + } *pData = NULL; + + unsigned int rangeCount = 0; + unsigned int rangeIndex = 0; + + for (int cnt = 0; cnt < 2; cnt++) + { + BlockStorageDevice *device = BlockStorageList_GetFirstDevice(); + + if (device == NULL) + { + WP_ReplyToCommand(message, true, false, NULL, 0); + return false; + } + + if (cnt == 1) + { + pData = + (struct Flash_BlockRegionInfo *)platform_malloc(rangeCount * sizeof(struct Flash_BlockRegionInfo)); + + if (pData == NULL) + { + WP_ReplyToCommand(message, true, false, NULL, 0); + return false; + } + } + + DeviceBlockInfo *deviceInfo = BlockStorageDevice_GetDeviceInfo(device); + + for (unsigned int i = 0; i < deviceInfo->NumRegions; i++) + { + const BlockRegionInfo *pRegion = &deviceInfo->Regions[i]; + + for (unsigned int j = 0; j < pRegion->NumBlockRanges; j++) + { + + if (cnt == 0) + { + rangeCount++; + } + else + { + pData[rangeIndex].StartAddress = + BlockRegionInfo_BlockAddress(pRegion, pRegion->BlockRanges[j].StartBlock); + pData[rangeIndex].NumBlocks = BlockRange_GetBlockCount(pRegion->BlockRanges[j]); + pData[rangeIndex].BytesPerBlock = pRegion->BytesPerBlock; + pData[rangeIndex].Usage = pRegion->BlockRanges[j].RangeType & BlockRange_USAGE_MASK; + rangeIndex++; + } + } + } + } + + WP_ReplyToCommand(message, true, false, (void *)pData, rangeCount * sizeof(struct Flash_BlockRegionInfo)); + + platform_free(pData); + } - bool fOK = nanoBooter_GetTargetInfo(&cmdReply.m_TargetInfo) == true; + return true; +} - WP_ReplyToCommand(message, fOK, false, &cmdReply, sizeof(cmdReply)); - } +int Monitor_TargetInfo(WP_Message *message) +{ + Monitor_TargetInfo_Reply cmdReply; + + bool fOK = nanoBooter_GetTargetInfo(&cmdReply.m_TargetInfo) == true; + + WP_ReplyToCommand(message, fOK, false, &cmdReply, sizeof(cmdReply)); return true; } @@ -132,8 +358,7 @@ __nfweak int Monitor_TargetInfo(WP_Message *message) ////////////////////////////////////////////////////////////////////// // helper functions -// provided as weak to be replaced by actual implementation by application -__nfweak int nanoBooter_GetTargetInfo(TargetInfo *targetInfo) +int nanoBooter_GetTargetInfo(TargetInfo *targetInfo) { #if (TARGET_HAS_NANOBOOTER == TRUE) @@ -171,7 +396,7 @@ __nfweak int nanoBooter_GetTargetInfo(TargetInfo *targetInfo) return true; } -__nfweak int NanoBooter_GetReleaseInfo(ReleaseInfo *releaseInfo) +int NanoBooter_GetReleaseInfo(ReleaseInfo *releaseInfo) { releaseInfo->version.usMajor = VERSION_MAJOR; releaseInfo->version.usMinor = VERSION_MINOR; @@ -185,3 +410,5 @@ __nfweak int NanoBooter_GetReleaseInfo(ReleaseInfo *releaseInfo) return true; } + +#endif // _WIN32 diff --git a/targets/CMSIS-OS/ChibiOS/nanoBooter/WireProtocol_MonitorCommands.c b/targets/CMSIS-OS/ChibiOS/nanoBooter/WireProtocol_MonitorCommands.c index 01882aafe3..93c07e036d 100644 --- a/targets/CMSIS-OS/ChibiOS/nanoBooter/WireProtocol_MonitorCommands.c +++ b/targets/CMSIS-OS/ChibiOS/nanoBooter/WireProtocol_MonitorCommands.c @@ -11,10 +11,9 @@ #include #include #include -#include #include -static int AccessMemory(uint32_t location, uint32_t lengthInBytes, uint8_t *buffer, int32_t mode, uint32_t *errorCode) +int AccessMemory(uint32_t location, uint32_t lengthInBytes, uint8_t *buffer, int32_t mode, uint32_t *errorCode) { // reset error code *errorCode = AccessMemoryErrorCode_NoError; @@ -50,97 +49,6 @@ static int AccessMemory(uint32_t location, uint32_t lengthInBytes, uint8_t *buff //////////////////////////////////////////////////// -int Monitor_Ping(WP_Message *message) -{ - if ((message->m_header.m_flags & WP_Flags_c_Reply) == 0) - { - Monitor_Ping_Reply cmdReply; - cmdReply.Source = Monitor_Ping_c_Ping_Source_NanoBooter; - cmdReply.Flags = 0; - - // fill in the flags -#if defined(WP_IMPLEMENTS_CRC32) - cmdReply.Flags |= Monitor_Ping_c_Ping_WPFlag_SupportsCRC32; -#endif - -// Wire Protocol packet size -#if (WP_PACKET_SIZE == 512) - cmdReply.Flags |= Monitor_Ping_c_PacketSize_0512; -#elif (WP_PACKET_SIZE == 256) - cmdReply.Flags |= Monitor_Ping_c_PacketSize_0256; -#elif (WP_PACKET_SIZE == 128) - cmdReply.Flags |= Monitor_Ping_c_PacketSize_0128; -#elif (WP_PACKET_SIZE == 1024) - cmdReply.Flags |= Monitor_Ping_c_PacketSize_1024; -#endif - - if (Target_HasNanoBooter()) - { - cmdReply.Flags |= Monitor_Ping_c_HasNanoBooter; - } - - if (Target_HasProprietaryBooter()) - { - cmdReply.Flags |= Monitor_Ping_c_HasProprietaryBooter; - } - - if (Target_IFUCapable()) - { - cmdReply.Flags |= Monitor_Ping_c_IFUCapable; - } - - if (Target_ConfigUpdateRequiresErase()) - { - cmdReply.Flags |= Monitor_Ping_c_ConfigBlockRequiresErase; - } - - WP_ReplyToCommand(message, true, false, &cmdReply, sizeof(cmdReply)); - } - - return true; -} - -int Monitor_ReadMemory(WP_Message *message) -{ - CLR_DBG_Commands_Monitor_ReadMemory *cmd = (CLR_DBG_Commands_Monitor_ReadMemory *)message->m_payload; - - unsigned char buf[1024]; - unsigned int len = cmd->length; - if (len > sizeof(buf)) - len = sizeof(buf); - uint32_t errorCode; - - AccessMemory(cmd->address, len, buf, AccessMemory_Read, &errorCode); - - WP_ReplyToCommand(message, true, false, buf, len); - - return true; -} - -int Monitor_WriteMemory(WP_Message *message) -{ - CLR_DBG_Commands_Monitor_WriteMemory *cmd = (CLR_DBG_Commands_Monitor_WriteMemory *)message->m_payload; - CLR_DBG_Commands_Monitor_WriteMemory_Reply cmdReply; - - // TODO: not sure if we really need this - // if(!m_signedDataState.VerifyContiguousData(cmd->m_address, cmd->m_length)) - // { - // m_signedDataState.EraseMemoryAndReset(); - - // return false; - // } - - // TODO: not sure if we really need this - // nanoBooter_OnStateChange(State_MemoryWrite, (void*)cmd->m_address); - - // assume at RAM, directly use the original address - AccessMemory(cmd->address, cmd->length, cmd->data, AccessMemory_Write, &cmdReply); - - WP_ReplyToCommand(message, true, false, &cmdReply, sizeof(cmdReply)); - - return true; -} - int Monitor_Reboot(WP_Message *message) { Monitor_Reboot_Command *cmd = (Monitor_Reboot_Command *)message->m_payload; @@ -165,243 +73,3 @@ int Monitor_Reboot(WP_Message *message) return true; } - -int Monitor_EraseMemory(WP_Message *message) -{ - CLR_DBG_Commands_Monitor_EraseMemory *cmd = (CLR_DBG_Commands_Monitor_EraseMemory *)message->m_payload; - CLR_DBG_Commands_Monitor_EraseMemory_Reply cmdReply; - - // TODO: not sure if we really need this - // nanoBooter_OnStateChange( State_MemoryErase, (void*)cmd->m_address ); - - AccessMemory(cmd->address, cmd->length, NULL, AccessMemory_Erase, &cmdReply); - - WP_ReplyToCommand(message, true, false, &cmdReply, sizeof(cmdReply)); - - return true; -} - -int Monitor_QueryConfiguration(WP_Message *message) -{ - bool success = false; - - // include handling of configuration block only if feature is available -#if (HAS_CONFIG_BLOCK == TRUE) - - Monitor_QueryConfiguration_Command *cmd = (Monitor_QueryConfiguration_Command *)message->m_payload; - int size = 0; - - HAL_Configuration_NetworkInterface configNetworkInterface; - HAL_Configuration_Wireless80211 configWireless80211NetworkInterface; - - switch ((DeviceConfigurationOption)cmd->Configuration) - { - case DeviceConfigurationOption_Network: - - if (ConfigurationManager_GetConfigurationBlock( - (void *)&configNetworkInterface, - (DeviceConfigurationOption)cmd->Configuration, - cmd->BlockIndex) == true) - { - size = sizeof(HAL_Configuration_NetworkInterface); - success = true; - - WP_ReplyToCommand(message, success, false, (uint8_t *)&configNetworkInterface, size); - } - break; - - case DeviceConfigurationOption_Wireless80211Network: - - if (ConfigurationManager_GetConfigurationBlock( - (void *)&configWireless80211NetworkInterface, - (DeviceConfigurationOption)cmd->Configuration, - cmd->BlockIndex) == true) - { - size = sizeof(HAL_Configuration_Wireless80211); - success = true; - - WP_ReplyToCommand(message, success, false, (uint8_t *)&configWireless80211NetworkInterface, size); - } - break; - - case DeviceConfigurationOption_WirelessNetworkAP: - // TODO missing implementation for now - break; - - default: - break; - } - - if (!success) - { - WP_ReplyToCommand(message, success, false, NULL, size); - } - -#else - - (void)message; - -#endif // (HAS_CONFIG_BLOCK == TRUE) - - return success; -} - -int Monitor_UpdateConfiguration(WP_Message *message) -{ - bool success = false; - - // include handling of configuration block only if feature is available -#if (HAS_CONFIG_BLOCK == TRUE) - - Monitor_UpdateConfiguration_Command *cmd = (Monitor_UpdateConfiguration_Command *)message->m_payload; - Monitor_UpdateConfiguration_Reply cmdReply; - - switch ((DeviceConfigurationOption)cmd->Configuration) - { - case DeviceConfigurationOption_Network: - case DeviceConfigurationOption_Wireless80211Network: - case DeviceConfigurationOption_X509CaRootBundle: - case DeviceConfigurationOption_All: - if (ConfigurationManager_StoreConfigurationBlock( - cmd->Data, - (DeviceConfigurationOption)cmd->Configuration, - cmd->BlockIndex, - cmd->Length, - cmd->Offset, - cmd->Done) == true) - { - cmdReply.ErrorCode = 0; - success = true; - } - else - { - cmdReply.ErrorCode = 100; - } - break; - - default: - cmdReply.ErrorCode = 10; - } - - WP_ReplyToCommand(message, success, false, &cmdReply, sizeof(cmdReply)); - -#else - - (void)message; - -#endif // (HAS_CONFIG_BLOCK == TRUE) - - return success; -} - -int Monitor_CheckMemory(WP_Message *message) -{ - bool ret = false; - - CLR_DBG_Commands_Monitor_CheckMemory *cmd = (CLR_DBG_Commands_Monitor_CheckMemory *)message->m_payload; - CLR_DBG_Commands_Monitor_CheckMemory_Reply cmdReply; - uint32_t errorCode; - - ret = AccessMemory(cmd->address, cmd->length, (uint8_t *)&cmdReply, AccessMemory_Check, &errorCode); - - WP_ReplyToCommand(message, ret, false, &cmdReply, sizeof(cmdReply)); - - return ret; -} - -int Monitor_MemoryMap(WP_Message *message) -{ - MemoryMap_Range map[2]; - - // if(m_signedDataState.CheckDirty()) - // { - // m_signedDataState.EraseMemoryAndReset(); - - // return false; - // } - - map[0].m_address = HalSystemConfig.RAM1.Base; - map[0].m_length = HalSystemConfig.RAM1.Size; - map[0].m_flags = Monitor_MemoryMap_c_RAM; - - map[1].m_address = HalSystemConfig.FLASH1.Base; - map[1].m_length = HalSystemConfig.FLASH1.Size; - map[1].m_flags = Monitor_MemoryMap_c_FLASH; - - WP_ReplyToCommand(message, true, false, map, sizeof(map)); - - return true; -} - -int Monitor_FlashSectorMap(WP_Message *message) -{ - - if ((message->m_header.m_flags & WP_Flags_c_Reply) == 0) - { - struct Flash_BlockRegionInfo - { - unsigned int StartAddress; - unsigned int NumBlocks; - unsigned int BytesPerBlock; - unsigned int Usage; - - } *pData = NULL; - - unsigned int rangeCount = 0; - unsigned int rangeIndex = 0; - - for (int cnt = 0; cnt < 2; cnt++) - { - BlockStorageDevice *device = BlockStorageList_GetFirstDevice(); - - if (device == NULL) - { - WP_ReplyToCommand(message, true, false, NULL, 0); - return false; - } - - if (cnt == 1) - { - pData = - (struct Flash_BlockRegionInfo *)platform_malloc(rangeCount * sizeof(struct Flash_BlockRegionInfo)); - - if (pData == NULL) - { - WP_ReplyToCommand(message, true, false, NULL, 0); - return false; - } - } - - DeviceBlockInfo *deviceInfo = BlockStorageDevice_GetDeviceInfo(device); - - for (unsigned int i = 0; i < deviceInfo->NumRegions; i++) - { - const BlockRegionInfo *pRegion = &deviceInfo->Regions[i]; - - for (unsigned int j = 0; j < pRegion->NumBlockRanges; j++) - { - - if (cnt == 0) - { - rangeCount++; - } - else - { - pData[rangeIndex].StartAddress = - BlockRegionInfo_BlockAddress(pRegion, pRegion->BlockRanges[j].StartBlock); - pData[rangeIndex].NumBlocks = BlockRange_GetBlockCount(pRegion->BlockRanges[j]); - pData[rangeIndex].BytesPerBlock = pRegion->BytesPerBlock; - pData[rangeIndex].Usage = pRegion->BlockRanges[j].RangeType & BlockRange_USAGE_MASK; - rangeIndex++; - } - } - } - } - - WP_ReplyToCommand(message, true, false, (void *)pData, rangeCount * sizeof(struct Flash_BlockRegionInfo)); - - platform_free(pData); - } - - return true; -} diff --git a/targets/FreeRTOS/NXP/nanoBooter/WireProtocol_MonitorCommands.c b/targets/FreeRTOS/NXP/nanoBooter/WireProtocol_MonitorCommands.c index 9fc6d8142a..4e616fcc16 100644 --- a/targets/FreeRTOS/NXP/nanoBooter/WireProtocol_MonitorCommands.c +++ b/targets/FreeRTOS/NXP/nanoBooter/WireProtocol_MonitorCommands.c @@ -12,12 +12,11 @@ #include #include #include -#include #include #define FLASH_ERASED_WORD 0xFFFFFFFF -static int AccessMemory(uint32_t location, uint32_t lengthInBytes, uint8_t *buffer, int32_t mode, uint32_t *errorCode) +int AccessMemory(uint32_t location, uint32_t lengthInBytes, uint8_t *buffer, int32_t mode, uint32_t *errorCode) { // reset error code *errorCode = AccessMemoryErrorCode_NoError; @@ -47,95 +46,6 @@ static int AccessMemory(uint32_t location, uint32_t lengthInBytes, uint8_t *buff //////////////////////////////////////////////////// -int Monitor_Ping(WP_Message *message) -{ - if ((message->m_header.m_flags & WP_Flags_c_Reply) == 0) - { - Monitor_Ping_Reply cmdReply; - cmdReply.Source = Monitor_Ping_c_Ping_Source_NanoBooter; - cmdReply.Flags = 0; - -#if defined(WP_IMPLEMENTS_CRC32) - cmdReply.Flags |= Monitor_Ping_c_Ping_WPFlag_SupportsCRC32; -#endif - -// Wire Protocol packet size -#if (WP_PACKET_SIZE == 512) - cmdReply.Flags |= Monitor_Ping_c_PacketSize_0512; -#elif (WP_PACKET_SIZE == 256) - cmdReply.Flags |= Monitor_Ping_c_PacketSize_0256; -#elif (WP_PACKET_SIZE == 128) - cmdReply.Flags |= Monitor_Ping_c_PacketSize_0128; -#elif (WP_PACKET_SIZE == 1024) - cmdReply.Flags |= Monitor_Ping_c_PacketSize_1024; -#endif - if (Target_HasNanoBooter()) - { - cmdReply.Flags |= Monitor_Ping_c_HasNanoBooter; - } - - if (Target_HasProprietaryBooter()) - { - cmdReply.Flags |= Monitor_Ping_c_HasProprietaryBooter; - } - - if (Target_IFUCapable()) - { - cmdReply.Flags |= Monitor_Ping_c_IFUCapable; - } - - if (Target_ConfigUpdateRequiresErase()) - { - cmdReply.Flags |= Monitor_Ping_c_ConfigBlockRequiresErase; - } - - WP_ReplyToCommand(message, true, false, &cmdReply, sizeof(cmdReply)); - } - - return true; -} - -int Monitor_ReadMemory(WP_Message *message) -{ - CLR_DBG_Commands_Monitor_ReadMemory *cmd = (CLR_DBG_Commands_Monitor_ReadMemory *)message->m_payload; - - unsigned char buf[1024]; - unsigned int len = cmd->length; - if (len > sizeof(buf)) - len = sizeof(buf); - uint32_t errorCode; - - AccessMemory(cmd->address, len, buf, AccessMemory_Read, &errorCode); - - WP_ReplyToCommand(message, true, false, buf, len); - - return true; -} - -int Monitor_WriteMemory(WP_Message *message) -{ - CLR_DBG_Commands_Monitor_WriteMemory *cmd = (CLR_DBG_Commands_Monitor_WriteMemory *)message->m_payload; - CLR_DBG_Commands_Monitor_WriteMemory_Reply cmdReply; - - // TODO: not sure if we really need this - // if(!m_signedDataState.VerifyContiguousData(cmd->m_address, cmd->m_length)) - // { - // m_signedDataState.EraseMemoryAndReset(); - - // return false; - // } - - // TODO: not sure if we really need this - // nanoBooter_OnStateChange(State_MemoryWrite, (void*)cmd->m_address); - - // assume at RAM, directly use the original address - AccessMemory(cmd->address, cmd->length, cmd->data, AccessMemory_Write, &cmdReply); - - WP_ReplyToCommand(message, true, false, &cmdReply, sizeof(cmdReply)); - - return true; -} - int Monitor_Reboot(WP_Message *message) { Monitor_Reboot_Command *cmd = (Monitor_Reboot_Command *)message->m_payload; @@ -160,207 +70,3 @@ int Monitor_Reboot(WP_Message *message) return true; } - -int Monitor_EraseMemory(WP_Message *message) -{ - CLR_DBG_Commands_Monitor_EraseMemory *cmd = (CLR_DBG_Commands_Monitor_EraseMemory *)message->m_payload; - CLR_DBG_Commands_Monitor_EraseMemory_Reply cmdReply; - - // TODO: not sure if we really need this - // nanoBooter_OnStateChange( State_MemoryErase, (void*)cmd->m_address ); - - AccessMemory(cmd->address, cmd->length, NULL, AccessMemory_Erase, &cmdReply); - - WP_ReplyToCommand(message, true, false, &cmdReply, sizeof(cmdReply)); - - return true; -} - -int Monitor_QueryConfiguration(WP_Message *message) -{ - bool success = false; - - // include handling of configuration block only if feature is available -#if (HAS_CONFIG_BLOCK == TRUE) - - Monitor_QueryConfiguration_Command *cmd = (Monitor_QueryConfiguration_Command *)message->m_payload; - int size = 0; - - switch ((DeviceConfigurationOption)cmd->Configuration) - { - case DeviceConfigurationOption_Network: - - // TODO missing implementation for now - break; - - case DeviceConfigurationOption_Wireless80211Network: - - // TODO missing implementation for now - break; - - case DeviceConfigurationOption_WirelessNetworkAP: - // TODO missing implementation for now - break; - - default: - break; - } - - if (!success) - { - WP_ReplyToCommand(message, success, false, NULL, size); - } - -#else - - (void)message; - -#endif // (HAS_CONFIG_BLOCK == TRUE) - - return success; -} - -int Monitor_UpdateConfiguration(WP_Message *message) -{ - bool success = false; - - // include handling of configuration block only if feature is available -#if (HAS_CONFIG_BLOCK == TRUE) - - Monitor_UpdateConfiguration_Command *cmd = (Monitor_UpdateConfiguration_Command *)message->m_payload; - Monitor_UpdateConfiguration_Reply cmdReply; - - switch ((DeviceConfigurationOption)cmd->Configuration) - { - case DeviceConfigurationOption_Network: - case DeviceConfigurationOption_Wireless80211Network: - case DeviceConfigurationOption_X509CaRootBundle: - case DeviceConfigurationOption_All: - // TODO missing implementation for now - - default: - cmdReply.ErrorCode = 10; - } - - WP_ReplyToCommand(message, success, false, &cmdReply, sizeof(cmdReply)); - -#else - - (void)message; - -#endif // (HAS_CONFIG_BLOCK == TRUE) - - return success; -} - -int Monitor_CheckMemory(WP_Message *message) -{ - bool ret = false; - - CLR_DBG_Commands_Monitor_CheckMemory *cmd = (CLR_DBG_Commands_Monitor_CheckMemory *)message->m_payload; - CLR_DBG_Commands_Monitor_CheckMemory_Reply cmdReply; - uint32_t errorCode; - - ret = AccessMemory(cmd->address, cmd->length, (uint8_t *)&cmdReply, AccessMemory_Check, &errorCode); - - WP_ReplyToCommand(message, ret, false, &cmdReply, sizeof(cmdReply)); - - return ret; -} - -int Monitor_MemoryMap(WP_Message *message) -{ - MemoryMap_Range map[2]; - - // if(m_signedDataState.CheckDirty()) - // { - // m_signedDataState.EraseMemoryAndReset(); - - // return false; - // } - - map[0].m_address = HalSystemConfig.RAM1.Base; - map[0].m_length = HalSystemConfig.RAM1.Size; - map[0].m_flags = Monitor_MemoryMap_c_RAM; - - map[1].m_address = HalSystemConfig.FLASH1.Base; - map[1].m_length = HalSystemConfig.FLASH1.Size; - map[1].m_flags = Monitor_MemoryMap_c_FLASH; - - WP_ReplyToCommand(message, true, false, map, sizeof(map)); - - return true; -} - -int Monitor_FlashSectorMap(WP_Message *message) -{ - - if ((message->m_header.m_flags & WP_Flags_c_Reply) == 0) - { - struct Flash_BlockRegionInfo - { - unsigned int StartAddress; - unsigned int NumBlocks; - unsigned int BytesPerBlock; - unsigned int Usage; - - } *pData = NULL; - - unsigned int rangeCount = 0; - unsigned int rangeIndex = 0; - - for (int cnt = 0; cnt < 2; cnt++) - { - BlockStorageDevice *device = BlockStorageList_GetFirstDevice(); - - if (device == NULL) - { - WP_ReplyToCommand(message, true, false, NULL, 0); - return false; - } - - if (cnt == 1) - { - pData = - (struct Flash_BlockRegionInfo *)platform_malloc(rangeCount * sizeof(struct Flash_BlockRegionInfo)); - - if (pData == NULL) - { - WP_ReplyToCommand(message, true, false, NULL, 0); - return false; - } - } - - DeviceBlockInfo *deviceInfo = BlockStorageDevice_GetDeviceInfo(device); - - for (unsigned int i = 0; i < deviceInfo->NumRegions; i++) - { - const BlockRegionInfo *pRegion = &deviceInfo->Regions[i]; - - for (unsigned int j = 0; j < pRegion->NumBlockRanges; j++) - { - - if (cnt == 0) - { - rangeCount++; - } - else - { - pData[rangeIndex].StartAddress = - BlockRegionInfo_BlockAddress(pRegion, pRegion->BlockRanges[j].StartBlock); - pData[rangeIndex].NumBlocks = BlockRange_GetBlockCount(pRegion->BlockRanges[j]); - pData[rangeIndex].BytesPerBlock = pRegion->BytesPerBlock; - pData[rangeIndex].Usage = pRegion->BlockRanges[j].RangeType & BlockRange_USAGE_MASK; - rangeIndex++; - } - } - } - } - - WP_ReplyToCommand(message, true, false, (void *)pData, rangeCount * sizeof(struct Flash_BlockRegionInfo)); - - platform_free(pData); - } - - return true; -} diff --git a/targets/os/win32/nanoCLR/Various.cpp b/targets/os/win32/nanoCLR/Various.cpp index 04c47f8ac3..ccdd9ce317 100644 --- a/targets/os/win32/nanoCLR/Various.cpp +++ b/targets/os/win32/nanoCLR/Various.cpp @@ -627,3 +627,10 @@ size_t CPU_GetUncachableAddress( size_t address ) } /////////////////////////////////////////////////////////////// + +int nanoBooter_GetTargetInfo(TargetInfo *targetInfo) +{ + return 0; +} + +/////////////////////////////////////////////////////////////// From e362c52b93203b6e764620de0ba82d0cf1df7017 Mon Sep 17 00:00:00 2001 From: nfbot Date: Tue, 24 Nov 2020 02:34:42 +0000 Subject: [PATCH 2/2] Code style fixes Automated fixes for code style. --- targets/os/win32/nanoCLR/Various.cpp | 389 ++++++++++++++------------- 1 file changed, 196 insertions(+), 193 deletions(-) diff --git a/targets/os/win32/nanoCLR/Various.cpp b/targets/os/win32/nanoCLR/Various.cpp index ccdd9ce317..e85bb84669 100644 --- a/targets/os/win32/nanoCLR/Various.cpp +++ b/targets/os/win32/nanoCLR/Various.cpp @@ -8,13 +8,13 @@ #include "platform_selector.h" //--// -//using namespace System; -//using namespace System::Diagnostics; -//using namespace Microsoft::SPOT::Emulator; +// using namespace System; +// using namespace System::Diagnostics; +// using namespace Microsoft::SPOT::Emulator; bool HAL_Windows_IsShutdownPending() { - return false; //return EmulatorNative::GetEmulatorNative()->IsShuttingDown(); + return false; // return EmulatorNative::GetEmulatorNative()->IsShuttingDown(); } void HAL_Windows_AcquireGlobalLock() @@ -37,72 +37,75 @@ uint64_t HAL_Windows_GetPerformanceTicks() return 0; // UNDONE: FIXME: return EmulatorNative::GetEmulatorNative()->GetCurrentTicks(); } -void HAL_Windows_Debug_Print( char* szText ) +void HAL_Windows_Debug_Print(char *szText) { // UNDONE: FIXME: System::Diagnostics::Debug::Print( gcnew System::String(szText) ); } +// HAL_Configuration_Windows g_HAL_Configuration_Windows; -//HAL_Configuration_Windows g_HAL_Configuration_Windows; +// unsigned int LOAD_IMAGE_CalcCRC; -//unsigned int LOAD_IMAGE_CalcCRC; +// OEM_MODEL_SKU OEM_Model_SKU = { 1, 2, 3 }; -//OEM_MODEL_SKU OEM_Model_SKU = { 1, 2, 3 }; - -HAL_SYSTEM_CONFIG HalSystemConfig = -{ - { true }, // HAL_DRIVER_CONFIG_HEADER Header; +HAL_SYSTEM_CONFIG HalSystemConfig = { + {true}, // HAL_DRIVER_CONFIG_HEADER Header; //--// - // unsigned int DebuggerPorts[MAX_DEBUGGERS]; + // unsigned int DebuggerPorts[MAX_DEBUGGERS]; DEBUGGER_PORT, DEBUG_TEXT_PORT, 921600, - 0, // STDIO = COM2 or COM1 + 0, // STDIO = COM2 or COM1 - { 0, 0 }, // { SRAM1_MEMORY_Base, SRAM1_MEMORY_Size }, - { 0, 0 }, // { FLASH_MEMORY_Base, FLASH_MEMORY_Size }, + {0, 0}, // { SRAM1_MEMORY_Base, SRAM1_MEMORY_Size }, + {0, 0}, // { FLASH_MEMORY_Base, FLASH_MEMORY_Size }, }; -bool ConfigurationManager_GetConfigurationBlock(void* configurationBlock, DeviceConfigurationOption configuration, uint32_t configurationIndex) +bool ConfigurationManager_GetConfigurationBlock( + void *configurationBlock, + DeviceConfigurationOption configuration, + uint32_t configurationIndex) { - return true; + return true; } -bool ConfigurationManager_StoreConfigurationBlock(void* configurationBlock, DeviceConfigurationOption configuration, uint32_t configurationIndex, uint32_t blockSize, bool done) +bool ConfigurationManager_StoreConfigurationBlock( + void *configurationBlock, + DeviceConfigurationOption configuration, + uint32_t configurationIndex, + uint32_t blockSize, + bool done) { - return true; + return true; } -int mbedtls_base64_encode(unsigned char *dst, size_t dlen, size_t *olen, - const unsigned char *src, size_t slen) +int mbedtls_base64_encode(unsigned char *dst, size_t dlen, size_t *olen, const unsigned char *src, size_t slen) { - return 0; + return 0; } -int mbedtls_base64_decode(unsigned char *dst, size_t dlen, size_t *olen, - const unsigned char *src, size_t slen) +int mbedtls_base64_decode(unsigned char *dst, size_t dlen, size_t *olen, const unsigned char *src, size_t slen) { - return 0; + return 0; } __nfweak void NFReleaseInfo::Init( - NFReleaseInfo& NFReleaseInfo, - unsigned short int major, - unsigned short int minor, - unsigned short int build, - unsigned short int revision, - const char *info, - size_t infoLen, - const char *target, - size_t targetLen, - const char *platform, - size_t platformLen) -{ - -} -//const ConfigurationSector g_ConfigurationSector = + NFReleaseInfo &NFReleaseInfo, + unsigned short int major, + unsigned short int minor, + unsigned short int build, + unsigned short int revision, + const char *info, + size_t infoLen, + const char *target, + size_t targetLen, + const char *platform, + size_t platformLen) +{ +} +// const ConfigurationSector g_ConfigurationSector = //{ // // ConfigurationLength // offsetof(ConfigurationSector, FirstConfigBlock), @@ -142,7 +145,7 @@ __nfweak void NFReleaseInfo::Init( // }, // // //NANOBOOTER_KEY_CONFIG DeploymentKey = -// { +// { // {// ODM key configuration for programming firmware (non deployment sectors) // { // ODM public key for firware sectors // // exponent length @@ -161,7 +164,7 @@ __nfweak void NFReleaseInfo::Init( // 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, // 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, // 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, -// 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, +// 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, // // // exponent // 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, @@ -176,7 +179,7 @@ __nfweak void NFReleaseInfo::Init( // 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, // 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, // 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, -// 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, +// 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, // } // }, // {// OEM key configuration for programming Deployment sector @@ -197,7 +200,7 @@ __nfweak void NFReleaseInfo::Init( // 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, // 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, // 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, -// 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, +// 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, // // // exponent // 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, @@ -212,7 +215,7 @@ __nfweak void NFReleaseInfo::Init( // 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, // 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, // 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, -// 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, +// 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, // } // } // }, @@ -236,35 +239,40 @@ __nfweak void NFReleaseInfo::Init( // // // CLR Config Data // { -// 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, -// 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, -// 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, -// 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, -// 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, -// 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, -// 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, -// 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, -// 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, -// 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, +// 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, +// 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, +// 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, +// 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, +// 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, +// 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, +// 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, +// 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, +// 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, +// 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, +// 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, +// 0xFFFFFFFF, // -// 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, -// 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, -// 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, -// 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, -// 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, -// 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, -// 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, -// 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, -// 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, -// 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, +// 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, +// 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, +// 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, +// 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, +// 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, +// 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, +// 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, +// 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, +// 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, +// 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, +// 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, +// 0xFFFFFFFF, // -// 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, -// 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, -// 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, -// 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, -// 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, -// 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, -// 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, +// 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, +// 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, +// 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, +// 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, +// 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, +// 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, +// 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, +// 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, // }, // // //--//--//--// @@ -285,14 +293,14 @@ static ON_SOFT_REBOOT_HANDLER s_rebootHandlers[5] = {NULL, NULL, NULL, NULL, NUL void __cdecl HAL_AddSoftRebootHandler(ON_SOFT_REBOOT_HANDLER handler) { - for(int i=0; i 0) + if (ticks > 0) { - ::QueryPerformanceFrequency( &frequency ); + ::QueryPerformanceFrequency(&frequency); - ::QueryPerformanceCounter ( &countStart ); + ::QueryPerformanceCounter(&countStart); double ratio = (double)TIME_CONVERSION__TO_SECONDS / (double)frequency.QuadPart; countEnd.QuadPart = (signed __int64)(((countStart.QuadPart * ratio) + ticks) / ratio); - while(countStart.QuadPart < countEnd.QuadPart) + while (countStart.QuadPart < countEnd.QuadPart) { - ::QueryPerformanceCounter( &countStart ); + ::QueryPerformanceCounter(&countStart); } } } @@ -461,98 +472,95 @@ void HAL_Windows_FastSleep( signed __int64 ticks ) #pragma managed(push, off) - -int hal_printf( const char* format, ... ) +int hal_printf(const char *format, ...) { va_list arg_ptr; va_start(arg_ptr, format); - int chars = hal_vprintf( format, arg_ptr ); + int chars = hal_vprintf(format, arg_ptr); - va_end( arg_ptr ); + va_end(arg_ptr); return chars; } -int hal_vprintf( const char* format, va_list arg ) +int hal_vprintf(const char *format, va_list arg) { - return vprintf( format, arg ); + return vprintf(format, arg); } - -int hal_fprintf( COM_HANDLE stream, const char* format, ... ) +int hal_fprintf(COM_HANDLE stream, const char *format, ...) { va_list arg_ptr; - int chars; + int chars; - va_start( arg_ptr, format ); + va_start(arg_ptr, format); - chars = hal_vfprintf( stream, format, arg_ptr ); + chars = hal_vfprintf(stream, format, arg_ptr); - va_end( arg_ptr ); + va_end(arg_ptr); return chars; } -int hal_vfprintf( COM_HANDLE stream, const char* format, va_list arg ) +int hal_vfprintf(COM_HANDLE stream, const char *format, va_list arg) { char buffer[512]; int chars = 0; - chars = hal_vsnprintf( buffer, sizeof(buffer), format, arg ); + chars = hal_vsnprintf(buffer, sizeof(buffer), format, arg); - //switch(ExtractTransport(stream)) + // switch(ExtractTransport(stream)) //{ - //default: - DebuggerPort_Write( stream, buffer, chars); // skip null terminator + // default: + DebuggerPort_Write(stream, buffer, chars); // skip null terminator // break; - //case FLASH_WRITE_TRANSPORT: + // case FLASH_WRITE_TRANSPORT: // _ASSERTE(FALSE); //} return chars; } -int hal_snprintf( char* buffer, size_t len, const char* format, ... ) +int hal_snprintf(char *buffer, size_t len, const char *format, ...) { va_list arg_ptr; - int chars; + int chars; - va_start( arg_ptr, format ); + va_start(arg_ptr, format); - chars = hal_vsnprintf( buffer, len, format, arg_ptr ); + chars = hal_vsnprintf(buffer, len, format, arg_ptr); - va_end( arg_ptr ); + va_end(arg_ptr); return chars; } -int hal_vsnprintf( char* buffer, size_t len, const char* format, va_list arg ) +int hal_vsnprintf(char *buffer, size_t len, const char *format, va_list arg) { - return _vsnprintf_s( buffer, len, len-1/* force space for trailing zero*/, format, arg ); + return _vsnprintf_s(buffer, len, len - 1 /* force space for trailing zero*/, format, arg); } - // Compares 2 ASCII strings case insensitive. Does not take locale into account. -int hal_stricmp(const char * dst, const char * src) +int hal_stricmp(const char *dst, const char *src) { - int f = 0, l = 0; + int f = 0, l = 0; - do - { - if (((f = (unsigned char)(*(dst++))) >= 'A') && (f <= 'Z')) - { - f -= 'A' - 'a'; - } - if (((l = (unsigned char)(*(src++))) >= 'A') && (l <= 'Z')) - { - l -= 'A' - 'a'; - } - } while (f && (f == l)); + do + { + if (((f = (unsigned char)(*(dst++))) >= 'A') && (f <= 'Z')) + { + f -= 'A' - 'a'; + } + if (((l = (unsigned char)(*(src++))) >= 'A') && (l <= 'Z')) + { + l -= 'A' - 'a'; + } + } while (f && (f == l)); - return(f - l); + return (f - l); } #pragma managed(pop) @@ -562,49 +570,44 @@ int hal_stricmp(const char * dst, const char * src) // CRC 32 table for use under ZModem protocol, IEEE 802 // G(x) = x^32+x^26+x^23+x^22+x^16+x^12+x^11+x^10+x^8+x^7+x^5+x^4+x^2+x+1 // -static const unsigned int c_CRCTable[256] = -{ - 0x00000000, 0x04C11DB7, 0x09823B6E, 0x0D4326D9, 0x130476DC, 0x17C56B6B, 0x1A864DB2, 0x1E475005, - 0x2608EDB8, 0x22C9F00F, 0x2F8AD6D6, 0x2B4BCB61, 0x350C9B64, 0x31CD86D3, 0x3C8EA00A, 0x384FBDBD, - 0x4C11DB70, 0x48D0C6C7, 0x4593E01E, 0x4152FDA9, 0x5F15ADAC, 0x5BD4B01B, 0x569796C2, 0x52568B75, - 0x6A1936C8, 0x6ED82B7F, 0x639B0DA6, 0x675A1011, 0x791D4014, 0x7DDC5DA3, 0x709F7B7A, 0x745E66CD, - 0x9823B6E0, 0x9CE2AB57, 0x91A18D8E, 0x95609039, 0x8B27C03C, 0x8FE6DD8B, 0x82A5FB52, 0x8664E6E5, - 0xBE2B5B58, 0xBAEA46EF, 0xB7A96036, 0xB3687D81, 0xAD2F2D84, 0xA9EE3033, 0xA4AD16EA, 0xA06C0B5D, - 0xD4326D90, 0xD0F37027, 0xDDB056FE, 0xD9714B49, 0xC7361B4C, 0xC3F706FB, 0xCEB42022, 0xCA753D95, - 0xF23A8028, 0xF6FB9D9F, 0xFBB8BB46, 0xFF79A6F1, 0xE13EF6F4, 0xE5FFEB43, 0xE8BCCD9A, 0xEC7DD02D, - 0x34867077, 0x30476DC0, 0x3D044B19, 0x39C556AE, 0x278206AB, 0x23431B1C, 0x2E003DC5, 0x2AC12072, - 0x128E9DCF, 0x164F8078, 0x1B0CA6A1, 0x1FCDBB16, 0x018AEB13, 0x054BF6A4, 0x0808D07D, 0x0CC9CDCA, - 0x7897AB07, 0x7C56B6B0, 0x71159069, 0x75D48DDE, 0x6B93DDDB, 0x6F52C06C, 0x6211E6B5, 0x66D0FB02, - 0x5E9F46BF, 0x5A5E5B08, 0x571D7DD1, 0x53DC6066, 0x4D9B3063, 0x495A2DD4, 0x44190B0D, 0x40D816BA, - 0xACA5C697, 0xA864DB20, 0xA527FDF9, 0xA1E6E04E, 0xBFA1B04B, 0xBB60ADFC, 0xB6238B25, 0xB2E29692, - 0x8AAD2B2F, 0x8E6C3698, 0x832F1041, 0x87EE0DF6, 0x99A95DF3, 0x9D684044, 0x902B669D, 0x94EA7B2A, - 0xE0B41DE7, 0xE4750050, 0xE9362689, 0xEDF73B3E, 0xF3B06B3B, 0xF771768C, 0xFA325055, 0xFEF34DE2, - 0xC6BCF05F, 0xC27DEDE8, 0xCF3ECB31, 0xCBFFD686, 0xD5B88683, 0xD1799B34, 0xDC3ABDED, 0xD8FBA05A, - 0x690CE0EE, 0x6DCDFD59, 0x608EDB80, 0x644FC637, 0x7A089632, 0x7EC98B85, 0x738AAD5C, 0x774BB0EB, - 0x4F040D56, 0x4BC510E1, 0x46863638, 0x42472B8F, 0x5C007B8A, 0x58C1663D, 0x558240E4, 0x51435D53, - 0x251D3B9E, 0x21DC2629, 0x2C9F00F0, 0x285E1D47, 0x36194D42, 0x32D850F5, 0x3F9B762C, 0x3B5A6B9B, - 0x0315D626, 0x07D4CB91, 0x0A97ED48, 0x0E56F0FF, 0x1011A0FA, 0x14D0BD4D, 0x19939B94, 0x1D528623, - 0xF12F560E, 0xF5EE4BB9, 0xF8AD6D60, 0xFC6C70D7, 0xE22B20D2, 0xE6EA3D65, 0xEBA91BBC, 0xEF68060B, - 0xD727BBB6, 0xD3E6A601, 0xDEA580D8, 0xDA649D6F, 0xC423CD6A, 0xC0E2D0DD, 0xCDA1F604, 0xC960EBB3, - 0xBD3E8D7E, 0xB9FF90C9, 0xB4BCB610, 0xB07DABA7, 0xAE3AFBA2, 0xAAFBE615, 0xA7B8C0CC, 0xA379DD7B, - 0x9B3660C6, 0x9FF77D71, 0x92B45BA8, 0x9675461F, 0x8832161A, 0x8CF30BAD, 0x81B02D74, 0x857130C3, - 0x5D8A9099, 0x594B8D2E, 0x5408ABF7, 0x50C9B640, 0x4E8EE645, 0x4A4FFBF2, 0x470CDD2B, 0x43CDC09C, - 0x7B827D21, 0x7F436096, 0x7200464F, 0x76C15BF8, 0x68860BFD, 0x6C47164A, 0x61043093, 0x65C52D24, - 0x119B4BE9, 0x155A565E, 0x18197087, 0x1CD86D30, 0x029F3D35, 0x065E2082, 0x0B1D065B, 0x0FDC1BEC, - 0x3793A651, 0x3352BBE6, 0x3E119D3F, 0x3AD08088, 0x2497D08D, 0x2056CD3A, 0x2D15EBE3, 0x29D4F654, - 0xC5A92679, 0xC1683BCE, 0xCC2B1D17, 0xC8EA00A0, 0xD6AD50A5, 0xD26C4D12, 0xDF2F6BCB, 0xDBEE767C, - 0xE3A1CBC1, 0xE760D676, 0xEA23F0AF, 0xEEE2ED18, 0xF0A5BD1D, 0xF464A0AA, 0xF9278673, 0xFDE69BC4, - 0x89B8FD09, 0x8D79E0BE, 0x803AC667, 0x84FBDBD0, 0x9ABC8BD5, 0x9E7D9662, 0x933EB0BB, 0x97FFAD0C, - 0xAFB010B1, 0xAB710D06, 0xA6322BDF, 0xA2F33668, 0xBCB4666D, 0xB8757BDA, 0xB5365D03, 0xB1F740B4 -}; - -uint32_t SUPPORT_ComputeCRC(const void* rgBlock, const uint32_t nLength, const uint32_t crc) -{ - const unsigned char* ptr = (const unsigned char*)rgBlock; - int32_t lenght = nLength; - uint32_t newCrc = crc; - - while(lenght-- > 0) +static const unsigned int c_CRCTable[256] = { + 0x00000000, 0x04C11DB7, 0x09823B6E, 0x0D4326D9, 0x130476DC, 0x17C56B6B, 0x1A864DB2, 0x1E475005, 0x2608EDB8, + 0x22C9F00F, 0x2F8AD6D6, 0x2B4BCB61, 0x350C9B64, 0x31CD86D3, 0x3C8EA00A, 0x384FBDBD, 0x4C11DB70, 0x48D0C6C7, + 0x4593E01E, 0x4152FDA9, 0x5F15ADAC, 0x5BD4B01B, 0x569796C2, 0x52568B75, 0x6A1936C8, 0x6ED82B7F, 0x639B0DA6, + 0x675A1011, 0x791D4014, 0x7DDC5DA3, 0x709F7B7A, 0x745E66CD, 0x9823B6E0, 0x9CE2AB57, 0x91A18D8E, 0x95609039, + 0x8B27C03C, 0x8FE6DD8B, 0x82A5FB52, 0x8664E6E5, 0xBE2B5B58, 0xBAEA46EF, 0xB7A96036, 0xB3687D81, 0xAD2F2D84, + 0xA9EE3033, 0xA4AD16EA, 0xA06C0B5D, 0xD4326D90, 0xD0F37027, 0xDDB056FE, 0xD9714B49, 0xC7361B4C, 0xC3F706FB, + 0xCEB42022, 0xCA753D95, 0xF23A8028, 0xF6FB9D9F, 0xFBB8BB46, 0xFF79A6F1, 0xE13EF6F4, 0xE5FFEB43, 0xE8BCCD9A, + 0xEC7DD02D, 0x34867077, 0x30476DC0, 0x3D044B19, 0x39C556AE, 0x278206AB, 0x23431B1C, 0x2E003DC5, 0x2AC12072, + 0x128E9DCF, 0x164F8078, 0x1B0CA6A1, 0x1FCDBB16, 0x018AEB13, 0x054BF6A4, 0x0808D07D, 0x0CC9CDCA, 0x7897AB07, + 0x7C56B6B0, 0x71159069, 0x75D48DDE, 0x6B93DDDB, 0x6F52C06C, 0x6211E6B5, 0x66D0FB02, 0x5E9F46BF, 0x5A5E5B08, + 0x571D7DD1, 0x53DC6066, 0x4D9B3063, 0x495A2DD4, 0x44190B0D, 0x40D816BA, 0xACA5C697, 0xA864DB20, 0xA527FDF9, + 0xA1E6E04E, 0xBFA1B04B, 0xBB60ADFC, 0xB6238B25, 0xB2E29692, 0x8AAD2B2F, 0x8E6C3698, 0x832F1041, 0x87EE0DF6, + 0x99A95DF3, 0x9D684044, 0x902B669D, 0x94EA7B2A, 0xE0B41DE7, 0xE4750050, 0xE9362689, 0xEDF73B3E, 0xF3B06B3B, + 0xF771768C, 0xFA325055, 0xFEF34DE2, 0xC6BCF05F, 0xC27DEDE8, 0xCF3ECB31, 0xCBFFD686, 0xD5B88683, 0xD1799B34, + 0xDC3ABDED, 0xD8FBA05A, 0x690CE0EE, 0x6DCDFD59, 0x608EDB80, 0x644FC637, 0x7A089632, 0x7EC98B85, 0x738AAD5C, + 0x774BB0EB, 0x4F040D56, 0x4BC510E1, 0x46863638, 0x42472B8F, 0x5C007B8A, 0x58C1663D, 0x558240E4, 0x51435D53, + 0x251D3B9E, 0x21DC2629, 0x2C9F00F0, 0x285E1D47, 0x36194D42, 0x32D850F5, 0x3F9B762C, 0x3B5A6B9B, 0x0315D626, + 0x07D4CB91, 0x0A97ED48, 0x0E56F0FF, 0x1011A0FA, 0x14D0BD4D, 0x19939B94, 0x1D528623, 0xF12F560E, 0xF5EE4BB9, + 0xF8AD6D60, 0xFC6C70D7, 0xE22B20D2, 0xE6EA3D65, 0xEBA91BBC, 0xEF68060B, 0xD727BBB6, 0xD3E6A601, 0xDEA580D8, + 0xDA649D6F, 0xC423CD6A, 0xC0E2D0DD, 0xCDA1F604, 0xC960EBB3, 0xBD3E8D7E, 0xB9FF90C9, 0xB4BCB610, 0xB07DABA7, + 0xAE3AFBA2, 0xAAFBE615, 0xA7B8C0CC, 0xA379DD7B, 0x9B3660C6, 0x9FF77D71, 0x92B45BA8, 0x9675461F, 0x8832161A, + 0x8CF30BAD, 0x81B02D74, 0x857130C3, 0x5D8A9099, 0x594B8D2E, 0x5408ABF7, 0x50C9B640, 0x4E8EE645, 0x4A4FFBF2, + 0x470CDD2B, 0x43CDC09C, 0x7B827D21, 0x7F436096, 0x7200464F, 0x76C15BF8, 0x68860BFD, 0x6C47164A, 0x61043093, + 0x65C52D24, 0x119B4BE9, 0x155A565E, 0x18197087, 0x1CD86D30, 0x029F3D35, 0x065E2082, 0x0B1D065B, 0x0FDC1BEC, + 0x3793A651, 0x3352BBE6, 0x3E119D3F, 0x3AD08088, 0x2497D08D, 0x2056CD3A, 0x2D15EBE3, 0x29D4F654, 0xC5A92679, + 0xC1683BCE, 0xCC2B1D17, 0xC8EA00A0, 0xD6AD50A5, 0xD26C4D12, 0xDF2F6BCB, 0xDBEE767C, 0xE3A1CBC1, 0xE760D676, + 0xEA23F0AF, 0xEEE2ED18, 0xF0A5BD1D, 0xF464A0AA, 0xF9278673, 0xFDE69BC4, 0x89B8FD09, 0x8D79E0BE, 0x803AC667, + 0x84FBDBD0, 0x9ABC8BD5, 0x9E7D9662, 0x933EB0BB, 0x97FFAD0C, 0xAFB010B1, 0xAB710D06, 0xA6322BDF, 0xA2F33668, + 0xBCB4666D, 0xB8757BDA, 0xB5365D03, 0xB1F740B4}; + +uint32_t SUPPORT_ComputeCRC(const void *rgBlock, const uint32_t nLength, const uint32_t crc) +{ + const unsigned char *ptr = (const unsigned char *)rgBlock; + int32_t lenght = nLength; + uint32_t newCrc = crc; + + while (lenght-- > 0) { newCrc = c_CRCTable[((newCrc >> 24) ^ (*ptr++)) & 0xFF] ^ (newCrc << 8); } @@ -614,14 +617,14 @@ uint32_t SUPPORT_ComputeCRC(const void* rgBlock, const uint32_t nLength, const u /////////////////////////////////////////////////////////////// -size_t CPU_GetCachableAddress( size_t address ) +size_t CPU_GetCachableAddress(size_t address) { return address; } //--// -size_t CPU_GetUncachableAddress( size_t address ) +size_t CPU_GetUncachableAddress(size_t address) { return address; } @@ -630,7 +633,7 @@ size_t CPU_GetUncachableAddress( size_t address ) int nanoBooter_GetTargetInfo(TargetInfo *targetInfo) { - return 0; + return 0; } ///////////////////////////////////////////////////////////////