⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dvflasher.cs

📁 TI DM6446 EVM 串口下载程序 使用环境:windows dos环境或者linux 使用前需安装mono
💻 CS
📖 第 1 页 / 共 5 页
字号:
                    switch (s.Substring(1).ToLower())                    {                        case "fnorbin":                            if (myCmdParams.CMDMagicFlag == MagicFlags.MAGIC_NUMBER_INVALID)                                myCmdParams.CMDMagicFlag = MagicFlags.UBL_MAGIC_NOR_BIN_BURN;                            else                                myCmdParams.Valid = false;                            numFiles = 2;                            myCmdParams.UBLFlashType = FlashType.NOR;                            cmdString = "Flashing NOR with ";                            break;                        case "fnorsrec":                            if (myCmdParams.CMDMagicFlag == MagicFlags.MAGIC_NUMBER_INVALID)                                myCmdParams.CMDMagicFlag = MagicFlags.UBL_MAGIC_NOR_SREC_BURN;                            else                                myCmdParams.Valid = false;                            numFiles = 2;                            myCmdParams.UBLFlashType = FlashType.NOR;                            cmdString = "Flashing NOR with ";                            break;                        case "fnandbin":                            if (myCmdParams.CMDMagicFlag == MagicFlags.MAGIC_NUMBER_INVALID)                                myCmdParams.CMDMagicFlag = MagicFlags.UBL_MAGIC_NAND_BIN_BURN;                            else                                myCmdParams.Valid = false;                            numFiles = 2;                            myCmdParams.UBLFlashType = FlashType.NAND;                            cmdString = "Flashing NAND with ";                            break;                        case "fnandsrec":                            if (myCmdParams.CMDMagicFlag == MagicFlags.MAGIC_NUMBER_INVALID)                                myCmdParams.CMDMagicFlag = MagicFlags.UBL_MAGIC_NAND_SREC_BURN;                            else                                myCmdParams.Valid = false;                            numFiles = 2;                            myCmdParams.UBLFlashType = FlashType.NAND;                            cmdString = "Flashing NAND with ";                            break;                        case "enor":                            if (myCmdParams.CMDMagicFlag == MagicFlags.MAGIC_NUMBER_INVALID)                                myCmdParams.CMDMagicFlag = MagicFlags.UBL_MAGIC_NOR_GLOBAL_ERASE;                            else                                myCmdParams.Valid = false;                            numFiles = 0;                            myCmdParams.UBLFlashType = FlashType.NOR;                            cmdString = "Globally erasing NOR flash.";                            break;                        case "enand":                            if (myCmdParams.CMDMagicFlag == MagicFlags.MAGIC_NUMBER_INVALID)                                myCmdParams.CMDMagicFlag = MagicFlags.UBL_MAGIC_NAND_GLOBAL_ERASE;                            else                                myCmdParams.Valid = false;                            numFiles = 0;                            myCmdParams.UBLFlashType = FlashType.NAND;                            cmdString = "Globally erasing NAND flash.";                            break;                        case "r":                            if (myCmdParams.CMDMagicFlag == MagicFlags.MAGIC_NUMBER_INVALID)                                myCmdParams.CMDMagicFlag = MagicFlags.UBL_MAGIC_NOR_RESTORE;                            else                                myCmdParams.Valid = false;                            numFiles = 1;                            myCmdParams.UBLFlashType = FlashType.NOR;                            cmdString = "Restoring NOR flash with ";                            break;                        case "b":                            if (myCmdParams.CMDMagicFlag == MagicFlags.MAGIC_NUMBER_INVALID)                                myCmdParams.CMDMagicFlag = MagicFlags.UBL_MAGIC_SAFE;                            else                                myCmdParams.Valid = false;                            numFiles = 1;                            myCmdParams.UBLFlashType = FlashType.NOR;                            cmdString = "Sending and running application found in ";                            break;                        case "s":                            if (args[i + 1].Contains("0x"))                                myCmdParams.APPEntryPoint = UInt32.Parse(args[i + 1].Replace("0x", ""), NumberStyles.AllowHexSpecifier);                            else if (args[i + 1].Contains("0X"))                                myCmdParams.APPEntryPoint = UInt32.Parse(args[i + 1].Replace("0X", ""), NumberStyles.AllowHexSpecifier);                            else                                myCmdParams.APPEntryPoint = UInt32.Parse(args[i + 1], NumberStyles.AllowHexSpecifier);                            Console.WriteLine("Using {0:x8} as the execution address.", myCmdParams.APPEntryPoint);                            argsHandled[i+1] = true;                            numHandledArgs++;                            break;                        case "p":                            myCmdParams.SerialPortName = args[i + 1];                            argsHandled[i + 1] = true;                            numHandledArgs++;                            break;                        case "norbl":                            myCmdParams.UARTUBLUsed = false;                            break;                        case "usemyubl":                            myCmdParams.useEmbeddedUBL = false;                            break;                        case "v":                            myCmdParams.Verbose = true;                            break;                        default:                            myCmdParams.Valid = false;                            break;                    }                    argsHandled[i] = true;                    numHandledArgs++;                    //Console.WriteLine("Argument: {0}, Handled: {1}, Valid: {2}", args[i], argsHandled[i], myCmdParams.Valid);                    if (!myCmdParams.Valid)                        return myCmdParams;                }                                          } // end of for loop for handling dash params            // Check if we are using the embedded UBLs, if so adjust required file numbers            if ((myCmdParams.useEmbeddedUBL) && (numFiles == 2))            {                numFiles = 1;            }            if (myCmdParams.UBLFlashType == FlashType.NOR)            {                                myCmdParams.UARTUBLExecAddr = myCmdParams.NORUBLExecAddr;            }            else if (myCmdParams.UBLFlashType == FlashType.NAND)            {                myCmdParams.UARTUBLExecAddr = myCmdParams.NANDUBLExecAddr;            }            if (myCmdParams.useEmbeddedUBL)            {                myCmdParams.FLASHUBLExecAddr = myCmdParams.UARTUBLExecAddr;            }                        // Verify that the number of unhandled arguments is equal to numFiles            // If not, then there is a problem.            numUnhandledArgs = (UInt32) (args.Length - numHandledArgs);            if (numUnhandledArgs != numFiles)            {                myCmdParams.Valid = false;                return myCmdParams;            }                                  // This for loop handles all othe params (namely filenames)            for (int i = 0; i < args.Length; i++)            {                if (!argsHandled[i])                {                    if (myCmdParams.useEmbeddedUBL)                    {                        if (numFiles == 0)                            myCmdParams.Valid = false;                        else if (myCmdParams.APPFileName == null)                        {                            myCmdParams.APPFileName = args[i];                            cmdString += myCmdParams.APPFileName + ".";                        }                        else                            myCmdParams.Valid = false;                    }                    else                    {                        switch (numFiles)                        {                            case 1:                                if (myCmdParams.APPFileName == null)                                {                                    myCmdParams.APPFileName = args[i];                                    cmdString += myCmdParams.APPFileName + ".";                                }                                else                                    myCmdParams.Valid = false;                                break;                            case 2:                                if (myCmdParams.FLASHUBLFileName == null)                                {                                    myCmdParams.FLASHUBLFileName = args[i];                                    cmdString += myCmdParams.FLASHUBLFileName + " and ";                                }                                else if (myCmdParams.APPFileName == null)                                {                                    myCmdParams.APPFileName = args[i];                                    cmdString += myCmdParams.APPFileName + ".";                                }                                else                                    myCmdParams.Valid = false;                                break;                            default:                                myCmdParams.Valid = false;                                break;                        }                    }                        argsHandled[i] = true;                    if (!myCmdParams.Valid)                        return myCmdParams;                }            } // end of for loop for handling dash params                        // Set default binary execution address on target DVEVM            if (myCmdParams.APPLoadAddr == 0xFFFFFFFF)                myCmdParams.APPLoadAddr = 0x81080000;            if (myCmdParams.APPEntryPoint == 0xFFFFFFFF)                myCmdParams.APPEntryPoint = 0x81080000;            if (myCmdParams.FLASHUBLLoadAddr == 0xFFFFFFFF)                myCmdParams.FLASHUBLLoadAddr = 0x81070000;                        //Setup default serial port name            if (myCmdParams.SerialPortName == null)            {                int p = (int)Environment.OSVersion.Platform;                if ((p == 4) || (p == 128)) //Check for unix                {                    Console.WriteLine("Platform is Unix/Linux.");                    myCmdParams.SerialPortName = "/dev/ttyS0";                }                else                {                    Console.WriteLine("Platform is Windows.");                    myCmdParams.SerialPortName = "COM1";                }            }            return myCmdParams;        }        /// <summary>        /// Main entry point of application        /// </summary>        /// <param name="args">Array of command-line arguments</param>        /// <returns>Return code: 0 for correct exit, -1 for unexpected exit</returns>        static Int32 Main(String[] args)        {            // Begin main code            Console.Clear();            Console.WriteLine("-----------------------------------------------------");            Console.WriteLine("   TI DVFlasher Host Program for DM644x              ");            Console.WriteLine("   (C) 2007, Texas Instruments, Inc.                 ");            Console.WriteLine("-----------------------------------------------------");            Console.Write("\n\n");            // Parse command line            cmdParams = ParseCmdLine(args);            if (!cmdParams.Valid)            {                DispHelp();                return -1;            }            else            {                Console.Write(cmdString + "\n\n\n");            }                                               try            {                Console.WriteLine("Attempting to connect to device " + cmdParams.SerialPortName + "...");                MySP = new SerialPort(cmdParams.SerialPortName, 115200, Parity.None, 8, StopBits.One);                MySP.Encoding = Encoding.ASCII;                MySP.Open();            }            catch(Exception e)            {                if (e is UnauthorizedAccessException)                {                    Console.WriteLine(e.Message);                    Console.WriteLine("This application failed to open the COM port.");                    Console.WriteLine("Most likely it is in use by some other application.");                    return -1;                }                Console.WriteLine(e.Message);                return -1;            }            Console.WriteLine("Press any key to end this program at any time.\n");                        // Setup the thread that will actually do all the work of interfacing to            // the DM644x boot ROM.  Start that thread.            workerThread = new Thread(new ThreadStart(Program.WorkerThreadStart));            workerThread.Start();            // Wait for a key to terminate the program            while ((workerThread.IsAlive) && (!Console.KeyAvailable))            {                Thread.Sleep(1000);            }                                   // If a key is pressed then abort the worker thread and close the serial port            try            {                if (Console.KeyAvailable)                {                    Console.ReadKey();                    Console.WriteLine("Aborting program...");

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -