Esempio n. 1
0
        private object Write_Store_Read_ChipReg(object writeData, byte length, bool isLittleendian, int regAddress, byte chipLine, byte chipset, ChipOperation operate)
        {
            lock (syncRoot)
            {
                byte[] writeDataArray = Algorithm.ObjectToByteArray(writeData, length, isLittleendian);
                EnterEngMode(DebugInterface.EngPage);

                if ((int)operate == 0)//写
                {
                    WriteDriver40g(TestPlanParaByPN.DUT_USB_Port, 0xA0, DebugInterface.StartAddress, regAddress, chipLine, chipset, writeDataArray, GlobalParaByPN.isOldDriver);
                }
                else if ((int)operate == 1)//存
                {
                    StoreDriver40g(TestPlanParaByPN.DUT_USB_Port, 0xA0, DebugInterface.StartAddress, regAddress, chipLine, chipset, writeDataArray, GlobalParaByPN.isOldDriver);
                }
                else if ((int)operate == 2)
                {
                    byte[] readData = ReadDriver40g(TestPlanParaByPN.DUT_USB_Port, 0xA0, DebugInterface.StartAddress, regAddress, chipLine, chipset, length, GlobalParaByPN.isOldDriver);

                    int returnData = 0;
                    for (int i = readData.Length; i > 0; i--)
                    {
                        returnData += Convert.ToUInt16(readData[i - 1] * Math.Pow(256, length - i));
                    }
                    return(returnData);
                }
                else
                {
                    return(false);
                }
                return(true);
            }
        }
Esempio n. 2
0
        public override bool InitialChip(DUTCoeffControlByPN coeffControl, ChipDefaultValueByPN chipDefaultValue)
        {
            lock (syncRoot)
            {
                byte      engpage   = 0;
                int       startaddr = 0;
                string    filter    = "ItemName = " + "'" + "DEBUGINTERFACE" + "'";
                DataRow[] foundRows = coeffControl.Select(filter);

                if (foundRows == null)
                {
                    Log.SaveLogToTxt("There is no debug interface.");
                }
                else if (foundRows.Length > 1)
                {
                    Log.SaveLogToTxt("Count of debug interface is more than 1");
                }
                else
                {
                    engpage   = Convert.ToByte(foundRows[0]["Page"]);
                    startaddr = Convert.ToInt32(foundRows[0]["StartAddress"]);
                }

                if (chipDefaultValue == null)
                {
                    return(true);
                }

                for (int row = 0; row < chipDefaultValue.Rows.Count; row++)
                {
                    if (Convert.ToInt32(chipDefaultValue.Rows[row]["Length"]) == 0)
                    {
                        continue;
                    }
                    byte   length         = Convert.ToByte(chipDefaultValue.Rows[row]["Length"]);
                    bool   isLittleendian = Convert.ToBoolean(chipDefaultValue.Rows[row]["Endianness"]);
                    var    inputdata      = chipDefaultValue.Rows[row]["ItemValue"];
                    byte[] writeData      = Algorithm.ObjectToByteArray(inputdata, length, isLittleendian);
                    byte   driveTpye      = Convert.ToByte(chipDefaultValue.Rows[row]["DriverType"]);
                    byte   chipset        = 0x01;
                    switch (driveTpye)
                    {
                    case 0:
                        chipset = 0x01;
                        break;

                    case 1:
                        chipset = 0x02;
                        break;

                    case 2:
                        chipset = 0x04;
                        break;

                    case 3:
                        chipset = 0x08;
                        break;

                    default:
                        chipset = 0x01;
                        break;
                    }
                    EnterEngMode(engpage);

                    int  registerAddress = Convert.ToInt32(chipDefaultValue.Rows[row]["RegisterAddress"]);
                    byte chipLine        = Convert.ToByte(chipDefaultValue.Rows[row]["ChipLine"]);
                    int  k = 0;
                    for (k = 0; k < 3; k++)
                    {
                        WriteDriver40g(TestPlanParaByPN.DUT_USB_Port, 0xA0, startaddr, registerAddress, chipLine, chipset, writeData, GlobalParaByPN.isOldDriver);
                        // Thread.Sleep(200);
                        StoreDriver40g(TestPlanParaByPN.DUT_USB_Port, 0xA0, startaddr, registerAddress, chipLine, chipset, writeData, GlobalParaByPN.isOldDriver);
                        // Thread.Sleep(200);
                        byte[] temp = new byte[length];
                        temp = ReadDriver40g(TestPlanParaByPN.DUT_USB_Port, 0xA0, startaddr, registerAddress, chipLine, chipset, length, GlobalParaByPN.isOldDriver);

                        if (BitConverter.ToString(temp) == BitConverter.ToString(writeData))
                        {
                            break;
                        }
                    }

                    if (k >= 3)
                    {
                        return(false);
                    }
                }
                return(false);
            }
        }