From c71b3ebbb44c56a9dc62c96a90ebed785832fdf7 Mon Sep 17 00:00:00 2001 From: Frank Voorburg Date: Tue, 1 Aug 2017 09:59:19 +0000 Subject: [PATCH] Refs #316. Added support for firmware updates via CAN to BootCommander. git-svn-id: https://svn.code.sf.net/p/openblt/code/trunk@322 5dc33758-31d5-4daf-9ae8-b24bf3d40d73 --- Host/BootCommander.exe | Bin 96256 -> 121344 bytes Host/Source/BootCommander/main.c | 163 ++++++++++++++++++++++++++++++- Host/libopenblt.dll | Bin 102400 -> 102912 bytes 3 files changed, 162 insertions(+), 1 deletion(-) diff --git a/Host/BootCommander.exe b/Host/BootCommander.exe index 1f91b87b071a83acd885050661beee3c7013f036..3fcd116a8b564666c19c143fb0d7da68e33c68da 100644 GIT binary patch literal 121344 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

C{hvj`VquAJ9(wGT zATGR8SSDNxZ+)|{1|E2=v>x{PS?L8t#jnB_za_l~sn{eP6&f2V4^0lmLM`yHOVATW YVWk6@y|AMw47Ql=&pvCv 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 Z&7d%%u>wzsxHMubhYS6Vl(sID{x67`6ubZc diff --git a/Host/Source/BootCommander/main.c b/Host/Source/BootCommander/main.c index 05962f60..aac4e6c7 100644 --- a/Host/Source/BootCommander/main.c +++ b/Host/Source/BootCommander/main.c @@ -162,6 +162,7 @@ int main(int argc, char const * const argv[]) DisplaySessionInfo(appSessionType, appSessionSettings); /* Display transport info. */ DisplayTransportInfo(appTransportType, appTransportSettings); + } /* -------------------- Firmware loading ------------------------------------------- */ @@ -419,6 +420,7 @@ static void DisplayProgramUsage(void) printf(" xcp (default) -> XCP version 1.0.\n"); printf(" -t=[name] Name of the communication transport layer:\n"); printf(" xcp_rs232 (default) -> XCP on RS232.\n"); + printf(" xcp_can -> XCP on CAN.\n"); printf("\n"); printf("XCP version 1.0 settings (xcp):\n"); printf(" -t1=[timeout] Command response timeout in milliseconds as a 16-bit\n"); @@ -439,6 +441,31 @@ static void DisplayProgramUsage(void) printf(" -b=[value] The communication speed, a.k.a baudrate in bits per\n"); printf(" second, as a 32-bit value (Default = 57600).\n"); printf(" Supported values: 9600, 19200, 38400, 57600, 115200.\n"); + printf("\n"); + printf("XCP on CAN settings (xcp_can):\n"); + printf(" -d=[name] Name of the CAN device (Mandatory). On Linux this is\n"); + printf(" the name of the SocketCAN network interface, such as\n"); + printf(" can0, slcan0. On Windows it specifies the CAN adapter.\n"); + printf(" Currently supported CAN adapters:\n"); + printf(" peak_pcanusb -> Peak System PCAN-USB.\n"); + printf(" kvaser_leaflight -> Kvaser Leaf Light V2.\n"); + printf(" lawicel_canusb -> Lawicel CANUSB.\n"); + printf(" -c=[value] Zero based index of the CAN channel if multiple CAN\n"); + printf(" channels are supported for the CAN adapter, as a 32-\n"); + printf(" bit value (Default = 0).\n"); + printf(" -b=[value] The communication speed, a.k.a baudrate in bits per\n"); + printf(" second, as a 32-bit value (Default = 500000).\n"); + printf(" Supported values: 1000000, 800000, 500000, 250000,\n"); + printf(" 125000, 100000, 50000, 20000, 10000.\n"); + printf(" -tid=[value] CAN identifier for transmitting XCP command messages\n"); + printf(" from the host to the target, as a 32-bit hexadecimal.\n"); + printf(" value (Default = 667h).\n"); + printf(" -rid=[value] CAN identifier for receiving XCP response messages\n"); + printf(" from the target to the host, as a 32-bit hexadecimal.\n"); + printf(" value (Default = 7E1h).\n"); + printf(" -xid=[value] Configures the 'tid' and 'rid' CAN identifier values\n"); + printf(" as 29-bit CAN identifiers, if this 8-bit value is > 0\n"); + printf(" (Default = 0).\n"); printf("\n"); printf("Note that it is not necessary to specify an option if its default value\n"); printf("is already the desired value.\n"); @@ -524,6 +551,9 @@ static void DisplayTransportInfo(uint32_t transportType, void const * transportS case BLT_TRANSPORT_XCP_V10_RS232: printf("XCP on RS232\n"); break; + case BLT_TRANSPORT_XCP_V10_CAN: + printf("XCP on CAN\n"); + break; default: printf("Unknown\n"); break; @@ -561,6 +591,46 @@ static void DisplayTransportInfo(uint32_t transportType, void const * transportS } break; } + case BLT_TRANSPORT_XCP_V10_CAN: + { + /* Check settings pointer. */ + assert(transportSettings); + if (transportSettings == NULL) /*lint !e774 */ + { + /* No valid settings present. */ + printf(" -> Invalid setings specified\n"); + } + else + { + tBltTransportSettingsXcpV10Can * xcpCanSettings = + (tBltTransportSettingsXcpV10Can *)transportSettings; + + /* Output the settings to the user. */ + printf(" -> Device: "); + if (xcpCanSettings->deviceName != NULL) + { + printf("%s (channel %u)\n", xcpCanSettings->deviceName, + xcpCanSettings->deviceChannel); + } + else + { + printf("Unknown\n"); + } + printf(" -> Baudrate: %u bit/sec\n", xcpCanSettings->baudrate); + printf(" -> Transmit CAN identifier: %Xh\n", xcpCanSettings->transmitId); + printf(" -> Receive CAN identifier: %Xh\n", xcpCanSettings->receiveId); + printf(" -> Use 29-bit CAN identifiers: "); + if (xcpCanSettings->useExtended) + { + printf("Yes\n"); + } + else + { + printf("No\n"); + } + } + break; + } default: printf(" -> No settings specified\n"); break; @@ -773,7 +843,8 @@ static uint32_t ExtractTransportTypeFromCommandLine(int argc, char const * const uint32_t value; } transportMap[] = { - { .name = "xcp_rs232", .value = BLT_TRANSPORT_XCP_V10_RS232 } + { .name = "xcp_rs232", .value = BLT_TRANSPORT_XCP_V10_RS232 }, + { .name = "xcp_can", .value = BLT_TRANSPORT_XCP_V10_CAN } }; /* Set the default transport type in case nothing was specified on the command line. */ @@ -885,6 +956,96 @@ static void * ExtractTransportSettingsFromCommandLine(int argc, } } break; + /* -------------------------- XCP on CAN --------------------------------------- */ + case BLT_TRANSPORT_XCP_V10_CAN: + /* The following transport layer specific command line parameters are supported: + * -d=[name] -> Device name: peak_pcanusb, can0, etc. + * -c=[value] -> CAN channel index (32-bit). + * -b=[value] -> Baudrate in bits per second (32-bit). + * -tid=[value] -> Transmit CAN identifier (32-bit hexadecimal). + * -rid=[value] -> Receive CAN identifier (32-bit hexadecimal). + * -xid=[value] -> Flag for configuring extended CAN identifiers (8-bit). + */ + /* Allocate memory for storing the settings and check the result. */ + result = malloc(sizeof(tBltTransportSettingsXcpV10Can)); + assert(result != NULL); + if (result != NULL) /*lint !e774 */ + { + /* Create typed pointer for easy reading. */ + tBltTransportSettingsXcpV10Can * canSettings = + (tBltTransportSettingsXcpV10Can *)result; + /* Set default values. */ + canSettings->deviceName = NULL; + canSettings->deviceChannel = 0; + canSettings->baudrate = 500000; + canSettings->transmitId = 0x667; + canSettings->receiveId = 0x7E1; + canSettings->useExtended = false; + /* Loop through all the command line parameters, just skip the 1st one because + * this is the name of the program, which we are not interested in. + */ + for (paramIdx = 1; paramIdx < argc; paramIdx++) + { + /* Is this the -d=[name] parameter? */ + if ( (strstr(argv[paramIdx], "-d=") != NULL) && + (strlen(argv[paramIdx]) > 3) ) + { + /* Store the pointer to the device name. */ + canSettings->deviceName = &argv[paramIdx][3]; + /* Continue with next loop iteration. */ + continue; + } + /* Is this the -c=[value] parameter? */ + if ( (strstr(argv[paramIdx], "-c=") != NULL) && + (strlen(argv[paramIdx]) > 3) ) + { + /* Extract the channel index value. */ + sscanf(&argv[paramIdx][3], "%u", &(canSettings->deviceChannel)); + /* Continue with next loop iteration. */ + continue; + } + /* Is this the -b=[value] parameter? */ + if ( (strstr(argv[paramIdx], "-b=") != NULL) && + (strlen(argv[paramIdx]) > 3) ) + { + /* Extract the baudrate value. */ + sscanf(&argv[paramIdx][3], "%u", &(canSettings->baudrate)); + /* Continue with next loop iteration. */ + continue; + } + /* Is this the -tid=[value] parameter? */ + if ( (strstr(argv[paramIdx], "-tid=") != NULL) && + (strlen(argv[paramIdx]) > 5) ) + { + /* Extract the hexadecimal transmit CAN identifier value. */ + sscanf(&argv[paramIdx][5], "%x", &(canSettings->transmitId)); + /* Continue with next loop iteration. */ + continue; + } + /* Is this the -rid=[value] parameter? */ + if ( (strstr(argv[paramIdx], "-rid=") != NULL) && + (strlen(argv[paramIdx]) > 5) ) + { + /* Extract the hexadecimal receive CAN identifier value. */ + sscanf(&argv[paramIdx][5], "%x", &(canSettings->receiveId)); + /* Continue with next loop iteration. */ + continue; + } + /* Is this the -xid=[value] parameter? */ + if ( (strstr(argv[paramIdx], "-xid=") != NULL) && + (strlen(argv[paramIdx]) > 5) ) + { + /* Extract the extended CAN identifier configuration value. */ + static uint8_t xidValue; + sscanf(&argv[paramIdx][5], "%hhu", &xidValue); + /* Convert to boolean. */ + canSettings->useExtended = ((xidValue > 0) ? true : false); + /* Continue with next loop iteration. */ + continue; + } + } + } + break; /* -------------------------- Unknown ------------------------------------------ */ default: /* Noting to extract. */ diff --git a/Host/libopenblt.dll b/Host/libopenblt.dll index a8e61e10b54ad8193f345f9c77e84385a4d9e1cf..bddffa422b2c3ae70d36d1f52c792e755055459a 100644 GIT binary patch delta 21331 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