[Piklab-svn] SF.net SVN: piklab:[2943] trunk/piklab_kde4
IDE for PIC microcontrollers
Brought to you by:
azhyd
|
From: <az...@us...> - 2012-08-07 05:19:43
|
Revision: 2943
http://piklab.svn.sourceforge.net/piklab/?rev=2943&view=rev
Author: azhyd
Date: 2012-08-07 05:19:35 +0000 (Tue, 07 Aug 2012)
Log Message:
-----------
fix compilation and more work on pickit3
Modified Paths:
--------------
trunk/piklab_kde4/src/common/common/key_enum.h
trunk/piklab_kde4/src/piklab/CMakeLists.txt
trunk/piklab_kde4/src/progs/list/prog_list_ui.cpp
trunk/piklab_kde4/src/progs/pickit3/CMakeLists.txt
trunk/piklab_kde4/src/progs/pickit3/base/pickit3.cpp
trunk/piklab_kde4/src/progs/pickit3/base/pickit3.h
trunk/piklab_kde4/src/progs/pickit3/base/pickit3_prog.cpp
trunk/piklab_kde4/src/progs/pickit3/base/pickit3_prog.h
trunk/piklab_kde4/test/gputils/blinker18/blinker_18.piklab
Added Paths:
-----------
trunk/piklab_kde4/src/progs/pickit3/gui/
trunk/piklab_kde4/src/progs/pickit3/gui/CMakeLists.txt
trunk/piklab_kde4/src/progs/pickit3/gui/pickit3_group_ui.cpp
trunk/piklab_kde4/src/progs/pickit3/gui/pickit3_group_ui.h
trunk/piklab_kde4/src/progs/pickit3/pickit3_data/
trunk/piklab_kde4/src/progs/pickit3/pickit3_data/CMakeLists.txt
Modified: trunk/piklab_kde4/src/common/common/key_enum.h
===================================================================
--- trunk/piklab_kde4/src/common/common/key_enum.h 2012-08-05 19:43:29 UTC (rev 2942)
+++ trunk/piklab_kde4/src/common/common/key_enum.h 2012-08-07 05:19:35 UTC (rev 2943)
@@ -156,10 +156,10 @@
EnumVector() : _vector(Enum::Nb_Types) {}
const Type &operator [](Enum etype) const { return _vector[etype.type()]; }
Type &operator [](Enum etype) { return _vector[etype.type()]; }
+ const Type &operator [](typename Enum::Type type) const;
+ Type &operator [](typename Enum::Type type);
private:
std::vector<Type> _vector;
- const Type &operator [](typename Enum::Type type) const;
- Type &operator [](typename Enum::Type type);
};
#define FOR_EACH(Enum, e) for(Enum e; e<Enum::Type(Enum::Nb_Types); ++e)
Modified: trunk/piklab_kde4/src/piklab/CMakeLists.txt
===================================================================
--- trunk/piklab_kde4/src/piklab/CMakeLists.txt 2012-08-05 19:43:29 UTC (rev 2942)
+++ trunk/piklab_kde4/src/piklab/CMakeLists.txt 2012-08-07 05:19:35 UTC (rev 2943)
@@ -14,7 +14,7 @@
proglistui customprogui
picdembootloaderui pickit2bootloaderui tblbootloaderui
bootloaderui gpsimui pspui pickit1ui
- pickit2v2ui pickit2ui icd1ui icd2ui directui progui
+ pickit3ui pickit2v2ui pickit2ui icd1ui icd2ui directui progui
customprog
picdembootloader pickit2bootloader tblbootloader
bootloader gpsim psp pickit1
Modified: trunk/piklab_kde4/src/progs/list/prog_list_ui.cpp
===================================================================
--- trunk/piklab_kde4/src/progs/list/prog_list_ui.cpp 2012-08-05 19:43:29 UTC (rev 2942)
+++ trunk/piklab_kde4/src/progs/list/prog_list_ui.cpp 2012-08-07 05:19:35 UTC (rev 2943)
@@ -15,6 +15,8 @@
#include "progs/icd2/gui/icd2_group_ui.h"
#include "progs/icd1/base/icd1_prog.h"
#include "progs/icd1/gui/icd1_group_ui.h"
+#include "progs/pickit3/base/pickit3_prog.h"
+#include "progs/pickit3/gui/pickit3_group_ui.h"
#include "progs/pickit2/base/pickit2_prog.h"
#include "progs/pickit2/gui/pickit2_group_ui.h"
#include "progs/pickit2v2/base/pickit2v2_prog.h"
@@ -42,6 +44,7 @@
addGroup(new Icd2::ProgrammerGroup, new Icd2::GroupUI);
addGroup(new Icd2::DebuggerGroup, new Icd2::GroupUI);
addGroup(new Icd1::Group, new Icd1::GroupUI);
+ addGroup(new Pickit3::Group, new Pickit3::GroupUI);
addGroup(new Pickit2::Group, new Pickit2::GroupUI);
//addGroup(new Pickit2V2::Group, new Pickit2V2::GroupUI);
addGroup(new Pickit1::Group, new Pickit1::GroupUI);
Modified: trunk/piklab_kde4/src/progs/pickit3/CMakeLists.txt
===================================================================
--- trunk/piklab_kde4/src/progs/pickit3/CMakeLists.txt 2012-08-05 19:43:29 UTC (rev 2942)
+++ trunk/piklab_kde4/src/progs/pickit3/CMakeLists.txt 2012-08-07 05:19:35 UTC (rev 2943)
@@ -2,6 +2,6 @@
add_subdirectory(xml)
add_subdirectory(base)
-#if(NOT QT_ONLY)
-# add_subdirectory(gui)
-#endif(NOT QT_ONLY)
+if(NOT QT_ONLY)
+ add_subdirectory(gui)
+endif(NOT QT_ONLY)
Modified: trunk/piklab_kde4/src/progs/pickit3/base/pickit3.cpp
===================================================================
--- trunk/piklab_kde4/src/progs/pickit3/base/pickit3.cpp 2012-08-05 19:43:29 UTC (rev 2942)
+++ trunk/piklab_kde4/src/progs/pickit3/base/pickit3.cpp 2012-08-07 05:19:35 UTC (rev 2943)
@@ -180,16 +180,16 @@
if (!port().open()) return false;
if (!command(0x29)) return false;
SystemStatus status;
- if (!getSystemStatus(status)) return false;
+ if (!getStatus(status)) return false;
if (!readSerialNumber()) return false;
- if (!getSystemVersion()) return false;
+ if (!getVersion()) return false;
if (!queryProgToGoConfig()) return false;
if (!getProtocolVersion()) return false;
if (!sendConfigPacket()) return false;
return true;
}
-bool Pickit3::Hardware::getSystemStatus(SystemStatus& status)
+bool Pickit3::Hardware::getStatus(SystemStatus& status)
{
ByteArray in;
if (!commandWithSimpleResponse(0x3F, in)) return false;
@@ -219,7 +219,7 @@
return true;
}
-bool Pickit3::Hardware::getSystemVersion()
+bool Pickit3::Hardware::getVersion()
{
ByteArray in;
if (!commandWithSimpleResponse(0x41, in)) return false;
@@ -473,11 +473,13 @@
return commandWithComplexResponse(0xA0, in, &out);
}
-bool Pickit3::Hardware::getSysVoltages()
+bool Pickit3::Hardware::getVoltages(Device::VoltageValues& voltages)
{
ByteArray in;
if (!commandWithSimpleResponse(0x20, in)) return false;
- // TODO
+ voltages[Device::VoltageType::ProgrammerVpp] = Device::VoltageValue(Device::VoltageValue::Normal, double(in.getValue(4, 2)) / 1000);
+ //voltages[Device::VoltageType::ProgrammerVdd] = Device::VoltageValue(Device::VoltageValue::Normal, double(in.getValue(6, 2)) / 1000);
+ voltages[Device::VoltageType::TargetVdd] = Device::VoltageValue(Device::VoltageValue::Normal, double(in.getValue(8, 2)) / 1000);
return true;
}
Modified: trunk/piklab_kde4/src/progs/pickit3/base/pickit3.h
===================================================================
--- trunk/piklab_kde4/src/progs/pickit3/base/pickit3.h 2012-08-05 19:43:29 UTC (rev 2942)
+++ trunk/piklab_kde4/src/progs/pickit3/base/pickit3.h 2012-08-07 05:19:35 UTC (rev 2943)
@@ -205,16 +205,16 @@
bool setPower(bool on);
bool setTargetPower(bool on);
virtual bool setTargetReset(Device::ResetMode mode);
+ virtual bool getVoltages(Device::VoltageValues&);
private:
virtual bool internalConnectHardware();
Port& port() { return static_cast<Port&>(*_port); }
- bool getSystemStatus(SystemStatus& status);
+ bool getStatus(SystemStatus& status);
bool readSerialNumber();
- bool getSystemVersion();
+ bool getVersion();
bool queryProgToGoConfig();
bool getProtocolVersion();
- bool getSysVoltages();
ByteArray createConfigPacket() const;
bool sendConfigPacket();
bool beginBracket();
Modified: trunk/piklab_kde4/src/progs/pickit3/base/pickit3_prog.cpp
===================================================================
--- trunk/piklab_kde4/src/progs/pickit3/base/pickit3_prog.cpp 2012-08-05 19:43:29 UTC (rev 2942)
+++ trunk/piklab_kde4/src/progs/pickit3/base/pickit3_prog.cpp 2012-08-07 05:19:35 UTC (rev 2943)
@@ -12,6 +12,18 @@
#include "devices/list/device_list.h"
//-----------------------------------------------------------------------------
+Pickit3::PicBase::PicBase(const ::Programmer::Group &group, const Pic::Data *data)
+: ::Programmer::PicBase(group, data, "pic_pickit3_programmer"),
+ _firmwareId(0)
+{
+}
+
+bool Pickit3::PicBase::readFirmwareVersion()
+{
+ // ### TODO
+ return true;
+}
+
BitValue Pickit3::PicBase::readDeviceId()
{
BitValue v;
@@ -70,3 +82,8 @@
{
return new DeviceSpecific(base);
}
+
+bool Pickit3::Group::canReadVoltage(Device::VoltageType type) const
+{
+ return ( type==Device::VoltageType::ProgrammerVpp || type==Device::VoltageType::TargetVdd );
+}
Modified: trunk/piklab_kde4/src/progs/pickit3/base/pickit3_prog.h
===================================================================
--- trunk/piklab_kde4/src/progs/pickit3/base/pickit3_prog.h 2012-08-05 19:43:29 UTC (rev 2942)
+++ trunk/piklab_kde4/src/progs/pickit3/base/pickit3_prog.h 2012-08-07 05:19:35 UTC (rev 2943)
@@ -22,10 +22,12 @@
class PicBase : public ::Programmer::PicBase
{
public:
- PicBase(const ::Programmer::Group &group, const Pic::Data *data)
- : ::Programmer::PicBase(group, data, "pic_pickit3_programmer") {}
+ PicBase(const ::Programmer::Group &group, const Pic::Data *data);
+ virtual bool readFirmwareVersion();
+ uchar firmwareId() const { return _firmwareId; }
private:
+ uchar _firmwareId;
Hardware &hardware() { return static_cast<Hardware &>(*_hardware); }
virtual BitValue readDeviceId();
};
@@ -59,7 +61,7 @@
virtual ::Programmer::Properties properties() const { return ::Programmer::Programmer | ::Programmer::CanReadMemory | ::Programmer::HasConnectedState | ::Programmer::CanReleaseReset; }
virtual ::Programmer::TargetPowerMode targetPowerMode() const { return ::Programmer::TargetExternallyPowered; }
virtual bool isPortSupported(PortType type) const { return type == PortType::USB; }
- virtual bool canReadVoltage(Device::VoltageType) const { return false; }
+ virtual bool canReadVoltage(Device::VoltageType) const;
protected:
virtual void initSupported();
Added: trunk/piklab_kde4/src/progs/pickit3/gui/CMakeLists.txt
===================================================================
--- trunk/piklab_kde4/src/progs/pickit3/gui/CMakeLists.txt (rev 0)
+++ trunk/piklab_kde4/src/progs/pickit3/gui/CMakeLists.txt 2012-08-07 05:19:35 UTC (rev 2943)
@@ -0,0 +1,7 @@
+include_directories(${CMAKE_CURRENT_SOURCE_DIR})
+
+SET(pickit3ui_STAT_SRCS
+ pickit3_group_ui.cpp
+)
+automoc(${pickit3ui_STAT_SRCS})
+add_library(pickit3ui STATIC ${pickit3ui_STAT_SRCS})
Added: trunk/piklab_kde4/src/progs/pickit3/gui/pickit3_group_ui.cpp
===================================================================
--- trunk/piklab_kde4/src/progs/pickit3/gui/pickit3_group_ui.cpp (rev 0)
+++ trunk/piklab_kde4/src/progs/pickit3/gui/pickit3_group_ui.cpp 2012-08-07 05:19:35 UTC (rev 2943)
@@ -0,0 +1,72 @@
+/***************************************************************************
+ * Copyright (C) 2012 Nicolas Hadacek <ha...@kd...> *
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ ***************************************************************************/
+#include "pickit3_group_ui.h"
+#include "pickit3_group_ui.moc"
+
+#include "common/gui/misc_gui.h"
+#include "progs/gui/prog_config_widget.h"
+#include "progs/base/prog_group.h"
+
+//----------------------------------------------------------------------------
+Pickit3::AdvancedDialog::AdvancedDialog(PicBase &base, QWidget *parent)
+: ::Programmer::PicAdvancedDialog(base, parent, "pickit3_advanced_dialog")
+{
+ uint row = _firmwareContainer->numRows();
+ QLabel *label = new QLabel(i18n("Id:"), _firmwareContainer);
+ _firmwareContainer->addWidget(label, row,row, 0,0);
+ _firmwareIdLabel = new QLabel(_firmwareContainer);
+ _firmwareContainer->addWidget(_firmwareIdLabel, row,row, 1,1);
+ row++;
+
+ row = _programmerContainer->numRows();
+ if ( base.group().properties() & ::Programmer::Debugger ) {
+ Container::Button *container = new ::Programmer::ButtonContainer(i18n("Debug Executive"), this, SLOT(updateDebugExecutive()), _programmerContainer);
+ _programmerContainer->addWidget(container, row,row, 0,1);
+ label = new QLabel(i18n("Version:"), container);
+ container->addWidget(label, 1,1, 0,0);
+ _debugExecLabel = new QLabel(container);
+ container->addWidget(_debugExecLabel, 1,1, 1,1);
+ row++;
+ } else _debugExecLabel = 0;
+}
+
+void Pickit3::AdvancedDialog::updateDebugExecutive()
+{
+ BusyCursorStarter bc;
+ if ( ensureConnected() ) {
+ Device::TargetMode mode;
+ if ( !base().getTargetMode(mode) ) return;
+// if ( mode==Device::TargetMode::InProgramming )
+// MessageBox::sorry(i18n("You need to initiate debugging to read the debug executive version."), Log::Show);
+// else static_cast<DebugProgrammer &>(base()).readDebugExecutiveVersion();
+ }
+ updateDisplay();
+}
+
+void Pickit3::AdvancedDialog::updateDisplay()
+{
+ ::Programmer::PicAdvancedDialog::updateDisplay();
+ uchar id = base().firmwareId();
+ _firmwareIdLabel->setText(id==0 ? "---" : toHexLabel(id, 2));
+ if (_debugExecLabel) {
+// const VersionData &vd = static_cast<DebugProgrammer &>(base()).debugExecutiveVersion();
+// _debugExecLabel->setText(vd.isValid() ? vd.pretty() : "---");
+ }
+}
+
+//----------------------------------------------------------------------------
+::Programmer::ConfigWidget *Pickit3::GroupUI::createConfigWidget(QWidget *parent) const
+{
+ return new ::Programmer::ConfigWidget(static_cast<const Group &>(group()), parent);
+}
+
+::Programmer::AdvancedDialog *Pickit3::GroupUI::createAdvancedDialog(::Programmer::Base &base, QWidget *parent) const
+{
+ return new AdvancedDialog(static_cast<PicBase &>(base), parent);
+}
Added: trunk/piklab_kde4/src/progs/pickit3/gui/pickit3_group_ui.h
===================================================================
--- trunk/piklab_kde4/src/progs/pickit3/gui/pickit3_group_ui.h (rev 0)
+++ trunk/piklab_kde4/src/progs/pickit3/gui/pickit3_group_ui.h 2012-08-07 05:19:35 UTC (rev 2943)
@@ -0,0 +1,44 @@
+/***************************************************************************
+ * Copyright (C) 2012 Nicolas Hadacek <ha...@kd...> *
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ ***************************************************************************/
+#ifndef PICKIT3_GROUP_UI_H
+#define PICKIT3_GROUP_UI_H
+
+#include "devices/pic/gui/pic_prog_group_ui.h"
+#include "progs/pickit3/base/pickit3_prog.h"
+
+namespace Pickit3
+{
+//----------------------------------------------------------------------------
+class AdvancedDialog : public ::Programmer::PicAdvancedDialog
+{
+Q_OBJECT
+public:
+ AdvancedDialog(PicBase &base, QWidget *parent);
+ virtual void updateDisplay();
+
+private slots:
+ void updateDebugExecutive();
+
+private:
+ QLabel *_firmwareIdLabel, *_debugExecLabel;
+ PicBase &base() { return static_cast<PicBase &>(_base); }
+};
+
+//----------------------------------------------------------------------------
+class GroupUI : public ::Programmer::GroupUI
+{
+public:
+ virtual ::Programmer::ConfigWidget *createConfigWidget(QWidget *parent) const;
+ virtual bool hasAdvancedDialog() const { return true; }
+ virtual ::Programmer::AdvancedDialog *createAdvancedDialog(::Programmer::Base &base, QWidget *parent) const;
+};
+
+} // namespace
+
+#endif
Added: trunk/piklab_kde4/src/progs/pickit3/pickit3_data/CMakeLists.txt
===================================================================
--- trunk/piklab_kde4/src/progs/pickit3/pickit3_data/CMakeLists.txt (rev 0)
+++ trunk/piklab_kde4/src/progs/pickit3/pickit3_data/CMakeLists.txt 2012-08-07 05:19:35 UTC (rev 2943)
@@ -0,0 +1,6 @@
+include_directories(${CMAKE_CURRENT_SOURCE_DIR})
+
+SET(pickit3data_STAT_SRCS
+ pickit3_data.cpp
+)
+add_library(pickit3data STATIC ${pickit3data_STAT_SRCS})
Modified: trunk/piklab_kde4/test/gputils/blinker18/blinker_18.piklab
===================================================================
--- trunk/piklab_kde4/test/gputils/blinker18/blinker_18.piklab 2012-08-05 19:43:29 UTC (rev 2942)
+++ trunk/piklab_kde4/test/gputils/blinker18/blinker_18.piklab 2012-08-07 05:19:35 UTC (rev 2943)
@@ -11,10 +11,7 @@
<description/>
<version>0.1</version>
<tool>gputils</tool>
- <programmer>icd2</programmer>
- <watched_registers>
- <item>4034 2 </item>
- </watched_registers>
+ <programmer>pickit3</programmer>
</general>
<assembler>
<custom_options/>
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|