Пример #1
0
        private void button1_Click(object sender, EventArgs e)
        {
            byte[] array = new byte[128];
            base.Update();
            PICkitFunctions.RunScript(0, 1);
            if (PICkitFunctions.DevFile.PartsList[PICkitFunctions.ActivePart].EERdPrepScript > 0)
            {
                if (PICkitFunctions.DevFile.Families[PICkitFunctions.GetActiveFamily()].EEMemHexBytes == 4)
                {
                    PICkitFunctions.DownloadAddress3((int)(PICkitFunctions.DevFile.PartsList[PICkitFunctions.ActivePart].EEAddr / 2u));
                }
                else
                {
                    PICkitFunctions.DownloadAddress3(0);
                }
                PICkitFunctions.RunScript(8, 1);
            }
            int eEMemBytesPerWord = (int)PICkitFunctions.DevFile.Families[PICkitFunctions.GetActiveFamily()].EEMemBytesPerWord;
            int num  = 128 / ((int)PICkitFunctions.DevFile.PartsList[PICkitFunctions.ActivePart].EERdLocations * eEMemBytesPerWord);
            int num2 = num * (int)PICkitFunctions.DevFile.PartsList[PICkitFunctions.ActivePart].EERdLocations;
            int num3 = 0;

            do
            {
                PICkitFunctions.RunScriptUploadNoLen(9, num);
                Array.Copy(PICkitFunctions.Usb_read_array, 1L, array, 0L, 64L);
                PICkitFunctions.UploadDataNoLen();
                Array.Copy(PICkitFunctions.Usb_read_array, 1L, array, 64L, 64L);
                int num4 = 0;
                for (int i = 0; i < num2; i++)
                {
                    int  num5 = 0;
                    uint num6 = (uint)array[num4 + num5++];
                    if (num5 < eEMemBytesPerWord)
                    {
                        num6 |= (uint)((uint)array[num4 + num5++] << 8);
                    }
                    num4 += num5;
                    if (PICkitFunctions.DevFile.Families[PICkitFunctions.GetActiveFamily()].ProgMemShift > 0)
                    {
                        //num6 = (num6 >> 1 & eEBlank);
                    }
                    PICkitFunctions.DeviceBuffers.EEPromMemory[num3++] = num6;
                    if (num3 >= (int)PICkitFunctions.DevFile.PartsList[PICkitFunctions.ActivePart].EEMem)
                    {
                        break;
                    }
                }
            }while (num3 < (int)PICkitFunctions.DevFile.PartsList[PICkitFunctions.ActivePart].EEMem);
            PICkitFunctions.RunScript(1, 1);

            foreach (var a in array)
            {
                this.textBox1.AppendText(a.ToString());
                this.textBox1.AppendText(" ");
            }
        }
        public static bool PE_Connect()
        {
            PICkitFunctions.RunScript(0, 1);
            if (PICkitFunctions.DevFile.PartsList[PICkitFunctions.ActivePart].ProgMemWrPrepScript != 0)
            {
                PICkitFunctions.DownloadAddress3(8389568);
                PICkitFunctions.RunScript(5, 1);
            }
            byte[] array = new byte[128];
            PICkitFunctions.RunScriptUploadNoLen(3, 1);
            Array.Copy(PICkitFunctions.Usb_read_array, 1L, array, 0L, 64L);
            PICkitFunctions.UploadDataNoLen();
            Array.Copy(PICkitFunctions.Usb_read_array, 1L, array, 64L, 64L);
            int num = array[72];

            num |= array[73] << 8;
            if (num != 155)
            {
                PICkitFunctions.RunScript(1, 1);
                return(false);
            }
            num  = array[75];
            num |= array[76] << 8;
            if (num != 38)
            {
                PICkitFunctions.RunScript(1, 1);
                return(false);
            }
            PICkitFunctions.RunScript(1, 1);
            int i = 0;

            byte[] array2 = new byte[64];
            array2[i++] = 166;
            array2[i++] = 0;
            array2[i++] = 250;
            array2[i++] = 247;
            array2[i++] = 249;
            array2[i++] = 245;
            array2[i++] = 243;
            array2[i++] = 0;
            array2[i++] = 232;
            array2[i++] = 20;
            array2[i++] = 246;
            array2[i++] = 251;
            array2[i++] = 231;
            array2[i++] = 23;
            array2[i++] = 250;
            array2[i++] = 247;
            array2[i++] = 231;
            array2[i++] = 47;
            array2[i++] = 242;
            array2[i++] = 178;
            array2[i++] = 242;
            array2[i++] = 194;
            array2[i++] = 242;
            array2[i++] = 18;
            array2[i++] = 242;
            array2[i++] = 10;
            array2[i++] = 246;
            array2[i++] = 251;
            array2[i++] = 232;
            array2[i++] = 6;
            array2[1]   = (byte)(i - 2);
            for (; i < 64; i++)
            {
                array2[i] = 173;
            }
            PICkitFunctions.writeUSB(array2);
            i           = 0;
            array2[i++] = 166;
            array2[i++] = 12;
            array2[i++] = 242;
            array2[i++] = 0;
            array2[i++] = 242;
            array2[i++] = 128;
            array2[i++] = 243;
            array2[i++] = 2;
            array2[i++] = 231;
            array2[i++] = 5;
            array2[i++] = 240;
            array2[i++] = 240;
            array2[i++] = 240;
            array2[i++] = 240;
            array2[i++] = 170;
            for (; i < 64; i++)
            {
                array2[i] = 173;
            }
            PICkitFunctions.writeUSB(array2);
            if (!PICkitFunctions.readUSB())
            {
                PICkitFunctions.RunScript(1, 1);
                return(false);
            }
            if (PICkitFunctions.Usb_read_array[1] != 4)
            {
                PICkitFunctions.RunScript(1, 1);
                return(false);
            }
            if (PICkitFunctions.Usb_read_array[2] != 8 || PICkitFunctions.Usb_read_array[3] != 0 || PICkitFunctions.Usb_read_array[4] != 0 || PICkitFunctions.Usb_read_array[5] != 64)
            {
                PICkitFunctions.RunScript(1, 1);
                return(false);
            }
            i           = 0;
            array2[i++] = 166;
            array2[i++] = 14;
            array2[i++] = 243;
            array2[i++] = 0;
            array2[i++] = 242;
            array2[i++] = 13;
            array2[i++] = 242;
            array2[i++] = 128;
            array2[i++] = 243;
            array2[i++] = 2;
            array2[i++] = 231;
            array2[i++] = 5;
            array2[i++] = 240;
            array2[i++] = 240;
            array2[i++] = 240;
            array2[i++] = 240;
            array2[i++] = 170;
            for (; i < 64; i++)
            {
                array2[i] = 173;
            }
            PICkitFunctions.writeUSB(array2);
            if (!PICkitFunctions.readUSB())
            {
                PICkitFunctions.RunScript(1, 1);
                return(false);
            }
            if (PICkitFunctions.Usb_read_array[1] != 4)
            {
                PICkitFunctions.RunScript(1, 1);
                return(false);
            }
            if (PICkitFunctions.Usb_read_array[2] != 216 || BitReverseTable[PICkitFunctions.Usb_read_array[3]] != 38 || PICkitFunctions.Usb_read_array[4] != 0 || PICkitFunctions.Usb_read_array[5] != 64)
            {
                PICkitFunctions.RunScript(1, 1);
                return(false);
            }
            return(true);
        }
        public static bool DownloadPE()
        {
            PICkitFunctions.RunScript(0, 1);
            PICkitFunctions.ExecuteScript(PICkitFunctions.DevFile.PartsList[PICkitFunctions.ActivePart].DebugWriteVectorScript);
            if (PICkitFunctions.DevFile.PartsList[PICkitFunctions.ActivePart].ProgMemWrPrepScript != 0)
            {
                PICkitFunctions.DownloadAddress3(8388608);
                PICkitFunctions.RunScript(6, 1);
            }
            int num  = 0;
            int num2 = 0;

            byte[] array = new byte[64];
            for (int i = 0; i < 8; i++)
            {
                for (int j = 0; j < 4; j++)
                {
                    num2 = 0;
                    if (j == 0)
                    {
                        array[num2++] = 167;
                    }
                    array[num2++] = 168;
                    array[num2++] = 48;
                    for (int k = 0; k < 16; k++)
                    {
                        array[num2++] = (byte)(PIC24_PE_Code[num] & 0xFF);
                        array[num2++] = (byte)((PIC24_PE_Code[num] >> 8) & 0xFF);
                        array[num2++] = (byte)((PIC24_PE_Code[num] >> 16) & 0xFF);
                        num++;
                    }
                    for (; num2 < 64; num2++)
                    {
                        array[num2] = 173;
                    }
                    PICkitFunctions.writeUSB(array);
                }
                num2          = 0;
                array[num2++] = 166;
                array[num2++] = 0;
                array[num2++] = 212;
                array[num2++] = 0;
                array[num2++] = 211;
                array[num2++] = 1;
                array[num2++] = 212;
                array[num2++] = 3;
                array[num2++] = 211;
                array[num2++] = 2;
                array[num2++] = 217;
                array[num2++] = 128;
                array[num2++] = 11;
                array[num2++] = 187;
                array[num2++] = 216;
                array[num2++] = 216;
                array[num2++] = 217;
                array[num2++] = 129;
                array[num2++] = 155;
                array[num2++] = 187;
                array[num2++] = 216;
                array[num2++] = 216;
                array[num2++] = 217;
                array[num2++] = 130;
                array[num2++] = 139;
                array[num2++] = 187;
                array[num2++] = 216;
                array[num2++] = 216;
                array[num2++] = 217;
                array[num2++] = 131;
                array[num2++] = 27;
                array[num2++] = 187;
                array[num2++] = 216;
                array[num2++] = 216;
                array[num2++] = 233;
                array[num2++] = 32;
                array[num2++] = 31;
                array[num2++] = 217;
                array[num2++] = 97;
                array[num2++] = 231;
                array[num2++] = 168;
                array[num2++] = 216;
                array[num2++] = 217;
                array[num2++] = 0;
                array[num2++] = 2;
                array[num2++] = 4;
                array[num2++] = 216;
                array[num2++] = 233;
                array[num2++] = 1;
                array[num2++] = 3;
                array[num2++] = 231;
                array[num2++] = 72;
                array[1]      = (byte)(num2 - 2);
                for (; num2 < 64; num2++)
                {
                    array[num2] = 173;
                }
                PICkitFunctions.writeUSB(array);
            }
            if (PICkitFunctions.DevFile.PartsList[PICkitFunctions.ActivePart].ProgMemWrPrepScript != 0)
            {
                PICkitFunctions.DownloadAddress3(8388608);
                PICkitFunctions.RunScript(5, 1);
            }
            byte[] array2 = new byte[128];
            num = 0;
            for (int l = 0; l < 16; l++)
            {
                PICkitFunctions.RunScriptUploadNoLen(3, 1);
                Array.Copy(PICkitFunctions.Usb_read_array, 1L, array2, 0L, 64L);
                PICkitFunctions.UploadDataNoLen();
                Array.Copy(PICkitFunctions.Usb_read_array, 1L, array2, 64L, 64L);
                int num3 = 0;
                for (int m = 0; m < 32; m++)
                {
                    uint num4 = array2[num3++];
                    num4 = (uint)((int)num4 | (array2[num3++] << 8));
                    num4 = (uint)((int)num4 | (array2[num3++] << 16));
                    if (num4 != PIC24_PE_Code[num++])
                    {
                        PICkitFunctions.RunScript(1, 1);
                        return(false);
                    }
                }
            }
            PICkitFunctions.RunScript(1, 1);
            return(true);
        }