This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
Can somebody explain this to me please? When I download the WIN version after installation no shortcut will show up on the desktop neither on my installed apps on WIN 10!
Maybe it is not compatible with 10? Any idea please?
Hello CaEngineer,
I just installed a fresh copy of MSP430 Flasher on my Windows 7 computer and reproduced the same results that you seem to be having. However, it seems like the shortcut is just missing from the start menu but the program installed correctly on my system. Please navigate over to the installation folder to run the MSP430Flasher.exe file (default folder is C:\TI\MSP430Flasher_1.3.7). To create a shortcut, right click on "MSP430Flasher.exe" and click "Create Shortcut" which you can then move to your desktop or to the start menu folder. The start menu folder for MSP430 Flasher on Windows 7 can be accessed here: C:\ProgramData\Microsoft\Windows\Start Menu\Programs\MSP430 Flasher
I will confirm with someone on our team here to see where we are with regards to Windows 10 compatibility.
Regards,
Akash Patel
CaEngineer,
Please first navigate to the C:\TI\MSP430Flasher_1.3.7 folder to see the installation files. Here you should see files similar to the ones in my above screenshot. Once you have done that, right click on the MSP430Flasher.exe file and create the shortcut which you can then move into the start menu folder in your screenshot.
Regards,
Akash
Akash,
On windows XP worked. But hen you click on .EXE on the desktop or within the folder it shows you the black dos screen for a second and disappears!
My main:
int main(int argc, char* argv[]) { int RetState = 0; // Prepare default options g_sOpt.pcInterface = g_Def.defInterface; g_sOpt.pcEraseType = g_Def.defEraseType; g_sOpt.pcVerify = g_Def.defFALSE; g_sOpt.pcVCC = 0; g_sOpt.pcPassword = g_Def.defPassword; g_sOpt.pcTimeout = g_Def.defTimeout; // Execute Flasher routine RetState = Flasher(argc, argv, &g_sOpt, &g_RTE); switch(RetState) { case 1: Help(); return RetState; break; case 2: Exit_Specs(); return RetState; break; } StdUseCase_Close(&g_sOpt); return RetState; }
Does not include any calling to my TXT file!
Ended up with the following. However, ReadFile does not call any TEXT file or HEX!
void StdUseCase_ReadWrite(sDefOptions_t* sOpt, sRTE_t* RTE) { string DeviceName = sOpt->pcDeviceName; string EraseType(sOpt->pcEraseType ? sOpt->pcEraseType : ""); string ReadFile(sOpt->pcReadFile ? sOpt->pcReadFile : ""); string ReadMem(sOpt->pcReadMem ? sOpt->pcReadMem : ""); ReadMem.erase(std::remove(ReadMem.begin(), ReadMem.end(), ' '), ReadMem.end()); if(ReadFile != "") // if MSP430 memory should be dumped { int32_t lwStart; int32_t lwLength; if(ReadMem == "RAM") { lwStart = g_tTargetDevice.ramStart; lwLength = g_tTargetDevice.ramEnd - g_tTargetDevice.ramStart + 1; } else if(ReadMem == "INFO") { lwStart = g_tTargetDevice.infoStart; lwLength = g_tTargetDevice.infoEnd - g_tTargetDevice.infoStart + 1; Print_N_Log(REPORT_MSG, "* Unlocking Info Memory A..."); Ret_Configure = MSP430_Configure(LOCKED_FLASH_ACCESS, ENABLE); if(Ret_Configure == STATUS_ERROR) { StdUseCase_Exit(EXIT_CONFIGURE, 0); } } else if(ReadMem == "MAIN") { lwStart = g_tTargetDevice.mainStart; lwLength = g_tTargetDevice.mainEnd - g_tTargetDevice.mainStart + 1; } else if(ReadMem == "BSL") { lwStart = g_tTargetDevice.bslStart; lwLength = g_tTargetDevice.bslEnd - g_tTargetDevice.bslStart + 1; Print_N_Log(REPORT_MSG, "* Unlocking BSL memory..."); Ret_Configure = MSP430_Configure(UNLOCK_BSL_MODE, 1); if(Ret_Configure == STATUS_ERROR) { StdUseCase_Exit(EXIT_CONFIGURE, 0); } } else if(ReadMem.find("0X") != string::npos) { size_t del_pos = ReadMem.find("-"); lwStart = (int32_t)strtol(ReadMem.substr(0, del_pos).c_str(), NULL, 16); /*if (lwStart % 2) { lwStart += 1; Print_N_Log(ERR_MSG, "* Warning : Uneven start address. Using 0x%x instead.\n", lwStart); }*/ lwLength = (int32_t)strtol(ReadMem.substr(del_pos+1, string::npos).c_str(), NULL, 16) - lwStart + 1; if (lwLength <= 0) { Print_N_Log(ERR_MSG, "* ERROR : Invalid memory boundaries specified.\n"); StdUseCase_Exit(EXIT_READOUTFILE, 0); } } Print_N_Log(REPORT_MSG,"* Dumping memory from %s into %s...", sOpt->pcReadMem, sOpt->pcReadFile); Ret_ReadFile = MSP430_ReadOutFile(lwStart, lwLength, sOpt->pcReadFile, RTE->file_type); if(Ret_ReadFile != STATUS_OK) { Print_N_Log(ERR_MSG, "* ERROR : Unable to read from memory.\n"); if (lwLength <= 0) StdUseCase_Exit(EXIT_READOUTFILE, 0); } } else { Ret_ReadFile = STATUS_OK; } // if MSP430 memory should be programmed if(Ret_OpenDevice == STATUS_OK && sOpt->pcFile != NULL) { // if BSL write is enabled if(Ret_OpenDevice == STATUS_OK && inst_state & WRITE_BSL) { Print_N_Log(REPORT_MSG, "* Unlocking BSL memory..."); Ret_Configure = MSP430_Configure(UNLOCK_BSL_MODE, ENABLE); if(Ret_Configure == STATUS_ERROR) { StdUseCase_Exit(EXIT_CONFIGURE, 0); } } // if locked flash access is selected if(Ret_OpenDevice == STATUS_OK && inst_state & UNLOCK_FLASH) { Print_N_Log(REPORT_MSG, "* Unlocking Info Memory A..."); Ret_Configure = MSP430_Configure(LOCKED_FLASH_ACCESS, ENABLE); if(Ret_Configure == STATUS_ERROR) { StdUseCase_Exit(EXIT_CONFIGURE, 0); } } int32_t lEraseType = ERASE_ALL; // evaluate erase type // only the L092 requires writing to external memory if(DeviceName == "MSP430L092") { inst_state |= MODE_SELECT; sOpt->pcEraseType = "ERASE_MAIN"; } else if(DeviceName == "MSP430C092") { sOpt->pcEraseType = "ERASE_MAIN"; } if(EraseType == "ERASE_MAIN") { lEraseType = ERASE_MAIN; } if(EraseType == "NO_ERASE") { lEraseType = 0; // = ERASE_SEGMENT (will be ignored by MSP430_ProgramFile() -> no erase } if(EraseType == "ERASE_SEGMENT") { int32_t lStartAddress = 0; int32_t lProgramLength = 0; lEraseType = ERASE_SEGMENT; if(ParseInputFile(sOpt->pcFile, &lStartAddress, &lProgramLength) != STATUS_OK) { StdUseCase_Exit(EXIT_VARIOUS, 26); // ErrorNumber 26 = "File I/O Error" } if(MSP430_Erase(lEraseType, lStartAddress, lProgramLength) != STATUS_OK) { Print_N_Log(ERR_MSG,"* Erase check failed. Memory segment was not erased correctly!\n"); StdUseCase_Exit(EXIT_ERASE, 0); } if(MSP430_EraseCheck(lStartAddress, lProgramLength) != STATUS_OK) { Print_N_Log(ERR_MSG,"* Erase check failed. Memory segment was not erased correctly!\n"); StdUseCase_Exit(EXIT_ERASE, 0); } } Print_N_Log(REPORT_MSG,"* Loading file into device..."); // program target code into MSP430 memory without verify Ret_ProgramFile = MSP430_ProgramFile(sOpt->pcFile, lEraseType, false); if(Ret_ProgramFile != STATUS_OK) { StdUseCase_Exit(EXIT_PROGRAMFILE, 0); } } else { Ret_ProgramFile = STATUS_OK; // <- simply set status to OK } // verify data transfer if(strcmp(sOpt->pcVerify, "FALSE")) { if((!strcmp(sOpt->pcVerify, "TRUE")) && (sOpt->pcFile != NULL)) { Print_N_Log(REPORT_MSG,"* Verifying memory (%s)...", sOpt->pcFile); Ret_VerifyFile = MSP430_VerifyFile(sOpt->pcFile); } else if(strcmp(sOpt->pcVerify, "TRUE")) // separate file for verify { Print_N_Log(REPORT_MSG,"* Verifying memory (%s)...", sOpt->pcVerify); Ret_VerifyFile = MSP430_VerifyFile(sOpt->pcVerify); } if(Ret_VerifyFile != STATUS_OK) { StdUseCase_Exit(EXIT_VERIFYFILE, 0); } } // L092 handling if ((inst_state & WRITE_EXT_MEM) && // if data should be written to external memory (sOpt->pcFile != NULL) && // ...and data was transferred into RAM (Ret_ProgramFile != STATUS_ERROR)) // ...successfully { Print_N_Log(REPORT_MSG,"* Writing to external memory..."); Ret_Configure = MSP430_Configure(WRITE_EXTERNAL_MEMORY, ENABLE); // write to external memory if(Ret_Configure == STATUS_ERROR) { StdUseCase_Exit(EXIT_CONFIGURE, 0); } } }
Hi CaEngineer,
Whereas I did go over how to create a shortcut for this earlier, this is step is unnecessary as the MSP430 Flasher runs from a terminal/command window. My apologies for not pointing that out earlier. For more information on how to use this software, please consult the user guide found here: http://www.ti.com/lit/ug/slau654/slau654.pdf
The procedure for using the tool can be found in section 1 of the user's guide. Using this tool requires files in the format of TXT (TI-txt) or HEX (Intel-hex) (this is found in table 1 of the user's guide). If you're using IAR or CCS, you can follow the instructions at this link to create these types of files. processors.wiki.ti.com/.../Generating_and_Loading_MSP430_Binary_Files
Basic steps:
Below is an example of me flashing hex code onto my MSP430FR5969 Launchpad.
The file that I will be flashing is msp430fr59xx_1.c.txt which can be seen in the below screenshot. I have placed this file in my MSP430Flasher_1.3.7 folder to make it easier for me to locate it in the command window.
Below is an example of me running the commands in the command window to flash the above text file into my MSP430FR5969.
Ashka,
Here is my findings so far:
I have successfully done what you have done above as you can see through the pictures below.
However, when I load the firmware to the MSP430, my LCD does nothing! Normally other than blinking the JTAG the LCD goes on and off that's why I can make sure that the firmware is loaded or not!
What do you advice? The way I load is wrong or my firmware? Because the "Verify" section is Flase!
what do you advise?
Glad to know that you got it to work! I was able to confirm that the tool should work with Windows 10 currently (v. 1.3.7) and that it should be officially supported in our next release of the software.
Regards,
Akash
**Attention** This is a public forum