]> Gitweb @ Texas Instruments - Open Source Git Repositories - git.TI.com/gitweb - keystone-rtos/mcsdk-tools.git/blobdiff - program_evm/program_evm.js
program_evm: added ability to parse config file if diverging from default
[keystone-rtos/mcsdk-tools.git] / program_evm / program_evm.js
index 959a3b64f99ea9e60dbf415438583a9b6973be41..479064edacc294e51ba3364a121e8e3687a1f86a 100644 (file)
@@ -111,13 +111,16 @@ var dss_script_dir    = java.lang.System.getenv("DSS_SCRIPT_DIR");
 var host_os           = "";
 var script_logs    = nandwriter_dir+"/logs/";
 var script_configs = nandwriter_dir+"/configs/";
-var script_binaries = nandwriter_dir+"/binaries/";
+var script_binaries = "../prebuilt-images/";
 var targetConfig = "";
 var writeAll = false;
+var writerImages = "";
 var big_endian = false;
 var targetFlag = "unknown";
 var targetConfig = "unknown";
 var emul560 = false;
+var xds200 = false;
+var emulation_spec = "onboard XDS100";
 testEnv.cioFile = null;
 
 if (java.lang.System.getProperty("os.name").match(/Linux/i))
@@ -146,27 +149,40 @@ if (arguments.length > 0 && arguments.length < 3)
     if (board_spec.match(/lx?e$/))
     {
         emul560 = true;
+       emulation_spec = "XDS560 mezzanine";
         board_spec = board_spec.replace(/e$/, "");
     }
-        
-    // for now, use the same software for lx and l variants
+      
+    if (board_spec.match(/ls$/))
+    {
+        xds200 = true;
+       emulation_spec = "XDS200 emulator";
+        board_spec = board_spec.replace(/ls$/, "l");
+    }
+
+    if (board_spec.match(/k2h$/) || board_spec.match(/k2e$/) || board_spec.match(/k2l$/) || board_spec.match(/k2g$/))
+    {
+        emulation_spec = "XDS2xx emulator";
+    }
+
+       // for now, use the same software for lx and l variants
     board_spec = board_spec.replace(/lx$/, "l");
-    
+
     // for now, treat evm6618l as an alias for evm6670l
     board_spec = board_spec.replace(/evm6618/, "evm6670");
-        
+
     targetFlag = board_spec;
-    
+
     endian_spec = (big_endian ? "-be" : "");
-    
-    board_binaries = script_binaries + targetFlag + endian_spec + "/";
+
+    board_binaries = script_binaries;
     targetConfig = java.lang.System.getenv("PROGRAM_EVM_TARGET_CONFIG_FILE");
-    if (!targetConfig)    
-        targetConfig = script_configs + targetFlag + "/" + targetFlag + (emul560 ? "e" : "") + host_os + ".ccxml";
+    if (!targetConfig)
+        targetConfig = script_configs + targetFlag + "/" + targetFlag + (emul560 ? "e" : "") + (xds200 ? "s" : "") + host_os + ".ccxml";
 
     print("board: " + targetFlag);
     print("endian: " + (big_endian ? "Big" : "Little"));
-    print("emulation: " + (emul560 ? "XDS560 mezzanine" : "onboard XDS100"));
+    print("emulation: " + emulation_spec);
     print("binaries: " + board_binaries);
     print("ccxml: " + targetConfig);
     
@@ -178,7 +194,7 @@ if (arguments.length > 0 && arguments.length < 3)
     }
     
     if(arguments[1])
-        var writerImages = arguments[1];
+        writerImages = arguments[1];
     else
         writeAll = true;   
 }
@@ -215,6 +231,23 @@ var eeprom51 = board_binaries + "eeprom51.bin";
 var nand = board_binaries + "nand.bin";
 var nor = board_binaries + "nor.bin";
 
+var custom_config = script_configs+targetFlag+"/program_evm_config";
+if (isFile(custom_config))
+{
+       file = new java.io.BufferedReader(new java.io.FileReader(custom_config))
+       while((line = file.readLine()) != null) {
+               params = line.split("\\s+");
+               if (params[1] == undefined) continue;
+               if ("board_binaries" == params[0]) board_binaries = params[1];
+               else if ("norwriterbinary" == params[0]) norwriterbinary = board_binaries + params[1];
+               else if ("nandwriterbinary" == params[0]) nandwriterbinary = board_binaries + params[1];
+               else if ("i2cwriterbinary" == params[0]) i2cwriterbinary = board_binaries + params[1];
+               else if ("nand" == params[0]) nand = board_binaries + params[1];
+               else if ("nor" == params[0]) nor = board_binaries + params[1];
+       }
+       file.close();
+}
+
 // Note: nAddress is the load address for using eepromwriter.
 //       nandNorAddress is the address used for nandwriter and norwriter.
 switch (targetFlag)
@@ -267,6 +300,30 @@ switch (targetFlag)
                var nandNorAddress = 0x80000000;
                var iblByteSwap = false;
                break;
+       case "evmk2h":
+               cpu_id = "C66xx_0";
+               var nAddress = 0x0C000000;
+               var nandNorAddress = 0x80000000;
+               var iblByteSwap = false;
+        break;
+       case "evmk2e":
+               cpu_id = "C66xx_0";
+               var nAddress = 0x0C000000;
+               var nandNorAddress = 0x80000000;
+               var iblByteSwap = false;
+        break;
+       case "evmk2l":
+               cpu_id = "C66xx_0";
+               var nAddress = 0x0C000000;
+               var nandNorAddress = 0x80000000;
+               var iblByteSwap = false;
+        break;
+       case "evmk2g":
+               cpu_id = "C66xx_0";
+               var nAddress = 0x0C000000;
+               var nandNorAddress = 0x80000000;
+               var iblByteSwap = false;
+        break;
        default:
                script.traceWrite("Could not file cpu id for target " + targetFlag + "\n");
 
@@ -370,41 +427,104 @@ if(writeAll || writerImages.match(/eeprom51/))
 //NAND
 if(writeAll || writerImages.match(/nand/))
 {
-
-       start_nand = localTime();
-       script.traceWrite("Writer:" + nandwriterbinary + "\r\n");
-       script.traceWrite("NAND:" + nand + "\r\n");
-       if (isFile(nand) && isFile(nandwriterbinary)) 
+    if (writerImages.match(/format/))
+    {
+       /* No action is taken for NAND since it is format*/
+    }
+       else
        {
-               debugSession.memory.loadProgram(nandwriterbinary);
-               var nPage = 0x0;
-       //      var nAddress = 0x80000000;
-               var sFilename = nand;
-               var nTypeSize = 32;
-               var bByteSwap = false;
-
-               try
-               {   
-                       script.traceWrite("Start loading nand.bin");
-                       debugSession.memory.loadRaw(nPage, nandNorAddress, sFilename, nTypeSize, bByteSwap);
+       start_nand = localTime();
+       script.traceWrite("Writer:" + nandwriterbinary + "\r\n");
+       script.traceWrite("NAND:" + nand + "\r\n");
+       if (isFile(nand) && isFile(nandwriterbinary)) 
+       {
+               debugSession.memory.loadProgram(nandwriterbinary);
+               var nPage = 0x0;
+       //      var nAddress = 0x80000000;
+               var sFilename = nand;
+               var nTypeSize = 32;
+               var bByteSwap = false;
+    
+               try
+               {   
+                       script.traceWrite("Start loading nand.bin");
+                       debugSession.memory.loadRaw(nPage, nandNorAddress, sFilename, nTypeSize, bByteSwap);
+    
+               }
+               catch (ex)
+               {
+                  errCode = getErrorCode(ex);
+                  script.traceWrite("Error code #" + errCode + ", could not load file " + sFilename +
+                                       " to target memory!");
+               }
+               script.traceWrite("Start programming NAND");
+               debugSession.target.run()
+               script.traceWrite("End programming NAND");
+               end_nand = localTime();
+       }
+       else
+       {
+               script.traceWrite("Required NAND files does not exist in " + board_binaries + "\n");
+        
+       }
+     }
+}
 
-               }
-               catch (ex)
-               {
-                  errCode = getErrorCode(ex);
-                  script.traceWrite("Error code #" + errCode + ", could not load file " + sFilename +
-                                       " to target memory!");
-               }
-               script.traceWrite("Start programming NAND");
-               debugSession.target.run()
-               script.traceWrite("End programming NAND");
-               end_nand = localTime();
-       }
+//FORMAT the flash
+if (writerImages.match(/format/))
+{
+//NAND Erase all
+    if (writerImages.match(/nand/))
+    {
+       start_nand = localTime();
+       script.traceWrite("Writer:" + nandwriterbinary + "\r\n");
+       if (isFile(nandwriterbinary)) 
+       {
+               debugSession.memory.loadProgram(nandwriterbinary);
+               var nPage = 0x0;
+               var nValue = 0x12345678;
+    
+               try
+               {   
+                       script.traceWrite("Formatting NAND device ... Initiated");
+                       // Get the address of that symbol
+                       var flag_address = debugSession.symbol.getAddress("nand_erase_flag")                    
+                       debugSession.memory.writeWord(nPage, flag_address, nValue);
+               }
+               catch (ex)
+               {
+                  errCode = getErrorCode(ex);
+                  script.traceWrite("Error code #" + errCode + ", could not set the nandwriter for erasing all nand blocks! ");
+               }
+               debugSession.target.run()
+               script.traceWrite("Formatting NAND device ...Completed");
+                       end_nand = localTime();
+       }
+       else
+       {
+               script.traceWrite("Required NAND binary does not exist in " + board_binaries + "\n");
+        
+       }
+    }
        else
-       {
-               script.traceWrite("Required NAND files does not exist in " + board_binaries + "\n");
-        
+       { 
+         /* No action is taken */
+         script.traceWrite("FLASH FORMAT - No Action is taken, please provide the supported format command string, e.g., format-nand");
        }
+
+    if (testEnv.cioFile != null)
+    {
+       // Stop CIO logging.
+       debugSession.endCIOLogging();
+    }
+    
+    debugSession.terminate();
+    debugServer.stop()
+    
+    // Stop logging and exit.
+    script.traceEnd();
+    java.lang.System.exit(0);
+       
 }
 
 //NOR