public SetDeviceProgrammingParametersRequest(IMCU mcu) { var flashMem = mcu.Flash; var eepromMem = mcu.EEPROM; var flashPageSize = flashMem.PageSize; var flashSize = flashMem.Size; var epromSize = eepromMem.Size; Bytes = new byte[22]; Bytes[0] = Constants.CMD_STK_SET_DEVICE; Bytes[1] = mcu.DeviceCode; Bytes[2] = mcu.DeviceRevision; Bytes[3] = mcu.ProgType; Bytes[4] = mcu.ParallelMode; Bytes[5] = mcu.Polling; Bytes[6] = mcu.SelfTimed; Bytes[7] = mcu.LockBytes; Bytes[8] = mcu.FuseBytes; Bytes[9] = flashMem.PollVal1; Bytes[10] = flashMem.PollVal2; Bytes[11] = eepromMem.PollVal1; Bytes[12] = eepromMem.PollVal2; Bytes[13] = (byte)((flashPageSize >> 8) & 0x00ff); Bytes[14] = (byte)(flashPageSize & 0x00ff); Bytes[15] = (byte)((epromSize >> 8) & 0x00ff); Bytes[16] = (byte)(epromSize & 0x00ff); Bytes[17] = (byte)((flashSize >> 24) & 0xff); Bytes[18] = (byte)((flashSize >> 16) & 0xff); Bytes[19] = (byte)((flashSize >> 8) & 0xff); Bytes[20] = (byte)(flashSize & 0xff); Bytes[21] = Constants.SYNC_CRC_EOP; }
internal EnableProgrammingModeRequest(IMCU mcu) { var cmdBytes = mcu.CommandBytes[Command.PGM_ENABLE]; Bytes = new[] { Constants.CMD_ENTER_PROGRMODE_ISP, mcu.Timeout, mcu.StabDelay, mcu.CmdExeDelay, mcu.SynchLoops, mcu.ByteDelay, mcu.PollValue, mcu.PollIndex, cmdBytes[0], cmdBytes[1], cmdBytes[2], cmdBytes[3] }; }
public ButterflyBootloaderProgrammer(SerialPortConfig serialPortConfig, IMCU mcu) : base(serialPortConfig, mcu) { }
protected BootloaderProgrammer(IMCU mcu) { MCU = mcu; }
protected SerialPortBootloaderProgrammer(SerialPortConfig serialPortConfig, IMCU mcu) : base(mcu) { this.serialPortConfig = serialPortConfig; }
public void UploadSketch(IEnumerable <string> hexFileContents) { var serialPortName = options.PortName; var ports = SerialPortStream.GetPortNames(); if (!ports.Any() || ports.Distinct().SingleOrDefault( x => x.Equals(serialPortName, StringComparison.OrdinalIgnoreCase)) == null) { UploaderLogger.LogErrorAndThrow( string.Format("Specified COM port name '{0}' is not valid.", serialPortName)); } logger.Trace("Creating serial port '{0}'...", serialPortName); SerialPortBootloaderProgrammer programmer = null; IMCU mcu = null; SerialPortConfig serialPortConfig; switch (options.ArduinoModel) { case ArduinoModel.Mega1284: { mcu = new ATMega1284(); serialPortConfig = new SerialPortConfig(serialPortName, 115200); programmer = new OptibootBootloaderProgrammer(serialPortConfig, mcu); break; } case ArduinoModel.Mega2560: { mcu = new ATMega2560(); serialPortConfig = new SerialPortConfig(serialPortName, 115200); programmer = new WiringBootloaderProgrammer(serialPortConfig, mcu); break; } case ArduinoModel.Leonardo: case ArduinoModel.Micro: { mcu = new ATMega32U4(); serialPortConfig = new SerialPortConfig(serialPortName, 57600); programmer = new ButterflyBootloaderProgrammer(serialPortConfig, mcu); break; } case ArduinoModel.NanoR2: { mcu = new ATMega168(); serialPortConfig = new SerialPortConfig(serialPortName, 19200); programmer = new OptibootBootloaderProgrammer(serialPortConfig, mcu); break; } case ArduinoModel.NanoR3: { mcu = new ATMega328P(); serialPortConfig = new SerialPortConfig(serialPortName, 57600); programmer = new OptibootBootloaderProgrammer(serialPortConfig, mcu); break; } case ArduinoModel.UnoR3: { mcu = new ATMega328P(); serialPortConfig = new SerialPortConfig(serialPortName, 115200); programmer = new OptibootBootloaderProgrammer(serialPortConfig, mcu); break; } default: { UploaderLogger.LogErrorAndThrow( string.Format("Unsupported model: {0}!", options.ArduinoModel)); break; } } try { programmer.Open(); logger.Info("Establishing sync..."); programmer.EstablishSync(); logger.Info("Sync established."); logger.Info("Checking device signature..."); programmer.CheckDeviceSignature(); logger.Info("Device signature checked."); logger.Info("Initializing device..."); programmer.InitializeDevice(); logger.Info("Device initialized."); logger.Info("Enabling programming mode on the device..."); programmer.EnableProgrammingMode(); logger.Info("Programming mode enabled."); logger.Info("Programming device..."); programmer.ProgramDevice(ReadHexFile(hexFileContents, mcu.Flash.Size), progress); logger.Info("Device programmed."); logger.Info("Leaving programming mode..."); programmer.LeaveProgrammingMode(); logger.Info("Left programming mode!"); } finally { programmer.Close(); } logger.Info("All done, shutting down!"); }
internal OptibootBootloaderProgrammer(SerialPortConfig serialPortConfig, IMCU mcu) : base(serialPortConfig, mcu) { }
protected ArduinoBootloaderProgrammer(UploaderSerialPort serialPort, IMCU mcu) : base(serialPort, mcu) { }
private void _MCUType_SelectedIndexChanged(object sender, EventArgs e) { mcu = EntityService.GetMCU((MCUType)Enum.Parse(typeof(MCUType), (string)_MCUType.SelectedItem)); }
public WiringBootloaderProgrammer(SerialPortConfig serialPortConfig, IMCU mcu) : base(serialPortConfig, mcu) { }
public WiringBootloaderProgrammer(UploaderSerialPort serialPort, IMCU mcu) : base(serialPort, mcu) { }
protected ArduinoBootloaderProgrammer(SerialPortConfig serialPortConfig, IMCU mcu) : base(serialPortConfig, mcu) { }
internal OptibootBootloaderProgrammer(UploaderSerialPort serialPort, IMCU mcu) : base(serialPort, mcu) { }
protected SerialPortBootloaderProgrammer(UploaderSerialPort serialPort, IMCU mcu) : base(mcu) { SerialPort = serialPort; }