diff --git a/mcdp/src/ch/ntb/mcdp/bdi/MC68332.java b/mcdp/src/ch/ntb/mcdp/bdi/MC68332.java index ba8cb08..2e99d6f 100644 --- a/mcdp/src/ch/ntb/mcdp/bdi/MC68332.java +++ b/mcdp/src/ch/ntb/mcdp/bdi/MC68332.java @@ -196,23 +196,24 @@ public class MC68332 { /** * Maximal number of words or bytes (1 or 2 bytes) for one usb-packet to - * download (fill).
+ * download (fill) or read (dump).
* Note that no status bit is used. Therefore one data entity is only 16 * bits wide (not 17 bits like normal commands).
* MAX_NOF_WORDS_FAST_DOWNLOAD is a multiple of 4 (FILLB/W + * data). */ - public static final int MAX_NOF_BYTES_WORDS_FILL = (USB.MAX_DATA_SIZE + public static final int MAX_NOF_BYTES_WORDS = (USB.MAX_DATA_SIZE - DataPacket.PACKET_MIN_LENGTH - 2) / 4; /** - * Maximal number of longs (4 bytes) for one usb-packet to download (fill). + * Maximal number of longs (4 bytes) for one usb-packet to download (fill) + * or read (dump).
* Note that no status bit is used. Therefore one data entity is only 16 * bits wide (not 17 bits like normal commands).
* MAX_NOF_WORDS_FAST_DOWNLOAD is a multiple of 6 (FILLW + MS * data + LS data). */ - public static final int MAX_NOF_LONGS_FILL = (USB.MAX_DATA_SIZE + public static final int MAX_NOF_LONGS = (USB.MAX_DATA_SIZE - DataPacket.PACKET_MIN_LENGTH - 2) / 6; private static boolean targetInDebugMode = false; @@ -527,7 +528,7 @@ public class MC68332 { logger.finer("dataLength: " + dataLength); switch (writeMemSize) { case 1: - if (dataLength > MAX_NOF_BYTES_WORDS_FILL) { + if (dataLength > MAX_NOF_BYTES_WORDS) { throw new BDIException( "data larger than MAX_NOF_WORDS_FAST_DOWNLOAD_BYTE_WORD"); } @@ -546,7 +547,7 @@ public class MC68332 { data = transmit(STYPE_BDI_17FILL_BYTE_WORD, dataLength * 4 + 2); break; case 2: - if (dataLength > MAX_NOF_BYTES_WORDS_FILL) { + if (dataLength > MAX_NOF_BYTES_WORDS) { throw new BDIException( "data larger than MAX_NOF_WORDS_FAST_DOWNLOAD_BYTE_WORD"); } @@ -565,7 +566,7 @@ public class MC68332 { data = transmit(STYPE_BDI_17FILL_BYTE_WORD, dataLength * 4 + 2); break; case 4: - if (dataLength > (MAX_NOF_LONGS_FILL)) { + if (dataLength > (MAX_NOF_LONGS)) { throw new BDIException( "data larger than MAX_NOF_WORDS_FAST_DOWNLOAD_LONG"); } @@ -629,8 +630,8 @@ public class MC68332 { int dataSize; switch (readMemSize) { case 1: - if (nofData > MAX_NOF_BYTES_WORDS_FILL) - nofData = MAX_NOF_BYTES_WORDS_FILL; + if (nofData > MAX_NOF_BYTES_WORDS) + nofData = MAX_NOF_BYTES_WORDS; // fill the packet with {DUMPB} + 1 NOP at the end int i; for (i = 0; i < nofData; i++) { @@ -642,8 +643,8 @@ public class MC68332 { dataSize = i * 2 + 2; break; case 2: - if (nofData > MAX_NOF_BYTES_WORDS_FILL) - nofData = MAX_NOF_BYTES_WORDS_FILL; + if (nofData > MAX_NOF_BYTES_WORDS) + nofData = MAX_NOF_BYTES_WORDS; // fill the packet with {DUMPW} + 1 NOP at the end for (i = 0; i < nofData; i++) { sendData[DataPacket.PACKET_DATA_OFFSET + i * 2] = (byte) ((DUMPW >>> 8) & 0xFF); @@ -654,8 +655,8 @@ public class MC68332 { dataSize = i * 2 + 2; break; case 4: - if (nofData > MAX_NOF_LONGS_FILL) - nofData = MAX_NOF_LONGS_FILL; + if (nofData > MAX_NOF_LONGS) + nofData = MAX_NOF_LONGS; // fill the packet with {DUMPL + NOP} + 1 NOP at the end for (i = 0; i < nofData; i++) { sendData[DataPacket.PACKET_DATA_OFFSET + i * 4] = (byte) ((DUMPL >>> 8) & 0xFF); @@ -687,7 +688,7 @@ public class MC68332 { switch (readMemSize) { case 1: case 2: - result = new int[(res.data.length - DataPacket.PACKET_MIN_LENGTH) / 2]; + result = new int[(res.data.length) / 2]; // MS Result before LS Result int resIndex = 0; while (resIndex * 2 < res.data.length) {