public override void OnAction(IMFDeployForm form, MFDevice device) { if (device == null || form == null) { return; } _DBG.Engine engine = device.DbgEngine; _DBG.WireProtocol.Commands.Monitor_MemoryMap.Range[] range = engine.MemoryMap(); if (range != null && range.Length > 0) { form.DumpToOutput("Type Start Size"); form.DumpToOutput("--------------------------------"); for (int i = 0; i < range.Length; i++) { string mem = ""; switch (range[i].m_flags) { case _DBG.WireProtocol.Commands.Monitor_MemoryMap.c_FLASH: mem = "FLASH"; break; case _DBG.WireProtocol.Commands.Monitor_MemoryMap.c_RAM: mem = "RAM"; break; } form.DumpToOutput(string.Format("{0,-6} 0x{1:x08} 0x{2:x08}", mem, range[i].m_address, range[i].m_length)); } } }
private bool Connect() { Disconnect(); try { _DBG.PortDefinition pd = (_DBG.PortDefinition)comboBoxPort.SelectedItem; string port = pd.Port; uint baudrate = uint.Parse( ((string)comboBoxBaud.SelectedItem) ); using(_DBG.AsyncSerialStream stream = new _DBG.AsyncSerialStream( port, baudrate )) { stream.Close(); } m_eng = new _DBG.Engine( new Microsoft.SPOT.Debugger.PortDefinition_Serial( port, port, baudrate ) ); m_eng.Silent = true; m_eng.Start(); if(m_eng.TryToConnect( 4, 250 )) { m_deviceRunning = true; m_eng.PauseExecution(); m_ranges = m_eng.MemoryMap(); if(m_ranges == null) { // // Fallback to some defaults. // m_ranges = new _DBG.WireProtocol.Commands.Monitor_MemoryMap.Range[2]; m_ranges[0] = new _DBG.WireProtocol.Commands.Monitor_MemoryMap.Range(); m_ranges[0].m_address = 0x00000000; m_ranges[0].m_length = 0x00060000; m_ranges[0].m_flags = _DBG.WireProtocol.Commands.Monitor_MemoryMap.c_RAM; m_ranges[1] = new _DBG.WireProtocol.Commands.Monitor_MemoryMap.Range(); m_ranges[1].m_address = 0x10000000; m_ranges[1].m_length = 1024*1024; m_ranges[1].m_flags = _DBG.WireProtocol.Commands.Monitor_MemoryMap.c_FLASH; } } else { m_deviceRunning = false; } m_ah = new _DBG.AbortHandler( m_eng, m_deviceRunning ); m_ah.Start(); bool connected = false; for(int tries=0; tries < 5; tries++) { if(m_ah.ReadRegisters( m_snapshot.m_registers, out m_snapshot.m_cpsr, out m_snapshot.m_BWA, out m_snapshot.m_BWC )) { connected = true; break; } Thread.Sleep( 1000 ); } if(connected) { for(int tries=0; tries < 5; tries++) { if(m_ah.ReadLayout( out m_snapshot.m_flashBase, out m_snapshot.m_flashSize, out m_snapshot.m_ramBase, out m_snapshot.m_ramSize )) { break; } Thread.Sleep( 1000 ); } return true; } if(!connected) { MessageBox.Show( "Cannot connect to device" ); } return connected; } catch(Exception ex) { MessageBox.Show( ex.Message ); return false; } }
private bool Connect() { Disconnect(); try { _DBG.PortDefinition pd = (_DBG.PortDefinition)comboBoxPort.SelectedItem; string port = pd.Port; uint baudrate = uint.Parse(((string)comboBoxBaud.SelectedItem)); using (_DBG.AsyncSerialStream stream = new _DBG.AsyncSerialStream(port, baudrate)) { stream.Close(); } m_eng = new _DBG.Engine(new Microsoft.SPOT.Debugger.PortDefinition_Serial(port, port, baudrate)); m_eng.Silent = true; m_eng.Start(); if (m_eng.TryToConnect(4, 250)) { m_deviceRunning = true; m_eng.PauseExecution(); m_ranges = m_eng.MemoryMap(); if (m_ranges == null) { // // Fallback to some defaults. // m_ranges = new _DBG.WireProtocol.Commands.Monitor_MemoryMap.Range[2]; m_ranges[0] = new _DBG.WireProtocol.Commands.Monitor_MemoryMap.Range(); m_ranges[0].m_address = 0x00000000; m_ranges[0].m_length = 0x00060000; m_ranges[0].m_flags = _DBG.WireProtocol.Commands.Monitor_MemoryMap.c_RAM; m_ranges[1] = new _DBG.WireProtocol.Commands.Monitor_MemoryMap.Range(); m_ranges[1].m_address = 0x10000000; m_ranges[1].m_length = 1024 * 1024; m_ranges[1].m_flags = _DBG.WireProtocol.Commands.Monitor_MemoryMap.c_FLASH; } } else { m_deviceRunning = false; } m_ah = new _DBG.AbortHandler(m_eng, m_deviceRunning); m_ah.Start(); bool connected = false; for (int tries = 0; tries < 5; tries++) { if (m_ah.ReadRegisters(m_snapshot.m_registers, out m_snapshot.m_cpsr, out m_snapshot.m_BWA, out m_snapshot.m_BWC)) { connected = true; break; } Thread.Sleep(1000); } if (connected) { for (int tries = 0; tries < 5; tries++) { if (m_ah.ReadLayout(out m_snapshot.m_flashBase, out m_snapshot.m_flashSize, out m_snapshot.m_ramBase, out m_snapshot.m_ramSize)) { break; } Thread.Sleep(1000); } return(true); } if (!connected) { MessageBox.Show("Cannot connect to device"); } return(connected); } catch (Exception ex) { MessageBox.Show(ex.Message); return(false); } }