public void WriteEEPROM(BootloaderClient endpoint, MemoryMap source) { Console.CursorVisible = false; Console.Write(" Writing EEPROM memory ({0}kB): ", source.Size / 1024); ConsoleProgressBar cpb = new ConsoleProgressBar(0, source.Size); for (uint addr = 0; addr < source.Size; addr += 128, cpb.Progress = addr) { byte[] payload = new byte[2 + 128]; payload[0] = (byte)(addr & 0xFF); payload[1] = (byte)((addr >> 8) & 0xFF); source.Read(addr, payload, 2, 128); Message msg_write = new Message(endpoint.BootloaderAddress, MessageType.WriteEepromPage, payload); Message response = SendAndWaitForResponse(endpoint, msg_write, 2000); if (response.Type != MessageType.WriteEepromPage) { throw new CnCException("response.Type"); } } Console.CursorVisible = true; Console.WriteLine("Done."); }
public void ReadEEPROM(BootloaderClient endpoint, MemoryMap dest) { Console.CursorVisible = false; Console.Write(" Reading EEPROM memory ({0}kB): ", dest.Size / 1024); ConsoleProgressBar cpb = new ConsoleProgressBar(0, dest.Size); for (uint addr = 0; addr < dest.Size; addr += 128, cpb.Progress = addr) { Message msg_readpage = new Message(endpoint.BootloaderAddress, MessageType.ReadEepromPage, new byte[] { (byte)(addr & 0xFF), (byte)(addr >> 8), }); Message response = SendAndWaitForResponse(endpoint, msg_readpage, 2000); dest.Write(addr, response.Payload, 0, 128); } Console.CursorVisible = true; Console.WriteLine("Done."); }
public void WriteFLASH(Device endpoint, MemoryMap source) { Console.CursorVisible = false; Console.Write("Writing FLASH memory ({0}kB): ", source.Size / 1024); ConsoleProgressBar cpb = new ConsoleProgressBar(0, source.Size); for (uint addr = 0; addr < source.Size; addr += 128, cpb.Progress = addr) { byte[] payload = new byte[2 + 128]; payload[0] = (byte)(addr & 0xFF); payload[1] = (byte)((addr >> 8) & 0xFF); source.Read(addr, payload, 2, 128); Message msg_write = new Message((byte)endpoint.address, MessageType.WriteFlashPage, payload); Message response = SendAndWaitForResponse(endpoint, msg_write, 2000); } Console.CursorVisible = true; Console.WriteLine("Done."); }
public bool VerifyEEPROM(BootloaderClient endpoint, MemoryMap expected) { Console.CursorVisible = false; Console.Write(" Verifying EEPROM memory ({0}kB): ", expected.Size / 1024); ConsoleProgressBar cpb = new ConsoleProgressBar(0, expected.Size); MemoryMap mmread = new MemoryMap(expected.Size); for (uint addr = 0; addr < expected.Size; addr += 128, cpb.Progress = addr) { Message msg_readpage = new Message(endpoint.BootloaderAddress, MessageType.ReadEepromPage, new byte[] { (byte)(addr & 0xFF), (byte)(addr >> 8), }); Message response = SendAndWaitForResponse(endpoint, msg_readpage, 2000); mmread.Write(addr, response.Payload, 0, 128); } UInt32 difference_address = 0; bool result = expected.BinaryCompare(mmread, ref difference_address); Console.CursorVisible = true; if (result) { Console.WriteLine("Correct."); } else { Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine("Failed."); Console.ForegroundColor = ConsoleColor.Gray; byte expected_byte = expected.ReadByte(difference_address); byte existing_byte = mmread.ReadByte(difference_address); throw new MemoryVerificationException("FLASH", difference_address, expected_byte, existing_byte); } return(result); }