You can subscribe to this list here.
| 2012 |
Jan
|
Feb
|
Mar
(16) |
Apr
(22) |
May
(8) |
Jun
(24) |
Jul
(18) |
Aug
(15) |
Sep
(4) |
Oct
(24) |
Nov
(2) |
Dec
|
|---|
|
From: <az...@us...> - 2012-10-01 04:29:18
|
Revision: 2957
http://piklab.svn.sourceforge.net/piklab/?rev=2957&view=rev
Author: azhyd
Date: 2012-10-01 04:29:11 +0000 (Mon, 01 Oct 2012)
Log Message:
-----------
added libm and libio to default sdcc linker options
Modified Paths:
--------------
trunk/piklab_kde4/Changelog
trunk/piklab_kde4/src/tools/sdcc/sdcc_compile.cpp
trunk/piklab_kde4/test/gputils/blinker18/blinker_18.piklab
trunk/piklab_kde4/test/sdcc/blink.piklab
trunk/piklab_kde4/test/sdcc/blinker.c
Modified: trunk/piklab_kde4/Changelog
===================================================================
--- trunk/piklab_kde4/Changelog 2012-09-09 23:37:49 UTC (rev 2956)
+++ trunk/piklab_kde4/Changelog 2012-10-01 04:29:11 UTC (rev 2957)
@@ -1,4 +1,4 @@
-0.16.2 (9 September 2012)
+0.16.2 (30 September 2012)
* fixed toolchain output when executable cannot be found
* fixed parsing for jalv2
* fixed template generator for jalv2
@@ -13,6 +13,7 @@
* fixed log views to read properly setting [reported by Luis Claudio Gambôa Lopes]
* added support for 24FJXXXGB1XX
* support firmware directory with space [reported by Luis Claudio Gambôa Lopes]
+* add libraries libm and libio by default sdcc linker options [requested by Antonio Augusto Todo Bom Neto]
0.16.1 (1 July 2012)
* fixed command-line utilities compilation with Qt only
Modified: trunk/piklab_kde4/src/tools/sdcc/sdcc_compile.cpp
===================================================================
--- trunk/piklab_kde4/src/tools/sdcc/sdcc_compile.cpp 2012-09-09 23:37:49 UTC (rev 2956)
+++ trunk/piklab_kde4/src/tools/sdcc/sdcc_compile.cpp 2012-10-01 04:29:11 UTC (rev 2957)
@@ -13,6 +13,8 @@
#include "sdcc_config.h"
#include "tools/list/tool_list.h"
#include "sdcc_generator.h"
+#include "devices/list/device_list.h"
+#include "devices/pic/base/pic.h"
//-----------------------------------------------------------------------------
QString SDCC::Process::familyName() const
@@ -72,6 +74,17 @@
args += "-Wl-c"; // create coff file
args += "-Wl-m"; // output map file
args += "$LKR(-Wl-s%LKR)";
+ if (family(_data.device) == P14) {
+ const Device::Data* data = Device::Lister::instance().data(_data.device);
+ if (static_cast<const Pic::Data&>(*data).architecture().type() == Pic::Architecture::EMidRange) {
+ args += "libme.lib";
+ } else {
+ args += "libm.lib";
+ }
+ } else {
+ args += "libio" + _data.device.toLower() + ".lib";
+ args += "libm18f.lib";
+ }
args += config.includeDirs(Tool::Category::Linker, "-I");
args += config.customOptions(Tool::Category::Linker);
args += "-o%O";
Modified: trunk/piklab_kde4/test/gputils/blinker18/blinker_18.piklab
===================================================================
--- trunk/piklab_kde4/test/gputils/blinker18/blinker_18.piklab 2012-09-09 23:37:49 UTC (rev 2956)
+++ trunk/piklab_kde4/test/gputils/blinker18/blinker_18.piklab 2012-10-01 04:29:11 UTC (rev 2957)
@@ -12,6 +12,9 @@
<version>0.1</version>
<tool>gputils</tool>
<programmer>pickit3</programmer>
+ <opened_files>
+ <item>blinker_18.asm</item>
+ </opened_files>
</general>
<assembler>
<custom_options/>
Modified: trunk/piklab_kde4/test/sdcc/blink.piklab
===================================================================
--- trunk/piklab_kde4/test/sdcc/blink.piklab 2012-09-09 23:37:49 UTC (rev 2956)
+++ trunk/piklab_kde4/test/sdcc/blink.piklab 2012-10-01 04:29:11 UTC (rev 2957)
@@ -12,10 +12,6 @@
</files>
<is_library>true</is_library>
<programmer>direct</programmer>
- <opened_files>
- <item>add.c</item>
- <item>blinker.c</item>
- </opened_files>
</general>
<sdcc>
<custom_options/>
Modified: trunk/piklab_kde4/test/sdcc/blinker.c
===================================================================
--- trunk/piklab_kde4/test/sdcc/blinker.c 2012-09-09 23:37:49 UTC (rev 2956)
+++ trunk/piklab_kde4/test/sdcc/blinker.c 2012-10-01 04:29:11 UTC (rev 2957)
@@ -2,7 +2,7 @@
#include <pic16f873.h>
typedef unsigned int word;
-word at 0x2007 CONFIG = _CP_OFF & _WDT_OFF & _BODEN_ON & \
+word __at 0x2007 CONFIG = _CP_OFF & _WDT_OFF & _BODEN_ON & \
_PWRTE_ON & _HS_OSC & _WRT_ENABLE_ON & \
_LVP_OFF & _DEBUG_OFF & _CPD_OFF;
@@ -10,7 +10,7 @@
unsigned char ms_delay = 0;
float abcd;
-void Intr() interrupt 0 {
+void Intr() __interrupt 0 {
ms_delay++;
PIR1 = 0;
PEIE = 1;
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <az...@us...> - 2012-09-09 23:37:56
|
Revision: 2956
http://piklab.svn.sourceforge.net/piklab/?rev=2956&view=rev
Author: azhyd
Date: 2012-09-09 23:37:49 +0000 (Sun, 09 Sep 2012)
Log Message:
-----------
work on pickit3 + misc fixes
Modified Paths:
--------------
trunk/piklab_kde4/Changelog
trunk/piklab_kde4/src/libgui/log_view.cpp
trunk/piklab_kde4/src/progs/base/generic_prog.cpp
trunk/piklab_kde4/src/progs/gui/prog_config_widget.cpp
trunk/piklab_kde4/src/progs/gui/prog_group_ui.cpp
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.xml
trunk/piklab_kde4/src/progs/pickit3/base/pickit3_data.h
trunk/piklab_kde4/src/progs/pickit3/base/pickit3_prog.cpp
trunk/piklab_kde4/src/progs/pickit3/base/pickit3_prog.h
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/pickit3_data.cpp
trunk/piklab_kde4/test/gputils/blinker18/blinker_18.piklab
Modified: trunk/piklab_kde4/Changelog
===================================================================
--- trunk/piklab_kde4/Changelog 2012-09-09 23:35:27 UTC (rev 2955)
+++ trunk/piklab_kde4/Changelog 2012-09-09 23:37:49 UTC (rev 2956)
@@ -1,4 +1,4 @@
-0.16.2 (1 September 2012)
+0.16.2 (9 September 2012)
* fixed toolchain output when executable cannot be found
* fixed parsing for jalv2
* fixed template generator for jalv2
@@ -6,10 +6,13 @@
* added menu entries to configure editor, to toggle/enable breakpoints, to switch editors, and
to toggle read-only mode for hex editor
* fixed crash when changing watched variable value [reported by Luca]
-* added pickit3 support for 18F2XX/4XX (with correct firmware loaded)
+* added pickit3 support for 18F2XX/4XX 18F4520/18F4580 (with correct firmware loaded)
* fixed hang with "stop" command in interactive command-line programmer
* fixed compilation on Fedora 17 [thanks to bitlord]
* fixed sdcc generator for latest sdcc [patch by Antonio Augusto Todo Bom Neto]
+* fixed log views to read properly setting [reported by Luis Claudio Gambôa Lopes]
+* added support for 24FJXXXGB1XX
+* support firmware directory with space [reported by Luis Claudio Gambôa Lopes]
0.16.1 (1 July 2012)
* fixed command-line utilities compilation with Qt only
Modified: trunk/piklab_kde4/src/libgui/log_view.cpp
===================================================================
--- trunk/piklab_kde4/src/libgui/log_view.cpp 2012-09-09 23:35:27 UTC (rev 2955)
+++ trunk/piklab_kde4/src/libgui/log_view.cpp 2012-09-09 23:37:49 UTC (rev 2956)
@@ -27,6 +27,7 @@
setReadOnly(true);
setPalette(p);
setMinimumWidth(300);
+ setDebugLevel(GlobalConfig::debugLevel());
connect(this, SIGNAL(aboutToShowContextMenu(QMenu*)), this, SLOT(slotAboutToShowContextMenu(QMenu*)));
}
Modified: trunk/piklab_kde4/src/progs/base/generic_prog.cpp
===================================================================
--- trunk/piklab_kde4/src/progs/base/generic_prog.cpp 2012-09-09 23:35:27 UTC (rev 2955)
+++ trunk/piklab_kde4/src/progs/base/generic_prog.cpp 2012-09-09 23:37:49 UTC (rev 2956)
@@ -158,11 +158,15 @@
PURL::Directory Programmer::Base::firmwareDirectory()
{
- if ( _firmwareDirectory.isEmpty() ) _firmwareDirectory = GroupConfig::firmwareDirectory(group());
- if ( !_firmwareDirectory.exists() ) {
- log(Log::LineType::Error, i18n("Firmware directory is not configured or does not exist."));
+ if (_firmwareDirectory.isEmpty()) _firmwareDirectory = GroupConfig::firmwareDirectory(group());
+ if (_firmwareDirectory.isEmpty()) {
+ log(Log::LineType::Error, i18n("Firmware directory is not configured."));
return PURL::Directory();
}
+ if (!_firmwareDirectory.exists()) {
+ log(Log::LineType::Error, i18n("Firmware directory '%1' does not exist.").arg(_firmwareDirectory.pretty()));
+ return PURL::Directory();
+ }
return _firmwareDirectory;
}
@@ -238,7 +242,7 @@
bool Programmer::Base::setTargetPowerOn(bool on)
{
_targetPowerOn = on;
- return _deviceSpecific->setTargetPowerOn(on);
+ return _deviceSpecific.get() != NULL ? _deviceSpecific->setTargetPowerOn(on) : true;
}
void Programmer::Base::appendTask(Task task, const Device::MemoryRange& range)
Modified: trunk/piklab_kde4/src/progs/gui/prog_config_widget.cpp
===================================================================
--- trunk/piklab_kde4/src/progs/gui/prog_config_widget.cpp 2012-09-09 23:35:27 UTC (rev 2955)
+++ trunk/piklab_kde4/src/progs/gui/prog_config_widget.cpp 2012-09-09 23:37:49 UTC (rev 2956)
@@ -34,7 +34,7 @@
void Programmer::ConfigWidget::saveConfig()
{
- if (_firmwareDir) GroupConfig::writeFirmwareDirectory(_group, _firmwareDir->url().url());
+ if (_firmwareDir) GroupConfig::writeFirmwareDirectory(_group, _firmwareDir->url().path());
}
bool Programmer::ConfigWidget::setPort(const HardwareDescription &)
Modified: trunk/piklab_kde4/src/progs/gui/prog_group_ui.cpp
===================================================================
--- trunk/piklab_kde4/src/progs/gui/prog_group_ui.cpp 2012-09-09 23:35:27 UTC (rev 2955)
+++ trunk/piklab_kde4/src/progs/gui/prog_group_ui.cpp 2012-09-09 23:37:49 UTC (rev 2956)
@@ -46,10 +46,11 @@
//----------------------------------------------------------------------------
Programmer::AdvancedDialog::AdvancedDialog(Base &base, QWidget *parent, const char *name)
- : PageDialog(parent, name, true, i18n("Advanced Dialog"), Close, Close, false),
- _base(base), _calEditor(0)
+: PageDialog(parent, name, true, i18n("Advanced Dialog"), Close, Close, false),
+ _base(base), _calEditor(0)
{
setFaceType(List);
+
// programmer
_programmerContainer = new Container::Grid(this);
KPageWidgetItem* item = addPage(_programmerContainer, _base.group().label());
Modified: trunk/piklab_kde4/src/progs/pickit3/base/pickit3.cpp
===================================================================
--- trunk/piklab_kde4/src/progs/pickit3/base/pickit3.cpp 2012-09-09 23:35:27 UTC (rev 2955)
+++ trunk/piklab_kde4/src/progs/pickit3/base/pickit3.cpp 2012-09-09 23:37:49 UTC (rev 2956)
@@ -76,6 +76,7 @@
//-----------------------------------------------------------------------------
Pickit3::Hardware::Hardware(::Programmer::Base &base)
: ::Programmer::PicHardware(base, new Port(base), QString::null),
+ _apId(0), _firmwareId(0),
_powerOptions(NoPowerOption)
{
}
@@ -208,10 +209,8 @@
if (!getStatus(status)) return false;
if (!selfTest()) return false;
if (!readSerialNumber()) return false;
- if (!getVersion()) return false;
if (!queryProgToGoConfig()) return false;
if (!getProtocolVersion()) return false;
- if (!sendConfigPacket()) return false;
return true;
}
@@ -219,7 +218,6 @@
{
ByteArray in;
if (!commandWithSimpleResponse(0x3F, in)) return false;
- // ### FIXME
status._major = in.getValue( 6, 2);
status._init0 = in.getValue(10, 2);
status._init1 = in.getValue(14, 2);
@@ -250,11 +248,30 @@
return true;
}
-bool Pickit3::Hardware::getVersion()
+bool Pickit3::Hardware::getVersions()
{
ByteArray in;
if (!commandWithSimpleResponse(0x41, in)) return false;
- // TODO
+ const uint size = in.getValue(2, 2);
+ if (size != 0x16) {
+ log(Log::LineType::Error, i18n("Wrong size \"%1\" (was expecting \"%2\")").arg(size).arg(0x16));
+ return false;
+ }
+ const uint status = in.getValue(4, 2);
+ if (status != 0x00) {
+ log(Log::LineType::Error, i18n("Wrong status \"%1\" (was expecting \"%2\")").arg(status).arg(0x00));
+ return false;
+ }
+ _osVersion = VersionData(in.getValue(7, 1), in.getValue(8, 1), in.getValue(9, 1));
+ log(Log::DebugLevel::Extra, QString("OS Version: %1").arg(_osVersion.pretty()));
+ _apId = in.getValue(10, 1);
+ _apVersion = VersionData(in.getValue(11, 1), in.getValue(12, 1), in.getValue(13, 1));
+ log(Log::DebugLevel::Extra, QString("AP: %1 Version: %2").arg(_apId).arg(_apVersion.pretty()));
+ _hardwareRevision = in.getValue(18, 2);
+ log(Log::DebugLevel::Extra, QString("Hardware Revision: %1").arg(toHexLabel(_hardwareRevision, 2)));
+ _firmwareId = in.getValue(24, 1);
+ _firmwareVersion = VersionData(in.getValue(25, 1), in.getValue(26, 1), in.getValue(27, 1));
+ log(Log::DebugLevel::Extra, QString("Firmware: %1 Version: %2").arg(_firmwareId).arg(_firmwareVersion.pretty()));
return true;
}
@@ -329,7 +346,9 @@
// row erase latches
data.setValue(progFamily->rowEraseLatches, 68, 1);
// vdd min, max, and default
- data.setValue((progFamily->vddMin * 8) / 1000, 69, 1);
+ uint vddMin = progFamily->vddMin;
+ if (vddMin == 2000) vddMin = 2125; // FIXME
+ data.setValue((vddMin * 8) / 1000, 69, 1);
data.setValue((progFamily->vddMax * 8) / 1000, 70, 1);
data.setValue((progFamily->vddDef * 8) / 1000, 71, 1);
// vpp min, max, and default
@@ -372,7 +391,8 @@
data.setValue(0, 118, 4); // FIXME
data.setValue(0, 122, 4); // FIXME
// panel count, size
- uint panelCount = (codeSize - progFamily->bootSize) / progFamily->panelSize;
+ uint panelCount = 1;
+ if (progFamily->panelSize != 0) panelCount = (codeSize - progFamily->bootSize) / progFamily->panelSize;
data.setValue(panelCount, 126, 2);
data.setValue(progFamily->panelSize, 128, 2);
// config masks
@@ -499,7 +519,7 @@
return commandWithComplexResponse(0xA0, "endBracket", in, &out);
}
-bool Pickit3::Hardware::getVoltages(Device::VoltageValues& voltages)
+bool Pickit3::Hardware::readVoltages(Device::VoltageValues& voltages)
{
ByteArray in;
if (!commandWithSimpleResponse(0x20, in)) return false;
@@ -647,3 +667,10 @@
}
return endBracket();
}
+
+bool Pickit3::Hardware::uploadAP(const Pic::Memory&)
+{
+ // ### FIXME
+ log(Log::LineType::Error, "Uploading firmware not supported yet");
+ return false;
+}
Modified: trunk/piklab_kde4/src/progs/pickit3/base/pickit3.h
===================================================================
--- trunk/piklab_kde4/src/progs/pickit3/base/pickit3.h 2012-09-09 23:35:27 UTC (rev 2955)
+++ trunk/piklab_kde4/src/progs/pickit3/base/pickit3.h 2012-09-09 23:37:49 UTC (rev 2956)
@@ -207,11 +207,20 @@
bool write(Pic::MemoryRangeType type, uint wordOffset, const Device::Array& data);
bool setPower(bool on, bool targetSelfPowered);
virtual bool setTargetReset(Device::ResetMode mode);
- virtual bool getVoltages(Device::VoltageValues&);
+ virtual bool readVoltages(Device::VoltageValues&);
ByteArray createConfigPacket() const;
uint computeChecksum(const ByteArray& data) const;
+ bool sendConfigPacket();
+ bool getVersions();
+ const VersionData& getFirmwareVersion() const { return _firmwareVersion; }
+ const VersionData& getOSVersion() const { return _osVersion; }
+ const VersionData& getAPVersion() const { return _apVersion; }
+ uint getAPId() const { return _apId; }
+ bool uploadAP(const Pic::Memory&);
private:
+ VersionData _osVersion, _apVersion, _firmwareVersion;
+ uint _apId, _hardwareRevision, _firmwareId;
PowerOptions _powerOptions;
virtual bool internalConnectHardware();
@@ -219,10 +228,8 @@
bool getStatus(SystemStatus& status);
bool selfTest();
bool readSerialNumber();
- bool getVersion();
bool queryProgToGoConfig();
bool getProtocolVersion();
- bool sendConfigPacket();
bool beginBracket();
bool endBracket();
bool setDebugOption();
Modified: trunk/piklab_kde4/src/progs/pickit3/base/pickit3.xml
===================================================================
--- trunk/piklab_kde4/src/progs/pickit3/base/pickit3.xml 2012-09-09 23:35:27 UTC (rev 2955)
+++ trunk/piklab_kde4/src/progs/pickit3/base/pickit3.xml 2012-09-09 23:37:49 UTC (rev 2956)
@@ -9,12 +9,14 @@
<!DOCTYPE piklab>
<type name="pickit3">
- <device name="18F242" family="18FXX2_XX8" erase_algo="0x0000" flags="0x0000" />
- <device name="18F248" family="18FXX2_XX8" erase_algo="0x0000" flags="0x0000" />
- <device name="18F252" family="18FXX2_XX8" erase_algo="0xFD30" flags="0x0000" />
- <device name="18F258" family="18FXX2_XX8" erase_algo="0xFD30" flags="0x0000" />
- <device name="18F442" family="18FXX2_XX8" erase_algo="0x5DA8" flags="0x0000" />
- <device name="18F448" family="18FXX2_XX8" erase_algo="0x5DA8" flags="0x0000" />
- <device name="18F452" family="18FXX2_XX8" erase_algo="0x6676" flags="0x0000" />
- <device name="18F458" family="18FXX2_XX8" erase_algo="0xF5A0" flags="0x0000" />
+ <device name="18F242" family="18FXX2_XX8" erase_algo="0x0000" flags="0x0000" />
+ <device name="18F248" family="18FXX2_XX8" erase_algo="0x0000" flags="0x0000" />
+ <device name="18F252" family="18FXX2_XX8" erase_algo="0xFD30" flags="0x0000" />
+ <device name="18F258" family="18FXX2_XX8" erase_algo="0xFD30" flags="0x0000" />
+ <device name="18F442" family="18FXX2_XX8" erase_algo="0x5DA8" flags="0x0000" />
+ <device name="18F448" family="18FXX2_XX8" erase_algo="0x5DA8" flags="0x0000" />
+ <device name="18F452" family="18FXX2_XX8" erase_algo="0x6676" flags="0x0000" />
+ <device name="18F4520" family="18F2XXX_4XXX" erase_algo="0xB938" flags="0x0000" />
+ <device name="18F458" family="18FXX2_XX8" erase_algo="0xF5A0" flags="0x0000" />
+ <device name="18F4580" family="18F2XXX_4XXX" erase_algo="0xB938" flags="0x0000" />
</type>
Modified: trunk/piklab_kde4/src/progs/pickit3/base/pickit3_data.h
===================================================================
--- trunk/piklab_kde4/src/progs/pickit3/base/pickit3_data.h 2012-09-09 23:35:27 UTC (rev 2955)
+++ trunk/piklab_kde4/src/progs/pickit3/base/pickit3_data.h 2012-09-09 23:37:49 UTC (rev 2956)
@@ -19,6 +19,7 @@
struct FamilyData {
const char* name;
uint minorAlgo, debugAlgo, eraseAlgo;
+ uint apId;
};
extern const FamilyData FAMILY_DATA[];
Modified: trunk/piklab_kde4/src/progs/pickit3/base/pickit3_prog.cpp
===================================================================
--- trunk/piklab_kde4/src/progs/pickit3/base/pickit3_prog.cpp 2012-09-09 23:35:27 UTC (rev 2955)
+++ trunk/piklab_kde4/src/progs/pickit3/base/pickit3_prog.cpp 2012-09-09 23:37:49 UTC (rev 2956)
@@ -10,20 +10,36 @@
#include "devices/base/device_group.h"
#include "devices/list/device_list.h"
+#include "pickit3_data.h"
//-----------------------------------------------------------------------------
Pickit3::PicBase::PicBase(const ::Programmer::Group &group, const Pic::Data *data)
-: ::Programmer::PicBase(group, data, "pic_pickit3_programmer"),
- _firmwareId(0)
+: ::Programmer::PicBase(group, data, "pic_pickit3_programmer")
{
}
bool Pickit3::PicBase::readFirmwareVersion()
{
- // ### TODO
+ if (!hardware().getVersions()) return false;
+ _firmwareVersion = hardware().getFirmwareVersion();
return true;
}
+const VersionData& Pickit3::PicBase::getOSVersion() const
+{
+ return hardware().getOSVersion();
+}
+
+const VersionData& Pickit3::PicBase::getAPVersion() const
+{
+ return hardware().getAPVersion();
+}
+
+uint Pickit3::PicBase::getAPId() const
+{
+ return hardware().getAPId();
+}
+
BitValue Pickit3::PicBase::readDeviceId()
{
BitValue v;
@@ -31,6 +47,64 @@
return v;
}
+bool Pickit3::PicBase::setTarget()
+{
+ return hardware().sendConfigPacket();
+}
+
+bool Pickit3::PicBase::setupFirmware()
+{
+ const FamilyData& family = FAMILY_DATA[Pickit3::family(device()->name())];
+ log(Log::DebugLevel::Normal, QString(" AP id is %1 and we want %2").arg(getAPId()).arg(family.apId));
+ if (getAPId() == family.apId) return true;
+ log(Log::LineType::Information, i18n(" Incorrect AP loaded."));
+
+ // find AP file
+ PURL::Directory dir = firmwareDirectory();
+ if ( dir.isEmpty() ) return false;
+ QString nameFilter = "PK3AP_" + QString::number(family.apId).rightJustify(2, '0') + "_??????.hex";
+ QStringList files = dir.files(nameFilter);
+ if ( files.isEmpty() ) {
+ log(Log::LineType::Error, i18n("Could not find AP file \"%1\" in directory \"%2\".").arg(nameFilter).arg(dir.path()));
+ return false;
+ }
+
+ // upload hex file
+ PURL::Url url(dir, files[files.count()-1]);
+ log(Log::DebugLevel::Normal, QString(" AP file: %1").arg(url.pretty()));
+ Log::StringView sview;
+ PURL::File file(url, sview);
+ if ( !file.openForRead() ) {
+ log(Log::LineType::Error, i18n("Could not open AP file \"%1\".").arg(url.pretty()));
+ return false;
+ }
+ const Device::Data &data = *Device::Lister::instance().data("24FJ256GB106");
+ Pic::Memory memory(static_cast<const Pic::Data &>(data));
+ QStringList errors, warnings;
+ Pic::Memory::WarningTypes warningTypes;
+ if ( !memory.load(file.stream(), errors, warningTypes, warnings) ) {
+ log(Log::LineType::Error, i18n("Could not read AP hex file \"%1\": %2.").arg(file.url().pretty()).arg(errors[0]));
+ return false;
+ }
+ if ( warningTypes!=Pic::Memory::NoWarning ) {
+ log(Log::LineType::Error, i18n("AP hex file seems incompatible with device 24FJ256GB106 inside Pickit3."));
+ return false;
+ }
+ if ( !hardware().uploadAP(memory) ) {
+ log(Log::LineType::Error, i18n("Failed to upload AP."));
+ return false;
+ }
+
+ // check AP
+ if ( !hardware().getVersions() ) return false;
+ if (getAPId() != family.apId) {
+ log(Log::LineType::Error, i18n("AP still incorrect after uploading."));
+ return false;
+ }
+ log(Log::LineType::Information, i18n(" AP succesfully uploaded."));
+ return true;
+}
+
//-----------------------------------------------------------------------------
bool Pickit3::DeviceSpecific::setPowerOn()
{
Modified: trunk/piklab_kde4/src/progs/pickit3/base/pickit3_prog.h
===================================================================
--- trunk/piklab_kde4/src/progs/pickit3/base/pickit3_prog.h 2012-09-09 23:35:27 UTC (rev 2955)
+++ trunk/piklab_kde4/src/progs/pickit3/base/pickit3_prog.h 2012-09-09 23:37:49 UTC (rev 2956)
@@ -24,12 +24,16 @@
public:
PicBase(const ::Programmer::Group &group, const Pic::Data *data);
virtual bool readFirmwareVersion();
- uchar firmwareId() const { return _firmwareId; }
+ const VersionData& getOSVersion() const;
+ const VersionData& getAPVersion() const;
+ uint getAPId() const;
private:
- uchar _firmwareId;
Hardware &hardware() { return static_cast<Hardware &>(*_hardware); }
+ const Hardware &hardware() const { return static_cast<const Hardware &>(*_hardware); }
virtual BitValue readDeviceId();
+ virtual bool setTarget();
+ virtual bool setupFirmware();
};
//-----------------------------------------------------------------------------
@@ -58,7 +62,8 @@
public:
virtual QString name() const { return "pickit3"; }
virtual QString label() const { return i18n("Pickit3"); }
- virtual ::Programmer::Properties properties() const { return ::Programmer::Programmer | ::Programmer::CanReadMemory | ::Programmer::HasConnectedState | ::Programmer::CanReleaseReset; }
+ virtual ::Programmer::Properties properties() const { return ::Programmer::Programmer | ::Programmer::CanReadMemory | ::Programmer::HasConnectedState
+ | ::Programmer::CanReleaseReset | ::Programmer::HasFirmware | ::Programmer::CanUploadFirmware | ::Programmer::NeedDeviceSpecificFirmware; }
virtual ::Programmer::TargetPowerMode targetPowerMode() const { return ::Programmer::TargetPowerModeFromConfig; }
virtual bool isPortSupported(PortType type) const { return type == PortType::USB; }
virtual bool canReadVoltage(Device::VoltageType) const;
Modified: trunk/piklab_kde4/src/progs/pickit3/gui/pickit3_group_ui.cpp
===================================================================
--- trunk/piklab_kde4/src/progs/pickit3/gui/pickit3_group_ui.cpp 2012-09-09 23:35:27 UTC (rev 2955)
+++ trunk/piklab_kde4/src/progs/pickit3/gui/pickit3_group_ui.cpp 2012-09-09 23:37:49 UTC (rev 2956)
@@ -18,46 +18,34 @@
: ::Programmer::PicAdvancedDialog(base, parent, "pickit3_advanced_dialog")
{
uint row = _firmwareContainer->numRows();
- QLabel *label = new QLabel(i18n("Id:"), _firmwareContainer);
+ QLabel *label = new QLabel(i18n("OS Version:"), _firmwareContainer);
_firmwareContainer->addWidget(label, row,row, 0,0);
- _firmwareIdLabel = new QLabel(_firmwareContainer);
- _firmwareContainer->addWidget(_firmwareIdLabel, row,row, 1,1);
+ _osVersionLabel = new QLabel(_firmwareContainer);
+ _firmwareContainer->addWidget(_osVersionLabel, 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;
-}
+ label = new QLabel(i18n("AP Version:"), _firmwareContainer);
+ _firmwareContainer->addWidget(label, row,row, 0,0);
+ _apVersionLabel = new QLabel(_firmwareContainer);
+ _firmwareContainer->addWidget(_apVersionLabel, row,row, 1,1);
+ row++;
-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();
+ label = new QLabel(i18n("AP Id:"), _firmwareContainer);
+ _firmwareContainer->addWidget(label, row,row, 0,0);
+ _apIdLabel = new QLabel(_firmwareContainer);
+ _firmwareContainer->addWidget(_apIdLabel, row,row, 1,1);
+ row++;
}
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() : "---");
- }
+ const VersionData& osVersion = base().getOSVersion();
+ _osVersionLabel->setText(osVersion.pretty());
+ const VersionData& apVersion = base().getAPVersion();
+ _apVersionLabel->setText(apVersion.pretty());
+ uint apId = base().getAPId();
+ _apIdLabel->setText(apId != 0 ? QString::number(apId) : "---");
}
//----------------------------------------------------------------------------
Modified: trunk/piklab_kde4/src/progs/pickit3/gui/pickit3_group_ui.h
===================================================================
--- trunk/piklab_kde4/src/progs/pickit3/gui/pickit3_group_ui.h 2012-09-09 23:35:27 UTC (rev 2955)
+++ trunk/piklab_kde4/src/progs/pickit3/gui/pickit3_group_ui.h 2012-09-09 23:37:49 UTC (rev 2956)
@@ -22,11 +22,8 @@
AdvancedDialog(PicBase &base, QWidget *parent);
virtual void updateDisplay();
-private slots:
- void updateDebugExecutive();
-
private:
- QLabel *_firmwareIdLabel, *_debugExecLabel;
+ QLabel *_osVersionLabel, *_apVersionLabel, *_apIdLabel;
PicBase &base() { return static_cast<PicBase &>(_base); }
};
Modified: trunk/piklab_kde4/src/progs/pickit3/pickit3_data/pickit3_data.cpp
===================================================================
--- trunk/piklab_kde4/src/progs/pickit3/pickit3_data/pickit3_data.cpp 2012-09-09 23:35:27 UTC (rev 2955)
+++ trunk/piklab_kde4/src/progs/pickit3/pickit3_data/pickit3_data.cpp 2012-09-09 23:37:49 UTC (rev 2956)
@@ -9,9 +9,10 @@
#include "progs/pickit3/base/pickit3_data.h"
const Pickit3::FamilyData Pickit3::FAMILY_DATA[] = {
- // MinorAlgo DebugAlgo EraseAlgo
- { "18FXX2_XX8", 0x01, 0x05, 0x01 },
- { NULL, 0, 0, 0 }
+ // MinorAlgo DebugAlgo EraseAlgo AlgoPlugin
+ { "18FXX2_XX8", 0x01, 0x05, 0x01, 5 },
+ { "18F2XXX_4XXX", 0x02, 0x05, 0x07, 5 },
+ { NULL, 0, 0, 0, 0 }
};
const Pickit3::FamilyData* Pickit3::findFamilyData(const QString& name)
Modified: trunk/piklab_kde4/test/gputils/blinker18/blinker_18.piklab
===================================================================
--- trunk/piklab_kde4/test/gputils/blinker18/blinker_18.piklab 2012-09-09 23:35:27 UTC (rev 2955)
+++ trunk/piklab_kde4/test/gputils/blinker18/blinker_18.piklab 2012-09-09 23:37:49 UTC (rev 2956)
@@ -12,9 +12,6 @@
<version>0.1</version>
<tool>gputils</tool>
<programmer>pickit3</programmer>
- <opened_files>
- <item>blinker_18.asm</item>
- </opened_files>
</general>
<assembler>
<custom_options/>
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <az...@us...> - 2012-09-09 23:35:35
|
Revision: 2955
http://piklab.svn.sourceforge.net/piklab/?rev=2955&view=rev
Author: azhyd
Date: 2012-09-09 23:35:27 +0000 (Sun, 09 Sep 2012)
Log Message:
-----------
add support for 24FJXXXGB1XX
Added Paths:
-----------
trunk/piklab_kde4/src/devices/pic/xml_data/24FJ128GB106.xml
trunk/piklab_kde4/src/devices/pic/xml_data/24FJ128GB108.xml
trunk/piklab_kde4/src/devices/pic/xml_data/24FJ128GB110.xml
trunk/piklab_kde4/src/devices/pic/xml_data/24FJ192GB106.xml
trunk/piklab_kde4/src/devices/pic/xml_data/24FJ192GB108.xml
trunk/piklab_kde4/src/devices/pic/xml_data/24FJ192GB110.xml
trunk/piklab_kde4/src/devices/pic/xml_data/24FJ256GB108.xml
trunk/piklab_kde4/src/devices/pic/xml_data/24FJ256GB110.xml
trunk/piklab_kde4/src/devices/pic/xml_data/24FJ64GB106.xml
trunk/piklab_kde4/src/devices/pic/xml_data/24FJ64GB108.xml
trunk/piklab_kde4/src/devices/pic/xml_data/24FJ64GB110.xml
Added: trunk/piklab_kde4/src/devices/pic/xml_data/24FJ128GB106.xml
===================================================================
--- trunk/piklab_kde4/src/devices/pic/xml_data/24FJ128GB106.xml (rev 0)
+++ trunk/piklab_kde4/src/devices/pic/xml_data/24FJ128GB106.xml 2012-09-09 23:35:27 UTC (rev 2955)
@@ -0,0 +1,164 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--************************************************************************-->
+<!--* Copyright (C) 2007 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. *-->
+<!--************************************************************************-->
+<device name="24FJ128GB106" status="IP" memory_technology="FLASH" architecture="24F" id="0x1009" >
+
+<!--* Documents ************************************************************-->
+ <documents webpage="531079" datasheet="39897" progsheet="39907" erratas="80369" />
+
+<!--* Operating characteristics ********************************************-->
+ <frequency_range name="industrial" >
+ <frequency start="0" end="16" vdd_min="2.0" vdd_max="2.75" />
+ <frequency start="16" end="32" vdd_min="2.0" vdd_max="2.25" />
+ </frequency_range>
+
+ <voltages name="vpp" min="2.1" max="3.6" nominal="3.3" />
+ <voltages name="vdd_prog" min="2.1" max="3.6" nominal="3.3" />
+
+<!--* Memory ***************************************************************-->
+ <memory name="code" start="0x000000" end="0x0157F8" />
+ <memory name="device_id" start="0xFF0000" end="0xFF0004" />
+ <memory name="config" start="0x0157FA" end="0x0157FF" />
+<!-- <memory name="user_ids" start="0xF80010" end="0xF80018" rmask="0xFFFF" /> -->
+ <memory name="debug_vector" start="0x800000" end="0x800007" />
+ <memory name="program_executive" start="0x800000" end="0x8007EF" />
+
+<!--* Configuration bits ***************************************************-->
+ <config offset="0x0" name="CONFIG1" wmask="0x7FFF" bvalue="0x7FFF" >
+ <mask name="WDTPOST" value="0x000F" >
+ <value value="0x0000" name="1:1" />
+ <value value="0x0001" name="1:2" />
+ <value value="0x0002" name="1:4" />
+ <value value="0x0003" name="1:8" />
+ <value value="0x0004" name="1:16" />
+ <value value="0x0005" name="1:32" />
+ <value value="0x0006" name="1:64" />
+ <value value="0x0007" name="1:128" />
+ <value value="0x0008" name="1:256" />
+ <value value="0x0009" name="1:512" />
+ <value value="0x000A" name="1:1024" />
+ <value value="0x000B" name="1:2048" />
+ <value value="0x000C" name="1:4096" />
+ <value value="0x000D" name="1:8192" />
+ <value value="0x000E" name="1:16384" />
+ <value value="0x000F" name="1:32768" />
+ </mask>
+ <mask name="WDTPRE" value="0x0010" >
+ <value value="0x0000" name="1:32" />
+ <value value="0x0010" name="1:128" />
+ </mask>
+ <mask name="WINDIS" value="0x0040" >
+ <value value="0x0000" name="On" />
+ <value value="0x0040" name="Off" />
+ </mask>
+ <mask name="FWDTEN" value="0x0080" >
+ <value value="0x0000" name="Software" />
+ <value value="0x0080" name="On" />
+ </mask>
+ <mask name="ICS" value="0x0300" >
+ <value value="0x0300" name="PGEC1, PGED1" />
+ <value value="0x0200" name="PGEC2, EGED2" />
+ <value value="0x0100" name="PGEC3, EGED3" />
+ <value value="0x0000" name="Undefined" />
+ </mask>
+ <mask name="DEBUG" value="0x0800" >
+ <value value="0x0000" name="On" />
+ <value value="0x0800" name="Off" />
+ </mask>
+ <mask name="GWRP" value="0x1000" >
+ <value value="0x0000" name="All" />
+ <value value="0x1000" name="Off" />
+ </mask>
+ <mask name="GCP" value="0x2000" >
+ <value value="0x0000" name="All" />
+ <value value="0x2000" name="Off" />
+ </mask>
+ <mask name="JTAGEN" value="0x4000" >
+ <value value="0x0000" name="Off" />
+ <value value="0x4000" name="On" />
+ </mask>
+ </config>
+
+ <config offset="0x2" name="CONFIG2" wmask="0xFFFF" bvalue="0xFFFF" >
+ <mask name="POSCMD" value="0x0003" >
+ <value value="0x0000" name="EC" />
+ <value value="0x0001" name="XT" />
+ <value value="0x0002" name="HS" />
+ <value value="0x0003" name="Off" />
+ </mask>
+ <mask name="UVREG" value="0x0008" >
+ <value value="0x0000" name="On" />
+ <value value="0x0008" name="Off" />
+ </mask>
+ <mask name="IOL1WAY" value="0x0010" >
+ <value value="0x0000" name="Multiple reconfigurations" />
+ <value value="0x0010" name="One reconfiguration" />
+ </mask>
+ <mask name="OSCIOFNC" value="0x0020" >
+ <value value="0x0000" name="IO" />
+ <value value="0x0020" name="Clock" />
+ </mask>
+ <mask name="FCKSM" value="0x00C0" >
+ <value value="0x0000" name="Switching on, monitor on" />
+ <value value="0x0040" name="Switching on, monitor off" />
+ <value value="0x0080" name="Switching off, monitor off" />
+ <value value="0x00C0" name="Switching off, monitor off" />
+ </mask>
+ <mask name="FNOSC" value="0x0700" >
+ <value value="0x0000" name="EXTRC_F" />
+ <value value="0x0100" name="INTRC_F_PLL" />
+ <value value="0x0200" name="PRIM" />
+ <value value="0x0300" name="PRIM_PLL" />
+ <value value="0x0400" name="SECOND" />
+ <value value="0x0500" name="EXTRC_LP" />
+ <value value="0x0600" name="invalid" />
+ <value value="0x0700" name="INTRC_F_POST" />
+ </mask>
+ <mask name="PLLEN" value="0x0800" >
+ <value value="0x0000" name="On" />
+ <value value="0x0800" name="Off" />
+ </mask>
+ <mask name="PLLDIV" value="0x7000" >
+ <value value="0x0000" name="1" />
+ <value value="0x1000" name="2" />
+ <value value="0x2000" name="3" />
+ <value value="0x3000" name="4" />
+ <value value="0x4000" name="5" />
+ <value value="0x5000" name="6" />
+ <value value="0x6000" name="10" />
+ <value value="0x7000" name="12" />
+ </mask>
+ <mask name="IESO" value="0x8000" >
+ <value value="0x0000" name="Off" />
+ <value value="0x8000" name="On" />
+ </mask>
+ </config>
+
+ <config offset="0x4" name="CONFIG3" wmask="0xFFFF" bvalue="0x87EF" >
+ <mask name="WPFP" value="0x00FF" >
+ </mask>
+ <mask name="WP" value="0x2000" >
+ <value value="0x0000" name="On" />
+ <value value="0x2000" name="Off" />
+ </mask>
+ <mask name="WPCFG" value="0x4000" >
+ <value value="0x0000" name="On" />
+ <value value="0x4000" name="Off" />
+ </mask>
+ <mask name="WPEND" value="0x8000" >
+ <value value="0x0000" name="EndProtected" />
+ <value value="0x8000" name="BeginProtected" />
+ </mask>
+ </config>
+
+<!--* Packages *************************************************************-->
+ <package types="tqfp qfn" nb_pins="64" >
+ </package>
+
+</device>
Added: trunk/piklab_kde4/src/devices/pic/xml_data/24FJ128GB108.xml
===================================================================
--- trunk/piklab_kde4/src/devices/pic/xml_data/24FJ128GB108.xml (rev 0)
+++ trunk/piklab_kde4/src/devices/pic/xml_data/24FJ128GB108.xml 2012-09-09 23:35:27 UTC (rev 2955)
@@ -0,0 +1,164 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--************************************************************************-->
+<!--* Copyright (C) 2007 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. *-->
+<!--************************************************************************-->
+<device name="24FJ128GB108" status="IP" memory_technology="FLASH" architecture="24F" id="0x100A" >
+
+<!--* Documents ************************************************************-->
+ <documents webpage="531083" datasheet="39897" progsheet="39907" erratas="80369" />
+
+<!--* Operating characteristics ********************************************-->
+ <frequency_range name="industrial" >
+ <frequency start="0" end="16" vdd_min="2.0" vdd_max="2.75" />
+ <frequency start="16" end="32" vdd_min="2.0" vdd_max="2.25" />
+ </frequency_range>
+
+ <voltages name="vpp" min="2.1" max="3.6" nominal="3.3" />
+ <voltages name="vdd_prog" min="2.1" max="3.6" nominal="3.3" />
+
+<!--* Memory ***************************************************************-->
+ <memory name="code" start="0x000000" end="0x0157F8" />
+ <memory name="device_id" start="0xFF0000" end="0xFF0004" />
+ <memory name="config" start="0x0157FA" end="0x0157FF" />
+<!-- <memory name="user_ids" start="0xF80010" end="0xF80018" rmask="0xFFFF" /> -->
+ <memory name="debug_vector" start="0x800000" end="0x800007" />
+ <memory name="program_executive" start="0x800000" end="0x8007EF" />
+
+<!--* Configuration bits ***************************************************-->
+ <config offset="0x0" name="CONFIG1" wmask="0x7FFF" bvalue="0x7FFF" >
+ <mask name="WDTPOST" value="0x000F" >
+ <value value="0x0000" name="1:1" />
+ <value value="0x0001" name="1:2" />
+ <value value="0x0002" name="1:4" />
+ <value value="0x0003" name="1:8" />
+ <value value="0x0004" name="1:16" />
+ <value value="0x0005" name="1:32" />
+ <value value="0x0006" name="1:64" />
+ <value value="0x0007" name="1:128" />
+ <value value="0x0008" name="1:256" />
+ <value value="0x0009" name="1:512" />
+ <value value="0x000A" name="1:1024" />
+ <value value="0x000B" name="1:2048" />
+ <value value="0x000C" name="1:4096" />
+ <value value="0x000D" name="1:8192" />
+ <value value="0x000E" name="1:16384" />
+ <value value="0x000F" name="1:32768" />
+ </mask>
+ <mask name="WDTPRE" value="0x0010" >
+ <value value="0x0000" name="1:32" />
+ <value value="0x0010" name="1:128" />
+ </mask>
+ <mask name="WINDIS" value="0x0040" >
+ <value value="0x0000" name="On" />
+ <value value="0x0040" name="Off" />
+ </mask>
+ <mask name="FWDTEN" value="0x0080" >
+ <value value="0x0000" name="Software" />
+ <value value="0x0080" name="On" />
+ </mask>
+ <mask name="ICS" value="0x0300" >
+ <value value="0x0300" name="PGEC1, PGED1" />
+ <value value="0x0200" name="PGEC2, EGED2" />
+ <value value="0x0100" name="PGEC3, EGED3" />
+ <value value="0x0000" name="Undefined" />
+ </mask>
+ <mask name="DEBUG" value="0x0800" >
+ <value value="0x0000" name="On" />
+ <value value="0x0800" name="Off" />
+ </mask>
+ <mask name="GWRP" value="0x1000" >
+ <value value="0x0000" name="All" />
+ <value value="0x1000" name="Off" />
+ </mask>
+ <mask name="GCP" value="0x2000" >
+ <value value="0x0000" name="All" />
+ <value value="0x2000" name="Off" />
+ </mask>
+ <mask name="JTAGEN" value="0x4000" >
+ <value value="0x0000" name="Off" />
+ <value value="0x4000" name="On" />
+ </mask>
+ </config>
+
+ <config offset="0x2" name="CONFIG2" wmask="0xFFFF" bvalue="0xFFFF" >
+ <mask name="POSCMD" value="0x0003" >
+ <value value="0x0000" name="EC" />
+ <value value="0x0001" name="XT" />
+ <value value="0x0002" name="HS" />
+ <value value="0x0003" name="Off" />
+ </mask>
+ <mask name="UVREG" value="0x0008" >
+ <value value="0x0000" name="On" />
+ <value value="0x0008" name="Off" />
+ </mask>
+ <mask name="IOL1WAY" value="0x0010" >
+ <value value="0x0000" name="Multiple reconfigurations" />
+ <value value="0x0010" name="One reconfiguration" />
+ </mask>
+ <mask name="OSCIOFNC" value="0x0020" >
+ <value value="0x0000" name="IO" />
+ <value value="0x0020" name="Clock" />
+ </mask>
+ <mask name="FCKSM" value="0x00C0" >
+ <value value="0x0000" name="Switching on, monitor on" />
+ <value value="0x0040" name="Switching on, monitor off" />
+ <value value="0x0080" name="Switching off, monitor off" />
+ <value value="0x00C0" name="Switching off, monitor off" />
+ </mask>
+ <mask name="FNOSC" value="0x0700" >
+ <value value="0x0000" name="EXTRC_F" />
+ <value value="0x0100" name="INTRC_F_PLL" />
+ <value value="0x0200" name="PRIM" />
+ <value value="0x0300" name="PRIM_PLL" />
+ <value value="0x0400" name="SECOND" />
+ <value value="0x0500" name="EXTRC_LP" />
+ <value value="0x0600" name="invalid" />
+ <value value="0x0700" name="INTRC_F_POST" />
+ </mask>
+ <mask name="PLLEN" value="0x0800" >
+ <value value="0x0000" name="On" />
+ <value value="0x0800" name="Off" />
+ </mask>
+ <mask name="PLLDIV" value="0x7000" >
+ <value value="0x0000" name="1" />
+ <value value="0x1000" name="2" />
+ <value value="0x2000" name="3" />
+ <value value="0x3000" name="4" />
+ <value value="0x4000" name="5" />
+ <value value="0x5000" name="6" />
+ <value value="0x6000" name="10" />
+ <value value="0x7000" name="12" />
+ </mask>
+ <mask name="IESO" value="0x8000" >
+ <value value="0x0000" name="Off" />
+ <value value="0x8000" name="On" />
+ </mask>
+ </config>
+
+ <config offset="0x4" name="CONFIG3" wmask="0xFFFF" bvalue="0x87EF" >
+ <mask name="WPFP" value="0x00FF" >
+ </mask>
+ <mask name="WP" value="0x2000" >
+ <value value="0x0000" name="On" />
+ <value value="0x2000" name="Off" />
+ </mask>
+ <mask name="WPCFG" value="0x4000" >
+ <value value="0x0000" name="On" />
+ <value value="0x4000" name="Off" />
+ </mask>
+ <mask name="WPEND" value="0x8000" >
+ <value value="0x0000" name="EndProtected" />
+ <value value="0x8000" name="BeginProtected" />
+ </mask>
+ </config>
+
+<!--* Packages *************************************************************-->
+ <package types="tqfp" nb_pins="80" >
+ </package>
+
+</device>
Added: trunk/piklab_kde4/src/devices/pic/xml_data/24FJ128GB110.xml
===================================================================
--- trunk/piklab_kde4/src/devices/pic/xml_data/24FJ128GB110.xml (rev 0)
+++ trunk/piklab_kde4/src/devices/pic/xml_data/24FJ128GB110.xml 2012-09-09 23:35:27 UTC (rev 2955)
@@ -0,0 +1,164 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--************************************************************************-->
+<!--* Copyright (C) 2007 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. *-->
+<!--************************************************************************-->
+<device name="24FJ128GB110" status="IP" memory_technology="FLASH" architecture="24F" id="0x100F" >
+
+<!--* Documents ************************************************************-->
+ <documents webpage="531087" datasheet="39897" progsheet="39907" erratas="80369" />
+
+<!--* Operating characteristics ********************************************-->
+ <frequency_range name="industrial" >
+ <frequency start="0" end="16" vdd_min="2.0" vdd_max="2.75" />
+ <frequency start="16" end="32" vdd_min="2.0" vdd_max="2.25" />
+ </frequency_range>
+
+ <voltages name="vpp" min="2.1" max="3.6" nominal="3.3" />
+ <voltages name="vdd_prog" min="2.1" max="3.6" nominal="3.3" />
+
+<!--* Memory ***************************************************************-->
+ <memory name="code" start="0x000000" end="0x0157F8" />
+ <memory name="device_id" start="0xFF0000" end="0xFF0004" />
+ <memory name="config" start="0x0157FA" end="0x0157FF" />
+<!-- <memory name="user_ids" start="0xF80010" end="0xF80018" rmask="0xFFFF" /> -->
+ <memory name="debug_vector" start="0x800000" end="0x800007" />
+ <memory name="program_executive" start="0x800000" end="0x8007EF" />
+
+<!--* Configuration bits ***************************************************-->
+ <config offset="0x0" name="CONFIG1" wmask="0x7FFF" bvalue="0x7FFF" >
+ <mask name="WDTPOST" value="0x000F" >
+ <value value="0x0000" name="1:1" />
+ <value value="0x0001" name="1:2" />
+ <value value="0x0002" name="1:4" />
+ <value value="0x0003" name="1:8" />
+ <value value="0x0004" name="1:16" />
+ <value value="0x0005" name="1:32" />
+ <value value="0x0006" name="1:64" />
+ <value value="0x0007" name="1:128" />
+ <value value="0x0008" name="1:256" />
+ <value value="0x0009" name="1:512" />
+ <value value="0x000A" name="1:1024" />
+ <value value="0x000B" name="1:2048" />
+ <value value="0x000C" name="1:4096" />
+ <value value="0x000D" name="1:8192" />
+ <value value="0x000E" name="1:16384" />
+ <value value="0x000F" name="1:32768" />
+ </mask>
+ <mask name="WDTPRE" value="0x0010" >
+ <value value="0x0000" name="1:32" />
+ <value value="0x0010" name="1:128" />
+ </mask>
+ <mask name="WINDIS" value="0x0040" >
+ <value value="0x0000" name="On" />
+ <value value="0x0040" name="Off" />
+ </mask>
+ <mask name="FWDTEN" value="0x0080" >
+ <value value="0x0000" name="Software" />
+ <value value="0x0080" name="On" />
+ </mask>
+ <mask name="ICS" value="0x0300" >
+ <value value="0x0300" name="PGEC1, PGED1" />
+ <value value="0x0200" name="PGEC2, EGED2" />
+ <value value="0x0100" name="PGEC3, EGED3" />
+ <value value="0x0000" name="Undefined" />
+ </mask>
+ <mask name="DEBUG" value="0x0800" >
+ <value value="0x0000" name="On" />
+ <value value="0x0800" name="Off" />
+ </mask>
+ <mask name="GWRP" value="0x1000" >
+ <value value="0x0000" name="All" />
+ <value value="0x1000" name="Off" />
+ </mask>
+ <mask name="GCP" value="0x2000" >
+ <value value="0x0000" name="All" />
+ <value value="0x2000" name="Off" />
+ </mask>
+ <mask name="JTAGEN" value="0x4000" >
+ <value value="0x0000" name="Off" />
+ <value value="0x4000" name="On" />
+ </mask>
+ </config>
+
+ <config offset="0x2" name="CONFIG2" wmask="0xFFFF" bvalue="0xFFFF" >
+ <mask name="POSCMD" value="0x0003" >
+ <value value="0x0000" name="EC" />
+ <value value="0x0001" name="XT" />
+ <value value="0x0002" name="HS" />
+ <value value="0x0003" name="Off" />
+ </mask>
+ <mask name="UVREG" value="0x0008" >
+ <value value="0x0000" name="On" />
+ <value value="0x0008" name="Off" />
+ </mask>
+ <mask name="IOL1WAY" value="0x0010" >
+ <value value="0x0000" name="Multiple reconfigurations" />
+ <value value="0x0010" name="One reconfiguration" />
+ </mask>
+ <mask name="OSCIOFNC" value="0x0020" >
+ <value value="0x0000" name="IO" />
+ <value value="0x0020" name="Clock" />
+ </mask>
+ <mask name="FCKSM" value="0x00C0" >
+ <value value="0x0000" name="Switching on, monitor on" />
+ <value value="0x0040" name="Switching on, monitor off" />
+ <value value="0x0080" name="Switching off, monitor off" />
+ <value value="0x00C0" name="Switching off, monitor off" />
+ </mask>
+ <mask name="FNOSC" value="0x0700" >
+ <value value="0x0000" name="EXTRC_F" />
+ <value value="0x0100" name="INTRC_F_PLL" />
+ <value value="0x0200" name="PRIM" />
+ <value value="0x0300" name="PRIM_PLL" />
+ <value value="0x0400" name="SECOND" />
+ <value value="0x0500" name="EXTRC_LP" />
+ <value value="0x0600" name="invalid" />
+ <value value="0x0700" name="INTRC_F_POST" />
+ </mask>
+ <mask name="PLLEN" value="0x0800" >
+ <value value="0x0000" name="On" />
+ <value value="0x0800" name="Off" />
+ </mask>
+ <mask name="PLLDIV" value="0x7000" >
+ <value value="0x0000" name="1" />
+ <value value="0x1000" name="2" />
+ <value value="0x2000" name="3" />
+ <value value="0x3000" name="4" />
+ <value value="0x4000" name="5" />
+ <value value="0x5000" name="6" />
+ <value value="0x6000" name="10" />
+ <value value="0x7000" name="12" />
+ </mask>
+ <mask name="IESO" value="0x8000" >
+ <value value="0x0000" name="Off" />
+ <value value="0x8000" name="On" />
+ </mask>
+ </config>
+
+ <config offset="0x4" name="CONFIG3" wmask="0xFFFF" bvalue="0x87EF" >
+ <mask name="WPFP" value="0x00FF" >
+ </mask>
+ <mask name="WP" value="0x2000" >
+ <value value="0x0000" name="On" />
+ <value value="0x2000" name="Off" />
+ </mask>
+ <mask name="WPCFG" value="0x4000" >
+ <value value="0x0000" name="On" />
+ <value value="0x4000" name="Off" />
+ </mask>
+ <mask name="WPEND" value="0x8000" >
+ <value value="0x0000" name="EndProtected" />
+ <value value="0x8000" name="BeginProtected" />
+ </mask>
+ </config>
+
+<!--* Packages *************************************************************-->
+ <package types="tqfp" nb_pins="100" >
+ </package>
+
+</device>
Added: trunk/piklab_kde4/src/devices/pic/xml_data/24FJ192GB106.xml
===================================================================
--- trunk/piklab_kde4/src/devices/pic/xml_data/24FJ192GB106.xml (rev 0)
+++ trunk/piklab_kde4/src/devices/pic/xml_data/24FJ192GB106.xml 2012-09-09 23:35:27 UTC (rev 2955)
@@ -0,0 +1,164 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--************************************************************************-->
+<!--* Copyright (C) 2007 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. *-->
+<!--************************************************************************-->
+<device name="24FJ192GB106" status="IP" memory_technology="FLASH" architecture="24F" id="0x1011" >
+
+<!--* Documents ************************************************************-->
+ <documents webpage="531080" datasheet="39897" progsheet="39907" erratas="80369" />
+
+<!--* Operating characteristics ********************************************-->
+ <frequency_range name="industrial" >
+ <frequency start="0" end="16" vdd_min="2.0" vdd_max="2.75" />
+ <frequency start="16" end="32" vdd_min="2.0" vdd_max="2.25" />
+ </frequency_range>
+
+ <voltages name="vpp" min="2.1" max="3.6" nominal="3.3" />
+ <voltages name="vdd_prog" min="2.1" max="3.6" nominal="3.3" />
+
+<!--* Memory ***************************************************************-->
+ <memory name="code" start="0x000000" end="0x020BF8" />
+ <memory name="device_id" start="0xFF0000" end="0xFF0004" />
+ <memory name="config" start="0x020BFA" end="0x020BFF" />
+<!-- <memory name="user_ids" start="0xF80010" end="0xF80018" rmask="0xFFFF" /> -->
+ <memory name="debug_vector" start="0x800000" end="0x800007" />
+ <memory name="program_executive" start="0x800000" end="0x8007EF" />
+
+<!--* Configuration bits ***************************************************-->
+ <config offset="0x0" name="CONFIG1" wmask="0x7FFF" bvalue="0x7FFF" >
+ <mask name="WDTPOST" value="0x000F" >
+ <value value="0x0000" name="1:1" />
+ <value value="0x0001" name="1:2" />
+ <value value="0x0002" name="1:4" />
+ <value value="0x0003" name="1:8" />
+ <value value="0x0004" name="1:16" />
+ <value value="0x0005" name="1:32" />
+ <value value="0x0006" name="1:64" />
+ <value value="0x0007" name="1:128" />
+ <value value="0x0008" name="1:256" />
+ <value value="0x0009" name="1:512" />
+ <value value="0x000A" name="1:1024" />
+ <value value="0x000B" name="1:2048" />
+ <value value="0x000C" name="1:4096" />
+ <value value="0x000D" name="1:8192" />
+ <value value="0x000E" name="1:16384" />
+ <value value="0x000F" name="1:32768" />
+ </mask>
+ <mask name="WDTPRE" value="0x0010" >
+ <value value="0x0000" name="1:32" />
+ <value value="0x0010" name="1:128" />
+ </mask>
+ <mask name="WINDIS" value="0x0040" >
+ <value value="0x0000" name="On" />
+ <value value="0x0040" name="Off" />
+ </mask>
+ <mask name="FWDTEN" value="0x0080" >
+ <value value="0x0000" name="Software" />
+ <value value="0x0080" name="On" />
+ </mask>
+ <mask name="ICS" value="0x0300" >
+ <value value="0x0300" name="PGEC1, PGED1" />
+ <value value="0x0200" name="PGEC2, EGED2" />
+ <value value="0x0100" name="PGEC3, EGED3" />
+ <value value="0x0000" name="Undefined" />
+ </mask>
+ <mask name="DEBUG" value="0x0800" >
+ <value value="0x0000" name="On" />
+ <value value="0x0800" name="Off" />
+ </mask>
+ <mask name="GWRP" value="0x1000" >
+ <value value="0x0000" name="All" />
+ <value value="0x1000" name="Off" />
+ </mask>
+ <mask name="GCP" value="0x2000" >
+ <value value="0x0000" name="All" />
+ <value value="0x2000" name="Off" />
+ </mask>
+ <mask name="JTAGEN" value="0x4000" >
+ <value value="0x0000" name="Off" />
+ <value value="0x4000" name="On" />
+ </mask>
+ </config>
+
+ <config offset="0x2" name="CONFIG2" wmask="0xFFFF" bvalue="0xFFFF" >
+ <mask name="POSCMD" value="0x0003" >
+ <value value="0x0000" name="EC" />
+ <value value="0x0001" name="XT" />
+ <value value="0x0002" name="HS" />
+ <value value="0x0003" name="Off" />
+ </mask>
+ <mask name="UVREG" value="0x0008" >
+ <value value="0x0000" name="On" />
+ <value value="0x0008" name="Off" />
+ </mask>
+ <mask name="IOL1WAY" value="0x0010" >
+ <value value="0x0000" name="Multiple reconfigurations" />
+ <value value="0x0010" name="One reconfiguration" />
+ </mask>
+ <mask name="OSCIOFNC" value="0x0020" >
+ <value value="0x0000" name="IO" />
+ <value value="0x0020" name="Clock" />
+ </mask>
+ <mask name="FCKSM" value="0x00C0" >
+ <value value="0x0000" name="Switching on, monitor on" />
+ <value value="0x0040" name="Switching on, monitor off" />
+ <value value="0x0080" name="Switching off, monitor off" />
+ <value value="0x00C0" name="Switching off, monitor off" />
+ </mask>
+ <mask name="FNOSC" value="0x0700" >
+ <value value="0x0000" name="EXTRC_F" />
+ <value value="0x0100" name="INTRC_F_PLL" />
+ <value value="0x0200" name="PRIM" />
+ <value value="0x0300" name="PRIM_PLL" />
+ <value value="0x0400" name="SECOND" />
+ <value value="0x0500" name="EXTRC_LP" />
+ <value value="0x0600" name="invalid" />
+ <value value="0x0700" name="INTRC_F_POST" />
+ </mask>
+ <mask name="PLLEN" value="0x0800" >
+ <value value="0x0000" name="On" />
+ <value value="0x0800" name="Off" />
+ </mask>
+ <mask name="PLLDIV" value="0x7000" >
+ <value value="0x0000" name="1" />
+ <value value="0x1000" name="2" />
+ <value value="0x2000" name="3" />
+ <value value="0x3000" name="4" />
+ <value value="0x4000" name="5" />
+ <value value="0x5000" name="6" />
+ <value value="0x6000" name="10" />
+ <value value="0x7000" name="12" />
+ </mask>
+ <mask name="IESO" value="0x8000" >
+ <value value="0x0000" name="Off" />
+ <value value="0x8000" name="On" />
+ </mask>
+ </config>
+
+ <config offset="0x4" name="CONFIG3" wmask="0xFFFF" bvalue="0x87EF" >
+ <mask name="WPFP" value="0x00FF" >
+ </mask>
+ <mask name="WP" value="0x2000" >
+ <value value="0x0000" name="On" />
+ <value value="0x2000" name="Off" />
+ </mask>
+ <mask name="WPCFG" value="0x4000" >
+ <value value="0x0000" name="On" />
+ <value value="0x4000" name="Off" />
+ </mask>
+ <mask name="WPEND" value="0x8000" >
+ <value value="0x0000" name="EndProtected" />
+ <value value="0x8000" name="BeginProtected" />
+ </mask>
+ </config>
+
+<!--* Packages *************************************************************-->
+ <package types="tqfp qfn" nb_pins="64" >
+ </package>
+
+</device>
Added: trunk/piklab_kde4/src/devices/pic/xml_data/24FJ192GB108.xml
===================================================================
--- trunk/piklab_kde4/src/devices/pic/xml_data/24FJ192GB108.xml (rev 0)
+++ trunk/piklab_kde4/src/devices/pic/xml_data/24FJ192GB108.xml 2012-09-09 23:35:27 UTC (rev 2955)
@@ -0,0 +1,164 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--************************************************************************-->
+<!--* Copyright (C) 2007 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. *-->
+<!--************************************************************************-->
+<device name="24FJ192GB108" status="IP" memory_technology="FLASH" architecture="24F" id="0x1013" >
+
+<!--* Documents ************************************************************-->
+ <documents webpage="531084" datasheet="39897" progsheet="39907" erratas="80369" />
+
+<!--* Operating characteristics ********************************************-->
+ <frequency_range name="industrial" >
+ <frequency start="0" end="16" vdd_min="2.0" vdd_max="2.75" />
+ <frequency start="16" end="32" vdd_min="2.0" vdd_max="2.25" />
+ </frequency_range>
+
+ <voltages name="vpp" min="2.1" max="3.6" nominal="3.3" />
+ <voltages name="vdd_prog" min="2.1" max="3.6" nominal="3.3" />
+
+<!--* Memory ***************************************************************-->
+ <memory name="code" start="0x000000" end="0x020BF8" />
+ <memory name="device_id" start="0xFF0000" end="0xFF0004" />
+ <memory name="config" start="0x020BFA" end="0x020BFF" />
+<!-- <memory name="user_ids" start="0xF80010" end="0xF80018" rmask="0xFFFF" /> -->
+ <memory name="debug_vector" start="0x800000" end="0x800007" />
+ <memory name="program_executive" start="0x800000" end="0x8007EF" />
+
+<!--* Configuration bits ***************************************************-->
+ <config offset="0x0" name="CONFIG1" wmask="0x7FFF" bvalue="0x7FFF" >
+ <mask name="WDTPOST" value="0x000F" >
+ <value value="0x0000" name="1:1" />
+ <value value="0x0001" name="1:2" />
+ <value value="0x0002" name="1:4" />
+ <value value="0x0003" name="1:8" />
+ <value value="0x0004" name="1:16" />
+ <value value="0x0005" name="1:32" />
+ <value value="0x0006" name="1:64" />
+ <value value="0x0007" name="1:128" />
+ <value value="0x0008" name="1:256" />
+ <value value="0x0009" name="1:512" />
+ <value value="0x000A" name="1:1024" />
+ <value value="0x000B" name="1:2048" />
+ <value value="0x000C" name="1:4096" />
+ <value value="0x000D" name="1:8192" />
+ <value value="0x000E" name="1:16384" />
+ <value value="0x000F" name="1:32768" />
+ </mask>
+ <mask name="WDTPRE" value="0x0010" >
+ <value value="0x0000" name="1:32" />
+ <value value="0x0010" name="1:128" />
+ </mask>
+ <mask name="WINDIS" value="0x0040" >
+ <value value="0x0000" name="On" />
+ <value value="0x0040" name="Off" />
+ </mask>
+ <mask name="FWDTEN" value="0x0080" >
+ <value value="0x0000" name="Software" />
+ <value value="0x0080" name="On" />
+ </mask>
+ <mask name="ICS" value="0x0300" >
+ <value value="0x0300" name="PGEC1, PGED1" />
+ <value value="0x0200" name="PGEC2, EGED2" />
+ <value value="0x0100" name="PGEC3, EGED3" />
+ <value value="0x0000" name="Undefined" />
+ </mask>
+ <mask name="DEBUG" value="0x0800" >
+ <value value="0x0000" name="On" />
+ <value value="0x0800" name="Off" />
+ </mask>
+ <mask name="GWRP" value="0x1000" >
+ <value value="0x0000" name="All" />
+ <value value="0x1000" name="Off" />
+ </mask>
+ <mask name="GCP" value="0x2000" >
+ <value value="0x0000" name="All" />
+ <value value="0x2000" name="Off" />
+ </mask>
+ <mask name="JTAGEN" value="0x4000" >
+ <value value="0x0000" name="Off" />
+ <value value="0x4000" name="On" />
+ </mask>
+ </config>
+
+ <config offset="0x2" name="CONFIG2" wmask="0xFFFF" bvalue="0xFFFF" >
+ <mask name="POSCMD" value="0x0003" >
+ <value value="0x0000" name="EC" />
+ <value value="0x0001" name="XT" />
+ <value value="0x0002" name="HS" />
+ <value value="0x0003" name="Off" />
+ </mask>
+ <mask name="UVREG" value="0x0008" >
+ <value value="0x0000" name="On" />
+ <value value="0x0008" name="Off" />
+ </mask>
+ <mask name="IOL1WAY" value="0x0010" >
+ <value value="0x0000" name="Multiple reconfigurations" />
+ <value value="0x0010" name="One reconfiguration" />
+ </mask>
+ <mask name="OSCIOFNC" value="0x0020" >
+ <value value="0x0000" name="IO" />
+ <value value="0x0020" name="Clock" />
+ </mask>
+ <mask name="FCKSM" value="0x00C0" >
+ <value value="0x0000" name="Switching on, monitor on" />
+ <value value="0x0040" name="Switching on, monitor off" />
+ <value value="0x0080" name="Switching off, monitor off" />
+ <value value="0x00C0" name="Switching off, monitor off" />
+ </mask>
+ <mask name="FNOSC" value="0x0700" >
+ <value value="0x0000" name="EXTRC_F" />
+ <value value="0x0100" name="INTRC_F_PLL" />
+ <value value="0x0200" name="PRIM" />
+ <value value="0x0300" name="PRIM_PLL" />
+ <value value="0x0400" name="SECOND" />
+ <value value="0x0500" name="EXTRC_LP" />
+ <value value="0x0600" name="invalid" />
+ <value value="0x0700" name="INTRC_F_POST" />
+ </mask>
+ <mask name="PLLEN" value="0x0800" >
+ <value value="0x0000" name="On" />
+ <value value="0x0800" name="Off" />
+ </mask>
+ <mask name="PLLDIV" value="0x7000" >
+ <value value="0x0000" name="1" />
+ <value value="0x1000" name="2" />
+ <value value="0x2000" name="3" />
+ <value value="0x3000" name="4" />
+ <value value="0x4000" name="5" />
+ <value value="0x5000" name="6" />
+ <value value="0x6000" name="10" />
+ <value value="0x7000" name="12" />
+ </mask>
+ <mask name="IESO" value="0x8000" >
+ <value value="0x0000" name="Off" />
+ <value value="0x8000" name="On" />
+ </mask>
+ </config>
+
+ <config offset="0x4" name="CONFIG3" wmask="0xFFFF" bvalue="0x87EF" >
+ <mask name="WPFP" value="0x00FF" >
+ </mask>
+ <mask name="WP" value="0x2000" >
+ <value value="0x0000" name="On" />
+ <value value="0x2000" name="Off" />
+ </mask>
+ <mask name="WPCFG" value="0x4000" >
+ <value value="0x0000" name="On" />
+ <value value="0x4000" name="Off" />
+ </mask>
+ <mask name="WPEND" value="0x8000" >
+ <value value="0x0000" name="EndProtected" />
+ <value value="0x8000" name="BeginProtected" />
+ </mask>
+ </config>
+
+<!--* Packages *************************************************************-->
+ <package types="tqfp" nb_pins="80" >
+ </package>
+
+</device>
Added: trunk/piklab_kde4/src/devices/pic/xml_data/24FJ192GB110.xml
===================================================================
--- trunk/piklab_kde4/src/devices/pic/xml_data/24FJ192GB110.xml (rev 0)
+++ trunk/piklab_kde4/src/devices/pic/xml_data/24FJ192GB110.xml 2012-09-09 23:35:27 UTC (rev 2955)
@@ -0,0 +1,164 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--************************************************************************-->
+<!--* Copyright (C) 2007 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. *-->
+<!--************************************************************************-->
+<device name="24FJ192GB110" status="IP" memory_technology="FLASH" architecture="24F" id="0x1017" >
+
+<!--* Documents ************************************************************-->
+ <documents webpage="531088" datasheet="39897" progsheet="39907" erratas="80369" />
+
+<!--* Operating characteristics ********************************************-->
+ <frequency_range name="industrial" >
+ <frequency start="0" end="16" vdd_min="2.0" vdd_max="2.75" />
+ <frequency start="16" end="32" vdd_min="2.0" vdd_max="2.25" />
+ </frequency_range>
+
+ <voltages name="vpp" min="2.1" max="3.6" nominal="3.3" />
+ <voltages name="vdd_prog" min="2.1" max="3.6" nominal="3.3" />
+
+<!--* Memory ***************************************************************-->
+ <memory name="code" start="0x000000" end="0x020BF8" />
+ <memory name="device_id" start="0xFF0000" end="0xFF0004" />
+ <memory name="config" start="0x020BFA" end="0x020BFF" />
+<!-- <memory name="user_ids" start="0xF80010" end="0xF80018" rmask="0xFFFF" /> -->
+ <memory name="debug_vector" start="0x800000" end="0x800007" />
+ <memory name="program_executive" start="0x800000" end="0x8007EF" />
+
+<!--* Configuration bits ***************************************************-->
+ <config offset="0x0" name="CONFIG1" wmask="0x7FFF" bvalue="0x7FFF" >
+ <mask name="WDTPOST" value="0x000F" >
+ <value value="0x0000" name="1:1" />
+ <value value="0x0001" name="1:2" />
+ <value value="0x0002" name="1:4" />
+ <value value="0x0003" name="1:8" />
+ <value value="0x0004" name="1:16" />
+ <value value="0x0005" name="1:32" />
+ <value value="0x0006" name="1:64" />
+ <value value="0x0007" name="1:128" />
+ <value value="0x0008" name="1:256" />
+ <value value="0x0009" name="1:512" />
+ <value value="0x000A" name="1:1024" />
+ <value value="0x000B" name="1:2048" />
+ <value value="0x000C" name="1:4096" />
+ <value value="0x000D" name="1:8192" />
+ <value value="0x000E" name="1:16384" />
+ <value value="0x000F" name="1:32768" />
+ </mask>
+ <mask name="WDTPRE" value="0x0010" >
+ <value value="0x0000" name="1:32" />
+ <value value="0x0010" name="1:128" />
+ </mask>
+ <mask name="WINDIS" value="0x0040" >
+ <value value="0x0000" name="On" />
+ <value value="0x0040" name="Off" />
+ </mask>
+ <mask name="FWDTEN" value="0x0080" >
+ <value value="0x0000" name="Software" />
+ <value value="0x0080" name="On" />
+ </mask>
+ <mask name="ICS" value="0x0300" >
+ <value value="0x0300" name="PGEC1, PGED1" />
+ <value value="0x0200" name="PGEC2, EGED2" />
+ <value value="0x0100" name="PGEC3, EGED3" />
+ <value value="0x0000" name="Undefined" />
+ </mask>
+ <mask name="DEBUG" value="0x0800" >
+ <value value="0x0000" name="On" />
+ <value value="0x0800" name="Off" />
+ </mask>
+ <mask name="GWRP" value="0x1000" >
+ <value value="0x0000" name="All" />
+ <value value="0x1000" name="Off" />
+ </mask>
+ <mask name="GCP" value="0x2000" >
+ <value value="0x0000" name="All" />
+ <value value="0x2000" name="Off" />
+ </mask>
+ <mask name="JTAGEN" value="0x4000" >
+ <value value="0x0000" name="Off" />
+ <value value="0x4000" name="On" />
+ </mask>
+ </config>
+
+ <config offset="0x2" name="CONFIG2" wmask="0xFFFF" bvalue="0xFFFF" >
+ <mask name="POSCMD" value="0x0003" >
+ <value value="0x0000" name="EC" />
+ <value value="0x0001" name="XT" />
+ <value value="0x0002" name="HS" />
+ <value value="0x0003" name="Off" />
+ </mask>
+ <mask name="UVREG" value="0x0008" >
+ <value value="0x0000" name="On" />
+ <value value="0x0008" name="Off" />
+ </mask>
+ <mask name="IOL1WAY" value="0x0010" >
+ <value value="0x0000" name="Multiple reconfigurations" />
+ <value value="0x0010" name="One reconfiguration" />
+ </mask>
+ <mask name="OSCIOFNC" value="0x0020" >
+ <value value="0x0000" name="IO" />
+ <value value="0x0020" name="Clock" />
+ </mask>
+ <mask name="FCKSM" value="0x00C0" >
+ <value value="0x0000" name="Switching on, monitor on" />
+ <value value="0x0040" name="Switching on, monitor off" />
+ <value value="0x0080" name="Switching off, monitor off" />
+ <value value="0x00C0" name="Switching off, monitor off" />
+ </mask>
+ <mask name="FNOSC" value="0x0700" >
+ <value value="0x0000" name="EXTRC_F" />
+ <value value="0x0100" name="INTRC_F_PLL" />
+ <value value="0x0200" name="PRIM" />
+ <value value="0x0300" name="PRIM_PLL" />
+ <value value="0x0400" name="SECOND" />
+ <value value="0x0500" name="EXTRC_LP" />
+ <value value="0x0600" name="invalid" />
+ <value value="0x0700" name="INTRC_F_POST" />
+ </mask>
+ <mask name="PLLEN" value="0x0800" >
+ <value value="0x0000" name="On" />
+ <value value="0x0800" name="Off" />
+ </mask>
+ <mask name="PLLDIV" value="0x7000" >
+ <value value="0x0000" name="1" />
+ <value value="0x1000" name="2" />
+ <value value="0x2000" name="3" />
+ <value value="0x3000" name="4" />
+ <value value="0x4000" name="5" />
+ <value value="0x5000" name="6" />
+ <value value="0x6000" name="10" />
+ <value value="0x7000" name="12" />
+ </mask>
+ <mask name="IESO" value="0x8000" >
+ <value value="0x0000" name="Off" />
+ <value value="0x8000" name="On" />
+ </mask>
+ </config>
+
+ <config offset="0x4" name="CONFIG3" wmask="0xFFFF" bvalue="0x87EF" >
+ <mask name="WPFP" value="0x00FF" >
+ </mask>
+ <mask name="WP" value="0x2000" >
+ <value value="0x0000" name="On" />
+ <value value="0x2000" name="Off" />
+ </mask>
+ <mask name="WPCFG" value="0x4000" >
+ <value value="0x0000" name="On" />
+ <value value="0x4000" name="Off" />
+ </mask>
+ <mask name="WPEND" value="0x8000" >
+ <value value="0x0000" name="EndProtected" />
+ <value value="0x8000" name="BeginProtected" />
+ </mask>
+ </config>
+
+<!--* Packages *************************************************************-->
+ <package types="tqfp" nb_pins="100" >
+ </package>
+
+</device>
Added: trunk/piklab_kde4/src/devices/pic/xml_data/24FJ256GB108.xml
===================================================================
--- trunk/piklab_kde4/src/devices/pic/xml_data/24FJ256GB108.xml (rev 0)
+++ trunk/piklab_kde4/src/devices/pic/xml_data/24FJ256GB108.xml 2012-09-09 23:35:27 UTC (rev 2955)
@@ -0,0 +1,164 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--************************************************************************-->
+<!--* Copyright (C) 2007 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. *-->
+<!--************************************************************************-->
+<device name="24FJ256GB108" status="IP" memory_technology="FLASH" architecture="24F" id="0x101B" >
+
+<!--* Documents ************************************************************-->
+ <documents webpage="531085" datasheet="39897" progsheet="39907" erratas="80369" />
+
+<!--* Operating characteristics ********************************************-->
+ <frequency_range name="industrial" >
+ <frequency start="0" end="16" vdd_min="2.0" vdd_max="2.75" />
+ <frequency start="16" end="32" vdd_min="2.0" vdd_max="2.25" />
+ </frequency_range>
+
+ <voltages name="vpp" min="2.1" max="3.6" nominal="3.3" />
+ <voltages name="vdd_prog" min="2.1" max="3.6" nominal="3.3" />
+
+<!--* Memory ***************************************************************-->
+ <memory name="code" start="0x000000" end="0x02ABF8" />
+ <memory name="device_id" start="0xFF0000" end="0xFF0004" />
+ <memory name="config" start="0x02ABFA" end="0x02ABFF" />
+<!-- <memory name="user_ids" start="0xF80010" end="0xF80018" rmask="0xFFFF" /> -->
+ <memory name="debug_vector" start="0x800000" end="0x800007" />
+ <memory name="program_executive" start="0x800000" end="0x8007EF" />
+
+<!--* Configuration bits ***************************************************-->
+ <config offset="0x0" name="CONFIG1" wmask="0x7FFF" bvalue="0x7FFF" >
+ <mask name="WDTPOST" value="0x000F" >
+ <value value="0x0000" name="1:1" />
+ <value value="0x0001" name="1:2" />
+ <value value="0x0002" name="1:4" />
+ <value value="0x0003" name="1:8" />
+ <value value="0x0004" name="1:16" />
+ <value value="0x0005" name="1:32" />
+ <value value="0x0006" name="1:64" />
+ <value value="0x0007" name="1:128" />
+ <value value="0x0008" name="1:256" />
+ <value value="0x0009" name="1:512" />
+ <value value="0x000A" name="1:1024" />
+ <value value="0x000B" name="1:2048" />
+ <value value="0x000C" name="1:4096" />
+ <value value="0x000D" name="1:8192" />
+ <value value="0x000E" name="1:16384" />
+ <value value="0x000F" name="1:32768" />
+ </mask>
+ <mask name="WDTPRE" value="0x0010" >
+ <value value="0x0000" name="1:32" />
+ <value value="0x0010" name="1:128" />
+ </mask>
+ <mask name="WINDIS" value="0x0040" >
+ <value value="0x0000" name="On" />
+ <value value="0x0040" name="Off" />
+ </mask>
+ <mask name="FWDTEN" value="0x0080" >
+ <value value="0x0000" name="Software" />
+ <value value="0x0080" name="On" />
+ </mask>
+ <mask name="ICS" value="0x0300" >
+ <value value="0x0300" name="PGEC1, PGED1" />
+ <value value="0x0200" name="PGEC2, EGED2" />
+ <value value="0x0100" name="PGEC3, EGED3" />
+ <value value="0x0000" name="Undefined" />
+ </mask>
+ <mask name="DEBUG" value="0x0800" >
+ <value value="0x0000" name="On" />
+ <value value="0x0800" name="Off" />
+ </mask>
+ <mask name="GWRP" value="0x1000" >
+ <value value="0x0000" name="All" />
+ <value value="0x1000" name="Off" />
+ </mask>
+ <mask name="GCP" value="0x2000" >
+ <value value="0x0000" name="All" />
+ <value value="0x2000" name="Off" />
+ </mask>
+ <mask name="JTAGEN" value="0x4000" >
+ <value value="0x0000" name="Off" />
+ <value value="0x4000" name="On" />
+ </mask>
+ </config>
+
+ <config offset="0x2" name="CONFIG2" wmask="0xFFFF" bvalue="0xFFFF" >
+ <mask name="POSCMD" value="0x0003" >
+ <value value="0x0000" name="EC" />
+ <value value="0x0001" name="XT" />
+ <value value="0x0002" name="HS" />
+ <value value="0x0003" name="Off" />
+ </mask>
+ <mask name="UVREG" value="0x0008" >
+ <value value="0x0000" name="On" />
+ <value value="0x0008" name="Off" />
+ </mask>
+ <mask name="IOL1WAY" value="0x0010" >
+ <value value="0x0000" name="Multiple reconfigurations" />
+ <value value="0x0010" name="One reconfiguration" />
+ </mask>
+ <mask name="OSCIOFNC" value="0x0020" >
+ <value value="0x0000" name="IO" />
+ <value value="0x0020" name="Clock" />
+ </mask>
+ <mask name="FCKSM" value="0x00C0" >
+ <value value="0x0000" name="Switching on, monitor on" />
+ <value value="0x0040" name="Switching on, monitor off" />
+ <value value="0x0080" name="Switching off, monitor off" />
+ <value value="0x00C0" name="Switching off, monitor off" />
+ </mask>
+ <mask name="FNOSC" value="0x0700" >
+ <value value="0x0000" name="EXTRC_F" />
+ <value value="0x0100" name="INTRC_F_PLL" />
+ <value value="0x0200" name="PRIM" />
+ <value value="0x0300" name="PRIM_PLL" />
+ <value value="0x0400" name="SECOND" />
+ <value value="0x0500" name="EXTRC_LP" />
+ <value value="0x0600" name="invalid" />
+ <value value="0x0700" name="INTRC_F_POST" />
+ </mask>
+ <mask name="PLLEN" value="0x0800" >
+ <value value="0x0000" name="On" />
+ <value value="0x0800" name="Off" />
+ </mask>
+ <mask name="PLLDIV" value="0x7000" >
+ <value value="0x0000" name="1" />
+ <value value="0x1000" name="2" />
+ <value value="0x2000" name="3" />
+ <value value="0x3000" name="4" />
+ <value value="0x4000" name="5" />
+ <value value="0x5000" name="6" />
+ <value value="0x6000" name="10" />
+ <value value="0x7000" name="12" />
+ </mask>
+ <mask name="IESO" value="0x8000" >
+ <value value="0x0000" name="Off" />
+ <value value="0x8000" name="On" />
+ </mask>
+ </config>
+
+ <config offset="0x4" name="CONFIG3" wmask="0xFFFF" bvalue="0x87EF" >
+ <mask name="WPFP" value="0x00FF" >
+ </mask>
+ <mask name="WP" value="0x2000" >
+ <value value="0x0000" name="On" />
+ <value value="0x2000" name="Off" />
+ </mask>
+ <mask name="WPCFG" value="0x4000" >
+ <value value="0x0000" name="On" />
+ <value value="0x4000" name="Off" />
+ </mask>
+ <mask name="WPEND" value="0x8000" >
+ <value value="0x0000" name="EndProtected" />
+ <value value="0x8000" name="BeginProtected" />
+ </mask>
+ </config>
+
+<!--* Packages *************************************************************-->
+ <package types="tqfp" nb_pins="80" >
+ </package>
+
+</device>
Added: trunk/piklab_kde4/src/devices/pic/xml_data/24FJ256GB110.xml
===================================================================
--- trunk/piklab_kde4/src/devices/pic/xml_data/24FJ256GB110.xml (rev 0)
+++ trunk/piklab_kde4/src/devices/pic/xml_data/24FJ256GB110.xml 2012-09-09 23:35:27 UTC (rev 2955)
@@ -0,0 +1,164 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--************************************************************************-->
+<!--* Copyright (C) 2007 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. *-->
+<!--************************************************************************-->
+<device name="24FJ256GB110" status="IP" memory_technology="FLASH" architecture="24F" id="0x101F" >
+
+<!--* Documents ************************************************************-->
+ <documents webpage="531089" datasheet="39897" progsheet="39907" erratas="80369" />
+
+<!--* Operating characteristics ********************************************-->
+ <frequency_range name="industrial" >
+ <frequency start="0" end="16" vdd_min="2.0" vdd_max="2.75" />
+ <frequency start="16" end="32" vdd_min="2.0" vdd_max="2.25" />
+ </frequency_range>
+
+ <voltages name="vpp" min="2.1" max="3.6" nominal="3.3" />
+ <voltages name="vdd_prog" min="2.1" max="3.6" nominal="3.3" />
+
+<!--* Memory ***************************************************************-->
+ <memory name="code" start="0x000000" end="0x02ABF8" />
+ <memory name="device_id" start="0xFF0000" end="0xFF0004" />
+ <memory name="config" start="0x02ABFA" end="0x02ABFF" />
+<!-- <memory name="user_ids" start="0xF80010" end="0xF80018" rmask="0xFFFF" /> -->
+ <memory name="debug_vector" start="0x800000" end="0x800007" />
+ <memory name="program_executive" start="0x800000" end="0x8007EF" />
+
+<!--* Configuration bits ***************************************************-->
+ <config offset="0x0" name="CONFIG1" wmask="0x7FFF" bvalue="0x7FFF" >
+ <mask name="WDTPOST" value="0x000F" >
+ <value value="0x0000" name="1:1" />
+ <value value="0x0001" name="1:2" />
+ <value value="0x0002" name="1:4" />
+ <value value="0x0003" name="1:8" />
+ <value value="0x0004" name="1:16" />
+ <value value="0x0005" name="1:32" />
+ <value value="0x0006" name="1:64" />
+ <value value="0x0007" name="1:128" />
+ <value value="0x0008" name="1:256" />
+ <value value="0x0009" name="1:512" />
+ <value value="0x000A" name="1:1024" />
+ <value value="0x000B" name="1:2048" />
+ <value value="0x000C" name="1:4096" />
+ <value value="0x000D" name="1:8192" />
+ <value value="0x000E" name="1:16384" />
+ <value value="0x000F" name="1:32768" />
+ </mask>
+ <mask name="WDTPRE" value="0x0010" >
+ <value value="0x0000" name="1:32" />
+ <value value="0x0010" name="1:128" />
+ </mask>
+ <mask name="WINDIS" value="0x0040" >
+ <value value="0x0000" name="On" />
+ <value value="0x0040" name="Off" />
+ </mask>
+ <mask name="FWDTEN" value="0x0080" >
+ <value value="0x0000" name="Software" />
+ <value value="0x0080" name="On" />
+ </mask>
+ <mask name="ICS" value="0x0300" >
+ <value value="0x0300" name="PGEC1, PGED1" />
+ <value value="0x0200" name="PGEC2, EGED2" />
+ <value value="0x0100" name="PGEC3, EGED3" />
+ <value value="0x0000" name="Undefined" />
+ </mask>
+ <mask name="DEBUG" value="0x0800" >
+ <value value="0x0000" name="On" />
+ <value value="0x0800" name="Off" />
+ </mask>
+ <mask name="GWRP" value="0x1000" >
+ <value value="0x0000" name="All" />
+ <value value="0x1000" name="Off" />
+ </mask>
+ <mask name="GCP" value="0x2000" >
+ <value value="0x0000" name="All" />
+ <value value="0x2000" name="Off" />
+ </mask>
+ <mask name="JTAGEN" value="0x4000" >
+ <value value="0x0000" name="Off" />
+ <value value="0x4000" name="On" />
+ </mask>
+ </config>
+
+ <config offset="0x2" name="CONFIG2" wmask="0xFFFF" bvalue="0xFFFF" >
+ <mask name="POSCMD" value="0x0003" >
+ <value value="0x0000" name="EC" />
+ <value value="0x0001" name="XT" />
+ <value value="0x0002" name="HS" />
+ <value value="0x0003" name="Off" />
+ </mask>
+ <mask name="UVREG" value="0x0008" >
+ <value value="0x0000" name="On" />
+ <value value="0x0008" name="Off" />
+ </mask>
+ <mask name="IOL1WAY" value="0x0010" >
+ <value value="0x0000" name="Multiple reconfigurations" />
+ <value value="0x0010" name="One reconfiguration" />
+ </mask>
+ <mask name="OSCIOFNC" value="0x0020" >
+ <value value="0x0000" name="IO" />
+ <value value="0x0020" name="Clock" />
+ </mask>
+ <mask name="FCKSM" value="0x00C0" >
+ <value value="0x0000" name="Switching on, monitor on" />
+ <value value="0x0040" name="Switching on, monitor off" />
+ <value value="0x0080" name="Switching off, monitor off" />
+ <value value="0x00C0" name="Switching off, monitor off" />
+ </mask>
+ <mask name="FNOSC" value="0x0700" >
+ <value value="0x0000" name="EXTRC_F" />
+ <value value="0x0100" name="INTRC_F_PLL" />
+ <value value="0x0200" name="PRIM" />
+ <value value="0x0300" name="PRIM_PLL" />
+ <value value="0x0400" name="SECOND" />
+ <value value="0x0500" name="EXTRC_LP" />
+ <value value="0x0600" name="invalid" />
+ <value value="0x0700" name="INTRC_F_POST" />
+ </mask>
+ <mask name="PLLEN" value="0x0800" >
+ <value value="0x0000" name="On" />
+ <value value="0x0800" name="Off" />
+ </mask>
+ <mask name="PLLDIV" value="0x7000" >
+ <value value="0x0000" name="1" />
+ <value value="0x1000" name="2" />
+ <value value="0x2000" name="3" />
+ <value value="0x3000" name="4" />
+ <value value="0x4000" name="5" />
+ <value value="0x5000" name="6" />
+ <value value="0x6000" name="10" />
+ <value value="0x7000" name="12" />
+ </mask>
+ <mask name="IESO" value="0x8000" >
+ <value value="0x0000" name="Off" />
+ <value value="0x8000" name="On" />
+ </mask>
+ </config>
+
+ <config offset="0x4" name="CONFIG3" wmask="0xFFFF" bvalue="0x87EF" >
+ <mask name="WPFP" value="0x00FF" >
+ </mask>
+ <mask name="WP" value="0x2000" >
+ <value value="0x0000" name="On" />
+ <value value="0x2000" name="Off" />
+ </mask>
+ <mask name="WPCFG" value="0x4000" >
+ <value value="0x0000" name="On" />
+ <value value="0x4000" name="Off" />
+ </mask>
+ <mask name="WPEND" value="0x8000" >
+ <value value="0x0000" name="EndProtected" />
+ <value value="0x8000" name="BeginProtected" />
+ </mask>
+ </config>
+
+<!--* Packages *************************************************************-->
+ <package types="tqfp" nb_pins="100" >
+ </package>
+
+</device>
Added: trunk/piklab_kde4/src/devices/pic/xml_data/24FJ64GB106.xml
===================================================================
--- trunk/piklab_kde4/src/devices/pic/xml_data/24FJ64GB106.xml (rev 0)
+++ trunk/piklab_kde4/src/devices/pic/xml_data/24FJ64GB106.xml 2012-09-09 23:35:27 UTC (rev 2955)
@@ -0,0 +1,164 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--************************************************************************-->
+<!--* Copyright (C) 2007 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. *-->
+<!--**************...
[truncated message content] |
|
From: <az...@us...> - 2012-09-09 21:44:41
|
Revision: 2954
http://piklab.svn.sourceforge.net/piklab/?rev=2954&view=rev
Author: azhyd
Date: 2012-09-09 21:44:34 +0000 (Sun, 09 Sep 2012)
Log Message:
-----------
add support for 24FJ256GB106
Modified Paths:
--------------
trunk/piklab_kde4/src/devices/pic/base/pic_config.cpp
trunk/piklab_kde4/src/devices/pic/base/pic_config.h
trunk/piklab_kde4/src/devices/pic/base/pic_prog_family.xml
trunk/piklab_kde4/src/devices/pic/xml/pic_xml_to_data.cpp
trunk/piklab_kde4/src/devices/pic/xml_data/18F4520.xml
trunk/piklab_kde4/src/devices/pic/xml_data/18F4580.xml
Added Paths:
-----------
trunk/piklab_kde4/src/devices/pic/xml_data/24FJ256GB106.xml
Modified: trunk/piklab_kde4/src/devices/pic/base/pic_config.cpp
===================================================================
--- trunk/piklab_kde4/src/devices/pic/base/pic_config.cpp 2012-09-01 18:31:07 UTC (rev 2953)
+++ trunk/piklab_kde4/src/devices/pic/base/pic_config.cpp 2012-09-09 21:44:34 UTC (rev 2954)
@@ -217,7 +217,8 @@
{ { "GCP", I18N_NOOP("General code segment read-protection") }, MemoryRange, { { 0, 0 } } },
{ { "GWRP", I18N_NOOP("General code segment write-protection") }, MemoryRange, { { 0, 0 } } },
{ { "COE", I18N_NOOP("Reset into clip-on emulation mode") }, Toggle, { { 0, 0 } } },
- { { "ICS", I18N_NOOP("ICD communication channel") }, Pins, { { 0, 0 } } },
+ { { "ICS", I18N_NOOP("ICD communication channel") }, Pins, {
+ { "Undefined", I18N_NOOP("Undefined") }, { 0, 0 } } },
{ { "USBDIV", I18N_NOOP("USB clock (PLL divided by)") }, ValueUInt, {
{ "1", I18N_NOOP("not divided") }, { 0, 0 } } },
@@ -310,6 +311,13 @@
{ { "BOREN", I18N_NOOP("Brown-out reset") }, Fixed, {
{ "Off", I18N_NOOP("Off") },
{ "On", I18N_NOOP("Enabled in hardware") }, { 0, 0 } } },
+ { { "UVREG", I18N_NOOP("Internal USB Regulator") }, Toggle, { { 0, 0 } } },
+ { { "WPFP", I18N_NOOP("Protected Code Segment Boundary Page") }, RawValue, { { 0, 0 } } },
+ { { "WP", I18N_NOOP("Segment Write Protection") }, Toggle, { { 0, 0 } } },
+ { { "WPCFG", I18N_NOOP("Configuration Word Code Page Protection") }, Toggle, { { 0, 0 } } },
+ { { "WPEND", I18N_NOOP("Segment Write Protection End Page") }, Fixed, {
+ { "EndProtected", I18N_NOOP("Protected segment ends at last code page") },
+ { "BeginProtected", I18N_NOOP("Protected segment starts at first code page") }, { 0, 0 } } },
{ { 0, 0 }, Fixed, { { 0, 0 } } }
};
@@ -370,6 +378,7 @@
QString pinRegexp = "[A-Z]+\\d*(/[A-Z]+\\d*)?";
switch (data.type) {
case Fixed: break;
+ case RawValue: return true;
case ValueDouble: {
bool ok;
(void)name.toDouble(&ok);
@@ -418,6 +427,7 @@
const Data &data = DATA[masks()[mask].index];
switch (data.type) {
case Fixed:
+ case RawValue:
case ValueDouble:
case ValueUInt:
case Pin:
@@ -437,6 +447,12 @@
return name;
}
+bool Pic::Config::isRawValue(const QString& mask) const
+{
+ const Data &data = DATA[masks()[mask].index];
+ return data.type == RawValue;
+}
+
BitValue Pic::Config::Word::usedMask() const
{
BitValue mask = 0x0;
Modified: trunk/piklab_kde4/src/devices/pic/base/pic_config.h
===================================================================
--- trunk/piklab_kde4/src/devices/pic/base/pic_config.h 2012-09-01 18:31:07 UTC (rev 2953)
+++ trunk/piklab_kde4/src/devices/pic/base/pic_config.h 2012-09-09 21:44:34 UTC (rev 2954)
@@ -51,7 +51,7 @@
QStringList ignoredCNames;
BitValue wmask, pmask, cmask; // write, protected, and checksum bits masks
BitValue bvalue; // blank value
- QValueVector<Mask> masks; // ordered from lower to higher
+ QValueVector<Mask> masks; // ordered from lower to higher
BitValue usedMask() const;
};
@@ -66,6 +66,7 @@
static QString maskLabel(const QString &mask);
bool checkValueName(const QString &mask, const QString &name) const;
static QString valueLabel(const QString &mask, const QString &name);
+ bool isRawValue(const QString& mask) const;
private:
class MapData {
@@ -80,7 +81,7 @@
struct NameData {
const char *name, *label;
};
- enum Type { Fixed, ValueDouble, ValueUInt, Ratio, MemoryRange, Toggle, Pin, Pins };
+ enum Type { Fixed, ValueDouble, ValueUInt, Ratio, MemoryRange, Toggle, Pin, Pins, RawValue };
class Data {
public:
const NameData mask;
Modified: trunk/piklab_kde4/src/devices/pic/base/pic_prog_family.xml
===================================================================
--- trunk/piklab_kde4/src/devices/pic/base/pic_prog_family.xml 2012-09-01 18:31:07 UTC (rev 2953)
+++ trunk/piklab_kde4/src/devices/pic/base/pic_prog_family.xml 2012-09-09 21:44:34 UTC (rev 2954)
@@ -8,10 +8,19 @@
<!-- *************************************************************************/-->
<!DOCTYPE piklab>
<prog_families>
+
<family name="18FXX2_XX8">
<waitTimes code="1000" lv_code="1000" eeprom="5000" config="5000" user_ids="5000" erase="10000" lv_erase="1000" />
<latches code="8" eeprom="2" config="2" user_ids="8" row_erase="64" />
- <voltages vdd_min="2125" vdd_max="5500" vdd_def="5000" vpp_min="9000" vpp_max="13250" vpp_def="13000" vdd_nominal_min="4250" vdd_nominal_max="5500" erase_min="4500"/>
+ <voltages vdd_min="2000" vdd_max="5500" vdd_def="5000" vpp_min="9000" vpp_max="13250" vpp_def="13000" vdd_nominal_min="4250" vdd_nominal_max="5500" erase_min="4500"/>
<memory test_start="0x200000" test_size="0x40" panel_size="0x2000" boot_size="0x2000" />
</family>
+
+ <family name="18F2410">
+ <waitTimes code="1000" lv_code="1000" eeprom="4000" config="5000" user_ids="5000" erase="10000" lv_erase="1000" />
+ <latches code="32" eeprom="2" config="2" user_ids="8" row_erase="64" />
+ <voltages vdd_min="2000" vdd_max="5500" vdd_def="5000" vpp_min="9500" vpp_max="12500" vpp_def="12000" vdd_nominal_min="4250" vdd_nominal_max="5500" erase_min="3000"/>
+ <memory test_start="0x200000" test_size="0x40" panel_size="0x0000" boot_size="0x2000" />
+ </family>
+
</prog_families>
Modified: trunk/piklab_kde4/src/devices/pic/xml/pic_xml_to_data.cpp
===================================================================
--- trunk/piklab_kde4/src/devices/pic/xml/pic_xml_to_data.cpp 2012-09-01 18:31:07 UTC (rev 2953)
+++ trunk/piklab_kde4/src/devices/pic/xml/pic_xml_to_data.cpp 2012-09-09 21:44:34 UTC (rev 2954)
@@ -12,6 +12,7 @@
#include "xml_to_data/device_xml_to_data.h"
#include "common/common/misc.h"
+#include "common/common/number.h"
#include "devices/pic/base/pic_config.h"
#include "devices/pic/base/pic_register.h"
@@ -175,6 +176,7 @@
cmask.value = fromHexLabel(mask.attribute("value"), nbChars, &ok);
if ( !ok || cmask.value==0 || cmask.value>data()->mask(MemoryRangeType::Config) )
qFatal(QString("Malformed mask value in mask %1").arg(mask.attribute("name")));
+
//QStringList names;
QDomNode child = mask.firstChild();
while ( !child.isNull() ) {
@@ -182,6 +184,7 @@
child = child.nextSibling();
if ( value.isNull() ) continue;
if ( value.nodeName()!="value" ) qFatal(QString("Non value child in mask %1").arg(cmask.name));
+ if (data()->_config->isRawValue(cmask.name)) qFatal(QString("Raw value mask %1 cannot have explicit valued").arg(cmask.name));
if ( value.attribute("value")=="default" ) {
if ( !defName.isEmpty() ) qFatal(QString("Default value already defined for mask %1").arg(cmask.name));
defName = value.attribute("name");
@@ -200,11 +203,21 @@
processName(cmask, pmask, cvalue);
cmask.values.append(cvalue);
}
+
+ if (data()->_config->isRawValue(cmask.name)) {
+ uint nb = ::nbChars(NumberBase::Hex, cmask.value.toUInt());
+ for (BitValue::const_iterator it=cmask.value.begin(); it!=cmask.value.end(); ++it) {
+ Config::Value cvalue;
+ cvalue.value = *it;
+ cvalue.name = toHexLabel(*it, nb);
+ cmask.values.append(cvalue);
+ }
+ }
+
// add default values
if ( !defName.isEmpty() ) {
uint nb = 0;
- BitValue::const_iterator it;
- for (it=cmask.value.begin(); it!=cmask.value.end(); ++it) {
+ for (BitValue::const_iterator it=cmask.value.begin(); it!=cmask.value.end(); ++it) {
if ( hasValue(cmask, *it) ) continue; // already set
nb++;
Config::Value cvalue;
@@ -518,8 +531,7 @@
const Config::Word &word = data()->_config->_words[i];
for (uint j=0; j<uint(word.masks.count()); j++) {
const Config::Mask &mask = word.masks[j];
- BitValue::const_iterator it;
- for (it=mask.value.begin(); it!=mask.value.end(); ++it)
+ for (BitValue::const_iterator it=mask.value.begin(); it!=mask.value.end(); ++it)
if ( !hasValue(mask, *it) ) qFatal(QString("Value %1 not defined in mask %2").arg(toHexLabel(*it, data()->nbCharsWord(MemoryRangeType::Config))).arg(mask.name));
}
}
Modified: trunk/piklab_kde4/src/devices/pic/xml_data/18F4520.xml
===================================================================
--- trunk/piklab_kde4/src/devices/pic/xml_data/18F4520.xml 2012-09-01 18:31:07 UTC (rev 2953)
+++ trunk/piklab_kde4/src/devices/pic/xml_data/18F4520.xml 2012-09-09 21:44:34 UTC (rev 2954)
@@ -7,7 +7,8 @@
<!--* the Free Software Foundation; either version 2 of the License, or *-->
<!--* (at your option) any later version. *-->
<!--************************************************************************-->
-<device name="18F4520" document="010297" status="IP" memory_technology="FLASH" self_write="yes" architecture="18F" id="0x1080" >
+<device name="18F4520" document="010297" status="IP" memory_technology="FLASH" self_write="yes"
+ architecture="18F" id="0x1080" prog_family="18F2410">
<!--* Operating characteristics ********************************************-->
<frequency_range name="industrial" >
@@ -21,12 +22,8 @@
<frequency start="0" end="25" vdd_min="4.2" vdd_max="5.5" />
</frequency_range>
- <voltages name="vpp" min="9" max="13.25" nominal="13" />
- <voltages name="vdd_prog" min="3" max="5.5" nominal="5" />
- <voltages name="vdd_prog_write" min="2" max="5.5" nominal="5" />
-
<!--* Memory ***************************************************************-->
- <memory name="code" start="0x000000" end="0x007FFF" word_write_align="16" word_erase_align="32" />
+ <memory name="code" start="0x000000" end="0x007FFF" />
<memory name="user_ids" start="0x200000" end="0x200007" rmask="0x0F" />
<memory name="device_id" start="0x3FFFFE" end="0x3FFFFF" />
<memory name="config" start="0x300000" end="0x30000D" />
Modified: trunk/piklab_kde4/src/devices/pic/xml_data/18F4580.xml
===================================================================
--- trunk/piklab_kde4/src/devices/pic/xml_data/18F4580.xml 2012-09-01 18:31:07 UTC (rev 2953)
+++ trunk/piklab_kde4/src/devices/pic/xml_data/18F4580.xml 2012-09-09 21:44:34 UTC (rev 2954)
@@ -7,7 +7,8 @@
<!--* the Free Software Foundation; either version 2 of the License, or *-->
<!--* (at your option) any later version. *-->
<!--************************************************************************-->
-<device name="18F4580" document="010615" status="IP" memory_technology="FLASH" self_write="yes" architecture="18F" id="0x1A80" >
+<device name="18F4580" document="010615" status="IP" memory_technology="FLASH" self_write="yes"
+ architecture="18F" id="0x1A80" prog_family="18F2410">
<!--* Operating characteristics ********************************************-->
<frequency_range name="industrial" >
@@ -21,12 +22,8 @@
<frequency start="0" end="25" vdd_min="4.2" vdd_max="5.5" />
</frequency_range>
- <voltages name="vpp" min="9" max="13.25" nominal="13" />
- <voltages name="vdd_prog" min="3" max="5.5" nominal="5" />
- <voltages name="vdd_prog_write" min="2" max="5.5" nominal="5" />
-
<!--* Memory ***************************************************************-->
- <memory name="code" start="0x000000" end="0x007FFF" word_write_align="16" word_erase_align="32" />
+ <memory name="code" start="0x000000" end="0x007FFF" />
<memory name="user_ids" start="0x200000" end="0x200007" rmask="0x0F" />
<memory name="device_id" start="0x3FFFFE" end="0x3FFFFF" />
<memory name="config" start="0x300000" end="0x30000D" />
Added: trunk/piklab_kde4/src/devices/pic/xml_data/24FJ256GB106.xml
===================================================================
--- trunk/piklab_kde4/src/devices/pic/xml_data/24FJ256GB106.xml (rev 0)
+++ trunk/piklab_kde4/src/devices/pic/xml_data/24FJ256GB106.xml 2012-09-09 21:44:34 UTC (rev 2954)
@@ -0,0 +1,164 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--************************************************************************-->
+<!--* Copyright (C) 2007 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. *-->
+<!--************************************************************************-->
+<device name="24FJ256GB106" status="IP" memory_technology="FLASH" architecture="24F" id="0x1019" >
+
+<!--* Documents ************************************************************-->
+ <documents webpage="531081" datasheet="39897" progsheet="39907" erratas="80369" />
+
+<!--* Operating characteristics ********************************************-->
+ <frequency_range name="industrial" >
+ <frequency start="0" end="16" vdd_min="2.0" vdd_max="2.75" />
+ <frequency start="16" end="32" vdd_min="2.0" vdd_max="2.25" />
+ </frequency_range>
+
+ <voltages name="vpp" min="2.1" max="3.6" nominal="3.3" />
+ <voltages name="vdd_prog" min="2.1" max="3.6" nominal="3.3" />
+
+<!--* Memory ***************************************************************-->
+ <memory name="code" start="0x000000" end="0x02ABF8" />
+ <memory name="device_id" start="0xFF0000" end="0xFF0004" />
+ <memory name="config" start="0x02ABFA" end="0x02ABFF" />
+<!-- <memory name="user_ids" start="0xF80010" end="0xF80018" rmask="0xFFFF" /> -->
+ <memory name="debug_vector" start="0x800000" end="0x800007" />
+ <memory name="program_executive" start="0x800000" end="0x8007EF" />
+
+<!--* Configuration bits ***************************************************-->
+ <config offset="0x0" name="CONFIG1" wmask="0x7FFF" bvalue="0x7FFF" >
+ <mask name="WDTPOST" value="0x000F" >
+ <value value="0x0000" name="1:1" />
+ <value value="0x0001" name="1:2" />
+ <value value="0x0002" name="1:4" />
+ <value value="0x0003" name="1:8" />
+ <value value="0x0004" name="1:16" />
+ <value value="0x0005" name="1:32" />
+ <value value="0x0006" name="1:64" />
+ <value value="0x0007" name="1:128" />
+ <value value="0x0008" name="1:256" />
+ <value value="0x0009" name="1:512" />
+ <value value="0x000A" name="1:1024" />
+ <value value="0x000B" name="1:2048" />
+ <value value="0x000C" name="1:4096" />
+ <value value="0x000D" name="1:8192" />
+ <value value="0x000E" name="1:16384" />
+ <value value="0x000F" name="1:32768" />
+ </mask>
+ <mask name="WDTPRE" value="0x0010" >
+ <value value="0x0000" name="1:32" />
+ <value value="0x0010" name="1:128" />
+ </mask>
+ <mask name="WINDIS" value="0x0040" >
+ <value value="0x0000" name="On" />
+ <value value="0x0040" name="Off" />
+ </mask>
+ <mask name="FWDTEN" value="0x0080" >
+ <value value="0x0000" name="Software" />
+ <value value="0x0080" name="On" />
+ </mask>
+ <mask name="ICS" value="0x0300" >
+ <value value="0x0300" name="PGEC1, PGED1" />
+ <value value="0x0200" name="PGEC2, EGED2" />
+ <value value="0x0100" name="PGEC3, EGED3" />
+ <value value="0x0000" name="Undefined" />
+ </mask>
+ <mask name="DEBUG" value="0x0800" >
+ <value value="0x0000" name="On" />
+ <value value="0x0800" name="Off" />
+ </mask>
+ <mask name="GWRP" value="0x1000" >
+ <value value="0x0000" name="All" />
+ <value value="0x1000" name="Off" />
+ </mask>
+ <mask name="GCP" value="0x2000" >
+ <value value="0x0000" name="All" />
+ <value value="0x2000" name="Off" />
+ </mask>
+ <mask name="JTAGEN" value="0x4000" >
+ <value value="0x0000" name="Off" />
+ <value value="0x4000" name="On" />
+ </mask>
+ </config>
+
+ <config offset="0x2" name="CONFIG2" wmask="0xFFFF" bvalue="0xFFFF" >
+ <mask name="POSCMD" value="0x0003" >
+ <value value="0x0000" name="EC" />
+ <value value="0x0001" name="XT" />
+ <value value="0x0002" name="HS" />
+ <value value="0x0003" name="Off" />
+ </mask>
+ <mask name="UVREG" value="0x0008" >
+ <value value="0x0000" name="On" />
+ <value value="0x0008" name="Off" />
+ </mask>
+ <mask name="IOL1WAY" value="0x0010" >
+ <value value="0x0000" name="Multiple reconfigurations" />
+ <value value="0x0010" name="One reconfiguration" />
+ </mask>
+ <mask name="OSCIOFNC" value="0x0020" >
+ <value value="0x0000" name="IO" />
+ <value value="0x0020" name="Clock" />
+ </mask>
+ <mask name="FCKSM" value="0x00C0" >
+ <value value="0x0000" name="Switching on, monitor on" />
+ <value value="0x0040" name="Switching on, monitor off" />
+ <value value="0x0080" name="Switching off, monitor off" />
+ <value value="0x00C0" name="Switching off, monitor off" />
+ </mask>
+ <mask name="FNOSC" value="0x0700" >
+ <value value="0x0000" name="EXTRC_F" />
+ <value value="0x0100" name="INTRC_F_PLL" />
+ <value value="0x0200" name="PRIM" />
+ <value value="0x0300" name="PRIM_PLL" />
+ <value value="0x0400" name="SECOND" />
+ <value value="0x0500" name="EXTRC_LP" />
+ <value value="0x0600" name="invalid" />
+ <value value="0x0700" name="INTRC_F_POST" />
+ </mask>
+ <mask name="PLLEN" value="0x0800" >
+ <value value="0x0000" name="On" />
+ <value value="0x0800" name="Off" />
+ </mask>
+ <mask name="PLLDIV" value="0x7000" >
+ <value value="0x0000" name="1" />
+ <value value="0x1000" name="2" />
+ <value value="0x2000" name="3" />
+ <value value="0x3000" name="4" />
+ <value value="0x4000" name="5" />
+ <value value="0x5000" name="6" />
+ <value value="0x6000" name="10" />
+ <value value="0x7000" name="12" />
+ </mask>
+ <mask name="IESO" value="0x8000" >
+ <value value="0x0000" name="Off" />
+ <value value="0x8000" name="On" />
+ </mask>
+ </config>
+
+ <config offset="0x4" name="CONFIG3" wmask="0xFFFF" bvalue="0x87EF" >
+ <mask name="WPFP" value="0x00FF" >
+ </mask>
+ <mask name="WP" value="0x2000" >
+ <value value="0x0000" name="On" />
+ <value value="0x2000" name="Off" />
+ </mask>
+ <mask name="WPCFG" value="0x4000" >
+ <value value="0x0000" name="On" />
+ <value value="0x4000" name="Off" />
+ </mask>
+ <mask name="WPEND" value="0x8000" >
+ <value value="0x0000" name="EndProtected" />
+ <value value="0x8000" name="BeginProtected" />
+ </mask>
+ </config>
+
+<!--* Packages *************************************************************-->
+ <package types="tqfp qfn" nb_pins="64" >
+ </package>
+
+</device>
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <az...@us...> - 2012-09-01 18:31:15
|
Revision: 2953
http://piklab.svn.sourceforge.net/piklab/?rev=2953&view=rev
Author: azhyd
Date: 2012-09-01 18:31:07 +0000 (Sat, 01 Sep 2012)
Log Message:
-----------
fixed sdcc generator for latest sdcc [patch by Antonio Augusto Todo Bom Neto]
Modified Paths:
--------------
trunk/piklab_kde4/Changelog
trunk/piklab_kde4/src/tools/sdcc/sdcc_generator.cpp
trunk/piklab_kde4/test/gputils/blinker18/blinker_18.piklab
Modified: trunk/piklab_kde4/Changelog
===================================================================
--- trunk/piklab_kde4/Changelog 2012-08-16 06:44:44 UTC (rev 2952)
+++ trunk/piklab_kde4/Changelog 2012-09-01 18:31:07 UTC (rev 2953)
@@ -1,14 +1,15 @@
-0.16.2 (15 August 2012)
+0.16.2 (1 September 2012)
* fixed toolchain output when executable cannot be found
* fixed parsing for jalv2
* fixed template generator for jalv2
* do not set target power with ICD2 if device nominal vdd is not 5V
-* add menu entries to configure editor, to toggle/enable breakpoints, to switch editors, and
+* added menu entries to configure editor, to toggle/enable breakpoints, to switch editors, and
to toggle read-only mode for hex editor
* fixed crash when changing watched variable value [reported by Luca]
* added pickit3 support for 18F2XX/4XX (with correct firmware loaded)
* fixed hang with "stop" command in interactive command-line programmer
-* fix compilation on Fedora 17 [thanks to bitlord]
+* fixed compilation on Fedora 17 [thanks to bitlord]
+* fixed sdcc generator for latest sdcc [patch by Antonio Augusto Todo Bom Neto]
0.16.1 (1 July 2012)
* fixed command-line utilities compilation with Qt only
@@ -33,13 +34,13 @@
0.15.11 (14 December 2010)
* added icd2 programmer support for 24FJ128GA010 [with help from Anantha Krishnan]
-* fix duplicate devices in "device-list" output [reported by Frans Pinkse]
+* fixed duplicate devices in "device-list" output [reported by Frans Pinkse]
* parse more errors from sdcc output [fix by Stefan Olsson]
-* fix problem where lines were sometimes missed for compilation output c
-* fix unfound ilike icons [fix by Stefan Olsson]
+* fixed problem where lines were sometimes missed for compilation output c
+* fixed unfound ilike icons [fix by Stefan Olsson]
* correctly switch programmer when a different project is opened [reported by Gál Zsolt]
-* add some missing configuration bits to 18F2550/4550 [patch by Joe Ciccone]
-* fix crash when clicking on the project icon when no project is open [reported by Richard Bown]
+* added some missing configuration bits to 18F2550/4550 [patch by Joe Ciccone]
+* fixed crash when clicking on the project icon when no project is open [reported by Richard Bown]
0.15.10 (2 July 2010)
* added tiny bootloader support for 16F886/887 [fix by Alexandr]
@@ -52,9 +53,9 @@
* added icd2 programmer support for 16F88X [requested by Lorenzo Marcantonio]
* added icd2 programmer support for 18F23K20/24K20/25K20/26K20/43K20/44K20/45K20/46K20 [requested by Joris Van Dyck]
* added icd2 programmer support for 18F2458/2553/4458/4553
-* fix to make gpsim support more robust
-* fix custom programmer so that each command is synchronous [reported by Zoltan Szilvasy]
-* fix device chooser
+* made gpsim support more robust
+* fixed custom programmer so that each command is synchronous [reported by Zoltan Szilvasy]
+* fixed device chooser
0.15.8 (30 April 2010)
* added support for 18F23K20/18F26K20 [fix by Florian Hühn]
Modified: trunk/piklab_kde4/src/tools/sdcc/sdcc_generator.cpp
===================================================================
--- trunk/piklab_kde4/src/tools/sdcc/sdcc_generator.cpp 2012-08-16 06:44:44 UTC (rev 2952)
+++ trunk/piklab_kde4/src/tools/sdcc/sdcc_generator.cpp 2012-09-01 18:31:07 UTC (rev 2953)
@@ -69,8 +69,8 @@
QStringList cnames = SourceLine::configNames(Pic::ConfigNameType::SDCC, pmemory, i, ok);
if ( cnames.isEmpty() ) continue;
QString code;
- if ( data.is18Family() ) code += "code char at ";
- else code += "word at ";
+ if ( data.is18Family() ) code += "__code char __at ";
+ else code += "word __at ";
if ( cword.name.isEmpty() ) code += toHexLabel(address, data.nbCharsAddress()) + " CONFIG";
else code += prefix + cword.name + " " + cword.name;
code += " = " + cnames.join(" & ") + ";";
Modified: trunk/piklab_kde4/test/gputils/blinker18/blinker_18.piklab
===================================================================
--- trunk/piklab_kde4/test/gputils/blinker18/blinker_18.piklab 2012-08-16 06:44:44 UTC (rev 2952)
+++ trunk/piklab_kde4/test/gputils/blinker18/blinker_18.piklab 2012-09-01 18:31:07 UTC (rev 2953)
@@ -12,6 +12,9 @@
<version>0.1</version>
<tool>gputils</tool>
<programmer>pickit3</programmer>
+ <opened_files>
+ <item>blinker_18.asm</item>
+ </opened_files>
</general>
<assembler>
<custom_options/>
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <az...@us...> - 2012-08-16 06:44:51
|
Revision: 2952
http://piklab.svn.sourceforge.net/piklab/?rev=2952&view=rev
Author: azhyd
Date: 2012-08-16 06:44:44 +0000 (Thu, 16 Aug 2012)
Log Message:
-----------
fix compilation on Fedora 17 [thanks to bitlord]
Modified Paths:
--------------
trunk/piklab_kde4/Changelog
trunk/piklab_kde4/cmake/Piklab.cmake
Modified: trunk/piklab_kde4/Changelog
===================================================================
--- trunk/piklab_kde4/Changelog 2012-08-16 06:38:39 UTC (rev 2951)
+++ trunk/piklab_kde4/Changelog 2012-08-16 06:44:44 UTC (rev 2952)
@@ -8,6 +8,7 @@
* fixed crash when changing watched variable value [reported by Luca]
* added pickit3 support for 18F2XX/4XX (with correct firmware loaded)
* fixed hang with "stop" command in interactive command-line programmer
+* fix compilation on Fedora 17 [thanks to bitlord]
0.16.1 (1 July 2012)
* fixed command-line utilities compilation with Qt only
Modified: trunk/piklab_kde4/cmake/Piklab.cmake
===================================================================
--- trunk/piklab_kde4/cmake/Piklab.cmake 2012-08-16 06:38:39 UTC (rev 2951)
+++ trunk/piklab_kde4/cmake/Piklab.cmake 2012-08-16 06:44:44 UTC (rev 2952)
@@ -27,7 +27,7 @@
else(QT_ONLY)
find_package(KDE4 REQUIRED)
add_definitions(${QT_DEFINITIONS} ${KDE4_DEFINITIONS})
- include_directories( ${KDE4_INCLUDE_DIRS})
+ include_directories( ${KDE4_INCLUDES})
set(EXE_LIBS ${QT_LIBRARIES} ${KDE4_KDECORE_LIBS} ${KDE4_KIO_LIBS})
set(GUI_LIBS ${KDE4_KDEUI_LIBS} ${KDE4_KDE3SUPPORT_LIBS} ${EXE_LIBS} kde_gui ${KDE4_KTEXTEDITOR_LIBS} ${KDE4_KFILE_LIBS})
endif(QT_ONLY)
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <az...@us...> - 2012-08-16 06:38:50
|
Revision: 2951
http://piklab.svn.sourceforge.net/piklab/?rev=2951&view=rev
Author: azhyd
Date: 2012-08-16 06:38:39 +0000 (Thu, 16 Aug 2012)
Log Message:
-----------
svn ignore
Modified Paths:
--------------
trunk/piklab_kde4/svn_ignore
Removed Paths:
-------------
trunk/piklab_kde4/src/progs/pickit3/base/pickit3_data.cpp
Property Changed:
----------------
trunk/piklab_kde4/
trunk/piklab_kde4/cmake/
trunk/piklab_kde4/doc/
trunk/piklab_kde4/man/
trunk/piklab_kde4/po/
trunk/piklab_kde4/src/
trunk/piklab_kde4/src/coff/
trunk/piklab_kde4/src/coff/base/
trunk/piklab_kde4/src/coff/xml/
trunk/piklab_kde4/src/common/
trunk/piklab_kde4/src/common/cli/
trunk/piklab_kde4/src/common/common/
trunk/piklab_kde4/src/common/global/
trunk/piklab_kde4/src/common/gui/
trunk/piklab_kde4/src/common/kde_gui/
trunk/piklab_kde4/src/common/nokde/
trunk/piklab_kde4/src/common/nokde_gui/
trunk/piklab_kde4/src/common/port/
trunk/piklab_kde4/src/data/
trunk/piklab_kde4/src/data/app_data/
trunk/piklab_kde4/src/data/xpms/
trunk/piklab_kde4/src/dev-utils/
trunk/piklab_kde4/src/dev-utils/dev_config_check/
trunk/piklab_kde4/src/dev-utils/dev_diff/
trunk/piklab_kde4/src/dev-utils/dev_parser/
trunk/piklab_kde4/src/dev-utils/gen_device_xml/
trunk/piklab_kde4/src/dev-utils/generator/
trunk/piklab_kde4/src/dev-utils/html_generator/
trunk/piklab_kde4/src/dev-utils/inc_parser/
trunk/piklab_kde4/src/dev-utils/list_generator/
trunk/piklab_kde4/src/dev-utils/pickit2_to_data/
trunk/piklab_kde4/src/dev-utils/pickit3_dds_parser/
trunk/piklab_kde4/src/dev-utils/picp_check/
trunk/piklab_kde4/src/dev-utils/reg_extractor/
trunk/piklab_kde4/src/dev-utils/usb_snoop_filter/
trunk/piklab_kde4/src/dev-utils/usbmon_filter/
trunk/piklab_kde4/src/devices/
trunk/piklab_kde4/src/devices/base/
trunk/piklab_kde4/src/devices/gui/
trunk/piklab_kde4/src/devices/list/
trunk/piklab_kde4/src/devices/mem24/
trunk/piklab_kde4/src/devices/mem24/base/
trunk/piklab_kde4/src/devices/mem24/gui/
trunk/piklab_kde4/src/devices/mem24/mem24/
trunk/piklab_kde4/src/devices/mem24/prog/
trunk/piklab_kde4/src/devices/mem24/xml/
trunk/piklab_kde4/src/devices/mem24/xml_data/
trunk/piklab_kde4/src/devices/pic/
trunk/piklab_kde4/src/devices/pic/base/
trunk/piklab_kde4/src/devices/pic/gui/
trunk/piklab_kde4/src/devices/pic/pic/
trunk/piklab_kde4/src/devices/pic/prog/
trunk/piklab_kde4/src/devices/pic/xml/
trunk/piklab_kde4/src/devices/pic/xml_data/
trunk/piklab_kde4/src/devices/pic/xml_data/registers/
trunk/piklab_kde4/src/devices/pic/xml_data/validate/
trunk/piklab_kde4/src/libgui/
trunk/piklab_kde4/src/piklab/
trunk/piklab_kde4/src/piklab-coff/
trunk/piklab_kde4/src/piklab-hex/
trunk/piklab_kde4/src/piklab-prog/
trunk/piklab_kde4/src/piklab-test/
trunk/piklab_kde4/src/piklab-test/base/
trunk/piklab_kde4/src/piklab-test/checksum/
trunk/piklab_kde4/src/piklab-test/generators/
trunk/piklab_kde4/src/piklab-test/misc/
trunk/piklab_kde4/src/piklab-test/save_load_memory/
trunk/piklab_kde4/src/progs/
trunk/piklab_kde4/src/progs/base/
trunk/piklab_kde4/src/progs/bootloader/
trunk/piklab_kde4/src/progs/bootloader/base/
trunk/piklab_kde4/src/progs/bootloader/gui/
trunk/piklab_kde4/src/progs/custom/
trunk/piklab_kde4/src/progs/custom/base/
trunk/piklab_kde4/src/progs/custom/gui/
trunk/piklab_kde4/src/progs/direct/
trunk/piklab_kde4/src/progs/direct/base/
trunk/piklab_kde4/src/progs/direct/gui/
trunk/piklab_kde4/src/progs/direct/xml/
trunk/piklab_kde4/src/progs/gpsim/
trunk/piklab_kde4/src/progs/gpsim/base/
trunk/piklab_kde4/src/progs/gpsim/gui/
trunk/piklab_kde4/src/progs/gui/
trunk/piklab_kde4/src/progs/icd1/
trunk/piklab_kde4/src/progs/icd1/base/
trunk/piklab_kde4/src/progs/icd1/gui/
trunk/piklab_kde4/src/progs/icd1/xml/
trunk/piklab_kde4/src/progs/icd2/
trunk/piklab_kde4/src/progs/icd2/base/
trunk/piklab_kde4/src/progs/icd2/gui/
trunk/piklab_kde4/src/progs/icd2/icd2_data/
trunk/piklab_kde4/src/progs/icd2/xml/
trunk/piklab_kde4/src/progs/icd3/
trunk/piklab_kde4/src/progs/icd3/base/
trunk/piklab_kde4/src/progs/icd3/gui/
trunk/piklab_kde4/src/progs/icd3/icd3_data/
trunk/piklab_kde4/src/progs/icd3/xml/
trunk/piklab_kde4/src/progs/list/
trunk/piklab_kde4/src/progs/manager/
trunk/piklab_kde4/src/progs/open_prog/
trunk/piklab_kde4/src/progs/open_prog/base/
trunk/piklab_kde4/src/progs/open_prog/gui/
trunk/piklab_kde4/src/progs/open_prog/xml/
trunk/piklab_kde4/src/progs/picdem_bootloader/
trunk/piklab_kde4/src/progs/picdem_bootloader/base/
trunk/piklab_kde4/src/progs/picdem_bootloader/gui/
trunk/piklab_kde4/src/progs/picdem_bootloader/xml/
trunk/piklab_kde4/src/progs/pickit1/
trunk/piklab_kde4/src/progs/pickit1/base/
trunk/piklab_kde4/src/progs/pickit1/gui/
trunk/piklab_kde4/src/progs/pickit1/xml/
trunk/piklab_kde4/src/progs/pickit2/
trunk/piklab_kde4/src/progs/pickit2/base/
trunk/piklab_kde4/src/progs/pickit2/gui/
trunk/piklab_kde4/src/progs/pickit2/xml/
trunk/piklab_kde4/src/progs/pickit2_bootloader/
trunk/piklab_kde4/src/progs/pickit2_bootloader/base/
trunk/piklab_kde4/src/progs/pickit2_bootloader/gui/
trunk/piklab_kde4/src/progs/pickit2_bootloader/xml/
trunk/piklab_kde4/src/progs/pickit2v2/
trunk/piklab_kde4/src/progs/pickit2v2/base/
trunk/piklab_kde4/src/progs/pickit2v2/gui/
trunk/piklab_kde4/src/progs/pickit3/
trunk/piklab_kde4/src/progs/pickit3/base/
trunk/piklab_kde4/src/progs/pickit3/gui/
trunk/piklab_kde4/src/progs/pickit3/pickit3_data/
trunk/piklab_kde4/src/progs/pickit3/xml/
trunk/piklab_kde4/src/progs/psp/
trunk/piklab_kde4/src/progs/psp/base/
trunk/piklab_kde4/src/progs/psp/gui/
trunk/piklab_kde4/src/progs/psp/xml/
trunk/piklab_kde4/src/progs/tbl_bootloader/
trunk/piklab_kde4/src/progs/tbl_bootloader/base/
trunk/piklab_kde4/src/progs/tbl_bootloader/gui/
trunk/piklab_kde4/src/progs/tbl_bootloader/xml/
trunk/piklab_kde4/src/tools/
trunk/piklab_kde4/src/tools/base/
trunk/piklab_kde4/src/tools/boost/
trunk/piklab_kde4/src/tools/boost/gui/
trunk/piklab_kde4/src/tools/c18/
trunk/piklab_kde4/src/tools/c18/gui/
trunk/piklab_kde4/src/tools/cc5x/
trunk/piklab_kde4/src/tools/cc5x/gui/
trunk/piklab_kde4/src/tools/ccsc/
trunk/piklab_kde4/src/tools/ccsc/gui/
trunk/piklab_kde4/src/tools/custom/
trunk/piklab_kde4/src/tools/gputils/
trunk/piklab_kde4/src/tools/gputils/gui/
trunk/piklab_kde4/src/tools/gui/
trunk/piklab_kde4/src/tools/jal/
trunk/piklab_kde4/src/tools/jal/gui/
trunk/piklab_kde4/src/tools/jalv2/
trunk/piklab_kde4/src/tools/jalv2/gui/
trunk/piklab_kde4/src/tools/list/
trunk/piklab_kde4/src/tools/mpc/
trunk/piklab_kde4/src/tools/mpc/gui/
trunk/piklab_kde4/src/tools/pic30/
trunk/piklab_kde4/src/tools/pic30/gui/
trunk/piklab_kde4/src/tools/picc/
trunk/piklab_kde4/src/tools/picc/gui/
trunk/piklab_kde4/src/tools/sdcc/
trunk/piklab_kde4/src/tools/sdcc/gui/
trunk/piklab_kde4/src/xml_to_data/
trunk/piklab_kde4/test/
trunk/piklab_kde4/test/boost/
trunk/piklab_kde4/test/c18/
trunk/piklab_kde4/test/cc5x/
trunk/piklab_kde4/test/ccsc/
trunk/piklab_kde4/test/commands/
trunk/piklab_kde4/test/dummy_hex_32/
trunk/piklab_kde4/test/dummy_hex_8s/
trunk/piklab_kde4/test/gputils/
trunk/piklab_kde4/test/gputils/blinker/
trunk/piklab_kde4/test/gputils/blinker18/
trunk/piklab_kde4/test/gputils/compile_error/
trunk/piklab_kde4/test/gputils/link_error/
trunk/piklab_kde4/test/gputils/project/
trunk/piklab_kde4/test/gputils/standalone/
trunk/piklab_kde4/test/hex_test/
trunk/piklab_kde4/test/jal/
trunk/piklab_kde4/test/jalv2/
trunk/piklab_kde4/test/pic30/
trunk/piklab_kde4/test/picc/
trunk/piklab_kde4/test/sdcc/
trunk/piklab_kde4/test/sdcc18/
trunk/piklab_kde4/test/test_hex_32/
trunk/piklab_kde4/udev/
Property changes on: trunk/piklab_kde4
___________________________________________________________________
Modified: svn:ignore
- CMakeCache.txt
CMakeFiles
cmake_install.cmake
Makefile
config.h
svn_revision.h
mem24_data.cpp
pic_data.cpp
pickit2_bootloader_data.cpp
icd1_data.cpp
icd2_data.cpp
icd3_data.cpp
tbl_bootloader_data.cpp
psp_data.cpp
pickit1_data.cpp
pickit2_data.cpp
direct_data.cpp
picdem_bootloader_data.cpp
coff_data.cpp
op_data.cpp
coff-pic.xml
asm-pic.xml
*.exe
*.moc*
*_parser
*_generator
*_check
*_to_data
piklab
piklab-prog
piklab-coff
piklab-hex
build
.kdev4
+ CMakeCache.txt
CMakeFiles
cmake_install.cmake
Makefile
config.h
svn_revision.h
mem24_data.cpp
pic_data.cpp
pic_prog_family_data.cpp
pickit2_bootloader_data.cpp
icd1_data.cpp
icd2_data.cpp
icd3_data.cpp
tbl_bootloader_data.cpp
psp_data.cpp
pickit1_data.cpp
pickit2_data.cpp
pickit3_data.cpp
direct_data.cpp
picdem_bootloader_data.cpp
coff_data.cpp
op_data.cpp
coff-pic.xml
asm-pic.xml
*.exe
*.moc*
*_parser
*_generator
*_check
*_to_data
piklab
piklab-prog
piklab-coff
piklab-hex
build
.kdev4
Property changes on: trunk/piklab_kde4/cmake
___________________________________________________________________
Modified: svn:ignore
- CMakeCache.txt
CMakeFiles
cmake_install.cmake
Makefile
config.h
svn_revision.h
mem24_data.cpp
pic_data.cpp
pickit2_bootloader_data.cpp
icd1_data.cpp
icd2_data.cpp
icd3_data.cpp
tbl_bootloader_data.cpp
psp_data.cpp
pickit1_data.cpp
pickit2_data.cpp
direct_data.cpp
picdem_bootloader_data.cpp
coff_data.cpp
op_data.cpp
coff-pic.xml
asm-pic.xml
*.exe
*.moc*
*_parser
*_generator
*_check
*_to_data
piklab
piklab-prog
piklab-coff
piklab-hex
build
.kdev4
+ CMakeCache.txt
CMakeFiles
cmake_install.cmake
Makefile
config.h
svn_revision.h
mem24_data.cpp
pic_data.cpp
pic_prog_family_data.cpp
pickit2_bootloader_data.cpp
icd1_data.cpp
icd2_data.cpp
icd3_data.cpp
tbl_bootloader_data.cpp
psp_data.cpp
pickit1_data.cpp
pickit2_data.cpp
pickit3_data.cpp
direct_data.cpp
picdem_bootloader_data.cpp
coff_data.cpp
op_data.cpp
coff-pic.xml
asm-pic.xml
*.exe
*.moc*
*_parser
*_generator
*_check
*_to_data
piklab
piklab-prog
piklab-coff
piklab-hex
build
.kdev4
Property changes on: trunk/piklab_kde4/doc
___________________________________________________________________
Modified: svn:ignore
- CMakeCache.txt
CMakeFiles
cmake_install.cmake
Makefile
config.h
svn_revision.h
mem24_data.cpp
pic_data.cpp
pickit2_bootloader_data.cpp
icd1_data.cpp
icd2_data.cpp
icd3_data.cpp
tbl_bootloader_data.cpp
psp_data.cpp
pickit1_data.cpp
pickit2_data.cpp
direct_data.cpp
picdem_bootloader_data.cpp
coff_data.cpp
op_data.cpp
coff-pic.xml
asm-pic.xml
*.exe
*.moc*
*_parser
*_generator
*_check
*_to_data
piklab
piklab-prog
piklab-coff
piklab-hex
build
.kdev4
+ CMakeCache.txt
CMakeFiles
cmake_install.cmake
Makefile
config.h
svn_revision.h
mem24_data.cpp
pic_data.cpp
pic_prog_family_data.cpp
pickit2_bootloader_data.cpp
icd1_data.cpp
icd2_data.cpp
icd3_data.cpp
tbl_bootloader_data.cpp
psp_data.cpp
pickit1_data.cpp
pickit2_data.cpp
pickit3_data.cpp
direct_data.cpp
picdem_bootloader_data.cpp
coff_data.cpp
op_data.cpp
coff-pic.xml
asm-pic.xml
*.exe
*.moc*
*_parser
*_generator
*_check
*_to_data
piklab
piklab-prog
piklab-coff
piklab-hex
build
.kdev4
Property changes on: trunk/piklab_kde4/man
___________________________________________________________________
Modified: svn:ignore
- CMakeCache.txt
CMakeFiles
cmake_install.cmake
Makefile
config.h
svn_revision.h
mem24_data.cpp
pic_data.cpp
pickit2_bootloader_data.cpp
icd1_data.cpp
icd2_data.cpp
icd3_data.cpp
tbl_bootloader_data.cpp
psp_data.cpp
pickit1_data.cpp
pickit2_data.cpp
direct_data.cpp
picdem_bootloader_data.cpp
coff_data.cpp
op_data.cpp
coff-pic.xml
asm-pic.xml
*.exe
*.moc*
*_parser
*_generator
*_check
*_to_data
piklab
piklab-prog
piklab-coff
piklab-hex
build
.kdev4
+ CMakeCache.txt
CMakeFiles
cmake_install.cmake
Makefile
config.h
svn_revision.h
mem24_data.cpp
pic_data.cpp
pic_prog_family_data.cpp
pickit2_bootloader_data.cpp
icd1_data.cpp
icd2_data.cpp
icd3_data.cpp
tbl_bootloader_data.cpp
psp_data.cpp
pickit1_data.cpp
pickit2_data.cpp
pickit3_data.cpp
direct_data.cpp
picdem_bootloader_data.cpp
coff_data.cpp
op_data.cpp
coff-pic.xml
asm-pic.xml
*.exe
*.moc*
*_parser
*_generator
*_check
*_to_data
piklab
piklab-prog
piklab-coff
piklab-hex
build
.kdev4
Property changes on: trunk/piklab_kde4/po
___________________________________________________________________
Modified: svn:ignore
- CMakeCache.txt
CMakeFiles
cmake_install.cmake
Makefile
config.h
svn_revision.h
mem24_data.cpp
pic_data.cpp
pickit2_bootloader_data.cpp
icd1_data.cpp
icd2_data.cpp
icd3_data.cpp
tbl_bootloader_data.cpp
psp_data.cpp
pickit1_data.cpp
pickit2_data.cpp
direct_data.cpp
picdem_bootloader_data.cpp
coff_data.cpp
op_data.cpp
coff-pic.xml
asm-pic.xml
*.exe
*.moc*
*_parser
*_generator
*_check
*_to_data
piklab
piklab-prog
piklab-coff
piklab-hex
build
.kdev4
+ CMakeCache.txt
CMakeFiles
cmake_install.cmake
Makefile
config.h
svn_revision.h
mem24_data.cpp
pic_data.cpp
pic_prog_family_data.cpp
pickit2_bootloader_data.cpp
icd1_data.cpp
icd2_data.cpp
icd3_data.cpp
tbl_bootloader_data.cpp
psp_data.cpp
pickit1_data.cpp
pickit2_data.cpp
pickit3_data.cpp
direct_data.cpp
picdem_bootloader_data.cpp
coff_data.cpp
op_data.cpp
coff-pic.xml
asm-pic.xml
*.exe
*.moc*
*_parser
*_generator
*_check
*_to_data
piklab
piklab-prog
piklab-coff
piklab-hex
build
.kdev4
Property changes on: trunk/piklab_kde4/src
___________________________________________________________________
Modified: svn:ignore
- CMakeCache.txt
CMakeFiles
cmake_install.cmake
Makefile
config.h
svn_revision.h
mem24_data.cpp
pic_data.cpp
pickit2_bootloader_data.cpp
icd1_data.cpp
icd2_data.cpp
icd3_data.cpp
tbl_bootloader_data.cpp
psp_data.cpp
pickit1_data.cpp
pickit2_data.cpp
direct_data.cpp
picdem_bootloader_data.cpp
coff_data.cpp
op_data.cpp
coff-pic.xml
asm-pic.xml
*.exe
*.moc*
*_parser
*_generator
*_check
*_to_data
piklab
piklab-prog
piklab-coff
piklab-hex
build
.kdev4
+ CMakeCache.txt
CMakeFiles
cmake_install.cmake
Makefile
config.h
svn_revision.h
mem24_data.cpp
pic_data.cpp
pic_prog_family_data.cpp
pickit2_bootloader_data.cpp
icd1_data.cpp
icd2_data.cpp
icd3_data.cpp
tbl_bootloader_data.cpp
psp_data.cpp
pickit1_data.cpp
pickit2_data.cpp
pickit3_data.cpp
direct_data.cpp
picdem_bootloader_data.cpp
coff_data.cpp
op_data.cpp
coff-pic.xml
asm-pic.xml
*.exe
*.moc*
*_parser
*_generator
*_check
*_to_data
piklab
piklab-prog
piklab-coff
piklab-hex
build
.kdev4
Property changes on: trunk/piklab_kde4/src/coff
___________________________________________________________________
Modified: svn:ignore
- CMakeCache.txt
CMakeFiles
cmake_install.cmake
Makefile
config.h
svn_revision.h
mem24_data.cpp
pic_data.cpp
pickit2_bootloader_data.cpp
icd1_data.cpp
icd2_data.cpp
icd3_data.cpp
tbl_bootloader_data.cpp
psp_data.cpp
pickit1_data.cpp
pickit2_data.cpp
direct_data.cpp
picdem_bootloader_data.cpp
coff_data.cpp
op_data.cpp
coff-pic.xml
asm-pic.xml
*.exe
*.moc*
*_parser
*_generator
*_check
*_to_data
piklab
piklab-prog
piklab-coff
piklab-hex
build
.kdev4
+ CMakeCache.txt
CMakeFiles
cmake_install.cmake
Makefile
config.h
svn_revision.h
mem24_data.cpp
pic_data.cpp
pic_prog_family_data.cpp
pickit2_bootloader_data.cpp
icd1_data.cpp
icd2_data.cpp
icd3_data.cpp
tbl_bootloader_data.cpp
psp_data.cpp
pickit1_data.cpp
pickit2_data.cpp
pickit3_data.cpp
direct_data.cpp
picdem_bootloader_data.cpp
coff_data.cpp
op_data.cpp
coff-pic.xml
asm-pic.xml
*.exe
*.moc*
*_parser
*_generator
*_check
*_to_data
piklab
piklab-prog
piklab-coff
piklab-hex
build
.kdev4
Property changes on: trunk/piklab_kde4/src/coff/base
___________________________________________________________________
Modified: svn:ignore
- CMakeCache.txt
CMakeFiles
cmake_install.cmake
Makefile
config.h
svn_revision.h
mem24_data.cpp
pic_data.cpp
pickit2_bootloader_data.cpp
icd1_data.cpp
icd2_data.cpp
icd3_data.cpp
tbl_bootloader_data.cpp
psp_data.cpp
pickit1_data.cpp
pickit2_data.cpp
direct_data.cpp
picdem_bootloader_data.cpp
coff_data.cpp
op_data.cpp
coff-pic.xml
asm-pic.xml
*.exe
*.moc*
*_parser
*_generator
*_check
*_to_data
piklab
piklab-prog
piklab-coff
piklab-hex
build
.kdev4
+ CMakeCache.txt
CMakeFiles
cmake_install.cmake
Makefile
config.h
svn_revision.h
mem24_data.cpp
pic_data.cpp
pic_prog_family_data.cpp
pickit2_bootloader_data.cpp
icd1_data.cpp
icd2_data.cpp
icd3_data.cpp
tbl_bootloader_data.cpp
psp_data.cpp
pickit1_data.cpp
pickit2_data.cpp
pickit3_data.cpp
direct_data.cpp
picdem_bootloader_data.cpp
coff_data.cpp
op_data.cpp
coff-pic.xml
asm-pic.xml
*.exe
*.moc*
*_parser
*_generator
*_check
*_to_data
piklab
piklab-prog
piklab-coff
piklab-hex
build
.kdev4
Property changes on: trunk/piklab_kde4/src/coff/xml
___________________________________________________________________
Modified: svn:ignore
- CMakeCache.txt
CMakeFiles
cmake_install.cmake
Makefile
config.h
svn_revision.h
mem24_data.cpp
pic_data.cpp
pickit2_bootloader_data.cpp
icd1_data.cpp
icd2_data.cpp
icd3_data.cpp
tbl_bootloader_data.cpp
psp_data.cpp
pickit1_data.cpp
pickit2_data.cpp
direct_data.cpp
picdem_bootloader_data.cpp
coff_data.cpp
op_data.cpp
coff-pic.xml
asm-pic.xml
*.exe
*.moc*
*_parser
*_generator
*_check
*_to_data
piklab
piklab-prog
piklab-coff
piklab-hex
build
.kdev4
+ CMakeCache.txt
CMakeFiles
cmake_install.cmake
Makefile
config.h
svn_revision.h
mem24_data.cpp
pic_data.cpp
pic_prog_family_data.cpp
pickit2_bootloader_data.cpp
icd1_data.cpp
icd2_data.cpp
icd3_data.cpp
tbl_bootloader_data.cpp
psp_data.cpp
pickit1_data.cpp
pickit2_data.cpp
pickit3_data.cpp
direct_data.cpp
picdem_bootloader_data.cpp
coff_data.cpp
op_data.cpp
coff-pic.xml
asm-pic.xml
*.exe
*.moc*
*_parser
*_generator
*_check
*_to_data
piklab
piklab-prog
piklab-coff
piklab-hex
build
.kdev4
Property changes on: trunk/piklab_kde4/src/common
___________________________________________________________________
Modified: svn:ignore
- CMakeCache.txt
CMakeFiles
cmake_install.cmake
Makefile
config.h
svn_revision.h
mem24_data.cpp
pic_data.cpp
pickit2_bootloader_data.cpp
icd1_data.cpp
icd2_data.cpp
icd3_data.cpp
tbl_bootloader_data.cpp
psp_data.cpp
pickit1_data.cpp
pickit2_data.cpp
direct_data.cpp
picdem_bootloader_data.cpp
coff_data.cpp
op_data.cpp
coff-pic.xml
asm-pic.xml
*.exe
*.moc*
*_parser
*_generator
*_check
*_to_data
piklab
piklab-prog
piklab-coff
piklab-hex
build
.kdev4
+ CMakeCache.txt
CMakeFiles
cmake_install.cmake
Makefile
config.h
svn_revision.h
mem24_data.cpp
pic_data.cpp
pic_prog_family_data.cpp
pickit2_bootloader_data.cpp
icd1_data.cpp
icd2_data.cpp
icd3_data.cpp
tbl_bootloader_data.cpp
psp_data.cpp
pickit1_data.cpp
pickit2_data.cpp
pickit3_data.cpp
direct_data.cpp
picdem_bootloader_data.cpp
coff_data.cpp
op_data.cpp
coff-pic.xml
asm-pic.xml
*.exe
*.moc*
*_parser
*_generator
*_check
*_to_data
piklab
piklab-prog
piklab-coff
piklab-hex
build
.kdev4
Property changes on: trunk/piklab_kde4/src/common/cli
___________________________________________________________________
Modified: svn:ignore
- CMakeCache.txt
CMakeFiles
cmake_install.cmake
Makefile
config.h
svn_revision.h
mem24_data.cpp
pic_data.cpp
pickit2_bootloader_data.cpp
icd1_data.cpp
icd2_data.cpp
icd3_data.cpp
tbl_bootloader_data.cpp
psp_data.cpp
pickit1_data.cpp
pickit2_data.cpp
direct_data.cpp
picdem_bootloader_data.cpp
coff_data.cpp
op_data.cpp
coff-pic.xml
asm-pic.xml
*.exe
*.moc*
*_parser
*_generator
*_check
*_to_data
piklab
piklab-prog
piklab-coff
piklab-hex
build
.kdev4
+ CMakeCache.txt
CMakeFiles
cmake_install.cmake
Makefile
config.h
svn_revision.h
mem24_data.cpp
pic_data.cpp
pic_prog_family_data.cpp
pickit2_bootloader_data.cpp
icd1_data.cpp
icd2_data.cpp
icd3_data.cpp
tbl_bootloader_data.cpp
psp_data.cpp
pickit1_data.cpp
pickit2_data.cpp
pickit3_data.cpp
direct_data.cpp
picdem_bootloader_data.cpp
coff_data.cpp
op_data.cpp
coff-pic.xml
asm-pic.xml
*.exe
*.moc*
*_parser
*_generator
*_check
*_to_data
piklab
piklab-prog
piklab-coff
piklab-hex
build
.kdev4
Property changes on: trunk/piklab_kde4/src/common/common
___________________________________________________________________
Modified: svn:ignore
- CMakeCache.txt
CMakeFiles
cmake_install.cmake
Makefile
config.h
svn_revision.h
mem24_data.cpp
pic_data.cpp
pickit2_bootloader_data.cpp
icd1_data.cpp
icd2_data.cpp
icd3_data.cpp
tbl_bootloader_data.cpp
psp_data.cpp
pickit1_data.cpp
pickit2_data.cpp
direct_data.cpp
picdem_bootloader_data.cpp
coff_data.cpp
op_data.cpp
coff-pic.xml
asm-pic.xml
*.exe
*.moc*
*_parser
*_generator
*_check
*_to_data
piklab
piklab-prog
piklab-coff
piklab-hex
build
.kdev4
+ CMakeCache.txt
CMakeFiles
cmake_install.cmake
Makefile
config.h
svn_revision.h
mem24_data.cpp
pic_data.cpp
pic_prog_family_data.cpp
pickit2_bootloader_data.cpp
icd1_data.cpp
icd2_data.cpp
icd3_data.cpp
tbl_bootloader_data.cpp
psp_data.cpp
pickit1_data.cpp
pickit2_data.cpp
pickit3_data.cpp
direct_data.cpp
picdem_bootloader_data.cpp
coff_data.cpp
op_data.cpp
coff-pic.xml
asm-pic.xml
*.exe
*.moc*
*_parser
*_generator
*_check
*_to_data
piklab
piklab-prog
piklab-coff
piklab-hex
build
.kdev4
Property changes on: trunk/piklab_kde4/src/common/global
___________________________________________________________________
Modified: svn:ignore
- CMakeCache.txt
CMakeFiles
cmake_install.cmake
Makefile
config.h
svn_revision.h
mem24_data.cpp
pic_data.cpp
pickit2_bootloader_data.cpp
icd1_data.cpp
icd2_data.cpp
icd3_data.cpp
tbl_bootloader_data.cpp
psp_data.cpp
pickit1_data.cpp
pickit2_data.cpp
direct_data.cpp
picdem_bootloader_data.cpp
coff_data.cpp
op_data.cpp
coff-pic.xml
asm-pic.xml
*.exe
*.moc*
*_parser
*_generator
*_check
*_to_data
piklab
piklab-prog
piklab-coff
piklab-hex
build
.kdev4
+ CMakeCache.txt
CMakeFiles
cmake_install.cmake
Makefile
config.h
svn_revision.h
mem24_data.cpp
pic_data.cpp
pic_prog_family_data.cpp
pickit2_bootloader_data.cpp
icd1_data.cpp
icd2_data.cpp
icd3_data.cpp
tbl_bootloader_data.cpp
psp_data.cpp
pickit1_data.cpp
pickit2_data.cpp
pickit3_data.cpp
direct_data.cpp
picdem_bootloader_data.cpp
coff_data.cpp
op_data.cpp
coff-pic.xml
asm-pic.xml
*.exe
*.moc*
*_parser
*_generator
*_check
*_to_data
piklab
piklab-prog
piklab-coff
piklab-hex
build
.kdev4
Property changes on: trunk/piklab_kde4/src/common/gui
___________________________________________________________________
Modified: svn:ignore
- CMakeCache.txt
CMakeFiles
cmake_install.cmake
Makefile
config.h
svn_revision.h
mem24_data.cpp
pic_data.cpp
pickit2_bootloader_data.cpp
icd1_data.cpp
icd2_data.cpp
icd3_data.cpp
tbl_bootloader_data.cpp
psp_data.cpp
pickit1_data.cpp
pickit2_data.cpp
direct_data.cpp
picdem_bootloader_data.cpp
coff_data.cpp
op_data.cpp
coff-pic.xml
asm-pic.xml
*.exe
*.moc*
*_parser
*_generator
*_check
*_to_data
piklab
piklab-prog
piklab-coff
piklab-hex
build
.kdev4
+ CMakeCache.txt
CMakeFiles
cmake_install.cmake
Makefile
config.h
svn_revision.h
mem24_data.cpp
pic_data.cpp
pic_prog_family_data.cpp
pickit2_bootloader_data.cpp
icd1_data.cpp
icd2_data.cpp
icd3_data.cpp
tbl_bootloader_data.cpp
psp_data.cpp
pickit1_data.cpp
pickit2_data.cpp
pickit3_data.cpp
direct_data.cpp
picdem_bootloader_data.cpp
coff_data.cpp
op_data.cpp
coff-pic.xml
asm-pic.xml
*.exe
*.moc*
*_parser
*_generator
*_check
*_to_data
piklab
piklab-prog
piklab-coff
piklab-hex
build
.kdev4
Property changes on: trunk/piklab_kde4/src/common/kde_gui
___________________________________________________________________
Modified: svn:ignore
- CMakeCache.txt
CMakeFiles
cmake_install.cmake
Makefile
config.h
svn_revision.h
mem24_data.cpp
pic_data.cpp
pickit2_bootloader_data.cpp
icd1_data.cpp
icd2_data.cpp
icd3_data.cpp
tbl_bootloader_data.cpp
psp_data.cpp
pickit1_data.cpp
pickit2_data.cpp
direct_data.cpp
picdem_bootloader_data.cpp
coff_data.cpp
op_data.cpp
coff-pic.xml
asm-pic.xml
*.exe
*.moc*
*_parser
*_generator
*_check
*_to_data
piklab
piklab-prog
piklab-coff
piklab-hex
build
.kdev4
+ CMakeCache.txt
CMakeFiles
cmake_install.cmake
Makefile
config.h
svn_revision.h
mem24_data.cpp
pic_data.cpp
pic_prog_family_data.cpp
pickit2_bootloader_data.cpp
icd1_data.cpp
icd2_data.cpp
icd3_data.cpp
tbl_bootloader_data.cpp
psp_data.cpp
pickit1_data.cpp
pickit2_data.cpp
pickit3_data.cpp
direct_data.cpp
picdem_bootloader_data.cpp
coff_data.cpp
op_data.cpp
coff-pic.xml
asm-pic.xml
*.exe
*.moc*
*_parser
*_generator
*_check
*_to_data
piklab
piklab-prog
piklab-coff
piklab-hex
build
.kdev4
Property changes on: trunk/piklab_kde4/src/common/nokde
___________________________________________________________________
Modified: svn:ignore
- CMakeCache.txt
CMakeFiles
cmake_install.cmake
Makefile
config.h
svn_revision.h
mem24_data.cpp
pic_data.cpp
pickit2_bootloader_data.cpp
icd1_data.cpp
icd2_data.cpp
icd3_data.cpp
tbl_bootloader_data.cpp
psp_data.cpp
pickit1_data.cpp
pickit2_data.cpp
direct_data.cpp
picdem_bootloader_data.cpp
coff_data.cpp
op_data.cpp
coff-pic.xml
asm-pic.xml
*.exe
*.moc*
*_parser
*_generator
*_check
*_to_data
piklab
piklab-prog
piklab-coff
piklab-hex
build
.kdev4
+ CMakeCache.txt
CMakeFiles
cmake_install.cmake
Makefile
config.h
svn_revision.h
mem24_data.cpp
pic_data.cpp
pic_prog_family_data.cpp
pickit2_bootloader_data.cpp
icd1_data.cpp
icd2_data.cpp
icd3_data.cpp
tbl_bootloader_data.cpp
psp_data.cpp
pickit1_data.cpp
pickit2_data.cpp
pickit3_data.cpp
direct_data.cpp
picdem_bootloader_data.cpp
coff_data.cpp
op_data.cpp
coff-pic.xml
asm-pic.xml
*.exe
*.moc*
*_parser
*_generator
*_check
*_to_data
piklab
piklab-prog
piklab-coff
piklab-hex
build
.kdev4
Property changes on: trunk/piklab_kde4/src/common/nokde_gui
___________________________________________________________________
Modified: svn:ignore
- CMakeCache.txt
CMakeFiles
cmake_install.cmake
Makefile
config.h
svn_revision.h
mem24_data.cpp
pic_data.cpp
pickit2_bootloader_data.cpp
icd1_data.cpp
icd2_data.cpp
icd3_data.cpp
tbl_bootloader_data.cpp
psp_data.cpp
pickit1_data.cpp
pickit2_data.cpp
direct_data.cpp
picdem_bootloader_data.cpp
coff_data.cpp
op_data.cpp
coff-pic.xml
asm-pic.xml
*.exe
*.moc*
*_parser
*_generator
*_check
*_to_data
piklab
piklab-prog
piklab-coff
piklab-hex
build
.kdev4
+ CMakeCache.txt
CMakeFiles
cmake_install.cmake
Makefile
config.h
svn_revision.h
mem24_data.cpp
pic_data.cpp
pic_prog_family_data.cpp
pickit2_bootloader_data.cpp
icd1_data.cpp
icd2_data.cpp
icd3_data.cpp
tbl_bootloader_data.cpp
psp_data.cpp
pickit1_data.cpp
pickit2_data.cpp
pickit3_data.cpp
direct_data.cpp
picdem_bootloader_data.cpp
coff_data.cpp
op_data.cpp
coff-pic.xml
asm-pic.xml
*.exe
*.moc*
*_parser
*_generator
*_check
*_to_data
piklab
piklab-prog
piklab-coff
piklab-hex
build
.kdev4
Property changes on: trunk/piklab_kde4/src/common/port
___________________________________________________________________
Modified: svn:ignore
- CMakeCache.txt
CMakeFiles
cmake_install.cmake
Makefile
config.h
svn_revision.h
mem24_data.cpp
pic_data.cpp
pickit2_bootloader_data.cpp
icd1_data.cpp
icd2_data.cpp
icd3_data.cpp
tbl_bootloader_data.cpp
psp_data.cpp
pickit1_data.cpp
pickit2_data.cpp
direct_data.cpp
picdem_bootloader_data.cpp
coff_data.cpp
op_data.cpp
coff-pic.xml
asm-pic.xml
*.exe
*.moc*
*_parser
*_generator
*_check
*_to_data
piklab
piklab-prog
piklab-coff
piklab-hex
build
.kdev4
+ CMakeCache.txt
CMakeFiles
cmake_install.cmake
Makefile
config.h
svn_revision.h
mem24_data.cpp
pic_data.cpp
pic_prog_family_data.cpp
pickit2_bootloader_data.cpp
icd1_data.cpp
icd2_data.cpp
icd3_data.cpp
tbl_bootloader_data.cpp
psp_data.cpp
pickit1_data.cpp
pickit2_data.cpp
pickit3_data.cpp
direct_data.cpp
picdem_bootloader_data.cpp
coff_data.cpp
op_data.cpp
coff-pic.xml
asm-pic.xml
*.exe
*.moc*
*_parser
*_generator
*_check
*_to_data
piklab
piklab-prog
piklab-coff
piklab-hex
build
.kdev4
Property changes on: trunk/piklab_kde4/src/data
___________________________________________________________________
Modified: svn:ignore
- CMakeCache.txt
CMakeFiles
cmake_install.cmake
Makefile
config.h
svn_revision.h
mem24_data.cpp
pic_data.cpp
pickit2_bootloader_data.cpp
icd1_data.cpp
icd2_data.cpp
icd3_data.cpp
tbl_bootloader_data.cpp
psp_data.cpp
pickit1_data.cpp
pickit2_data.cpp
direct_data.cpp
picdem_bootloader_data.cpp
coff_data.cpp
op_data.cpp
coff-pic.xml
asm-pic.xml
*.exe
*.moc*
*_parser
*_generator
*_check
*_to_data
piklab
piklab-prog
piklab-coff
piklab-hex
build
.kdev4
+ CMakeCache.txt
CMakeFiles
cmake_install.cmake
Makefile
config.h
svn_revision.h
mem24_data.cpp
pic_data.cpp
pic_prog_family_data.cpp
pickit2_bootloader_data.cpp
icd1_data.cpp
icd2_data.cpp
icd3_data.cpp
tbl_bootloader_data.cpp
psp_data.cpp
pickit1_data.cpp
pickit2_data.cpp
pickit3_data.cpp
direct_data.cpp
picdem_bootloader_data.cpp
coff_data.cpp
op_data.cpp
coff-pic.xml
asm-pic.xml
*.exe
*.moc*
*_parser
*_generator
*_check
*_to_data
piklab
piklab-prog
piklab-coff
piklab-hex
build
.kdev4
Property changes on: trunk/piklab_kde4/src/data/app_data
___________________________________________________________________
Modified: svn:ignore
- CMakeCache.txt
CMakeFiles
cmake_install.cmake
Makefile
config.h
svn_revision.h
mem24_data.cpp
pic_data.cpp
pickit2_bootloader_data.cpp
icd1_data.cpp
icd2_data.cpp
icd3_data.cpp
tbl_bootloader_data.cpp
psp_data.cpp
pickit1_data.cpp
pickit2_data.cpp
direct_data.cpp
picdem_bootloader_data.cpp
coff_data.cpp
op_data.cpp
coff-pic.xml
asm-pic.xml
*.exe
*.moc*
*_parser
*_generator
*_check
*_to_data
piklab
piklab-prog
piklab-coff
piklab-hex
build
.kdev4
+ CMakeCache.txt
CMakeFiles
cmake_install.cmake
Makefile
config.h
svn_revision.h
mem24_data.cpp
pic_data.cpp
pic_prog_family_data.cpp
pickit2_bootloader_data.cpp
icd1_data.cpp
icd2_data.cpp
icd3_data.cpp
tbl_bootloader_data.cpp
psp_data.cpp
pickit1_data.cpp
pickit2_data.cpp
pickit3_data.cpp
direct_data.cpp
picdem_bootloader_data.cpp
coff_data.cpp
op_data.cpp
coff-pic.xml
asm-pic.xml
*.exe
*.moc*
*_parser
*_generator
*_check
*_to_data
piklab
piklab-prog
piklab-coff
piklab-hex
build
.kdev4
Property changes on: trunk/piklab_kde4/src/data/xpms
___________________________________________________________________
Modified: svn:ignore
- CMakeCache.txt
CMakeFiles
cmake_install.cmake
Makefile
config.h
svn_revision.h
mem24_data.cpp
pic_data.cpp
pickit2_bootloader_data.cpp
icd1_data.cpp
icd2_data.cpp
icd3_data.cpp
tbl_bootloader_data.cpp
psp_data.cpp
pickit1_data.cpp
pickit2_data.cpp
direct_data.cpp
picdem_bootloader_data.cpp
coff_data.cpp
op_data.cpp
coff-pic.xml
asm-pic.xml
*.exe
*.moc*
*_parser
*_generator
*_check
*_to_data
piklab
piklab-prog
piklab-coff
piklab-hex
build
.kdev4
+ CMakeCache.txt
CMakeFiles
cmake_install.cmake
Makefile
config.h
svn_revision.h
mem24_data.cpp
pic_data.cpp
pic_prog_family_data.cpp
pickit2_bootloader_data.cpp
icd1_data.cpp
icd2_data.cpp
icd3_data.cpp
tbl_bootloader_data.cpp
psp_data.cpp
pickit1_data.cpp
pickit2_data.cpp
pickit3_data.cpp
direct_data.cpp
picdem_bootloader_data.cpp
coff_data.cpp
op_data.cpp
coff-pic.xml
asm-pic.xml
*.exe
*.moc*
*_parser
*_generator
*_check
*_to_data
piklab
piklab-prog
piklab-coff
piklab-hex
build
.kdev4
Property changes on: trunk/piklab_kde4/src/dev-utils
___________________________________________________________________
Added: svn:ignore
+ CMakeCache.txt
CMakeFiles
cmake_install.cmake
Makefile
config.h
svn_revision.h
mem24_data.cpp
pic_data.cpp
pic_prog_family_data.cpp
pickit2_bootloader_data.cpp
icd1_data.cpp
icd2_data.cpp
icd3_data.cpp
tbl_bootloader_data.cpp
psp_data.cpp
pickit1_data.cpp
pickit2_data.cpp
pickit3_data.cpp
direct_data.cpp
picdem_bootloader_data.cpp
coff_data.cpp
op_data.cpp
coff-pic.xml
asm-pic.xml
*.exe
*.moc*
*_parser
*_generator
*_check
*_to_data
piklab
piklab-prog
piklab-coff
piklab-hex
build
.kdev4
Property changes on: trunk/piklab_kde4/src/dev-utils/dev_config_check
___________________________________________________________________
Added: svn:ignore
+ CMakeCache.txt
CMakeFiles
cmake_install.cmake
Makefile
config.h
svn_revision.h
mem24_data.cpp
pic_data.cpp
pic_prog_family_data.cpp
pickit2_bootloader_data.cpp
icd1_data.cpp
icd2_data.cpp
icd3_data.cpp
tbl_bootloader_data.cpp
psp_data.cpp
pickit1_data.cpp
pickit2_data.cpp
pickit3_data.cpp
direct_data.cpp
picdem_bootloader_data.cpp
coff_data.cpp
op_data.cpp
coff-pic.xml
asm-pic.xml
*.exe
*.moc*
*_parser
*_generator
*_check
*_to_data
piklab
piklab-prog
piklab-coff
piklab-hex
build
.kdev4
Property changes on: trunk/piklab_kde4/src/dev-utils/dev_diff
___________________________________________________________________
Added: svn:ignore
+ CMakeCache.txt
CMakeFiles
cmake_install.cmake
Makefile
config.h
svn_revision.h
mem24_data.cpp
pic_data.cpp
pic_prog_family_data.cpp
pickit2_bootloader_data.cpp
icd1_data.cpp
icd2_data.cpp
icd3_data.cpp
tbl_bootloader_data.cpp
psp_data.cpp
pickit1_data.cpp
pickit2_data.cpp
pickit3_data.cpp
direct_data.cpp
picdem_bootloader_data.cpp
coff_data.cpp
op_data.cpp
coff-pic.xml
asm-pic.xml
*.exe
*.moc*
*_parser
*_generator
*_check
*_to_data
piklab
piklab-prog
piklab-coff
piklab-hex
build
.kdev4
Property changes on: trunk/piklab_kde4/src/dev-utils/dev_parser
___________________________________________________________________
Added: svn:ignore
+ CMakeCache.txt
CMakeFiles
cmake_install.cmake
Makefile
config.h
svn_revision.h
mem24_data.cpp
pic_data.cpp
pic_prog_family_data.cpp
pickit2_bootloader_data.cpp
icd1_data.cpp
icd2_data.cpp
icd3_data.cpp
tbl_bootloader_data.cpp
psp_data.cpp
pickit1_data.cpp
pickit2_data.cpp
pickit3_data.cpp
direct_data.cpp
picdem_bootloader_data.cpp
coff_data.cpp
op_data.cpp
coff-pic.xml
asm-pic.xml
*.exe
*.moc*
*_parser
*_generator
*_check
*_to_data
piklab
piklab-prog
piklab-coff
piklab-hex
build
.kdev4
Property changes on: trunk/piklab_kde4/src/dev-utils/gen_device_xml
___________________________________________________________________
Added: svn:ignore
+ CMakeCache.txt
CMakeFiles
cmake_install.cmake
Makefile
config.h
svn_revision.h
mem24_data.cpp
pic_data.cpp
pic_prog_family_data.cpp
pickit2_bootloader_data.cpp
icd1_data.cpp
icd2_data.cpp
icd3_data.cpp
tbl_bootloader_data.cpp
psp_data.cpp
pickit1_data.cpp
pickit2_data.cpp
pickit3_data.cpp
direct_data.cpp
picdem_bootloader_data.cpp
coff_data.cpp
op_data.cpp
coff-pic.xml
asm-pic.xml
*.exe
*.moc*
*_parser
*_generator
*_check
*_to_data
piklab
piklab-prog
piklab-coff
piklab-hex
build
.kdev4
Property changes on: trunk/piklab_kde4/src/dev-utils/generator
___________________________________________________________________
Added: svn:ignore
+ CMakeCache.txt
CMakeFiles
cmake_install.cmake
Makefile
config.h
svn_revision.h
mem24_data.cpp
pic_data.cpp
pic_prog_family_data.cpp
pickit2_bootloader_data.cpp
icd1_data.cpp
icd2_data.cpp
icd3_data.cpp
tbl_bootloader_data.cpp
psp_data.cpp
pickit1_data.cpp
pickit2_data.cpp
pickit3_data.cpp
direct_data.cpp
picdem_bootloader_data.cpp
coff_data.cpp
op_data.cpp
coff-pic.xml
asm-pic.xml
*.exe
*.moc*
*_parser
*_generator
*_check
*_to_data
piklab
piklab-prog
piklab-coff
piklab-hex
build
.kdev4
Property changes on: trunk/piklab_kde4/src/dev-utils/html_generator
___________________________________________________________________
Added: svn:ignore
+ CMakeCache.txt
CMakeFiles
cmake_install.cmake
Makefile
config.h
svn_revision.h
mem24_data.cpp
pic_data.cpp
pic_prog_family_data.cpp
pickit2_bootloader_data.cpp
icd1_data.cpp
icd2_data.cpp
icd3_data.cpp
tbl_bootloader_data.cpp
psp_data.cpp
pickit1_data.cpp
pickit2_data.cpp
pickit3_data.cpp
direct_data.cpp
picdem_bootloader_data.cpp
coff_data.cpp
op_data.cpp
coff-pic.xml
asm-pic.xml
*.exe
*.moc*
*_parser
*_generator
*_check
*_to_data
piklab
piklab-prog
piklab-coff
piklab-hex
build
.kdev4
Property changes on: trunk/piklab_kde4/src/dev-utils/inc_parser
___________________________________________________________________
Added: svn:ignore
+ CMakeCache.txt
CMakeFiles
cmake_install.cmake
Makefile
config.h
svn_revision.h
mem24_data.cpp
pic_data.cpp
pic_prog_family_data.cpp
pickit2_bootloader_data.cpp
icd1_data.cpp
icd2_data.cpp
icd3_data.cpp
tbl_bootloader_data.cpp
psp_data.cpp
pickit1_data.cpp
pickit2_data.cpp
pickit3_data.cpp
direct_data.cpp
picdem_bootloader_data.cpp
coff_data.cpp
op_data.cpp
coff-pic.xml
asm-pic.xml
*.exe
*.moc*
*_parser
*_generator
*_check
*_to_data
piklab
piklab-prog
piklab-coff
piklab-hex
build
.kdev4
Property changes on: trunk/piklab_kde4/src/dev-utils/list_generator
___________________________________________________________________
Added: svn:ignore
+ CMakeCache.txt
CMakeFiles
cmake_install.cmake
Makefile
config.h
svn_revision.h
mem24_data.cpp
pic_data.cpp
pic_prog_family_data.cpp
pickit2_bootloader_data.cpp
icd1_data.cpp
icd2_data.cpp
icd3_data.cpp
tbl_bootloader_data.cpp
psp_data.cpp
pickit1_data.cpp
pickit2_data.cpp
pickit3_data.cpp
direct_data.cpp
picdem_bootloader_data.cpp
coff_data.cpp
op_data.cpp
coff-pic.xml
asm-pic.xml
*.exe
*.moc*
*_parser
*_generator
*_check
*_to_data
piklab
piklab-prog
piklab-coff
piklab-hex
build
.kdev4
Property changes on: trunk/piklab_kde4/src/dev-utils/pickit2_to_data
___________________________________________________________________
Added: svn:ignore
+ CMakeCache.txt
CMakeFiles
cmake_install.cmake
Makefile
config.h
svn_revision.h
mem24_data.cpp
pic_data.cpp
pic_prog_family_data.cpp
pickit2_bootloader_data.cpp
icd1_data.cpp
icd2_data.cpp
icd3_data.cpp
tbl_bootloader_data.cpp
psp_data.cpp
pickit1_data.cpp
pickit2_data.cpp
pickit3_data.cpp
direct_data.cpp
picdem_bootloader_data.cpp
coff_data.cpp
op_data.cpp
coff-pic.xml
asm-pic.xml
*.exe
*.moc*
*_parser
*_generator
*_check
*_to_data
piklab
piklab-prog
piklab-coff
piklab-hex
build
.kdev4
Property changes on: trunk/piklab_kde4/src/dev-utils/pickit3_dds_parser
___________________________________________________________________
Added: svn:ignore
+ CMakeCache.txt
CMakeFiles
cmake_install.cmake
Makefile
config.h
svn_revision.h
mem24_data.cpp
pic_data.cpp
pic_prog_family_data.cpp
pickit2_bootloader_data.cpp
icd1_data.cpp
icd2_data.cpp
icd3_data.cpp
tbl_bootloader_data.cpp
psp_data.cpp
pickit1_data.cpp
pickit2_data.cpp
pickit3_data.cpp
direct_data.cpp
picdem_bootloader_data.cpp
coff_data.cpp
op_data.cpp
coff-pic.xml
asm-pic.xml
*.exe
*.moc*
*_parser
*_generator
*_check
*_to_data
piklab
piklab-prog
piklab-coff
piklab-hex
build
.kdev4
Property changes on: trunk/piklab_kde4/src/dev-utils/picp_check
___________________________________________________________________
Added: svn:ignore
+ CMakeCache.txt
CMakeFiles
cmake_install.cmake
Makefile
config.h
svn_revision.h
mem24_data.cpp
pic_data.cpp
pic_prog_family_data.cpp
pickit2_bootloader_data.cpp
icd1_data.cpp
icd2_data.cpp
icd3_data.cpp
tbl_bootloader_data.cpp
psp_data.cpp
pickit1_data.cpp
pickit2_data.cpp
pickit3_data.cpp
direct_data.cpp
picdem_bootloader_data.cpp
coff_data.cpp
op_data.cpp
coff-pic.xml
asm-pic.xml
*.exe
*.moc*
*_parser
*_generator
*_check
*_to_data
piklab
piklab-prog
piklab-coff
piklab-hex
build
.kdev4
Property changes on: trunk/piklab_kde4/src/dev-utils/reg_extractor
___________________________________________________________________
Added: svn:ignore
+ CMakeCache.txt
CMakeFiles
cmake_install.cmake
Makefile
config.h
svn_revision.h
mem24_data.cpp
pic_data.cpp
pic_prog_family_data.cpp
pickit2_bootloader_data.cpp
icd1_data.cpp
icd2_data.cpp
icd3_data.cpp
tbl_bootloader_data.cpp
psp_data.cpp
pickit1_data.cpp
pickit2_data.cpp
pickit3_data.cpp
direct_data.cpp
picdem_bootloader_data.cpp
coff_data.cpp
op_data.cpp
coff-pic.xml
asm-pic.xml
*.exe
*.moc*
*_parser
*_generator
*_check
*_to_data
piklab
piklab-prog
piklab-coff
piklab-hex
build
.kdev4
Property changes on: trunk/piklab_kde4/src/dev-utils/usb_snoop_filter
___________________________________________________________________
Added: svn:ignore
+ CMakeCache.txt
CMakeFiles
cmake_install.cmake
Makefile
config.h
svn_revision.h
mem24_data.cpp
pic_data.cpp
pic_prog_family_data.cpp
pickit2_bootloader_data.cpp
icd1_data.cpp
icd2_data.cpp
icd3_data.cpp
tbl_bootloader_data.cpp
psp_data.cpp
pickit1_data.cpp
pickit2_data.cpp
pickit3_data.cpp
direct_data.cpp
picdem_bootloader_data.cpp
coff_data.cpp
op_data.cpp
coff-pic.xml
asm-pic.xml
*.exe
*.moc*
*_parser
*_generator
*_check
*_to_data
piklab
piklab-prog
piklab-coff
piklab-hex
build
.kdev4
Property changes on: trunk/piklab_kde4/src/dev-utils/usbmon_filter
___________________________________________________________________
Added: svn:ignore
+ CMakeCache.txt
CMakeFiles
cmake_install.cmake
Makefile
config.h
svn_revision.h
mem24_data.cpp
pic_data.cpp
pic_prog_family_data.cpp
pickit2_bootloader_data.cpp
icd1_data.cpp
icd2_data.cpp
icd3_data.cpp
tbl_bootloader_data.cpp
psp_data.cpp
pickit1_data.cpp
pickit2_data.cpp
pickit3_data.cpp
direct_data.cpp
picdem_bootloader_data.cpp
coff_data.cpp
op_data.cpp
coff-pic.xml
asm-pic.xml
*.exe
*.moc*
*_parser
*_generator
*_check
*_to_data
piklab
piklab-prog
piklab-coff
piklab-hex
build
.kdev4
Property changes on: trunk/piklab_kde4/src/devices
___________________________________________________________________
Modified: svn:ignore
- CMakeCache.txt
CMakeFiles
cmake_install.cmake
Makefile
config.h
svn_revision.h
mem24_data.cpp
pic_data.cpp
pickit2_bootloader_data.cpp
icd1_data.cpp
icd2_data.cpp
icd3_data.cpp
tbl_bootloader_data.cpp
psp_data.cpp
pickit1_data.cpp
pickit2_data.cpp
direct_data.cpp
picdem_bootloader_data.cpp
coff_data.cpp
op_data.cpp
coff-pic.xml
asm-pic.xml
*.exe
*.moc*
*_parser
*_generator
*_check
*_to_data
piklab
piklab-prog
piklab-coff
piklab-hex
build
.kdev4
+ CMakeCache.txt
CMakeFiles
cmake_install.cmake
Makefile
config.h
svn_revision.h
mem24_data.cpp
pic_data.cpp
pic_prog_family_data.cpp
pickit2_bootloader_data.cpp
icd1_data.cpp
icd2_data.cpp
icd3_data.cpp
tbl_bootloader_data.cpp
psp_data.cpp
pickit1_data.cpp
pickit2_data.cpp
pickit3_data.cpp
direct_data.cpp
picdem_bootloader_data.cpp
coff_data.cpp
op_data.cpp
coff-pic.xml
asm-pic.xml
*.exe
*.moc*
*_parser
*_generator
*_check
*_to_data
piklab
piklab-prog
piklab-coff
piklab-hex
build
.kdev4
Property changes on: trunk/piklab_kde4/src/devices/base
___________________________________________________________________
Modified: svn:ignore
- CMakeCache.txt
CMakeFiles
cmake_install.cmake
Makefile
config.h
svn_revision.h
mem24_data.cpp
pic_data.cpp
pickit2_bootloader_data.cpp
icd1_data.cpp
icd2_data.cpp
icd3_data.cpp
tbl_bootloader_data.cpp
psp_data.cpp
pickit1_data.cpp
pickit2_data.cpp
direct_data.cpp
picdem_bootloader_data.cpp
coff_data.cpp
op_data.cpp
coff-pic.xml
asm-pic.xml
*.exe
*.moc*
*_parser
*_generator
*_check
*_to_data
piklab
piklab-prog
piklab-coff
piklab-hex
build
.kdev4
+ CMakeCache.txt
CMakeFiles
cmake_install.cmake
Makefile
config.h
svn_revision.h
mem24_data.cpp
pic_data.cpp
pic_prog_family_data.cpp
pickit2_bootloader_data.cpp
icd1_data.cpp
icd2_data.cpp
icd3_data.cpp
tbl_bootloader_data.cpp
psp_data.cpp
pickit1_data.cpp
pickit2_data.cpp
pickit3_data.cpp
direct_data.cpp
picdem_bootloader_data.cpp
coff_data.cpp
op_data.cpp
coff-pic.xml
asm-pic.xml
*.exe
*.moc*
*_parser
*_generator
*_check
*_to_data
piklab
piklab-prog
piklab-coff
piklab-hex
build
.kdev4
Property changes on: trunk/piklab_kde4/src/devices/gui
___________________________________________________________________
Modified: svn:ignore
- CMakeCache.txt
CMakeFiles
cmake_install.cmake
Makefile
config.h
svn_revision.h
mem24_data.cpp
pic_data.cpp
pickit2_bootloader_data.cpp
icd1_data.cpp
icd2_data.cpp
icd3_data.cpp
tbl_bootloader_data.cpp
psp_data.cpp
pickit1_data.cpp
pickit2_data.cpp
direct_data.cpp
picdem_bootloader_data.cpp
coff_data.cpp
op_data.cpp
coff-pic.xml
asm-pic.xml
*.exe
*.moc*
*_parser
*_generator
*_check
*_to_data
piklab
piklab-prog
piklab-coff
piklab-hex
build
.kdev4
+ CMakeCache.txt
CMakeFiles
cmake_install.cmake
Makefile
config.h
svn_revision.h
mem24_data.cpp
pic_data.cpp
pic_prog_family_data.cpp
pickit2_bootloader_data.cpp
icd1_data.cpp
icd2_data.cpp
icd3_data.cpp
tbl_bootloader_data.cpp
psp_data.cpp
pickit1_data.cpp
pickit2_data.cpp
pickit3_data.cpp
direct_data.cpp
picdem_bootloader_data.cpp
coff_data.cpp
op_data.cpp
coff-pic.xml
asm-pic.xml
*.exe
*.moc*
*_parser
*_generator
*_check
*_to_data
piklab
piklab-prog
piklab-coff
piklab-hex
build
.kdev4
Property changes on: trunk/piklab_kde4/src/devices/list
___________________________________________________________________
Modified: svn:ignore
- CMakeCache.txt
CMakeFiles
cmake_install.cmake
Makefile
config.h
svn_revision.h
mem24_data.cpp
pic_data.cpp
pickit2_bootloader_data.cpp
icd1_data.cpp
icd2_data.cpp
icd3_data.cpp
tbl_bootloader_data.cpp
psp_data.cpp
pickit1_data.cpp
pickit2_data.cpp
direct_data.cpp
picdem_bootloader_data.cpp
coff_data.cpp
op_data.cpp
coff-pic.xml
asm-pic.xml
*.exe
*.moc*
*_parser
*_generator
*_check
*_to_data
piklab
piklab-prog
piklab-coff
piklab-hex
build
.kdev4
+ CMakeCache.txt
CMakeFiles
cmake_install.cmake
Makefile
config.h
svn_revision.h
mem24_data.cpp
pic_data.cpp
pic_prog_family_data.cpp
pickit2_bootloader_data.cpp
icd1_data.cpp
icd2_data.cpp
icd3_data.cpp
tbl_bootloader_data.cpp
psp_data.cpp
pickit1_data.cpp
pickit2_data.cpp
pickit3_data.cpp
direct_data.cpp
picdem_bootloader_data.cpp
coff_data.cpp
op_data.cpp
coff-pic.xml
asm-pic.xml
*.exe
*.moc*
*_parser
*_generator
*_check
*_to_data
piklab
piklab-prog
piklab-coff
piklab-hex
build
.kdev4
Property changes on: trunk/piklab_kde4/src/devices/mem24
___________________________________________________________________
Modified: svn:ignore
- CMakeCache.txt
CMakeFiles
cmake_install.cmake
Makefile
config.h
svn_revision.h
mem24_data.cpp
pic_data.cpp
pickit2_bootloader_data.cpp
icd1_data.cpp
icd2_data.cpp
icd3_data.cpp
tbl_bootloader_data.cpp
psp_data.cpp
pickit1_data.cpp
pickit2_data.cpp
direct_data.cpp
picdem_bootloader_data.cpp
coff_data.cpp
op_data.cpp
coff-pic.xml
asm-pic.xml
*.exe
*.moc*
*_parser
*_generator
*_check
*_to_data
piklab
piklab-prog
piklab-coff
piklab-hex
build
.kdev4
+ CMakeCache.txt
CMakeFiles
cmake_install.cmake
Makefile
config.h
svn_revision.h
mem24_data.cpp
pic_data.cpp
pic_prog_family_data.cpp
pickit2_bootloader_data.cpp
icd1_data.cpp
icd2_data.cpp
icd3_data.cpp
tbl_bootloader_data.cpp
psp_data.cpp
pickit1_data.cpp
pickit2_data.cpp
pickit3_data.cpp
direct_data.cpp
picdem_bootloader_data.cpp
coff_data.cpp
op_data.cpp
coff-pic.xml
asm-pic.xml
*.exe
*.moc*
*_parser
*_generator
*_check
*_to_data
piklab
piklab-prog
piklab-coff
piklab-hex
build
.kdev4
Property changes on: trunk/piklab_kde4/src/devices/mem24/base
___________________________________________________________________
Modified: svn:ignore
- CMakeCache.txt
CMakeFiles
cmake_install.cmake
Makefile
config.h
svn_revision.h
mem24_data.cpp
pic_data.cpp
pickit2_bootloader_data.cpp
icd1_data.cpp
icd2_data.cpp
icd3_data.cpp
tbl_bootloader_data.cpp
psp_data.cpp
pickit1_data.cpp
pickit2_data.cpp
direct_data.cpp
picdem_bootloader_data.cpp
coff_data.cpp
op_data.cpp
coff-pic.xml
asm-pic.xml
*.exe
*.moc*
*_parser
*_generator
*_check
*_to_data
piklab
piklab-prog
piklab-coff
piklab-hex
build
.kdev4
+ CMakeCache.txt
CMakeFiles
cmake_install.cmake
Makefile
config.h
svn_revision.h
mem24_data.cpp
pic_data.cpp
pic_prog_family_data.cpp
pickit2_bootloader_data.cpp
icd1_data.cpp
icd2_data.cpp
icd3_data.cpp
tbl_bootloader_data.cpp
psp_data.cpp
pickit1_data.cpp
pickit2_data.cpp
pickit3_data.cpp
direct_data.cpp
picdem_bootloader_data.cpp
coff_data.cpp
op_data.cpp
coff-pic.xml
asm-pic.xml
*.exe
*.moc*
*_parser
*_generator
*_check
*_to_data
piklab
piklab-prog
piklab-coff
piklab-hex
build
.kdev4
Property changes on: trunk/piklab_kde4/src/devices/mem24/gui
___________________________________________________________________
Modified: svn:ignore
- CMakeCache.txt
CMakeFiles
cmake_install.cmake
Makefile
config.h
svn_revision.h
mem24_data.cpp
pic_data.cpp
pickit2_bootloader_data.cpp
icd1_data.cpp
icd2_data.cpp
icd3_data.cpp
tbl_bootloader_data.cpp
psp_data.cpp
pickit1_data.cpp
pickit2_data.cpp
direct_data.cpp
picdem_bootloader_data.cpp
coff_data.cpp
op_data.cpp
coff-pic.xml
asm-pic.xml
*.exe
*.moc*
*_parser
*_generator
*_check
*_to_data
piklab
piklab-prog
piklab-coff
piklab-hex
build
.kdev4
+ CMakeCache.txt
CMakeFiles
cmake_install.cmake
Makefile
config.h
svn_revision.h
mem24_data.cpp
pic_data.cpp
pic_prog_family_data.cpp
pickit2_bootloader_data.cpp
icd1_data.cpp
icd2_data.cpp
icd3_data.cpp
tbl_bootloader_data.cpp
psp_data.cpp
pickit1_data.cpp
pickit2_data.cpp
pickit3_data.cpp
direct_data.cpp
picdem_bootloader_data.cpp
coff_data.cpp
op_data.cpp
coff-pic.xml
asm-pic.xml
*.exe
*.moc*
*_parser
*_generator
*_check
*_to_data
piklab
piklab-prog
piklab-coff
piklab-hex
build
.kdev4
Property changes on: trunk/piklab_kde4/src/devices/mem24/mem24
___________________________________________________________________
Modified: svn:ignore
- CMakeCache.txt
CMakeFiles
cmake_install.cmake
Makefile
config.h
svn_revision.h
mem24_data.cpp
pic_data.cpp
pickit2_bootloader_data.cpp
icd1_data.cpp
icd2_data.cpp
icd3_data.cpp
tbl_bootloader_data.cpp
psp_data.cpp
pickit1_data.cpp
pickit2_data.cpp
direct_data.cpp
picdem_bootloader_data.cpp
coff_data.cpp
op_data.cpp
coff-pic.xml
asm-pic.xml
*.exe
*.moc*
*_parser
*_generator
*_check
*_to_data
piklab
piklab-prog
piklab-coff
piklab-hex
build
.kdev4
+ CMakeCache.txt
CMakeFiles
cmake_install.cmake
Makefile
config.h
svn_revision.h
mem24_data.cpp
pic_data.cpp
pic_prog_family_data.cpp
pickit2_bootloader_data.cpp
icd1_data.cpp
icd2_data.cpp
icd3_data.cpp
tbl_bootloader_data.cpp
psp_data.cpp
pickit1_data.cpp
pickit2_data.cpp
pickit3_data.cpp
direct_data.cpp
picdem_bootloader_data.cpp
coff_data.cpp
op_data.cpp
coff-pic.xml
asm-pic.xml
*.exe
*.moc*
*_parser
*_generator
*_check
*_to_data
piklab
piklab-prog
piklab-coff
piklab-hex
build
.kdev4
Property changes on: trunk/piklab_kde4/src/devices/mem24/prog
___________________________________________________________________
Modified: svn:ignore
- CMakeCache.txt
CMakeFiles
cmake_install.cmake
Makefile
config.h
svn_revision.h
mem24_data.cpp
pic_data.cpp
pickit2_bootloader_data.cpp
icd1_data.cpp
icd2_data.cpp
icd3_data.cpp
tbl_bootloader_data.cpp
psp_data.cpp
pickit1_data.cpp
pickit2_data.cpp
direct_data.cpp
picdem_bootloader_data.cpp
coff_data.cpp
op_data.cpp
coff-pic.xml
asm-pic.xml
*.exe
*.moc*
*_parser
*_generator
*_check
*_to_data
piklab
piklab-prog
piklab-coff
piklab-hex
build
.kdev4
+ CMakeCache.txt
CMakeFiles
cmake_install.cmake
Makefile
config.h
svn_revision.h
mem24_data.cpp
pic_data.cpp
pic_prog_family_data.cpp
pickit2_bootloader_data.cpp
icd1_data.cpp
icd2_data.cpp
icd3_data.cpp
tbl_bootloader_data.cpp
psp_data.cpp
pickit1_data.cpp
pickit2_data.cpp
pickit3_data.cpp
direct_data.cpp
picdem_bootloader_data.cpp
coff_data.cpp
op_data.cpp
coff-pic.xml
asm-pic.xml
*.exe
*.moc*
*_parser
*_generator
*_check
*_to_data
piklab
piklab-prog
piklab-coff
piklab-hex
build
.kdev4
Property changes on: trunk/piklab_kde4/src/devices/mem24/xml
___________________________________________________________________
Modified: svn:ignore
- CMakeCache.txt
CMakeFiles
cmake_install.cmake
Makefile
config.h
svn_revision.h
mem24_data.cpp
pic_data.cpp
pickit2_bootloader_data.cpp
icd1_data.cpp
icd2_data.cpp
icd3_data.cpp
tbl_bootloader_data.cpp
psp_data.cpp
pickit1_data.cpp
pickit2_data.cpp
direct_data.cpp
picdem_bootloader_data.cpp
coff_data.cpp
op_data.cpp
coff-pic.xml
asm-pic.xml
*.exe
*.moc*
*_parser
*_generator
*_check
*_to_data
piklab
piklab-prog
piklab-coff
piklab-hex
build
.kdev4
+ CMakeCache.txt
CMakeFiles
cmake_install.cmake
Makefile
config.h
svn_revision.h
mem24_data.cpp
pic_data.cpp
pic_prog_family_data.cpp
pickit2_bootloader_data.cpp
icd1_data.cpp
icd2_data.cpp
icd3_data.cpp
tbl_bootloader_data.cpp
psp_data.cpp
pickit1_data.cpp
pickit2_data.cpp
pickit3_data.cpp
direct_data.cpp
picdem_bootloader_data.cpp
coff_data.cpp
op_data.cpp
coff-pic.xml
asm-pic.xml
*.exe
*.moc*
*_parser
*_generator
*_check
*_to_data
piklab
piklab-prog
piklab-coff
piklab-hex
build
.kdev4
Property changes on: trunk/piklab_kde4/src/devices/mem24/xml_data
___________________________________________________________________
Modified: svn:ignore
- CMakeCache.txt
CMakeFiles
cmake_install.cmake
Makefile
config.h
svn_revision.h
mem24_data.cpp
pic_data.cpp
pickit2_bootloader_data.cpp
icd1_data.cpp
icd2_data.cpp
icd3_data.cpp
tbl_bootloader_data.cpp
psp_data.cpp
pickit1_data.cpp
pickit2_data.cpp
direct_data.cpp
picdem_bootloader_data.cpp
coff_data.cpp
op_data.cpp
coff-pic.xml
asm-pic.xml
*.exe
*.moc*
*_parser
*_generator
*_check
*_to_data
piklab
piklab-prog
piklab-coff
piklab-hex
build
.kdev4
+ CMakeCache.txt
CMakeFiles
cmake_install.cmake
Makefile
config.h
svn_revision.h
mem24_data.cpp
pic_data.cpp
pic_prog_family_data.cpp
pickit2_bootloader_data.cpp
icd1_data.cpp
icd2_data.cpp
icd3_data.cpp
tbl_bootloader_data.cpp
psp_data.cpp
pickit1_data.cpp
pickit2_data.cpp
pickit3_data.cpp
direct_data.cpp
picdem_bootloader_data.cpp
coff_data.cpp
op_data.cpp
coff-pic.xml
asm-pic.xml
*.exe
*.moc*
*_parser
*_generator
*_check
*_to_data
piklab
piklab-prog
piklab-coff
piklab-hex
build
.kdev4
Property changes on: trunk/piklab_kde4/src/devices/pic
___________________________________________________________________
Modified: svn:ignore
- CMakeCache.txt
CMakeFiles
cmake_install.cmake
Makefile
config.h
svn_revision.h
mem24_data.cpp
pic_data.cpp
pickit2_bootloader_data.cpp
icd1_data.cpp
icd2_data.cpp
icd3_data.cpp
tbl_bootloader_data.cpp
psp_data.cpp
pickit1_data.cpp
pickit2_data.cpp
direct_data.cpp
picdem_bootloader_data.cpp
coff_data.cpp
op_data.cpp
coff-pic.xml
asm-pic.xml
*.exe
*.moc*
*_parser
*_generator
*_check
*_to_data
piklab
piklab-prog
piklab-coff
piklab-hex
build
.kdev4
+ CMakeCache.txt
CMakeFiles
cmake_install.cmake
Makefile
config.h
svn_revision.h
mem24_data.cpp
pic_data.cpp
pic_prog_family_data.cpp
pickit2_bootloader_data.cpp
icd1_data.cpp
icd2_data.cpp
icd3_data.cpp
tbl_bootloader_data.cpp
psp_data.cpp
pickit1_data.cpp
pickit2_data.cpp
pickit3_data.cpp
direct_data.cpp
picdem_bootloader_data.cpp
coff_data.cpp
op_data.cpp
coff-pic.xml
asm-pic.xml
*.exe
*.moc*
*_parser
*_generator
*_check
*_to_data
piklab
piklab-prog
piklab-coff
piklab-hex
build
.kdev4
Property changes on: trunk/piklab_kde4/src/devices/pic/base
___________________________________________________________________
Modified: svn:ignore
- CMakeCache.txt
CMakeFiles
cmake_install.cmake
Makefile
config.h
svn_revision.h
mem24_data.cpp
pic_data.cpp
pickit2_bootloader_data.cpp
icd1_data.cpp
icd2_data.cpp
icd3_data.cpp
tbl_bootloader_data.cpp
psp_data.cpp
pickit1_data.cpp
pickit2_data.cpp
direct_data.cpp
picdem_bootloader_data.cpp
coff_data.cpp
op_data.cpp
coff-pic.xml
asm-pic.xml
*.exe
*.moc*
*_parser
*_generator
*_check
*_to_data
piklab
piklab-prog
piklab-coff
piklab-hex
build
.kdev4
+ CMakeCache.txt
CMakeFiles
cmake_install.cmake
Makefile
config.h
svn_revision.h
mem24_data.cpp
pic_data.cpp
pic_prog_family_data.cpp
pickit2_bootloader_data.cpp
icd1_data.cpp
icd2_data.cpp
icd3_data.cpp
tbl_bootloader_data.cpp
psp_data.cpp
pickit1_data.cpp
pickit2_data.cpp
pickit3_data.cpp
direct_data.cpp
picdem_bootloader_data.cpp
coff_data.cpp
op_data.cpp
coff-pic.xml
asm-pic.xml
*.exe
*.moc*
*_parser
*_generator
*_check
*_to_data
piklab
piklab-prog
piklab-coff
piklab-hex
build
.kdev4
Property changes on: trunk/piklab_kde4/src/devices/pic/gui
___________________________________________________________________
Modified: svn:ignore
- CMakeCache.txt
CMakeFiles
cmake_install.cmake
Makefile
config.h
svn_revision.h
mem24_data.cpp
pic_data.cpp
pickit2_bootloader_data.cpp
icd1_data.cpp
icd2_data.cpp
icd3_data.cpp
tbl_bootloader_data.cpp
psp_data.cpp
pickit1_data.cpp
pickit2_data.cpp
direct_data.cpp
picdem_bootloader_data.cpp
coff_data.cpp
op_data.cpp
coff-pic.xml
asm-pic.xml
*.exe
*.moc*
*_parser
*_generator
*_check
*_to_data
piklab
piklab-prog
piklab-coff
piklab-hex
build
.kdev4
+ CMakeCache.txt
CMakeFiles
cmake_install.cmake
Makefile
config.h
svn_revision.h
mem24_data.cpp
pic_data.cpp
pic_prog_family_data.cpp
pickit2_bootloader_data.cpp
icd1_data.cpp
icd2_data.cpp
icd3_data.cpp
tbl_bootloader_data.cpp
psp_data.cpp
pickit1_data.cpp
pickit2_data.cpp
pickit3_data.cpp
direct_data.cpp
picdem_bootloader_data.cpp
coff_data.cpp
op_data.cpp
coff-pic.xml
asm-pic.xml
*.exe
*.moc*
*_parser
*_generator
*_check
*_to_data
piklab
piklab-prog
piklab-coff
piklab-hex
build
.kdev4
Property changes on: trunk/piklab_kde4/src/devices/pic/pic
___________________________________________________________________
Modified: svn:ignore
- CMakeCache.txt
CMakeFiles
cmake_install.cmake
Makefile
config.h
svn_revision.h
mem24_data.cpp
pic_data.cpp
pickit2_bootloader_data.cpp
icd1_data.cpp
icd2_data.cpp
icd3_data.cpp
tbl_bootloader_data.cpp
psp_data.cpp
pickit1_data.cpp
pickit2_data.cpp
direct_data.cpp
picdem_bootloader_data.cpp
coff_data.cpp
op_data.cpp
coff-pic.xml
asm-pic.xml
*.exe
*.moc*
*_parser
*_generator
*_check
*_to_data
piklab
piklab-prog
piklab-coff
piklab-hex
build
.kdev4
+ CMakeCache.txt
CMakeFiles
cmake_install.cmake
Makefile
config.h
svn_revision.h
mem24_data.cpp
pic_data.cpp
pic_prog_family_data.cpp
pickit2_bootloader_data.cpp
icd1_data.cpp
icd2_data.cpp
icd3_data.cpp
tbl_bootloader_data.cpp
psp_data.cpp
pickit1_data.cpp
pickit2_data.cpp
pickit3_data.cpp
direct_data.cpp
picdem_bootloader_data.cpp
coff_data.cpp
op_data.cpp
coff-pic.xml
asm-pic.xml
*.exe
*.moc*
*_parser
*_generator
*_check
*_to_data
piklab
piklab-prog
piklab-coff
piklab-hex
build
.kdev4
Property changes on: trunk/piklab_kde4/src/devices/pic/prog
___________________________________________________________________
Modified: svn:ignore
- CMakeCache.txt
CMakeFiles
cmake_install.cmake
Makefile
config.h
svn_revision.h
mem24_data.cpp
pic_data.cpp
pickit2_bootloader_data.cpp
icd1_data.cpp
icd2_data.cpp
icd3_data.cpp
tbl_bootloader_data.cpp
psp_data.cpp
pickit1_data.cpp
pickit2_data.cpp
direct_data.cpp
picdem_bootloader_data.cpp
coff_data.cpp
op_data.cpp
coff-pic.xml
asm-pic.xml
*.exe
*.moc*
*_parser
*_generator
*_check
*_to_data
piklab
piklab-prog
piklab-coff
piklab-hex
build
.kdev4
+ CMakeCache.txt
CMakeFiles
cmake_install.cmake
Makefile
config.h
svn_revision.h
mem24_data.cpp
pic_data.cpp
pic_prog_family_data.cpp
pickit2_bootloader_data.cpp
icd1_data.cpp
icd2_data.cpp
icd3_data.cpp
tbl_bootloader_data.cpp
psp_data.cpp
pickit1_data.cpp
pickit2_data.cpp
pickit3_data.cpp
direct_data.cpp
picdem_bootloader_data.cpp
coff_data.cpp
op_data.cpp
coff-pic.xml
asm-pic.xml
*.exe
*.moc*
*_parser
*_generator
*_check
*_to_data
piklab
piklab-prog
piklab-coff
piklab-hex
build
.kdev4
Property changes on: trunk/piklab_kde4/src/devices/pic/xml
___________________________________________________________________
Modified: svn:ignore
- CMakeCache.txt
CMakeFiles
cmake_install.cmake
Makefile
config.h
svn_revision.h
mem24_data.cpp
pic_data.cpp
pickit2_bootloader_data.cpp
icd1_data.cpp
icd2_data.cpp
icd3_data.cpp
tbl_bootloader_data.cpp
psp_data.cpp
pickit1_data.cpp
pickit2_data.cpp
direct_data.cpp
picdem_bootloader_data.cpp
coff_data.cpp
op_data.cpp
coff-pic.xml
asm-pic.xml
*.exe
*.moc*
*_parser
*_generator
*_check
*_to_data
piklab
piklab-prog
piklab-coff
piklab-hex
build
.kdev4
+ CMakeCache.txt
CMakeFiles
cmake_install.cmake
Makefile
config.h
svn_revision.h
mem24_data.cpp
pic_data.cpp
pic_prog_family_data.cpp
pickit2_bootloader_data.cpp
icd1_data.cpp
icd2_data.cpp
icd3_data.cpp
tbl_bootloader_data.cpp
psp_data.cpp
pickit1_data.cpp
pickit2_data.cpp
pickit3_data.cpp
direct_data.cpp
picdem_bootloader_data.cpp
coff_data.cpp
op_data.cpp
coff-pic.xml
asm-pic.xml
*.exe
*.moc*
*_parser
*_generator
*_check
*_to_data
piklab
piklab-prog
piklab-coff
piklab-hex
build
.kdev4
Property changes on: trunk/piklab_kde4/src/devices/pic/xml_data
___________________________________________________________________
Modified: svn:ignore
- CMakeCache.txt
CMakeFiles
cmake_install.cmake
Makefile
config.h
svn_revision.h
mem24_data.cpp
pic_data.cpp
pickit2_bootloader_data.cpp
icd1_data.cpp
icd2_data.cpp
icd3_data.cpp
tbl_bootloader_data.cpp
psp_data.cpp
pickit1_data.cpp
pickit2_data.cpp
direct_data.cpp
picdem_bootloader_data.cpp
coff_data.cpp
op_data.cpp
coff-pic.xml
asm-pic.xml
*...
[truncated message content] |
|
From: <az...@us...> - 2012-08-16 06:30:55
|
Revision: 2950
http://piklab.svn.sourceforge.net/piklab/?rev=2950&view=rev
Author: azhyd
Date: 2012-08-16 06:30:47 +0000 (Thu, 16 Aug 2012)
Log Message:
-----------
more work on pickit3
Modified Paths:
--------------
trunk/piklab_kde4/Changelog
trunk/piklab_kde4/src/coff/base/coff_data.h
trunk/piklab_kde4/src/dev-utils/pickit3_dds_parser/pickit3_dds_parser.cpp
trunk/piklab_kde4/src/devices/pic/base/pic.cpp
trunk/piklab_kde4/src/devices/pic/xml_data/18F242.xml
trunk/piklab_kde4/src/devices/pic/xml_data/18F248.xml
trunk/piklab_kde4/src/devices/pic/xml_data/18F252.xml
trunk/piklab_kde4/src/devices/pic/xml_data/18F258.xml
trunk/piklab_kde4/src/devices/pic/xml_data/18F442.xml
trunk/piklab_kde4/src/devices/pic/xml_data/18F448.xml
trunk/piklab_kde4/src/devices/pic/xml_data/18F458.xml
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.xml
trunk/piklab_kde4/src/progs/pickit3/base/pickit3_data.cpp
trunk/piklab_kde4/src/progs/pickit3/base/pickit3_data.h
trunk/piklab_kde4/src/progs/pickit3/pickit3_data/pickit3_data.cpp
trunk/piklab_kde4/src/progs/pickit3/xml/CMakeLists.txt
trunk/piklab_kde4/src/progs/pickit3/xml/xml_pickit3_parser.cpp
Modified: trunk/piklab_kde4/Changelog
===================================================================
--- trunk/piklab_kde4/Changelog 2012-08-12 20:03:38 UTC (rev 2949)
+++ trunk/piklab_kde4/Changelog 2012-08-16 06:30:47 UTC (rev 2950)
@@ -1,4 +1,4 @@
-0.16.2 (6 August 2012)
+0.16.2 (15 August 2012)
* fixed toolchain output when executable cannot be found
* fixed parsing for jalv2
* fixed template generator for jalv2
@@ -6,7 +6,7 @@
* add menu entries to configure editor, to toggle/enable breakpoints, to switch editors, and
to toggle read-only mode for hex editor
* fixed crash when changing watched variable value [reported by Luca]
-* added pickit3 support for 18F452
+* added pickit3 support for 18F2XX/4XX (with correct firmware loaded)
* fixed hang with "stop" command in interactive command-line programmer
0.16.1 (1 July 2012)
Modified: trunk/piklab_kde4/src/coff/base/coff_data.h
===================================================================
--- trunk/piklab_kde4/src/coff/base/coff_data.h 2012-08-12 20:03:38 UTC (rev 2949)
+++ trunk/piklab_kde4/src/coff/base/coff_data.h 2012-08-16 06:30:47 UTC (rev 2950)
@@ -16,6 +16,7 @@
uint ids[MAX_NB_IDS];
};
+ extern bool isSupported(const QString &device);
extern QString findId(uint id);
extern const Data &data(const QString &device);
Modified: trunk/piklab_kde4/src/dev-utils/pickit3_dds_parser/pickit3_dds_parser.cpp
===================================================================
--- trunk/piklab_kde4/src/dev-utils/pickit3_dds_parser/pickit3_dds_parser.cpp 2012-08-12 20:03:38 UTC (rev 2949)
+++ trunk/piklab_kde4/src/dev-utils/pickit3_dds_parser/pickit3_dds_parser.cpp 2012-08-16 06:30:47 UTC (rev 2950)
@@ -33,6 +33,20 @@
{ 0, 0, 0}
};
+void compare(uint v, const ByteArray& ref, uint i, uint len, const char* label)
+{
+ uint rv = ref.getValue(i, len);
+ if ( v != rv) qWarning("diff in '%s' at index %d: 0x%s != 0x%s (ref)",
+ label, i, toString(NumberBase::Hex, v, 2*len).latin1(),
+ toString(NumberBase::Hex, rv, 2*len).latin1());
+}
+
+void compare(const ByteArray& array, const ByteArray& ref, uint i, uint len, const char* label)
+{
+ uint v = array.getValue(i, len);
+ compare(v, ref, i, len, label);
+}
+
int main(int argc, char **argv)
{
const Piklab::AboutData about("pickit3_dds_parser", "pickit3_dds_parser", "");
@@ -43,24 +57,30 @@
KCmdLineArgs *args = KCmdLineArgs::parsedArgs();
if ( args->count()==0 ) args->usage();
- QString filename = args->url(0).fileName();
+ PURL::Url url(args->url(0));
+ QString filename = url.filename();
QRegExp regexp("dds_([0-9a-zA-Z]*)\\.txt");
if (!regexp.exactMatch(filename)) qFatal("Filename should be \"dds_<device>.txt\"");
QString device = regexp.cap(1);
const Device::Data *ddata = Device::Lister::instance().data(device);
if (ddata == NULL) qFatal("Unrecognized device \"%s\"", device.latin1());
- if (ddata->group().name() != "pic") qFatal("Device \"%s\": is not a PIC", device.latin1());
+ if (ddata->group().name() != "pic") qFatal("Device \"%s\" is not a PIC", device.latin1());
+ const Programmer::Group *group = Programmer::Lister::instance().group("pickit3");
+ ASSERT(group != NULL);
+ if (!group->isSupported(device)) qFatal("Device \"%s\" not supported by pickit3", device.latin1());
- QFile in(filename);
- if ( !in.open(IO_ReadOnly) ) qFatal("Could not open file \"%s\".\n", args->url(0).prettyUrl().latin1());
- QTextStream sin(&in);
- QString dds = sin.readAll();
+ Log::Base log;
+ PURL::File in(url, log);
+ if (!in.openForRead()) qFatal("Could not open file \"%s\".", url.pretty().latin1());
+ QString dds = in.stream().readAll();
ByteArray ref(384, 0x00, PrintEscapeAll);
uint k = 0;
+ uint n = 0;
for (int i = 0; i < dds.length(); ++i) {
- if (dds[i] == 0x0A) continue;
+ if (dds[i] == 0x0A || dds[i] == 0x20) continue;
if (k == 384) qFatal("Too long: %d", dds.length() - i);
+ uint v = 0;
if (dds[i] == '\\') {
if (i+2 >= dds.length()) qFatal("Incorrect escape at index %d", i);
bool ok = false;
@@ -68,33 +88,91 @@
s[0] = dds[i+1].ascii();
s[1] = dds[i+2].ascii();
s[2] = 0x00;
- uint v = fromString(NumberBase::Hex, s, 2, &ok);
- std::cout << toString(NumberBase::Hex, v, 2).latin1();
+ v = fromString(NumberBase::Hex, s, 2, &ok);
if (!ok) qFatal("Number not hexadecimal at index %d", i);
- ref.setValueInc(v, k, 1);
i += 2;
} else {
- uchar c = dds[i].ascii();
- std::cout << toString(NumberBase::Hex, c, 2).latin1();
- ref.setValueInc(c, k, 1);
+ v = dds[i].ascii();
}
- if (k%64 == 0) std::cout << std::endl;
+ if (n < 60 || n >= 64) {
+ if (n > 0 && n%64 == 0) std::cout << std::endl;
+ std::cout << toString(NumberBase::Hex, v, 2).latin1();
+ ref.setValueInc(v, k, 1);
+ }
+ ++n;
}
- if (k != 384) qFatal("Too short: %d/334", k);
+ std::cout << std::endl;
+ if (n != 384) qFatal("Too short: %d/384", k);
- const Programmer::Group *group = Programmer::Lister::instance().group("pcikit3");
- ASSERT(group != NULL);
Pickit3::PicBase* base = new Pickit3::PicBase(*group, static_cast<const Pic::Data*>(ddata));
Pickit3::Hardware* hardware = new Pickit3::Hardware(*base);
ByteArray data = hardware->createConfigPacket();
- for (int i = 0; i < 336; ++i) {
- if (data[i] != ref[i]) qWarning("Diff at index %d: %s != %s (ref)",
- i, toString(NumberBase::Hex, data[i], 2).latin1(),
- toString(NumberBase::Hex, ref[i], 2).latin1());
- }
- for (int i = 337; i < 384; ++i) {
- if (data[i] != 'Z') qWarning("Should be 'Z' at index %d", i);
- }
+ compare(data, ref, 0, 2, "id");
+ compare(data, ref, 2, 2, "debugger");
+ compare(data, ref, 4, 4, "devid_start");
+ compare(data, ref, 8, 4, "devid_mask");
+ compare(data, ref, 12, 4, "devid");
+ compare(data, ref, 48, 2, "code_wait_time");
+ compare(data, ref, 50, 2, "lv_code_wait_time");
+ compare(data, ref, 52, 2, "eeprom_wait_time");
+ compare(data, ref, 54, 2, "config_wait_time");
+ compare(data, ref, 56, 2, "userids_wait_time");
+ compare(data, ref, 58, 2, "erase_wait_time");
+ compare(data, ref, 60, 2, "lv_erase_wait_time");
+ compare(data, ref, 62, 2, "erase_algo");
+ compare(data, ref, 64, 1, "code_latches");
+ compare(data, ref, 65, 1, "eeprom_latches");
+ compare(data, ref, 66, 1, "config_latches");
+ compare(data, ref, 67, 1, "userids_latches");
+ compare(data, ref, 68, 1, "row_erase_latches");
+ compare(data, ref, 69, 1, "vdd_min");
+ compare(data, ref, 70, 1, "vdd_max");
+ compare(data, ref, 71, 1, "vdd_def");
+ compare(data, ref, 72, 1, "vpp_min");
+ compare(data, ref, 73, 1, "vpp_max");
+ compare(data, ref, 74, 1, "vpp_def");
+ compare(data, ref, 75, 1, "vdd_nominal_min");
+ compare(data, ref, 76, 1, "vdd_nominal_max");
+ compare(data, ref, 77, 1, "erase_min");
+ compare(data, ref, 78, 4, "code_start");
+ compare(data, ref, 82, 4, "code_size");
+ compare(data, ref, 86, 4, "eeprom_start");
+ compare(data, ref, 90, 4, "eeprom_size");
+ compare(data, ref, 94, 4, "userids_start");
+ compare(data, ref, 98, 4, "userids_size");
+ compare(data, ref, 102, 4, "config_start");
+ compare(data, ref, 106, 4, "config_size");
+ compare(data, ref, 110, 4, "test_start");
+ compare(data, ref, 114, 4, "test_size");
+ compare(data, ref, 118, 4, "test_app_start");
+ compare(data, ref, 122, 4, "test_app_size");
+ compare(data, ref, 126, 2, "panel_count");
+ compare(data, ref, 128, 2, "panel_size");
+ for (uint i = 0 ; i < 20; ++i) compare(data, ref, 130+i, 1, "config_bvalue");
+ for (uint i = 0 ; i < 20; ++i) compare(data, ref, 150+i, 1, "config_wmask");
+ compare(data, ref, 170, 4, "cal_start");
+ compare(data, ref, 174, 4, "debug_address");
+ compare(data, ref, 178, 4, "debug_mask");
+ compare(data, ref, 182, 4, "debug_on_value");
+ compare(data, ref, 186, 2, "minor_algo");
+ compare(data, ref, 188, 4, "config_boot_start");
+ compare(data, ref, 192, 4, "config_boot_size");
+ compare(data, ref, 196, 2, "debug_algo");
+ compare(data, ref, 198, 2, "header_only");
+ compare(data, ref, 200, 4, "header_id");
+ compare(data, ref, 204, 4, "header_select_address");
+ compare(data, ref, 208, 4, "header_select_value");
+ compare(data, ref, 212, 4, "header_config_address");
+ compare(data, ref, 216, 4, "header_cal_address");
+ compare(data, ref, 220, 4, "header_debug_exec_address");
+ compare(data, ref, 224, 2, "erase_algo_2");
+ compare(data, ref, 226, 4, "flags");
+ ByteArray array(334, 0x00, PrintEscapeAll);
+ for (uint i = 0; i < 334; ++i) array[i] = ref[i];
+ compare(hardware->computeChecksum(array), ref, 334, 2, "checksum");
+
+ for (int i = 336; i < 380; ++i) compare('Z', ref, i, 1, "fill");
+
return 0;
}
Modified: trunk/piklab_kde4/src/devices/pic/base/pic.cpp
===================================================================
--- trunk/piklab_kde4/src/devices/pic/base/pic.cpp 2012-08-12 20:03:38 UTC (rev 2949)
+++ trunk/piklab_kde4/src/devices/pic/base/pic.cpp 2012-08-16 06:30:47 UTC (rev 2950)
@@ -76,6 +76,7 @@
//-----------------------------------------------------------------------------
Pic::Data::Data()
{
+ _progFamilyIndex = -1;
_registersData.reset(new RegistersData(*this));
FOR_EACH(ProgVoltageType, type) {
_voltages[type].min = 0.0;
@@ -436,7 +437,7 @@
s << static_cast<const Pic::RegistersData &>(*data._registersData);
s << data._nbWordsCodeWrite << data._nbWordsCodeRowErase;
s << Q_UINT8(data._selfWrite);
- s << Q_UINT8(data._progFamilyIndex);
+ s << Q_INT8(data._progFamilyIndex);
return s;
}
QDataStream &Pic::operator >>(QDataStream &s, Pic::Data &data)
@@ -453,7 +454,8 @@
Q_UINT8 v;
s >> v;
data._selfWrite = v;
- s >> v;
- data._progFamilyIndex = v;
+ Q_INT8 sv;
+ s >> sv;
+ data._progFamilyIndex = sv;
return s;
}
Modified: trunk/piklab_kde4/src/devices/pic/xml_data/18F242.xml
===================================================================
--- trunk/piklab_kde4/src/devices/pic/xml_data/18F242.xml 2012-08-12 20:03:38 UTC (rev 2949)
+++ trunk/piklab_kde4/src/devices/pic/xml_data/18F242.xml 2012-08-16 06:30:47 UTC (rev 2950)
@@ -7,7 +7,8 @@
<!--* the Free Software Foundation; either version 2 of the License, or *-->
<!--* (at your option) any later version. *-->
<!--************************************************************************-->
-<device name="18F242" document="010269" status="NR" alternative="18F2420" memory_technology="FLASH" self_write="yes" architecture="18F" id="0x0480" >
+<device name="18F242" document="010269" status="NR" alternative="18F2420" memory_technology="FLASH" self_write="yes"
+ architecture="18F" id="0x0480" prog_family="18FXX2_XX8">
<!--* Checksums ************************************************************-->
<checksums>
@@ -28,12 +29,8 @@
<frequency start="0" end="25" vdd_min="4.2" vdd_max="5.5" />
</frequency_range>
- <voltages name="vpp" min="9" max="13.25" nominal="13" />
- <voltages name="vdd_prog" min="4.5" max="5.5" nominal="5" />
- <voltages name="vdd_prog_write" min="2" max="5.5" nominal="5" />
-
<!--* Memory ***************************************************************-->
- <memory name="code" start="0x000000" end="0x003FFF" word_write_align="4" word_erase_align="32" />
+ <memory name="code" start="0x000000" end="0x003FFF" />
<memory name="user_ids" start="0x200000" end="0x200007" rmask="0x0F" />
<memory name="device_id" start="0x3FFFFE" end="0x3FFFFF" />
<memory name="config" start="0x300000" end="0x30000D" />
Modified: trunk/piklab_kde4/src/devices/pic/xml_data/18F248.xml
===================================================================
--- trunk/piklab_kde4/src/devices/pic/xml_data/18F248.xml 2012-08-12 20:03:38 UTC (rev 2949)
+++ trunk/piklab_kde4/src/devices/pic/xml_data/18F248.xml 2012-08-16 06:30:47 UTC (rev 2950)
@@ -7,7 +7,8 @@
<!--* the Free Software Foundation; either version 2 of the License, or *-->
<!--* (at your option) any later version. *-->
<!--************************************************************************-->
-<device name="18F248" document="010274" status="NR" alternative="18F2480" memory_technology="FLASH" self_write="yes" architecture="18F" id="0x0800" >
+<device name="18F248" document="010274" status="NR" alternative="18F2480" memory_technology="FLASH" self_write="yes"
+ architecture="18F" id="0x0800" prog_family="18FXX2_XX8">
<!--* Checksums ************************************************************-->
<checksums>
@@ -28,12 +29,8 @@
<frequency start="0" end="25" vdd_min="4.2" vdd_max="5.5" />
</frequency_range>
- <voltages name="vpp" min="9" max="13.25" nominal="13" />
- <voltages name="vdd_prog" min="4.5" max="5.5" nominal="5" />
- <voltages name="vdd_prog_write" min="2" max="5.5" nominal="5" />
-
<!--* Memory ***************************************************************-->
- <memory name="code" start="0x000000" end="0x003FFF" word_write_align="4" word_erase_align="32" />
+ <memory name="code" start="0x000000" end="0x003FFF" />
<memory name="user_ids" start="0x200000" end="0x200007" rmask="0x0F" />
<memory name="device_id" start="0x3FFFFE" end="0x3FFFFF" />
<memory name="config" start="0x300000" end="0x30000D" />
Modified: trunk/piklab_kde4/src/devices/pic/xml_data/18F252.xml
===================================================================
--- trunk/piklab_kde4/src/devices/pic/xml_data/18F252.xml 2012-08-12 20:03:38 UTC (rev 2949)
+++ trunk/piklab_kde4/src/devices/pic/xml_data/18F252.xml 2012-08-16 06:30:47 UTC (rev 2950)
@@ -7,7 +7,8 @@
<!--* the Free Software Foundation; either version 2 of the License, or *-->
<!--* (at your option) any later version. *-->
<!--************************************************************************-->
-<device name="18F252" document="010276" status="NR" alternative="18F2520" memory_technology="FLASH" self_write="yes" architecture="18F" id="0x0400" >
+<device name="18F252" document="010276" status="NR" alternative="18F2520" memory_technology="FLASH" self_write="yes"
+ architecture="18F" id="0x0400" prog_family="18FXX2_XX8">
<!--* Checksums ************************************************************-->
<checksums>
@@ -29,12 +30,8 @@
<frequency start="0" end="25" vdd_min="4.2" vdd_max="5.5" />
</frequency_range>
- <voltages name="vpp" min="9" max="13.25" nominal="13" />
- <voltages name="vdd_prog" min="4.5" max="5.5" nominal="5" />
- <voltages name="vdd_prog_write" min="2" max="5.5" nominal="5" />
-
<!--* Memory ***************************************************************-->
- <memory name="code" start="0x000000" end="0x007FFF" word_write_align="4" word_erase_align="32" />
+ <memory name="code" start="0x000000" end="0x007FFF" />
<memory name="user_ids" start="0x200000" end="0x200007" rmask="0x0F" />
<memory name="device_id" start="0x3FFFFE" end="0x3FFFFF" />
<memory name="config" start="0x300000" end="0x30000D" />
Modified: trunk/piklab_kde4/src/devices/pic/xml_data/18F258.xml
===================================================================
--- trunk/piklab_kde4/src/devices/pic/xml_data/18F258.xml 2012-08-12 20:03:38 UTC (rev 2949)
+++ trunk/piklab_kde4/src/devices/pic/xml_data/18F258.xml 2012-08-16 06:30:47 UTC (rev 2950)
@@ -7,7 +7,8 @@
<!--* the Free Software Foundation; either version 2 of the License, or *-->
<!--* (at your option) any later version. *-->
<!--************************************************************************-->
-<device name="18F258" document="010281" status="NR" alternative="18F2580" memory_technology="FLASH" self_write="yes" architecture="18F" id="0x0840" >
+<device name="18F258" document="010281" status="NR" alternative="18F2580" memory_technology="FLASH" self_write="yes"
+ architecture="18F" id="0x0840" prog_family="18FXX2_XX8">
<!--* Checksums ************************************************************-->
<checksums>
@@ -29,12 +30,8 @@
<frequency start="0" end="25" vdd_min="4.2" vdd_max="5.5" />
</frequency_range>
- <voltages name="vpp" min="9" max="13.25" nominal="13" />
- <voltages name="vdd_prog" min="4.5" max="5.5" nominal="5" />
- <voltages name="vdd_prog_write" min="2" max="5.5" nominal="5" />
-
<!--* Memory ***************************************************************-->
- <memory name="code" start="0x000000" end="0x007FFF" word_write_align="4" word_erase_align="32" />
+ <memory name="code" start="0x000000" end="0x007FFF" />
<memory name="user_ids" start="0x200000" end="0x200007" rmask="0x0F" />
<memory name="device_id" start="0x3FFFFE" end="0x3FFFFF" />
<memory name="config" start="0x300000" end="0x30000D" />
Modified: trunk/piklab_kde4/src/devices/pic/xml_data/18F442.xml
===================================================================
--- trunk/piklab_kde4/src/devices/pic/xml_data/18F442.xml 2012-08-12 20:03:38 UTC (rev 2949)
+++ trunk/piklab_kde4/src/devices/pic/xml_data/18F442.xml 2012-08-16 06:30:47 UTC (rev 2950)
@@ -7,7 +7,8 @@
<!--* the Free Software Foundation; either version 2 of the License, or *-->
<!--* (at your option) any later version. *-->
<!--************************************************************************-->
-<device name="18F442" document="010289" status="NR" alternative="18F4420" memory_technology="FLASH" self_write="yes" architecture="18F" id="0x04A0" >
+<device name="18F442" document="010289" status="NR" alternative="18F4420" memory_technology="FLASH" self_write="yes"
+ architecture="18F" id="0x04A0" prog_family="18FXX2_XX8">
<!--* Checksums ************************************************************-->
<checksums>
@@ -28,12 +29,8 @@
<frequency start="0" end="25" vdd_min="4.2" vdd_max="5.5" />
</frequency_range>
- <voltages name="vpp" min="9" max="13.25" nominal="13" />
- <voltages name="vdd_prog" min="4.5" max="5.5" nominal="5" />
- <voltages name="vdd_prog_write" min="2" max="5.5" nominal="5" />
-
<!--* Memory ***************************************************************-->
- <memory name="code" start="0x000000" end="0x003FFF" word_write_align="4" word_erase_align="32" />
+ <memory name="code" start="0x000000" end="0x003FFF" />
<memory name="user_ids" start="0x200000" end="0x200007" rmask="0x0F" />
<memory name="device_id" start="0x3FFFFE" end="0x3FFFFF" />
<memory name="config" start="0x300000" end="0x30000D" />
Modified: trunk/piklab_kde4/src/devices/pic/xml_data/18F448.xml
===================================================================
--- trunk/piklab_kde4/src/devices/pic/xml_data/18F448.xml 2012-08-12 20:03:38 UTC (rev 2949)
+++ trunk/piklab_kde4/src/devices/pic/xml_data/18F448.xml 2012-08-16 06:30:47 UTC (rev 2950)
@@ -7,7 +7,8 @@
<!--* the Free Software Foundation; either version 2 of the License, or *-->
<!--* (at your option) any later version. *-->
<!--************************************************************************-->
-<device name="18F448" document="010294" status="NR" alternative="18F4480" memory_technology="FLASH" self_write="yes" architecture="18F" id="0x0820" >
+<device name="18F448" document="010294" status="NR" alternative="18F4480" memory_technology="FLASH" self_write="yes"
+ architecture="18F" id="0x0820" prog_family="18FXX2_XX8">
<!--* Checksums ************************************************************-->
<checksums>
@@ -28,12 +29,8 @@
<frequency start="0" end="25" vdd_min="4.2" vdd_max="5.5" />
</frequency_range>
- <voltages name="vpp" min="9" max="13.25" nominal="13" />
- <voltages name="vdd_prog" min="4.5" max="5.5" nominal="5" />
- <voltages name="vdd_prog_write" min="2" max="5.5" nominal="5" />
-
<!--* Memory ***************************************************************-->
- <memory name="code" start="0x000000" end="0x003FFF" word_write_align="4" word_erase_align="32" />
+ <memory name="code" start="0x000000" end="0x003FFF" />
<memory name="user_ids" start="0x200000" end="0x200007" rmask="0x0F" />
<memory name="device_id" start="0x3FFFFE" end="0x3FFFFF" />
<memory name="config" start="0x300000" end="0x30000D" />
Modified: trunk/piklab_kde4/src/devices/pic/xml_data/18F458.xml
===================================================================
--- trunk/piklab_kde4/src/devices/pic/xml_data/18F458.xml 2012-08-12 20:03:38 UTC (rev 2949)
+++ trunk/piklab_kde4/src/devices/pic/xml_data/18F458.xml 2012-08-16 06:30:47 UTC (rev 2950)
@@ -7,7 +7,8 @@
<!--* the Free Software Foundation; either version 2 of the License, or *-->
<!--* (at your option) any later version. *-->
<!--************************************************************************-->
-<device name="18F458" document="010301" status="NR" alternative="18F4580" memory_technology="FLASH" self_write="yes" architecture="18F" id="0x0860" >
+<device name="18F458" document="010301" status="NR" alternative="18F4580" memory_technology="FLASH" self_write="yes"
+ architecture="18F" id="0x0860" prog_family="18FXX2_XX8">
<!--* Checksums ************************************************************-->
<checksums>
@@ -29,12 +30,8 @@
<frequency start="0" end="25" vdd_min="4.2" vdd_max="5.5" />
</frequency_range>
- <voltages name="vpp" min="9" max="13.25" nominal="13" />
- <voltages name="vdd_prog" min="4.5" max="5.5" nominal="5" />
- <voltages name="vdd_prog_write" min="2" max="5.5" nominal="5" />
-
<!--* Memory ***************************************************************-->
- <memory name="code" start="0x000000" end="0x007FFF" word_write_align="4" word_erase_align="32" />
+ <memory name="code" start="0x000000" end="0x007FFF" />
<memory name="user_ids" start="0x200000" end="0x200007" rmask="0x0F" />
<memory name="device_id" start="0x3FFFFE" end="0x3FFFFF" />
<memory name="config" start="0x300000" end="0x30000D" />
Modified: trunk/piklab_kde4/src/progs/pickit3/base/pickit3.cpp
===================================================================
--- trunk/piklab_kde4/src/progs/pickit3/base/pickit3.cpp 2012-08-12 20:03:38 UTC (rev 2949)
+++ trunk/piklab_kde4/src/progs/pickit3/base/pickit3.cpp 2012-08-16 06:30:47 UTC (rev 2950)
@@ -160,6 +160,18 @@
return true;
}
+uint Pickit3::Hardware::computeChecksum(const ByteArray& data) const
+{
+ uint len = data.size();
+ BitValue cs = 0;
+ for (uint k = 0; k < len; k += 2) {
+ BitValue v1 = data[k];
+ BitValue v2 = data[k + 1];
+ cs += (v1 << 8) | v2;
+ }
+ return cs.complementInMask(0xFFFF).toUInt() + 1;
+}
+
bool Pickit3::Hardware::sendBulk(const ByteArray& data)
{
// array to send
@@ -172,14 +184,7 @@
for (uint i = 60; i < len; ++i) array[4+i] = data[i];
// checksum
- BitValue cs = 0;
- for (uint k = 0; k < len; k += 2) {
- BitValue v1 = data[k];
- BitValue v2 = data[k + 1];
- cs += (v1 << 8) | v2;
- }
- cs = cs.complementInMask(0xFFFF) + 1;
- array.setValue(cs, 4+len, 2);
+ array.setValue(computeChecksum(data), 4+len, 2);
// send
ByteArray out = createArray();
@@ -272,135 +277,133 @@
ByteArray Pickit3::Hardware::createConfigPacket() const
{
ByteArray data(334, 0x0, PrintEscapeAll);
- uint i = 0;
//processor id
uint id = Coff::data(device().name()).ids[0];
- data.setValueInc(id, i, 2);
+ data.setValue(id, 0, 2);
// operation mode
- data.setValueInc(_base.group().isDebugger() ? 1 : 2, i, 2);
+ data.setValue(_base.group().isDebugger() ? 1 : 2, 2, 2);
// device id start and mask
Address a = device().range(Pic::MemoryRangeType::DeviceId).start;
- data.setValueInc(a, i, 4);
+ data.setValue(a, 4, 4);
BitValue v = device().devIdMask();
- data.setValueInc(v, i, 4);
+ data.setValue(v, 8, 4);
// device id
v = device().ids()[Device::Special::Normal];
- data.setValueInc(v, i, 4);
+ data.setValue(v, 12, 4);
// 8 other possible device ids
- data.setValueInc(v, i, 4); // FIXME
- data.setValueInc(0x21, i, 4); // FIXME
- data.setValueInc(0x22, i, 4); // FIXME
- data.setValueInc(0x23, i, 4); // FIXME
- data.setValueInc(0x24, i, 4); // FIXME
- data.setValueInc(0x26, i, 4); // FIXME
- data.setValueInc(0x27, i, 4); // FIXME
- data.setValueInc(0, i, 4); // FIXME
- //for (uint k = 0; k <8; ++k) data.setValueInc(0, i, 4);
+ data.setValue(0, 16, 4);
+ data.setValue(0, 20, 4);
+ data.setValue(0, 24, 4);
+ data.setValue(0, 28, 4);
+ data.setValue(0, 32, 4);
+ data.setValue(0, 36, 4);
+ data.setValue(0, 40, 4);
+ data.setValue(0, 44, 4);
// code wait time
const Pic::ProgFamilyData* progFamily = device().progFamilyData();
- data.setValueInc(progFamily->codeWaitTime, i, 2);
+ data.setValue(progFamily->codeWaitTime, 48, 2);
// low voltage code wait time
- data.setValueInc(progFamily->lowVoltageCodeWaitTime, i, 2);
+ data.setValue(progFamily->lowVoltageCodeWaitTime, 50, 2);
// eeprom wait time
- data.setValueInc(progFamily->eepromWaitTime, i, 2);
+ data.setValue(progFamily->eepromWaitTime, 52, 2);
// config wait time
- data.setValueInc(progFamily->configWaitTime, i, 2);
+ data.setValue(progFamily->configWaitTime, 54, 2);
// user ids wait time
- data.setValueInc(progFamily->userIdsWaitTime, i, 2);
+ data.setValue(progFamily->userIdsWaitTime, 56, 2);
// erase wait time
- data.setValueInc(progFamily->eraseWaitTime, i, 2);
+ data.setValue(progFamily->eraseWaitTime, 58, 2);
// low voltage erase wait time
- data.setValueInc(progFamily->lowVoltageEraseWaitTime, i, 2);
+ data.setValue(progFamily->lowVoltageEraseWaitTime, 60, 2);
// low voltage code wait time
// erase algo
const FamilyData& family = FAMILY_DATA[Pickit3::family(device().name())];
- data.setValueInc(family.eraseAlgo, i, 2);
+ data.setValue(family.eraseAlgo, 62, 2);
// code latches
- data.setValueInc(progFamily->codeLatches, i, 1);
+ data.setValue(progFamily->codeLatches, 64, 1);
// eeprom latches
- data.setValueInc(progFamily->eepromLatches, i, 1);
+ data.setValue(progFamily->eepromLatches, 65, 1);
// config latches
- data.setValueInc(progFamily->configLatches, i, 1);
+ data.setValue(progFamily->configLatches, 66, 1);
// user ids latches
- data.setValueInc(progFamily->userIdsLatches, i, 1);
+ data.setValue(progFamily->userIdsLatches, 67, 1);
// row erase latches
- data.setValueInc(progFamily->rowEraseLatches, i, 1);
+ data.setValue(progFamily->rowEraseLatches, 68, 1);
// vdd min, max, and default
- data.setValueInc((progFamily->vddMin * 8) / 1000, i, 1);
- data.setValueInc((progFamily->vddMax * 8) / 1000, i, 1);
- data.setValueInc((progFamily->vddDef * 8) / 1000, i, 1);
+ data.setValue((progFamily->vddMin * 8) / 1000, 69, 1);
+ data.setValue((progFamily->vddMax * 8) / 1000, 70, 1);
+ data.setValue((progFamily->vddDef * 8) / 1000, 71, 1);
// vpp min, max, and default
- data.setValueInc((progFamily->vppMin * 8) / 1000, i, 1);
- data.setValueInc((progFamily->vppMax * 8) / 1000, i, 1);
- data.setValueInc((progFamily->vppDef * 8) / 1000, i, 1);
+ data.setValue((progFamily->vppMin * 8) / 1000, 72, 1);
+ data.setValue((progFamily->vppMax * 8) / 1000, 73, 1);
+ data.setValue((progFamily->vppDef * 8) / 1000, 74, 1);
// default vdd min and max
- data.setValueInc((progFamily->vddNominalMin * 8) / 1000, i, 1);
- data.setValueInc((progFamily->vddNominalMax * 8) / 1000, i, 1);
+ data.setValue((progFamily->vddNominalMin * 8) / 1000, 75, 1);
+ data.setValue((progFamily->vddNominalMax * 8) / 1000, 76, 1);
// low voltage threshold
- data.setValueInc((progFamily->eraseMin * 8) / 1000, i, 1);
+ data.setValue((progFamily->eraseMin * 8) / 1000, 77, 1);
// code start and size
a = device().range(Pic::MemoryRangeType::Code).start;
- data.setValueInc(a, i, 4);
+ data.setValue(a, 78, 4);
uint codeSize = device().nbWords(Pic::MemoryRangeType::Code)
* device().addressIncrement(Pic::MemoryRangeType::Code);
- data.setValueInc(codeSize, i, 4);
+ data.setValue(codeSize, 82, 4);
// eeprom start and size
a = device().range(Pic::MemoryRangeType::Eeprom).start;
- data.setValueInc(a, i, 4);
+ data.setValue(a, 86, 4);
uint size = device().nbWords(Pic::MemoryRangeType::Eeprom)
* device().addressIncrement(Pic::MemoryRangeType::Eeprom);
- data.setValueInc(size, i, 4);
+ data.setValue(size, 90, 4);
// user ids start and size
a = device().range(Pic::MemoryRangeType::UserId).start;
- data.setValueInc(a, i, 4);
+ data.setValue(a, 94, 4);
size = device().nbWords(Pic::MemoryRangeType::UserId)
* device().addressIncrement(Pic::MemoryRangeType::UserId);
- data.setValueInc(size, i, 4);
+ data.setValue(size, 98, 4);
// config start and size
a = device().range(Pic::MemoryRangeType::Config).start;
- data.setValueInc(a, i, 4);
+ data.setValue(a, 102, 4);
size = device().nbWords(Pic::MemoryRangeType::Config)
* device().addressIncrement(Pic::MemoryRangeType::Config);
- data.setValueInc(size, i, 4);
+ data.setValue(size, 106, 4);
// test memory start and size
- data.setValueInc(progFamily->testStart, i, 4);
- data.setValueInc(progFamily->testSize, i, 4);
+ data.setValue(progFamily->testStart, 110, 4);
+ data.setValue(progFamily->testSize, 114, 4);
// test app start, size
- data.setValueInc(0, i, 4); // FIXME
- data.setValueInc(0, i, 4); // FIXME
+ data.setValue(0, 118, 4); // FIXME
+ data.setValue(0, 122, 4); // FIXME
// panel count, size
uint panelCount = (codeSize - progFamily->bootSize) / progFamily->panelSize;
- data.setValueInc(panelCount, i, 2);
- data.setValueInc(progFamily->panelSize, i, 2);
+ data.setValue(panelCount, 126, 2);
+ data.setValue(progFamily->panelSize, 128, 2);
// config masks
const Pic::Config& config = device().config();
for (uint k = 0; k < 20; ++k) {
- if (k < (uint)config._words.size()) data.setValueInc(config._words[k].bvalue, i, 1);
- else data.setValueInc(0, i, 1);
+ if (k < (uint)config._words.size()) data.setValue(config._words[k].bvalue, 130+k, 1);
+ else data.setValue(0, 130+k, 1);
}
// config masks and blank values
for (uint k = 0; k < 20; ++k) {
- if (k < (uint)config._words.size() && config._words[k].bvalue != 0) data.setValueInc(config._words[k].wmask, i, 1);
- else data.setValueInc(0, i, 1);
+ if (k < (uint)config._words.size() && config._words[k].bvalue != 0) data.setValue(config._words[k].wmask, 150+k, 1);
+ else data.setValue(0, 150+k, 1);
}
// calibration start
a = device().range(Pic::MemoryRangeType::Cal).start;
- data.setValueInc(a, i, 4);
+ data.setValue(a, 170, 4);
// debug config offset, mask, and true value
uint wordIndex = 0;
const Pic::Config::Mask* mask = config.findMask("DEBUG", &wordIndex);
if (mask != NULL) {
a = wordIndex * device().addressIncrement(Pic::MemoryRangeType::Config);
- data.setValueInc(a, i, 4);
- data.setValueInc(mask->value, i, 4);
- data.setValueInc(0, i, 4);
+ data.setValue(a, 174, 4);
+ data.setValue(mask->value, 178, 4);
+ data.setValue(0, 182, 4);
} else {
- data.setValueInc(0, i, 4);
- data.setValueInc(0, i, 4);
- data.setValueInc(0, i, 4);
+ data.setValue(0, 174, 4);
+ data.setValue(0, 178, 4);
+ data.setValue(0, 182, 4);
}
// minor algo
- data.setValueInc(family.minorAlgo, i, 2);
+ data.setValue(family.minorAlgo, 186, 2);
// config boot start and size
//QString configBootMaskName = config.protection().maskName(
// Pic::Protection::WriteProtected, Pic::MemoryRangeType::Config);
@@ -410,27 +413,28 @@
// data.setValueInc(a, i, 4);
// data.setValueInc(0, i, 4); // FIXME
//} else {
- data.setValueInc(0, i, 4);
- data.setValueInc(0, i, 4);
+ data.setValue(0, 188, 4);
+ data.setValue(0, 192, 4);
//}
// debug algo
- data.setValueInc(family.debugAlgo, i, 2);
+ data.setValue(family.debugAlgo, 196, 2);
// header only
- data.setValueInc(0, i, 2); // FIXME
+ data.setValue(0, 198, 2); // FIXME
// header device id, select address, and select value
- data.setValueInc(0, i, 4); // FIXME
- data.setValueInc(0, i, 4); // FIXME
- data.setValueInc(0, i, 4); // FIXME
+ data.setValue(0, 200, 4); // FIXME
+ data.setValue(0, 204, 4); // FIXME
+ data.setValue(0, 208, 4); // FIXME
// header config address
- data.setValueInc(0, i, 4); // FIXME
+ data.setValue(0, 212, 4); // FIXME
// header calibration address
- data.setValueInc(0, i, 4); // FIXME
+ data.setValue(0, 216, 4); // FIXME
// header debug exec address
- data.setValueInc(0, i, 4); // FIXME
+ data.setValue(0, 220, 4); // FIXME
// erase algo 2 (?)
- data.setValueInc(family.eraseAlgo2, i, 2);
- // device specific flags
- data.setValueInc(family.flags, i, 4);
+ const Data& ddata = Pickit3::data(device().name());
+ data.setValue(ddata.eraseAlgo, 224, 2);
+ // device specific flags (?)
+ data.setValue(ddata.flags, 226, 4);
return data;
}
Modified: trunk/piklab_kde4/src/progs/pickit3/base/pickit3.h
===================================================================
--- trunk/piklab_kde4/src/progs/pickit3/base/pickit3.h 2012-08-12 20:03:38 UTC (rev 2949)
+++ trunk/piklab_kde4/src/progs/pickit3/base/pickit3.h 2012-08-16 06:30:47 UTC (rev 2950)
@@ -209,6 +209,7 @@
virtual bool setTargetReset(Device::ResetMode mode);
virtual bool getVoltages(Device::VoltageValues&);
ByteArray createConfigPacket() const;
+ uint computeChecksum(const ByteArray& data) const;
private:
PowerOptions _powerOptions;
Modified: trunk/piklab_kde4/src/progs/pickit3/base/pickit3.xml
===================================================================
--- trunk/piklab_kde4/src/progs/pickit3/base/pickit3.xml 2012-08-12 20:03:38 UTC (rev 2949)
+++ trunk/piklab_kde4/src/progs/pickit3/base/pickit3.xml 2012-08-16 06:30:47 UTC (rev 2950)
@@ -9,5 +9,12 @@
<!DOCTYPE piklab>
<type name="pickit3">
- <device name="18F452" family="18FXX2_XX8" />
+ <device name="18F242" family="18FXX2_XX8" erase_algo="0x0000" flags="0x0000" />
+ <device name="18F248" family="18FXX2_XX8" erase_algo="0x0000" flags="0x0000" />
+ <device name="18F252" family="18FXX2_XX8" erase_algo="0xFD30" flags="0x0000" />
+ <device name="18F258" family="18FXX2_XX8" erase_algo="0xFD30" flags="0x0000" />
+ <device name="18F442" family="18FXX2_XX8" erase_algo="0x5DA8" flags="0x0000" />
+ <device name="18F448" family="18FXX2_XX8" erase_algo="0x5DA8" flags="0x0000" />
+ <device name="18F452" family="18FXX2_XX8" erase_algo="0x6676" flags="0x0000" />
+ <device name="18F458" family="18FXX2_XX8" erase_algo="0xF5A0" flags="0x0000" />
</type>
Modified: trunk/piklab_kde4/src/progs/pickit3/base/pickit3_data.cpp
===================================================================
--- trunk/piklab_kde4/src/progs/pickit3/base/pickit3_data.cpp 2012-08-12 20:03:38 UTC (rev 2949)
+++ trunk/piklab_kde4/src/progs/pickit3/base/pickit3_data.cpp 2012-08-16 06:30:47 UTC (rev 2950)
@@ -14,10 +14,17 @@
Data data;
};
-const CData PIC18F452_DATA = { "18F452", 0, 1, { } };
+const CData PIC18F242_DATA = { "18F242", 0, 1, { 0x0000, 0x0000 } };
+const CData PIC18F248_DATA = { "18F248", 0, 1, { 0x0000, 0x0000 } };
+const CData PIC18F252_DATA = { "18F252", 0, 1, { 0xFD30, 0x0000 } };
+const CData PIC18F258_DATA = { "18F258", 0, 1, { 0xFD30, 0x0000 } };
+const CData PIC18F442_DATA = { "18F442", 0, 1, { 0x5DA8, 0x0000 } };
+const CData PIC18F448_DATA = { "18F448", 0, 1, { 0x5DA8, 0x0000 } };
+const CData PIC18F452_DATA = { "18F452", 0, 1, { 0x6676, 0x0000 } };
+const CData PIC18F458_DATA = { "18F458", 0, 1, { 0xF5A0, 0x0000 } };
const CData *DATA_LIST[] = {
-&PIC18F452_DATA,0
+&PIC18F242_DATA,&PIC18F248_DATA,&PIC18F252_DATA,&PIC18F258_DATA,&PIC18F442_DATA,&PIC18F448_DATA,&PIC18F452_DATA,&PIC18F458_DATA,0
};
const CData *cdata(const QString &device)
Modified: trunk/piklab_kde4/src/progs/pickit3/base/pickit3_data.h
===================================================================
--- trunk/piklab_kde4/src/progs/pickit3/base/pickit3_data.h 2012-08-12 20:03:38 UTC (rev 2949)
+++ trunk/piklab_kde4/src/progs/pickit3/base/pickit3_data.h 2012-08-16 06:30:47 UTC (rev 2950)
@@ -18,7 +18,7 @@
//-----------------------------------------------------------------------------
struct FamilyData {
const char* name;
- uint minorAlgo, debugAlgo, eraseAlgo, eraseAlgo2, flags;
+ uint minorAlgo, debugAlgo, eraseAlgo;
};
extern const FamilyData FAMILY_DATA[];
@@ -26,6 +26,7 @@
//-----------------------------------------------------------------------------
struct Data {
+ uint eraseAlgo, flags;
};
extern bool isSupported(const QString &device);
extern uint family(const QString &device);
Modified: trunk/piklab_kde4/src/progs/pickit3/pickit3_data/pickit3_data.cpp
===================================================================
--- trunk/piklab_kde4/src/progs/pickit3/pickit3_data/pickit3_data.cpp 2012-08-12 20:03:38 UTC (rev 2949)
+++ trunk/piklab_kde4/src/progs/pickit3/pickit3_data/pickit3_data.cpp 2012-08-16 06:30:47 UTC (rev 2950)
@@ -9,9 +9,9 @@
#include "progs/pickit3/base/pickit3_data.h"
const Pickit3::FamilyData Pickit3::FAMILY_DATA[] = {
- // MinorAlgo DebugAlgo EraseAlgo EraseAlgo2 Flags
- { "18FXX2_XX8", 0x01, 0x05, 0x01, 0x6676, 0 },
- { NULL, 0, 0, 0, 0, 0 }
+ // MinorAlgo DebugAlgo EraseAlgo
+ { "18FXX2_XX8", 0x01, 0x05, 0x01 },
+ { NULL, 0, 0, 0 }
};
const Pickit3::FamilyData* Pickit3::findFamilyData(const QString& name)
Modified: trunk/piklab_kde4/src/progs/pickit3/xml/CMakeLists.txt
===================================================================
--- trunk/piklab_kde4/src/progs/pickit3/xml/CMakeLists.txt 2012-08-12 20:03:38 UTC (rev 2949)
+++ trunk/piklab_kde4/src/progs/pickit3/xml/CMakeLists.txt 2012-08-16 06:30:47 UTC (rev 2950)
@@ -6,7 +6,7 @@
add_executable(xml_pickit3_parser ${xml_pickit3_parser_SRCS})
target_link_libraries(xml_pickit3_parser pickit3data
- devicelistnoui pic picbase picxml
+ coff devicelistnoui pic picbase picxml
mem24 mem24base mem24xml xmltodata devicebase common
${EXE_LIBS}
)
Modified: trunk/piklab_kde4/src/progs/pickit3/xml/xml_pickit3_parser.cpp
===================================================================
--- trunk/piklab_kde4/src/progs/pickit3/xml/xml_pickit3_parser.cpp 2012-08-12 20:03:38 UTC (rev 2949)
+++ trunk/piklab_kde4/src/progs/pickit3/xml/xml_pickit3_parser.cpp 2012-08-16 06:30:47 UTC (rev 2950)
@@ -12,6 +12,7 @@
#include "devices/base/device_group.h"
#include "devices/pic/base/pic.h"
#include "devices/pic/base/pic_prog_family.h"
+#include "coff/base/coff_data.h"
//-----------------------------------------------------------------------------
namespace Pickit3
@@ -25,6 +26,7 @@
private:
virtual uint familyIndex(const QString &family) const;
virtual void parseData(QDomElement element, Data& data);
+ virtual void outputData(const Data &data, QTextStream &s) const;
};
} // namespace
@@ -44,7 +46,20 @@
if (ddata == NULL || ddata->group().name() != "pic") qFatal("non-pic device not supported");
const Pic::Data& pdata = static_cast<const Pic::Data&>(*ddata);
if (pdata.progFamilyData() == NULL) qFatal("no prog family");
+ if (!Coff::isSupported(currentDevice())) qFatal("no coff");
+
+ bool ok;
+ data.eraseAlgo = fromHexLabel(element.attribute("erase_algo"), 4, &ok);
+ if (!ok) qFatal(QString("Incorrect erase algo: %1").arg(element.attribute("erase_algo")));
+ data.flags = fromHexLabel(element.attribute("flags"), 4, &ok);
+ if (!ok) qFatal(QString("Incorrect flags: %1").arg(element.attribute("flags")));
}
+void Pickit3::XmlToData::outputData(const Data &data, QTextStream &s) const
+{
+ s << toHexLabel(data.eraseAlgo, 4) << ", ";
+ s << toHexLabel(data.flags, 4);
+}
+
//-----------------------------------------------------------------------------
XML_MAIN(Pickit3::XmlToData)
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <az...@us...> - 2012-08-12 20:03:48
|
Revision: 2949
http://piklab.svn.sourceforge.net/piklab/?rev=2949&view=rev
Author: azhyd
Date: 2012-08-12 20:03:38 +0000 (Sun, 12 Aug 2012)
Log Message:
-----------
move dev-utils in piklab tree
Modified Paths:
--------------
trunk/piklab_kde4/src/dev-utils/CMakeLists.txt
Added Paths:
-----------
trunk/piklab_kde4/src/dev-utils/dev_diff/
trunk/piklab_kde4/src/dev-utils/dev_diff/mplab_dev_741_fix.diff
trunk/piklab_kde4/src/dev-utils/dev_diff/mplab_dev_836_fix.diff
trunk/piklab_kde4/src/dev-utils/dev_diff/mplab_dev_850_fix.diff
trunk/piklab_kde4/src/dev-utils/picp_check/
trunk/piklab_kde4/src/dev-utils/picp_check/CMakeLists.txt
trunk/piklab_kde4/src/dev-utils/picp_check/picdev.cpp
trunk/piklab_kde4/src/dev-utils/picp_check/picdev.h
trunk/piklab_kde4/src/dev-utils/picp_check/picp_check.cpp
Modified: trunk/piklab_kde4/src/dev-utils/CMakeLists.txt
===================================================================
--- trunk/piklab_kde4/src/dev-utils/CMakeLists.txt 2012-08-12 19:28:49 UTC (rev 2948)
+++ trunk/piklab_kde4/src/dev-utils/CMakeLists.txt 2012-08-12 20:03:38 UTC (rev 2949)
@@ -9,4 +9,5 @@
add_subdirectory(reg_extractor)
add_subdirectory(dev_config_check)
add_subdirectory(inc_parser)
+add_subdirectory(picp_check)
#add_subdirectory(gen_device_xml)
Added: trunk/piklab_kde4/src/dev-utils/dev_diff/mplab_dev_741_fix.diff
===================================================================
--- trunk/piklab_kde4/src/dev-utils/dev_diff/mplab_dev_741_fix.diff (rev 0)
+++ trunk/piklab_kde4/src/dev-utils/dev_diff/mplab_dev_741_fix.diff 2012-08-12 20:03:38 UTC (rev 2949)
@@ -0,0 +1,1510 @@
+diff -ub ../741_vanilla/dsPIC30F6011A.dev ./dsPIC30F6011A.dev
+--- ../741_vanilla/dsPIC30F6011A.dev 2007-04-15 16:45:30.000000000 +0200
++++ ./dsPIC30F6011A.dev 2007-04-15 17:00:28.000000000 +0200
+@@ -913,17 +913,17 @@
+ # ----------------#
+
+ sfr (key=TRISF addr=0x2de size=2 access='u u u u u u u u u rw rw rw rw rw rw rw')
+- reset (por='---------1111111' mclr='---------111111')
++ reset (por='---------1111111' mclr='---------1111111')
+ bit (names='- - - - - - - - - TRISF6 TRISF5 TRISF4 TRISF3 TRISF2 TRISF1 TRISF0')
+ bit (tag=scl names='TRISF' width='16')
+ stimulus (scl=rwb)
+ sfr (key=PORTF addr=0x2e0 size=2 access='u u u u u u u u u rw rw rw rw rw rw rw')
+- reset (por='---------xxxxxx' mclr='---------uuuuuu')
++ reset (por='---------xxxxxxx' mclr='---------uuuuuuu')
+ bit (names='- - - - - - - - - RF6 RF5 RF4 RF3 RF2 RF1 RF0')
+ bit (tag=scl names='RF' width='16')
+ stimulus (scl=rwb)
+ sfr (key=LATF addr=0x2e2 size=2 access='u u u u u u u u u rw rw rw rw rw rw rw')
+- reset (por='---------000000' mclr='---------uuuuuu')
++ reset (por='---------0000000' mclr='---------uuuuuuu')
+ bit (names='- - - - - - - - - LATF6 LATF5 LATF4 LATF3 LATF2 LATF1 LATF0')
+ bit (tag=scl names='LATF' width='16')
+ stimulus (scl=rwb)
+diff -ub ../741_vanilla/dsPIC30F6011.dev ./dsPIC30F6011.dev
+--- ../741_vanilla/dsPIC30F6011.dev 2007-04-15 16:45:30.000000000 +0200
++++ ./dsPIC30F6011.dev 2007-04-15 17:00:02.000000000 +0200
+@@ -909,17 +909,17 @@
+ # ----------------#
+
+ sfr (key=TRISF addr=0x2de size=2 access='u u u u u u u u u rw rw rw rw rw rw rw')
+- reset (por='---------1111111' mclr='---------111111')
++ reset (por='---------1111111' mclr='---------1111111')
+ bit (names='- - - - - - - - - TRISF6 TRISF5 TRISF4 TRISF3 TRISF2 TRISF1 TRISF0')
+ bit (tag=scl names='TRISF' width='16')
+ stimulus (scl=rwb)
+ sfr (key=PORTF addr=0x2e0 size=2 access='u u u u u u u u u rw rw rw rw rw rw rw')
+- reset (por='---------xxxxxx' mclr='---------uuuuuu')
++ reset (por='---------xxxxxxx' mclr='---------uuuuuuu')
+ bit (names='- - - - - - - - - RF6 RF5 RF4 RF3 RF2 RF1 RF0')
+ bit (tag=scl names='RF' width='16')
+ stimulus (scl=rwb)
+ sfr (key=LATF addr=0x2e2 size=2 access='u u u u u u u u u rw rw rw rw rw rw rw')
+- reset (por='---------000000' mclr='---------uuuuuu')
++ reset (por='---------0000000' mclr='---------uuuuuuu')
+ bit (names='- - - - - - - - - LATF6 LATF5 LATF4 LATF3 LATF2 LATF1 LATF0')
+ bit (tag=scl names='LATF' width='16')
+ stimulus (scl=rwb)
+diff -ub ../741_vanilla/dsPIC30F6012A.dev ./dsPIC30F6012A.dev
+--- ../741_vanilla/dsPIC30F6012A.dev 2007-04-15 16:45:30.000000000 +0200
++++ ./dsPIC30F6012A.dev 2007-04-15 17:00:50.000000000 +0200
+@@ -971,17 +971,17 @@
+ # ----------------#
+
+ sfr (key=TRISF addr=0x2de size=2 access='u u u u u u u u u rw rw rw rw rw rw rw')
+- reset (por='---------1111111' mclr='---------111111')
++ reset (por='---------1111111' mclr='---------1111111')
+ bit (names='- - - - - - - - - TRISF6 TRISF5 TRISF4 TRISF3 TRISF2 TRISF1 TRISF0')
+ bit (tag=scl names='TRISF' width='16')
+ stimulus (scl=rwb)
+ sfr (key=PORTF addr=0x2e0 size=2 access='u u u u u u u u u rw rw rw rw rw rw rw')
+- reset (por='---------xxxxxx' mclr='---------uuuuuu')
++ reset (por='---------xxxxxxx' mclr='---------uuuuuuu')
+ bit (names='- - - - - - - - - RF6 RF5 RF4 RF3 RF2 RF1 RF0')
+ bit (tag=scl names='RF' width='16')
+ stimulus (scl=rwb)
+ sfr (key=LATF addr=0x2e2 size=2 access='u u u u u u u u u rw rw rw rw rw rw rw')
+- reset (por='---------000000' mclr='---------uuuuuu')
++ reset (por='---------0000000' mclr='---------uuuuuuu')
+ bit (names='- - - - - - - - - LATF6 LATF5 LATF4 LATF3 LATF2 LATF1 LATF0')
+ bit (tag=scl names='LATF' width='16')
+ stimulus (scl=rwb)
+diff -ub ../741_vanilla/dsPIC30F6012.dev ./dsPIC30F6012.dev
+--- ../741_vanilla/dsPIC30F6012.dev 2007-04-15 16:45:30.000000000 +0200
++++ ./dsPIC30F6012.dev 2007-04-15 17:01:08.000000000 +0200
+@@ -966,17 +966,17 @@
+ # ----------------#
+
+ sfr (key=TRISF addr=0x2de size=2 access='u u u u u u u u u rw rw rw rw rw rw rw')
+- reset (por='---------1111111' mclr='---------111111')
++ reset (por='---------1111111' mclr='---------1111111')
+ bit (names='- - - - - - - - - TRISF6 TRISF5 TRISF4 TRISF3 TRISF2 TRISF1 TRISF0')
+ bit (tag=scl names='TRISF' width='16')
+ stimulus (scl=rwb)
+ sfr (key=PORTF addr=0x2e0 size=2 access='u u u u u u u u u rw rw rw rw rw rw rw')
+- reset (por='---------xxxxxx' mclr='---------uuuuuu')
++ reset (por='---------xxxxxxx' mclr='---------uuuuuuu')
+ bit (names='- - - - - - - - - RF6 RF5 RF4 RF3 RF2 RF1 RF0')
+ bit (tag=scl names='RF' width='16')
+ stimulus (scl=rwb)
+ sfr (key=LATF addr=0x2e2 size=2 access='u u u u u u u u u rw rw rw rw rw rw rw')
+- reset (por='---------000000' mclr='---------uuuuuu')
++ reset (por='---------0000000' mclr='---------uuuuuuu')
+ bit (names='- - - - - - - - - LATF6 LATF5 LATF4 LATF3 LATF2 LATF1 LATF0')
+ bit (tag=scl names='LATF' width='16')
+ stimulus (scl=rwb)
+diff -ub ../741_vanilla/PIC12F510.dev ./PIC12F510.dev
+--- ../741_vanilla/PIC12F510.dev 2007-04-15 16:45:31.000000000 +0200
++++ ./PIC12F510.dev 2007-04-15 17:02:10.000000000 +0200
+@@ -45,7 +45,7 @@
+ bit (names='FSR' width='8')
+ stimulus (scl=rwb regfiles=w pcfiles=rw)
+ sfr (key=OSCCAL addr=0x5 size=1 access='rw rw rw rw rw rw rw u')
+- reset (por='1111111-' mclr='1111111=')
++ reset (por='1111111-' mclr='1111111-')
+ bit (names='CAL -' width='7 1')
+ sfr (key=GPIO addr=0x6 size=1 access='u u rw rw r rw rw rw')
+ reset (por='--xxxxxx' mclr='--uuuuuu')
+@@ -61,7 +61,7 @@
+ bit (tag=scl names='ANS ADCS CHS GO_nDONE ADON' width='2 2 2 1 1')
+ stimulus (scl=rwb regfiles=w)
+ sfr (key=ADRES addr=0x9 size=1 access='rw rw rw rw rw rw rw rw')
+- reset (por='xxxxxxxxx' mclr='uuuuuuuu')
++ reset (por='xxxxxxxx' mclr='uuuuuuuu')
+ bit (names='ADRES' width='8')
+ stimulus (scl=rwb type=int regfiles=r)
+
+diff -ub ../741_vanilla/pic16c745.dev ./pic16c745.dev
+--- ../741_vanilla/pic16c745.dev 2007-04-15 16:45:31.000000000 +0200
++++ ./pic16c745.dev 2007-04-15 17:02:43.000000000 +0200
+@@ -84,7 +84,7 @@
+ bit (names='GIE PEIE TMR0IE INTE RBIE TMR0IF INTF RBIF')
+ stimulus (scl=rwb regfiles=w pcfiles=rw)
+ sfr (key=PIR1 addr=0xC size=1 access='u rw r r rw rw rw rw')
+- reset (por='-00000000' mclr='-00000000')
++ reset (por='-0000000' mclr='-0000000')
+ bit (names='- ADIF RCIF TXIF USBIF CCP1IF TMR2IF TMR1IF')
+ bit (tag=scl names='- ADIF - - USBIF CCP1IF TMR2IF TMR1IF')
+ stimulus (scl=rwb regfiles=w pcfiles=rw)
+diff -ub ../741_vanilla/PIC16F506.dev ./PIC16F506.dev
+--- ../741_vanilla/PIC16F506.dev 2007-04-15 16:45:31.000000000 +0200
++++ ./PIC16F506.dev 2007-04-15 20:57:12.000000000 +0200
+@@ -45,7 +45,7 @@
+ bit (names='FSR' width='8')
+ stimulus (scl=rwb regfiles=w pcfiles=rw)
+ sfr (key=OSCCAL addr=0x5 size=1 access='rw rw rw rw rw rw rw u')
+- reset (por='1111111-' mclr='1111111=')
++ reset (por='1111111-' mclr='1111111-')
+ bit (names='CAL -' width='7 1')
+ sfr (key=PORTB addr=0x6 size=1 access='u u rw rw r rw rw rw')
+ reset (por='--xxxxxx' mclr='--uuuuuu')
+@@ -65,7 +65,7 @@
+ bit (tag=scl names='ANS ADCS CHS GO_nDONE ADON' width='2 2 2 1 1')
+ stimulus (scl=rwb regfiles=w)
+ sfr (key=ADRES addr=0xa size=1 access='rw rw rw rw rw rw rw rw')
+- reset (por='xxxxxxxxx' mclr='uuuuuuuu')
++ reset (por='xxxxxxxx' mclr='uuuuuuuu')
+ bit (names='ADRES' width='8')
+ stimulus (scl=rwb type=int regfiles=r)
+ sfr (key=CM2CON0 addr=0xb size=1 access='r rw rw rw rw rw rw rw')
+diff -ub ../741_vanilla/pic16f631.dev ./pic16f631.dev
+--- ../741_vanilla/pic16f631.dev 2007-04-15 16:45:31.000000000 +0200
++++ ./pic16f631.dev 2007-04-15 17:06:30.000000000 +0200
+@@ -145,7 +145,7 @@
+ stimulus (scl=rwb regfiles=w)
+
+ sfr (key=PIE1 addr=0x8C size=1 access='u rw rw rw rw rw rw rw')
+- reset (por='-000000' mclr='-0000000')
++ reset (por='-0000000' mclr='-0000000')
+ bit (names='- ADIE RCIE TXIE SSPIE CCP1IE TMR2IE TMR1IE')
+ stimulus (scl=rwb regfiles=w pcfiles=rw)
+ sfr (key=PIE2 addr=0x8D size=1 access='rw rw rw rw u u u u')
+diff -ub ../741_vanilla/pic16f677.dev ./pic16f677.dev
+--- ../741_vanilla/pic16f677.dev 2007-04-15 16:45:31.000000000 +0200
++++ ./pic16f677.dev 2007-04-15 17:06:49.000000000 +0200
+@@ -170,7 +170,7 @@
+ stimulus (scl=rwb regfiles=w)
+
+ sfr (key=PIE1 addr=0x8C size=1 access='u rw rw rw rw rw rw rw')
+- reset (por='-000000' mclr='-0000000')
++ reset (por='-0000000' mclr='-0000000')
+ bit (names='- ADIE RCIE TXIE SSPIE CCP1IE TMR2IE TMR1IE')
+ stimulus (scl=rwb regfiles=w pcfiles=rw)
+ sfr (key=PIE2 addr=0x8D size=1 access='rw rw rw rw u u u u')
+diff -ub ../741_vanilla/pic16f685.dev ./pic16f685.dev
+--- ../741_vanilla/pic16f685.dev 2007-04-15 16:45:31.000000000 +0200
++++ ./pic16f685.dev 2007-04-15 17:07:08.000000000 +0200
+@@ -216,7 +216,7 @@
+ stimulus (scl=rwb regfiles=w)
+
+ sfr (key=PIE1 addr=0x8C size=1 access='u rw rw rw rw rw rw rw')
+- reset (por='-000000' mclr='-0000000')
++ reset (por='-0000000' mclr='-0000000')
+ bit (names='- ADIE RCIE TXIE SSPIE CCP1IE TMR2IE TMR1IE')
+ stimulus (scl=rwb regfiles=w pcfiles=rw)
+ sfr (key=PIE2 addr=0x8D size=1 access='rw rw rw rw u u u u')
+diff -ub ../741_vanilla/pic16f687.dev ./pic16f687.dev
+--- ../741_vanilla/pic16f687.dev 2007-04-15 16:45:31.000000000 +0200
++++ ./pic16f687.dev 2007-04-15 17:07:21.000000000 +0200
+@@ -218,7 +218,7 @@
+ stimulus (scl=rwb regfiles=w)
+
+ sfr (key=PIE1 addr=0x8C size=1 access='u rw rw rw rw rw rw rw')
+- reset (por='-000000' mclr='-0000000')
++ reset (por='-0000000' mclr='-0000000')
+ bit (names='- ADIE RCIE TXIE SSPIE CCP1IE TMR2IE TMR1IE')
+ stimulus (scl=rwb regfiles=w pcfiles=rw)
+ sfr (key=PIE2 addr=0x8D size=1 access='rw rw rw rw u u u u')
+diff -ub ../741_vanilla/pic16f689.dev ./pic16f689.dev
+--- ../741_vanilla/pic16f689.dev 2007-04-15 16:45:31.000000000 +0200
++++ ./pic16f689.dev 2007-04-15 17:07:40.000000000 +0200
+@@ -216,7 +216,7 @@
+ stimulus (scl=rwb regfiles=w)
+
+ sfr (key=PIE1 addr=0x8C size=1 access='u rw rw rw rw rw rw rw')
+- reset (por='-000000' mclr='-0000000')
++ reset (por='-0000000' mclr='-0000000')
+ bit (names='- ADIE RCIE TXIE SSPIE CCP1IE TMR2IE TMR1IE')
+ stimulus (scl=rwb regfiles=w pcfiles=rw)
+ sfr (key=PIE2 addr=0x8D size=1 access='rw rw rw rw u u u u')
+diff -ub ../741_vanilla/pic16f690.dev ./pic16f690.dev
+--- ../741_vanilla/pic16f690.dev 2007-04-15 16:45:31.000000000 +0200
++++ ./pic16f690.dev 2007-04-15 17:28:39.000000000 +0200
+@@ -214,7 +214,7 @@
+ stimulus (scl=rwb regfiles=w)
+
+ sfr (key=PIE1 addr=0x8C size=1 access='u rw rw rw rw rw rw rw')
+- reset (por='-000000' mclr='-0000000')
++ reset (por='-0000000' mclr='-0000000')
+ bit (names='- ADIE RCIE TXIE SSPIE CCP1IE TMR2IE TMR1IE')
+ stimulus (scl=rwb regfiles=w pcfiles=rw)
+ sfr (key=PIE2 addr=0x8D size=1 access='rw rw rw rw u u u u')
+diff -ub ../741_vanilla/pic18c658.dev ./pic18c658.dev
+--- ../741_vanilla/pic18c658.dev 2007-04-15 16:45:31.000000000 +0200
++++ ./pic18c658.dev 2007-04-15 17:29:17.000000000 +0200
+@@ -983,7 +983,7 @@
+ bit (names='TXSID' width='8')
+ stimulus (scl=rwb regfiles=w pcfiles=w)
+ sfr (key=TXB2CON addr=0xF20 size=1 access='u r r r rw u rw rw')
+- reset (por='-00000-00' mclr='-0000-00')
++ reset (por='-0000-00' mclr='-0000-00')
+ bit (names='- TXABT TXLARB TXERR TXREQ - TXPRI' width='1 1 1 1 1 1 2')
+ stimulus (scl=rwb regfiles=w pcfiles=rw)
+ sfr (key=RXM1EIDL addr=0xF1F size=1 access='rw rw rw rw rw rw rw rw')
+diff -ub ../741_vanilla/pic18c858.dev ./pic18c858.dev
+--- ../741_vanilla/pic18c858.dev 2007-04-15 16:45:31.000000000 +0200
++++ ./pic18c858.dev 2007-04-15 17:29:31.000000000 +0200
+@@ -1039,7 +1039,7 @@
+ bit (names='TXSID' width='8')
+ stimulus (scl=rwb regfiles=w pcfiles=w)
+ sfr (key=TXB2CON addr=0xF20 size=1 access='u r r r rw u rw rw')
+- reset (por='-00000-00' mclr='-0000-00')
++ reset (por='-0000-00' mclr='-0000-00')
+ bit (names='- TXABT TXLARB TXERR TXREQ - TXPRI' width='1 1 1 1 1 1 2')
+ stimulus (scl=rwb regfiles=w pcfiles=rw)
+ sfr (key=RXM1EIDL addr=0xF1F size=1 access='rw rw rw rw rw rw rw rw')
+diff -ub ../741_vanilla/PIC18F1230.dev ./PIC18F1230.dev
+--- ../741_vanilla/PIC18F1230.dev 2007-04-15 16:45:31.000000000 +0200
++++ ./PIC18F1230.dev 2007-04-15 21:01:55.000000000 +0200
+@@ -265,12 +265,12 @@
+ reset (por='---1----' mclr='---1----')
+ bit (names='- - - PTIP - - - -')
+ stimulus (scl=rwb regfiles=w pcfiles=rw)
+-sfr (key=PIR3 addr=0xFA4 size=1 access='rw u u rw u rw rw u')
++sfr (key=PIR3 addr=0xFA4 size=1 access='u u u rw u u u u')
+ reset (por='---0----' mclr='---0----')
+ bit (names='- - - PTIE - - - -')
+ stimulus (scl=rwb regfiles=w pcfiles=rw)
+
+-sfr (key=PIE3 addr=0xFA3 size=1 access='rw u u rw u rw rw u')
++sfr (key=PIE3 addr=0xFA3 size=1 access='u u u rw u u u u')
+ reset (por='---0----' mclr='---0----')
+ bit (names='- - - PTIF - - - -')
+ stimulus (scl=rwb regfiles=w pcfiles=rw)
+diff -ub ../741_vanilla/PIC18F1330.dev ./PIC18F1330.dev
+--- ../741_vanilla/PIC18F1330.dev 2007-04-15 16:45:31.000000000 +0200
++++ ./PIC18F1330.dev 2007-04-15 21:32:43.000000000 +0200
+@@ -264,12 +264,12 @@
+ reset (por='---1----' mclr='---1----')
+ bit (names='- - - PTIP - - - -')
+ stimulus (scl=rwb regfiles=w pcfiles=rw)
+-sfr (key=PIR3 addr=0xFA4 size=1 access='rw u u rw u rw rw u')
++sfr (key=PIR3 addr=0xFA4 size=1 access='u u u rw u u u u')
+ reset (por='---0----' mclr='---0----')
+ bit (names='- - - PTIE - - - -')
+ stimulus (scl=rwb regfiles=w pcfiles=rw)
+
+-sfr (key=PIE3 addr=0xFA3 size=1 access='rw u u rw u rw rw u')
++sfr (key=PIE3 addr=0xFA3 size=1 access='u u u rw u u u u')
+ reset (por='---0----' mclr='---0----')
+ bit (names='- - - PTIF - - - -')
+ stimulus (scl=rwb regfiles=w pcfiles=rw)
+diff -ub ../741_vanilla/PIC18F2480.dev ./PIC18F2480.dev
+--- ../741_vanilla/PIC18F2480.dev 2007-04-15 16:45:31.000000000 +0200
++++ ./PIC18F2480.dev 2007-04-15 21:33:16.000000000 +0200
+@@ -814,7 +814,7 @@
+ bit (names='SID10 SID9 SID8 SID7 SID6 SID5 SID4 SID3')
+
+ sfr (key=TXB0CON addr=0xF40 size=1 access='rw rw rw rw rw u rw rw')
+- rset (por='xxxxx-xx' mclr'uuuuu-uu')
++ reset (por='xxxxx-xx' mclr='uuuuu-uu')
+ bit (names='TXBIF TXABT TXLARB TXERR TXREQ - TXBRI' width='1 1 1 1 1 1 2')
+
+ # There is yet another shadow of CANCON and CANSTAT here at addresses
+diff -ub ../741_vanilla/PIC18F2580.dev ./PIC18F2580.dev
+--- ../741_vanilla/PIC18F2580.dev 2007-04-15 16:45:31.000000000 +0200
++++ ./PIC18F2580.dev 2007-04-15 21:33:34.000000000 +0200
+@@ -814,7 +814,7 @@
+ bit (names='SID10 SID9 SID8 SID7 SID6 SID5 SID4 SID3')
+
+ sfr (key=TXB0CON addr=0xF40 size=1 access='rw rw rw rw rw u rw rw')
+- rset (por='xxxxx-xx' mclr'uuuuu-uu')
++ reset (por='xxxxx-xx' mclr='uuuuu-uu')
+ bit (names='TXBIF TXABT TXLARB TXERR TXREQ - TXBRI' width='1 1 1 1 1 1 2')
+
+ # There is yet another shadow of CANCON and CANSTAT here at addresses
+diff -ub ../741_vanilla/PIC18F2585.dev ./PIC18F2585.dev
+--- ../741_vanilla/PIC18F2585.dev 2007-04-15 16:45:31.000000000 +0200
++++ ./PIC18F2585.dev 2007-04-15 21:02:48.000000000 +0200
+@@ -975,7 +975,7 @@
+ bit (names='TXSID' width='8')
+ stimulus (scl=rwb regfiles=w pcfiles=w)
+ sfr (key=TXB2CON addr=0xF20 size=1 access='rc r r r rw u rw rw')
+- reset (por='000000-00' mclr='00000-00')
++ reset (por='00000-00' mclr='00000-00')
+ bit (names='TXBIF TXABT TXLARB TXERR TXREQ - TXPRI' width='1 1 1 1 1 1 2')
+ stimulus (scl=rwb regfiles=w pcfiles=rw)
+
+diff -ub ../741_vanilla/pic18f2680.dev ./pic18f2680.dev
+--- ../741_vanilla/pic18f2680.dev 2007-04-15 16:45:31.000000000 +0200
++++ ./pic18f2680.dev 2007-04-15 21:09:23.000000000 +0200
+@@ -974,7 +974,7 @@
+ bit (names='TXSID' width='8')
+ stimulus (scl=rwb regfiles=w pcfiles=w)
+ sfr (key=TXB2CON addr=0xF20 size=1 access='rc r r r rw u rw rw')
+- reset (por='000000-00' mclr='00000-00')
++ reset (por='00000-00' mclr='00000-00')
+ bit (names='TXBIF TXABT TXLARB TXERR TXREQ - TXPRI' width='1 1 1 1 1 1 2')
+ stimulus (scl=rwb regfiles=w pcfiles=rw)
+
+diff -ub ../741_vanilla/pic18f2682.dev ./pic18f2682.dev
+--- ../741_vanilla/pic18f2682.dev 2007-04-15 16:45:31.000000000 +0200
++++ ./pic18f2682.dev 2007-04-15 21:09:54.000000000 +0200
+@@ -972,7 +972,7 @@
+ bit (names='TXSID' width='8')
+ stimulus (scl=rwb regfiles=w pcfiles=w)
+ sfr (key=TXB2CON addr=0xF20 size=1 access='rc r r r rw u rw rw')
+- reset (por='000000-00' mclr='00000-00')
++ reset (por='00000-00' mclr='00000-00')
+ bit (names='TXBIF TXABT TXLARB TXERR TXREQ - TXPRI' width='1 1 1 1 1 1 2')
+ stimulus (scl=rwb regfiles=w pcfiles=rw)
+
+diff -ub ../741_vanilla/pic18f2685.dev ./pic18f2685.dev
+--- ../741_vanilla/pic18f2685.dev 2007-04-15 16:45:31.000000000 +0200
++++ ./pic18f2685.dev 2007-04-15 21:10:13.000000000 +0200
+@@ -972,7 +972,7 @@
+ bit (names='TXSID' width='8')
+ stimulus (scl=rwb regfiles=w pcfiles=w)
+ sfr (key=TXB2CON addr=0xF20 size=1 access='rc r r r rw u rw rw')
+- reset (por='000000-00' mclr='00000-00')
++ reset (por='00000-00' mclr='00000-00')
+ bit (names='TXBIF TXABT TXLARB TXERR TXREQ - TXPRI' width='1 1 1 1 1 1 2')
+ stimulus (scl=rwb regfiles=w pcfiles=rw)
+
+diff -ub ../741_vanilla/PIC18F4480.dev ./PIC18F4480.dev
+--- ../741_vanilla/PIC18F4480.dev 2007-04-15 16:45:31.000000000 +0200
++++ ./PIC18F4480.dev 2007-04-15 21:33:56.000000000 +0200
+@@ -814,7 +814,7 @@
+ bit (names='SID10 SID9 SID8 SID7 SID6 SID5 SID4 SID3')
+
+ sfr (key=TXB0CON addr=0xF40 size=1 access='rw rw rw rw rw u rw rw')
+- rset (por='xxxxx-xx' mclr'uuuuu-uu')
++ reset (por='xxxxx-xx' mclr='uuuuu-uu')
+ bit (names='TXBIF TXABT TXLARB TXERR TXREQ - TXBRI' width='1 1 1 1 1 1 2')
+
+ # There is yet another shadow of CANCON and CANSTAT here at addresses
+diff -ub ../741_vanilla/PIC18F4580.dev ./PIC18F4580.dev
+--- ../741_vanilla/PIC18F4580.dev 2007-04-15 16:45:31.000000000 +0200
++++ ./PIC18F4580.dev 2007-04-15 21:34:16.000000000 +0200
+@@ -819,7 +819,7 @@
+ bit (names='SID10 SID9 SID8 SID7 SID6 SID5 SID4 SID3')
+
+ sfr (key=TXB0CON addr=0xF40 size=1 access='rw rw rw rw rw u rw rw')
+- rset (por='xxxxx-xx' mclr'uuuuu-uu')
++ reset (por='xxxxx-xx' mclr='uuuuu-uu')
+ bit (names='TXBIF TXABT TXLARB TXERR TXREQ - TXBRI' width='1 1 1 1 1 1 2')
+
+ # There is yet another shadow of CANCON and CANSTAT here at addresses
+diff -ub ../741_vanilla/PIC18F4585.dev ./PIC18F4585.dev
+--- ../741_vanilla/PIC18F4585.dev 2007-04-15 16:45:31.000000000 +0200
++++ ./PIC18F4585.dev 2007-04-15 21:28:57.000000000 +0200
+@@ -610,7 +610,7 @@
+ sfr (key=CMCON addr=0xFB4 size=1 access='r r rw rw rw rw rw rw')
+ # There is only one reference to reset values in DOS-00451a, but they are not
+ # the same as those for the 8680 parts. They could be wrong. (7-17-03)
+- reset (por='0000111' mclr='00000111')
++ reset (por='00000111' mclr='00000111')
+ bit (names='C2OUT C1OUT C2INV C1INV CIS CM' width='1 1 1 1 1 3')
+ stimulus (scl=rwb regfiles=w)
+
+@@ -1041,7 +1041,7 @@
+ bit (names='TXSID' width='8')
+ stimulus (scl=rwb regfiles=w pcfiles=w)
+ sfr (key=TXB2CON addr=0xF20 size=1 access='rc r r r rw u rw rw')
+- reset (por='000000-00' mclr='00000-00')
++ reset (por='00000-00' mclr='00000-00')
+ bit (names='TXBIF TXABT TXLARB TXERR TXREQ - TXPRI' width='1 1 1 1 1 1 2')
+ stimulus (scl=rwb regfiles=w pcfiles=rw)
+
+diff -ub ../741_vanilla/pic18f4680.dev ./pic18f4680.dev
+--- ../741_vanilla/pic18f4680.dev 2007-04-15 16:45:31.000000000 +0200
++++ ./pic18f4680.dev 2007-04-15 21:29:30.000000000 +0200
+@@ -610,7 +610,7 @@
+ sfr (key=CMCON addr=0xFB4 size=1 access='r r rw rw rw rw rw rw')
+ # There is only one reference to reset values in DOS-00451a, but they are not
+ # the same as those for the 8680 parts. They could be wrong. (7-17-03)
+- reset (por='0000111' mclr='00000111')
++ reset (por='00000111' mclr='00000111')
+ bit (names='C2OUT C1OUT C2INV C1INV CIS CM' width='1 1 1 1 1 3')
+ stimulus (scl=rwb regfiles=w)
+
+@@ -1041,7 +1041,7 @@
+ bit (names='TXSID' width='8')
+ stimulus (scl=rwb regfiles=w pcfiles=w)
+ sfr (key=TXB2CON addr=0xF20 size=1 access='rc r r r rw u rw rw')
+- reset (por='000000-00' mclr='00000-00')
++ reset (por='00000-00' mclr='00000-00')
+ bit (names='TXBIF TXABT TXLARB TXERR TXREQ - TXPRI' width='1 1 1 1 1 1 2')
+ stimulus (scl=rwb regfiles=w pcfiles=rw)
+
+diff -ub ../741_vanilla/pic18f4682.dev ./pic18f4682.dev
+--- ../741_vanilla/pic18f4682.dev 2007-04-15 16:45:31.000000000 +0200
++++ ./pic18f4682.dev 2007-04-15 21:29:55.000000000 +0200
+@@ -607,7 +607,7 @@
+ sfr (key=CMCON addr=0xFB4 size=1 access='r r rw rw rw rw rw rw')
+ # There is only one reference to reset values in DOS-00451a, but they are not
+ # the same as those for the 8680 parts. They could be wrong. (7-17-03)
+- reset (por='0000000' mclr='00000000')
++ reset (por='00000000' mclr='00000000')
+ bit (names='C2OUT C1OUT C2INV C1INV CIS CM' width='1 1 1 1 1 3')
+ stimulus (scl=rwb regfiles=w)
+
+@@ -1038,7 +1038,7 @@
+ bit (names='TXSID' width='8')
+ stimulus (scl=rwb regfiles=w pcfiles=w)
+ sfr (key=TXB2CON addr=0xF20 size=1 access='rc r r r rw u rw rw')
+- reset (por='000000-00' mclr='00000-00')
++ reset (por='00000-00' mclr='00000-00')
+ bit (names='TXBIF TXABT TXLARB TXERR TXREQ - TXPRI' width='1 1 1 1 1 1 2')
+ stimulus (scl=rwb regfiles=w pcfiles=rw)
+
+diff -ub ../741_vanilla/pic18f4685.dev ./pic18f4685.dev
+--- ../741_vanilla/pic18f4685.dev 2007-04-15 16:45:31.000000000 +0200
++++ ./pic18f4685.dev 2007-04-15 21:30:20.000000000 +0200
+@@ -607,7 +607,7 @@
+ sfr (key=CMCON addr=0xFB4 size=1 access='r r rw rw rw rw rw rw')
+ # There is only one reference to reset values in DOS-00451a, but they are not
+ # the same as those for the 8680 parts. They could be wrong. (7-17-03)
+- reset (por='0000000' mclr='00000000')
++ reset (por='00000000' mclr='00000000')
+ bit (names='C2OUT C1OUT C2INV C1INV CIS CM' width='1 1 1 1 1 3')
+ stimulus (scl=rwb regfiles=w)
+
+@@ -1038,7 +1038,7 @@
+ bit (names='TXSID' width='8')
+ stimulus (scl=rwb regfiles=w pcfiles=w)
+ sfr (key=TXB2CON addr=0xF20 size=1 access='rc r r r rw u rw rw')
+- reset (por='000000-00' mclr='00000-00')
++ reset (por='00000-00' mclr='00000-00')
+ bit (names='TXBIF TXABT TXLARB TXERR TXREQ - TXPRI' width='1 1 1 1 1 1 2')
+ stimulus (scl=rwb regfiles=w pcfiles=rw)
+
+diff -ub ../741_vanilla/pic18f6585.dev ./pic18f6585.dev
+--- ../741_vanilla/pic18f6585.dev 2007-04-15 16:45:31.000000000 +0200
++++ ./pic18f6585.dev 2007-04-15 21:30:41.000000000 +0200
+@@ -1072,7 +1072,7 @@
+ bit (names='TXSID' width='8')
+ stimulus (scl=rwb regfiles=w pcfiles=w)
+ sfr (key=TXB2CON addr=0xF20 size=1 access='rc r r r rw u rw rw')
+- reset (por='000000-00' mclr='00000-00')
++ reset (por='00000-00' mclr='00000-00')
+ bit (names='TXBIF TXABT TXLARB TXERR TXREQ - TXPRI' width='1 1 1 1 1 1 2')
+ stimulus (scl=rwb regfiles=w pcfiles=rw)
+
+diff -ub ../741_vanilla/PIC18F6680.dev ./PIC18F6680.dev
+--- ../741_vanilla/PIC18F6680.dev 2007-04-15 16:45:31.000000000 +0200
++++ ./PIC18F6680.dev 2007-04-15 21:30:58.000000000 +0200
+@@ -1072,7 +1072,7 @@
+ bit (names='TXSID' width='8')
+ stimulus (scl=rwb regfiles=w pcfiles=w)
+ sfr (key=TXB2CON addr=0xF20 size=1 access='rc r r r rw u rw rw')
+- reset (por='000000-00' mclr='00000-00')
++ reset (por='00000-00' mclr='00000-00')
+ bit (names='TXBIF TXABT TXLARB TXERR TXREQ - TXPRI' width='1 1 1 1 1 1 2')
+ stimulus (scl=rwb regfiles=w pcfiles=rw)
+
+diff -ub ../741_vanilla/PIC18F66J60.dev ./PIC18F66J60.dev
+--- ../741_vanilla/PIC18F66J60.dev 2007-04-15 16:45:31.000000000 +0200
++++ ./PIC18F66J60.dev 2007-04-17 06:57:37.000000000 +0200
+@@ -852,7 +852,7 @@
+ bit (names='- - - EDMADSTH' width='1 1 1 5')
+ stimulus (scl=rwb)
+ sfr (key=EDMADSTL addr=0xEF4 size=1 access='rw rw rw rw rw rw rw rw')
+- reset (por='00000000' mclr='000000000')
++ reset (por='00000000' mclr='00000000')
+ bit (names='EDMADSTL' width='8')
+ stimulus (scl=rwb)
+ sfr (key=EDMANDH addr=0xEF3 size=1 access='u u u rw rw rw rw rw')
+@@ -860,7 +860,7 @@
+ bit (names='- - - EDMANDH' width='1 1 1 5')
+ stimulus (scl=rwb)
+ sfr (key=EDMANDL addr=0xEF2 size=1 access='rw rw rw rw rw rw rw rw')
+- reset (por='00000000' mclr='000000000')
++ reset (por='00000000' mclr='00000000')
+ bit (names='EDMANDL' width='8')
+ stimulus (scl=rwb)
+ sfr (key=EDMASTH addr=0xEF1 size=1 access='u u u rw rw rw rw rw')
+@@ -868,7 +868,7 @@
+ bit (names='- - - EDMASTH' width='1 1 1 5')
+ stimulus (scl=rwb)
+ sfr (key=EDMASTL addr=0xEF0 size=1 access='rw rw rw rw rw rw rw rw')
+- reset (por='00000000' mclr='000000000')
++ reset (por='00000000' mclr='00000000')
+ bit (names='EDMASTL' width='8')
+ stimulus (scl=rwb)
+ sfr (key=ERXWRPTH addr=0xEEF size=1 access='u u u rw rw rw rw rw')
+@@ -876,7 +876,7 @@
+ bit (names='- - - ERXWRPTH' width='1 1 1 5')
+ stimulus (scl=rwb)
+ sfr (key=ERXWRPTL addr=0xEEE size=1 access='rw rw rw rw rw rw rw rw')
+- reset (por='00000000' mclr='000000000')
++ reset (por='00000000' mclr='00000000')
+ bit (names='ERXWRPTL' width='8')
+ stimulus (scl=rwb)
+ sfr (key=ERXRDPTH addr=0xEED size=1 access='u u u rw rw rw rw rw')
+@@ -884,7 +884,7 @@
+ bit (names='- - - ERXRDPTH' width='1 1 1 5')
+ stimulus (scl=rwb)
+ sfr (key=ERXRDPTL addr=0xEEC size=1 access='rw rw rw rw rw rw rw rw')
+- reset (por='11111010' mclr='111110101')
++ reset (por='11111010' mclr='11111010')
+ bit (names='ERXRDPTL' width='8')
+ stimulus (scl=rwb)
+ sfr (key=ERXNDH addr=0xEEB size=1 access='u u u rw rw rw rw rw')
+@@ -892,7 +892,7 @@
+ bit (names='- - - ERXNDH' width='1 1 1 5')
+ stimulus (scl=rwb)
+ sfr (key=ERXNDL addr=0xEEA size=1 access='rw rw rw rw rw rw rw rw')
+- reset (por='11111111' mclr='111111111')
++ reset (por='11111111' mclr='11111111')
+ bit (names='ERXNDL' width='8')
+ stimulus (scl=rwb)
+ sfr (key=ERXSTH addr=0xEE9 size=1 access='u u u rw rw rw rw rw')
+@@ -900,7 +900,7 @@
+ bit (names='- - - ERXSTH' width='1 1 1 5')
+ stimulus (scl=rwb)
+ sfr (key=ERXSTL addr=0xEE8 size=1 access='rw rw rw rw rw rw rw rw')
+- reset (por='11111010' mclr='111111010')
++ reset (por='11111010' mclr='11111010')
+ bit (names='ERXSTL' width='8')
+ stimulus (scl=rwb)
+ sfr (key=ETXNDH addr=0xEE7 size=1 access='u u u rw rw rw rw rw')
+@@ -908,7 +908,7 @@
+ bit (names='- - - ETXNDH' width='1 1 1 5')
+ stimulus (scl=rwb)
+ sfr (key=ETXNDL addr=0xEE6 size=1 access='rw rw rw rw rw rw rw rw')
+- reset (por='00000000' mclr='000000000')
++ reset (por='00000000' mclr='00000000')
+ bit (names='ETXNDL' width='8')
+ stimulus (scl=rwb)
+ sfr (key=ETXSTH addr=0xEE5 size=1 access='u u u rw rw rw rw rw')
+@@ -916,7 +916,7 @@
+ bit (names='- - - ETXSTH' width='1 1 1 5')
+ stimulus (scl=rwb)
+ sfr (key=ETXSTL addr=0xEE4 size=1 access='rw rw rw rw rw rw rw rw')
+- reset (por='00000000' mclr='000000000')
++ reset (por='00000000' mclr='00000000')
+ bit (names='ETXSTL' width='8')
+ stimulus (scl=rwb)
+ sfr (key=EWRPTH addr=0xEE3 size=1 access='u u u rw rw rw rw rw')
+@@ -924,7 +924,7 @@
+ bit (names='- - - EWRPTH' width='1 1 1 5')
+ stimulus (scl=rwb)
+ sfr (key=EWRPTL addr=0xEE2 size=1 access='rw rw rw rw rw rw rw rw')
+- reset (por='00000000' mclr='000000000')
++ reset (por='00000000' mclr='00000000')
+ bit (names='EWRPTL' width='8')
+ stimulus (scl=rwb)
+ sfr (key=EPKTCNT addr=0xED9 size=1 access='r r r r r r r r')
+@@ -940,7 +940,7 @@
+ bit (names='- - - EPMOH' width='1 1 1 5')
+ stimulus (scl=rwb)
+ sfr (key=EPMOL addr=0xED4 size=1 access='rw rw rw rw rw rw rw rw')
+- reset (por='00000000' mclr='000000000')
++ reset (por='00000000' mclr='00000000')
+ bit (names='EPMOL' width='8')
+ stimulus (scl=rwb)
+ sfr (key=EPMCSH addr=0xED1 size=1 access='rw rw rw rw rw rw rw rw')
+@@ -1036,7 +1036,7 @@
+ bit (names='- - - MIREGADR' width='1 1 1 5')
+ stimulus (scl=rwb)
+ sfr (key=MICMD addr=0xEB2 size=1 access='u u u u u u rw rw')
+- reset (por='------00' mclr='-------00')
++ reset (por='------00' mclr='------00')
+ bit (names='- - - - - - MIISCAN MIIRD' width='1 1 1 1 1 1 1 1')
+ stimulus (scl=rwb)
+ sfr (key=MICON addr=0xEB1 size=1 access='rw u u u u u u u')
+diff -ub ../741_vanilla/PIC18F66J65.dev ./PIC18F66J65.dev
+--- ../741_vanilla/PIC18F66J65.dev 2007-04-15 16:45:31.000000000 +0200
++++ ./PIC18F66J65.dev 2007-04-17 07:00:52.000000000 +0200
+@@ -852,7 +852,7 @@
+ bit (names='- - - EDMADSTH' width='1 1 1 5')
+ stimulus (scl=rwb)
+ sfr (key=EDMADSTL addr=0xEF4 size=1 access='rw rw rw rw rw rw rw rw')
+- reset (por='00000000' mclr='000000000')
++ reset (por='00000000' mclr='00000000')
+ bit (names='EDMADSTL' width='8')
+ stimulus (scl=rwb)
+ sfr (key=EDMANDH addr=0xEF3 size=1 access='u u u rw rw rw rw rw')
+@@ -860,7 +860,7 @@
+ bit (names='- - - EDMANDH' width='1 1 1 5')
+ stimulus (scl=rwb)
+ sfr (key=EDMANDL addr=0xEF2 size=1 access='rw rw rw rw rw rw rw rw')
+- reset (por='00000000' mclr='000000000')
++ reset (por='00000000' mclr='00000000')
+ bit (names='EDMANDL' width='8')
+ stimulus (scl=rwb)
+ sfr (key=EDMASTH addr=0xEF1 size=1 access='u u u rw rw rw rw rw')
+@@ -868,7 +868,7 @@
+ bit (names='- - - EDMASTH' width='1 1 1 5')
+ stimulus (scl=rwb)
+ sfr (key=EDMASTL addr=0xEF0 size=1 access='rw rw rw rw rw rw rw rw')
+- reset (por='00000000' mclr='000000000')
++ reset (por='00000000' mclr='00000000')
+ bit (names='EDMASTL' width='8')
+ stimulus (scl=rwb)
+ sfr (key=ERXWRPTH addr=0xEEF size=1 access='u u u rw rw rw rw rw')
+@@ -876,7 +876,7 @@
+ bit (names='- - - ERXWRPTH' width='1 1 1 5')
+ stimulus (scl=rwb)
+ sfr (key=ERXWRPTL addr=0xEEE size=1 access='rw rw rw rw rw rw rw rw')
+- reset (por='00000000' mclr='000000000')
++ reset (por='00000000' mclr='00000000')
+ bit (names='ERXWRPTL' width='8')
+ stimulus (scl=rwb)
+ sfr (key=ERXRDPTH addr=0xEED size=1 access='u u u rw rw rw rw rw')
+@@ -884,7 +884,7 @@
+ bit (names='- - - ERXRDPTH' width='1 1 1 5')
+ stimulus (scl=rwb)
+ sfr (key=ERXRDPTL addr=0xEEC size=1 access='rw rw rw rw rw rw rw rw')
+- reset (por='11111010' mclr='111110101')
++ reset (por='11111010' mclr='11111010')
+ bit (names='ERXRDPTL' width='8')
+ stimulus (scl=rwb)
+ sfr (key=ERXNDH addr=0xEEB size=1 access='u u u rw rw rw rw rw')
+@@ -892,7 +892,7 @@
+ bit (names='- - - ERXNDH' width='1 1 1 5')
+ stimulus (scl=rwb)
+ sfr (key=ERXNDL addr=0xEEA size=1 access='rw rw rw rw rw rw rw rw')
+- reset (por='11111111' mclr='111111111')
++ reset (por='11111111' mclr='11111111')
+ bit (names='ERXNDL' width='8')
+ stimulus (scl=rwb)
+ sfr (key=ERXSTH addr=0xEE9 size=1 access='u u u rw rw rw rw rw')
+@@ -900,7 +900,7 @@
+ bit (names='- - - ERXSTH' width='1 1 1 5')
+ stimulus (scl=rwb)
+ sfr (key=ERXSTL addr=0xEE8 size=1 access='rw rw rw rw rw rw rw rw')
+- reset (por='11111010' mclr='111111010')
++ reset (por='11111010' mclr='11111010')
+ bit (names='ERXSTL' width='8')
+ stimulus (scl=rwb)
+ sfr (key=ETXNDH addr=0xEE7 size=1 access='u u u rw rw rw rw rw')
+@@ -908,7 +908,7 @@
+ bit (names='- - - ETXNDH' width='1 1 1 5')
+ stimulus (scl=rwb)
+ sfr (key=ETXNDL addr=0xEE6 size=1 access='rw rw rw rw rw rw rw rw')
+- reset (por='00000000' mclr='000000000')
++ reset (por='00000000' mclr='00000000')
+ bit (names='ETXNDL' width='8')
+ stimulus (scl=rwb)
+ sfr (key=ETXSTH addr=0xEE5 size=1 access='u u u rw rw rw rw rw')
+@@ -916,7 +916,7 @@
+ bit (names='- - - ETXSTH' width='1 1 1 5')
+ stimulus (scl=rwb)
+ sfr (key=ETXSTL addr=0xEE4 size=1 access='rw rw rw rw rw rw rw rw')
+- reset (por='00000000' mclr='000000000')
++ reset (por='00000000' mclr='00000000')
+ bit (names='ETXSTL' width='8')
+ stimulus (scl=rwb)
+ sfr (key=EWRPTH addr=0xEE3 size=1 access='u u u rw rw rw rw rw')
+@@ -924,7 +924,7 @@
+ bit (names='- - - EWRPTH' width='1 1 1 5')
+ stimulus (scl=rwb)
+ sfr (key=EWRPTL addr=0xEE2 size=1 access='rw rw rw rw rw rw rw rw')
+- reset (por='00000000' mclr='000000000')
++ reset (por='00000000' mclr='00000000')
+ bit (names='EWRPTL' width='8')
+ stimulus (scl=rwb)
+ sfr (key=EPKTCNT addr=0xED9 size=1 access='r r r r r r r r')
+@@ -940,7 +940,7 @@
+ bit (names='- - - EPMOH' width='1 1 1 5')
+ stimulus (scl=rwb)
+ sfr (key=EPMOL addr=0xED4 size=1 access='rw rw rw rw rw rw rw rw')
+- reset (por='00000000' mclr='000000000')
++ reset (por='00000000' mclr='00000000')
+ bit (names='EPMOL' width='8')
+ stimulus (scl=rwb)
+ sfr (key=EPMCSH addr=0xED1 size=1 access='rw rw rw rw rw rw rw rw')
+@@ -1036,7 +1036,7 @@
+ bit (names='- - - MIREGADR' width='1 1 1 5')
+ stimulus (scl=rwb)
+ sfr (key=MICMD addr=0xEB2 size=1 access='u u u u u u rw rw')
+- reset (por='------00' mclr='-------00')
++ reset (por='------00' mclr='------00')
+ bit (names='- - - - - - MIISCAN MIIRD' width='1 1 1 1 1 1 1 1')
+ stimulus (scl=rwb)
+ sfr (key=MICON addr=0xEB1 size=1 access='rw u u u u u u u')
+diff -ub ../741_vanilla/PIC18F67J60.dev ./PIC18F67J60.dev
+--- ../741_vanilla/PIC18F67J60.dev 2007-04-15 16:45:31.000000000 +0200
++++ ./PIC18F67J60.dev 2007-04-17 07:07:13.000000000 +0200
+@@ -851,7 +851,7 @@
+ bit (names='- - - EDMADSTH' width='1 1 1 5')
+ stimulus (scl=rwb)
+ sfr (key=EDMADSTL addr=0xEF4 size=1 access='rw rw rw rw rw rw rw rw')
+- reset (por='00000000' mclr='000000000')
++ reset (por='00000000' mclr='00000000')
+ bit (names='EDMADSTL' width='8')
+ stimulus (scl=rwb)
+ sfr (key=EDMANDH addr=0xEF3 size=1 access='u u u rw rw rw rw rw')
+@@ -859,7 +859,7 @@
+ bit (names='- - - EDMANDH' width='1 1 1 5')
+ stimulus (scl=rwb)
+ sfr (key=EDMANDL addr=0xEF2 size=1 access='rw rw rw rw rw rw rw rw')
+- reset (por='00000000' mclr='000000000')
++ reset (por='00000000' mclr='00000000')
+ bit (names='EDMANDL' width='8')
+ stimulus (scl=rwb)
+ sfr (key=EDMASTH addr=0xEF1 size=1 access='u u u rw rw rw rw rw')
+@@ -867,7 +867,7 @@
+ bit (names='- - - EDMASTH' width='1 1 1 5')
+ stimulus (scl=rwb)
+ sfr (key=EDMASTL addr=0xEF0 size=1 access='rw rw rw rw rw rw rw rw')
+- reset (por='00000000' mclr='000000000')
++ reset (por='00000000' mclr='00000000')
+ bit (names='EDMASTL' width='8')
+ stimulus (scl=rwb)
+ sfr (key=ERXWRPTH addr=0xEEF size=1 access='u u u rw rw rw rw rw')
+@@ -875,7 +875,7 @@
+ bit (names='- - - ERXWRPTH' width='1 1 1 5')
+ stimulus (scl=rwb)
+ sfr (key=ERXWRPTL addr=0xEEE size=1 access='rw rw rw rw rw rw rw rw')
+- reset (por='00000000' mclr='000000000')
++ reset (por='00000000' mclr='00000000')
+ bit (names='ERXWRPTL' width='8')
+ stimulus (scl=rwb)
+ sfr (key=ERXRDPTH addr=0xEED size=1 access='u u u rw rw rw rw rw')
+@@ -883,7 +883,7 @@
+ bit (names='- - - ERXRDPTH' width='1 1 1 5')
+ stimulus (scl=rwb)
+ sfr (key=ERXRDPTL addr=0xEEC size=1 access='rw rw rw rw rw rw rw rw')
+- reset (por='11111010' mclr='111110101')
++ reset (por='11111010' mclr='11111010')
+ bit (names='ERXRDPTL' width='8')
+ stimulus (scl=rwb)
+ sfr (key=ERXNDH addr=0xEEB size=1 access='u u u rw rw rw rw rw')
+@@ -891,7 +891,7 @@
+ bit (names='- - - ERXNDH' width='1 1 1 5')
+ stimulus (scl=rwb)
+ sfr (key=ERXNDL addr=0xEEA size=1 access='rw rw rw rw rw rw rw rw')
+- reset (por='11111111' mclr='111111111')
++ reset (por='11111111' mclr='11111111')
+ bit (names='ERXNDL' width='8')
+ stimulus (scl=rwb)
+ sfr (key=ERXSTH addr=0xEE9 size=1 access='u u u rw rw rw rw rw')
+@@ -899,7 +899,7 @@
+ bit (names='- - - ERXSTH' width='1 1 1 5')
+ stimulus (scl=rwb)
+ sfr (key=ERXSTL addr=0xEE8 size=1 access='rw rw rw rw rw rw rw rw')
+- reset (por='11111010' mclr='111111010')
++ reset (por='11111010' mclr='11111010')
+ bit (names='ERXSTL' width='8')
+ stimulus (scl=rwb)
+ sfr (key=ETXNDH addr=0xEE7 size=1 access='u u u rw rw rw rw rw')
+@@ -907,7 +907,7 @@
+ bit (names='- - - ETXNDH' width='1 1 1 5')
+ stimulus (scl=rwb)
+ sfr (key=ETXNDL addr=0xEE6 size=1 access='rw rw rw rw rw rw rw rw')
+- reset (por='00000000' mclr='000000000')
++ reset (por='00000000' mclr='00000000')
+ bit (names='ETXNDL' width='8')
+ stimulus (scl=rwb)
+ sfr (key=ETXSTH addr=0xEE5 size=1 access='u u u rw rw rw rw rw')
+@@ -915,7 +915,7 @@
+ bit (names='- - - ETXSTH' width='1 1 1 5')
+ stimulus (scl=rwb)
+ sfr (key=ETXSTL addr=0xEE4 size=1 access='rw rw rw rw rw rw rw rw')
+- reset (por='00000000' mclr='000000000')
++ reset (por='00000000' mclr='00000000')
+ bit (names='ETXSTL' width='8')
+ stimulus (scl=rwb)
+ sfr (key=EWRPTH addr=0xEE3 size=1 access='u u u rw rw rw rw rw')
+@@ -923,7 +923,7 @@
+ bit (names='- - - EWRPTH' width='1 1 1 5')
+ stimulus (scl=rwb)
+ sfr (key=EWRPTL addr=0xEE2 size=1 access='rw rw rw rw rw rw rw rw')
+- reset (por='00000000' mclr='000000000')
++ reset (por='00000000' mclr='00000000')
+ bit (names='EWRPTL' width='8')
+ stimulus (scl=rwb)
+ sfr (key=EPKTCNT addr=0xED9 size=1 access='r r r r r r r r')
+@@ -939,7 +939,7 @@
+ bit (names='- - - EPMOH' width='1 1 1 5')
+ stimulus (scl=rwb)
+ sfr (key=EPMOL addr=0xED4 size=1 access='rw rw rw rw rw rw rw rw')
+- reset (por='00000000' mclr='000000000')
++ reset (por='00000000' mclr='00000000')
+ bit (names='EPMOL' width='8')
+ stimulus (scl=rwb)
+ sfr (key=EPMCSH addr=0xED1 size=1 access='rw rw rw rw rw rw rw rw')
+@@ -1035,7 +1035,7 @@
+ bit (names='- - - MIREGADR' width='1 1 1 5')
+ stimulus (scl=rwb)
+ sfr (key=MICMD addr=0xEB2 size=1 access='u u u u u u rw rw')
+- reset (por='------00' mclr='-------00')
++ reset (por='------00' mclr='------00')
+ bit (names='- - - - - - MIISCAN MIIRD' width='1 1 1 1 1 1 1 1')
+ stimulus (scl=rwb)
+ sfr (key=MICON addr=0xEB1 size=1 access='rw u u u u u u u')
+diff -ub ../741_vanilla/pic18f8585.dev ./pic18f8585.dev
+--- ../741_vanilla/pic18f8585.dev 2007-04-15 16:45:32.000000000 +0200
++++ ./pic18f8585.dev 2007-04-15 21:31:13.000000000 +0200
+@@ -1117,7 +1117,7 @@
+ bit (names='TXSID' width='8')
+ stimulus (scl=rwb regfiles=w pcfiles=w)
+ sfr (key=TXB2CON addr=0xF20 size=1 access='rc r r r rw u rw rw')
+- reset (por='000000-00' mclr='00000-00')
++ reset (por='00000-00' mclr='00000-00')
+ bit (names='TXBIF TXABT TXLARB TXERR TXREQ - TXPRI' width='1 1 1 1 1 1 2')
+ stimulus (scl=rwb regfiles=w pcfiles=rw)
+
+diff -ub ../741_vanilla/PIC18F8680.dev ./PIC18F8680.dev
+--- ../741_vanilla/PIC18F8680.dev 2007-04-15 16:45:32.000000000 +0200
++++ ./PIC18F8680.dev 2007-04-15 21:31:25.000000000 +0200
+@@ -1116,7 +1116,7 @@
+ bit (names='TXSID' width='8')
+ stimulus (scl=rwb regfiles=w pcfiles=w)
+ sfr (key=TXB2CON addr=0xF20 size=1 access='rc r r r rw u rw rw')
+- reset (por='000000-00' mclr='00000-00')
++ reset (por='00000-00' mclr='00000-00')
+ bit (names='TXBIF TXABT TXLARB TXERR TXREQ - TXPRI' width='1 1 1 1 1 1 2')
+ stimulus (scl=rwb regfiles=w pcfiles=rw)
+
+diff -ub ../741_vanilla/PIC18F86J60.dev ./PIC18F86J60.dev
+--- ../741_vanilla/PIC18F86J60.dev 2007-04-15 16:45:32.000000000 +0200
++++ ./PIC18F86J60.dev 2007-04-17 07:08:40.000000000 +0200
+@@ -910,7 +910,7 @@
+ bit (names='- - - EDMADSTH' width='1 1 1 5')
+ stimulus (scl=rwb)
+ sfr (key=EDMADSTL addr=0xEF4 size=1 access='rw rw rw rw rw rw rw rw')
+- reset (por='00000000' mclr='000000000')
++ reset (por='00000000' mclr='00000000')
+ bit (names='EDMADSTL' width='8')
+ stimulus (scl=rwb)
+ sfr (key=EDMANDH addr=0xEF3 size=1 access='u u u rw rw rw rw rw')
+@@ -918,7 +918,7 @@
+ bit (names='- - - EDMANDH' width='1 1 1 5')
+ stimulus (scl=rwb)
+ sfr (key=EDMANDL addr=0xEF2 size=1 access='rw rw rw rw rw rw rw rw')
+- reset (por='00000000' mclr='000000000')
++ reset (por='00000000' mclr='00000000')
+ bit (names='EDMANDL' width='8')
+ stimulus (scl=rwb)
+ sfr (key=EDMASTH addr=0xEF1 size=1 access='u u u rw rw rw rw rw')
+@@ -926,7 +926,7 @@
+ bit (names='- - - EDMASTH' width='1 1 1 5')
+ stimulus (scl=rwb)
+ sfr (key=EDMASTL addr=0xEF0 size=1 access='rw rw rw rw rw rw rw rw')
+- reset (por='00000000' mclr='000000000')
++ reset (por='00000000' mclr='00000000')
+ bit (names='EDMASTL' width='8')
+ stimulus (scl=rwb)
+ sfr (key=ERXWRPTH addr=0xEEF size=1 access='u u u rw rw rw rw rw')
+@@ -934,7 +934,7 @@
+ bit (names='- - - ERXWRPTH' width='1 1 1 5')
+ stimulus (scl=rwb)
+ sfr (key=ERXWRPTL addr=0xEEE size=1 access='rw rw rw rw rw rw rw rw')
+- reset (por='00000000' mclr='000000000')
++ reset (por='00000000' mclr='00000000')
+ bit (names='ERXWRPTL' width='8')
+ stimulus (scl=rwb)
+ sfr (key=ERXRDPTH addr=0xEED size=1 access='u u u rw rw rw rw rw')
+@@ -942,7 +942,7 @@
+ bit (names='- - - ERXRDPTH' width='1 1 1 5')
+ stimulus (scl=rwb)
+ sfr (key=ERXRDPTL addr=0xEEC size=1 access='rw rw rw rw rw rw rw rw')
+- reset (por='11111010' mclr='111110101')
++ reset (por='11111010' mclr='11111010')
+ bit (names='ERXRDPTL' width='8')
+ stimulus (scl=rwb)
+ sfr (key=ERXNDH addr=0xEEB size=1 access='u u u rw rw rw rw rw')
+@@ -950,7 +950,7 @@
+ bit (names='- - - ERXNDH' width='1 1 1 5')
+ stimulus (scl=rwb)
+ sfr (key=ERXNDL addr=0xEEA size=1 access='rw rw rw rw rw rw rw rw')
+- reset (por='11111111' mclr='111111111')
++ reset (por='11111111' mclr='11111111')
+ bit (names='ERXNDL' width='8')
+ stimulus (scl=rwb)
+ sfr (key=ERXSTH addr=0xEE9 size=1 access='u u u rw rw rw rw rw')
+@@ -958,7 +958,7 @@
+ bit (names='- - - ERXSTH' width='1 1 1 5')
+ stimulus (scl=rwb)
+ sfr (key=ERXSTL addr=0xEE8 size=1 access='rw rw rw rw rw rw rw rw')
+- reset (por='11111010' mclr='111111010')
++ reset (por='11111010' mclr='11111010')
+ bit (names='ERXSTL' width='8')
+ stimulus (scl=rwb)
+ sfr (key=ETXNDH addr=0xEE7 size=1 access='u u u rw rw rw rw rw')
+@@ -966,7 +966,7 @@
+ bit (names='- - - ETXNDH' width='1 1 1 5')
+ stimulus (scl=rwb)
+ sfr (key=ETXNDL addr=0xEE6 size=1 access='rw rw rw rw rw rw rw rw')
+- reset (por='00000000' mclr='000000000')
++ reset (por='00000000' mclr='00000000')
+ bit (names='ETXNDL' width='8')
+ stimulus (scl=rwb)
+ sfr (key=ETXSTH addr=0xEE5 size=1 access='u u u rw rw rw rw rw')
+@@ -974,7 +974,7 @@
+ bit (names='- - - ETXSTH' width='1 1 1 5')
+ stimulus (scl=rwb)
+ sfr (key=ETXSTL addr=0xEE4 size=1 access='rw rw rw rw rw rw rw rw')
+- reset (por='00000000' mclr='000000000')
++ reset (por='00000000' mclr='00000000')
+ bit (names='ETXSTL' width='8')
+ stimulus (scl=rwb)
+ sfr (key=EWRPTH addr=0xEE3 size=1 access='u u u rw rw rw rw rw')
+@@ -982,7 +982,7 @@
+ bit (names='- - - EWRPTH' width='1 1 1 5')
+ stimulus (scl=rwb)
+ sfr (key=EWRPTL addr=0xEE2 size=1 access='rw rw rw rw rw rw rw rw')
+- reset (por='00000000' mclr='000000000')
++ reset (por='00000000' mclr='00000000')
+ bit (names='EWRPTL' width='8')
+ stimulus (scl=rwb)
+ sfr (key=EPKTCNT addr=0xED9 size=1 access='r r r r r r r r')
+@@ -998,7 +998,7 @@
+ bit (names='- - - EPMOH' width='1 1 1 5')
+ stimulus (scl=rwb)
+ sfr (key=EPMOL addr=0xED4 size=1 access='rw rw rw rw rw rw rw rw')
+- reset (por='00000000' mclr='000000000')
++ reset (por='00000000' mclr='00000000')
+ bit (names='EPMOL' width='8')
+ stimulus (scl=rwb)
+ sfr (key=EPMCSH addr=0xED1 size=1 access='rw rw rw rw rw rw rw rw')
+@@ -1094,7 +1094,7 @@
+ bit (names='- - - MIREGADR' width='1 1 1 5')
+ stimulus (scl=rwb)
+ sfr (key=MICMD addr=0xEB2 size=1 access='u u u u u u rw rw')
+- reset (por='------00' mclr='-------00')
++ reset (por='------00' mclr='------00')
+ bit (names='- - - - - - MIISCAN MIIRD' width='1 1 1 1 1 1 1 1')
+ stimulus (scl=rwb)
+ sfr (key=MICON addr=0xEB1 size=1 access='rw u u u u u u u')
+diff -ub ../741_vanilla/PIC18F86J65.dev ./PIC18F86J65.dev
+--- ../741_vanilla/PIC18F86J65.dev 2007-04-15 16:45:32.000000000 +0200
++++ ./PIC18F86J65.dev 2007-04-17 07:09:52.000000000 +0200
+@@ -910,7 +910,7 @@
+ bit (names='- - - EDMADSTH' width='1 1 1 5')
+ stimulus (scl=rwb)
+ sfr (key=EDMADSTL addr=0xEF4 size=1 access='rw rw rw rw rw rw rw rw')
+- reset (por='00000000' mclr='000000000')
++ reset (por='00000000' mclr='00000000')
+ bit (names='EDMADSTL' width='8')
+ stimulus (scl=rwb)
+ sfr (key=EDMANDH addr=0xEF3 size=1 access='u u u rw rw rw rw rw')
+@@ -918,7 +918,7 @@
+ bit (names='- - - EDMANDH' width='1 1 1 5')
+ stimulus (scl=rwb)
+ sfr (key=EDMANDL addr=0xEF2 size=1 access='rw rw rw rw rw rw rw rw')
+- reset (por='00000000' mclr='000000000')
++ reset (por='00000000' mclr='00000000')
+ bit (names='EDMANDL' width='8')
+ stimulus (scl=rwb)
+ sfr (key=EDMASTH addr=0xEF1 size=1 access='u u u rw rw rw rw rw')
+@@ -926,7 +926,7 @@
+ bit (names='- - - EDMASTH' width='1 1 1 5')
+ stimulus (scl=rwb)
+ sfr (key=EDMASTL addr=0xEF0 size=1 access='rw rw rw rw rw rw rw rw')
+- reset (por='00000000' mclr='000000000')
++ reset (por='00000000' mclr='00000000')
+ bit (names='EDMASTL' width='8')
+ stimulus (scl=rwb)
+ sfr (key=ERXWRPTH addr=0xEEF size=1 access='u u u rw rw rw rw rw')
+@@ -934,7 +934,7 @@
+ bit (names='- - - ERXWRPTH' width='1 1 1 5')
+ stimulus (scl=rwb)
+ sfr (key=ERXWRPTL addr=0xEEE size=1 access='rw rw rw rw rw rw rw rw')
+- reset (por='00000000' mclr='000000000')
++ reset (por='00000000' mclr='00000000')
+ bit (names='ERXWRPTL' width='8')
+ stimulus (scl=rwb)
+ sfr (key=ERXRDPTH addr=0xEED size=1 access='u u u rw rw rw rw rw')
+@@ -942,7 +942,7 @@
+ bit (names='- - - ERXRDPTH' width='1 1 1 5')
+ stimulus (scl=rwb)
+ sfr (key=ERXRDPTL addr=0xEEC size=1 access='rw rw rw rw rw rw rw rw')
+- reset (por='11111010' mclr='111110101')
++ reset (por='11111010' mclr='11111010')
+ bit (names='ERXRDPTL' width='8')
+ stimulus (scl=rwb)
+ sfr (key=ERXNDH addr=0xEEB size=1 access='u u u rw rw rw rw rw')
+@@ -950,7 +950,7 @@
+ bit (names='- - - ERXNDH' width='1 1 1 5')
+ stimulus (scl=rwb)
+ sfr (key=ERXNDL addr=0xEEA size=1 access='rw rw rw rw rw rw rw rw')
+- reset (por='11111111' mclr='111111111')
++ reset (por='11111111' mclr='11111111')
+ bit (names='ERXNDL' width='8')
+ stimulus (scl=rwb)
+ sfr (key=ERXSTH addr=0xEE9 size=1 access='u u u rw rw rw rw rw')
+@@ -958,7 +958,7 @@
+ bit (names='- - - ERXSTH' width='1 1 1 5')
+ stimulus (scl=rwb)
+ sfr (key=ERXSTL addr=0xEE8 size=1 access='rw rw rw rw rw rw rw rw')
+- reset (por='11111010' mclr='111111010')
++ reset (por='11111010' mclr='11111010')
+ bit (names='ERXSTL' width='8')
+ stimulus (scl=rwb)
+ sfr (key=ETXNDH addr=0xEE7 size=1 access='u u u rw rw rw rw rw')
+@@ -966,7 +966,7 @@
+ bit (names='- - - ETXNDH' width='1 1 1 5')
+ stimulus (scl=rwb)
+ sfr (key=ETXNDL addr=0xEE6 size=1 access='rw rw rw rw rw rw rw rw')
+- reset (por='00000000' mclr='000000000')
++ reset (por='00000000' mclr='00000000')
+ bit (names='ETXNDL' width='8')
+ stimulus (scl=rwb)
+ sfr (key=ETXSTH addr=0xEE5 size=1 access='u u u rw rw rw rw rw')
+@@ -974,7 +974,7 @@
+ bit (names='- - - ETXSTH' width='1 1 1 5')
+ stimulus (scl=rwb)
+ sfr (key=ETXSTL addr=0xEE4 size=1 access='rw rw rw rw rw rw rw rw')
+- reset (por='00000000' mclr='000000000')
++ reset (por='00000000' mclr='00000000')
+ bit (names='ETXSTL' width='8')
+ stimulus (scl=rwb)
+ sfr (key=EWRPTH addr=0xEE3 size=1 access='u u u rw rw rw rw rw')
+@@ -982,7 +982,7 @@
+ bit (names='- - - EWRPTH' width='1 1 1 5')
+ stimulus (scl=rwb)
+ sfr (key=EWRPTL addr=0xEE2 size=1 access='rw rw rw rw rw rw rw rw')
+- reset (por='00000000' mclr='000000000')
++ reset (por='00000000' mclr='00000000')
+ bit (names='EWRPTL' width='8')
+ stimulus (scl=rwb)
+ sfr (key=EPKTCNT addr=0xED9 size=1 access='r r r r r r r r')
+@@ -998,7 +998,7 @@
+ bit (names='- - - EPMOH' width='1 1 1 5')
+ stimulus (scl=rwb)
+ sfr (key=EPMOL addr=0xED4 size=1 access='rw rw rw rw rw rw rw rw')
+- reset (por='00000000' mclr='000000000')
++ reset (por='00000000' mclr='00000000')
+ bit (names='EPMOL' width='8')
+ stimulus (scl=rwb)
+ sfr (key=EPMCSH addr=0xED1 size=1 access='rw rw rw rw rw rw rw rw')
+@@ -1094,7 +1094,7 @@
+ bit (names='- - - MIREGADR' width='1 1 1 5')
+ stimulus (scl=rwb)
+ sfr (key=MICMD addr=0xEB2 size=1 access='u u u u u u rw rw')
+- reset (por='------00' mclr='-------00')
++ reset (por='------00' mclr='------00')
+ bit (names='- - - - - - MIISCAN MIIRD' width='1 1 1 1 1 1 1 1')
+ stimulus (scl=rwb)
+ sfr (key=MICON addr=0xEB1 size=1 access='rw u u u u u u u')
+diff -ub ../741_vanilla/PIC18F87J60.dev ./PIC18F87J60.dev
+--- ../741_vanilla/PIC18F87J60.dev 2007-04-15 16:45:32.000000000 +0200
++++ ./PIC18F87J60.dev 2007-04-17 07:24:14.000000000 +0200
+@@ -910,7 +910,7 @@
+ bit (names='- - - EDMADSTH' width='1 1 1 5')
+ stimulus (scl=rwb)
+ sfr (key=EDMADSTL addr=0xEF4 size=1 access='rw rw rw rw rw rw rw rw')
+- reset (por='00000000' mclr='000000000')
++ reset (por='00000000' mclr='00000000')
+ bit (names='EDMADSTL' width='8')
+ stimulus (scl=rwb)
+ sfr (key=EDMANDH addr=0xEF3 size=1 access='u u u rw rw rw rw rw')
+@@ -918,7 +918,7 @@
+ bit (names='- - - EDMANDH' width='1 1 1 5')
+ stimulus (scl=rwb)
+ sfr (key=EDMANDL addr=0xEF2 size=1 access='rw rw rw rw rw rw rw rw')
+- reset (por='00000000' mclr='000000000')
++ reset (por='00000000' mclr='00000000')
+ bit (names='EDMANDL' width='8')
+ stimulus (scl=rwb)
+ sfr (key=EDMASTH addr=0xEF1 size=1 access='u u u rw rw rw rw rw')
+@@ -926,7 +926,7 @@
+ bit (names='- - - EDMASTH' width='1 1 1 5')
+ stimulus (scl=rwb)
+ sfr (key=EDMASTL addr=0xEF0 size=1 access='rw rw rw rw rw rw rw rw')
+- reset (por='00000000' mclr='000000000')
++ reset (por='00000000' mclr='00000000')
+ bit (names='EDMASTL' width='8')
+ stimulus (scl=rwb)
+ sfr (key=ERXWRPTH addr=0xEEF size=1 access='u u u rw rw rw rw rw')
+@@ -934,7 +934,7 @@
+ bit (names='- - - ERXWRPTH' width='1 1 1 5')
+ stimulus (scl=rwb)
+ sfr (key=ERXWRPTL addr=0xEEE size=1 access='rw rw rw rw rw rw rw rw')
+- reset (por='00000000' mclr='000000000')
++ reset (por='00000000' mclr='00000000')
+ bit (names='ERXWRPTL' width='8')
+ stimulus (scl=rwb)
+ sfr (key=ERXRDPTH addr=0xEED size=1 access='u u u rw rw rw rw rw')
+@@ -942,7 +942,7 @@
+ bit (names='- - - ERXRDPTH' width='1 1 1 5')
+ stimulus (scl=rwb)
+ sfr (key=ERXRDPTL addr=0xEEC size=1 access='rw rw rw rw rw rw rw rw')
+- reset (por='11111010' mclr='111110101')
++ reset (por='11111010' mclr='11111010')
+ bit (names='ERXRDPTL' width='8')
+ stimulus (scl=rwb)
+ sfr (key=ERXNDH addr=0xEEB size=1 access='u u u rw rw rw rw rw')
+@@ -950,7 +950,7 @@
+ bit (names='- - - ERXNDH' width='1 1 1 5')
+ stimulus (scl=rwb)
+ sfr (key=ERXNDL addr=0xEEA size=1 access='rw rw rw rw rw rw rw rw')
+- reset (por='11111111' mclr='111111111')
++ reset (por='11111111' mclr='11111111')
+ bit (names='ERXNDL' width='8')
+ stimulus (scl=rwb)
+ sfr (key=ERXSTH addr=0xEE9 size=1 access='u u u rw rw rw rw rw')
+@@ -958,7 +958,7 @@
+ bit (names='- - - ERXSTH' width='1 1 1 5')
+ stimulus (scl=rwb)
+ sfr (key=ERXSTL addr=0xEE8 size=1 access='rw rw rw rw rw rw rw rw')
+- reset (por='11111010' mclr='111111010')
++ reset (por='11111010' mclr='11111010')
+ bit (names='ERXSTL' width='8')
+ stimulus (scl=rwb)
+ sfr (key=ETXNDH addr=0xEE7 size=1 access='u u u rw rw rw rw rw')
+@@ -966,7 +966,7 @@
+ bit (names='- - - ETXNDH' width='1 1 1 5')
+ stimulus (scl=rwb)
+ sfr (key=ETXNDL addr=0xEE6 size=1 access='rw rw rw rw rw rw rw rw')
+- reset (por='00000000' mclr='000000000')
++ reset (por='00000000' mclr='00000000')
+ bit (names='ETXNDL' width='8')
+ stimulus (scl=rwb)
+ sfr (key=ETXSTH addr=0xEE5 size=1 access='u u u rw rw rw rw rw')
+@@ -974,7 +974,7 @@
+ bit (names='- - - ETXSTH' width='1 1 1 5')
+ stimulus (scl=rwb)
+ sfr (key=ETXSTL addr=0xEE4 size=1 access='rw rw rw rw rw rw rw rw')
+- reset (por='00000000' mclr='000000000')
++ reset (por='00000000' mclr='00000000')
+ bit (names='ETXSTL' width='8')
+ stimulus (scl=rwb)
+ sfr (key=EWRPTH addr=0xEE3 size=1 access='u u u rw rw rw rw rw')
+@@ -982,7 +982,7 @@
+ bit (names='- - - EWRPTH' width='1 1 1 5')
+ stimulus (scl=rwb)
+ sfr (key=EWRPTL addr=0xEE2 size=1 access='rw rw rw rw rw rw rw rw')
+- reset (por='00000000' mclr='000000000')
++ reset (por='00000000' mclr='00000000')
+ bit (names='EWRPTL' width='8')
+ stimulus (scl=rwb)
+ sfr (key=EPKTCNT addr=0xED9 size=1 access='r r r r r r r r')
+@@ -998,7 +998,7 @@
+ bit (names='- - - EPMOH' width='1 1 1 5')
+ stimulus (scl=rwb)
+ sfr (key=EPMOL addr=0xED4 size=1 access='rw rw rw rw rw rw rw rw')
+- reset (por='00000000' mclr='000000000')
++ reset (por='00000000' mclr='00000000')
+ bit (names='EPMOL' width='8')
+ stimulus (scl=rwb)
+ sfr (key=EPMCSH addr=0xED1 size=1 access='rw rw rw rw rw rw rw rw')
+@@ -1094,7 +1094,7 @@
+ bit (names='- - - MIREGADR' width='1 1 1 5')
+ stimulus (scl=rwb)
+ sfr (key=MICMD addr=0xEB2 size=1 access='u u u u u u rw rw')
+- reset (por='------00' mclr='-------00')
++ reset (por='------00' mclr='------00')
+ bit (names='- - - - - - MIISCAN MIIRD' width='1 1 1 1 1 1 1 1')
+ stimulus (scl=rwb)
+ sfr (key=MICON addr=0xEB1 size=1 access='rw u u u u u u u')
+diff -ub ../741_vanilla/PIC18F96J60.dev ./PIC18F96J60.dev
+--- ../741_vanilla/PIC18F96J60.dev 2007-04-15 16:45:32.000000000 +0200
++++ ./PIC18F96J60.dev 2007-04-17 07:25:23.000000000 +0200
+@@ -933,7 +933,7 @@
+ bit (names='- - - EDMADSTH' width='1 1 1 5')
+ stimulus (scl=rwb)
+ sfr (key=EDMADSTL addr=0xEF4 size=1 access='rw rw rw rw rw rw rw rw')
+- reset (por='00000000' mclr='000000000')
++ reset (por='00000000' mclr='00000000')
+ bit (names='EDMADSTL' width='8')
+ stimulus (scl=rwb)
+ sfr (key=EDMANDH addr=0xEF3 size=1 access='u u u rw rw rw rw rw')
+@@ -941,7 +941,7 @@
+ bit (names='- - - EDMANDH' width='1 1 1 5')
+ stimulus (scl=rwb)
+ sfr (key=EDMANDL addr=0xEF2 size=1 access='rw rw rw rw rw rw rw rw')
+- reset (por='00000000' mclr='000000000')
++ reset (por='00000000' mclr='00000000')
+ bit (names='EDMANDL' width='8')
+ stimulus (scl=rwb)
+ sfr (key=EDMASTH addr=0xEF1 size=1 access='u u u rw rw rw rw rw')
+@@ -949,7 +949,7 @@
+ bit (names='- - - EDMASTH' width='1 1 1 5')
+ stimulus (scl=rwb)
+ sfr (key=EDMASTL addr=0xEF0 size=1 access='rw rw rw rw rw rw rw rw')
+- reset (por='00000000' mclr='000000000')
++ reset (por='00000000' mclr='00000000')
+ bit (names='EDMASTL' width='8')
+ stimulus (scl=rwb)
+ sfr (key=ERXWRPTH addr=0xEEF size=1 access='u u u rw rw rw rw rw')
+@@ -957,7 +957,7 @@
+ bit (names='- - - ERXWRPTH' width='1 1 1 5')
+ stimulus (scl=rwb)
+ sfr (key=ERXWRPTL addr=0xEEE size=1 access='rw rw rw rw rw rw rw rw')
+- reset (por='00000000' mclr='000000000')
++ reset (por='00000000' mclr='00000000')
+ bit (names='ERXWRPTL' width='8')
+ stimulus (scl=rwb)
+ sfr (key=ERXRDPTH addr=0xEED size=1 access='u u u rw rw rw rw rw')
+@@ -965,7 +965,7 @@
+ bit (names='- - - ERXRDPTH' width='1 1 1 5')
+ stimulus (scl=rwb)
+ sfr (key=ERXRDPTL addr=0xEEC size=1 access='rw rw rw rw rw rw rw rw')
+- reset (por='11111010' mclr='111110101')
++ reset (por='11111010' mclr='11111010')
+ bit (names='ERXRDPTL' width='8')
+ stimulus (scl=rwb)
+ sfr (key=ERXNDH addr=0xEEB size=1 access='u u u rw rw rw rw rw')
+@@ -973,7 +973,7 @@
+ bit (names='- - - ERXNDH' width='1 1 1 5')
+ stimulus (scl=rwb)
+ sfr (key=ERXNDL addr=0xEEA size=1 access='rw rw rw rw rw rw rw rw')
+- reset (por='11111111' mclr='111111111')
++ reset (por='11111111' mclr='11111111')
+ bit (names='ERXNDL' width='8')
+ stimulus (scl=rwb)
+ sfr (key=ERXSTH addr=0xEE9 size=1 access='u u u rw rw rw rw rw')
+@@ -981,7 +981,7 @@
+ bit (names='- - - ERXSTH' width='1 1 1 5')
+ stimulus (scl=rwb)
+ sfr (key=ERXSTL addr=0xEE8 size=1 access='rw rw rw rw rw rw rw rw')
+- reset (por='11111010' mclr='111111010')
++ reset (por='11111010' mclr='11111010')
+ bit (names='ERXSTL' width='8')
+ stimulus (scl=rwb)
+ sfr (key=ETXNDH addr=0xEE7 size=1 access='u u u rw rw rw rw rw')
+@@ -989,7 +989,7 @@
+ bit (names='- - - ETXNDH' width='1 1 1 5')
+ stimulus (scl=rwb)
+ sfr (key=ETXNDL addr=0xEE6 size=1 access='rw rw rw rw rw rw rw rw')
+- reset (por='00000000' mclr='000000000')
++ reset (por='00000000' mclr='00000000')
+ bit (names='ETXNDL' width='8')
+ stimulus (scl=rwb)
+ sfr (key=ETXSTH addr=0xEE5 size=1 access='u u u rw rw rw rw rw')
+@@ -997,7 +997,7 @@
+ bit (names='- - - ETXSTH' width='1 1 1 5')
+ stimulus (scl=rwb)
+ sfr (key=ETXSTL addr=0xEE4 size=1 access='rw rw rw rw rw rw rw rw')
+- reset (por='00000000' mclr='000000000')
++ reset (por='00000000' mclr='00000000')
+ bit (names='ETXSTL' width='8')
+ stimulus (scl=rwb)
+ sfr (key=EWRPTH addr=0xEE3 size=1 access='u u u rw rw rw rw rw')
+@@ -1005,7 +1005,7 @@
+ bit (names='- - - EWRPTH' width='1 1 1 5')
+ stimulus (scl=rwb)
+ sfr (key=EWRPTL addr=0xEE2 size=1 access='rw rw rw rw rw rw rw rw')
+- reset (por='00000000' mclr='000000000')
++ reset (por='00000000' mclr='00000000')
+ bit (names='EWRPTL' width='8')
+ stimulus (scl=rwb)
+ sfr (key=EPKTCNT addr=0xED9 size=1 access='r r r r r r r r')
+@@ -1021,7 +1021,7 @@
+ bit (names='- - - EPMOH' width='1 1 1 5')
+ stimulus (scl=rwb)
+ sfr (key=EPMOL addr=0xED4 size=1 access='rw rw rw rw rw rw rw rw')
+- reset (por='00000000' mclr='000000000')
++ reset (por='00000000' mclr='00000000')
+ bit (names='EPMOL' width='8')
+ stimulus (scl=rwb)
+ sfr (key=EPMCSH addr=0xED1 size=1 access='rw rw rw rw rw rw rw rw')
+@@ -1117,7 +...
[truncated message content] |
|
From: <az...@us...> - 2012-08-12 19:29:00
|
Revision: 2948
http://piklab.svn.sourceforge.net/piklab/?rev=2948&view=rev
Author: azhyd
Date: 2012-08-12 19:28:49 +0000 (Sun, 12 Aug 2012)
Log Message:
-----------
move dev-utils in piklab source tree
Modified Paths:
--------------
trunk/piklab_kde4/src/CMakeLists.txt
trunk/piklab_kde4/src/common/cli/CMakeLists.txt
trunk/piklab_kde4/src/libgui/device_gui.cpp
trunk/piklab_kde4/src/piklab/CMakeLists.txt
trunk/piklab_kde4/src/progs/list/CMakeLists.txt
trunk/piklab_kde4/src/progs/pickit3/base/pickit3.cpp
trunk/piklab_kde4/src/progs/pickit3/base/pickit3.h
trunk/piklab_kde4/src/tools/list/CMakeLists.txt
Added Paths:
-----------
trunk/piklab_kde4/src/dev-utils/
trunk/piklab_kde4/src/dev-utils/CMakeLists.txt
trunk/piklab_kde4/src/dev-utils/dev_config_check/
trunk/piklab_kde4/src/dev-utils/dev_config_check/CMakeLists.txt
trunk/piklab_kde4/src/dev-utils/dev_config_check/dev_config_check.cpp
trunk/piklab_kde4/src/dev-utils/dev_parser/
trunk/piklab_kde4/src/dev-utils/dev_parser/CMakeLists.txt
trunk/piklab_kde4/src/dev-utils/dev_parser/dev_parser.cpp
trunk/piklab_kde4/src/dev-utils/dev_parser/dev_parser.h
trunk/piklab_kde4/src/dev-utils/gen_device_xml/
trunk/piklab_kde4/src/dev-utils/gen_device_xml/CMakeLists.txt
trunk/piklab_kde4/src/dev-utils/gen_device_xml/gen_device_xml.cpp
trunk/piklab_kde4/src/dev-utils/gen_device_xml/gen_device_xml.h
trunk/piklab_kde4/src/dev-utils/generator/
trunk/piklab_kde4/src/dev-utils/generator/CMakeLists.txt
trunk/piklab_kde4/src/dev-utils/generator/main_generator.cpp
trunk/piklab_kde4/src/dev-utils/generator/main_generator.h
trunk/piklab_kde4/src/dev-utils/html_generator/
trunk/piklab_kde4/src/dev-utils/html_generator/CMakeLists.txt
trunk/piklab_kde4/src/dev-utils/html_generator/html_generator.cpp
trunk/piklab_kde4/src/dev-utils/html_generator/html_generator.h
trunk/piklab_kde4/src/dev-utils/inc_parser/
trunk/piklab_kde4/src/dev-utils/inc_parser/CMakeLists.txt
trunk/piklab_kde4/src/dev-utils/inc_parser/inc_parser.cpp
trunk/piklab_kde4/src/dev-utils/list_generator/
trunk/piklab_kde4/src/dev-utils/list_generator/CMakeLists.txt
trunk/piklab_kde4/src/dev-utils/list_generator/list_generator.cpp
trunk/piklab_kde4/src/dev-utils/pickit2_to_data/
trunk/piklab_kde4/src/dev-utils/pickit2_to_data/CMakeLists.txt
trunk/piklab_kde4/src/dev-utils/pickit2_to_data/pickit2_to_data.cpp
trunk/piklab_kde4/src/dev-utils/pickit2_to_data/pickit2_to_data.h
trunk/piklab_kde4/src/dev-utils/pickit3_dds_parser/
trunk/piklab_kde4/src/dev-utils/pickit3_dds_parser/CMakeLists.txt
trunk/piklab_kde4/src/dev-utils/pickit3_dds_parser/pickit3_dds_parser.cpp
trunk/piklab_kde4/src/dev-utils/reg_extractor/
trunk/piklab_kde4/src/dev-utils/reg_extractor/CMakeLists.txt
trunk/piklab_kde4/src/dev-utils/reg_extractor/reg_extractor.cpp
trunk/piklab_kde4/src/dev-utils/usb_snoop_filter/
trunk/piklab_kde4/src/dev-utils/usb_snoop_filter/CMakeLists.txt
trunk/piklab_kde4/src/dev-utils/usb_snoop_filter/usb_snoop_filter.cpp
trunk/piklab_kde4/src/dev-utils/usbmon_filter/
trunk/piklab_kde4/src/dev-utils/usbmon_filter/CMakeLists.txt
trunk/piklab_kde4/src/dev-utils/usbmon_filter/usbmon_filter.cpp
trunk/piklab_kde4/src/progs/list/device_info.cpp
trunk/piklab_kde4/src/progs/list/device_info.h
Removed Paths:
-------------
trunk/piklab_kde4/src/tools/list/device_info.cpp
trunk/piklab_kde4/src/tools/list/device_info.h
Modified: trunk/piklab_kde4/src/CMakeLists.txt
===================================================================
--- trunk/piklab_kde4/src/CMakeLists.txt 2012-08-08 04:08:44 UTC (rev 2947)
+++ trunk/piklab_kde4/src/CMakeLists.txt 2012-08-12 19:28:49 UTC (rev 2948)
@@ -7,8 +7,8 @@
add_subdirectory(progs)
add_subdirectory(piklab-prog)
add_subdirectory(piklab-test)
+add_subdirectory(dev-utils)
-
if(NOT QT_ONLY)
add_subdirectory(data)
add_subdirectory(libgui)
Modified: trunk/piklab_kde4/src/common/cli/CMakeLists.txt
===================================================================
--- trunk/piklab_kde4/src/common/cli/CMakeLists.txt 2012-08-08 04:08:44 UTC (rev 2947)
+++ trunk/piklab_kde4/src/common/cli/CMakeLists.txt 2012-08-12 19:28:49 UTC (rev 2948)
@@ -5,7 +5,5 @@
cli_log.cpp
cli_main.cpp
)
-
automoc(${cli_STAT_SRCS})
-
add_library(cli STATIC ${cli_STAT_SRCS})
Added: trunk/piklab_kde4/src/dev-utils/CMakeLists.txt
===================================================================
--- trunk/piklab_kde4/src/dev-utils/CMakeLists.txt (rev 0)
+++ trunk/piklab_kde4/src/dev-utils/CMakeLists.txt 2012-08-12 19:28:49 UTC (rev 2948)
@@ -0,0 +1,12 @@
+add_subdirectory(generator)
+add_subdirectory(html_generator)
+add_subdirectory(list_generator)
+add_subdirectory(usb_snoop_filter)
+add_subdirectory(usbmon_filter)
+add_subdirectory(pickit2_to_data)
+add_subdirectory(pickit3_dds_parser)
+add_subdirectory(dev_parser)
+add_subdirectory(reg_extractor)
+add_subdirectory(dev_config_check)
+add_subdirectory(inc_parser)
+#add_subdirectory(gen_device_xml)
Added: trunk/piklab_kde4/src/dev-utils/dev_config_check/CMakeLists.txt
===================================================================
--- trunk/piklab_kde4/src/dev-utils/dev_config_check/CMakeLists.txt (rev 0)
+++ trunk/piklab_kde4/src/dev-utils/dev_config_check/CMakeLists.txt 2012-08-12 19:28:49 UTC (rev 2948)
@@ -0,0 +1,14 @@
+include_directories(${CMAKE_CURRENT_SOURCE_DIR})
+
+SET(dev_config_check_SRCS
+ dev_config_check.cpp
+)
+automoc(${dev_config_check_SRCS})
+add_executable(dev_config_check ${dev_config_check_SRCS})
+target_link_libraries(dev_config_check
+ devparser
+ devicelistnoui
+ pic picbase picxml mem24 mem24base mem24xml
+ devicebase global common
+ ${EXE_LIBS}
+)
\ No newline at end of file
Added: trunk/piklab_kde4/src/dev-utils/dev_config_check/dev_config_check.cpp
===================================================================
--- trunk/piklab_kde4/src/dev-utils/dev_config_check/dev_config_check.cpp (rev 0)
+++ trunk/piklab_kde4/src/dev-utils/dev_config_check/dev_config_check.cpp 2012-08-12 19:28:49 UTC (rev 2948)
@@ -0,0 +1,296 @@
+/***************************************************************************
+ * Copyright (C) 2006 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 <qdir.h>
+#include <qstringlist.h>
+#include <qregexp.h>
+#include <qtextstream.h>
+
+#include "dev-utils/dev_parser/dev_parser.h"
+#include "devices/list/device_list.h"
+#include "devices/base/device_group.h"
+#include "devices/pic/base/pic.h"
+#include "devices/pic/base/pic_config.h"
+
+class ConfigChecker : public DevParser
+{
+public:
+ ConfigChecker(const Pic::Data &data) : DevParser(data.name()), _data(data) {}
+ virtual void doAction() const;
+
+private:
+ const Pic::Data &_data;
+
+ void checkMemoryRange(Pic::MemoryRangeType type) const;
+ QStringList findDevConfigMask(const QString &xmask) const;
+ QString configName(uint i) const;
+};
+
+DevParser *DevParser::factory(const QString &name)
+{
+ const Device::Data *data = Device::Lister::instance().data(name);
+ if ( data==0 ) {
+ ::qWarning("Device \"%s\" not supported.", name.latin1());
+ return 0;
+ }
+ if ( data->group().name()!="pic" ) return 0;
+ return new ConfigChecker(static_cast<const Pic::Data &>(*data));
+}
+
+const char * const MEMORY_TECH[Device::MemoryTechnology::Nb_Types] = {
+ "ee", "eprom", "rom", "romless"
+};
+const char * const MEMORY_RANGES[Pic::MemoryRangeType::Nb_Types] = {
+ "pgmmem", "calmem", "userid", "devid", "cfgmem", "eedata", "bkbgvectmem", 0, 0
+};
+
+void ConfigChecker::checkMemoryRange(Pic::MemoryRangeType type) const
+{
+ if ( MEMORY_RANGES[type.type()]==0 ) return;
+ const Section *mem = findUniqueSection(MEMORY_RANGES[type.type()]);
+ if ( XOR(mem, _data.isPresent(type)) ) qFatal(QString("Memory range %1 presence does not match").arg(type.label()));
+ if ( mem==0 ) return;
+ if ( !mem->attributes.contains("region") ) qFatal(QString("Memory range %1 presence does not match").arg(type.label()));
+ Address start, end;
+ extractRange(mem->attributes["region"], start, end);
+ if ( type==Pic::MemoryRangeType::Config && _data.architecture()==Pic::Architecture::Baseline && start==end && start==0xFFF ) return; // dev contains hexfile offset (?)
+ if ( start!=_data.range(type).start ) qFatal(QString("Memory range %1 start does not match").arg(type.label()));
+ if ( type==Pic::MemoryRangeType::DeviceId && _data.architecture()==Pic::Architecture::P30F ) end++; // #### not sure why...
+ if ( type==Pic::MemoryRangeType::Code && _data.isPresent(Pic::MemoryRangeType::Cal) && _data.range(Pic::MemoryRangeType::Cal).start==_data.range(Pic::MemoryRangeType::Code).end+1 ) end--;
+ if ( end!=_data.range(type).end ) qFatal(QString("Memory range %1 end does not match (%2 - %3)").arg(type.label()).arg(toHexLabel(end, 8)).arg(toHexLabel(_data.range(type).end, 8)));
+ if ( type==Pic::MemoryRangeType::DeviceId ) {
+ BitValue idmask;
+ BitValue ridmask = fromHexLabel(mem->attributes["idmask"], NULL);
+ BitValue id = _data.ids()[Device::Special::Normal];
+ BitValue rid = fromHexLabel(mem->attributes["id"], NULL);
+ switch (_data.architecture().type()) {
+ case Pic::Architecture::Baseline:
+ case Pic::Architecture::MidRange:
+ case Pic::Architecture::EMidRange:
+ case Pic::Architecture::P17C:
+ idmask = 0x3FE0;
+ break;
+ case Pic::Architecture::P18C:
+ case Pic::Architecture::P18F:
+ case Pic::Architecture::P18J:
+ idmask = 0xFFE0;
+ break;
+ case Pic::Architecture::P24F:
+ case Pic::Architecture::P24H:
+ case Pic::Architecture::P30F:
+ case Pic::Architecture::P33F:
+ idmask = 0xFFFF0000;
+ rid = rid >> 16;
+ break;
+ case Pic::Architecture::Nb_Types: break;
+ }
+ if (ridmask != idmask) qFatal(QString("Id mask is not %1: %2").arg(toHexLabel(idmask, 8)).arg(mem->attributes["idmask"]));
+ if (rid != id) qFatal(QString("Id does not match (%1 - %2)").arg(toHexLabel(id, 4)).arg(mem->attributes["id"]));
+ }
+}
+
+struct ConfigData {
+ const char *xmask, *dmask;
+};
+
+const ConfigData CONFIG_DATA[] = {
+ { "CP", 0 },
+ { "CPD", 0 },
+ { "CPC", 0 },
+ { "CPB", 0 },
+
+ { "WRT", "WRT_ENABLE" },
+ { "WRTD", 0 },
+ { "WRTB", 0 },
+ { "WRTC", 0 },
+
+ { "EBTR", 0 },
+ { "EBTRB", 0 },
+
+ { "WDTE", "WDT" },
+ { "WDTE", "WDTEN" },
+ { "MCLRE", "MCLRE" },
+ { "FOSC", "OSC" },
+// { "EXTRC", I18N_NOOP("External RC oscillator") }, { "EXTRC_CLKOUT", I18N_NOOP("External RC oscillator with CLKOUT") }, { "EXTRC_IO", I18N_NOOP("External RC oscillator (no CLKOUT)") },
+// { "INTRC", I18N_NOOP("Internal oscillator") }, { "INTRC_CLKOUT", I18N_NOOP("Internal oscillator with CLKOUT") }, { "INTRC_IO", I18N_NOOP("Internal oscillator (no CLKOUT)") },
+// { "XT", I18N_NOOP("Crystal/resonator") }, { "LP", I18N_NOOP("Low power crystal") },
+// { "EC", I18N_NOOP("External clock") }, { "EC_CLKOUT", I18N_NOOP("External clock with CLKOUT") }, { "EC_IO", I18N_NOOP("External clock (no CLKOUT)") },
+// { "E4_CLKOUT", I18N_NOOP("External clock with 4x PLL and with CLKOUT") },
+// { "E4_IO", I18N_NOOP("External clock with 4x PLL (no CLKOUT)") },
+// { "E4S_IO", I18N_NOOP("External clock with software controlled 4x PLL (no CLKOUT)") },
+// { "ER", I18N_NOOP("External resistor") }, { "ER_CLKOUT", I18N_NOOP("External resistor with CLKOUT") }, { "ER_IO", I18N_NOOP("External resistor (no CLKOUT)") },
+// { "HS", I18N_NOOP("High speed crystal/resonator") }, { "H4", I18N_NOOP("High speed crystal/resonator with 4x PLL") },
+// { "H4S", I18N_NOOP("High speed crystal/resonator with software controlled 4x PLL") },
+// { 0, 0 } } },
+ { "PWRTE", "PUT" },
+ { "PWRTE", "PWRTEN" },
+ { "BG", 0 },
+ { "BODEN", "BOREN" },
+ { "FCMEN", 0 },
+ { "IESO", 0 },
+ { "WUREN", "WUR" },
+ { "DEBUG", "BACKBUG" },
+ { "MPEEN", "PARITY" },
+ { "BORV", "BODENV" },
+ { "LVP", 0 },
+ { "CCP2MX", "CCP2MUX" },
+ { "CCP1MX", "CCP1MUX" },
+ { "BORSEN", 0 },
+ { "WDT", "WDTEN" },
+ { "WDTPS", "WDPS" },
+ { "PM", "PMODE" },
+// {"Extended microcontroller", I18N_NOOP("Extended microcontroller") }, { "Microcontroller", I18N_NOOP("Microcontroller") },
+// { "Microprocessor", I18N_NOOP("Microprocessor") }, { "Code protected microcontroller", I18N_NOOP("Code protected microcontroller") },
+// { "Microprocessor with boot", I18N_NOOP("Microprocessor with boot block") }, {0, 0} } },
+ { "OSCSEN", "OSCS" },
+ { "STVREN", "STVR" },
+ { "BW", "BUS" },
+ { "PBADEN", 0 },
+ { "WINEN", 0 },
+ { "HPOL", 0 },
+ { "LPOL", 0 },
+ { "PWMPIN", 0 },
+ { "T1OSCMX", 0 },
+ { "EXCLKMX", 0 },
+ { "FLTAMX", 0 },
+ { "PWM4MX", 0 },
+ { "SSPMX", 0 },
+ { "LPT1OSC", 0 },
+ { "XINST", "ENHCPU" },
+ { "BBSIZ", 0 },
+ { "ICPORT", "ENICPORT" },
+ { "VREGEN", 0 },
+ { "WAIT", 0 },
+ { "ABW", 0 },
+
+ { "FCKSM", "FCKSMEN" },
+// { "Switching off, monitor off", I18N_NOOP("Switching off, monitor off") }, { "Switching off, monitor off", I18N_NOOP("Switching off, monitor off") },
+// { "Switching on, monitor off", I18N_NOOP("Switching on, monitor off") }, { "Switching on, monitor on", I18N_NOOP("Switching on, monitor on") }, {0, 0} } },
+ { "FOS", 0 },
+// { "INTRC_F", I18N_NOOP("Internal fast RC") }, { "INTRC_LP", I18N_NOOP("Internal low-power RC") },
+// { "PRIM", I18N_NOOP("Primary") }, { "TMR1", I18N_NOOP("Timer1") }, {0, 0} } },
+// { { "FPR", I18N_NOOP("Primary oscillator mode") }, Fixed, {
+// { "XTL", I18N_NOOP("Low-power/low-frequency crystal") }, { "HS", I18N_NOOP("High speed crystal") },
+// { "XT", I18N_NOOP("Crystal") }, { "X4", I18N_NOOP("Crystal with 4x PLL") }, { "X8", I18N_NOOP("Crystal with 8x PLL") }, { "X16", I18N_NOOP("Crystal with 16x PLL") },
+// { "EC_CLKOUT", I18N_NOOP("External clock with CLKOUT") }, { "EC_IO", I18N_NOOP("External clock (no CLKOUT)") },
+// { "E4_CLKOUT", I18N_NOOP("External clock with 4x PLL and with CLKOUT") }, { "E8_CLKOUT", I18N_NOOP("External clock with 8x PLL and with CLKOUT") }, { "E16_CLKOUT", I18N_NOOP("External clock with 16x PLL and with CLKOUT") },
+// { "EXTRC_CLKOUT", I18N_NOOP("External RC oscillator with CLKOUT") }, { "EXTRC_IO", I18N_NOOP("External RC oscillator (no CLKOUT)") }, {0, 0} } },
+ { "FWPSA", 0 },
+ { "FWPSB", 0 },
+ { "FWDTEN", "WDT" },
+ { "FPWRT", 0 },
+ { "GCP", 0 },
+ { "GWRP", 0 },
+ { "COE", 0 },
+ { "ICS", 0 },
+
+ { "USBDIV", "USBPLL" },
+ { "CPUDIV", 0 },
+ { "PLLDIV", 0 },
+
+ { "MCPU", 0 },
+ { "IOSCFS", "IOFSCS" },
+
+ { 0, 0 }
+};
+
+QStringList ConfigChecker::findDevConfigMask(const QString &xmask) const
+{
+ QStringList list;
+ if ( _data.name().startsWith("17") && xmask=="WDTPS" ) {
+ list.append("WDT");
+ } else {
+ QString mask = xmask;
+ mask.replace('_', QString::null);
+ for (uint i=0; CONFIG_DATA[i].xmask; i++) {
+ if ( CONFIG_DATA[i].xmask!=mask ) continue;
+ if ( CONFIG_DATA[i].dmask!=0 ) list.append(CONFIG_DATA[i].dmask);
+ }
+ list.append(xmask);
+ list.append(mask);
+ if ( xmask=="CP" ) list.append("CP_0");
+ if ( xmask=="WRT" ) list.append("WRT_0");
+ if ( xmask=="EBTR" ) list.append("EBTR_0");
+ }
+ return list;
+}
+
+QString ConfigChecker::configName(uint i) const
+{
+ const Pic::Config &c = _data.config();
+ if ( _data.name().startsWith("18") ) return "CONFIG" + QString::number(i/2+1) + (i%2 ? "H" : "L");
+ if ( (_data.name()=="16F87" || _data.name()=="16F88") && i==0 ) return "CONFIG";
+ if ( !c._words[i].name.isEmpty() ) return c._words[i].name;
+ return "CONFIG";
+}
+
+void ConfigChecker::doAction() const
+{
+ const Section *pgming = findUniqueSection("pgming");
+ if ( pgming==0 ) qFatal("No programming section");
+ if ( pgming->attributes["memtech"]!=MEMORY_TECH[_data.memoryTechnology().type()] ) qFatal("Memory technology different.");
+
+ FOR_EACH(Pic::MemoryRangeType, i) checkMemoryRange(i);
+
+ //uint cmask = _data.range(Device::MemoryConfig).mask;
+ const Pic::Config &c = _data.config();
+ for (int i=0; i<c._words.count(); i++) {
+ const Pic::Config::Word &w = c._words[i];
+ QStringList keys;
+ keys.append(configName(i));
+ const Section *cw = findSection(_sections, "cfgbits", keys);
+ if ( cw==0 ) {
+ if ( c._words[i].masks.count() ) qFatal(QString("Config %1 not present in .dev file").arg(configName(i)));
+ continue;
+ }
+ //if ( fromHexLabel(cw->attributes["unused"], 0)!=(cmask & ~w.usedMask() ) ) qWarning(QString("Unused bits do not match in %1 (%2 - %3)").arg(w.name).arg(toHexLabel(cmask & ~w.usedMask(), 4)).arg(cw->attributes["unused"]));
+ for (int k=0; k<w.masks.count(); k++) {
+ const Pic::Config::Mask &m = w.masks[k];
+ QStringList masks = findDevConfigMask(m.name);
+ const Section *cm = findSection(cw->sections, "field", masks);
+ if ( cm==0 ) qFatal(QString("Mask %1 does not exist in .dev file").arg(m.name));
+ // #### TODO
+ }
+ for (int k=0; k<cw->sections.count(); k++) {
+ if ( cw->sections[k].name!="field" ) continue;
+ if ( cw->sections[k].attributes["flags"].find("h")!=-1 ) continue;
+ bool in = false;
+ for (int l=0; l<w.masks.count(); l++) {
+ QStringList masks = findDevConfigMask(w.masks[l].name);
+ if ( masks.find(cw->sections[k].attributes["key"])==masks.end() ) continue;
+ in = true;
+ break;
+ }
+ if ( !in ) qFatal(QString("Mask %1 does not exist in xml file").arg(cw->sections[k].attributes["key"]));
+ }
+ }
+ for (int i=0; i<_sections.count(); i++) {
+ if ( _sections[i].name!="cfgbits" ) continue;
+ bool in = false;
+ for (int k=0; k<c._words.count(); k++) {
+ QStringList masks = findDevConfigMask(configName(k));
+ if ( masks.find(_sections[i].attributes["key"])==masks.end() ) continue;
+ in = true;
+ break;
+ }
+ if ( !in ) qFatal(QString("Config %1 does not exist in xml file").arg(_sections[i].attributes["key"]));
+ }
+}
+
+//-----------------------------------------------------------------------------
+int main(int argc, char **argv)
+{
+ QStringList devices;
+ DevParser::loopFiles(argc, argv, devices);
+
+ QStringList all = Device::Lister::instance().supportedDevices();
+ for (int i=0; i<all.count(); i++)
+ if ( devices.find(all[i])==devices.end() ) qFatal("Device \"%s\" not in any .dev file.", all[i].latin1());
+
+ return 0;
+}
Added: trunk/piklab_kde4/src/dev-utils/dev_parser/CMakeLists.txt
===================================================================
--- trunk/piklab_kde4/src/dev-utils/dev_parser/CMakeLists.txt (rev 0)
+++ trunk/piklab_kde4/src/dev-utils/dev_parser/CMakeLists.txt 2012-08-12 19:28:49 UTC (rev 2948)
@@ -0,0 +1,7 @@
+include_directories(${CMAKE_CURRENT_SOURCE_DIR})
+
+SET(devparser_STAT_SRCS
+ dev_parser.cpp
+)
+automoc(${devparser_STAT_SRCS})
+add_library(devparser STATIC ${devparser_STAT_SRCS})
Added: trunk/piklab_kde4/src/dev-utils/dev_parser/dev_parser.cpp
===================================================================
--- trunk/piklab_kde4/src/dev-utils/dev_parser/dev_parser.cpp (rev 0)
+++ trunk/piklab_kde4/src/dev-utils/dev_parser/dev_parser.cpp 2012-08-12 19:28:49 UTC (rev 2948)
@@ -0,0 +1,214 @@
+/***************************************************************************
+ * Copyright (C) 2006 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 "dev_parser.h"
+
+#include <qdir.h>
+#include <qstringlist.h>
+#include <qregexp.h>
+#include <qtextstream.h>
+
+#include "common/common/misc.h"
+#include "devices/list/device_list.h"
+
+QString DevParser::findDevice(const QStringList &lines)
+{
+ QRegExp reg("#\\s*device\\s*=([^()]+).*");
+ QStringList::const_iterator it = lines.begin();
+ for (; it!=lines.end(); ++it)
+ if ( reg.exactMatch(*it) ) break;
+ if ( it==lines.end() ) return QString::null;
+ QString name = reg.cap(1).stripWhiteSpace();
+ if ( name.startsWith("PIC") ) return name.mid(3);
+ if ( name.startsWith("dsPIC") ) return name.mid(5);
+ return name;
+}
+
+QString DevParser::parseAttribute(QString &todo, QString &value) const
+{
+ QRegExp reg("([\\w]+)=(.*)");
+ if ( !reg.exactMatch(todo) ) { // attribute with no value ?
+ reg.setPattern("([\\w-]+).*");
+ if ( !reg.exactMatch(todo) ) qFatal(QString("Could not recognize attribute: \"%1\"").arg(todo));
+ int end = reg.cap(1).length();
+ if ( end==todo.length() ) todo = QString::null;
+ else {
+ if ( todo[end]!=' ' ) qFatal(QString("Error parsing for attribute: \"%1\"").arg(todo));
+ todo = todo.mid(end+1).stripWhiteSpace();
+ }
+ value = QString::null;
+ return reg.cap(1);
+ }
+ uint start = reg.cap(1).length()+1;
+ int end = start+1;
+ //qDebug("start: %s", todo.mid(start).latin1());
+ if ( todo[start]=='\'' || todo[start]=='\"' ) {
+ QChar c = todo[start];
+ start += 1;
+ end = todo.find(c, start);
+ if ( end==-1 ) qFatal(QString("Unterminated string: %1").arg(todo));
+ } else {
+ end = todo.find(' ', start);
+ if ( end==-1 ) end = todo.length();
+ }
+ //qDebug("add attribute %s: %s", reg.cap(1).latin1(), todo.mid(start, end-start).latin1());
+ value = todo.mid(start, end-start);
+ todo = todo.mid(end+1).stripWhiteSpace();
+ return reg.cap(1);
+}
+
+DevParser::Section DevParser::parseSection(QStringList::const_iterator &it,
+ const QStringList::const_iterator &end, uint nbTabs) const
+{
+ Section section;
+ QRegExp reg("([\\w]+)\\s*\\((.*)\\)");
+ if ( !reg.exactMatch((*it).stripWhiteSpace()) ) qFatal(QString("Could not recognize section start: %1").arg((*it).stripWhiteSpace()));
+ section.name = reg.cap(1);
+ QString todo = reg.cap(2);
+ for (;;) {
+ QString value;
+ QString name = parseAttribute(todo, value);
+ if ( value.isNull() ) section.unamedAttributes.append(name);
+ else {
+ if ( section.attributes.contains(name) && section.attributes[name]!=value ) qFatal(QString("Attribute \"%1\" duplicated [%2].").arg(name).arg(*it));
+ section.attributes[name] = value;
+ }
+ if ( todo.isEmpty() ) break;
+ }
+ ++it;
+ if ( it==end ) return section;
+ for (;;) {
+ if ( !(*it).startsWith(repeat(" ", 4*(nbTabs+1)))
+ && !(*it).startsWith(repeat("\t", nbTabs+1)) ) break;
+ Section sub = parseSection(it, end, nbTabs+1);
+ section.sections.append(sub);
+ if ( it==end ) break;
+ }
+ return section;
+}
+
+void DevParser::parseFile(const QStringList &lines)
+{
+ QStringList::const_iterator it = lines.begin();
+ for (; it!=lines.end();) {
+ QRegExp reg("([\\w]+)=(.+)");
+ if ( reg.exactMatch(*it) ) {
+ if ( _fields.contains(reg.cap(1)) ) qWarning(QString("Duplicated field \"%1\".").arg(reg.cap(1)));
+ _fields[reg.cap(1)] = reg.cap(2).stripWhiteSpace();
+ ++it;
+ continue;
+ }
+ Section section = parseSection(it, lines.end(), 0);
+ _sections.append(section);
+ }
+}
+
+const DevParser::Section *DevParser::findUniqueSection(const QString &name) const
+{
+ int k = -1;
+ for (int i=0; i<_sections.count(); i++) {
+ if ( _sections[i].name!=name ) continue;
+ if ( k!=-1 ) qWarning(QString("Section \"%1\" duplicated").arg(name));
+ k = i;
+ }
+ if ( k==-1 ) return 0;
+ return &_sections[k];
+}
+
+const DevParser::Section *DevParser::findSection(const QVector<Section> §ions,
+ const QString &name, const QStringList &keys) const
+{
+ int k = -1;
+ for (int i=0; i<sections.count(); i++) {
+ if ( sections[i].name!=name || keys.find(sections[i].attributes["key"])==keys.end() ) continue;
+ if ( k!=-1 ) qWarning(QString("Section \"%1\" with keys \"%2\" duplicated").arg(name).arg(keys.join("/")));
+ k = i;
+ }
+ if ( k==-1 ) return 0;
+ return §ions[k];
+}
+
+void DevParser::extractRange(const QString &s, Address &start, Address &end) const
+{
+ QRegExp reg("0x([\\w]+)-0x([\\w]+)");
+ if ( reg.exactMatch(s) ) {
+ bool ok1, ok2;
+ start = fromHex(reg.cap(1), &ok1);
+ end = fromHex(reg.cap(2), &ok2);
+ if ( ok1 && ok2 ) return;
+ }
+ qFatal(QString("Could not recognize range %1").arg(s));
+}
+
+//-----------------------------------------------------------------------------
+void DevParser::loopFiles(int argc, char **argv, QStringList &devices)
+{
+ if ( argc!=2 ) ::qFatal("Need directory or file as argument.\n");
+
+ // find files
+ QStringList files;
+ QDir dir(argv[1]);
+ if ( !dir.exists() ) {
+ QFile file(argv[1]);
+ if ( !file.exists() ) ::qFatal("Directory or file \"%s\" does not exists.", argv[1]);
+ files.append(argv[1]);
+ } else {
+ QStringList list = dir.entryList("*.dev", QDir::Files);
+ QStringList::const_iterator it;
+ for (it=list.begin(); it!=list.end(); ++it)
+ files.append(dir.absFilePath(*it));
+ }
+
+ // process each file
+ QStringList::const_iterator it;
+ for (it=files.begin(); it!=files.end(); ++it) {
+ QFile file(*it);
+ if ( !file.open(IO_ReadOnly) ) {
+ ::qWarning(" Could not open file \"%s\".", file.name().latin1());
+ continue;
+ }
+ QTextStream stream(&file);
+ QStringList lines;
+ for (;;) {
+ QString s = stream.readLine();
+ if ( s.isNull() ) break;
+ if ( s.stripWhiteSpace().isEmpty() ) continue;
+ lines.append(s);
+ }
+ // find device
+ QString fname = (*it).section('/', -1, -1).section('.', 0, 0).upper();
+ if ( fname.startsWith("PIC") ) fname = fname.mid(3);
+ else if ( fname.startsWith("DSPIC") ) fname = fname.mid(5);
+ if ( Device::Lister::instance().data(fname)==0 ) {
+ //qDebug("%s not supported: skipped", fname.latin1());
+ continue;
+ }
+ devices.append(fname);
+ qDebug("%s", fname.latin1());
+ QString name = DevParser::findDevice(lines).upper();
+ if ( !name.isEmpty() && name!=fname ) {
+ ::qWarning("Device name is different from filename \"%s\".", file.name().latin1());
+ continue;
+ }
+ // remove comments
+ QStringList cleanedLines;
+ QStringList::const_iterator it = lines.begin();
+ for (; it!=lines.end(); ++it) {
+ if ( (*it).stripWhiteSpace().startsWith("#") ) continue;
+ int i = (*it).find('#');
+ if ( i==-1 ) cleanedLines.append(*it);
+ else cleanedLines.append((*it).mid(0, i));
+ }
+ // parse
+ DevParser *parser = DevParser::factory(fname);
+ if ( parser==0 ) continue;
+ parser->parseFile(cleanedLines);
+ parser->doAction();
+ delete parser;
+ }
+}
Added: trunk/piklab_kde4/src/dev-utils/dev_parser/dev_parser.h
===================================================================
--- trunk/piklab_kde4/src/dev-utils/dev_parser/dev_parser.h (rev 0)
+++ trunk/piklab_kde4/src/dev-utils/dev_parser/dev_parser.h 2012-08-12 19:28:49 UTC (rev 2948)
@@ -0,0 +1,55 @@
+/***************************************************************************
+ * Copyright (C) 2006 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 DEV_PARSER_H
+#define DEV_PARSER_H
+
+#include <qstringlist.h>
+#include <qmap.h>
+#include <qvector.h>
+#include "common/common/bitvalue.h"
+
+#include "common/common/bitvalue.h"
+
+class DevParser
+{
+public:
+ DevParser(const QString &name) : _name(name) {}
+ virtual ~DevParser() {}
+ void parseFile(const QStringList &lines);
+ virtual void doAction() const = 0;
+
+ static QString findDevice(const QStringList &lines);
+ static void loopFiles(int argc, char **argv, QStringList &devices);
+ static DevParser *factory(const QString &name);
+
+protected:
+ QString _name;
+ class Section {
+ public:
+ QString name;
+ QStringList unamedAttributes;
+ QMap<QString, QString> attributes;
+ QVector<Section> sections;
+ };
+ QVector<Section> _sections;
+ QMap<QString, QString> _fields;
+
+ Section parseSection(QStringList::const_iterator &it,
+ const QStringList::const_iterator &end, uint nbTabs) const;
+ QString parseAttribute(QString &todo, QString &value) const;
+ const Section *findUniqueSection(const QString &name) const;
+ const Section *findSection(const QVector<Section> §ions,
+ const QString &name, const QStringList &keys) const;
+ void extractRange(const QString &s, Address &start, Address &end) const;
+
+ void qWarning(const QString &msg) const { ::qWarning("Warning [%s]: %s", _name.latin1(), msg.latin1()); }
+ void qFatal(const QString &msg) const { ::qWarning("FATAL [%s]: %s", _name.latin1(), msg.latin1()); }
+};
+
+#endif
Added: trunk/piklab_kde4/src/dev-utils/gen_device_xml/CMakeLists.txt
===================================================================
--- trunk/piklab_kde4/src/dev-utils/gen_device_xml/CMakeLists.txt (rev 0)
+++ trunk/piklab_kde4/src/dev-utils/gen_device_xml/CMakeLists.txt 2012-08-12 19:28:49 UTC (rev 2948)
@@ -0,0 +1,14 @@
+include_directories(${CMAKE_CURRENT_SOURCE_DIR})
+
+SET(gen_device_xml_SRCS
+ gen_device_xml.cpp
+)
+automoc(${gen_device_xml_SRCS})
+add_executable(gen_device_xml ${gen_device_xml_SRCS})
+target_link_libraries(gen_device_xml
+ coff devicelistnoui
+ pic picbase picxml mem24 mem24base mem24xml
+ devicebase common
+ ${EXE_LIBS}
+ ${LIBUSB_LIBRARIES}
+)
Added: trunk/piklab_kde4/src/dev-utils/gen_device_xml/gen_device_xml.cpp
===================================================================
--- trunk/piklab_kde4/src/dev-utils/gen_device_xml/gen_device_xml.cpp (rev 0)
+++ trunk/piklab_kde4/src/dev-utils/gen_device_xml/gen_device_xml.cpp 2012-08-12 19:28:49 UTC (rev 2948)
@@ -0,0 +1,258 @@
+/***************************************************************************
+ * Copyright (C) 2007 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 "gen_device_xml.h"
+
+#include <qfile.h>
+
+#include "devices/list/device_list.h"
+#include "devices/base/device_group.h"
+#include "devices/pic/base/pic.h"
+#include "devices/mem24/base/mem24.h"
+#include "devices/pic/base/pic_config.h"
+
+//-----------------------------------------------------------------------------
+void DomComment::save(QTextStream &s, uint, const QValueList<uint> &) const
+{
+ Q_ASSERT( !_text.contains("--") );
+ s << "<!--*" << _text.leftJustify(79-9, '*') << "*-->" << endl;
+}
+
+DomParent::~DomParent()
+{
+ QValueList<DomChild *>::const_iterator cit;
+ for (cit=_childs.begin(); cit!=_childs.end(); ++cit) delete (*cit);
+}
+
+void DomElement::computeAlign(QValueList<uint> &align) const
+{
+ for (uint k=0; k<_attributes.count(); k++) {
+ uint width = _attributes[k].save().length();
+ if ( k==align.count() ) align.append(width);
+ else align[k] = qMax(align[k], width) ;
+ }
+}
+
+void DomParent::saveChilds(QTextStream &s, uint indent) const
+{
+ QMap<QString, QValueList<uint> > aligns;
+ QValueList<DomChild *>::const_iterator cit;
+ for (cit=_childs.begin(); cit!=_childs.end(); ++cit) {
+ if ( !(*cit)->isElement() ) continue;
+ const DomElement *element = static_cast<const DomElement *>(*cit);
+ element->computeAlign(aligns[element->tag()]);
+ }
+ for (cit=_childs.begin(); cit!=_childs.end(); ++cit) {
+ QValueList<uint> align;
+ if ( (*cit)->isElement() ) align = aligns[static_cast<const DomElement *>(*cit)->tag()];
+ (*cit)->save(s, indent, align);
+ }
+}
+
+void DomElement::save(QTextStream &s, uint indent, const QValueList<uint> &align) const
+{
+ Q_ASSERT( !_tag.contains("<") && !_tag.contains(">") );
+ s << repeat(" ", indent) << "<" << _tag << " ";
+ Q_ASSERT( align.count()>=_attributes.count() );
+ for (uint i=0; i<_attributes.count(); i++)
+ s << _attributes[i].save().leftJustify(align[i], ' ');
+ if ( _childs.isEmpty() ) s << "/>" << endl;
+ else s << ">" << endl;
+ saveChilds(s, indent+2);
+ if ( !_childs.isEmpty() ) s << repeat(" ", indent) << "</" << _tag << ">" << endl;
+}
+
+void DomDocument::save(QTextStream &s) const
+{
+ Q_ASSERT( !_name.contains("<") && !_name.contains(">") );
+ s << "<!DOCTYPE " << _name << ">" << endl;
+ saveChilds(s, 0);
+}
+
+//-----------------------------------------------------------------------------
+DomDocument *createDocument(const Device::Data &data)
+{
+ DomDocument *doc = new DomDocument("piklab_device");
+ doc->append(new DomComment(""));
+ doc->append(new DomComment(" Copyright (C) 2005-2007 Nicolas Hadacek <ha...@kd...> "));
+ doc->append(new DomComment(" "));
+ doc->append(new DomComment(" This program is free software; you can redistribute it and/or modify "));
+ doc->append(new DomComment(" it under the terms of the GNU General Public License as published by "));
+ doc->append(new DomComment(" the Free Software Foundation; either version 2 of the License, or "));
+ doc->append(new DomComment(" (at your option) any later version. "));
+ doc->append(new DomComment(""));
+
+ DomElement *root = new DomElement("device");
+ doc->append(root);
+ root->appendAttribute("name", data.name());
+ root->appendAttribute("status", data.status().key());
+ if ( !data.alternatives().isEmpty() ) root->appendAttribute("alternatives", data.alternatives().join(" "));
+ root->appendAttribute("memory_technology", data.memoryTechnology().key());
+ root->append(new DomEmptyLine);
+ root->append(new DomComment(" Operating characteristics "));
+ for (uint i=0; i<data.frequencyRanges().count(); i++) {
+ const Device::FrequencyRange &fr = data.frequencyRanges()[i];
+ DomElement *fre = new DomElement("frequency_range");
+ root->append(fre);
+ fre->appendAttribute("name", fr.operatingCondition.key());
+ if ( fr.special!=Device::Special::Normal ) fre->appendAttribute("special", fr.special.key());
+ for (uint k=0; k<fr.vdds.count(); k++) {
+ const Device::RangeBox &vdd = fr.vdds[k];
+ DomElement *rbe = new DomElement("frequency");
+ fre->append(rbe);
+ rbe->appendAttribute("start", QString::number(vdd.start.x));
+ rbe->appendAttribute("end", QString::number(vdd.end.x));
+ rbe->appendAttribute("vdd_min", QString::number(vdd.start.yMin));
+ rbe->appendAttribute("vdd_max", QString::number(vdd.start.yMax));
+ if ( vdd.end.yMin!=vdd.start.yMin ) rbe->appendAttribute("vdd_min_end", QString::number(vdd.end.yMin));
+ if ( !vdd.osc.isEmpty() ) rbe->appendAttribute("osc", vdd.osc);
+ if ( !vdd.mode.isEmpty() ) rbe->appendAttribute("mode", vdd.mode);
+ if ( !vdd.special.isEmpty() ) rbe->appendAttribute("special", vdd.special);
+ }
+ }
+
+ DomElement *de = new DomElement("documents");
+ de->appendAttribute("webpage", data.documents().webpage);
+ de->appendAttribute("datasheet", data.documents().datasheet);
+ de->appendAttribute("progsheet", data.documents().progsheet);
+ de->appendAttribute("erratas", data.documents().erratas.join(" "));
+ root->append(de);
+
+ if ( data.group().name()=="pic" ) {
+ const Pic::Data &pdata = static_cast<const Pic::Data &>(data);
+ root->appendAttribute("architecture", pdata.architecture().key());
+ if ( pdata.id()!=0 ) root->appendAttribute("id", toHexLabel(pdata.id(), 4));
+ root->append(new DomEmptyLine);
+ DomElement *ce = new DomElement("checksums");
+ root->append(ce);
+ QMap<QString, Pic::Checksum::Data>::const_iterator it;
+ for (it=pdata.checksums().begin(); it!=pdata.checksums().end(); ++it) {
+ DomElement *cde = new DomElement("checksum");
+ ce->append(cde);
+ cde->appendAttribute("protected", it.key());
+ if ( it.data().constant!=0x0000 ) cde->appendAttribute("constant", toHexLabel(it.data().constant, 4));
+ if ( it.data().algorithm!=Pic::Checksum::Algorithm::Normal ) cde->appendAttribute("type", it.data().algorithm.key());
+ cde->appendAttribute("bchecksum", toHexLabel(it.data().blankChecksum, 4));
+ cde->appendAttribute("cchecksum", toHexLabel(it.data().checkChecksum, 4));
+ }
+ root->append(new DomEmptyLine);
+ FOR_EACH(Pic::ProgVoltageType, type) {
+ const Pic::VoltageData &vd = pdata.voltage(type);
+ if ( type==Pic::ProgVoltageType::VddWrite && vd==pdata.voltage(Pic::ProgVoltageType::VddBulkErase) ) continue;
+ if ( vd==pdata.voltage(Pic::ProgVoltageType::VddWrite) ) continue;
+ DomElement *ve = new DomElement("voltages");
+ root->append(ve);
+ ve->appendAttribute("name", type.key());
+ ve->appendAttribute("min", QString::number(vd.min));
+ ve->appendAttribute("max", QString::number(vd.max));
+ ve->appendAttribute("nominal", QString::number(vd.nominal));
+ }
+ root->append(new DomEmptyLine);
+ root->append(new DomComment(" Memory "));
+ FOR_EACH(Pic::MemoryRangeType, type) {
+ if ( !pdata.isPresent(type) ) continue;
+ const Pic::MemoryRangeData &mrd = pdata.range(type);
+ DomElement *mre = new DomElement("memory");
+ root->append(mre);
+ mre->appendAttribute("name", type.key());
+ mre->appendAttribute("start", toHexLabel(mrd.start, pdata.nbCharsAddress()));
+ mre->appendAttribute("end", toHexLabel(mrd.end, pdata.nbCharsAddress()));
+ if ( mrd.hexFileOffset!=0 ) mre->appendAttribute("hexfile_offset", toHexLabel(mrd.hexFileOffset, pdata.nbCharsAddress()));
+ uint nbCharsWord = pdata.nbCharsWord(type);
+ if ( type==Pic::MemoryRangeType::UserId ) mre->appendAttribute("rmask", toHexLabel(mrd.rmask, nbCharsWord));
+ if ( type==Pic::MemoryRangeType::Cal && !pdata.is18Family() ) {
+ mre->appendAttribute("cal_opmask", toHexLabel(pdata.calibrationData().opcodeMask, nbCharsWord));
+ mre->appendAttribute("cal_opcode", toHexLabel(pdata.calibrationData().opcode, nbCharsWord));
+ }
+ }
+ root->append(new DomEmptyLine);
+ root->append(new DomComment(" Configuration bits "));
+ bool first = true;
+ for (uint i=0; i<pdata.config()._words.count(); i++) {
+ const Pic::Config::Word &cword = pdata.config()._words[i];
+ if ( cword.name.isNull() ) continue;
+ if (first) first = false;
+ else root->append(new DomEmptyLine);
+ DomElement *cwe = new DomElement("config");
+ root->append(cwe);
+ cwe->appendAttribute("offset", toHexLabel(i * pdata.addressIncrement(Pic::MemoryRangeType::Config), 1));
+ cwe->appendAttribute("name", cword.name);
+ uint nbCharsWord = pdata.nbCharsWord(Pic::MemoryRangeType::Config);
+ cwe->appendAttribute("wmask", toHexLabel(cword.wmask, nbCharsWord));
+ cwe->appendAttribute("bvalue", toHexLabel(cword.bvalue, nbCharsWord));
+ if ( cword.pmask!=0 ) cwe->appendAttribute("pmask", toHexLabel(cword.pmask, nbCharsWord));
+ if ( !cword.ignoredCNames.isEmpty() ) cwe->appendAttribute("icnames", cword.ignoredCNames.join(" "));
+ if ( cword.cmask!=cword.usedMask() ) cwe->appendAttribute("cmask", toHexLabel(cword.cmask, nbCharsWord));
+ for (uint k=0; k<cword.masks.count(); k++) {
+ const Pic::Config::Mask &cmask = cword.masks[k];
+ DomElement *cme = new DomElement("mask");
+ cwe->append(cme);
+ cme->appendAttribute("name", cmask.name);
+ cme->appendAttribute("value", toHexLabel(cmask.value, nbCharsWord));
+ for (uint l=0; l<cmask.values.count(); l++) {
+ const Pic::Config::Value &cvalue = cmask.values[l];
+ DomElement *cve = new DomElement("value");
+ cme->append(cve);
+ cve->appendAttribute("value", toHexLabel(cvalue.value, nbCharsWord));
+ cve->appendAttribute("name", cvalue.name);
+ if ( !cvalue.name.isNull() ) cve->appendAttribute("cname", cvalue.cnames.join(" "));
+ if ( !cvalue.extraCnames.isEmpty() ) cve->appendAttribute("ecnames", cvalue.extraCnames.join(" "));
+ }
+ }
+ }
+ } else if ( data.group().name()=="mem24" ) {
+ root->append(new DomEmptyLine);
+ root->append(new DomComment(" Memory "));
+ const Mem24::Data &mdata = static_cast<const Mem24::Data &>(data);
+ DomElement *me = new DomElement("memory");
+ root->append(me);
+ me->appendAttribute("size", toHexLabelAbs(mdata.nbBytes()));
+ me->appendAttribute("nb_blocks", QString::number(mdata.nbBlocks()));
+ me->appendAttribute("page_size", QString::number(mdata.nbBytesPage()));
+ }
+
+ // packages
+ root->append(new DomEmptyLine);
+ root->append(new DomComment(" Packages "));
+ for (uint i=0; i<data.packages().count(); i++) {
+ if ( i!=0 ) root->append(new DomEmptyLine);
+ const Device::Package &pack = data.packages()[i];
+ DomElement *pe = new DomElement("package");
+ root->append(pe);
+ QStringList types;
+ for (uint k=0; k<pack.types.count(); k++) types += Device::Package::TYPE_DATA[pack.types[k]].name;
+ pe->appendAttribute("types", types.join(" "));
+ pe->appendAttribute("nb_pins", QString::number(pack.pins.count()));
+ for (uint k=0; k<pack.pins.count(); k++) {
+ DomElement *pine = new DomElement("pin");
+ pe->append(pine);
+ pine->appendAttribute("index", QString::number(k+1));
+ pine->appendAttribute("name", pack.pins[k]);
+ }
+ }
+
+ root->append(new DomEmptyLine);
+ return doc;
+}
+
+//-----------------------------------------------------------------------------
+int main(int argc, char **argv)
+{
+ if ( argc!=2 ) qFatal("Need directory as argument.\n");
+ QStringList all = Device::lister().supportedDevices();
+ for (uint i=0; i<all.count(); i++) {
+ qDebug("%s", all[i].latin1());
+ DomDocument *doc = createDocument(*Device::lister().data(all[i]));
+ QFile file(QString(argv[1]) + "/" + all[i] + ".xml");
+ if ( !file.open(IO_WriteOnly) ) qFatal("Could not open file \"%s\"", file.name().latin1());
+ QTextStream stream(&file);
+ doc->save(stream);
+ delete doc;
+ }
+ return 0;
+}
Added: trunk/piklab_kde4/src/dev-utils/gen_device_xml/gen_device_xml.h
===================================================================
--- trunk/piklab_kde4/src/dev-utils/gen_device_xml/gen_device_xml.h (rev 0)
+++ trunk/piklab_kde4/src/dev-utils/gen_device_xml/gen_device_xml.h 2012-08-12 19:28:49 UTC (rev 2948)
@@ -0,0 +1,96 @@
+/***************************************************************************
+ * Copyright (C) 2007 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 GEN_DEVICE_XML_H
+#define GEN_DEVICE_XML_H
+
+#include "common/common/global.h"
+
+#include <qtextstream.h>
+
+//-----------------------------------------------------------------------------
+class DomAttribute
+{
+public:
+ DomAttribute() {}
+ DomAttribute(const QString &name, const QString &value) : _name(name), _value(value) {}
+ QString save() const { return _name + "=\"" + _value + "\" "; }
+
+private:
+ QString _name, _value;
+};
+
+//-----------------------------------------------------------------------------
+class DomChild
+{
+public:
+ virtual ~DomChild() {}
+ virtual void save(QTextStream &, uint, const QValueList<uint> &align) const = 0;
+ virtual bool isElement() const = 0;
+};
+
+class DomComment : public DomChild
+{
+public:
+ DomComment(const QString &text) : _text(text) {}
+ virtual void save(QTextStream &s, uint, const QValueList<uint> &) const;
+ virtual bool isElement() const { return false; }
+
+private:
+ QString _text;
+};
+
+class DomEmptyLine : public DomChild
+{
+public:
+ virtual void save(QTextStream &s, uint, const QValueList<uint> &) const { s << endl; }
+ virtual bool isElement() const { return false; }
+};
+
+class DomParent
+{
+public:
+ DomParent() {}
+ virtual ~DomParent();
+ void append(DomChild *child) { _childs += child; }
+
+protected:
+ QValueList<DomChild *> _childs;
+
+ DomParent(const DomParent &) {}
+ virtual DomParent &operator =(const DomParent &) { return *this; }
+ void saveChilds(QTextStream &s, uint indent) const;
+};
+
+class DomElement : public DomChild, public DomParent
+{
+public:
+ DomElement(const QString &tag) : _tag(tag) { Q_ASSERT( !tag.isEmpty() ); }
+ QString tag() const { return _tag; }
+ void appendAttribute(const QString &name, const QString &value) { _attributes += DomAttribute(name, value); }
+ virtual void save(QTextStream &s, uint indent, const QValueList<uint> &align) const;
+ virtual bool isElement() const { return true; }
+ void computeAlign(QValueList<uint> &align) const;
+
+private:
+ QString _tag;
+ QValueList<DomAttribute> _attributes;
+};
+
+//-----------------------------------------------------------------------------
+class DomDocument : public DomParent
+{
+public:
+ DomDocument(const QString &name) : _name(name) { Q_ASSERT( !name.isEmpty() ); }
+ void save(QTextStream &s) const;
+
+private:
+ QString _name;
+};
+
+#endif
Added: trunk/piklab_kde4/src/dev-utils/generator/CMakeLists.txt
===================================================================
--- trunk/piklab_kde4/src/dev-utils/generator/CMakeLists.txt (rev 0)
+++ trunk/piklab_kde4/src/dev-utils/generator/CMakeLists.txt 2012-08-12 19:28:49 UTC (rev 2948)
@@ -0,0 +1,7 @@
+include_directories(${CMAKE_CURRENT_SOURCE_DIR})
+
+SET(generator_SRCS
+ main_generator.cpp
+)
+automoc(${generator_SRCS})
+add_library(generator STATIC ${generator_SRCS})
Added: trunk/piklab_kde4/src/dev-utils/generator/main_generator.cpp
===================================================================
--- trunk/piklab_kde4/src/dev-utils/generator/main_generator.cpp (rev 0)
+++ trunk/piklab_kde4/src/dev-utils/generator/main_generator.cpp 2012-08-12 19:28:49 UTC (rev 2948)
@@ -0,0 +1,35 @@
+/***************************************************************************
+ * Copyright (C) 2005 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 "common/global/about.h"
+#include "main_generator.h"
+
+const Piklab::CmdLineOption OPTIONS[] = {
+ { "+dir", I18N_NOOP("Output directory."), 0 },
+ { 0, 0, 0}
+};
+
+int main(int argc, char **argv)
+{
+ const Piklab::AboutData about("generator", "generator", "");
+ static Piklab::OptionList list;
+ for (uint i = 0; OPTIONS[i].name != NULL; ++i)
+ list.append(OPTIONS[i]);
+ Piklab::initArgs(about, argc, argv, list);
+ Piklab::createApplication("generator", argc, argv, true, NULL);
+
+ KGlobal::locale()->setCountry("us", NULL); // consistent number format...
+
+ KCmdLineArgs *args = KCmdLineArgs::parsedArgs();
+ if ( args->count()==0 ) qFatal("Output directory must be provided.");
+ QDir dir(args->url(0).path());
+ if ( !dir.exists() ) qFatal("Directory \"%s\" does not exists.", dir.absPath().latin1());
+
+ return function(dir);
+}
Added: trunk/piklab_kde4/src/dev-utils/generator/main_generator.h
===================================================================
--- trunk/piklab_kde4/src/dev-utils/generator/main_generator.h (rev 0)
+++ trunk/piklab_kde4/src/dev-utils/generator/main_generator.h 2012-08-12 19:28:49 UTC (rev 2948)
@@ -0,0 +1,8 @@
+#ifndef LIST_GENERATOR_H
+#define LIST_GENERATOR_H
+
+#include <qdir.h>
+
+extern int function(const QDir &dir);
+
+#endif
Added: trunk/piklab_kde4/src/dev-utils/html_generator/CMakeLists.txt
===================================================================
--- trunk/piklab_kde4/src/dev-utils/html_generator/CMakeLists.txt (rev 0)
+++ trunk/piklab_kde4/src/dev-utils/html_generator/CMakeLists.txt 2012-08-12 19:28:49 UTC (rev 2948)
@@ -0,0 +1,19 @@
+include_directories(${CMAKE_CURRENT_SOURCE_DIR})
+
+SET(html_generator_SRCS
+ html_generator.cpp
+)
+automoc(${html_generator_SRCS})
+add_executable(html_generator ${html_generator_SRCS})
+target_link_libraries(html_generator
+ generator proglistnoui
+ picdembootloader pickit2bootloader tblbootloader
+ bootloader gpsim psp pickit1
+ pickit3 pickit3data pickit2v2 pickit2 icd3 icd1 icd2 icd2data directprog
+ mem24prog picprog progmanager progbase
+ coff port cli devicelistnoui
+ pic picbase picxml mem24 mem24base mem24xml
+ devicebase global common
+ ${EXE_LIBS}
+ ${LIBUSB_LIBRARIES}
+)
Added: trunk/piklab_kde4/src/dev-utils/html_generator/html_generator.cpp
===================================================================
--- trunk/piklab_kde4/src/dev-utils/html_generator/html_generator.cpp (rev 0)
+++ trunk/piklab_kde4/src/dev-utils/html_generator/html_generator.cpp 2012-08-12 19:28:49 UTC (rev 2948)
@@ -0,0 +1,70 @@
+/***************************************************************************
+ * Copyright (C) 2006 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 "html_generator.h"
+
+#include <qdir.h>
+#include <qfile.h>
+#include <qtextstream.h>
+#include <kapplication.h>
+#include <kcmdlineargs.h>
+#include <kaboutdata.h>
+
+#include "devices/list/device_list.h"
+#include "progs/list/prog_list.h"
+#include "tools/list/tool_list.h"
+#include "libgui/device_gui.h"
+#include "devices/base/device_group.h"
+#include "progs/list/device_info.h"
+
+//----------------------------------------------------------------------------
+void writePixmap(const QDir& dir, const QString& name, const QPixmap& pixmap)
+{
+ if (pixmap.isNull()) return;
+ QImage image = pixmap.toImage();
+ QString filepath = dir.filePath(name);
+ QImage old;
+ if ( !old.load(filepath) || old!=image ) {
+ qDebug(" add image %s", name.latin1());
+ if ( !image.save(filepath, "PNG") ) qFatal("Could not write \"%s\".", filepath.latin1());
+ }
+}
+
+int function(const QDir &dir)
+{
+ QStringList devices = Device::Lister::instance().supportedDevices();
+ for (int i=0; i<devices.count(); i++) {
+ // html file
+ QFile file(dir.filePath(devices[i] + ".htm"));
+ qDebug("%s", file.name().latin1());
+ if ( !file.open(IO_WriteOnly) ) qFatal("Could not open \"%s\" for writing.", file.name().latin1());
+ QTextStream fs(&file);
+ const Device::Data *data = Device::Lister::instance().data(devices[i]);
+ Q_ASSERT(data);
+ fs << "<table><tr><td>";
+ QString s = htmlTableRow("Information:", Device::webpageHtml(*data));
+ fs << Device::htmlInfo(*data, "devices.php?device=%1", s);
+ fs << Device::supportedHtmlInfo(*data);
+ fs << "<hr />\n";
+ fs << Device::voltageFrequencyHtml(*data, "devices/");
+ fs << "</td><td valign=\"top\">";
+ fs << Device::pinsHtml(*data, "devices/");
+ fs << "</td></tr></table";
+
+ for (int k=0; k<data->frequencyRanges().count(); k++) {
+ const Device::FrequencyRange &fr = data->frequencyRanges()[k];
+ QString name = Device::voltagePixmapLabel(*data, fr);
+ QPixmap pixmap = Device::voltagePixmap(fr);
+ writePixmap(dir, name, pixmap);
+ }
+
+ writePixmap(dir, Device::pinsPixmapLabel(*data), Device::pinsPixmap(*data));
+ }
+
+ return 0;
+}
Added: trunk/piklab_kde4/src/dev-utils/html_generator/html_generator.h
===================================================================
--- trunk/piklab_kde4/src/dev-utils/html_generator/html_generator.h (rev 0)
+++ trunk/piklab_kde4/src/dev-utils/html_generator/html_generator.h 2012-08-12 19:28:49 UTC (rev 2948)
@@ -0,0 +1,12 @@
+/***************************************************************************
+ * Copyright (C) 2006 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 HTML_GENERATOR_H
+#define HTML_GENERATOR_H
+
+#endif
Added: trunk/piklab_kde4/src/dev-utils/inc_parser/CMakeLists.txt
===================================================================
--- trunk/piklab_kde4/src/dev-utils/inc_parser/CMakeLists.txt (rev 0)
+++ trunk/piklab_kde4/src/dev-utils/inc_parser/CMakeLists.txt 2012-08-12 19:28:49 UTC (rev 2948)
@@ -0,0 +1,14 @@
+include_directories(${CMAKE_CURRENT_SOURCE_DIR})
+
+SET(inc_parser_SRCS
+ inc_parser.cpp
+)
+automoc(${inc_parser_SRCS})
+
+add_executable(inc_parser ${inc_parser_SRCS})
+target_link_libraries(inc_parser
+ coff devicelistnoui
+ pic picbase picxml mem24 mem24base mem24xml
+ devicebase global common
+ ${EXE_LIBS}
+)
Added: trunk/piklab_kde4/src/dev-utils/inc_parser/inc_parser.cpp
===================================================================
--- trunk/piklab_kde4/src/dev-utils/inc_parser/inc_parser.cpp (rev 0)
+++ trunk/piklab_kde4/src/dev-utils/inc_parser/inc_parser.cpp 2012-08-12 19:28:49 UTC (rev 2948)
@@ -0,0 +1,183 @@
+/***************************************************************************
+ * Copyright (C) 2006 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 <qdir.h>
+#include <qstringlist.h>
+#include <qregexp.h>
+#include <qtextstream.h>
+
+#include "devices/list/device_list.h"
+#include "devices/base/device_group.h"
+#include "devices/pic/base/pic_config.h"
+#include "coff/base/disassembler.h"
+
+class IncParser
+{
+public:
+ IncParser(const Pic::Data &data) : _data(data) {}
+ static QString findDevice(const QStringList &lines);
+ void parseFile(const QStringList &lines);
+ void checkDeviceData() const;
+
+private:
+ const Pic::Data &_data;
+ QMap<QString, uint> _configNames;
+
+ void qWarning(const QString &msg) const { ::qWarning("Warning [%s]: %s", _data.name().latin1(), msg.latin1()); }
+ void qFatal(const QString &msg) const { ::qFatal("FATAL [%s]: %s", _data.name().latin1(), msg.latin1()); }
+ bool checkMaskName(uint wordIndex, const QString &name, BitValue value) const;
+ bool findName(const QString &name, BitValue value) const;
+};
+
+
+QString IncParser::findDevice(const QStringList &lines)
+{
+ QRegExp reg("\\s*IFNDEF\\s+__(.*)");
+ QStringList::const_iterator it = lines.begin();
+ for (; it!=lines.end(); ++it)
+ if ( reg.exactMatch(*it) ) return reg.cap(1).stripWhiteSpace();
+ // try harder
+ reg.setPattern(";\\s*P([A-Z0-9]+)\\.INC.*");
+ for (it=lines.begin(); it!=lines.end(); ++it)
+ if ( reg.exactMatch(*it) ) return reg.cap(1).stripWhiteSpace();
+ return QString::null;
+}
+
+void IncParser::parseFile(const QStringList &lines)
+{
+ //qDebug("Parse file for %s", _data.name().latin1());
+ QRegExp reg("(_[\\w_]+)\\s+EQU\\s+H'([A-F0-9]+)'.*");
+ QStringList::const_iterator it = lines.begin();
+ for (; it!=lines.end(); ++it)
+ if ( reg.exactMatch(*it) ) _configNames[reg.cap(1)] = fromHex(reg.cap(2), 0);
+}
+
+bool IncParser::checkMaskName(uint wordIndex, const QString &name, BitValue value) const
+{
+ if ( _data.name()=="14000" && ( name=="_CPP_ON" || name=="_CPP_OFF" || name=="_CPU_ON" || name=="_CPU_OFF" ) )
+ return true; // #### FIXME
+ const Pic::Config::Word &cw = _data.config()._words[wordIndex];
+ for (int k=0; k<cw.masks.count(); k++) {
+ const Pic::Config::Mask &cm = cw.masks[k];
+ if ( SourceLine::ignoredConfigNames(_data, wordIndex).contains(name) ) return true;
+ for (int l=0; l<cm.values.count(); l++) {
+ const QStringList &cnames = cm.values[l].configNames[Pic::ConfigNameType::Default];
+ for (int m=0; m<cnames.count(); m++) {
+ if ( SourceLine::transformConfigName(_data, wordIndex, cnames[m])!=name
+ && !SourceLine::extraConfigNames(Pic::ConfigNameType::Default, _data, wordIndex, cm.values[l]).contains(name) ) continue;
+ BitValue mask = _data.mask(Pic::MemoryRangeType::Config);
+ if ( _data.name()=="16C62" || _data.name()=="16C64" || _data.name()=="16C65"
+ || _data.name()=="16C73" || _data.name()=="16C74" ) mask = 0x3FBF;
+ if ( _data.name()=="14000" && name=="_CPC_ON" ) mask = 0x3EFF; // ??
+ if ( _data.name()=="16F505" && name=="_CP_ON" ) mask = 0x003F; // ??
+ BitValue cv = cm.value.complementInMask(mask) | cm.values[l].value;
+ if ( value!=cv ) qWarning(QString("Mask name %1 does not have the correct value %2 (%3)").arg(name).arg(toHex(value, ...
[truncated message content] |
|
From: <az...@us...> - 2012-08-08 04:08:50
|
Revision: 2947
http://piklab.svn.sourceforge.net/piklab/?rev=2947&view=rev
Author: azhyd
Date: 2012-08-08 04:08:44 +0000 (Wed, 08 Aug 2012)
Log Message:
-----------
fix compilation
Modified Paths:
--------------
trunk/piklab_kde4/Changelog
Added Paths:
-----------
trunk/piklab_kde4/src/progs/pickit3/pickit3_data/pickit3_data.cpp
Modified: trunk/piklab_kde4/Changelog
===================================================================
--- trunk/piklab_kde4/Changelog 2012-08-07 14:54:38 UTC (rev 2946)
+++ trunk/piklab_kde4/Changelog 2012-08-08 04:08:44 UTC (rev 2947)
@@ -6,7 +6,7 @@
* add menu entries to configure editor, to toggle/enable breakpoints, to switch editors, and
to toggle read-only mode for hex editor
* fixed crash when changing watched variable value [reported by Luca]
-* added pickit3 support for 18F452 (command-line only)
+* added pickit3 support for 18F452
* fixed hang with "stop" command in interactive command-line programmer
0.16.1 (1 July 2012)
Added: trunk/piklab_kde4/src/progs/pickit3/pickit3_data/pickit3_data.cpp
===================================================================
--- trunk/piklab_kde4/src/progs/pickit3/pickit3_data/pickit3_data.cpp (rev 0)
+++ trunk/piklab_kde4/src/progs/pickit3/pickit3_data/pickit3_data.cpp 2012-08-08 04:08:44 UTC (rev 2947)
@@ -0,0 +1,23 @@
+/***************************************************************************
+ * 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 "progs/pickit3/base/pickit3_data.h"
+
+const Pickit3::FamilyData Pickit3::FAMILY_DATA[] = {
+ // MinorAlgo DebugAlgo EraseAlgo EraseAlgo2 Flags
+ { "18FXX2_XX8", 0x01, 0x05, 0x01, 0x6676, 0 },
+ { NULL, 0, 0, 0, 0, 0 }
+};
+
+const Pickit3::FamilyData* Pickit3::findFamilyData(const QString& name)
+{
+ for (uint i = 0; FAMILY_DATA[i].name != NULL ; ++i) {
+ if (name == FAMILY_DATA[i].name) return &FAMILY_DATA[i];
+ }
+ return NULL;
+}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <az...@us...> - 2012-08-07 14:54:45
|
Revision: 2946
http://piklab.svn.sourceforge.net/piklab/?rev=2946&view=rev
Author: azhyd
Date: 2012-08-07 14:54:38 +0000 (Tue, 07 Aug 2012)
Log Message:
-----------
fix power setting with pickit3
Modified Paths:
--------------
trunk/piklab_kde4/src/progs/base/generic_prog.cpp
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
Modified: trunk/piklab_kde4/src/progs/base/generic_prog.cpp
===================================================================
--- trunk/piklab_kde4/src/progs/base/generic_prog.cpp 2012-08-07 14:19:11 UTC (rev 2945)
+++ trunk/piklab_kde4/src/progs/base/generic_prog.cpp 2012-08-07 14:54:38 UTC (rev 2946)
@@ -121,7 +121,7 @@
if ( !checkFirmwareVersion() ) return false;
if ( !setTargetPowerOn(false) ) return false;
if ( !setTarget() ) return false;
- log(Log::LineType::Information, i18n(" Set target self powered: %1").arg(_targetSelfPowered ? "true" : "false"));
+ log(Log::LineType::Information, i18n(" Set target power: %1").arg(!_targetSelfPowered ? "true" : "false"));
if ( !setTargetPowerOn(!_targetSelfPowered) ) return false;
if ( !internalSetupHardware() ) return false;
if ( !readVoltages() ) return false;
Modified: trunk/piklab_kde4/src/progs/pickit3/base/pickit3.cpp
===================================================================
--- trunk/piklab_kde4/src/progs/pickit3/base/pickit3.cpp 2012-08-07 14:19:11 UTC (rev 2945)
+++ trunk/piklab_kde4/src/progs/pickit3/base/pickit3.cpp 2012-08-07 14:54:38 UTC (rev 2946)
@@ -437,21 +437,15 @@
return commandWithSimpleResponse(0x40, in, &data) && sendBulk(out);
}
-bool Pickit3::Hardware::setPower(bool on)
+bool Pickit3::Hardware::setPower(bool on, bool targetSelfPowered)
{
- _powerOptions = on ? PowerOn : NoPowerOption;
- _powerOptions |= HoldReset;
+ if (on) _powerOptions |= PowerOn;
+ else _powerOptions &= ~PowerOn;
+ if (!on || targetSelfPowered) _powerOptions &= ~UseProgrammerPower;
+ else _powerOptions |= UseProgrammerPower;
return setPower(_powerOptions);
}
-bool Pickit3::Hardware::setPowerTarget(bool on)
-{
- if (on) _powerOptions |= UseProgrammerPower;
- else _powerOptions &= ~UseProgrammerPower;
- _powerOptions |= PowerOn;
- return setPower(_powerOptions);
-}
-
bool Pickit3::Hardware::setTargetReset(Device::ResetMode mode)
{
if (mode == Device::ResetMode::Held) _powerOptions |= HoldReset;
Modified: trunk/piklab_kde4/src/progs/pickit3/base/pickit3.h
===================================================================
--- trunk/piklab_kde4/src/progs/pickit3/base/pickit3.h 2012-08-07 14:19:11 UTC (rev 2945)
+++ trunk/piklab_kde4/src/progs/pickit3/base/pickit3.h 2012-08-07 14:54:38 UTC (rev 2946)
@@ -205,8 +205,7 @@
bool eraseAll();
bool read(Pic::MemoryRangeType type, uint wordOffset, Device::Array& in, const ::Programmer::VerifyData *vdata);
bool write(Pic::MemoryRangeType type, uint wordOffset, const Device::Array& data);
- bool setPower(bool on);
- bool setPowerTarget(bool on);
+ bool setPower(bool on, bool targetSelfPowered);
virtual bool setTargetReset(Device::ResetMode mode);
virtual bool getVoltages(Device::VoltageValues&);
Modified: trunk/piklab_kde4/src/progs/pickit3/base/pickit3_prog.cpp
===================================================================
--- trunk/piklab_kde4/src/progs/pickit3/base/pickit3_prog.cpp 2012-08-07 14:19:11 UTC (rev 2945)
+++ trunk/piklab_kde4/src/progs/pickit3/base/pickit3_prog.cpp 2012-08-07 14:54:38 UTC (rev 2946)
@@ -34,17 +34,17 @@
//-----------------------------------------------------------------------------
bool Pickit3::DeviceSpecific::setPowerOn()
{
- return hardware().setPower(true);
+ return hardware().setPower(true, _base.isTargetSelfPowered());
}
bool Pickit3::DeviceSpecific::setPowerOff()
{
- return hardware().setPower(false);
+ return hardware().setPower(false, _base.isTargetSelfPowered());
}
bool Pickit3::DeviceSpecific::setTargetPowerOn(bool on)
{
- return hardware().setPowerTarget(on);
+ return hardware().setPower(on, _base.isTargetSelfPowered());
}
bool Pickit3::DeviceSpecific::doEraseRange(Pic::MemoryRangeType type)
Modified: trunk/piklab_kde4/src/progs/pickit3/base/pickit3_prog.h
===================================================================
--- trunk/piklab_kde4/src/progs/pickit3/base/pickit3_prog.h 2012-08-07 14:19:11 UTC (rev 2945)
+++ trunk/piklab_kde4/src/progs/pickit3/base/pickit3_prog.h 2012-08-07 14:54:38 UTC (rev 2946)
@@ -59,7 +59,7 @@
virtual QString name() const { return "pickit3"; }
virtual QString label() const { return i18n("Pickit3"); }
virtual ::Programmer::Properties properties() const { return ::Programmer::Programmer | ::Programmer::CanReadMemory | ::Programmer::HasConnectedState | ::Programmer::CanReleaseReset; }
- virtual ::Programmer::TargetPowerMode targetPowerMode() const { return ::Programmer::TargetExternallyPowered; }
+ virtual ::Programmer::TargetPowerMode targetPowerMode() const { return ::Programmer::TargetPowerModeFromConfig; }
virtual bool isPortSupported(PortType type) const { return type == PortType::USB; }
virtual bool canReadVoltage(Device::VoltageType) const;
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <az...@us...> - 2012-08-07 14:19:17
|
Revision: 2945
http://piklab.svn.sourceforge.net/piklab/?rev=2945&view=rev
Author: azhyd
Date: 2012-08-07 14:19:11 +0000 (Tue, 07 Aug 2012)
Log Message:
-----------
fix power setting with pickit3
Modified Paths:
--------------
trunk/piklab_kde4/src/common/cli/cli_main.cpp
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
Modified: trunk/piklab_kde4/src/common/cli/cli_main.cpp
===================================================================
--- trunk/piklab_kde4/src/common/cli/cli_main.cpp 2012-08-07 05:43:58 UTC (rev 2944)
+++ trunk/piklab_kde4/src/common/cli/cli_main.cpp 2012-08-07 14:19:11 UTC (rev 2945)
@@ -42,6 +42,7 @@
const CLI::CommandData STANDARD_INTERACTIVE_COMMAND_DATA[] = {
{ "help", CLI::ListCommand, 0, 0, I18N_NOOP("Display help.") },
{ "exit", CLI::NoCommandProperty, 0, 0, I18N_NOOP("Exit.") },
+ { "quit", CLI::NoCommandProperty, 0, 0, I18N_NOOP("Exit.") },
{ "set", CLI::NoCommandProperty, 1, 2, I18N_NOOP("Set property value: \"set <property> <value>\" or \"<property> <value>\".") },
{ "unset", CLI::NoCommandProperty, 1, 1, I18N_NOOP("Unset property value: \"unset <property>\".") },
{ "get", CLI::NoCommandProperty, 1, 1, I18N_NOOP("Get property value: \"get <property>\" or \"<property>\".") },
@@ -515,7 +516,7 @@
CLI::ExitCode CLI::MainBase::processStandardLine(const QStringList& words)
{
- if (words[0] == "exit") return EXITING;
+ if (words[0] == "exit" || words[0] == "quit") return EXITING;
if (words[0] == "set") {
if (words.count() == 2) return executeSetCommand(words[1], QString::null, false);
return executeSetCommand(words[1], words[2], false);
Modified: trunk/piklab_kde4/src/progs/pickit3/base/pickit3.cpp
===================================================================
--- trunk/piklab_kde4/src/progs/pickit3/base/pickit3.cpp 2012-08-07 05:43:58 UTC (rev 2944)
+++ trunk/piklab_kde4/src/progs/pickit3/base/pickit3.cpp 2012-08-07 14:19:11 UTC (rev 2945)
@@ -38,6 +38,17 @@
return progRegion;
}
+Pickit3::SystemStatus::SystemStatus()
+: _major(0), _init0(0), _init1(0), _warn0(0), _warn1(0), _mode0(0), _mode1(0)
+{
+}
+
+QString Pickit3::SystemStatus::pretty() const
+{
+ return QString("status: major=%1 init0=%2 init1=%3 warn0=%4 warn1=%5 mode0=%6 mode1=%7")
+ .arg(_major).arg(_init0).arg(_init1).arg(_warn0).arg(_warn1).arg(_mode0).arg(_mode1);
+}
+
//-----------------------------------------------------------------------------
Pickit3::Port::Port(Log::Base &log)
: ::Port::USB(log, Microchip::VENDOR_ID, 0x900A, 1, 0)
@@ -64,7 +75,8 @@
//-----------------------------------------------------------------------------
Pickit3::Hardware::Hardware(::Programmer::Base &base)
-: ::Programmer::PicHardware(base, new Port(base), QString::null)
+: ::Programmer::PicHardware(base, new Port(base), QString::null),
+ _powerOptions(NoPowerOption)
{
}
@@ -105,7 +117,7 @@
return true;
}
-bool Pickit3::Hardware::commandWithComplexResponse(uchar cmd, ByteArray& in, const ByteArray* out)
+bool Pickit3::Hardware::commandWithComplexResponse(uchar cmd, const char* cmdName, ByteArray& in, const ByteArray* out)
{
ByteArray data;
if (!commandWithSimpleResponse(cmd, data, out)) return false;
@@ -119,6 +131,14 @@
if (!port().receive(data)) return false;
int receivedCmd = data.getValue(0, 2);
if (receivedCmd == 0x00) break;
+ if (receivedCmd == 0xFF) {
+ ByteArray cmdArray(2, 0x00, PrintEscapeAll);
+ cmdArray[0] = cmd;
+ cmdArray[1] = 0x00;
+ log(Log::LineType::Error, i18n("Command \"%1\" failed (%2)")
+ .arg(cmdName).arg(cmdArray.pretty(0, 2)));
+ return false;
+ }
if (receivedCmd != 0x3F) {
ByteArray cmdArray(2, 0x00, PrintEscapeAll);
cmdArray[0] = 0x3F;
@@ -193,16 +213,15 @@
{
ByteArray in;
if (!commandWithSimpleResponse(0x3F, in)) return false;
+ // ### FIXME
status._major = in.getValue( 6, 2);
status._init0 = in.getValue(10, 2);
status._init1 = in.getValue(14, 2);
status._warn0 = in.getValue(18, 2);
status._warn1 = in.getValue(22, 2);
status._mode0 = in.getValue(26, 2);
- status._mode1 = in.getValue(32, 2);
- log(Log::DebugLevel::Extra, QString("status: major=%1 init0=%2 init1=%3 warn0=%4 warn1=%5 mode0=%6 mode1=%7")
- .arg(status._major).arg(status._init0).arg(status._init1).arg(status._warn0).arg(status._warn1)
- .arg(status._mode0).arg(status._mode1));
+ status._mode1 = in.getValue(30, 2);
+ log(Log::DebugLevel::Extra, status.pretty());
return true;
}
@@ -230,7 +249,7 @@
bool Pickit3::Hardware::queryProgToGoConfig()
{
ByteArray in;
- if (!commandWithComplexResponse(0xA1, in)) return false;
+ if (!commandWithComplexResponse(0xA1, "queryProgToGoConfig", in)) return false;
// TODO
return true;
}
@@ -420,22 +439,24 @@
bool Pickit3::Hardware::setPower(bool on)
{
- PowerOptions options = on ? PowerOn : NoPowerOption;
- options |= HoldReset;
- return setPower(options);
+ _powerOptions = on ? PowerOn : NoPowerOption;
+ _powerOptions |= HoldReset;
+ return setPower(_powerOptions);
}
-bool Pickit3::Hardware::setTargetPower(bool on)
+bool Pickit3::Hardware::setPowerTarget(bool on)
{
- PowerOptions options = on ? PowerOn | UseProgrammerPower : NoPowerOption;
- options |= HoldReset;
- return setPower(options);
+ if (on) _powerOptions |= UseProgrammerPower;
+ else _powerOptions &= ~UseProgrammerPower;
+ _powerOptions |= PowerOn;
+ return setPower(_powerOptions);
}
bool Pickit3::Hardware::setTargetReset(Device::ResetMode mode)
{
- PowerOptions options = mode == Device::ResetMode::Held ? HoldReset : NoPowerOption;
- return setPower(options);
+ if (mode == Device::ResetMode::Held) _powerOptions |= HoldReset;
+ else _powerOptions &= ~HoldReset;
+ return setPower(_powerOptions);
}
bool Pickit3::Hardware::setPower(PowerOptions options)
@@ -445,15 +466,15 @@
out.setValue(0x04, 0, 2);
out.setValue(uint(options), 2, 2);
double vdd = device().architecture().data().nominalVdd;
- out.setValue((vdd * 8) / 1000, 4, 2);
- return commandWithComplexResponse(0x63, in, &out);
+ out.setValue(vdd * 8, 4, 2);
+ return commandWithComplexResponse(0x63, "setPower", in, &out);
}
bool Pickit3::Hardware::connectToDevice(BitValue& deviceId)
{
if (!beginBracket()) return false;
ByteArray in;
- if (!commandWithComplexResponse(0x70, in)) return false;
+ if (!commandWithComplexResponse(0x70, "connectToDevice", in)) return false;
deviceId = in.getValue(0, 4);
return endBracket();
}
@@ -463,14 +484,14 @@
ByteArray in;
ByteArray out(2, 0x0, PrintEscapeAll);
out[0] = 0x01;
- return commandWithComplexResponse(0xA0, in, &out);
+ return commandWithComplexResponse(0xA0, "beginBracket", in, &out);
}
bool Pickit3::Hardware::endBracket()
{
ByteArray in;
ByteArray out(2, 0x0, PrintEscapeAll);
- return commandWithComplexResponse(0xA0, in, &out);
+ return commandWithComplexResponse(0xA0, "endBracket", in, &out);
}
bool Pickit3::Hardware::getVoltages(Device::VoltageValues& voltages)
@@ -524,7 +545,7 @@
ByteArray in;
if (!commandWithSimpleResponse(0x50, in, &out)) return false;
if (!beginBracket()) return false;
- if (!commandWithComplexResponse(0x53, in)) return false;
+ if (!commandWithComplexResponse(0x53, "erase", in)) return false;
return endBracket();
}
@@ -539,7 +560,7 @@
ByteArray in;
if (!commandWithSimpleResponse(0x50, in, &out)) return false;
if (!beginBracket()) return false;
- if (!commandWithComplexResponse(0x53, in)) return false;
+ if (!commandWithComplexResponse(0x53, "erase", in)) return false;
return endBracket();
}
@@ -551,7 +572,7 @@
out.setValue(offset, 2, 4);
out.setValue(size, 6, 4);
in.resize(size);
- return commandWithComplexResponse(0x61, in, &out);
+ return commandWithComplexResponse(0x61, "getMem", in, &out);
}
bool Pickit3::Hardware::read(Pic::MemoryRangeType type, uint wordOffset, Device::Array& data, const ::Programmer::VerifyData *vdata)
@@ -568,7 +589,7 @@
addMemRangeToOpDescriptor(type, i, size, out);
ByteArray in;
if (!commandWithSimpleResponse(0x50, in, &out)) return false;
- if (!commandWithComplexResponse(0x54, in)) return false;
+ if (!commandWithComplexResponse(0x54, "read", in)) return false;
if (!getMem(type, i, size, in)) return false;
for (uint k = 0; k < size; k += nbBytesWord) {
uint index = (i + k) / nbBytesWord;
@@ -617,7 +638,7 @@
if ( type==Pic::MemoryRangeType::Code || type==Pic::MemoryRangeType::Eeprom )
_base.progressMonitor().addTaskProgress(size / nbBytesWord);
ByteArray dummy;
- if (!commandWithComplexResponse(0x51, dummy)) return false;
+ if (!commandWithComplexResponse(0x51, "program", dummy)) return false;
}
return endBracket();
}
Modified: trunk/piklab_kde4/src/progs/pickit3/base/pickit3.h
===================================================================
--- trunk/piklab_kde4/src/progs/pickit3/base/pickit3.h 2012-08-07 05:43:58 UTC (rev 2944)
+++ trunk/piklab_kde4/src/progs/pickit3/base/pickit3.h 2012-08-07 14:19:11 UTC (rev 2945)
@@ -132,6 +132,9 @@
CompDevOp = 0x1F
};
+ SystemStatus();
+ QString pretty() const;
+
uint _major;
uint _init0;
uint _init1;
@@ -203,11 +206,13 @@
bool read(Pic::MemoryRangeType type, uint wordOffset, Device::Array& in, const ::Programmer::VerifyData *vdata);
bool write(Pic::MemoryRangeType type, uint wordOffset, const Device::Array& data);
bool setPower(bool on);
- bool setTargetPower(bool on);
+ bool setPowerTarget(bool on);
virtual bool setTargetReset(Device::ResetMode mode);
virtual bool getVoltages(Device::VoltageValues&);
private:
+ PowerOptions _powerOptions;
+
virtual bool internalConnectHardware();
Port& port() { return static_cast<Port&>(*_port); }
bool getStatus(SystemStatus& status);
@@ -229,7 +234,7 @@
bool command(uchar cmd, const ByteArray* out = NULL);
bool commandWithSimpleResponse(uchar cmd, ByteArray& in, const ByteArray* out = NULL);
- bool commandWithComplexResponse(uchar cmd, ByteArray& in, const ByteArray* out = NULL);
+ bool commandWithComplexResponse(uchar cmd, const char* cmdName, ByteArray& in, const ByteArray* out = NULL);
bool sendBulk(const ByteArray& out);
};
Modified: trunk/piklab_kde4/src/progs/pickit3/base/pickit3_prog.cpp
===================================================================
--- trunk/piklab_kde4/src/progs/pickit3/base/pickit3_prog.cpp 2012-08-07 05:43:58 UTC (rev 2944)
+++ trunk/piklab_kde4/src/progs/pickit3/base/pickit3_prog.cpp 2012-08-07 14:19:11 UTC (rev 2945)
@@ -44,7 +44,7 @@
bool Pickit3::DeviceSpecific::setTargetPowerOn(bool on)
{
- return hardware().setTargetPower(on);
+ return hardware().setPowerTarget(on);
}
bool Pickit3::DeviceSpecific::doEraseRange(Pic::MemoryRangeType type)
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <az...@us...> - 2012-08-07 05:44:05
|
Revision: 2944
http://piklab.svn.sourceforge.net/piklab/?rev=2944&view=rev
Author: azhyd
Date: 2012-08-07 05:43:58 +0000 (Tue, 07 Aug 2012)
Log Message:
-----------
fixed hang with "stop" command in interactive command-line programmer
Modified Paths:
--------------
trunk/piklab_kde4/Changelog
trunk/piklab_kde4/src/libgui/gui_prog_manager.cpp
trunk/piklab_kde4/src/piklab-prog/cli_prog_manager.cpp
trunk/piklab_kde4/src/progs/manager/prog_manager.cpp
trunk/piklab_kde4/src/progs/manager/prog_manager.h
Modified: trunk/piklab_kde4/Changelog
===================================================================
--- trunk/piklab_kde4/Changelog 2012-08-07 05:19:35 UTC (rev 2943)
+++ trunk/piklab_kde4/Changelog 2012-08-07 05:43:58 UTC (rev 2944)
@@ -1,4 +1,4 @@
-0.16.2 (5 August 2012)
+0.16.2 (6 August 2012)
* fixed toolchain output when executable cannot be found
* fixed parsing for jalv2
* fixed template generator for jalv2
@@ -7,6 +7,7 @@
to toggle read-only mode for hex editor
* fixed crash when changing watched variable value [reported by Luca]
* added pickit3 support for 18F452 (command-line only)
+* fixed hang with "stop" command in interactive command-line programmer
0.16.1 (1 July 2012)
* fixed command-line utilities compilation with Qt only
Modified: trunk/piklab_kde4/src/libgui/gui_prog_manager.cpp
===================================================================
--- trunk/piklab_kde4/src/libgui/gui_prog_manager.cpp 2012-08-07 05:19:35 UTC (rev 2943)
+++ trunk/piklab_kde4/src/libgui/gui_prog_manager.cpp 2012-08-07 05:43:58 UTC (rev 2944)
@@ -81,5 +81,5 @@
std::auto_ptr< ::Hardware::Config> hconfig(group()->hardwareConfig());
if (hconfig.get() != NULL) hd.name = hconfig->currentHardware(hd.port.type);
internalCreateProgrammer(data, hd);
- return _programmer;
+ return _programmer.get();
}
Modified: trunk/piklab_kde4/src/piklab-prog/cli_prog_manager.cpp
===================================================================
--- trunk/piklab_kde4/src/piklab-prog/cli_prog_manager.cpp 2012-08-07 05:19:35 UTC (rev 2943)
+++ trunk/piklab_kde4/src/piklab-prog/cli_prog_manager.cpp 2012-08-07 05:43:58 UTC (rev 2944)
@@ -54,9 +54,9 @@
if (!CLI::_firmwareDir.isEmpty()
&& !(_programmer->group().properties() & ::Programmer::Custom)) {
typedef ::Programmer::Base Base; // for G++ 3.3.6
- static_cast<Base*>(_programmer)->setFirmwareDirectory(CLI::_firmwareDir.path());
+ static_cast<Base*>(_programmer.get())->setFirmwareDirectory(CLI::_firmwareDir.path());
}
- return _programmer;
+ return _programmer.get();
}
bool Programmer::CliManager::internalInitProgramming(ProgramAction action)
Modified: trunk/piklab_kde4/src/progs/manager/prog_manager.cpp
===================================================================
--- trunk/piklab_kde4/src/progs/manager/prog_manager.cpp 2012-08-07 05:19:35 UTC (rev 2943)
+++ trunk/piklab_kde4/src/progs/manager/prog_manager.cpp 2012-08-07 05:43:58 UTC (rev 2944)
@@ -20,29 +20,22 @@
Programmer::Manager *Programmer::manager = 0;
Programmer::Manager::Manager(QObject *parent)
- : QObject(parent, "programmer_manager"), _programmer(0)
+: QObject(parent, "programmer_manager"),
+ _halting(false)
{}
-Programmer::Manager::~Manager()
-{
- delete _programmer;
- _programmer = NULL;
-}
-
void Programmer::Manager::clear()
{
- delete _programmer;
- _programmer = NULL;
+ _programmer.reset(NULL);
}
void Programmer::Manager::internalCreateProgrammer(const Device::Data *data, const HardwareDescription &hd)
{
- if (_programmer != NULL
+ if (_programmer.get() != NULL
&& &_programmer->group() == group()
&& _programmer->device() == data
&& !hasError()) return;
- delete _programmer;
- _programmer = group()->createProgrammer(isTargetSelfPowered(), data, hd, this);
+ _programmer.reset(group()->createProgrammer(isTargetSelfPowered(), data, hd, this));
connect(&_programmer->progressMonitor(), SIGNAL(setLabel(const QString &)), SIGNAL(actionMessage(const QString &)));
connect(&_programmer->progressMonitor(), SIGNAL(setTotalProgress(uint)), SIGNAL(setTotalProgress(uint)));
connect(&_programmer->progressMonitor(), SIGNAL(setProgress(uint)), SIGNAL(setProgress(uint)));
@@ -160,8 +153,7 @@
_programmer->setTargetPowerOn(false);
_programmer->disconnectHardware();
endProgramming();
- delete _programmer;
- _programmer = NULL;
+ _programmer.reset(NULL);
if (debugger) log(Log::LineType::Information, i18n("Stopped."));
return true;
}
@@ -176,8 +168,11 @@
bool Programmer::Manager::halt()
{
- if ( !initProgramming(ProgramAction::Halt) ) return false;
- bool ok;
+ if (_halting) return true;
+ _halting = true;
+ bool ok = initProgramming(ProgramAction::Halt);
+ _halting = false;
+ if (!ok) return false;
if (group()->isDebugger()) {
ok = ::Debugger::manager->halt();
setState(Idle);
@@ -191,7 +186,7 @@
void Programmer::Manager::stop()
{
- if (_programmer) _programmer->disconnectHardware();
+ if (_programmer.get() != NULL) _programmer->disconnectHardware();
}
bool Programmer::Manager::restart()
Modified: trunk/piklab_kde4/src/progs/manager/prog_manager.h
===================================================================
--- trunk/piklab_kde4/src/progs/manager/prog_manager.h 2012-08-07 05:19:35 UTC (rev 2943)
+++ trunk/piklab_kde4/src/progs/manager/prog_manager.h 2012-08-07 05:43:58 UTC (rev 2944)
@@ -29,8 +29,7 @@
Q_OBJECT
public:
Manager(QObject *parent);
- virtual ~Manager();
- ::Programmer::Generic *programmer() { return _programmer; }
+ ::Programmer::Generic *programmer() { return _programmer.get(); }
virtual ::Programmer::Generic *createProgrammer(const Device::Data *data) = 0;
bool initProgramming(ProgramAction action);
void endProgramming();
@@ -60,7 +59,8 @@
void setProgress(uint steps);
protected:
- ::Programmer::Generic *_programmer;
+ std::auto_ptr< ::Programmer::Generic> _programmer;
+ bool _halting;
virtual const Group *group() const = 0;
virtual bool internalInitProgramming(ProgramAction action);
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
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.
|
|
From: <az...@us...> - 2012-08-05 19:43:35
|
Revision: 2942
http://piklab.svn.sourceforge.net/piklab/?rev=2942&view=rev
Author: azhyd
Date: 2012-08-05 19:43:29 +0000 (Sun, 05 Aug 2012)
Log Message:
-----------
finish pickit3 support for command-line
Modified Paths:
--------------
trunk/piklab_kde4/Changelog
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
Modified: trunk/piklab_kde4/Changelog
===================================================================
--- trunk/piklab_kde4/Changelog 2012-08-05 19:14:42 UTC (rev 2941)
+++ trunk/piklab_kde4/Changelog 2012-08-05 19:43:29 UTC (rev 2942)
@@ -1,4 +1,4 @@
-0.16.2 (4 August 2012)
+0.16.2 (5 August 2012)
* fixed toolchain output when executable cannot be found
* fixed parsing for jalv2
* fixed template generator for jalv2
@@ -6,6 +6,7 @@
* add menu entries to configure editor, to toggle/enable breakpoints, to switch editors, and
to toggle read-only mode for hex editor
* fixed crash when changing watched variable value [reported by Luca]
+* added pickit3 support for 18F452 (command-line only)
0.16.1 (1 July 2012)
* fixed command-line utilities compilation with 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:14:42 UTC (rev 2941)
+++ trunk/piklab_kde4/src/progs/pickit3/base/pickit3.cpp 2012-08-05 19:43:29 UTC (rev 2942)
@@ -418,12 +418,33 @@
return commandWithSimpleResponse(0x40, in, &data) && sendBulk(out);
}
-bool Pickit3::Hardware::setPower(PowerOptions options, uint vdd)
+bool Pickit3::Hardware::setPower(bool on)
{
+ PowerOptions options = on ? PowerOn : NoPowerOption;
+ options |= HoldReset;
+ return setPower(options);
+}
+
+bool Pickit3::Hardware::setTargetPower(bool on)
+{
+ PowerOptions options = on ? PowerOn | UseProgrammerPower : NoPowerOption;
+ options |= HoldReset;
+ return setPower(options);
+}
+
+bool Pickit3::Hardware::setTargetReset(Device::ResetMode mode)
+{
+ PowerOptions options = mode == Device::ResetMode::Held ? HoldReset : NoPowerOption;
+ return setPower(options);
+}
+
+bool Pickit3::Hardware::setPower(PowerOptions options)
+{
ByteArray in;
ByteArray out(6, 0x0, PrintEscapeAll);
out.setValue(0x04, 0, 2);
out.setValue(uint(options), 2, 2);
+ double vdd = device().architecture().data().nominalVdd;
out.setValue((vdd * 8) / 1000, 4, 2);
return commandWithComplexResponse(0x63, in, &out);
}
Modified: trunk/piklab_kde4/src/progs/pickit3/base/pickit3.h
===================================================================
--- trunk/piklab_kde4/src/progs/pickit3/base/pickit3.h 2012-08-05 19:14:42 UTC (rev 2941)
+++ trunk/piklab_kde4/src/progs/pickit3/base/pickit3.h 2012-08-05 19:43:29 UTC (rev 2942)
@@ -143,9 +143,9 @@
enum PowerOption {
NoPowerOption = 0,
- UseEmulatorPower = 1,
- KeepPowerOn = 2,
- KeepMasterClearActive = 4,
+ UseProgrammerPower = 1,
+ PowerOn = 2,
+ HoldReset = 4,
UsePic24HighVoltageEntry = 8
};
Q_DECLARE_FLAGS(PowerOptions, PowerOption)
@@ -197,12 +197,14 @@
public:
Hardware(::Programmer::Base &base);
- bool setPower(PowerOptions, uint vdd); // mV
bool connectToDevice(BitValue& deviceId);
bool eraseRange(Pic::MemoryRangeType type);
bool eraseAll();
bool read(Pic::MemoryRangeType type, uint wordOffset, Device::Array& in, const ::Programmer::VerifyData *vdata);
bool write(Pic::MemoryRangeType type, uint wordOffset, const Device::Array& data);
+ bool setPower(bool on);
+ bool setTargetPower(bool on);
+ virtual bool setTargetReset(Device::ResetMode mode);
private:
virtual bool internalConnectHardware();
@@ -223,6 +225,7 @@
void addMemRangeToOpDescriptor(Pic::MemoryRangeType type, ByteArray& data);
bool getMem(Pic::MemoryRangeType type, uint offset, uint size, ByteArray& in);
bool setMem(Pic::MemoryRangeType type, uint offset, const ByteArray& out);
+ bool setPower(PowerOptions options);
bool command(uchar cmd, const ByteArray* out = NULL);
bool commandWithSimpleResponse(uchar cmd, ByteArray& in, const ByteArray* out = NULL);
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:14:42 UTC (rev 2941)
+++ trunk/piklab_kde4/src/progs/pickit3/base/pickit3_prog.cpp 2012-08-05 19:43:29 UTC (rev 2942)
@@ -22,21 +22,17 @@
//-----------------------------------------------------------------------------
bool Pickit3::DeviceSpecific::setPowerOn()
{
- const double vdd = device().architecture().data().nominalVdd;
- return hardware().setPower(Pickit3::KeepPowerOn, vdd * 1000);
+ return hardware().setPower(true);
}
bool Pickit3::DeviceSpecific::setPowerOff()
{
- const double vdd = device().architecture().data().nominalVdd;
- return hardware().setPower(Pickit3::NoPowerOption, vdd * 1000);
+ return hardware().setPower(false);
}
bool Pickit3::DeviceSpecific::setTargetPowerOn(bool on)
{
- PowerOptions options = (on ? Pickit3::KeepPowerOn | Pickit3::UseEmulatorPower : NoPowerOption);
- const double vdd = device().architecture().data().nominalVdd;
- return hardware().setPower(options, vdd * 1000);
+ return hardware().setTargetPower(on);
}
bool Pickit3::DeviceSpecific::doEraseRange(Pic::MemoryRangeType type)
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <az...@us...> - 2012-08-05 19:14:49
|
Revision: 2941
http://piklab.svn.sourceforge.net/piklab/?rev=2941&view=rev
Author: azhyd
Date: 2012-08-05 19:14:42 +0000 (Sun, 05 Aug 2012)
Log Message:
-----------
+ more work on pickit3 (almost there)
+ add udev rules file
Modified Paths:
--------------
trunk/piklab_kde4/CMakeLists.txt
trunk/piklab_kde4/src/devices/pic/prog/pic_prog.cpp
trunk/piklab_kde4/src/devices/pic/prog/pic_prog_specific.cpp
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/blinker/blinker.piklab
trunk/piklab_kde4/test/gputils/blinker18/blinker_18.piklab
Added Paths:
-----------
trunk/piklab_kde4/udev/
trunk/piklab_kde4/udev/26-microchip.rules
trunk/piklab_kde4/udev/CMakeLists.txt
Modified: trunk/piklab_kde4/CMakeLists.txt
===================================================================
--- trunk/piklab_kde4/CMakeLists.txt 2012-08-04 23:26:53 UTC (rev 2940)
+++ trunk/piklab_kde4/CMakeLists.txt 2012-08-05 19:14:42 UTC (rev 2941)
@@ -30,5 +30,6 @@
if(NOT WIN32)
add_subdirectory(po)
add_subdirectory(man)
+ add_subdirectory(udev)
install(FILES README Changelog COPYING DESTINATION share/doc/piklab)
endif(NOT WIN32)
Modified: trunk/piklab_kde4/src/devices/pic/prog/pic_prog.cpp
===================================================================
--- trunk/piklab_kde4/src/devices/pic/prog/pic_prog.cpp 2012-08-04 23:26:53 UTC (rev 2940)
+++ trunk/piklab_kde4/src/devices/pic/prog/pic_prog.cpp 2012-08-05 19:14:42 UTC (rev 2941)
@@ -131,7 +131,7 @@
_deviceMemory->setArray(Pic::MemoryRangeType::Config, data);
_hasProtectedCode = _deviceMemory->isProtected(Pic::Protection::ProgramProtected, Pic::MemoryRangeType::Code);
_hasProtectedEeprom = _deviceMemory->isProtected(Pic::Protection::ProgramProtected, Pic::MemoryRangeType::Eeprom);
- log(Log::DebugLevel::Normal, QString(" protected: code=%1 data=%2")
+ log(Log::DebugLevel::Extra, QString(" protected: code=%1 data=%2")
.arg(_hasProtectedCode ? "true" : "false").arg(_hasProtectedEeprom ? "true" : "false"));
// read calibration
if ( !readCalibration() ) return false;
@@ -470,6 +470,7 @@
}
memory.setDebugOn(group().isDebugger());
}
+
if (memory.hasJTagOn()) {
if (issueWarnings) log(Log::LineType::Warning, i18n("Disabling JTAGEN configuration bit."));
memory.setJTagOn(false);
Modified: trunk/piklab_kde4/src/devices/pic/prog/pic_prog_specific.cpp
===================================================================
--- trunk/piklab_kde4/src/devices/pic/prog/pic_prog_specific.cpp 2012-08-04 23:26:53 UTC (rev 2940)
+++ trunk/piklab_kde4/src/devices/pic/prog/pic_prog_specific.cpp 2012-08-05 19:14:42 UTC (rev 2941)
@@ -14,10 +14,10 @@
uint start = 0;
for (; start<data.count(); start++)
if ( data[start]!=device().mask(type) ) break;
- const_cast<PicSpecific *>(this)->log(Log::DebugLevel::Normal, QString("start before align: %1").arg(start));
+ const_cast<PicSpecific *>(this)->log(Log::DebugLevel::Extra, QString("start before align: %1").arg(start));
uint align = device().nbWordsWriteAlignment(type);
start -= start % align;
- const_cast<PicSpecific *>(this)->log(Log::DebugLevel::Normal, QString("start after align: %1 (align=%2)").arg(start).arg(align));
+ const_cast<PicSpecific *>(this)->log(Log::DebugLevel::Extra, QString("start after align: %1 (align=%2)").arg(start).arg(align));
return start;
}
@@ -27,12 +27,12 @@
uint end = data.count() - 1;
for (; end>0; end--)
if ( data[end]!=device().mask(type) ) break;
- const_cast<PicSpecific *>(this)->log(Log::DebugLevel::Normal, QString("end before align: %1").arg(end));
+ const_cast<PicSpecific *>(this)->log(Log::DebugLevel::Extra, QString("end before align: %1").arg(end));
uint align = device().nbWordsWriteAlignment(type);
if ( (end+1) % align ) end += align - (end+1) % align;
// this can happen when the last word is calibration...
if (end >= data.count()) end = data.count() - 1;
- const_cast<PicSpecific *>(this)->log(Log::DebugLevel::Normal, QString("end after align: %1 (align=%2)").arg(end).arg(align));
+ const_cast<PicSpecific *>(this)->log(Log::DebugLevel::Extra, QString("end after align: %1 (align=%2)").arg(end).arg(align));
return end;
}
@@ -43,7 +43,7 @@
if ( wordOffset!=data.count() ) {
uint end = (force || !(capabilities() & VariableSizeReadWrite) ? data.count()-1 : findNonMaskEnd(Pic::MemoryRangeType::Code, data));
nbWords = end - wordOffset + 1;
- log(Log::DebugLevel::Normal, QString(" start=%1 nbWords=%2 total=%3 force=%4 varOffset=%5 varSize=%6")
+ log(Log::DebugLevel::Extra, QString(" start=%1 nbWords=%2 total=%3 force=%4 varOffset=%5 varSize=%6")
.arg(toHexLabel(wordOffset, device().nbCharsAddress()))
.arg(toHexLabel(nbWords, device().nbCharsAddress()))
.arg(toHexLabel(data.count(), device().nbCharsAddress()))
@@ -96,7 +96,7 @@
&& !(capabilities() & VariableOffsetReadWrite)) {
qFatal("Variable-offset-read/write capability is needed for 18J and 24F families...");
}
-
+
if (type == Pic::MemoryRangeType::Config
&& configInCodeArea) {
const uint align = device().nbWordsWriteAlignment(Pic::MemoryRangeType::Code);
Modified: trunk/piklab_kde4/src/progs/pickit3/base/pickit3.cpp
===================================================================
--- trunk/piklab_kde4/src/progs/pickit3/base/pickit3.cpp 2012-08-04 23:26:53 UTC (rev 2940)
+++ trunk/piklab_kde4/src/progs/pickit3/base/pickit3.cpp 2012-08-05 19:14:42 UTC (rev 2941)
@@ -14,10 +14,6 @@
#include "progs/pickit3/base/pickit3_data.h"
#include "devices/pic/pic/pic_group.h"
-using namespace std;
-
-#include <iostream>
-
//-----------------------------------------------------------------------------
const Pickit3::ProgRegion::Data Pickit3::ProgRegion::DATA[Nb_Types] = {
{ Pic::MemoryRangeType::Code, 0x01, 0x01 },
@@ -136,10 +132,10 @@
}
in.resize(size);
- for (uint i = 0; i < 60 && i < size; ++i) in[i] = data[i+offset];
- for (uint k = 60; k < size; k += 64) {
+ for (uint i = 0; i < 60-offset && i < size; ++i) in[i] = data[i+offset];
+ for (uint i = 60-offset; i < size; i += 64) {
if (!port().receive(data)) return false;
- for (uint i = 0; i < 64 && k+i < size; ++i) in[k+i] = data[i];
+ for (uint k = 0; k < 64 && i+k < size; ++k) in[i+k] = data[k];
}
return true;
}
@@ -247,8 +243,6 @@
return true;
}
-#include <iostream>
-
ByteArray Pickit3::Hardware::createConfigPacket() const
{
ByteArray data(334, 0x0, PrintEscapeAll);
@@ -436,21 +430,28 @@
bool Pickit3::Hardware::connectToDevice(BitValue& deviceId)
{
- if (!setBracketStatus(true)) return false;
+ if (!beginBracket()) return false;
ByteArray in;
if (!commandWithComplexResponse(0x70, in)) return false;
deviceId = in.getValue(0, 4);
- return setBracketStatus(false);
+ return endBracket();
}
-bool Pickit3::Hardware::setBracketStatus(bool on)
+bool Pickit3::Hardware::beginBracket()
{
ByteArray in;
ByteArray out(2, 0x0, PrintEscapeAll);
- out[0] = on ? 1 : 0;
+ out[0] = 0x01;
return commandWithComplexResponse(0xA0, in, &out);
}
+bool Pickit3::Hardware::endBracket()
+{
+ ByteArray in;
+ ByteArray out(2, 0x0, PrintEscapeAll);
+ return commandWithComplexResponse(0xA0, in, &out);
+}
+
bool Pickit3::Hardware::getSysVoltages()
{
ByteArray in;
@@ -467,27 +468,58 @@
return commandWithSimpleResponse(0x93, in, &out);
}
-ByteArray Pickit3::Hardware::createOpDescriptor(Pic::MemoryRangeType type, uint offset, uint size) const
+ByteArray Pickit3::Hardware::createOpDescriptor(ProgOptions options) const
{
ByteArray data(0x42, 0x00, PrintEscapeAll);
data.setValue(0x40, 0, 2);
+ data.setValue(uint(options), 6, 4);
+ return data;
+}
+
+void Pickit3::Hardware::addMemRangeToOpDescriptor(Pic::MemoryRangeType type, uint offset, uint size, ByteArray& data)
+{
ProgRegion progRegion = getProgRegion(type);
- data.setValue(progRegion.data().opType, 2, 4);
- ProgOptions options = NoProgOption;
- data.setValue(uint(options), 6, 4);
+ BitValue v = data.getValue(2, 4);
+ v |= progRegion.data().opType;
+ data.setValue(v, 2, 4);
uint i = 10 + progRegion.type() * 8;
data.setValue(offset, i, 4);
data.setValue(offset + size - 1, i+4, 4);
- return data;
}
-bool Pickit3::Hardware::setOpDescriptor(Pic::MemoryRangeType type, uint offset, uint size)
+void Pickit3::Hardware::addMemRangeToOpDescriptor(Pic::MemoryRangeType type, ByteArray& data)
{
- ByteArray out = createOpDescriptor(type, offset, size);
+ uint size = device().nbWords(type) * device().nbBytesWord(type);
+ addMemRangeToOpDescriptor(type, 0, size, data);
+}
+
+bool Pickit3::Hardware::eraseRange(Pic::MemoryRangeType type)
+{
+ ProgOptions options = NoProgOption;
+ ByteArray out = createOpDescriptor(options);
+ addMemRangeToOpDescriptor(type, out);
ByteArray in;
- return commandWithSimpleResponse(0x50, in, &out);
+ if (!commandWithSimpleResponse(0x50, in, &out)) return false;
+ if (!beginBracket()) return false;
+ if (!commandWithComplexResponse(0x53, in)) return false;
+ return endBracket();
}
+bool Pickit3::Hardware::eraseAll()
+{
+ ProgOptions options = NoProgOption;
+ ByteArray out = createOpDescriptor(options);
+ addMemRangeToOpDescriptor(Pic::MemoryRangeType::Code, out);
+ addMemRangeToOpDescriptor(Pic::MemoryRangeType::Eeprom, out);
+ addMemRangeToOpDescriptor(Pic::MemoryRangeType::UserId, out);
+ addMemRangeToOpDescriptor(Pic::MemoryRangeType::Config, out);
+ ByteArray in;
+ if (!commandWithSimpleResponse(0x50, in, &out)) return false;
+ if (!beginBracket()) return false;
+ if (!commandWithComplexResponse(0x53, in)) return false;
+ return endBracket();
+}
+
bool Pickit3::Hardware::getMem(Pic::MemoryRangeType type, uint offset, uint size, ByteArray& in)
{
ByteArray out(0x0A, 0x00, PrintEscapeAll);
@@ -499,24 +531,70 @@
return commandWithComplexResponse(0x61, in, &out);
}
-bool Pickit3::Hardware::read(Pic::MemoryRangeType type, uint wordOffset, Device::Array& data)
+bool Pickit3::Hardware::read(Pic::MemoryRangeType type, uint wordOffset, Device::Array& data, const ::Programmer::VerifyData *vdata)
{
if (!setDebugOption()) return false;
- if (!setBracketStatus(true)) return false;
+ if (!beginBracket()) return false;
uint nbBytesWord = device().nbBytesWord(type);
uint offset = wordOffset * nbBytesWord;
uint nbBytes = data.size() * nbBytesWord;
for (uint i = offset; i < nbBytes; i += 0x600) {
uint size = std::min(uint(0x600), nbBytes - i);
- if (!setOpDescriptor(type, i, size)) return false;
- ByteArray dummy;
- if (!commandWithComplexResponse(0x54, dummy)) return false;
+ ProgOptions options = NoProgOption;
+ ByteArray out = createOpDescriptor(options);
+ addMemRangeToOpDescriptor(type, i, size, out);
ByteArray in;
+ if (!commandWithSimpleResponse(0x50, in, &out)) return false;
+ if (!commandWithComplexResponse(0x54, in)) return false;
if (!getMem(type, i, size, in)) return false;
for (uint k = 0; k < size; k += nbBytesWord) {
uint index = (i + k) / nbBytesWord;
data[index] = in.getValue(k, nbBytesWord);
+ if (vdata != NULL) {
+ if ( !verifyWord(index, data[index], type, *vdata) ) return false;
+ }
}
+ if ( type==Pic::MemoryRangeType::Code || type==Pic::MemoryRangeType::Eeprom )
+ _base.progressMonitor().addTaskProgress(size / nbBytesWord);
}
- return setBracketStatus(false);
+ return endBracket();
}
+
+bool Pickit3::Hardware::setMem(Pic::MemoryRangeType type, uint offset, const ByteArray& out)
+{
+ ByteArray in;
+ ByteArray data(0x0A, 0x00, PrintEscapeAll);
+ ProgRegion progRegion = getProgRegion(type);
+ data.setValue(progRegion.data().memType, 0, 2);
+ data.setValue(offset, 2, 4);
+ data.setValue(out.size(), 6, 4);
+ return commandWithSimpleResponse(0x60, in, &data) && sendBulk(out);
+}
+
+bool Pickit3::Hardware::write(Pic::MemoryRangeType type, uint wordOffset, const Device::Array &data)
+{
+ if (!setDebugOption()) return false;
+ if (!beginBracket()) return false;
+ uint nbBytesWord = device().nbBytesWord(type);
+ uint offset = wordOffset * nbBytesWord;
+ uint nbBytes = data.size() * nbBytesWord;
+ for (uint i = offset; i < nbBytes; i += 0x600) {
+ uint size = std::min(uint(0x600), nbBytes - i);
+ ProgOptions options = DoNotVerify;
+ ByteArray out = createOpDescriptor(options);
+ addMemRangeToOpDescriptor(type, i, size, out);
+ ByteArray in;
+ if (!commandWithSimpleResponse(0x50, in, &out)) return false;
+ out.resize(size);
+ for (uint k = 0; k < size; k += nbBytesWord) {
+ uint index = (i + k) / nbBytesWord;
+ out.setValue(data[index], k, nbBytesWord);
+ }
+ if (!setMem(type, i, out)) return false;
+ if ( type==Pic::MemoryRangeType::Code || type==Pic::MemoryRangeType::Eeprom )
+ _base.progressMonitor().addTaskProgress(size / nbBytesWord);
+ ByteArray dummy;
+ if (!commandWithComplexResponse(0x51, dummy)) return false;
+ }
+ return endBracket();
+}
Modified: trunk/piklab_kde4/src/progs/pickit3/base/pickit3.h
===================================================================
--- trunk/piklab_kde4/src/progs/pickit3/base/pickit3.h 2012-08-04 23:26:53 UTC (rev 2940)
+++ trunk/piklab_kde4/src/progs/pickit3/base/pickit3.h 2012-08-05 19:14:42 UTC (rev 2941)
@@ -198,9 +198,11 @@
Hardware(::Programmer::Base &base);
bool setPower(PowerOptions, uint vdd); // mV
- bool setBracketStatus(bool on);
bool connectToDevice(BitValue& deviceId);
- bool read(Pic::MemoryRangeType type, uint wordOffset, Device::Array& in);
+ bool eraseRange(Pic::MemoryRangeType type);
+ bool eraseAll();
+ bool read(Pic::MemoryRangeType type, uint wordOffset, Device::Array& in, const ::Programmer::VerifyData *vdata);
+ bool write(Pic::MemoryRangeType type, uint wordOffset, const Device::Array& data);
private:
virtual bool internalConnectHardware();
@@ -213,10 +215,14 @@
bool getSysVoltages();
ByteArray createConfigPacket() const;
bool sendConfigPacket();
+ bool beginBracket();
+ bool endBracket();
bool setDebugOption();
- ByteArray createOpDescriptor(Pic::MemoryRangeType type, uint offset, uint size) const;
- bool setOpDescriptor(Pic::MemoryRangeType type, uint offset, uint size);
+ ByteArray createOpDescriptor(ProgOptions options) const;
+ void addMemRangeToOpDescriptor(Pic::MemoryRangeType type, uint offset, uint size, ByteArray& data);
+ void addMemRangeToOpDescriptor(Pic::MemoryRangeType type, ByteArray& data);
bool getMem(Pic::MemoryRangeType type, uint offset, uint size, ByteArray& in);
+ bool setMem(Pic::MemoryRangeType type, uint offset, const ByteArray& out);
bool command(uchar cmd, const ByteArray* out = NULL);
bool commandWithSimpleResponse(uchar cmd, ByteArray& in, const ByteArray* out = NULL);
Modified: trunk/piklab_kde4/src/progs/pickit3/base/pickit3_prog.cpp
===================================================================
--- trunk/piklab_kde4/src/progs/pickit3/base/pickit3_prog.cpp 2012-08-04 23:26:53 UTC (rev 2940)
+++ trunk/piklab_kde4/src/progs/pickit3/base/pickit3_prog.cpp 2012-08-05 19:14:42 UTC (rev 2941)
@@ -39,15 +39,24 @@
return hardware().setPower(options, vdd * 1000);
}
+bool Pickit3::DeviceSpecific::doEraseRange(Pic::MemoryRangeType type)
+{
+ return hardware().eraseRange(type);
+}
+
+bool Pickit3::DeviceSpecific::doErase(bool)
+{
+ return hardware().eraseAll();
+}
+
bool Pickit3::DeviceSpecific::doRead(Pic::MemoryRangeType type, uint wordOffset, Device::Array &data, const ::Programmer::VerifyData *vdata)
{
- if (vdata != NULL) return false;
- else return hardware().read(type, wordOffset, data);
+ return hardware().read(type, wordOffset, data, vdata);
}
-bool Pickit3::DeviceSpecific::doWrite(Pic::MemoryRangeType type, uint wordOffset, const Device::Array &data, bool force)
+bool Pickit3::DeviceSpecific::doWrite(Pic::MemoryRangeType type, uint wordOffset, const Device::Array &data, bool)
{
- return false;
+ return hardware().write(type, wordOffset, data);
}
//-----------------------------------------------------------------------------
Modified: trunk/piklab_kde4/src/progs/pickit3/base/pickit3_prog.h
===================================================================
--- trunk/piklab_kde4/src/progs/pickit3/base/pickit3_prog.h 2012-08-04 23:26:53 UTC (rev 2940)
+++ trunk/piklab_kde4/src/progs/pickit3/base/pickit3_prog.h 2012-08-05 19:14:42 UTC (rev 2941)
@@ -44,8 +44,8 @@
virtual bool setPowerOn();
virtual bool setPowerOff();
virtual bool setTargetPowerOn(bool on);
- virtual bool doEraseRange(Pic::MemoryRangeType) { return false; }
- virtual bool doErase(bool) { return false; }
+ virtual bool doEraseRange(Pic::MemoryRangeType type);
+ virtual bool doErase(bool);
virtual bool doRead(Pic::MemoryRangeType type, uint wordOffset, Device::Array &data, const ::Programmer::VerifyData *vdata);
virtual bool doWrite(Pic::MemoryRangeType type, uint wordOffset, const Device::Array &data, bool force);
};
@@ -56,9 +56,9 @@
public:
virtual QString name() const { return "pickit3"; }
virtual QString label() const { return i18n("Pickit3"); }
- virtual ::Programmer::Properties properties() const { return ::Programmer::Programmer | ::Programmer::CanReadMemory | ::Programmer::HasConnectedState; }
+ 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::HID ); }
+ virtual bool isPortSupported(PortType type) const { return type == PortType::USB; }
virtual bool canReadVoltage(Device::VoltageType) const { return false; }
protected:
Modified: trunk/piklab_kde4/test/gputils/blinker/blinker.piklab
===================================================================
--- trunk/piklab_kde4/test/gputils/blinker/blinker.piklab 2012-08-04 23:26:53 UTC (rev 2940)
+++ trunk/piklab_kde4/test/gputils/blinker/blinker.piklab 2012-08-05 19:14:42 UTC (rev 2941)
@@ -12,9 +12,9 @@
<is_library>true</is_library>
<output_type>executable</output_type>
<programmer>gpsim</programmer>
- <watched_registers>
- <item>112 2 </item>
- </watched_registers>
+ <opened_files>
+ <item>blinker.asm</item>
+ </opened_files>
</general>
<assembler>
<warning_level>0</warning_level>
Modified: trunk/piklab_kde4/test/gputils/blinker18/blinker_18.piklab
===================================================================
--- trunk/piklab_kde4/test/gputils/blinker18/blinker_18.piklab 2012-08-04 23:26:53 UTC (rev 2940)
+++ trunk/piklab_kde4/test/gputils/blinker18/blinker_18.piklab 2012-08-05 19:14:42 UTC (rev 2941)
@@ -12,9 +12,6 @@
<version>0.1</version>
<tool>gputils</tool>
<programmer>icd2</programmer>
- <opened_files>
- <item>blinker_18.asm</item>
- </opened_files>
<watched_registers>
<item>4034 2 </item>
</watched_registers>
Added: trunk/piklab_kde4/udev/26-microchip.rules
===================================================================
--- trunk/piklab_kde4/udev/26-microchip.rules (rev 0)
+++ trunk/piklab_kde4/udev/26-microchip.rules 2012-08-05 19:14:42 UTC (rev 2941)
@@ -0,0 +1,10 @@
+#Pickit
+ATTR{idVendor}=="04d8", ATTR{idProduct}=="0032", MODE="0660", GROUP="microchip"
+#Pickit2
+ATTR{idVendor}=="04d8", ATTR{idProduct}=="0033", MODE="0660", GROUP="microchip"
+#Pickit3
+ATTR{idVendor}=="04d8", ATTR{idProduct}=="900a", MODE="0660", GROUP="microchip"
+#ICD2
+ATTR{idVendor}=="04d8", ATTR{idProduct}=="8000", MODE="0660", GROUP="microchip"
+#ICD21
+ATTR{idVendor}=="04d8", ATTR{idProduct}=="8001", MODE="0660", GROUP="microchip"
Added: trunk/piklab_kde4/udev/CMakeLists.txt
===================================================================
--- trunk/piklab_kde4/udev/CMakeLists.txt (rev 0)
+++ trunk/piklab_kde4/udev/CMakeLists.txt 2012-08-05 19:14:42 UTC (rev 2941)
@@ -0,0 +1,4 @@
+
+if(EXISTS /lib/udev/rules.d/)
+ install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/26-microchip.rules DESTINATION /lib/udev/rules.d/)
+endif(EXISTS /lib/udev/rules.d/)
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <az...@us...> - 2012-08-04 23:26:59
|
Revision: 2940
http://piklab.svn.sourceforge.net/piklab/?rev=2940&view=rev
Author: azhyd
Date: 2012-08-04 23:26:53 +0000 (Sat, 04 Aug 2012)
Log Message:
-----------
fix crash when changing watched variable value
Modified Paths:
--------------
trunk/piklab_kde4/Changelog
trunk/piklab_kde4/cmake/Piklab.cmake
trunk/piklab_kde4/src/common/gui/list_view.cpp
trunk/piklab_kde4/test/gputils/blinker/blinker.piklab
Modified: trunk/piklab_kde4/Changelog
===================================================================
--- trunk/piklab_kde4/Changelog 2012-08-04 23:19:58 UTC (rev 2939)
+++ trunk/piklab_kde4/Changelog 2012-08-04 23:26:53 UTC (rev 2940)
@@ -1,10 +1,11 @@
-0.16.2 (14 July 2012)
+0.16.2 (4 August 2012)
* fixed toolchain output when executable cannot be found
* fixed parsing for jalv2
* fixed template generator for jalv2
* do not set target power with ICD2 if device nominal vdd is not 5V
* add menu entries to configure editor, to toggle/enable breakpoints, to switch editors, and
to toggle read-only mode for hex editor
+* fixed crash when changing watched variable value [reported by Luca]
0.16.1 (1 July 2012)
* fixed command-line utilities compilation with Qt only
Modified: trunk/piklab_kde4/cmake/Piklab.cmake
===================================================================
--- trunk/piklab_kde4/cmake/Piklab.cmake 2012-08-04 23:19:58 UTC (rev 2939)
+++ trunk/piklab_kde4/cmake/Piklab.cmake 2012-08-04 23:26:53 UTC (rev 2940)
@@ -22,13 +22,13 @@
if(QT_ONLY)
add_definitions(-DNO_KDE)
- set(EXE_LIBS nokde ${QT_LIBRARIES})
+ set(EXE_LIBS ${QT_LIBRARIES})
set(GUI_LIBS nokde_gui ${EXE_LIBS})
else(QT_ONLY)
find_package(KDE4 REQUIRED)
add_definitions(${QT_DEFINITIONS} ${KDE4_DEFINITIONS})
include_directories( ${KDE4_INCLUDE_DIRS})
- set(EXE_LIBS ${QT_LIBRARIES} ${KDE4_KDECORE_LIBS} ${KDE4_KIO_LIBS} kde)
+ set(EXE_LIBS ${QT_LIBRARIES} ${KDE4_KDECORE_LIBS} ${KDE4_KIO_LIBS})
set(GUI_LIBS ${KDE4_KDEUI_LIBS} ${KDE4_KDE3SUPPORT_LIBS} ${EXE_LIBS} kde_gui ${KDE4_KTEXTEDITOR_LIBS} ${KDE4_KFILE_LIBS})
endif(QT_ONLY)
Modified: trunk/piklab_kde4/src/common/gui/list_view.cpp
===================================================================
--- trunk/piklab_kde4/src/common/gui/list_view.cpp 2012-08-04 23:19:58 UTC (rev 2939)
+++ trunk/piklab_kde4/src/common/gui/list_view.cpp 2012-08-04 23:26:53 UTC (rev 2940)
@@ -174,6 +174,7 @@
_renaming = false;
bool resetFocus = false;
for (uint i=0; i<_editWidgets.size(); i++) {
+ if ( _editWidgets[i]==NULL ) continue;
if ( lv->viewport()->focusProxy()==_editWidgets[i] ) resetFocus = true;
lv->viewport()->setFocusProxy(NULL);
_editWidgets[i]->hide();
Modified: trunk/piklab_kde4/test/gputils/blinker/blinker.piklab
===================================================================
--- trunk/piklab_kde4/test/gputils/blinker/blinker.piklab 2012-08-04 23:19:58 UTC (rev 2939)
+++ trunk/piklab_kde4/test/gputils/blinker/blinker.piklab 2012-08-04 23:26:53 UTC (rev 2940)
@@ -12,6 +12,9 @@
<is_library>true</is_library>
<output_type>executable</output_type>
<programmer>gpsim</programmer>
+ <watched_registers>
+ <item>112 2 </item>
+ </watched_registers>
</general>
<assembler>
<warning_level>0</warning_level>
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <az...@us...> - 2012-08-04 23:20:06
|
Revision: 2939
http://piklab.svn.sourceforge.net/piklab/?rev=2939&view=rev
Author: azhyd
Date: 2012-08-04 23:19:58 +0000 (Sat, 04 Aug 2012)
Log Message:
-----------
cleanup
Modified Paths:
--------------
trunk/piklab_kde4/src/common/CMakeLists.txt
trunk/piklab_kde4/src/common/global/pfile.cpp
trunk/piklab_kde4/src/common/global/purl.cpp
trunk/piklab_kde4/src/common/global/purl.h
trunk/piklab_kde4/src/common/nokde/CMakeLists.txt
Removed Paths:
-------------
trunk/piklab_kde4/src/common/kde/
trunk/piklab_kde4/src/common/nokde/nokde_pfile.cpp
trunk/piklab_kde4/src/common/nokde/nokde_purl.cpp
Modified: trunk/piklab_kde4/src/common/CMakeLists.txt
===================================================================
--- trunk/piklab_kde4/src/common/CMakeLists.txt 2012-08-04 20:25:23 UTC (rev 2938)
+++ trunk/piklab_kde4/src/common/CMakeLists.txt 2012-08-04 23:19:58 UTC (rev 2939)
@@ -7,7 +7,6 @@
add_subdirectory(nokde)
# add_subdirectory(nokde_gui)
else(QT_ONLY)
- add_subdirectory(kde)
add_subdirectory(kde_gui)
add_subdirectory(gui)
endif(QT_ONLY)
Modified: trunk/piklab_kde4/src/common/global/pfile.cpp
===================================================================
--- trunk/piklab_kde4/src/common/global/pfile.cpp 2012-08-04 20:25:23 UTC (rev 2938)
+++ trunk/piklab_kde4/src/common/global/pfile.cpp 2012-08-04 23:19:58 UTC (rev 2939)
@@ -95,6 +95,88 @@
_url = url;
}
+bool PURL::File::openForWrite()
+{
+ close();
+ _tmp.reset(new KTemporaryFile);
+ if (!_extension.isEmpty()) {
+ _tmp->setSuffix("." + _extension);
+ }
+ if (!_tmp->open()) {
+ _error = i18n("Could not create temporary file.");
+ _log.sorry(_error, i18n("File: %1").arg(_tmp->name()));
+ return false;
+ }
+ return true;
+}
+
+bool PURL::File::close()
+{
+ if (_tmp.get() != NULL) _tmp->close();
+ else _file->close();
+ _stream.reset(NULL);
+
+ bool ok = true;
+ if (_tmp.get() != NULL
+ && !_url.isEmpty()) {
+ _file->setName(_tmp->fileName());
+ if ( !_file->open(IO_ReadOnly) ) {
+ _error = i18n("Could not open temporary file.");
+ _log.sorry(_error, i18n("File: %1").arg(_file->name()));
+ return false;
+ }
+ QByteArray data = _file->readAll();
+ std::auto_ptr<NetAccess> access(new NetAccess);
+ ok = access->upload(_url, data, _log);
+ _file->close();
+ _tmp.reset(NULL);
+ }
+ return ok;
+}
+
+bool PURL::File::openForRead()
+{
+ close();
+
+ if (_url.isLocal()) {
+ _file->setName(_url.filepath());
+ } else {
+ std::auto_ptr<NetAccess> access(new NetAccess);
+ QByteArray data;
+ if (!access->download(_url, data, _log)) {
+ _error = i18n("Could not download file.");
+ return false;
+ }
+
+ _tmp.reset(new KTemporaryFile);
+ if (!_extension.isEmpty()) {
+ _tmp->setSuffix("." + _extension);
+ }
+ if (!_tmp->open()) {
+ _error = i18n("Could not create temporary file.");
+ _log.sorry(_error, i18n("File: %1").arg(_tmp->name()));
+ return false;
+ }
+ _tmp->write(data);
+ _tmp->close();
+ _file->setName(_tmp->fileName());
+ }
+
+ if ( !_file->open(IO_ReadOnly) ) {
+ _error = i18n("Could not open temporary file.");
+ _log.sorry(_error, i18n("File: %1").arg(_file->name()));
+ return false;
+ }
+ return true;
+}
+
+bool PURL::File::remove()
+{
+ close();
+ if ( !_url.isEmpty() ) return _url.del(_log);
+ return false;
+}
+
//-----------------------------------------------------------------------------
PURL::TempFile::TempFile(Log::Generic &log, const QString &extension)
: FileBase(log, extension)
Modified: trunk/piklab_kde4/src/common/global/purl.cpp
===================================================================
--- trunk/piklab_kde4/src/common/global/purl.cpp 2012-08-04 20:25:23 UTC (rev 2938)
+++ trunk/piklab_kde4/src/common/global/purl.cpp 2012-08-04 23:19:58 UTC (rev 2939)
@@ -14,26 +14,79 @@
#include <qdir.h>
#include <qregexp.h>
#include <qmap.h>
+#include <QtNetwork/QNetworkRequest>
+#include <QtNetwork/QNetworkReply>
#include "common/common/synchronous.h"
#include "process.h"
-
-#if !defined(NO_KDE)
-# include <kio/netaccess.h>
-# include <kfileitem.h>
-# include <kconfig.h>
-#endif
-
#include "pfile.h"
//-----------------------------------------------------------------------------
-PURL::Http::Http(const QString &hostname)
- : QHttp(hostname)
+PURL::NetAccess::NetAccess(QObject* parent)
+: QObject(parent)
{
- connect(this, SIGNAL(responseHeaderReceived(const QHttpResponseHeader &)),
- SLOT(responseHeaderReceivedSlot(const QHttpResponseHeader &)));
+ _manager = new QNetworkAccessManager(this);
+ connect(_manager, SIGNAL(finished(QNetworkReply*)), SLOT(finished(QNetworkReply*)));
}
+bool PURL::NetAccess::exists(const Base& purl)
+{
+ QEventLoop eventLoop;
+ connect(_manager, SIGNAL(finished(QNetworkReply*)), &eventLoop, SLOT(quit()));
+ QNetworkRequest req(purl.kurl());
+ _manager->get(req);
+ eventLoop.exec();
+ return _reply->error() != QNetworkReply::NoError;
+}
+
+bool PURL::NetAccess::download(const Base& purl, QByteArray& data, Log::Generic& log)
+{
+ QEventLoop eventLoop;
+ connect(_manager, SIGNAL(finished(QNetworkReply*)), &eventLoop, SLOT(quit()));
+ QNetworkRequest req(purl.kurl());
+ _manager->get(req);
+ eventLoop.exec();
+ if (_reply->error() != QNetworkReply::NoError) {
+ log.sorry(i18n("Download error %1").arg(_reply->error()), purl.pretty());
+ return false;
+ }
+ data = _reply->readAll();
+ return true;
+}
+
+bool PURL::NetAccess::upload(const Base& purl, const QByteArray& data, Log::Generic& log)
+{
+ QEventLoop eventLoop;
+ connect(_manager, SIGNAL(finished(QNetworkReply*)), &eventLoop, SLOT(quit()));
+ QNetworkRequest req(purl.kurl());
+ _manager->put(req, data);
+ eventLoop.exec();
+ if (_reply->error() != QNetworkReply::NoError) {
+ log.sorry(i18n("Upload error %1").arg(_reply->error()), purl.pretty());
+ return false;
+ }
+ return true;
+}
+
+bool PURL::NetAccess::del(const Base& purl, Log::Generic& log)
+{
+ QEventLoop eventLoop;
+ connect(_manager, SIGNAL(finished(QNetworkReply*)), &eventLoop, SLOT(quit()));
+ QNetworkRequest req(purl.kurl());
+ _manager->deleteResource(req);
+ eventLoop.exec();
+ if (_reply->error() != QNetworkReply::NoError) {
+ log.sorry(i18n("Delete error %1").arg(_reply->error()), purl.pretty());
+ return false;
+ }
+ return true;
+}
+
+void PURL::NetAccess::finished(QNetworkReply* reply)
+{
+ _reply.reset(reply);
+}
+
//-----------------------------------------------------------------------------
#if defined(Q_OS_UNIX)
namespace PURL
@@ -249,45 +302,18 @@
return path().startsWith(dir.path());
}
-bool PURL::Base::httpUrlExists(bool *ok) const
-{
- if (ok) *ok = false;
- Http http(_url.host());
- Synchronous sync(500);
- QObject::connect(&http, SIGNAL(done(bool)), &sync, SLOT(done()));
- QFileInfo info(_url.fileName(KUrl::ObeyTrailingSlash));
- http.head(_url.path());
- if ( !sync.enterLoop() ) return false; // timeout
- if ( http.error()!=QHttp::NoError ) return false;
- if (ok ) *ok = true;
- return ( http._header.statusCode()==200 );
-}
-
bool PURL::Base::exists(QDateTime *lastModified) const
{
- if ( isEmpty() ) return false;
- if ( isLocal() ) {
+ if (isEmpty()) return false;
+ if (isLocal()) {
QFileInfo fi(_url.path());
if (lastModified) *lastModified = fi.lastModified();
return fi.exists();
}
- if ( _url.protocol()=="http" ) return httpUrlExists();
-#if !defined(NO_KDE)
- if (lastModified) {
- KIO::UDSEntry uds;
- if ( !KIO::NetAccess::stat(_url, uds, qApp->mainWidget()) ) return false;
- KFileItem item(uds, _url);
- *lastModified = item.time(KFileItem::ModificationTime).dateTime();
- return true;
- } else {
- // assume file exists if ioslave cannot tell...
- return KIO::NetAccess::exists(_url, KIO::NetAccess::SourceSide, qApp->mainWidget());
- }
-#else
- if (lastModified) lastModified->setTime_t(0);
- // assume file exists
- return true;
-#endif
+
+ // ### TODO: lastModified
+ std::auto_ptr<NetAccess> access(new NetAccess);
+ return access->exists(_url);
}
//----------------------------------------------------------------------------
@@ -386,6 +412,50 @@
return true;
}
+bool PURL::Url::copyTo(const Url &destination, Log::Generic &log) const
+{
+ if (isLocal() && destination.isLocal()) {
+ bool ok = QFile::copy(filepath(), destination.filepath());
+ if (!ok) log.sorry(i18n("Could not copy file"), destination.pretty());
+ return ok;
+ }
+
+ std::auto_ptr<NetAccess> access(new NetAccess);
+ QByteArray data;
+ return access->download(*this, data, log) && access->upload(destination, data, log);
+}
+
+bool PURL::Url::create(Log::Generic &log) const
+{
+ if (isLocal()) {
+ // do not overwrite
+ QFile file(filepath());
+ if (file.exists()) {
+ return false;
+ }
+ bool ok = file.open(QIODevice::WriteOnly);
+ if (!ok) log.sorry(i18n("Could not create file"), pretty());
+ return ok;
+ }
+
+ std::auto_ptr<NetAccess> access(new NetAccess);
+ if (access->exists(*this)) return false;
+ QByteArray data;
+ return access->upload(*this, data, log);
+}
+
+bool PURL::Url::del(Log::Generic &log) const
+{
+ if (isLocal()) {
+ bool ok = QFile::remove(filepath());
+ if (!ok) log.sorry(i18n("Could not delete file"), pretty());
+ return ok;
+ }
+
+ std::auto_ptr<NetAccess> access(new NetAccess);
+ return access->del(*this, log);
+}
+
//-----------------------------------------------------------------------------
PURL::UrlList::UrlList(const KUrl::List &list)
{
@@ -430,6 +500,19 @@
return Url(*this, filename);
}
+bool PURL::Directory::create(Log::Generic &log) const
+{
+ if (isLocal()) {
+ QDir root = QDir::root();
+ bool ok = root.mkpath(path());
+ if (!ok) log.sorry(i18n("Could not create directory"), pretty());
+ return ok;
+ }
+
+ log.sorry(i18n("Could not create non-local directory"), pretty());
+ return false;
+}
+
//-----------------------------------------------------------------------------
bool PURL::isRelative(const QString &filepath)
{
Modified: trunk/piklab_kde4/src/common/global/purl.h
===================================================================
--- trunk/piklab_kde4/src/common/global/purl.h 2012-08-04 20:25:23 UTC (rev 2938)
+++ trunk/piklab_kde4/src/common/global/purl.h 2012-08-04 23:19:58 UTC (rev 2939)
@@ -11,8 +11,8 @@
#include "common/common/global.h"
-#include <QtNetwork/QHttp>
#include <QDateTime>
+#include <QtNetwork/QNetworkAccessManager>
#include "log.h"
#include "common/common/purl_base.h"
@@ -20,24 +20,38 @@
namespace PURL
{
//----------------------------------------------------------------------------
-class Http : public QHttp
+class Directory;
+class Base;
+
+enum TerminationType {
+ Terminated, // terminate with '/' unless empty
+ Unterminated
+};
+
+enum SeparatorType {
+ UnixSeparator,
+ WindowsSeparator
+};
+
+//----------------------------------------------------------------------------
+class NetAccess : public QObject
{
Q_OBJECT
public:
- Http(const QString &hostname);
- QHttpResponseHeader _header;
+ NetAccess(QObject* parent = NULL);
+ bool exists(const Base& url);
+ bool download(const Base& url, QByteArray& data, Log::Generic& log);
+ bool upload(const Base& url, const QByteArray& data, Log::Generic& log);
+ bool del(const Base& url, Log::Generic& log);
+
private slots:
- void responseHeaderReceivedSlot(const QHttpResponseHeader &rh) { _header = rh; }
-};
+ void finished(QNetworkReply* reply);
-class Directory;
-
-enum TerminationType {
- Terminated, // terminate with '/' unless empty
- Unterminated
+private:
+ QNetworkAccessManager* _manager;
+ std::auto_ptr<QNetworkReply> _reply;
};
-enum SeparatorType { UnixSeparator, WindowsSeparator };
//----------------------------------------------------------------------------
class Base
@@ -61,9 +75,6 @@
protected:
bool _relative;
KUrl _url;
-
-private:
- bool httpUrlExists(bool *ok = 0) const;
};
//----------------------------------------------------------------------------
Modified: trunk/piklab_kde4/src/common/nokde/CMakeLists.txt
===================================================================
--- trunk/piklab_kde4/src/common/nokde/CMakeLists.txt 2012-08-04 20:25:23 UTC (rev 2938)
+++ trunk/piklab_kde4/src/common/nokde/CMakeLists.txt 2012-08-04 23:19:58 UTC (rev 2939)
@@ -6,8 +6,6 @@
nokde_klocale.cpp
nokde_kurl.cpp
nokde_kprocess.cpp
- nokde_pfile.cpp
- nokde_purl.cpp
)
if(WIN32)
Deleted: trunk/piklab_kde4/src/common/nokde/nokde_pfile.cpp
===================================================================
--- trunk/piklab_kde4/src/common/nokde/nokde_pfile.cpp 2012-08-04 20:25:23 UTC (rev 2938)
+++ trunk/piklab_kde4/src/common/nokde/nokde_pfile.cpp 2012-08-04 23:19:58 UTC (rev 2939)
@@ -1,47 +0,0 @@
-/***************************************************************************
- * Copyright (C) 2005-2006 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 "common/global/pfile.h"
-
-#include <qfile.h>
-
-//-----------------------------------------------------------------------------
-bool PURL::File::openForWrite()
-{
- close();
- _file->setName(url().filepath());
- if (!_file->open(IO_WriteOnly)) {
- _error = i18n("Could not open file for writing.");
- _log.sorry(_error, i18n("File: %1").arg(_file->name()));
- return false;
- }
- return true;
-}
-
-bool PURL::File::close()
-{
- _file->close();
- return ( uint(_file->status())==IO_Ok );
-}
-
-bool PURL::File::openForRead()
-{
- close();
- _file->setName(_url.filepath());
- if ( !_file->open(IO_ReadOnly) ) {
- _error = i18n("Could not open file for reading.");
- _log.sorry(_error, i18n("File: %1").arg(_file->name()));
- return false;
- }
- return true;
-}
-
-bool PURL::File::remove()
-{
- return _file->remove();
-}
Deleted: trunk/piklab_kde4/src/common/nokde/nokde_purl.cpp
===================================================================
--- trunk/piklab_kde4/src/common/nokde/nokde_purl.cpp 2012-08-04 20:25:23 UTC (rev 2938)
+++ trunk/piklab_kde4/src/common/nokde/nokde_purl.cpp 2012-08-04 23:19:58 UTC (rev 2939)
@@ -1,67 +0,0 @@
-/***************************************************************************
- * Copyright (C) 2005-2006 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 "common/global/purl.h"
-
-//-----------------------------------------------------------------------------
-bool PURL::Url::copyTo(const Url &destination, Log::Generic &log) const
-{
- if (!isLocal()) {
- log.sorry(i18n("Could not copy non-local file"), pretty());
- return false;
- }
- if (!destination.isLocal()) {
- log.sorry(i18n("Could not copy to non-local destination"), destination.pretty());
- return false;
- }
-
- // do not overwrite
- bool ok = QFile::copy(filepath(), destination.filepath());
- if (!ok) log.sorry(i18n("Could not copy file"), destination.pretty());
- return ok;
-}
-
-bool PURL::Url::create(Log::Generic &log) const
-{
- if (!isLocal()) {
- log.sorry(i18n("Could not create non-local file"), pretty());
- return false;
- }
- // do not overwrite
- QFile file(filepath());
- if (file.exists()) {
- return false;
- }
- bool ok = file.open(QIODevice::WriteOnly);
- if (!ok) log.sorry(i18n("Could not create file"), pretty());
- return ok;
-}
-
-bool PURL::Url::del(Log::Generic &log) const
-{
- if (!isLocal()) {
- log.sorry(i18n("Could not delete non-local file"), pretty());
- return false;
- }
- bool ok = QFile::remove(filepath());
- if (!ok) log.sorry(i18n("Could not delete file"), pretty());
- return ok;
-}
-
-//-----------------------------------------------------------------------------
-bool PURL::Directory::create(Log::Generic &log) const
-{
- if (!isLocal()) {
- log.sorry(i18n("Could not create non-local directory"), pretty());
- return false;
- }
- QDir root = QDir::root();
- bool ok = root.mkpath(path());
- if (!ok) log.sorry(i18n("Could not create directory"), pretty());
- return ok;
-}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <az...@us...> - 2012-08-04 20:25:29
|
Revision: 2938
http://piklab.svn.sourceforge.net/piklab/?rev=2938&view=rev
Author: azhyd
Date: 2012-08-04 20:25:23 +0000 (Sat, 04 Aug 2012)
Log Message:
-----------
more work on pickit3
Modified Paths:
--------------
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
Modified: trunk/piklab_kde4/src/progs/pickit3/base/pickit3.cpp
===================================================================
--- trunk/piklab_kde4/src/progs/pickit3/base/pickit3.cpp 2012-07-31 04:59:49 UTC (rev 2937)
+++ trunk/piklab_kde4/src/progs/pickit3/base/pickit3.cpp 2012-08-04 20:25:23 UTC (rev 2938)
@@ -19,8 +19,31 @@
#include <iostream>
//-----------------------------------------------------------------------------
+const Pickit3::ProgRegion::Data Pickit3::ProgRegion::DATA[Nb_Types] = {
+ { Pic::MemoryRangeType::Code, 0x01, 0x01 },
+ { Pic::MemoryRangeType::Eeprom, 0x02, 0x02 },
+ { Pic::MemoryRangeType::UserId, 0x04, 0x03 },
+ { Pic::MemoryRangeType::Config, 0x08, 0x04 },
+ { Pic::MemoryRangeType::Nb_Types, 0x10, 0x05 },
+ { Pic::MemoryRangeType::Cal, 0x20, 0x09 },
+ { Pic::MemoryRangeType::ProgramExecutive, 0x40, 0x08 },
+ { Pic::MemoryRangeType::Nb_Types, 0x80, 0x07 },
+ { Pic::MemoryRangeType::Nb_Types, 0x100, 0x0F }
+};
+
+Pickit3::ProgRegion Pickit3::getProgRegion(Pic::MemoryRangeType type)
+{
+ ProgRegion progRegion;
+ for (; progRegion < ProgRegion::Nb_Types; ++progRegion) {
+ if (progRegion.data().type == type) {
+ break;
+ }
+ }
+ return progRegion;
+}
+
+//-----------------------------------------------------------------------------
Pickit3::Port::Port(Log::Base &log)
-//: Port::HID(log, Microchip::VENDOR_ID, 0x900A, BUF_SIZE)
: ::Port::USB(log, Microchip::VENDOR_ID, 0x900A, 1, 0)
{}
@@ -54,13 +77,18 @@
ByteArray data = createArray();
data.setValue(cmd, 0, 1);
data.setValue(0, 1, 1);
- uint len = 2;
- if (out != NULL) {
- len += out->size();
- for (uint i = 0; i < out->size(); ++i) data[2+i] = (*out)[i];
+ uint size = out != NULL ? out->size() : 0;
+ uint len = 2 + size;
+ for (uint i = 0; i < size && i < 58; ++i) data[2+i] = (*out)[i];
+ data.setValue(len, 60, 4);
+
+ if (!port().send(data)) return false;
+ for (uint k = 58; k < size; k += 64) {
+ data.clear();
+ for (uint i = 0; i < 64 && k+i < size; ++i) data[i] = (*out)[k+i];
+ if (!port().send(data)) return false;
}
- data.setValue(len, 60, 4);
- return port().send(data);
+ return true;
}
bool Pickit3::Hardware::commandWithSimpleResponse(uchar cmd, ByteArray& in, const ByteArray* out)
@@ -76,7 +104,7 @@
cmdArray[1] = 0x00;
log(Log::LineType::Error, i18n("Wrong return command \"%1\" (was expecting \"%2\")")
.arg(in.pretty(0, 2)).arg(cmdArray.pretty(0, 2)));
- return false;
+ return false;
}
return true;
}
@@ -93,15 +121,14 @@
if (receivedSubCmd == 0x3F) {
for (;;) {
if (!port().receive(data)) return false;
- receivedSubCmd = data.getValue(2, 2);
- if (receivedSubCmd != 0x3F) break;
int receivedCmd = data.getValue(0, 2);
- if (receivedCmd != cmd) {
+ if (receivedCmd == 0x00) break;
+ if (receivedCmd != 0x3F) {
ByteArray cmdArray(2, 0x00, PrintEscapeAll);
- cmdArray[0] = cmd;
+ cmdArray[0] = 0x3F;
cmdArray[1] = 0x00;
log(Log::LineType::Error, i18n("Wrong return command \"%1\" (was expecting \"%2\")")
- .arg(in.pretty(0, 2)).arg(cmdArray.pretty(0, 2)));
+ .arg(data.pretty(0, 2)).arg(cmdArray.pretty(0, 2)));
return false;
}
}
@@ -117,15 +144,10 @@
return true;
}
-bool Pickit3::Hardware::commandWithSend(uchar cmd, const ByteArray& data)
+bool Pickit3::Hardware::sendBulk(const ByteArray& data)
{
+ // array to send
uint len = data.size();
- ByteArray outLength(2, 0x0, PrintAlphaNum);
- outLength.setValue(len, 0, 2);
- ByteArray in;
- if (!commandWithSimpleResponse(cmd, in, &outLength)) return false;
-
- // array to send
uint nb = (len+2+4) / 64;
if ((len+2+4) % 64 != 0) ++nb;
ByteArray array(64*nb, 'Z', PrintEscapeAll);
@@ -152,7 +174,9 @@
out.clear();
}
}
- return true;
+
+ ByteArray in = createArray();
+ return port().receive(in);
}
bool Pickit3::Hardware::internalConnectHardware()
@@ -394,18 +418,19 @@
bool Pickit3::Hardware::sendConfigPacket()
{
ByteArray out = createConfigPacket();
- if (!commandWithSend(0x40, out)) return false;
- ByteArray in = createArray();
- return port().receive(in);
+ ByteArray in;
+ ByteArray data(2, 0x0, PrintAlphaNum);
+ data.setValue(out.size(), 0, 2);
+ return commandWithSimpleResponse(0x40, in, &data) && sendBulk(out);
}
bool Pickit3::Hardware::setPower(PowerOptions options, uint vdd)
{
+ ByteArray in;
ByteArray out(6, 0x0, PrintEscapeAll);
- out.setValue(0x0004, 0, 2);
+ out.setValue(0x04, 0, 2);
out.setValue(uint(options), 2, 2);
out.setValue((vdd * 8) / 1000, 4, 2);
- ByteArray in;
return commandWithComplexResponse(0x63, in, &out);
}
@@ -420,8 +445,78 @@
bool Pickit3::Hardware::setBracketStatus(bool on)
{
+ ByteArray in;
ByteArray out(2, 0x0, PrintEscapeAll);
out[0] = on ? 1 : 0;
- ByteArray in;
return commandWithComplexResponse(0xA0, in, &out);
}
+
+bool Pickit3::Hardware::getSysVoltages()
+{
+ ByteArray in;
+ if (!commandWithSimpleResponse(0x20, in)) return false;
+ // TODO
+ return true;
+}
+
+bool Pickit3::Hardware::setDebugOption()
+{
+ ByteArray out(10, 0x00, PrintEscapeAll);
+ out.setValue(0x08, 0, 2);
+ ByteArray in;
+ return commandWithSimpleResponse(0x93, in, &out);
+}
+
+ByteArray Pickit3::Hardware::createOpDescriptor(Pic::MemoryRangeType type, uint offset, uint size) const
+{
+ ByteArray data(0x42, 0x00, PrintEscapeAll);
+ data.setValue(0x40, 0, 2);
+ ProgRegion progRegion = getProgRegion(type);
+ data.setValue(progRegion.data().opType, 2, 4);
+ ProgOptions options = NoProgOption;
+ data.setValue(uint(options), 6, 4);
+ uint i = 10 + progRegion.type() * 8;
+ data.setValue(offset, i, 4);
+ data.setValue(offset + size - 1, i+4, 4);
+ return data;
+}
+
+bool Pickit3::Hardware::setOpDescriptor(Pic::MemoryRangeType type, uint offset, uint size)
+{
+ ByteArray out = createOpDescriptor(type, offset, size);
+ ByteArray in;
+ return commandWithSimpleResponse(0x50, in, &out);
+}
+
+bool Pickit3::Hardware::getMem(Pic::MemoryRangeType type, uint offset, uint size, ByteArray& in)
+{
+ ByteArray out(0x0A, 0x00, PrintEscapeAll);
+ ProgRegion progRegion = getProgRegion(type);
+ out.setValue(progRegion.data().memType, 0, 2);
+ out.setValue(offset, 2, 4);
+ out.setValue(size, 6, 4);
+ in.resize(size);
+ return commandWithComplexResponse(0x61, in, &out);
+}
+
+bool Pickit3::Hardware::read(Pic::MemoryRangeType type, uint wordOffset, Device::Array& data)
+{
+ if (!setDebugOption()) return false;
+ if (!setBracketStatus(true)) return false;
+ uint nbBytesWord = device().nbBytesWord(type);
+ uint offset = wordOffset * nbBytesWord;
+ uint nbBytes = data.size() * nbBytesWord;
+ for (uint i = offset; i < nbBytes; i += 0x600) {
+ uint size = std::min(uint(0x600), nbBytes - i);
+ if (!setOpDescriptor(type, i, size)) return false;
+ ByteArray dummy;
+ if (!commandWithComplexResponse(0x54, dummy)) return false;
+ ByteArray in;
+ if (!getMem(type, i, size, in)) return false;
+ for (uint k = 0; k < size; k += nbBytesWord) {
+ uint index = (i + k) / nbBytesWord;
+ data[index] = in.getValue(k, nbBytesWord);
+ }
+ }
+ return setBracketStatus(false);
+}
Modified: trunk/piklab_kde4/src/progs/pickit3/base/pickit3.h
===================================================================
--- trunk/piklab_kde4/src/progs/pickit3/base/pickit3.h 2012-07-31 04:59:49 UTC (rev 2937)
+++ trunk/piklab_kde4/src/progs/pickit3/base/pickit3.h 2012-08-04 20:25:23 UTC (rev 2938)
@@ -9,7 +9,6 @@
#ifndef PICKIT3_H
#define PICKIT3_H
-//#include "common/port/hid_port.h"
#include "common/port/usb_port.h"
#include "devices/pic/prog/pic_prog.h"
@@ -152,6 +151,34 @@
Q_DECLARE_FLAGS(PowerOptions, PowerOption)
Q_DECLARE_OPERATORS_FOR_FLAGS(PowerOptions)
+struct ProgRegionData {
+ Pic::MemoryRangeType type;
+ uint opType;
+ uint memType;
+};
+BEGIN_DECLARE_ENUM(ProgRegion)
+Code = 0, Eeprom, UserIds, Config, Test, OscCal, ProgExec, DebugExec, BootConfig
+END_DECLARE_ENUM_DATA_ONLY(ProgRegion, ProgRegionData)
+
+ProgRegion getProgRegion(Pic::MemoryRangeType);
+
+enum ProgOption {
+ NoProgOption = 0x000,
+ EraseBeforeProgram = 0x001,
+ PreserveEeprom = 0x002,
+ BlankCheckBeforeProgramming = 0x004,
+ OverwriteOscCalValue = 0x008,
+ EraseProgramBootSegment = 0x010,
+ EraseProgramSecureSegment = 0x020,
+ EraseProgramGeneralSegment = 0x040,
+ EraseEedataBootSegment = 0x080,
+ EraseEedataSecureSegment = 0x100,
+ EraseEedataGeneralSegment = 0x200,
+ DoNotVerify = 0x400
+};
+Q_DECLARE_FLAGS(ProgOptions, ProgOption)
+Q_DECLARE_OPERATORS_FOR_FLAGS(ProgOptions)
+
inline ByteArray createArray() { return ByteArray(BUF_SIZE, 'Z', PrintEscapeAll); }
//-----------------------------------------------------------------------------
@@ -173,6 +200,7 @@
bool setPower(PowerOptions, uint vdd); // mV
bool setBracketStatus(bool on);
bool connectToDevice(BitValue& deviceId);
+ bool read(Pic::MemoryRangeType type, uint wordOffset, Device::Array& in);
private:
virtual bool internalConnectHardware();
@@ -182,13 +210,18 @@
bool getSystemVersion();
bool queryProgToGoConfig();
bool getProtocolVersion();
+ bool getSysVoltages();
ByteArray createConfigPacket() const;
bool sendConfigPacket();
+ bool setDebugOption();
+ ByteArray createOpDescriptor(Pic::MemoryRangeType type, uint offset, uint size) const;
+ bool setOpDescriptor(Pic::MemoryRangeType type, uint offset, uint size);
+ bool getMem(Pic::MemoryRangeType type, uint offset, uint size, ByteArray& in);
bool command(uchar cmd, const ByteArray* out = NULL);
bool commandWithSimpleResponse(uchar cmd, ByteArray& in, const ByteArray* out = NULL);
bool commandWithComplexResponse(uchar cmd, ByteArray& in, const ByteArray* out = NULL);
- bool commandWithSend(uchar cmd, const ByteArray& data);
+ bool sendBulk(const ByteArray& out);
};
} // namespace
Modified: trunk/piklab_kde4/src/progs/pickit3/base/pickit3_prog.cpp
===================================================================
--- trunk/piklab_kde4/src/progs/pickit3/base/pickit3_prog.cpp 2012-07-31 04:59:49 UTC (rev 2937)
+++ trunk/piklab_kde4/src/progs/pickit3/base/pickit3_prog.cpp 2012-08-04 20:25:23 UTC (rev 2938)
@@ -41,7 +41,8 @@
bool Pickit3::DeviceSpecific::doRead(Pic::MemoryRangeType type, uint wordOffset, Device::Array &data, const ::Programmer::VerifyData *vdata)
{
- return false;
+ if (vdata != NULL) return false;
+ else return hardware().read(type, wordOffset, data);
}
bool Pickit3::DeviceSpecific::doWrite(Pic::MemoryRangeType type, uint wordOffset, const Device::Array &data, bool force)
Modified: trunk/piklab_kde4/src/progs/pickit3/base/pickit3_prog.h
===================================================================
--- trunk/piklab_kde4/src/progs/pickit3/base/pickit3_prog.h 2012-07-31 04:59:49 UTC (rev 2937)
+++ trunk/piklab_kde4/src/progs/pickit3/base/pickit3_prog.h 2012-08-04 20:25:23 UTC (rev 2938)
@@ -37,15 +37,15 @@
DeviceSpecific(::Programmer::Base &base) : ::Programmer::PicSpecific(base) {}
virtual ::Programmer::Capabilities capabilities() const { return ::Programmer::CanEraseAll; }
- virtual bool canEraseRange(Pic::MemoryRangeType type) const { return true; }
+ virtual bool canEraseRange(Pic::MemoryRangeType) const { return true; }
virtual bool canReadRange(Pic::MemoryRangeType) const { return true; }
virtual bool canWriteRange(Pic::MemoryRangeType) const { return true; }
Hardware& hardware() const { return static_cast<Hardware&>(*_base.hardware()); }
virtual bool setPowerOn();
virtual bool setPowerOff();
virtual bool setTargetPowerOn(bool on);
- virtual bool doEraseRange(Pic::MemoryRangeType type) { return false; }
- virtual bool doErase(bool) { return true; }
+ virtual bool doEraseRange(Pic::MemoryRangeType) { return false; }
+ virtual bool doErase(bool) { return false; }
virtual bool doRead(Pic::MemoryRangeType type, uint wordOffset, Device::Array &data, const ::Programmer::VerifyData *vdata);
virtual bool doWrite(Pic::MemoryRangeType type, uint wordOffset, const Device::Array &data, bool force);
};
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <az...@us...> - 2012-07-31 05:00:01
|
Revision: 2937
http://piklab.svn.sourceforge.net/piklab/?rev=2937&view=rev
Author: azhyd
Date: 2012-07-31 04:59:49 +0000 (Tue, 31 Jul 2012)
Log Message:
-----------
initial work on pickit3 support
Modified Paths:
--------------
trunk/piklab_kde4/src/coff/base/coff_data.h
trunk/piklab_kde4/src/common/common/bitvalue.cpp
trunk/piklab_kde4/src/common/common/bitvalue.h
trunk/piklab_kde4/src/common/port/hid_port.cpp
trunk/piklab_kde4/src/common/port/hid_port.h
trunk/piklab_kde4/src/common/port/port_base.h
trunk/piklab_kde4/src/devices/pic/base/CMakeLists.txt
trunk/piklab_kde4/src/devices/pic/base/pic.cpp
trunk/piklab_kde4/src/devices/pic/base/pic.h
trunk/piklab_kde4/src/devices/pic/prog/pic_prog.h
trunk/piklab_kde4/src/devices/pic/xml/CMakeLists.txt
trunk/piklab_kde4/src/devices/pic/xml/pic_xml_to_data.cpp
trunk/piklab_kde4/src/devices/pic/xml_data/10F200.xml
trunk/piklab_kde4/src/devices/pic/xml_data/18F452.xml
trunk/piklab_kde4/src/piklab/CMakeLists.txt
trunk/piklab_kde4/src/piklab-prog/CMakeLists.txt
trunk/piklab_kde4/src/progs/CMakeLists.txt
trunk/piklab_kde4/src/progs/list/prog_list_noui.cpp
trunk/piklab_kde4/src/progs/pickit1/base/pickit1.cpp
trunk/piklab_kde4/src/progs/pickit1/base/pickit1.h
trunk/piklab_kde4/src/progs/pickit2/base/pickit.cpp
trunk/piklab_kde4/src/progs/pickit2/base/pickit.h
trunk/piklab_kde4/src/progs/pickit2/base/pickit2.cpp
trunk/piklab_kde4/src/progs/pickit2/base/pickit2.h
trunk/piklab_kde4/src/progs/pickit2v2/base/pickit2v2.cpp
trunk/piklab_kde4/src/progs/pickit2v2/base/pickit2v2.h
trunk/piklab_kde4/src/progs/pickit2v2/base/pickit2v2_prog.cpp
trunk/piklab_kde4/src/xml_to_data/prog_xml_to_data.h
trunk/piklab_kde4/src/xml_to_data/xml_to_data.h
Added Paths:
-----------
trunk/piklab_kde4/src/devices/pic/base/pic_prog_family.cpp
trunk/piklab_kde4/src/devices/pic/base/pic_prog_family.h
trunk/piklab_kde4/src/devices/pic/base/pic_prog_family.xml
trunk/piklab_kde4/src/devices/pic/base/pic_prog_family_xml_to_data.cpp
trunk/piklab_kde4/src/progs/pickit3/
trunk/piklab_kde4/src/progs/pickit3/CMakeLists.txt
trunk/piklab_kde4/src/progs/pickit3/base/
trunk/piklab_kde4/src/progs/pickit3/base/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.xml
trunk/piklab_kde4/src/progs/pickit3/base/pickit3_data.cpp
trunk/piklab_kde4/src/progs/pickit3/base/pickit3_data.h
trunk/piklab_kde4/src/progs/pickit3/base/pickit3_prog.cpp
trunk/piklab_kde4/src/progs/pickit3/base/pickit3_prog.h
trunk/piklab_kde4/src/progs/pickit3/xml/
trunk/piklab_kde4/src/progs/pickit3/xml/CMakeLists.txt
trunk/piklab_kde4/src/progs/pickit3/xml/xml_pickit3_parser.cpp
Modified: trunk/piklab_kde4/src/coff/base/coff_data.h
===================================================================
--- trunk/piklab_kde4/src/coff/base/coff_data.h 2012-07-18 06:06:59 UTC (rev 2936)
+++ trunk/piklab_kde4/src/coff/base/coff_data.h 2012-07-31 04:59:49 UTC (rev 2937)
@@ -15,7 +15,9 @@
struct Data {
uint ids[MAX_NB_IDS];
};
+
extern QString findId(uint id);
+ extern const Data &data(const QString &device);
} // namespace
Modified: trunk/piklab_kde4/src/common/common/bitvalue.cpp
===================================================================
--- trunk/piklab_kde4/src/common/common/bitvalue.cpp 2012-07-18 06:06:59 UTC (rev 2936)
+++ trunk/piklab_kde4/src/common/common/bitvalue.cpp 2012-07-31 04:59:49 UTC (rev 2937)
@@ -8,8 +8,10 @@
***************************************************************************/
#include "bitvalue.h"
+//-----------------------------------------------------------------------------
const uint GenericValue::INVALID = 0xFFFFFFFFU;
+//-----------------------------------------------------------------------------
BitValue BitValue::XORn(uint n) const
{
uint nb = nbBits(_value);
@@ -28,3 +30,57 @@
BitValue mask = maxValue(NumberBase::Bin, n);
return res.complementInMask(mask);
}
+
+//-----------------------------------------------------------------------------
+ByteArray::ByteArray(uint length, uchar fillChar, PrintMode mode)
+: _fillChar(fillChar), _mode(mode), _data(length)
+{
+ clear();
+}
+
+void ByteArray::clear()
+{
+ _data.fill(_fillChar);
+}
+
+void ByteArray::resize(uint size)
+{
+ _data.resize(size);
+ clear();
+}
+
+QString ByteArray::pretty() const
+{
+ int end = _data.count() - 1;
+ for (; end>=0; end--)
+ if ( _data[end]!=_fillChar ) break;
+ return pretty(0, end+1);
+}
+
+QString ByteArray::pretty(uint i, uint len) const
+{
+ QString s;
+ for (uint k=0; k<len; ++k) s += toPrintable(_data[i + k], _mode);
+ return s;
+}
+
+uint ByteArray::getValue(uint i, uint len) const
+{
+ uint v = 0;
+ for (uint k=0; k<len; ++k) v |= _data[i + k] << (8*k);
+ return v;
+}
+
+void ByteArray::setValue(GenericValue v, uint i, uint len)
+{
+ for (uint k = 0; k < len ; ++k) {
+ _data[i+k] = v.byte(k);
+ }
+}
+
+void ByteArray::setValueInc(GenericValue v, uint& i, uint len)
+{
+ for (uint k = 0; k < len ; ++k) {
+ _data[i++] = v.byte(k);
+ }
+}
Modified: trunk/piklab_kde4/src/common/common/bitvalue.h
===================================================================
--- trunk/piklab_kde4/src/common/common/bitvalue.h 2012-07-18 06:06:59 UTC (rev 2936)
+++ trunk/piklab_kde4/src/common/common/bitvalue.h 2012-07-31 04:59:49 UTC (rev 2937)
@@ -126,4 +126,29 @@
};
+//-----------------------------------------------------------------------------
+class ByteArray
+{
+public:
+ ByteArray(uint length = 0, uchar fillChar = 0x00, PrintMode mode = PrintEscapeAll);
+ void clear();
+ uint size() const { return _data.count(); }
+ void resize(uint size);
+ QString pretty() const;
+ QString pretty(uint i, uint len) const;
+ uchar &operator[](uint i) { return _data[i]; }
+ uchar operator[](uint i) const { return _data[i]; }
+ uint getValue(uint i, uint len) const;
+ void setValue(GenericValue v, uint i, uint len);
+ void setValueInc(GenericValue v, uint& i, uint len);
+ uchar* data() { return _data.data(); }
+ const uchar* data() const { return _data.data(); }
+
+private:
+ uchar _fillChar;
+ PrintMode _mode;
+ QMemArray<uchar> _data;
+};
+
+
#endif
Modified: trunk/piklab_kde4/src/common/port/hid_port.cpp
===================================================================
--- trunk/piklab_kde4/src/common/port/hid_port.cpp 2012-07-18 06:06:59 UTC (rev 2936)
+++ trunk/piklab_kde4/src/common/port/hid_port.cpp 2012-07-31 04:59:49 UTC (rev 2937)
@@ -17,6 +17,7 @@
# include <linux/hiddev.h>
# include <errno.h>
# include <unistd.h>
+# include <sys/ioctl.h>
#endif
#include "common/common/number.h"
@@ -47,8 +48,8 @@
hiddev_devinfo info;
const bool ok = (ioctl(fd, HIDIOCGDEVINFO, &info) >= 0);
if (ok) {
- vendorId = info.vendor;
- productId = info.product;
+ vendorId = info.vendor & 0xFFFF;
+ productId = info.product & 0xFFFF;
}
::close(fd);
return ok;
@@ -94,13 +95,62 @@
return false;
}
+#include <iostream>
+
+void Port::HID::listReports(int fd)
+{
+ listReports(fd, HID_REPORT_TYPE_INPUT, "input");
+ listReports(fd, HID_REPORT_TYPE_INPUT, "output");
+ listReports(fd, HID_REPORT_TYPE_INPUT, "feature");
+}
+
+void Port::HID::listReports(int fd, int type, const char* name)
+{
+ hiddev_report_info rinfo;
+ rinfo.report_type = type;
+ rinfo.report_id = HID_REPORT_ID_FIRST;
+ int ret = ioctl(fd, HIDIOCGREPORTINFO, &rinfo);
+
+ while (ret >= 0) {
+ for (__u32 i = 0; i < rinfo.num_fields; i++) {
+ hiddev_field_info finfo;
+ finfo.report_type = rinfo.report_type;
+ finfo.report_id = rinfo.report_id;
+ finfo.field_index = i;
+ ioctl(fd, HIDIOCGFIELDINFO, &finfo);
+ std::cout << name << " " << i << " " << finfo.maxusage << std::endl;
+ }
+ rinfo.report_id |= HID_REPORT_ID_NEXT;
+ ret = ioctl(fd, HIDIOCGREPORTINFO, &rinfo);
+ }
+}
+
//-----------------------------------------------------------------------------
#ifdef Q_OS_UNIX
-Port::HID::HID(Log::Base &base, uint vendorId, uint productId)
+Port::HID::HID(Log::Base &base, uint vendorId, uint productId, uint size)
: Base(base), _vendorId(vendorId), _productId(productId),
_handle(-1)
{
+ _repInfoOut.report_type = HID_REPORT_TYPE_OUTPUT;
+ _repInfoOut.report_id = HID_REPORT_ID_FIRST;
+ _repInfoOut.num_fields = 1;
+
+ _repInfoIn.report_type = HID_REPORT_TYPE_INPUT;
+ _repInfoIn.report_id = HID_REPORT_ID_FIRST;
+ _repInfoIn.num_fields = 1;
+
+ _refMultiOut.uref.report_type = HID_REPORT_TYPE_OUTPUT;
+ _refMultiOut.uref.report_id = HID_REPORT_ID_FIRST;
+ _refMultiOut.uref.field_index = 0;
+ _refMultiOut.uref.usage_index = 0;
+ _refMultiOut.num_values = size;
+
+ _refMultiIn.uref.report_type = HID_REPORT_TYPE_INPUT;
+ _refMultiIn.uref.report_id = HID_REPORT_ID_FIRST;
+ _refMultiIn.uref.field_index = 0;
+ _refMultiIn.uref.usage_index = 0;
+ _refMultiIn.num_values = size;
}
Port::HID::~HID()
@@ -128,6 +178,7 @@
setSystemError(i18n("Error opening HID device."));
return false;
}
+ listReports(_handle);
return true;
}
@@ -139,4 +190,21 @@
}
}
+bool Port::HID::write(const char *data, uint size)
+{
+ for (uint i=0; i<size; ++i) _refMultiOut.values[i] = data[i];
+ return ioctl(_handle, HIDIOCSUSAGES, &_refMultiOut) >= 0
+ && ioctl(_handle, HIDIOCSREPORT, &_repInfoOut) >= 0;
+}
+
+bool Port::HID::read(char *data, uint size)
+{
+ if (ioctl(_handle, HIDIOCGUSAGES, &_refMultiIn) < 0
+ || ioctl(_handle, HIDIOCGREPORT, &_repInfoIn) < 0) {
+ return false;
+ }
+ for (uint i=0; i<size; ++i) data[i] = _refMultiIn.values[i];
+ return true;
+}
+
#endif
Modified: trunk/piklab_kde4/src/common/port/hid_port.h
===================================================================
--- trunk/piklab_kde4/src/common/port/hid_port.h 2012-07-18 06:06:59 UTC (rev 2936)
+++ trunk/piklab_kde4/src/common/port/hid_port.h 2012-07-31 04:59:49 UTC (rev 2937)
@@ -11,21 +11,31 @@
#include "port_base.h"
+#ifdef Q_OS_UNIX
+# include <linux/hiddev.h>
+#endif
+
+
namespace Port
{
class HID : public Base
{
public:
- HID(Log::Base &base, uint vendorId, uint productId);
+ HID(Log::Base &base, uint vendorId, uint productId, uint size);
virtual ~HID();
virtual Description description() const { return Description(PortType::HID, QString::null); }
+ bool write(const char *data, uint size);
+ bool read(char *data, uint size);
+
static QString devicePath(uint index);
static bool getDeviceIds(uint index, uint& vendorId, uint& productId);
static bool findDevice(uint vendorId, uint productId, uint& index);
static bool isAvailable();
static QStringList probedDeviceList();
+ static void listReports(int fd);
+ static void listReports(int fd, int type, const char* name);
protected:
virtual bool internalOpen();
@@ -37,6 +47,11 @@
uint _vendorId;
uint _productId;
int _handle;
+
+ hiddev_report_info _repInfoIn;
+ hiddev_report_info _repInfoOut;
+ hiddev_usage_ref_multi _refMultiIn;
+ hiddev_usage_ref_multi _refMultiOut;
};
} // namespace
Modified: trunk/piklab_kde4/src/common/port/port_base.h
===================================================================
--- trunk/piklab_kde4/src/common/port/port_base.h 2012-07-18 06:06:59 UTC (rev 2936)
+++ trunk/piklab_kde4/src/common/port/port_base.h 2012-07-31 04:59:49 UTC (rev 2937)
@@ -46,8 +46,8 @@
protected:
virtual bool internalOpen() = 0;
virtual void internalClose() = 0;
- virtual bool internalSend(const char *, uint, uint) { qFatal("Not implemented"); return false; }
- virtual bool internalReceive(uint, char *, uint) { qFatal("Not implemented"); return false; }
+ virtual bool internalSend(const char*, uint, uint /*timeout*/) { qFatal("Not implemented"); return false; }
+ virtual bool internalReceive(uint, char*, uint /*timeout*/) { qFatal("Not implemented"); return false; }
virtual void setSystemError(const QString &message) = 0;
private:
Modified: trunk/piklab_kde4/src/devices/pic/base/CMakeLists.txt
===================================================================
--- trunk/piklab_kde4/src/devices/pic/base/CMakeLists.txt 2012-07-18 06:06:59 UTC (rev 2936)
+++ trunk/piklab_kde4/src/devices/pic/base/CMakeLists.txt 2012-07-31 04:59:49 UTC (rev 2937)
@@ -1,10 +1,26 @@
include_directories(${CMAKE_CURRENT_SOURCE_DIR})
+SET(pic_prog_family_xml_to_data_SRCS
+ pic_prog_family_xml_to_data.cpp
+)
+automoc(${pic_prog_family_xml_to_data_SRCS})
+add_executable(pic_prog_family_xml_to_data ${pic_prog_family_xml_to_data_SRCS})
+target_link_libraries(pic_prog_family_xml_to_data xmltodata devicebase common ${EXE_LIBS})
+
+FILE(GLOB PROG_XML_DEPEND RELATIVE "${CMAKE_CURRENT_SOURCE_DIR}" "${CMAKE_CURRENT_SOURCE_DIR}/*.xml")
+ADD_CUSTOM_COMMAND(
+ OUTPUT ${CMAKE_CURRENT_SOURCE_DIR}/pic_prog_family_data.cpp
+ COMMAND ${CMAKE_CURRENT_BINARY_DIR}/pic_prog_family_xml_to_data ${CMAKE_CURRENT_SOURCE_DIR}
+ DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/pic_prog_family_xml_to_data ${PROG_XML_DEPEND}
+)
+
SET(picbase_STAT_SRCS
pic.cpp
pic_config.cpp
pic_protection.cpp
pic_register.cpp
+ pic_prog_family.cpp
+ pic_prog_family_data.cpp
)
automoc(${picbase_STAT_SRCS})
add_library(picbase STATIC ${picbase_STAT_SRCS})
Modified: trunk/piklab_kde4/src/devices/pic/base/pic.cpp
===================================================================
--- trunk/piklab_kde4/src/devices/pic/base/pic.cpp 2012-07-18 06:06:59 UTC (rev 2936)
+++ trunk/piklab_kde4/src/devices/pic/base/pic.cpp 2012-07-31 04:59:49 UTC (rev 2937)
@@ -36,18 +36,18 @@
const Pic::Architecture::Data Pic::Architecture::DATA[Nb_Types] = {
// name family_label nbBytesPC nbBytesWord nbBitsRegister registerBankLength
// {Code, Cal, UserID, DevId, Conf, EEPROM, DebugVec, HardStack, CalBackup, Program Executive}
-// properties nominalVdd
- { "baseline", I18N_NOOP("Baseline Family"), 0, 2, 8, 0x020, { 12, 12, 12, 12, 12, 8, 12, 0, 12, 0 }, NoArchitectureProperty, 5.0 }, // 9, 10, 11 or 12-bit program counter
- { "midrange", I18N_NOOP("Mid-Range Family"), 13, 2, 8, 0x080, { 14, 14, 14, 14, 14, 8, 14, 0, 14, 0 }, MaybeSelfWrite, 5.0 }, // max eeprom: 256 words
- { "emidrange", I18N_NOOP("Enhance Mid-Range Family"), 13, 2, 8, 0x080, { 14, 14, 14, 14, 14, 8, 14, 0, 14, 0 }, MaybeSelfWrite, 5.0 }, // max eeprom: 256 words
- { "17C", I18N_NOOP("17C Family"), 16, 2, 8, 0x100, { 16, 0, 0, 0, 16, 8, 0, 0, 0, 0 }, RandomMemoryAccess, 5.0 },
- { "18C", I18N_NOOP("18C Family"), 21, 2, 8, 0x100, { 16, 8, 8, 8, 8, 8, 16, 0, 8, 0 }, PackedHex | RandomMemoryAccess, 5.0 },
- { "18F", I18N_NOOP("18F Family"), 21, 2, 8, 0x100, { 16, 8, 8, 8, 8, 8, 16, 0, 8, 0 }, PackedHex | RandomMemoryAccess | MaybeSelfWrite, 5.0 },
- { "18J", I18N_NOOP("18J Family"), 21, 2, 8, 0x100, { 16, 8, 8, 8, 8, 8, 16, 0, 8, 0 }, PackedHex | RandomMemoryAccess | SelfWrite, 3.3 },
- { "24F", I18N_NOOP("24F Family"), 23, 4, 16, 0x800, { 24, 0, 0, 16, 16, 0, 24, 0, 0, 24 }, RandomMemoryAccess | SelfWrite, 3.3 },
- { "24H", I18N_NOOP("24H Family"), 23, 4, 16, 0x800, { 24, 0, 8, 16, 8, 0, 24, 0, 0, 24 }, RandomMemoryAccess | SelfWrite, 3.3 },
- { "30F", I18N_NOOP("30F Family"), 23, 4, 16, 0xA00, { 24, 0, 24, 16, 16, 16, 24, 0, 0, 24 }, RandomMemoryAccess | SelfWrite, 5.0 }, // dsPIC: eeprom max = 2 kwords = 4 kbytes
- { "33F", I18N_NOOP("33F Family"), 23, 4, 16, 0x800, { 24, 0, 16, 16, 16, 0, 24, 0, 0, 24 }, RandomMemoryAccess | SelfWrite, 3.3 }
+// properties nominalVdd devIdMask
+ { "baseline", I18N_NOOP("Baseline Family"), 0, 2, 8, 0x020, { 12, 12, 12, 12, 12, 8, 12, 0, 12, 0 }, NoArchitectureProperty, 5.0, 0xFFE0 }, // 9, 10, 11 or 12-bit program counter
+ { "midrange", I18N_NOOP("Mid-Range Family"), 13, 2, 8, 0x080, { 14, 14, 14, 14, 14, 8, 14, 0, 14, 0 }, MaybeSelfWrite, 5.0, 0xFFE0 }, // max eeprom: 256 words
+ { "emidrange", I18N_NOOP("Enhanced Mid-Range Family"), 13, 2, 8, 0x080, { 14, 14, 14, 14, 14, 8, 14, 0, 14, 0 }, MaybeSelfWrite, 5.0, 0xFFE0 }, // max eeprom: 256 words
+ { "17C", I18N_NOOP("17C Family"), 16, 2, 8, 0x100, { 16, 0, 0, 0, 16, 8, 0, 0, 0, 0 }, RandomMemoryAccess, 5.0, 0xFFE0 },
+ { "18C", I18N_NOOP("18C Family"), 21, 2, 8, 0x100, { 16, 8, 8, 8, 8, 8, 16, 0, 8, 0 }, PackedHex | RandomMemoryAccess, 5.0, 0xFFE0 },
+ { "18F", I18N_NOOP("18F Family"), 21, 2, 8, 0x100, { 16, 8, 8, 8, 8, 8, 16, 0, 8, 0 }, PackedHex | RandomMemoryAccess | MaybeSelfWrite, 5.0, 0xFFE0 },
+ { "18J", I18N_NOOP("18J Family"), 21, 2, 8, 0x100, { 16, 8, 8, 8, 8, 8, 16, 0, 8, 0 }, PackedHex | RandomMemoryAccess | SelfWrite, 3.3, 0xFFE0 },
+ { "24F", I18N_NOOP("24F Family"), 23, 4, 16, 0x800, { 24, 0, 0, 16, 16, 0, 24, 0, 0, 24 }, RandomMemoryAccess | SelfWrite, 3.3, 0xFFFF },
+ { "24H", I18N_NOOP("24H Family"), 23, 4, 16, 0x800, { 24, 0, 8, 16, 8, 0, 24, 0, 0, 24 }, RandomMemoryAccess | SelfWrite, 3.3, 0xFFFF },
+ { "30F", I18N_NOOP("30F Family"), 23, 4, 16, 0xA00, { 24, 0, 24, 16, 16, 16, 24, 0, 0, 24 }, RandomMemoryAccess | SelfWrite, 5.0, 0xFFFF }, // dsPIC: eeprom max = 2 kwords = 4 kbytes
+ { "33F", I18N_NOOP("33F Family"), 23, 4, 16, 0x800, { 24, 0, 16, 16, 16, 0, 24, 0, 0, 24 }, RandomMemoryAccess | SelfWrite, 3.3, 0xFFFF }
};
const Pic::Checksum::Algorithm::Data Pic::Checksum::Algorithm::DATA[Nb_Types] = {
@@ -145,6 +145,11 @@
return s;
}
+BitValue Pic::Data::devIdMask() const
+{
+ return architecture().data().devIdMask;
+}
+
bool Pic::Data::matchId(BitValue rawId, Device::IdData &idata) const
{
if ( !isPresent(MemoryRangeType::DeviceId) ) return false;
@@ -160,27 +165,28 @@
case Architecture::P18C:
case Architecture::P18F:
case Architecture::P18J:
- nid = rawId.clearMaskBits(0x1F);
+ nid = rawId;
idata.revision = rawId.maskWith(0x1F);
break;
case Architecture::P24F:
- nid = (rawId >> 16).maskWith(0x3FFF);
+ nid = (rawId >> 16);
idata.revision = (rawId >> 6).maskWith(0x7);
idata.minorRevision = rawId.maskWith(0x7);
break;
case Architecture::P30F:
- nid = (rawId >> 16).maskWith(0xFFFF);
+ nid = (rawId >> 16);
idata.revision = (rawId >> 6).maskWith(0x3F);
idata.minorRevision = rawId.maskWith(0x3F);
idata.process = (rawId >> 12).maskWith(0xF);
break;
case Architecture::P24H:
case Architecture::P33F:
- nid = (rawId >> 16).maskWith(0xFFFF);
+ nid = (rawId >> 16);
idata.revision = rawId.maskWith(0xFFFF); // ??
break;
case Architecture::Nb_Types: ASSERT(false); break;
}
+ nid = nid.maskWith(devIdMask());
if ( nid==it.data() ) return true;
}
return false;
@@ -338,33 +344,37 @@
uint Pic::Data::nbWordsWriteAlignment(MemoryRangeType type) const
{
- if (type != MemoryRangeType::Code
- && type != MemoryRangeType::ProgramExecutive) return 1;
- if (_nbWordsCodeWrite == 0) {
- switch (architecture().type()) {
- case Architecture::P24F:
- case Architecture::P24H:
- case Architecture::P33F: return 64;
- case Architecture::P30F: return 32; // ?
- default: return 16; // default ??
- }
- } else return _nbWordsCodeWrite;
+ if (type != MemoryRangeType::Code && type != MemoryRangeType::ProgramExecutive) return 1;
+ if (progFamilyData() != NULL) return progFamilyData()->codeLatches / nbBytesWord(type);
+ if (_nbWordsCodeWrite != 0) return _nbWordsCodeWrite;
+ switch (architecture().type()) {
+ case Architecture::P24F:
+ case Architecture::P24H:
+ case Architecture::P33F: return 64;
+ case Architecture::P30F: return 32; // ?
+ default: return 16; // default ??
+ }
}
uint Pic::Data::nbWordsRowEraseAlignment(MemoryRangeType type) const
{
- if (type != MemoryRangeType::Code
- && type != MemoryRangeType::ProgramExecutive) return 1;
- if (_nbWordsCodeRowErase == 0) {
- switch (architecture().type()) {
- case Architecture::P24F:
- case Architecture::P24H:
- case Architecture::P33F: return 512;
- default: return 16; // default ??
- }
- } else return _nbWordsCodeRowErase;
+ if (type != MemoryRangeType::Code && type != MemoryRangeType::ProgramExecutive) return 1;
+ if (progFamilyData() != NULL) return progFamilyData()->rowEraseLatches / nbBytesWord(type);
+ if (_nbWordsCodeRowErase != 0) return _nbWordsCodeRowErase;
+ switch (architecture().type()) {
+ case Architecture::P24F:
+ case Architecture::P24H:
+ case Architecture::P33F: return 512;
+ default: return 16; // default ??
+ }
}
+const Pic::ProgFamilyData* Pic::Data::progFamilyData() const
+{
+ if (_progFamilyIndex == -1) return NULL;
+ return &PROG_FAMILY_DATA[_progFamilyIndex];
+}
+
//----------------------------------------------------------------------------
QDataStream &operator <<(QDataStream &s, const Pic::VoltageData &vd)
{
@@ -426,6 +436,7 @@
s << static_cast<const Pic::RegistersData &>(*data._registersData);
s << data._nbWordsCodeWrite << data._nbWordsCodeRowErase;
s << Q_UINT8(data._selfWrite);
+ s << Q_UINT8(data._progFamilyIndex);
return s;
}
QDataStream &Pic::operator >>(QDataStream &s, Pic::Data &data)
@@ -439,8 +450,10 @@
s >> data._calibration;
s >> static_cast<Pic::RegistersData &>(*data._registersData);
s >> data._nbWordsCodeWrite >> data._nbWordsCodeRowErase;
- Q_UINT8 sw;
- s >> sw;
- data._selfWrite = sw;
+ Q_UINT8 v;
+ s >> v;
+ data._selfWrite = v;
+ s >> v;
+ data._progFamilyIndex = v;
return s;
}
Modified: trunk/piklab_kde4/src/devices/pic/base/pic.h
===================================================================
--- trunk/piklab_kde4/src/devices/pic/base/pic.h 2012-07-18 06:06:59 UTC (rev 2936)
+++ trunk/piklab_kde4/src/devices/pic/base/pic.h 2012-07-31 04:59:49 UTC (rev 2937)
@@ -14,6 +14,7 @@
#include "common/common/global.h"
#include "common/common/bitvalue.h"
#include "devices/base/generic_device.h"
+#include "pic_prog_family.h"
namespace Pic
{
@@ -62,6 +63,7 @@
uint nbBits[MemoryRangeType::Nb_Types]; // nb bits per word
ArchitectureProperties properties;
double nominalVdd;
+ uint devIdMask;
};
BEGIN_DECLARE_ENUM(Architecture)
Baseline = 0, MidRange, EMidRange, P17C, P18C, P18F, P18J, P24F, P24H, P30F, P33F
@@ -123,16 +125,18 @@
Architecture architecture() const { return _architecture; }
bool is18Family() const { return ( _architecture==Architecture::P18C || _architecture==Architecture::P18F || _architecture==Architecture::P18J); }
bool is16bitFamily() const { return ( _architecture.data().nbBitsRegister==16 ); }
- const VoltageData voltage(ProgVoltageType type) const { return _voltages[type]; }
+ VoltageData voltage(ProgVoltageType type) const { return _voltages[type]; }
virtual bool canWriteCalibration() const { return isWritable(MemoryRangeType::Cal); }
bool checkCalibration(const Device::Array &data, QString *message = 0) const;
const QMap<Device::Special, BitValue> &ids() const { return _ids; }
+ BitValue devIdMask() const;
virtual bool matchId(BitValue rawId, Device::IdData &data) const;
QStringList idNames(const QMap<QString, Device::IdData> &ids) const;
const QMap<QString, Checksum::Data> &checksums() const { return _checksums; }
const RegistersData ®istersData() const;
const CalibrationData &calibrationData() const { return _calibration; }
bool isCalibrationAtCodeEnd() const;
+ const ProgFamilyData* progFamilyData() const;
bool hasFeature(Feature feature, bool *unknown = 0) const;
BitValue nopInstruction() const { return 0x0; }
@@ -141,6 +145,7 @@
private:
Architecture _architecture;
+ int _progFamilyIndex;
QMap<Device::Special, BitValue> _ids;
uint _nbBitsPC;
uint _nbWordsCodeWrite;
Added: trunk/piklab_kde4/src/devices/pic/base/pic_prog_family.cpp
===================================================================
--- trunk/piklab_kde4/src/devices/pic/base/pic_prog_family.cpp (rev 0)
+++ trunk/piklab_kde4/src/devices/pic/base/pic_prog_family.cpp 2012-07-31 04:59:49 UTC (rev 2937)
@@ -0,0 +1,25 @@
+/***************************************************************************
+ * 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 "pic_prog_family.h"
+
+int Pic::findProgFamilyIndex(const QString& family)
+{
+ for (uint i = 0; PROG_FAMILY_DATA[i].name != NULL ; ++i) {
+ if (PROG_FAMILY_DATA[i].name == family) return i;
+ }
+ return -1;
+}
+
+const Pic::ProgFamilyData* Pic::findProgFamilyData(const QString& family)
+{
+ int i = findProgFamilyIndex(family);
+ if (i == -1) return NULL;
+ return &PROG_FAMILY_DATA[i];
+}
+
Added: trunk/piklab_kde4/src/devices/pic/base/pic_prog_family.h
===================================================================
--- trunk/piklab_kde4/src/devices/pic/base/pic_prog_family.h (rev 0)
+++ trunk/piklab_kde4/src/devices/pic/base/pic_prog_family.h 2012-07-31 04:59:49 UTC (rev 2937)
@@ -0,0 +1,35 @@
+/***************************************************************************
+ * 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 PIC_PROG_FAMILY_H
+#define PIC_PROG_FAMILY_H
+
+#include "common/common/global.h"
+
+namespace Pic
+{
+
+ struct ProgFamilyData {
+ const char *name;
+ uint codeWaitTime, lowVoltageCodeWaitTime, eepromWaitTime, configWaitTime, userIdsWaitTime; // ms
+ uint eraseWaitTime, lowVoltageEraseWaitTime; // ms
+ uint codeLatches, eepromLatches, configLatches, userIdsLatches, rowEraseLatches;
+ uint vddMin, vddMax, vddDef; // mV
+ uint vppMin, vppMax, vppDef; // mV
+ uint vddNominalMin, vddNominalMax, eraseMin; // mV
+ uint testStart, testSize; // test memory
+ uint panelSize;
+ uint bootSize;
+ };
+ extern const ProgFamilyData PROG_FAMILY_DATA[];
+ extern int findProgFamilyIndex(const QString& family);
+ extern const ProgFamilyData* findProgFamilyData(const QString& family);
+
+} // namespace
+
+#endif
Added: trunk/piklab_kde4/src/devices/pic/base/pic_prog_family.xml
===================================================================
--- trunk/piklab_kde4/src/devices/pic/base/pic_prog_family.xml (rev 0)
+++ trunk/piklab_kde4/src/devices/pic/base/pic_prog_family.xml 2012-07-31 04:59:49 UTC (rev 2937)
@@ -0,0 +1,17 @@
+<!-- ************************************************************************* -->
+<!-- * 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. * -->
+<!-- *************************************************************************/-->
+<!DOCTYPE piklab>
+<prog_families>
+ <family name="18FXX2_XX8">
+ <waitTimes code="1000" lv_code="1000" eeprom="5000" config="5000" user_ids="5000" erase="10000" lv_erase="1000" />
+ <latches code="8" eeprom="2" config="2" user_ids="8" row_erase="64" />
+ <voltages vdd_min="2125" vdd_max="5500" vdd_def="5000" vpp_min="9000" vpp_max="13250" vpp_def="13000" vdd_nominal_min="4250" vdd_nominal_max="5500" erase_min="4500"/>
+ <memory test_start="0x200000" test_size="0x40" panel_size="0x2000" boot_size="0x2000" />
+ </family>
+</prog_families>
Added: trunk/piklab_kde4/src/devices/pic/base/pic_prog_family_xml_to_data.cpp
===================================================================
--- trunk/piklab_kde4/src/devices/pic/base/pic_prog_family_xml_to_data.cpp (rev 0)
+++ trunk/piklab_kde4/src/devices/pic/base/pic_prog_family_xml_to_data.cpp 2012-07-31 04:59:49 UTC (rev 2937)
@@ -0,0 +1,139 @@
+/***************************************************************************
+ * 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 <map>
+#include <qfile.h>
+#include <qtextstream.h>
+
+#include "common/common/number.h"
+#include "xml_to_data/xml_to_data.h"
+#include "pic_prog_family.h"
+
+namespace Pic
+{
+class ProgXmlToData : public XmlToData
+{
+public:
+ ProgXmlToData() : _current(NULL) {}
+
+private:
+ QString _currentName;
+ ProgFamilyData* _current;
+ typedef std::map<QString, ProgFamilyData*> Map;
+ Map _map;
+
+ virtual QString namespaceName() const { return "Pic"; }
+ virtual QString currentDevice() const { return _currentName; }
+
+//-----------------------------------------------------------------------------
+void processFamily(QDomElement family)
+{
+ QDomElement waitTimes = findUniqueElement(family, "waitTimes", QString::null, QString::null);
+ if (waitTimes.isNull()) qFatal("Missing \"waitTimes\"");
+ bool ok1, ok2, ok3, ok4, ok5, ok6, ok7, ok8, ok9;
+ _current->codeWaitTime = waitTimes.attribute("code").toUInt(&ok1);
+ _current->lowVoltageCodeWaitTime = waitTimes.attribute("lv_code").toUInt(&ok2);
+ _current->eepromWaitTime = waitTimes.attribute("eeprom").toUInt(&ok3);
+ _current->configWaitTime = waitTimes.attribute("config").toUInt(&ok4);
+ _current->userIdsWaitTime = waitTimes.attribute("user_ids").toUInt(&ok5);
+ _current->eraseWaitTime = waitTimes.attribute("erase").toUInt(&ok6);
+ _current->lowVoltageEraseWaitTime = waitTimes.attribute("lv_erase").toUInt(&ok7);
+ if (!ok1 || !ok2 || !ok3 || !ok4 || !ok5 || !ok6 || !ok7) qFatal("invalid or missing waitTime(s)");
+
+ QDomElement latches = findUniqueElement(family, "latches", QString::null, QString::null);
+ if (latches.isNull()) qFatal("Missing \"latches\"");
+ _current->codeLatches = latches.attribute("code").toUInt(&ok1);
+ _current->eepromLatches = latches.attribute("eeprom").toUInt(&ok2);
+ _current->configLatches = latches.attribute("config").toUInt(&ok3);
+ _current->userIdsLatches = latches.attribute("user_ids").toUInt(&ok4);
+ _current->rowEraseLatches = latches.attribute("row_erase").toUInt(&ok5);
+ if (!ok1 || !ok2 || !ok3 || !ok4 || !ok5) qFatal("invalid or missing latche(s)");
+
+ QDomElement voltages = findUniqueElement(family, "voltages", QString::null, QString::null);
+ if (voltages.isNull()) qFatal("Missing \"voltages\"");
+ _current->vddMin = voltages.attribute("vdd_min").toUInt(&ok1);
+ _current->vddMax = voltages.attribute("vdd_max").toUInt(&ok2);
+ _current->vddDef = voltages.attribute("vdd_def").toUInt(&ok3);
+ _current->vppMin = voltages.attribute("vpp_min").toUInt(&ok4);
+ _current->vppMax = voltages.attribute("vpp_max").toUInt(&ok5);
+ _current->vppDef = voltages.attribute("vpp_def").toUInt(&ok6);
+ _current->vddNominalMin = voltages.attribute("vdd_nominal_min").toUInt(&ok7);
+ _current->vddNominalMax = voltages.attribute("vdd_nominal_max").toUInt(&ok8);
+ _current->eraseMin = voltages.attribute("erase_min").toUInt(&ok9);
+ if (!ok1 || !ok2 || !ok3 || !ok4 || !ok5 || !ok6 || !ok7 || !ok8 || !ok9) qFatal("invalid or missing voltage(s)");
+
+ QDomElement memory = findUniqueElement(family, "memory", QString::null, QString::null);
+ if (memory.isNull()) qFatal("Missing \"memory\"");
+ _current->testStart = fromHexLabel(memory.attribute("test_start"), &ok1);
+ _current->testSize = fromHexLabel(memory.attribute("test_size"), &ok2);
+ _current->panelSize = fromHexLabel(memory.attribute("panel_size"), &ok3);
+ _current->bootSize = fromHexLabel(memory.attribute("boot_size"), &ok4);
+ if (!ok1 || !ok2 || !ok3 || !ok4) qFatal("invalid or missing memory attribute(s)");
+}
+
+//-----------------------------------------------------------------------------
+void parse()
+{
+ QDomDocument doc = parseFile("pic_prog_family.xml");
+ QDomElement root = doc.documentElement();
+ if ( root.nodeName()!="prog_families" ) qFatal("root node should be \"prog_families\"");
+ for (QDomNode child=root.firstChild(); !child.isNull(); child = child.nextSibling()) {
+ if ( child.isComment() ) qDebug("comment: %s", child.toComment().data().latin1());
+ else {
+ if ( !child.isElement() ) qFatal("\"prog_families\" child should be an element");
+ if ( child.nodeName()!="family" ) qFatal("Family node should be named \"family\"");
+ QDomElement family = child.toElement();
+ QString name = family.attribute("name");
+ if (_map.find(name) != _map.end()) qFatal(QString("Family already defined for %1").arg(name));
+ _current = new ProgFamilyData;
+ _map[name] = _current;
+ processFamily(family);
+ }
+ }
+}
+
+//-----------------------------------------------------------------------------
+void output()
+{
+ // write .cpp file
+ QFile file("pic_prog_family_data.cpp");
+ if ( !file.open(IO_WriteOnly) ) qFatal(QString("Cannot open output file \"%1\"").arg(file.name()));
+ QTextStream s(&file);
+ s << "// #### Do not edit: this file is autogenerated !!!" << endl << endl;
+ s << "#include \"pic_prog_family.h\"" << endl;
+ s << endl;
+ s << "namespace " << namespaceName() << endl;
+ s << "{" << endl;
+
+ // data list
+ s << "const ProgFamilyData PROG_FAMILY_DATA[] = {" << endl;
+ for (Map::const_iterator it = _map.begin(); it != _map.end(); ++it) {
+ s << " {\"" << it->first << "\", ";
+ const ProgFamilyData& data = *it->second;
+ s << data.codeWaitTime << ", " << data.lowVoltageCodeWaitTime << ", " << data.eepromWaitTime << ", ";
+ s << data.configWaitTime << ", " << data.userIdsWaitTime << ", ";
+ s << data.eraseWaitTime << ", " << data.lowVoltageEraseWaitTime << ", ";
+ s << data.codeLatches << ", " << data.eepromLatches << ", ";
+ s << data.configLatches << ", " << data.userIdsLatches << ", " << data.rowEraseLatches << ", ";
+ s << data.vddMin << ", " << data.vddMax << ", " << data.vddDef << ", ";
+ s << data.vppMin << ", " << data.vppMax << ", " << data.vppDef << ", ";
+ s << data.vddNominalMin << ", " << data.vddNominalMax << ", " << data.eraseMin << ", ";
+ s << data.testStart << ", " << data.testSize << ", " << data.panelSize << ", " << data.bootSize;
+ s << "}," << endl;
+ }
+ s << " {NULL, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} " << endl;
+ s << "};" << endl;
+ s << "}" << endl;
+}
+
+}; // class ProgXmlToData
+
+} // namespace
+
+//-----------------------------------------------------------------------------
+XML_MAIN(Pic::ProgXmlToData)
Modified: trunk/piklab_kde4/src/devices/pic/prog/pic_prog.h
===================================================================
--- trunk/piklab_kde4/src/devices/pic/prog/pic_prog.h 2012-07-18 06:06:59 UTC (rev 2936)
+++ trunk/piklab_kde4/src/devices/pic/prog/pic_prog.h 2012-07-31 04:59:49 UTC (rev 2937)
@@ -76,7 +76,7 @@
Pic::Memory *_deviceMemory;
bool _hasProtectedCode, _hasProtectedEeprom;
- BitValue readDeviceId();
+ virtual BitValue readDeviceId();
bool eraseAll();
bool eraseRange(Pic::MemoryRangeType type);
bool restoreCalibration();
Modified: trunk/piklab_kde4/src/devices/pic/xml/CMakeLists.txt
===================================================================
--- trunk/piklab_kde4/src/devices/pic/xml/CMakeLists.txt 2012-07-18 06:06:59 UTC (rev 2936)
+++ trunk/piklab_kde4/src/devices/pic/xml/CMakeLists.txt 2012-07-31 04:59:49 UTC (rev 2937)
@@ -4,6 +4,5 @@
pic_xml_to_data.cpp
)
automoc(${pic_xml_to_data_SRCS})
-
add_executable(pic_xml_to_data ${pic_xml_to_data_SRCS})
target_link_libraries(pic_xml_to_data picbase xmltodata devicebase common ${EXE_LIBS})
Modified: trunk/piklab_kde4/src/devices/pic/xml/pic_xml_to_data.cpp
===================================================================
--- trunk/piklab_kde4/src/devices/pic/xml/pic_xml_to_data.cpp 2012-07-18 06:06:59 UTC (rev 2936)
+++ trunk/piklab_kde4/src/devices/pic/xml/pic_xml_to_data.cpp 2012-07-31 04:59:49 UTC (rev 2937)
@@ -25,16 +25,35 @@
bool getVoltages(ProgVoltageType type, QDomElement element)
{
QDomElement voltages = findUniqueElement(element, "voltages", "name", type.key());
- if ( voltages.isNull() ) return false;
- bool ok1, ok2, ok3;
- data()->_voltages[type].min = voltages.attribute("min").toDouble(&ok1);
- data()->_voltages[type].max = voltages.attribute("max").toDouble(&ok2);
- data()->_voltages[type].nominal = voltages.attribute("nominal").toDouble(&ok3);
- if ( !ok1 || !ok2 || !ok3 ) qFatal(QString("Cannot extract voltage value for \"%1\"").arg(type.key()));
- if ( data()->_voltages[type].min>data()->_voltages[type].max
- || data()->_voltages[type].nominal<data()->_voltages[type].min
- || data()->_voltages[type].nominal>data()->_voltages[type].max )
- qFatal("Inconsistent voltages order");
+ if (data()->progFamilyData() != NULL) {
+ if (!voltages.isNull()) qFatal("voltages already defines in prog family");
+ if (type==ProgVoltageType::VddWrite) {
+ data()->_voltages[type].min = double(data()->progFamilyData()->vddMin) / 1000;
+ data()->_voltages[type].max = double (data()->progFamilyData()->vddMax) / 1000;
+ data()->_voltages[type].nominal = double(data()->progFamilyData()->vddDef) / 1000;
+ }
+ if (type==ProgVoltageType::Vpp) {
+ data()->_voltages[type].min = double(data()->progFamilyData()->vppMin) / 1000;
+ data()->_voltages[type].max = double(data()->progFamilyData()->vppMax) / 1000;
+ data()->_voltages[type].nominal = double(data()->progFamilyData()->vppDef) / 1000;
+ }
+ if (type==ProgVoltageType::VddBulkErase) {
+ data()->_voltages[type].min = double(data()->progFamilyData()->eraseMin) / 1000;
+ data()->_voltages[type].max = double(data()->progFamilyData()->vddMax) / 1000;
+ data()->_voltages[type].nominal = double(data()->progFamilyData()->vddDef) / 1000;
+ }
+ } else {
+ if ( voltages.isNull() ) return false;
+ bool ok1, ok2, ok3;
+ data()->_voltages[type].min = voltages.attribute("min").toDouble(&ok1);
+ data()->_voltages[type].max = voltages.attribute("max").toDouble(&ok2);
+ data()->_voltages[type].nominal = voltages.attribute("nominal").toDouble(&ok3);
+ if ( !ok1 || !ok2 || !ok3 ) qFatal(QString("Cannot extract voltage value for \"%1\"").arg(type.key()));
+ }
+
+ if (data()->_voltages[type].min > data()->_voltages[type].max) qFatal("Inconsistent voltages order (min > max)");
+ if (data()->_voltages[type].nominal < data()->_voltages[type].min) qFatal("Inconsistent voltages order (nominal < min)");
+ if (data()->_voltages[type].nominal > data()->_voltages[type].max) qFatal("Inconsistent voltages order (nominal > max)");
return true;
}
@@ -77,23 +96,25 @@
if (data()->_calibration.opcode != 0) qFatal("Calibration opcode should be 0");
}
}
+
QString wwa = range.attribute("word_write_align");
QString wea = range.attribute("word_erase_align");
if ( type==MemoryRangeType::Code ) {
data()->_nbWordsCodeWrite = 0; // default
data()->_nbWordsCodeRowErase = 0; // default
- if ( !wwa.isEmpty() ) {
- data()->_nbWordsCodeWrite = wwa.toUInt(&ok);
- if ( !ok || data()->_nbWordsCodeWrite==0 || (data()->_nbWordsCodeWrite%4)!=0 ) qFatal("Malformed word write align");
- } else if ( data()->_architecture==Architecture::P18F || data()->_architecture==Architecture::P18J ) {
- qFatal("Missing word write align");
+ if (data()->progFamilyData() != NULL) {
+ if (!wwa.isEmpty()) qFatal("word write align already defined in prog family");
+ if (!wwa.isEmpty()) qFatal("word erase align already defined in prog family");
+ } else {
+ if ( !wwa.isEmpty() ) {
+ data()->_nbWordsCodeWrite = wwa.toUInt(&ok);
+ if ( !ok || data()->_nbWordsCodeWrite==0 || (data()->_nbWordsCodeWrite%4)!=0 ) qFatal("Malformed word write align");
+ } else if ( data()->_architecture==Architecture::P18F || data()->_architecture==Architecture::P18J ) qFatal("Missing word write align");
+ if ( !wea.isEmpty() ) {
+ data()->_nbWordsCodeRowErase = wea.toUInt(&ok);
+ if ( !ok || (data()->_nbWordsCodeRowErase%4)!=0 ) qFatal("Malformed word erase align");
+ } else if ( data()->_architecture==Architecture::P18F || data()->_architecture==Architecture::P18J ) qFatal("Missing word erase align");
}
- if ( !wea.isEmpty() ) {
- data()->_nbWordsCodeRowErase = wea.toUInt(&ok);
- if ( !ok || (data()->_nbWordsCodeRowErase%4)!=0 ) qFatal("Malformed word erase align");
- } else if ( data()->_architecture==Architecture::P18F || data()->_architecture==Architecture::P18J ) {
- qFatal("Missing word erase align");
- }
} else if ( !wwa.isEmpty() || !wea.isEmpty() ) qFatal("word align should not be defined for this memory range");
return true;
}
@@ -402,6 +423,15 @@
}
}
+ // prog family
+ QString progFamily = device.attribute("prog_family");
+ if (!progFamily.isEmpty()) {
+ data()->_progFamilyIndex = findProgFamilyIndex(progFamily);
+ if (data()->_progFamilyIndex == -1) qFatal("Unknown prog family");
+ } else {
+ data()->_progFamilyIndex = -1;
+ }
+
// voltages
QStringList names;
FOR_EACH(ProgVoltageType, vtype) {
@@ -426,7 +456,7 @@
FOR_EACH(MemoryRangeType, i) {
names += i.key();
if ( !getMemoryRange(i, device) ) continue;
- if ( !(data()->_ranges[i].properties & Programmable) ) continue;
+ if ( !(data()->_ranges[i].properties & Programmable) ) continue;
for(MemoryRangeType k; k<i; ++k) {
if ( !(data()->_ranges[k].properties & Present)
|| !(data()->_ranges[k].properties & Programmable) ) continue;
Modified: trunk/piklab_kde4/src/devices/pic/xml_data/10F200.xml
===================================================================
--- trunk/piklab_kde4/src/devices/pic/xml_data/10F200.xml 2012-07-18 06:06:59 UTC (rev 2936)
+++ trunk/piklab_kde4/src/devices/pic/xml_data/10F200.xml 2012-07-31 04:59:49 UTC (rev 2937)
@@ -26,7 +26,7 @@
<voltages name="vdd_prog" min="4.5" max="5.5" nominal="5" />
<!--* Memory ***************************************************************-->
- <memory name="code" start="0x000" end="0x0FE" />
+ <memory name="code" start="0x000" end="0x0FE" />
<memory name="calibration" start="0x0FF" end="0x0FF" cal_opmask="0xF00" cal_opcode="0xC00" />
<memory name="user_ids" start="0x100" end="0x103" rmask="0x00F" />
<memory name="config" start="0x1FF" end="0x1FF" hexfile_offset="0xFFF" />
Modified: trunk/piklab_kde4/src/devices/pic/xml_data/18F452.xml
===================================================================
--- trunk/piklab_kde4/src/devices/pic/xml_data/18F452.xml 2012-07-18 06:06:59 UTC (rev 2936)
+++ trunk/piklab_kde4/src/devices/pic/xml_data/18F452.xml 2012-07-31 04:59:49 UTC (rev 2937)
@@ -7,7 +7,8 @@
<!--* the Free Software Foundation; either version 2 of the License, or *-->
<!--* (at your option) any later version. *-->
<!--************************************************************************-->
-<device name="18F452" document="010296" status="NR" alternative="18F4520" memory_technology="FLASH" self_write="yes" architecture="18F" id="0x0420" >
+<device name="18F452" document="010296" status="NR" alternative="18F4520" memory_technology="FLASH" self_write="yes"
+ architecture="18F" id="0x0420" prog_family="18FXX2_XX8">
<!--* Checksums ************************************************************-->
<checksums>
@@ -29,13 +30,9 @@
<frequency start="0" end="25" vdd_min="4.2" vdd_max="5.5" />
</frequency_range>
- <voltages name="vpp" min="9" max="13.25" nominal="13" />
- <voltages name="vdd_prog" min="4.5" max="5.5" nominal="5" />
- <voltages name="vdd_prog_write" min="2" max="5.5" nominal="5" />
-
<!--* Memory ***************************************************************-->
- <memory name="code" start="0x000000" end="0x007FFF" word_write_align="4" word_erase_align="32" />
- <memory name="user_ids" start="0x200000" end="0x200007" rmask="0x0F" />
+ <memory name="code" start="0x000000" end="0x007FFF" />
+ <memory name="user_ids" start="0x200000" end="0x200007" rmask="0x0F" />
<memory name="device_id" start="0x3FFFFE" end="0x3FFFFF" />
<memory name="config" start="0x300000" end="0x30000D" />
<memory name="eeprom" start="0x000000" end="0x0000FF" hexfile_offset="0xF00000" />
Modified: trunk/piklab_kde4/src/piklab/CMakeLists.txt
===================================================================
--- trunk/piklab_kde4/src/piklab/CMakeLists.txt 2012-07-18 06:06:59 UTC (rev 2936)
+++ trunk/piklab_kde4/src/piklab/CMakeLists.txt 2012-07-31 04:59:49 UTC (rev 2937)
@@ -18,7 +18,7 @@
customprog
picdembootloader pickit2bootloader tblbootloader
bootloader gpsim psp pickit1
- pickit2v2 pickit2 icd1 icd2 icd2data directprog
+ pickit3 pickit3data pickit2v2 pickit2 icd1 icd2 icd2data directprog
mem24prog picprog progmanager progbase
coff port global
devicelistui mem24ui picui deviceui commonui
Modified: trunk/piklab_kde4/src/piklab-prog/CMakeLists.txt
===================================================================
--- trunk/piklab_kde4/src/piklab-prog/CMakeLists.txt 2012-07-18 06:06:59 UTC (rev 2936)
+++ trunk/piklab_kde4/src/piklab-prog/CMakeLists.txt 2012-07-31 04:59:49 UTC (rev 2937)
@@ -12,7 +12,7 @@
proglistnoui
picdembootloader pickit2bootloader tblbootloader
bootloader gpsim psp pickit1
- pickit2v2 pickit2 icd3 icd1 icd2 icd2data directprog
+ pickit3 pickit3data pickit2v2 pickit2 icd3 icd1 icd2 icd2data directprog
mem24prog picprog progmanager progbase
coff port cli global devicelistnoui
pic picbase picxml mem24 mem24base mem24xml
Modified: trunk/piklab_kde4/src/progs/CMakeLists.txt
===================================================================
--- trunk/piklab_kde4/src/progs/CMakeLists.txt 2012-07-18 06:06:59 UTC (rev 2936)
+++ trunk/piklab_kde4/src/progs/CMakeLists.txt 2012-07-31 04:59:49 UTC (rev 2937)
@@ -6,6 +6,7 @@
add_subdirectory(pickit2)
add_subdirectory(pickit1)
add_subdirectory(pickit2v2)
+add_subdirectory(pickit3)
add_subdirectory(psp)
add_subdirectory(gpsim)
add_subdirectory(bootloader)
Modified: trunk/piklab_kde4/src/progs/list/prog_list_noui.cpp
===================================================================
--- trunk/piklab_kde4/src/progs/list/prog_list_noui.cpp 2012-07-18 06:06:59 UTC (rev 2936)
+++ trunk/piklab_kde4/src/progs/list/prog_list_noui.cpp 2012-07-31 04:59:49 UTC (rev 2937)
@@ -13,6 +13,7 @@
#include "progs/icd2/base/icd2_debug.h"
#include "progs/icd1/base/icd1_prog.h"
//#include "progs/icd3/base/icd3_prog.h"
+#include "progs/pickit3/base/pickit3_prog.h"
#include "progs/pickit2/base/pickit2_prog.h"
#include "progs/pickit1/base/pickit1_prog.h"
#include "progs/psp/base/psp_prog.h"
@@ -30,6 +31,7 @@
addGroup(new Icd2::DebuggerGroup, 0);
addGroup(new Icd1::Group, 0);
//addGroup(new Icd3::ProgrammerGroup, 0);
+ addGroup(new Pickit3::Group, 0);
addGroup(new Pickit2::Group, 0);
//addGroup(new Pickit2V2::Group, 0);
addGroup(new Pickit1::Group, 0);
Modified: trunk/piklab_kde4/src/progs/pickit1/base/pickit1.cpp
===================================================================
--- trunk/piklab_kde4/src/progs/pickit1/base/pickit1.cpp 2012-07-18 06:06:59 UTC (rev 2936)
+++ trunk/piklab_kde4/src/progs/pickit1/base/pickit1.cpp 2012-07-31 04:59:49 UTC (rev 2937)
@@ -10,7 +10,7 @@
bool Pickit1::Baseline::init()
{
- Array cmd;
+ ByteArray cmd = createArray();
cmd[0] = 'c';
cmd[1] = 0x00; // Load Configuration
cmd[2] = 0x02; // Load Program latches
@@ -35,7 +35,7 @@
{
if ( (nb & 0xFF)!=0 ) return Pickit::Baseline::incrementPC(nb);
// work around bugs in firmware
- Array cmd;
+ ByteArray cmd = createArray();
uint high = (nb >> 8) & 0xFF;
log(Log::DebugLevel::Extra, QString("work around bug in firmware (nb_inc=%1 high=%2)")
.arg(toHexLabel(nb, 4)).arg(toHexLabel(high, 2)));
@@ -57,7 +57,7 @@
//----------------------------------------------------------------------------
bool Pickit1::P16F::init()
{
- Array cmd;
+ ByteArray cmd = createArray();
cmd[0] = 'c';
cmd[1] = 0x00; // Load Configuration
cmd[2] = 0x02; // Load Program latches
@@ -80,7 +80,7 @@
bool Pickit1::P16F716::init()
{
- Array cmd;
+ ByteArray cmd = createArray();
cmd[0] = 'c';
cmd[1] = 0x00; // Load Configuration
cmd[2] = 0x02; // Load Program latches
Modified: trunk/piklab_kde4/src/progs/pickit1/base/pickit1.h
===================================================================
--- trunk/piklab_kde4/src/progs/pickit1/base/pickit1.h 2012-07-18 06:06:59 UTC (rev 2936)
+++ trunk/piklab_kde4/src/progs/pickit1/base/pickit1.h 2012-07-31 04:59:49 UTC (rev 2937)
@@ -14,19 +14,15 @@
namespace Pickit1
{
-//-----------------------------------------------------------------------------
-class Array : public Pickit::Array
-{
-public:
- Array() : Pickit::Array(8, 'Z', PrintAlphaNum) {}
-};
+inline ByteArray createArray() { return ByteArray(8, 'Z', PrintAlphaNum); }
+
//-----------------------------------------------------------------------------
class USBPort : public Pickit::USBPort
{
public:
USBPort(Log::Base &log) : Pickit::USBPort(0x0032, log) {}
- virtual Pickit::Array array() const { return Array(); }
+ virtual ByteArray array() const { return createArray(); }
private:
virtual uint readEndPoint() const { return 0x81; }
Modified: trunk/piklab_kde4/src/progs/pickit2/base/pickit.cpp
===================================================================
--- trunk/piklab_kde4/src/progs/pickit2/base/pickit.cpp 2012-07-18 06:06:59 UTC (rev 2936)
+++ trunk/piklab_kde4/src/progs/pickit2/base/pickit.cpp 2012-07-31 04:59:49 UTC (rev 2937)
@@ -12,53 +12,36 @@
#include "progs/base/prog_group.h"
//-----------------------------------------------------------------------------
-Pickit::Array::Array(uint length, uchar fillChar, PrintMode mode)
- : _fillChar(fillChar), _mode(mode), _data(length)
-{
- _data.fill(fillChar);
-}
-
-QString Pickit::Array::pretty() const
-{
- int end = _data.count() - 1;
- for (; end>=0; end--)
- if ( _data[end]!=_fillChar ) break;
- QString s;
- for (int i=0; i<=end; i++) s += toPrintable(_data[i], _mode);
- return s;
-}
-
-//-----------------------------------------------------------------------------
Pickit::USBPort::USBPort(uint deviceId, Log::Base &log)
: Port::USB(log, Microchip::VENDOR_ID, deviceId, CONFIG_VENDOR, 0)
{}
bool Pickit::USBPort::command(uchar c)
{
- Array a = array();
- a._data[0] = c;
+ ByteArray a = array();
+ a[0] = c;
return command(a);
}
bool Pickit::USBPort::command(const char *s)
{
- Array a = array();
+ ByteArray a = array();
if (s) {
- ASSERT( strlen(s)<=a.length() );
- for (uint i=0; i<strlen(s); i++) a._data[i] = s[i];
+ ASSERT( strlen(s)<=a.size() );
+ for (uint i=0; i<strlen(s); i++) a[i] = s[i];
}
return command(a);
}
-bool Pickit::USBPort::command(const Array &cmd)
+bool Pickit::USBPort::command(const ByteArray &cmd)
{
log(Log::DebugLevel::Extra, QString("send command: \"%1\"").arg(cmd.pretty()));
- return write(writeEndPoint(), (const char *)cmd._data.data(), cmd.length());
+ return write(writeEndPoint(), (const char *)cmd.data(), cmd.size());
}
-bool Pickit::USBPort::receive(Pickit::Array &array)
+bool Pickit::USBPort::receive(ByteArray &array)
{
- if ( !read(readEndPoint(), (char *)array._data.data(), array.length()) ) return false;
+ if ( !read(readEndPoint(), (char *)array.data(), array.size()) ) return false;
log(Log::DebugLevel::Max, QString("received: \"%1\"").arg(array.pretty()));
return true;
}
@@ -66,7 +49,7 @@
bool Pickit::USBPort::getMode(VersionData &version, ::Programmer::Mode &mode)
{
if ( !command('v') ) return false;
- Array a = array();
+ ByteArray a = array();
if ( !receive(a) ) return false;
if ( a[5]=='B' ) {
version = VersionData(a[6], a[7], 0);
@@ -81,12 +64,12 @@
bool Pickit::USBPort::receiveWords(uint nbBytesWord, uint nbRead, QValueVector<uint> &words, uint offset)
{
log(Log::DebugLevel::Max, QString("receive words nbBytesWord=%1 nbRead=%2 offset=%3").arg(nbBytesWord).arg(nbRead).arg(offset));
- Array a = array();
- QMemArray<uchar> data(nbRead*a.length());
+ ByteArray a = array();
+ QMemArray<uchar> data(nbRead*a.size());
uint l = 0;
for (uint i=0; i<nbRead; i++) {
if ( !receive(a) ) return false;
- for (uint k=offset; k<a.length(); k++) {
+ for (uint k=offset; k<a.size(); k++) {
data[l] = a[k];
l++;
}
@@ -111,7 +94,7 @@
bool Pickit::Hardware::setTargetPower(uint v)
{
- Array cmd = port().array();
+ ByteArray cmd = port().array();
cmd[0] = 'V';
cmd[1] = v;
return port().command(cmd);
@@ -122,9 +105,9 @@
{
ASSERT( i<data.count() );
ASSERT( nbBytesWord==1 || nbBytesWord==2 );
- Array cmd = port().array();
+ ByteArray cmd = port().array();
uint n = (nbBytesWord==1 ? 2 : 3);
- ASSERT( n*max<=cmd.length() );
+ ASSERT( n*max<=cmd.size() );
for (uint k=0; k<max; k++) {
cmd[n*k] = c;
cmd[n*k+1] = data[i].byte(0);
@@ -141,7 +124,7 @@
if ( !setTargetPower(PowerOn + Osc2_5kHz) ) return false;
Port::usleep(400000); // 400 ms
if ( !setTargetPower(PowerOff) ) return false;
- Pickit::Array cmd = port().array();
+ ByteArray cmd = port().array();
cmd[0] = 'P';
cmd[1] = 'I';
cmd[2] = 120;
@@ -220,7 +203,7 @@
bool Pickit::BMDeviceSpecific::incrementPC(uint nb)
{
- Pickit::Array cmd = hardware().port().array();
+ ByteArray cmd = hardware().port().array();
cmd[0] = 'I';
cmd[1] = nb & 0xFF;
cmd[2] = (nb >> 8) & 0xFF;
@@ -287,7 +270,7 @@
//----------------------------------------------------------------------------
bool Pickit::P16F::gotoMemory(Pic::MemoryRangeType type)
{
- Pickit::Array cmd = hardware().port().array();
+ ByteArray cmd = hardware().port().array();
cmd[0] = 'C';
switch (type.type()) {
case Pic::MemoryRangeType::Code: return true;
@@ -322,7 +305,7 @@
bool Pickit::P16F::doErase(bool)
{
- Pickit::Array cmd = hardware().port().array();
+ ByteArray cmd = hardware().port().array();
cmd[0] = 'C';
cmd[1] = writeCode();
cmd[2] = 0xFF;
Modified: trunk/piklab_kde4/src/progs/pickit2/base/pickit.h
===================================================================
--- trunk/piklab_kde4/src/progs/pickit2/base/pickit.h 2012-07-18 06:06:59 UTC (rev 2936)
+++ trunk/piklab_kde4/src/progs/pickit2/base/pickit.h 2012-07-31 04:59:49 UTC (rev 2937)
@@ -19,35 +19,15 @@
enum PowerType { PowerOff = 0, PowerOn = 1, Osc2_5kHz = 2 };
//-----------------------------------------------------------------------------
-class Array
-{
-public:
- uint length() const { return _data.count(); }
- QString pretty() const;
- uchar &operator[](uint i) { return _data[i]; }
- uchar operator[](uint i) const { return _data[i]; }
-
-protected:
- Array(uint length, uchar fillChar, PrintMode mode);
-
-private:
- uchar _fillChar;
- PrintMode _mode;
- QMemArray<uchar> _data;
-
- friend class USBPort;
-};
-
-//-----------------------------------------------------------------------------
class USBPort : public Port::USB
{
public:
USBPort(uint deviceId, Log::Base &manager);
- virtual Array array() const = 0;
- bool command(const Array &cmd);
+ virtual ByteArray array() const = 0;
+ bool command(const ByteArray &cmd);
bool command(uchar c);
bool command(const char *s);
- bool receive(Array &data);
+ bool receive(ByteArray &data);
bool getMode(VersionData &version, ::Programmer::Mode &mode);
bool receiveWords(uint nbBytesWord, uint nbRead, QValueVector<uint> &data, uint offset = 0);
Modified: trunk/piklab_kde4/src/progs/pickit2/base/pickit2.cpp
===================================================================
--- trunk/piklab_kde4/src/progs/pickit2/base/pickit2.cpp 2012-07-18 06:06:59 UTC (rev 2936)
+++ trunk/piklab_kde4/src/progs/pickit2/base/pickit2.cpp 2012-07-31 04:59:49 UTC (rev 2937)
@@ -12,7 +12,7 @@
#include "common/port/port.h"
//-----------------------------------------------------------------------------
-void Pickit2::USBPort::fillCommand(Pickit::Array &cmd, uchar command, uint nbBytes,
+void Pickit2::USBPort::fillCommand(ByteArray &cmd, uchar command, uint nbBytes,
uint address, uint i, bool longAddress) const
{
cmd[i] = command;
@@ -22,9 +22,9 @@
if (longAddress) cmd[i+4] = (address >> 16) & 0xFF;
}
-Pickit::Array Pickit2::USBPort::createCommand(uchar c, uint nbBytes, uint address, bool longAddress) const
+ByteArray Pickit2::USBPort::createCommand(uchar c, uint nbBytes, uint address, bool longAddress) const
{
- Array cmd;
+ ByteArray cmd = createArray();
fillCommand(cmd, c, nbBytes, address, 0, longAddress);
return cmd;
}
@@ -40,7 +40,7 @@
uint end = 15;
for (; end>start; end--) if ( data[i + end].isInitialized() ) break;
uint nb = end - start + 1;
- Pickit::Array cmd = createCommand(1, 2*nb, 2*i);
+ ByteArray cmd = createCommand(1, 2*nb, 2*i);
if ( !command(cmd) ) return false;
QValueVector<uint> read;
if ( !receiveWords(1, 1, read) ) return false;
@@ -63,7 +63,7 @@
bool Pickit2::USBPort::eraseFirmwareCodeMemory()
{
log(Log::DebugLevel::Normal, " Erase pickit2 firmware");
- Pickit::Array cmd = createCommand(3, 0xC0, 0x2000);
+ ByteArray cmd = createCommand(3, 0xC0, 0x2000);
if ( !command(cm...
[truncated message content] |
|
From: <az...@us...> - 2012-07-18 06:07:06
|
Revision: 2936
http://piklab.svn.sourceforge.net/piklab/?rev=2936&view=rev
Author: azhyd
Date: 2012-07-18 06:06:59 +0000 (Wed, 18 Jul 2012)
Log Message:
-----------
better destination directory for highlight files (?)
Modified Paths:
--------------
trunk/piklab_kde4/src/data/CMakeLists.txt
Modified: trunk/piklab_kde4/src/data/CMakeLists.txt
===================================================================
--- trunk/piklab_kde4/src/data/CMakeLists.txt 2012-07-15 19:03:44 UTC (rev 2935)
+++ trunk/piklab_kde4/src/data/CMakeLists.txt 2012-07-18 06:06:59 UTC (rev 2936)
@@ -13,4 +13,4 @@
DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/syntax_xml_generator
)
ADD_CUSTOM_TARGET(generate_coff-pic ALL DEPENDS coff-pic.xml)
-install(FILES asm-pic.xml coff-pic.xml jal-pic.xml coff-c-pic.xml DESTINATION share/apps/katepart/syntax)
+install(FILES asm-pic.xml coff-pic.xml jal-pic.xml coff-c-pic.xml DESTINATION ${DATA_INSTALL_DIR}/katepart/syntax)
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <az...@us...> - 2012-07-15 19:03:51
|
Revision: 2935
http://piklab.svn.sourceforge.net/piklab/?rev=2935&view=rev
Author: azhyd
Date: 2012-07-15 19:03:44 +0000 (Sun, 15 Jul 2012)
Log Message:
-----------
more work on breapoints GUI
Modified Paths:
--------------
trunk/piklab_kde4/src/data/app_data/katepartui.rc
trunk/piklab_kde4/src/data/app_data/piklabui.rc
trunk/piklab_kde4/src/libgui/breakpoint_view.cpp
trunk/piklab_kde4/src/libgui/gui_debug_manager.cpp
trunk/piklab_kde4/src/libgui/gui_debug_manager.h
Modified: trunk/piklab_kde4/src/data/app_data/katepartui.rc
===================================================================
--- trunk/piklab_kde4/src/data/app_data/katepartui.rc 2012-07-15 00:36:58 UTC (rev 2934)
+++ trunk/piklab_kde4/src/data/app_data/katepartui.rc 2012-07-15 19:03:44 UTC (rev 2935)
@@ -110,6 +110,7 @@
<Separator />
<Action name="editor_toggle_breakpoint" />
<Action name="editor_enable_breakpoint" />
+ <Action name="editor_clear_breakpoints" />
</Menu>
</MenuBar>
Modified: trunk/piklab_kde4/src/data/app_data/piklabui.rc
===================================================================
--- trunk/piklab_kde4/src/data/app_data/piklabui.rc 2012-07-15 00:36:58 UTC (rev 2934)
+++ trunk/piklab_kde4/src/data/app_data/piklabui.rc 2012-07-15 19:03:44 UTC (rev 2935)
@@ -198,9 +198,9 @@
</Menu>
<Menu name="breakpoint_context_menu">
- <Action name="enable_breakpoint" />
- <Action name="toggle_breakpoint" />
- <Action name="clear_breakpoints" />
+ <Action name="editor_enable_breakpoint" />
+ <Action name="editor_toggle_breakpoint" />
+ <Action name="editor_clear_breakpoints" />
</Menu>
</kpartgui>
Modified: trunk/piklab_kde4/src/libgui/breakpoint_view.cpp
===================================================================
--- trunk/piklab_kde4/src/libgui/breakpoint_view.cpp 2012-07-15 00:36:58 UTC (rev 2934)
+++ trunk/piklab_kde4/src/libgui/breakpoint_view.cpp 2012-07-15 19:03:44 UTC (rev 2935)
@@ -31,8 +31,10 @@
SLOT(contextMenu(Q3ListViewItem *, const QPoint &, int)));
_listview->setAllColumnsShowFocus(true);
_listview->addColumn(i18n("Status"));
- _listview->addColumn(i18n("Location"));
+ _listview->addColumn(i18n("File"));
+ _listview->addColumn(i18n("Line"));
_listview->addColumn(i18n("Address"));
+ _listview->setSorting(2);
top->addWidget(_listview);
}
@@ -44,11 +46,12 @@
const Data &data = Breakpoint::list().data(i);
KListViewItem *item = new ListViewItem(_listview, data);
item->setPixmap(0, TextEditor::pixmap(Debugger::manager->breakpointType(data)));
- item->setText(1, data.url.filename() + ":" + QString::number(data.line));
+ item->setText(1, data.url.filename());
+ item->setText(2, QString::number(data.line));
Address address = Breakpoint::list().address(data);
- if ( address.isValid() ) item->setText(2, toHexLabelAbs(address));
- else if ( Debugger::manager->coff() ) item->setText(2, i18n("Non-code breakpoint"));
- else item->setText(2, "---");
+ if ( address.isValid() ) item->setText(3, toHexLabelAbs(address));
+ else if ( Debugger::manager->coff() ) item->setText(3, i18n("Non-code breakpoint"));
+ else item->setText(3, "---");
}
}
@@ -74,8 +77,16 @@
void Breakpoint::View::contextMenu(Q3ListViewItem *item, const QPoint &pos, int)
{
_currentData = (item != NULL ? &static_cast<ListViewItem *>(item)->data() : NULL);
- //updateActions(_currentData);
- QMenu* popup = Main::popup("breakpoint_context_menu");
- if (popup != NULL) popup->exec(pos);
+ PopupMenu pop;
+ pop.addTitle(i18n("Breakpoints"));
+ QAction* a = pop.addAction(i18n("Remove breakpoint"), Debugger::manager, SLOT(toggleBreakpoint()));
+ a->setEnabled(_currentData != NULL);
+ const bool isActive = (_currentData != NULL ? Breakpoint::list().state(*_currentData)==Breakpoint::Active : false);
+ a = pop.addAction(!isActive ? i18n("Enable breakpoint") : i18n("Disable breakpoint"), Debugger::manager, SLOT(toggleEnableBreakpoint()));
+ const Coff::TextObject *coff = Debugger::manager->coff();
+ a->setEnabled(_currentData != NULL && coff != NULL);
+ a = pop.addAction(KIcon("edit-delete"), i18n("Clear"), Debugger::manager, SLOT(clearBreakpoints()));
+ a->setEnabled(Breakpoint::list().count() > 0);
+ pop.exec(pos);
_currentData = NULL;
}
Modified: trunk/piklab_kde4/src/libgui/gui_debug_manager.cpp
===================================================================
--- trunk/piklab_kde4/src/libgui/gui_debug_manager.cpp 2012-07-15 00:36:58 UTC (rev 2934)
+++ trunk/piklab_kde4/src/libgui/gui_debug_manager.cpp 2012-07-15 19:03:44 UTC (rev 2935)
@@ -139,6 +139,13 @@
if (editor != NULL) editor->statusChanged();
}
+void Debugger::GuiManager::clearBreakpoints()
+{
+ Breakpoint::list().clear();
+ Editor* editor = Main::currentEditor();
+ if (editor != NULL) editor->statusChanged();
+}
+
void Debugger::GuiManager::updateEditorMarks(TextEditor &editor) const
{
editor.clearBreakpointMarks();
Modified: trunk/piklab_kde4/src/libgui/gui_debug_manager.h
===================================================================
--- trunk/piklab_kde4/src/libgui/gui_debug_manager.h 2012-07-15 00:36:58 UTC (rev 2934)
+++ trunk/piklab_kde4/src/libgui/gui_debug_manager.h 2012-07-15 19:03:44 UTC (rev 2935)
@@ -32,6 +32,7 @@
virtual bool update(bool gotoPC);
void toggleBreakpoint();
void toggleEnableBreakpoint();
+ void clearBreakpoints();
void showPC() { internalUpdateView(true); }
void showDisassemblyLocation();
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <az...@us...> - 2012-07-15 00:37:04
|
Revision: 2934
http://piklab.svn.sourceforge.net/piklab/?rev=2934&view=rev
Author: azhyd
Date: 2012-07-15 00:36:58 +0000 (Sun, 15 Jul 2012)
Log Message:
-----------
more work on breakpoint GUI
Modified Paths:
--------------
trunk/piklab_kde4/src/data/app_data/katepartui.rc
trunk/piklab_kde4/src/data/app_data/piklabui.rc
trunk/piklab_kde4/src/libgui/breakpoint_view.cpp
trunk/piklab_kde4/src/libgui/gui_debug_manager.cpp
trunk/piklab_kde4/src/libgui/text_editor.cpp
trunk/piklab_kde4/src/libgui/text_editor.h
trunk/piklab_kde4/src/libgui/toplevel.cpp
trunk/piklab_kde4/src/progs/manager/breakpoint.h
Modified: trunk/piklab_kde4/src/data/app_data/katepartui.rc
===================================================================
--- trunk/piklab_kde4/src/data/app_data/katepartui.rc 2012-07-14 23:38:14 UTC (rev 2933)
+++ trunk/piklab_kde4/src/data/app_data/katepartui.rc 2012-07-15 00:36:58 UTC (rev 2934)
@@ -1,5 +1,5 @@
<!DOCTYPE kpartgui SYSTEM "kpartgui.dtd">
-<kpartgui name="KatePartView" version="59">
+<kpartgui name="KatePartView" version="60">
<MenuBar>
<Menu name="file" noMerge="1"><text>&File</text>
<Action name="file_save" group="save_merge" />
@@ -106,6 +106,11 @@
<Action name="tools_join_lines" group="tools_operations" />
<Action name="tools_apply_wordwrap" group="tools_operations" />
</Menu>
+
+ <Separator />
+ <Action name="editor_toggle_breakpoint" />
+ <Action name="editor_enable_breakpoint" />
+
</Menu>
</MenuBar>
@@ -120,7 +125,9 @@
<Action name="spelling_suggestions" group="popup_operations" />
<Separator group="popup_operations" />
<Action name="bookmarks" group="popup_operations" />
- <Separator group="popup_operations" />
+ <Separator />
+ <Action name="editor_toggle_breakpoint" />
+ <Action name="editor_enable_breakpoint" />
</Menu>
<ToolBar name="mainToolBar" noMerge="1"><text>Main Toolbar</text>
Modified: trunk/piklab_kde4/src/data/app_data/piklabui.rc
===================================================================
--- trunk/piklab_kde4/src/data/app_data/piklabui.rc 2012-07-14 23:38:14 UTC (rev 2933)
+++ trunk/piklab_kde4/src/data/app_data/piklabui.rc 2012-07-15 00:36:58 UTC (rev 2934)
@@ -31,7 +31,6 @@
<Menu name="editor">
<text context="@title:menu">Editor</text>
- <Merge/>
</Menu>
<Menu name="window">
@@ -43,8 +42,6 @@
<Separator/>
<Action name="window_switch_to"/>
<Action name="window_switch_source"/>
- <Action name="window_toggle_breakpoint"/>
- <Action name="window_enable_breakpoint"/>
<Action name="window_show_disassembly_location"/>
<Separator/>
<Merge/>
Modified: trunk/piklab_kde4/src/libgui/breakpoint_view.cpp
===================================================================
--- trunk/piklab_kde4/src/libgui/breakpoint_view.cpp 2012-07-14 23:38:14 UTC (rev 2933)
+++ trunk/piklab_kde4/src/libgui/breakpoint_view.cpp 2012-07-15 00:36:58 UTC (rev 2934)
@@ -15,17 +15,6 @@
#include "gui_debug_manager.h"
//----------------------------------------------------------------------------
-void Breakpoint::updateActions(const Data *data)
-{
- const bool hasBreakpoint = (data ? Breakpoint::list().contains(*data) : false);
- Main::action("window_toggle_breakpoint")->setText(hasBreakpoint ? i18n("Remove breakpoint") : i18n("Set breakpoint"));
- Main::action("window_toggle_breakpoint")->setEnabled(data);
- const bool isActive = (hasBreakpoint ? Breakpoint::list().state(*data)==Breakpoint::Active : false);
- Main::action("window_enable_breakpoint")->setText(!isActive ? i18n("Enable breakpoint") : i18n("Disable breakpoint"));
- Main::action("window_enable_breakpoint")->setEnabled(Debugger::manager->coff() && hasBreakpoint);
-}
-
-//----------------------------------------------------------------------------
Breakpoint::ListViewItem::ListViewItem(ListView *parent, const Data &data)
: KListViewItem(parent), _data(data)
{}
@@ -85,7 +74,7 @@
void Breakpoint::View::contextMenu(Q3ListViewItem *item, const QPoint &pos, int)
{
_currentData = (item != NULL ? &static_cast<ListViewItem *>(item)->data() : NULL);
- updateActions(_currentData);
+ //updateActions(_currentData);
QMenu* popup = Main::popup("breakpoint_context_menu");
if (popup != NULL) popup->exec(pos);
_currentData = NULL;
Modified: trunk/piklab_kde4/src/libgui/gui_debug_manager.cpp
===================================================================
--- trunk/piklab_kde4/src/libgui/gui_debug_manager.cpp 2012-07-14 23:38:14 UTC (rev 2933)
+++ trunk/piklab_kde4/src/libgui/gui_debug_manager.cpp 2012-07-15 00:36:58 UTC (rev 2934)
@@ -1,5 +1,5 @@
/***************************************************************************
- * Copyright (C) 2006 Nicolas Hadacek <ha...@kd...> *
+ * Copyright (C) 2006-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 *
@@ -116,8 +116,10 @@
Breakpoint::list().append(data);
Breakpoint::list().setAddress(data, address);
if (_coff != NULL) toggleEnableBreakpoint();
- Editor* editor = Main::currentEditor();
- if (editor != NULL) editor->statusChanged();
+ else {
+ Editor* editor = Main::currentEditor();
+ if (editor != NULL) editor->statusChanged();
+ }
}
void Debugger::GuiManager::toggleEnableBreakpoint()
@@ -133,6 +135,8 @@
Breakpoint::list().setState(data, Breakpoint::Active);
} else Breakpoint::list().setState(data, Breakpoint::Disabled);
}
+ Editor* editor = Main::currentEditor();
+ if (editor != NULL) editor->statusChanged();
}
void Debugger::GuiManager::updateEditorMarks(TextEditor &editor) const
Modified: trunk/piklab_kde4/src/libgui/text_editor.cpp
===================================================================
--- trunk/piklab_kde4/src/libgui/text_editor.cpp 2012-07-14 23:38:14 UTC (rev 2933)
+++ trunk/piklab_kde4/src/libgui/text_editor.cpp 2012-07-15 00:36:58 UTC (rev 2934)
@@ -1,5 +1,5 @@
/***************************************************************************
- * Copyright (C) 2005-2006 Nicolas Hadacek <ha...@kd...> *
+ * Copyright (C) 2005-2012 Nicolas Hadacek <ha...@kd...> *
* Copyright (C) 2003-2004 Alain Gibaud <ala...@fr...> *
* *
* This program is free software; you can redistribute it and/or modify *
@@ -17,6 +17,7 @@
#include <ktexteditor/editor.h>
#include <kxmlguifactory.h>
#include <kstandarddirs.h>
+#include <kactioncollection.h>
#include "main_global.h"
#include "gui_debug_manager.h"
@@ -124,6 +125,9 @@
v->replaceXMLFile(katePartUI, katePartLocalUI);
}
+ v->actionCollection()->addAction("editor_toggle_breakpoint", Debugger::manager, SLOT(toggleBreakpoint()));
+ v->actionCollection()->addAction("editor_enable_breakpoint", Debugger::manager, SLOT(toggleEnableBreakpoint()));
+
if (_view == NULL) _view = v;
ASSERT(v != NULL);
connect(v, SIGNAL(focusIn(KTextEditor::View*)), SLOT(focusIn(KTextEditor::View*)));
@@ -209,9 +213,19 @@
_oldModified = isModified();
_oldReadOnly = isReadOnly();
const Breakpoint::Data data(url(), line);
- Breakpoint::updateActions(&data);
+ updateBreakpointActions(&data);
}
+void TextEditor::updateBreakpointActions(const Breakpoint::Data *data)
+{
+ const bool hasBreakpoint = (data ? Breakpoint::list().contains(*data) : false);
+ _view->action("editor_toggle_breakpoint")->setText(hasBreakpoint ? i18n("Remove breakpoint") : i18n("Set breakpoint"));
+ _view->action("editor_toggle_breakpoint")->setEnabled(data);
+ const bool isActive = (hasBreakpoint ? Breakpoint::list().state(*data)==Breakpoint::Active : false);
+ _view->action("editor_enable_breakpoint")->setText(!isActive ? i18n("Enable breakpoint") : i18n("Disable breakpoint"));
+ _view->action("editor_enable_breakpoint")->setEnabled(Debugger::manager->coff() && hasBreakpoint);
+}
+
void TextEditor::highlightModeChanged()
{
if ( fileType()==PURL::Nb_FileTypes ) return;
Modified: trunk/piklab_kde4/src/libgui/text_editor.h
===================================================================
--- trunk/piklab_kde4/src/libgui/text_editor.h 2012-07-14 23:38:14 UTC (rev 2933)
+++ trunk/piklab_kde4/src/libgui/text_editor.h 2012-07-15 00:36:58 UTC (rev 2934)
@@ -1,5 +1,5 @@
/***************************************************************************
- * Copyright (C) 2005 Nicolas Hadacek <ha...@kd...> *
+ * Copyright (C) 2005-2012 Nicolas Hadacek <ha...@kd...> *
* Copyright (C) 2003-2004 Alain Gibaud <ala...@fr...> *
* *
* This program is free software; you can redistribute it and/or modify *
@@ -77,6 +77,7 @@
uint highlightMode(const QString &name) const;
void clearMarks(uint type);
void init(bool withDebugger);
+ void updateBreakpointActions(const Breakpoint::Data*);
};
//-----------------------------------------------------------------------------
Modified: trunk/piklab_kde4/src/libgui/toplevel.cpp
===================================================================
--- trunk/piklab_kde4/src/libgui/toplevel.cpp 2012-07-14 23:38:14 UTC (rev 2933)
+++ trunk/piklab_kde4/src/libgui/toplevel.cpp 2012-07-15 00:36:58 UTC (rev 2934)
@@ -201,8 +201,6 @@
a = actionCollection()->addAction("window_switch_source", Main::_editorManager, SLOT(switchHeaderImplementation()));
a->setText(i18n("Switch Header/Implementation"));
a->setShortcut(Qt::SHIFT + Qt::Key_F12);
- actionCollection()->addAction("window_toggle_breakpoint", Debugger::manager, SLOT(toggleBreakpoint()));
- actionCollection()->addAction("window_enable_breakpoint", Debugger::manager, SLOT(toggleEnableBreakpoint()));
a = actionCollection()->addAction("window_show_disassembly_location", Debugger::manager, SLOT(showDisassemblyLocation()));
a->setText(i18n("Show disassembly location"));
Modified: trunk/piklab_kde4/src/progs/manager/breakpoint.h
===================================================================
--- trunk/piklab_kde4/src/progs/manager/breakpoint.h 2012-07-14 23:38:14 UTC (rev 2933)
+++ trunk/piklab_kde4/src/progs/manager/breakpoint.h 2012-07-15 00:36:58 UTC (rev 2934)
@@ -30,7 +30,6 @@
PURL::Url url;
uint line;
};
-extern void updateActions(const Data *data);
//----------------------------------------------------------------------------
class List;
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <az...@us...> - 2012-07-14 23:38:21
|
Revision: 2933
http://piklab.svn.sourceforge.net/piklab/?rev=2933&view=rev
Author: azhyd
Date: 2012-07-14 23:38:14 +0000 (Sat, 14 Jul 2012)
Log Message:
-----------
misc fixes
Modified Paths:
--------------
trunk/piklab_kde4/Changelog
trunk/piklab_kde4/src/common/gui/global_ui.h
trunk/piklab_kde4/src/common/gui/list_container.cpp
trunk/piklab_kde4/src/common/gui/list_container.h
trunk/piklab_kde4/src/common/gui/misc_gui.cpp
trunk/piklab_kde4/src/data/app_data/hexeditorpartui.rc
trunk/piklab_kde4/src/data/app_data/piklabui.rc
trunk/piklab_kde4/src/libgui/breakpoint_view.cpp
trunk/piklab_kde4/src/libgui/editor_manager.cpp
trunk/piklab_kde4/src/libgui/gui_debug_manager.cpp
trunk/piklab_kde4/src/libgui/project_manager_ui.cpp
trunk/piklab_kde4/src/libgui/project_manager_ui.h
trunk/piklab_kde4/src/libgui/toplevel.cpp
trunk/piklab_kde4/src/libgui/watch_view.cpp
trunk/piklab_kde4/src/libgui/watch_view.h
trunk/piklab_kde4/test/gputils/blinker/blinker.piklab
trunk/piklab_kde4/test/gputils/blinker18/blinker_18.piklab
trunk/piklab_kde4/test/jalv2/test.piklab
Modified: trunk/piklab_kde4/Changelog
===================================================================
--- trunk/piklab_kde4/Changelog 2012-07-14 18:50:09 UTC (rev 2932)
+++ trunk/piklab_kde4/Changelog 2012-07-14 23:38:14 UTC (rev 2933)
@@ -1,9 +1,10 @@
-0.16.2 (12 July 2012)
+0.16.2 (14 July 2012)
* fixed toolchain output when executable cannot be found
* fixed parsing for jalv2
* fixed template generator for jalv2
* do not set target power with ICD2 if device nominal vdd is not 5V
-* add menu entry to configure editor
+* add menu entries to configure editor, to toggle/enable breakpoints, to switch editors, and
+ to toggle read-only mode for hex editor
0.16.1 (1 July 2012)
* fixed command-line utilities compilation with Qt only
Modified: trunk/piklab_kde4/src/common/gui/global_ui.h
===================================================================
--- trunk/piklab_kde4/src/common/gui/global_ui.h 2012-07-14 18:50:09 UTC (rev 2932)
+++ trunk/piklab_kde4/src/common/gui/global_ui.h 2012-07-14 23:38:14 UTC (rev 2933)
@@ -93,7 +93,6 @@
# include <kstandardguiitem.h>
typedef Q3ListViewItem KListViewItem;
-typedef KMenu KPopupMenu;
typedef K3Wizard KWizard;
#endif // NO_KDE
Modified: trunk/piklab_kde4/src/common/gui/list_container.cpp
===================================================================
--- trunk/piklab_kde4/src/common/gui/list_container.cpp 2012-07-14 18:50:09 UTC (rev 2932)
+++ trunk/piklab_kde4/src/common/gui/list_container.cpp 2012-07-14 23:38:14 UTC (rev 2933)
@@ -11,7 +11,7 @@
//----------------------------------------------------------------------------
PopupContainer::PopupContainer(const QString &title, QWidget *parent, const char *name)
- : KPopupMenu(parent)
+ : KMenu(parent)
{
setObjectName(name);
if ( !title.isEmpty() ) addTitle(title);
Modified: trunk/piklab_kde4/src/common/gui/list_container.h
===================================================================
--- trunk/piklab_kde4/src/common/gui/list_container.h 2012-07-14 18:50:09 UTC (rev 2932)
+++ trunk/piklab_kde4/src/common/gui/list_container.h 2012-07-14 23:38:14 UTC (rev 2933)
@@ -23,7 +23,7 @@
};
//----------------------------------------------------------------------------
-class PopupContainer : public KPopupMenu, public ListContainer
+class PopupContainer : public KMenu, public ListContainer
{
Q_OBJECT
public:
Modified: trunk/piklab_kde4/src/common/gui/misc_gui.cpp
===================================================================
--- trunk/piklab_kde4/src/common/gui/misc_gui.cpp 2012-07-14 18:50:09 UTC (rev 2932)
+++ trunk/piklab_kde4/src/common/gui/misc_gui.cpp 2012-07-14 23:38:14 UTC (rev 2933)
@@ -167,7 +167,7 @@
{
_separator = false;
setFlat(true);
- KPopupMenu *popup = new KPopupMenu(this);
+ KMenu *popup = new KMenu(this);
connect(popup, SIGNAL(activated(int)), SIGNAL(activated(int)));
setPopup(popup);
}
Modified: trunk/piklab_kde4/src/data/app_data/hexeditorpartui.rc
===================================================================
--- trunk/piklab_kde4/src/data/app_data/hexeditorpartui.rc 2012-07-14 18:50:09 UTC (rev 2932)
+++ trunk/piklab_kde4/src/data/app_data/hexeditorpartui.rc 2012-07-14 23:38:14 UTC (rev 2933)
@@ -1,22 +1,25 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE kpartgui SYSTEM "kpartgui.dtd">
-<kpartgui name="HexEditorPart" version="1">
+<kpartgui name="HexEditorPart" version="2">
<MenuBar>
- <Menu name="file" noMerge="1"><text>&File</text>
+ <Menu name="file" noMerge="1">
+ <text>&File</text>
<Action name="file_save" group="save_merge" />
<Action name="file_save_as" group="save_merge" />
<Action name="file_reload" group="revert_merge" />
</Menu>
- <Menu name="tools" noMerge="1"><text>&Tools</text>
+ <Menu name="editor" noMerge="1">
+ <text>&Editor</text>
<Action name="tools_toggle_write_lock" group="tools_operations" />
</Menu>
</MenuBar>
-<ToolBar name="mainToolBar" noMerge="1"><text>Main Toolbar</text>
+<ToolBar name="mainToolBar" noMerge="1">
+ <text>Main Toolbar</text>
<Action name="file_save" group="file_operations" />
</ToolBar>
Modified: trunk/piklab_kde4/src/data/app_data/piklabui.rc
===================================================================
--- trunk/piklab_kde4/src/data/app_data/piklabui.rc 2012-07-14 18:50:09 UTC (rev 2932)
+++ trunk/piklab_kde4/src/data/app_data/piklabui.rc 2012-07-14 23:38:14 UTC (rev 2933)
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE kpartgui SYSTEM "kpartgui.dtd">
-<kpartgui name="piklab" version="54">
+<kpartgui name="piklab" version="55">
<MenuBar>
@@ -32,54 +32,24 @@
<Menu name="editor">
<text context="@title:menu">Editor</text>
<Merge/>
- </Menu>
+ </Menu>
+ <Menu name="window">
+ <text context="@title:menu">&Window</text>
+ <Action name="window_history_back"/>
+ <Action name="window_history_forward"/>
+ <Separator/>
+ <Action name="window_tool_views" />
+ <Separator/>
+ <Action name="window_switch_to"/>
+ <Action name="window_switch_source"/>
+ <Action name="window_toggle_breakpoint"/>
+ <Action name="window_enable_breakpoint"/>
+ <Action name="window_show_disassembly_location"/>
+ <Separator/>
+ <Merge/>
+ </Menu>
- <Menu name="window">
- <text context="@title:menu">&Window</text>
- <Action name="new_window"/>
- <Separator/>
- <Action name="add_toolview"/>
- <Action name="select_next_dock"/>
- <Action name="select_previous_dock"/>
- <Action name="docks_submenu"/>
- <Action name="user_interface"/>
- <DefineGroup name="history_operations"/>
- <Action name="history_back"/>
- <Action name="history_forward"/>
- <Separator/>
- <Action name="file_switchto"/>
- <Separator/>
- <DefineGroup name="error_operations"/>
- <Separator/>
- <Merge/>
- <Separator/>
- <DefineGroup name="view_operations"/>
-
- <Action name="view_next_window"/>
- <Action name="view_previous_window"/>
- <Separator/>
- <Action name="split_horizontal"/>
- <Action name="split_vertical"/>
- <Separator/>
- <Action name="fullscreen"/>
- <Separator/>
- <DefineGroup name="window_operations"/>
- <Separator/>
- <Action name="focus_editor"/>
- <Separator/>
- <Action name="show_left_dock"/>
- <Action name="show_right_dock"/>
- <Action name="show_bottom_dock"/>
- <Action name="hide_all_docks"/>
- <Separator/>
- <Action name="view_tool_views" />
- <Action name="view_switch_source"/>
- <Action name="show_disassembly_location"/>
- <Separator/>
- <Merge/>
- </Menu>
-
<Merge/>
<Menu name="project"><text>&Project</text>
Modified: trunk/piklab_kde4/src/libgui/breakpoint_view.cpp
===================================================================
--- trunk/piklab_kde4/src/libgui/breakpoint_view.cpp 2012-07-14 18:50:09 UTC (rev 2932)
+++ trunk/piklab_kde4/src/libgui/breakpoint_view.cpp 2012-07-14 23:38:14 UTC (rev 2933)
@@ -17,12 +17,12 @@
//----------------------------------------------------------------------------
void Breakpoint::updateActions(const Data *data)
{
- bool hasBreakpoint = (data ? Breakpoint::list().contains(*data) : false);
- Main::action("toggle_breakpoint")->setText(hasBreakpoint ? i18n("Remove breakpoint") : i18n("Set breakpoint"));
- Main::action("toggle_breakpoint")->setEnabled(data);
- bool isActive = (hasBreakpoint ? Breakpoint::list().state(*data)==Breakpoint::Active : false);
- Main::action("enable_breakpoint")->setText(!isActive ? i18n("Enable breakpoint") : i18n("Disable breakpoint"));
- Main::action("enable_breakpoint")->setEnabled(Debugger::manager->coff() && hasBreakpoint);
+ const bool hasBreakpoint = (data ? Breakpoint::list().contains(*data) : false);
+ Main::action("window_toggle_breakpoint")->setText(hasBreakpoint ? i18n("Remove breakpoint") : i18n("Set breakpoint"));
+ Main::action("window_toggle_breakpoint")->setEnabled(data);
+ const bool isActive = (hasBreakpoint ? Breakpoint::list().state(*data)==Breakpoint::Active : false);
+ Main::action("window_enable_breakpoint")->setText(!isActive ? i18n("Enable breakpoint") : i18n("Disable breakpoint"));
+ Main::action("window_enable_breakpoint")->setEnabled(Debugger::manager->coff() && hasBreakpoint);
}
//----------------------------------------------------------------------------
Modified: trunk/piklab_kde4/src/libgui/editor_manager.cpp
===================================================================
--- trunk/piklab_kde4/src/libgui/editor_manager.cpp 2012-07-14 18:50:09 UTC (rev 2932)
+++ trunk/piklab_kde4/src/libgui/editor_manager.cpp 2012-07-14 23:38:14 UTC (rev 2933)
@@ -392,7 +392,7 @@
Editor *editor = static_cast<Editor *>(page(i));
if ( editor==0 ) return;
- std::auto_ptr<KPopupMenu> popup(new KPopupMenu);
+ std::auto_ptr<KMenu> popup(new KMenu);
popup->addTitle(title(*editor));
QAction* close = popup->addAction(KIcon("document-close"), i18n("Close"));
QAction* closeAllOthers = nbEditors()>1 ? popup->addAction(KIcon("document-close"), i18n("Close All Others")) : NULL;
Modified: trunk/piklab_kde4/src/libgui/gui_debug_manager.cpp
===================================================================
--- trunk/piklab_kde4/src/libgui/gui_debug_manager.cpp 2012-07-14 18:50:09 UTC (rev 2932)
+++ trunk/piklab_kde4/src/libgui/gui_debug_manager.cpp 2012-07-14 23:38:14 UTC (rev 2933)
@@ -116,6 +116,8 @@
Breakpoint::list().append(data);
Breakpoint::list().setAddress(data, address);
if (_coff != NULL) toggleEnableBreakpoint();
+ Editor* editor = Main::currentEditor();
+ if (editor != NULL) editor->statusChanged();
}
void Debugger::GuiManager::toggleEnableBreakpoint()
Modified: trunk/piklab_kde4/src/libgui/project_manager_ui.cpp
===================================================================
--- trunk/piklab_kde4/src/libgui/project_manager_ui.cpp 2012-07-14 18:50:09 UTC (rev 2932)
+++ trunk/piklab_kde4/src/libgui/project_manager_ui.cpp 2012-07-14 23:38:14 UTC (rev 2933)
@@ -22,7 +22,7 @@
void PopupMenu::insertItem(const QString &icon, const QString &label, QObject *receiver, const char *slot)
{
QPixmap pixmap = IconLoader::loadIcon(icon, IconLoader::Small);
- KPopupMenu::insertItem(pixmap, label, receiver, slot, 0, _index);
+ KMenu::insertItem(pixmap, label, receiver, slot, 0, _index);
_index++;
}
Modified: trunk/piklab_kde4/src/libgui/project_manager_ui.h
===================================================================
--- trunk/piklab_kde4/src/libgui/project_manager_ui.h 2012-07-14 18:50:09 UTC (rev 2932)
+++ trunk/piklab_kde4/src/libgui/project_manager_ui.h 2012-07-14 23:38:14 UTC (rev 2933)
@@ -20,7 +20,7 @@
#include "progs/list/prog_list.h"
//-----------------------------------------------------------------------------
-class PopupMenu : public KPopupMenu
+class PopupMenu : public KMenu
{
Q_OBJECT
public:
@@ -130,7 +130,7 @@
private:
mutable std::auto_ptr<QComboBox> _combo;
-
+
virtual QWidget *editWidgetFactory(int) const;
virtual bool alwaysAcceptEdit(int) const { return true; }
};
Modified: trunk/piklab_kde4/src/libgui/toplevel.cpp
===================================================================
--- trunk/piklab_kde4/src/libgui/toplevel.cpp 2012-07-14 18:50:09 UTC (rev 2932)
+++ trunk/piklab_kde4/src/libgui/toplevel.cpp 2012-07-14 23:38:14 UTC (rev 2933)
@@ -186,26 +186,24 @@
a->setIcon(KIcon("window-close"));
actionCollection()->addAction(KStandardAction::Quit, this, SLOT(close()));
- // edit actions
-
- // view actions
- a = actionCollection()->addAction("history_back", Main::_editorManager, SLOT(goBack()));
+ // window actions
+ a = actionCollection()->addAction("window_history_back", Main::_editorManager, SLOT(goBack()));
KGuiItem guiItem = KStandardGuiItem::back();
a->setText(guiItem.text());
a->setIcon(guiItem.icon());
- a = actionCollection()->addAction("history_forward", Main::_editorManager, SLOT(goForward()));
+ a = actionCollection()->addAction("window_history_forward", Main::_editorManager, SLOT(goForward()));
guiItem = KStandardGuiItem::forward();
a->setText(guiItem.text());
a->setIcon(guiItem.icon());
- a = actionCollection()->addAction("view_switch_to", Main::_editorManager, SLOT(switchToEditor()));
+ a = actionCollection()->addAction("window_switch_to", Main::_editorManager, SLOT(switchToEditor()));
a->setText(i18n("Switch to..."));
a->setShortcut(Qt::CTRL + Qt::Key_Slash);
- a = actionCollection()->addAction("view_switch_source", Main::_editorManager, SLOT(switchHeaderImplementation()));
+ a = actionCollection()->addAction("window_switch_source", Main::_editorManager, SLOT(switchHeaderImplementation()));
a->setText(i18n("Switch Header/Implementation"));
a->setShortcut(Qt::SHIFT + Qt::Key_F12);
- actionCollection()->addAction("toggle_breakpoint", Debugger::manager, SLOT(toggleBreakpoint()));
- actionCollection()->addAction("enable_breakpoint", Debugger::manager, SLOT(toggleEnableBreakpoint()));
- a = actionCollection()->addAction("show_disassembly_location", Debugger::manager, SLOT(showDisassemblyLocation()));
+ actionCollection()->addAction("window_toggle_breakpoint", Debugger::manager, SLOT(toggleBreakpoint()));
+ actionCollection()->addAction("window_enable_breakpoint", Debugger::manager, SLOT(toggleEnableBreakpoint()));
+ a = actionCollection()->addAction("window_show_disassembly_location", Debugger::manager, SLOT(showDisassemblyLocation()));
a->setText(i18n("Show disassembly location"));
// project actions
@@ -589,10 +587,10 @@
const PURL::FileType currentType = (Main::currentEditor() != NULL ? Main::currentEditor()->fileType() : PURL::Nb_FileTypes);
const bool isSource = (currentType==PURL::Nb_FileTypes ? false : currentType.data().group==PURL::Source);
const bool isHeader = (currentType==PURL::Nb_FileTypes ? false : currentType.data().group==PURL::Header);
- Main::action("view_switch_source")->setEnabled(isSource || isHeader);
- Main::action("history_back")->setEnabled(Main::editorManager().history().hasBack());
- Main::action("history_forward")->setEnabled(Main::editorManager().history().hasForward());
- Main::action("show_disassembly_location")->setEnabled(Debugger::manager->coff()!=0 && (isSource || isHeader));
+ Main::action("window_switch_source")->setEnabled(isSource || isHeader);
+ Main::action("window_history_back")->setEnabled(Main::editorManager().history().hasBack());
+ Main::action("window_history_forward")->setEnabled(Main::editorManager().history().hasForward());
+ Main::action("window_show_disassembly_location")->setEnabled(Debugger::manager->coff()!=0 && (isSource || isHeader));
// update project
Modified: trunk/piklab_kde4/src/libgui/watch_view.cpp
===================================================================
--- trunk/piklab_kde4/src/libgui/watch_view.cpp 2012-07-14 18:50:09 UTC (rev 2932)
+++ trunk/piklab_kde4/src/libgui/watch_view.cpp 2012-07-14 23:38:14 UTC (rev 2933)
@@ -86,10 +86,10 @@
_root->setOpen(true);
}
-KPopupMenu *Register::WatchedListView::appendFormatMenu(KPopupMenu *parent, uint offset)
+KMenu* Register::WatchedListView::appendFormatMenu(KMenu* parent, uint offset)
{
QPixmap icon = IconLoader::loadIcon("fonts", IconLoader::Small);
- KPopupMenu *popup = new KPopupMenu;
+ KMenu* popup = new KMenu;
popup->addTitle(i18n("Format"));
FOR_EACH(NumberBase, base) popup->insertItem(base.label(), offset + base.type());
parent->insertItem(icon, i18n("Format"), popup);
@@ -169,9 +169,9 @@
} else {
if ( item->rtti()==Register::PortBitRtti ) return;
Register::ListViewItem *ritem = static_cast<ListViewItem *>(item);
- std::auto_ptr<KPopupMenu> pop(new KPopupMenu);
+ std::auto_ptr<KMenu> pop(new KMenu);
pop->addTitle(ritem->label());
- KPopupMenu *fpop = appendFormatMenu(pop.get(), 0);
+ KMenu* fpop = appendFormatMenu(pop.get(), 0);
FOR_EACH(NumberBase, base) fpop->setItemChecked(base.type(), ritem->base()==base);
pop->insertSeparator();
QPixmap icon = IconLoader::loadIcon("edit-rename", IconLoader::Small);
Modified: trunk/piklab_kde4/src/libgui/watch_view.h
===================================================================
--- trunk/piklab_kde4/src/libgui/watch_view.h 2012-07-14 18:50:09 UTC (rev 2932)
+++ trunk/piklab_kde4/src/libgui/watch_view.h 2012-07-14 23:38:14 UTC (rev 2933)
@@ -65,11 +65,11 @@
virtual void contextMenu(Q3ListViewItem *item, const QPoint &p, int col);
private:
- PopupContainer *_popup;
- KPopupMenu *_formatPopup;
- NumberBase _base;
+ PopupContainer* _popup;
+ KMenu* _formatPopup;
+ NumberBase _base;
- static KPopupMenu *appendFormatMenu(KPopupMenu *parent, uint offset);
+ static KMenu* appendFormatMenu(KMenu* parent, uint offset);
};
//-----------------------------------------------------------------------------
Modified: trunk/piklab_kde4/test/gputils/blinker/blinker.piklab
===================================================================
--- trunk/piklab_kde4/test/gputils/blinker/blinker.piklab 2012-07-14 18:50:09 UTC (rev 2932)
+++ trunk/piklab_kde4/test/gputils/blinker/blinker.piklab 2012-07-14 23:38:14 UTC (rev 2933)
@@ -11,10 +11,7 @@
<custom_linker_script/>
<is_library>true</is_library>
<output_type>executable</output_type>
- <programmer>direct</programmer>
- <opened_files>
- <item>blinker.asm</item>
- </opened_files>
+ <programmer>gpsim</programmer>
</general>
<assembler>
<warning_level>0</warning_level>
Modified: trunk/piklab_kde4/test/gputils/blinker18/blinker_18.piklab
===================================================================
--- trunk/piklab_kde4/test/gputils/blinker18/blinker_18.piklab 2012-07-14 18:50:09 UTC (rev 2932)
+++ trunk/piklab_kde4/test/gputils/blinker18/blinker_18.piklab 2012-07-14 23:38:14 UTC (rev 2933)
@@ -11,7 +11,13 @@
<description/>
<version>0.1</version>
<tool>gputils</tool>
- <programmer>gpsim</programmer>
+ <programmer>icd2</programmer>
+ <opened_files>
+ <item>blinker_18.asm</item>
+ </opened_files>
+ <watched_registers>
+ <item>4034 2 </item>
+ </watched_registers>
</general>
<assembler>
<custom_options/>
Modified: trunk/piklab_kde4/test/jalv2/test.piklab
===================================================================
--- trunk/piklab_kde4/test/jalv2/test.piklab 2012-07-14 18:50:09 UTC (rev 2932)
+++ trunk/piklab_kde4/test/jalv2/test.piklab 2012-07-14 23:38:14 UTC (rev 2933)
@@ -7,6 +7,9 @@
<files>
<item>test.jal</item>
</files>
+ <opened_files>
+ <item>test.jal</item>
+ </opened_files>
</general>
<editors/>
</piklab>
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|