Esempio n. 1
0
        public void VerifyData(int addr, byte[] data, int offset, int count)
        {
            SetAddress(addr);

            var cmd      = new byte[] { (byte)'t', 0, 0, 0, (byte)' ' };
            var lenbytes = BitConverter.GetBytes((ushort)count);

            cmd[1] = lenbytes[1];
            cmd[2] = lenbytes[0];
            _device.WriteFully(cmd, 0, 5);

            _device.ReadFully(cmd, 0, 1);
            if (cmd[0] != 0x14)
            {
                throw new InvalidDataException("Expected start of data byte");
            }

            var state = new byte[count];

            _device.ReadFully(state, 0, count);
            for (int i = 0; i < count; i++)
            {
                if (state[i] != data[offset + i])
                {
                    throw new InvalidDataException("Invalid data on flash at offset 0x" + addr.ToString("X") + "+" + i.ToString("X") + ": is: 0x" + state[i].ToString("X") + " should be: 0x" + data[offset + i].ToString("X"));
                }
            }

            _device.ReadFully(cmd, 0, 1);
            if (cmd[0] != 0x10)
            {
                throw new InvalidDataException("Expected end of data byte");
            }
        }
Esempio n. 2
0
        public void TestBootload()
        {
            using (_device = FTDevice.Open())
            {
                // reset device
                _device.SetBitMode(FTBitMode.CBUSBitBang, 0xF0);
                Thread.Sleep(10);
                _device.SetBitMode(FTBitMode.CBUSBitBang, 0xFF);
                Thread.Sleep(100);

                // empty any possible leftover data in the rx/tx queue
                // this is necessary because the serialtest program is blasting the usart with data
                // and some of it lives on after the reset in the ft queues
                _device.Purge();

                _device.SetFlowControl(FTFlowControl.None);
                _device.SetDataCharacteristics(8, 1, FTParity.None);
                _device.SetBaudRate(19200);

                SendHELO();
                ReceiveEHLO();
                EnterProgrammingMode();
                ParseHEX("serialtest.hex");
                WriteImage();
                VerifyImage();
                LeaveProgrammingMode();

                _device.SetBaudRate(38400);
                _device.WaitFor(FTEvent.RxChar);
                var msg = new byte[10];
                _device.ReadFully(msg, 0, 10);
                var text = Encoding.ASCII.GetString(msg);
                Assert.AreEqual("serialtest", text);
            }
        }
Esempio n. 3
0
        public void TestResetWriteRead()
        {
            using (FTDevice dev = FTDevice.Open(0))
            {
                // reset
                dev.SetBitMode(FTBitMode.CBUSBitBang, 0xF0);
                Thread.Sleep(10);
                dev.SetBitMode(FTBitMode.CBUSBitBang, 0xFF);
                // allow some time for startup
                Thread.Sleep(100);

                // send hello to bootloader
                dev.SetBaudRate(19200);
                var data = new[] { (byte)'1', (byte)' ' };
                dev.WriteFully(data, 0, 2);

                // read ehlo
                var buf = new byte[9];
                int r   = dev.ReadFully(buf, 0, 9);
                Assert.AreEqual(9, r);
                var text = Encoding.ASCII.GetString(buf);
                Assert.IsTrue(text.Contains("AVR ISP"));
            }
        }