diff --git a/JNIdll/BDI.def b/JNIdll/BDI.def deleted file mode 100644 index 1807a89..0000000 --- a/JNIdll/BDI.def +++ /dev/null @@ -1,52 +0,0 @@ -EXPORTS - UART0_read = _Z10UART0_readPc @1 - destroyJVM = _Z10destroyJVMv @2 - UART0_write = _Z11UART0_writePci @3 - BDI332_break_ = _Z13BDI332_break_v @4 - BDI555_break_ = _Z13BDI555_break_v @5 - BDI555_readCR = _Z13BDI555_readCRv @6 - BDI332_dumpMem = _Z14BDI332_dumpMemiPi @7 - BDI332_fillMem = _Z14BDI332_fillMemPii @8 - BDI332_readMem = _Z14BDI332_readMemii @9 - BDI555_readFPR = _Z14BDI555_readFPRii @10 - BDI555_readGPR = _Z14BDI555_readGPRi @11 - BDI555_readMSR = _Z14BDI555_readMSRv @12 - BDI555_readMem = _Z14BDI555_readMemii @13 - BDI555_readSPR = _Z14BDI555_readSPRi @14 - BDI555_writeCR = _Z14BDI555_writeCRi @15 - BDI332_writeMem = _Z15BDI332_writeMemiii @16 - BDI555_setGpr31 = _Z15BDI555_setGpr31i @17 - BDI555_writeFPR = _Z15BDI555_writeFPRiil @18 - BDI555_writeGPR = _Z15BDI555_writeGPRii @19 - BDI555_writeMSR = _Z15BDI555_writeMSRi @20 - BDI555_writeMem = _Z15BDI555_writeMemiii @21 - BDI555_writeSPR = _Z15BDI555_writeSPRii @22 - USB_Device_open = _Z15USB_Device_openv @23 - BDI555_readFPSCR = _Z16BDI555_readFPSCRv @24 - USB_Device_close = _Z16USB_Device_closev @25 - USB_Device_reset = _Z16USB_Device_resetv @26 - getErrPipeHandle = _Z16getErrPipeHandlev @27 - getOutPipeHandle = _Z16getOutPipeHandlev @28 - BDI332_readSysReg = _Z17BDI332_readSysRegi @29 - BDI555_readMemSeq = _Z17BDI555_readMemSeqi @30 - BDI555_writeFPSCR = _Z17BDI555_writeFPSCRi @31 - BDI332_readUserReg = _Z18BDI332_readUserRegi @32 - BDI332_writeSysReg = _Z18BDI332_writeSysRegii @33 - BDI555_writeMemSeq = _Z18BDI555_writeMemSeqii @34 - checkForExceptions = _Z18checkForExceptionsv @35 - BDI332_reset_target = _Z19BDI332_reset_targetv @36 - BDI332_writeUserReg = _Z19BDI332_writeUserRegii @37 - BDI555_fastDownload = _Z19BDI555_fastDownloadPii @38 - BDI555_reset_target = _Z19BDI555_reset_targetv @39 - BDI332_nopsToLegalCmd = _Z21BDI332_nopsToLegalCmdv @40 - BDI332_isFreezeAsserted = _Z23BDI332_isFreezeAssertedv @41 - BDI555_isFreezeAsserted = _Z23BDI555_isFreezeAssertedv @42 - BDI555_stopFastDownload = _Z23BDI555_stopFastDownloadv @43 - BDI332_reset_peripherals = _Z24BDI332_reset_peripheralsv @44 - BDI555_startFastDownload = _Z24BDI555_startFastDownloadi @45 - BDI332_isTargetInDebugMode = _Z26BDI332_isTargetInDebugModev @46 - BDI555_isTargetInDebugMode = _Z26BDI555_isTargetInDebugModev @47 - USB_Device_getMaxPacketSize = _Z27USB_Device_getMaxPacketSizev @48 - BDI332_go = _Z9BDI332_gov @49 - BDI555_go = _Z9BDI555_gov @50 - createJVM = _Z9createJVMPc @51 diff --git a/JNIdll/BDI.dll b/JNIdll/BDI.dll deleted file mode 100644 index 16e1c18..0000000 Binary files a/JNIdll/BDI.dll and /dev/null differ diff --git a/JNIdll/BDI_dll.cpp b/JNIdll/BDI_dll.cpp deleted file mode 100644 index f911df2..0000000 --- a/JNIdll/BDI_dll.cpp +++ /dev/null @@ -1,849 +0,0 @@ -#include -#include -#include -#include - -#define EXPORT JNIEXPORT - -#define NOF_VM_ARGS 4 - -#define PIPEBUFSIZE 4096 -#define PIPE_TIMEOUT 500 //ms - -// Classes -#define USB_Device_Class "ch/ntb/mcdp/usb/USBDevice" -#define BDI555_Class "ch/ntb/mcdp/bdi/blackbox/MPC555" -#define BDI332_Class "ch/ntb/mcdp/bdi/blackbox/MC68332" -#define Redirect_Class "ch/ntb/mcdp/utils/Redirect" -#define Uart0_Class "ch/ntb/mcdp/uart/blackbox/Uart0" - -// JVM handles -JNIEnv *env = NULL; -JavaVM *jvm = NULL; - -// Pipe names -char stdout_pipename[32] = "\\\\.\\pipe\\BDIDll_stdout"; -char stderr_pipename[32] = "\\\\.\\pipe\\BDIDll_stderr"; -// Pipe handles -HANDLE hStdout_pipe, hStderr_pipe; - -// status flags -int stdOutErr_redirected = FALSE; -int jvm_created = FALSE, jvm_classPtrs_done = FALSE, \ - jvm_mIDs_done = FALSE, jvm_redirection_done = FALSE; - -// Java classes -jclass cls_USB_Device, cls_BDI555, cls_BDI332, cls_Redirect, cls_Uart0; -// USB_Device -jmethodID mid_USB_Dev_open, mid_USB_Dev_close, mid_USB_Dev_reset, \ -mid_USB_Dev_getMaxPacketSize; -// BDI555 -jmethodID mid_BDI555_break_, mid_BDI555_go, mid_BDI555_reset_target, \ -mid_BDI555_isFreezeAsserted, mid_BDI555_startFastDownload, mid_BDI555_fastDownload, \ -mid_BDI555_stopFastDownload, mid_BDI555_writeMem, mid_BDI555_readMem, \ -mid_BDI555_writeMemSeq, mid_BDI555_readMemSeq, mid_BDI555_readGPR, \ -mid_BDI555_writeGPR, mid_BDI555_readSPR, mid_BDI555_writeSPR, mid_BDI555_readMSR, \ -mid_BDI555_writeMSR, mid_BDI555_readFPR, mid_BDI555_writeFPR, mid_BDI555_readCR, \ -mid_BDI555_writeCR, mid_BDI555_readFPSCR, mid_BDI555_writeFPSCR, \ -mid_BDI555_isTargetInDebugMode, mid_BDI555_setGpr31; -// BDI332 -jmethodID mid_BDI332_nopsToLegalCmd, mid_BDI332_break_, mid_BDI332_go, \ -mid_BDI332_reset_target, mid_BDI332_reset_peripherals, mid_BDI332_isFreezeAsserted, \ -mid_BDI332_fillMem, mid_BDI332_dumpMem, mid_BDI332_writeMem, mid_BDI332_readMem, \ -mid_BDI332_readUserReg, mid_BDI332_writeUserReg, mid_BDI332_readSysReg, \ -mid_BDI332_writeSysReg, mid_BDI332_isTargetInDebugMode; -// Redirect -jmethodID mid_Redirect_redirect; -// Uart0 -jmethodID mid_Uart0_write, mid_Uart0_read; - -BOOL setupNamedPipes(){ - - hStdout_pipe = CreateNamedPipe( - stdout_pipename, // pipe name - PIPE_ACCESS_INBOUND,// server only writes and client only reads - PIPE_TYPE_BYTE | // message type pipe - PIPE_WAIT, // non blocking mode - 1, // max. instances - PIPEBUFSIZE, // output buffer size - PIPEBUFSIZE, // input buffer size - PIPE_TIMEOUT, // client time-out - NULL); // default security attribute - - if (hStdout_pipe == INVALID_HANDLE_VALUE) - { - fprintf(stderr, "CreateNamedPipe (stdout_pipe) failed\n"); - return FALSE; - } - - hStderr_pipe = CreateNamedPipe( - stderr_pipename, // pipe name - PIPE_ACCESS_INBOUND,// server only writes and client only reads - PIPE_TYPE_BYTE | // message type pipe - PIPE_WAIT, // non blocking mode - 1, // max. instances - PIPEBUFSIZE, // output buffer size - PIPEBUFSIZE, // input buffer size - PIPE_TIMEOUT, // client time-out - NULL); // default security attribute - - if (hStderr_pipe == INVALID_HANDLE_VALUE) - { - fprintf(stderr, "CreateNamedPipe (stderr_pipe) failed\n"); - return FALSE; - } - // Connect the reading end of the hStdout_pipe and assign it to stdout - if (freopen(stdout_pipename, "w", stdout) == NULL) { - fprintf(stderr, "freopen(stdout_pipename, w, stdout) failed\n"); - return FALSE; - } - - // Connect the reading end of the hStderr_pipe and assign it to sterr - if (freopen(stderr_pipename, "w", stderr) == NULL) { - fprintf(stderr, "freopen(stderr_pipename, w, stderr) failed\n"); - return FALSE; - } - return TRUE; -} - -void flushAll() -{ - fflush(stderr); - fflush(stdout); -} - -void fprintf_flush(FILE* stream, const char *format, ...) -{ - va_list argptr; - va_start(argptr, format); - - vfprintf(stream, format, argptr); - fflush(stream); -} - -EXPORT HANDLE getOutPipeHandle(){ - return hStdout_pipe; -} - -EXPORT HANDLE getErrPipeHandle(){ - return hStderr_pipe; -} - -EXPORT int destroyJVM() -{ - jint result = -1; - if (env) { - if (env->ExceptionOccurred()) { - env->ExceptionDescribe(); - } - } - if (jvm) { - result = jvm->DestroyJavaVM(); - fprintf_flush(stderr, "JVM destroyed\n"); - } - // reset flags - jvm_created = FALSE; - jvm_classPtrs_done = FALSE; - jvm_mIDs_done = FALSE; - jvm_redirection_done = FALSE; - - return result; -} - -jint JNICALL _vfprintf_(FILE *fp, const char *format, va_list args) -{ - jint result = vfprintf(stderr, format, args); - return result; -} - -EXPORT int createJVM(char *classpath) -{ - char javaclasspath[1024]; - jint res; - JavaVMInitArgs vm_args; - JavaVMOption options[NOF_VM_ARGS]; - - if (!stdOutErr_redirected) { - // writing to the stdout/stderr stream will write to pipes - // USE fprintf_flush INSTEAD OF printf/fprintf TO WRITE TO THE PIPES - if (!setupNamedPipes()) { - fprintf_flush(stderr, "setupNamedPipes() failed\n"); - return FALSE; - } - stdOutErr_redirected = TRUE; - } - - if (!jvm_created) { - - fprintf_flush(stdout, "Starting JVM: classpath: %s\n", classpath); - - sprintf(javaclasspath, "-Djava.class.path=%s", classpath); - - options[0].optionString = "-Xmx20m"; // specify the maximum heap size that the JVM is allowed to grow to - options[1].optionString = javaclasspath; - options[2].optionString = "-verbose:class,jni"; - options[3].optionString = "-Djava.compiler=NONE"; - - vm_args.version = JNI_VERSION_1_4; - vm_args.options = options; - vm_args.nOptions = NOF_VM_ARGS; - vm_args.ignoreUnrecognized = JNI_FALSE; - - /* Create the Java VM */ - res = JNI_CreateJavaVM(&jvm, (void**)&env, &vm_args); - if (res < 0) { - fprintf_flush(stderr, "Can't create Java VM\n"); - return FALSE; - } - jvm_created = TRUE; - } else { - fprintf_flush(stdout, "JVM already created -> trying to redirect ouput streams\n"); - } - - if (!jvm_redirection_done) { - cls_Redirect = env->FindClass(Redirect_Class); - if (cls_Redirect == 0) { - fprintf_flush(stderr, "Can't find %s class\n", Redirect_Class); - return FALSE; - } - - // Redirect Class - mid_Redirect_redirect = env->GetStaticMethodID(cls_Redirect, "redirect", "()V"); - if (mid_Redirect_redirect == 0) { - fprintf_flush(stderr, "Can't find Redirect.redirect\n"); - return FALSE; - } - - // Call redirect - env->CallStaticVoidMethod(cls_Redirect, mid_Redirect_redirect); - - jvm_redirection_done = TRUE; - } else { - fprintf_flush(stdout, "Redirection already done -> creating class pointers\n"); - } - - if (!jvm_classPtrs_done) { - /* create class pointers */ - cls_USB_Device = env->FindClass(USB_Device_Class); - if (cls_USB_Device == 0) { - fprintf_flush(stderr, "Can't find %s class\n", USB_Device_Class); - return FALSE; - } - - cls_BDI555 = env->FindClass(BDI555_Class); - if (cls_BDI555 == 0) { - fprintf_flush(stderr, "Can't find %s class\n", BDI555_Class); - return FALSE; - } - - cls_BDI332 = env->FindClass(BDI332_Class); - if (cls_BDI332 == 0) { - fprintf_flush(stderr, "Can't find %s class\n", BDI332_Class); - return FALSE; - } - - cls_Uart0 = env->FindClass(Uart0_Class); - if (cls_Uart0 == 0) { - fprintf_flush(stderr, "Can't find %s class\n", Uart0_Class); - return FALSE; - } - jvm_classPtrs_done = TRUE; - } else { - fprintf_flush(stdout, "Class Pointers already created -> creating method IDs\n"); - } - - if (!jvm_mIDs_done) { - /* create method pointers */ - // USB_Device - mid_USB_Dev_open = env->GetStaticMethodID(cls_USB_Device, "open", "()V"); - if (mid_USB_Dev_open == 0) { - fprintf_flush(stderr, "Can't find USB_Device.open\n"); - return FALSE; - } - mid_USB_Dev_close = env->GetStaticMethodID(cls_USB_Device, "close", "()V"); - if (mid_USB_Dev_close == 0) { - fprintf_flush(stderr, "Can't find USB_Device.close\n"); - return FALSE; - } - mid_USB_Dev_reset = env->GetStaticMethodID(cls_USB_Device, "reset", "()V"); - if (mid_USB_Dev_reset == 0) { - fprintf_flush(stderr, "Can't find USB_Device.reset\n"); - return FALSE; - } - mid_USB_Dev_getMaxPacketSize = env->GetStaticMethodID(cls_USB_Device, "getMaxPacketSize", "()I"); - if (mid_USB_Dev_getMaxPacketSize == 0) { - fprintf_flush(stderr, "Can't find USB_Device.getMaxPacketSize\n"); - return FALSE; - } - - // BDI555 - mid_BDI555_break_ = env->GetStaticMethodID(cls_BDI555, "break_", "()V"); - if (mid_BDI555_break_ == 0) { - fprintf_flush(stderr, "Can't find BDI555.break_\n"); - return FALSE; - } - mid_BDI555_go = env->GetStaticMethodID(cls_BDI555, "go", "()V"); - if (mid_BDI555_go == 0) { - fprintf_flush(stderr, "Can't find BDI555.go\n"); - - return FALSE; - } - mid_BDI555_reset_target = env->GetStaticMethodID(cls_BDI555, "reset_target", "()V"); - if (mid_BDI555_reset_target == 0) { - fprintf_flush(stderr, "Can't find BDI555.reset_target\n"); - return FALSE; - } - mid_BDI555_isFreezeAsserted = env->GetStaticMethodID(cls_BDI555, "isFreezeAsserted", "()Z"); - if (mid_BDI555_isFreezeAsserted == 0) { - fprintf_flush(stderr, "Can't find BDI555.isFreezeAsserted\n"); - return FALSE; - } - mid_BDI555_startFastDownload = env->GetStaticMethodID(cls_BDI555, "startFastDownload", "(I)V"); - if (mid_BDI555_startFastDownload == 0) { - fprintf_flush(stderr, "Can't find BDI555.startFastDownload\n"); - return FALSE; - } - mid_BDI555_fastDownload = env->GetStaticMethodID(cls_BDI555, "fastDownload", "([II)V"); - if (mid_BDI555_fastDownload == 0) { - fprintf_flush(stderr, "Can't find BDI555.fastDownload\n"); - return FALSE; - } - mid_BDI555_stopFastDownload = env->GetStaticMethodID(cls_BDI555, "stopFastDownload", "()V"); - if (mid_BDI555_stopFastDownload == 0) { - fprintf_flush(stderr, "Can't find BDI555.stopFastDownload\n"); - return FALSE; - } - mid_BDI555_writeMem = env->GetStaticMethodID(cls_BDI555, "writeMem", "(III)V"); - if (mid_BDI555_writeMem == 0) { - fprintf_flush(stderr, "Can't find BDI555.writeMem\n"); - return FALSE; - } - mid_BDI555_readMem = env->GetStaticMethodID(cls_BDI555, "readMem", "(II)I"); - if (mid_BDI555_readMem == 0) { - fprintf_flush(stderr, "Can't find BDI555.readMem\n"); - return FALSE; - } - mid_BDI555_writeMemSeq = env->GetStaticMethodID(cls_BDI555, "writeMemSeq", "(II)V"); - if (mid_BDI555_writeMemSeq == 0) { - fprintf_flush(stderr, "Can't find BDI555.writeMemSeq\n"); - return FALSE; - } - mid_BDI555_readMemSeq = env->GetStaticMethodID(cls_BDI555, "readMemSeq", "(I)I"); - if (mid_BDI555_readMemSeq == 0) { - fprintf_flush(stderr, "Can't find BDI555.readMemSeq\n"); - return FALSE; - } - mid_BDI555_readGPR = env->GetStaticMethodID(cls_BDI555, "readGPR", "(I)I"); - if (mid_BDI555_readGPR == 0) { - fprintf_flush(stderr, "Can't find BDI555.readGPR\n"); - return FALSE; - } - mid_BDI555_writeGPR = env->GetStaticMethodID(cls_BDI555, "writeGPR", "(II)V"); - if (mid_BDI555_writeGPR == 0) { - fprintf_flush(stderr, "Can't find BDI555.writeGPR\n"); - return FALSE; - } - mid_BDI555_readSPR = env->GetStaticMethodID(cls_BDI555, "readSPR", "(I)I"); - if (mid_BDI555_readSPR == 0) { - fprintf_flush(stderr, "Can't find BDI555.readSPR\n"); - return FALSE; - } - mid_BDI555_writeSPR = env->GetStaticMethodID(cls_BDI555, "writeSPR", "(II)V"); - if (mid_BDI555_writeSPR == 0) { - fprintf_flush(stderr, "Can't find BDI555.writeSPR\n"); - return FALSE; - } - mid_BDI555_readMSR = env->GetStaticMethodID(cls_BDI555, "readMSR", "()I"); - if (mid_BDI555_readMSR == 0) { - fprintf_flush(stderr, "Can't find BDI555.readMSR\n"); - return FALSE; - } - mid_BDI555_writeMSR = env->GetStaticMethodID(cls_BDI555, "writeMSR", "(I)V"); - if (mid_BDI555_writeMSR == 0) { - fprintf_flush(stderr, "Can't find BDI555.writeMSR\n"); - return FALSE; - } - mid_BDI555_readFPR = env->GetStaticMethodID(cls_BDI555, "readFPR", "(II)J"); - if (mid_BDI555_readFPR == 0) { - fprintf_flush(stderr, "Can't find BDI555.readFPR\n"); - return FALSE; - } - mid_BDI555_writeFPR = env->GetStaticMethodID(cls_BDI555, "writeFPR", "(IIJ)V"); - if (mid_BDI555_writeFPR == 0) { - fprintf_flush(stderr, "Can't find BDI555.writeFPR\n"); - return FALSE; - } - mid_BDI555_readCR = env->GetStaticMethodID(cls_BDI555, "readCR", "()I"); - if (mid_BDI555_readCR == 0) { - fprintf_flush(stderr, "Can't find BDI555.readCR\n"); - return FALSE; - } - mid_BDI555_writeCR = env->GetStaticMethodID(cls_BDI555, "writeCR", "(I)V"); - if (mid_BDI555_writeCR == 0) { - fprintf_flush(stderr, "Can't find BDI555.writeCR\n"); - return FALSE; - } - mid_BDI555_readFPSCR = env->GetStaticMethodID(cls_BDI555, "readFPSCR", "()I"); - if (mid_BDI555_readFPSCR == 0) { - fprintf_flush(stderr, "Can't find BDI555.readFPSCR\n"); - return FALSE; - } - mid_BDI555_writeFPSCR = env->GetStaticMethodID(cls_BDI555, "writeFPSCR", "(I)V"); - if (mid_BDI555_writeFPSCR == 0) { - fprintf_flush(stderr, "Can't find BDI555.writeFPSCR\n"); - return FALSE; - } - mid_BDI555_isTargetInDebugMode = env->GetStaticMethodID(cls_BDI555, "isTargetInDebugMode", "()Z"); - if (mid_BDI555_isTargetInDebugMode == 0) { - fprintf_flush(stderr, "Can't find BDI555.isTargetInDebugMode\n"); - return FALSE; - } - mid_BDI555_setGpr31 = env->GetStaticMethodID(cls_BDI555, "setGpr31", "(I)V"); - if (mid_BDI555_setGpr31 == 0) { - fprintf_flush(stderr, "Can't find BDI555.setGpr31\n"); - return FALSE; - } - - // BDI332 - mid_BDI332_nopsToLegalCmd = env->GetStaticMethodID(cls_BDI332, "nopsToLegalCmd", "()V"); - if (mid_BDI332_nopsToLegalCmd == 0) { - fprintf_flush(stderr, "Can't find BDI332.nopsToLegalCmd\n"); - return FALSE; - } - mid_BDI332_break_ = env->GetStaticMethodID(cls_BDI332, "break_", "()V"); - if (mid_BDI332_break_ == 0) { - fprintf_flush(stderr, "Can't find BDI332.break_\n"); - return FALSE; - } - mid_BDI332_go = env->GetStaticMethodID(cls_BDI332, "go", "()V"); - if (mid_BDI332_go == 0) { - fprintf_flush(stderr, "Can't find BDI332.go\n"); - return FALSE; - } - mid_BDI332_reset_target = env->GetStaticMethodID(cls_BDI332, "reset_target", "()V"); - if (mid_BDI332_reset_target == 0) { - fprintf_flush(stderr, "Can't find BDI332.reset_target\n"); - return FALSE; - } - mid_BDI332_reset_peripherals = env->GetStaticMethodID(cls_BDI332, "reset_peripherals", "()V"); - if (mid_BDI332_reset_peripherals == 0) { - fprintf_flush(stderr, "Can't find BDI332.reset_peripherals\n"); - return FALSE; - } - mid_BDI332_isFreezeAsserted = env->GetStaticMethodID(cls_BDI332, "isFreezeAsserted", "()Z"); - if (mid_BDI332_isFreezeAsserted == 0) { - fprintf_flush(stderr, "Can't find BDI332.isFreezeAsserted\n"); - return FALSE; - } - mid_BDI332_fillMem = env->GetStaticMethodID(cls_BDI332, "fillMem", "([II)V"); - if (mid_BDI332_fillMem == 0) { - fprintf_flush(stderr, "Can't find BDI332.fillMem\n"); - return FALSE; - } - mid_BDI332_dumpMem = env->GetStaticMethodID(cls_BDI332, "dumpMem", "(I)[I"); - if (mid_BDI332_dumpMem == 0) { - fprintf_flush(stderr, "Can't find BDI332.dumpMem\n"); - return FALSE; - } - mid_BDI332_writeMem = env->GetStaticMethodID(cls_BDI332, "writeMem", "(III)V"); - if (mid_BDI332_writeMem == 0) { - fprintf_flush(stderr, "Can't find BDI332.writeMem\n"); - return FALSE; - } - mid_BDI332_readMem = env->GetStaticMethodID(cls_BDI332, "readMem", "(II)I"); - if (mid_BDI332_readMem == 0) { - fprintf_flush(stderr, "Can't find BDI332.readMem\n"); - return FALSE; - } - mid_BDI332_readUserReg = env->GetStaticMethodID(cls_BDI332, "readUserReg", "(I)I"); - if (mid_BDI332_readUserReg == 0) { - fprintf_flush(stderr, "Can't find BDI332.readUserReg\n"); - return FALSE; - } - mid_BDI332_writeUserReg = env->GetStaticMethodID(cls_BDI332, "writeUserReg", "(II)V"); - if (mid_BDI332_writeUserReg == 0) { - fprintf_flush(stderr, "Can't find BDI332.writeUserReg\n"); - return FALSE; - } - mid_BDI332_readUserReg = env->GetStaticMethodID(cls_BDI332, "readUserReg", "(I)I"); - if (mid_BDI332_readUserReg == 0) { - fprintf_flush(stderr, "Can't find BDI332.readUserReg\n"); - return FALSE; - } - mid_BDI332_writeSysReg = env->GetStaticMethodID(cls_BDI332, "writeSysReg", "(II)V"); - if (mid_BDI332_writeSysReg == 0) { - fprintf_flush(stderr, "Can't find BDI332.writeSysReg\n"); - return FALSE; - } - mid_BDI332_readSysReg = env->GetStaticMethodID(cls_BDI332, "readSysReg", "(I)I"); - if (mid_BDI332_readSysReg == 0) { - fprintf_flush(stderr, "Can't find BDI332.readSysReg\n"); - return FALSE; - } - mid_BDI332_isTargetInDebugMode = env->GetStaticMethodID(cls_BDI332, "isTargetInDebugMode", "()Z"); - if (mid_BDI332_isTargetInDebugMode == 0) { - fprintf_flush(stderr, "Can't find BDI332.isTargetInDebugMode\n"); - return FALSE; - } - - // Uart0 Class - mid_Uart0_write = env->GetStaticMethodID(cls_Uart0, "write", "([BI)Z"); - if (mid_Uart0_write == 0) { - fprintf_flush(stderr, "Can't find Uart0.write\n"); - return FALSE; - } - mid_Uart0_read = env->GetStaticMethodID(cls_Uart0, "read", "()[B"); - if (mid_Uart0_read == 0) { - fprintf_flush(stderr, "Can't find Uart0.read\n"); - return FALSE; - } - - jvm_mIDs_done = TRUE; - } else { - fprintf_flush(stdout, "Method IDs already created -> everything successfully set up!\n"); - } - - return TRUE; -} - -/* Exception Handling - * This function has to be called after every function (which may throw an exception) - * returns TRUE (0) if an exception occured, FALSE (#0) if not - */ -EXPORT int checkForExceptions() { - jthrowable exc; - exc = env->ExceptionOccurred(); - if (exc) { - env->ExceptionDescribe(); - env->ExceptionClear(); - return TRUE; - } - return FALSE; -} - -/* USB_Device methods - * - * For documentation see the java doc. - */ -EXPORT void USB_Device_open() -{ - env->CallStaticVoidMethod(cls_USB_Device, mid_USB_Dev_open); -} - -EXPORT void USB_Device_close() -{ - env->CallStaticVoidMethod(cls_USB_Device, mid_USB_Dev_close); -} - -EXPORT void USB_Device_reset() -{ - env->CallStaticVoidMethod(cls_USB_Device, mid_USB_Dev_reset); -} - -EXPORT int USB_Device_getMaxPacketSize() -{ - return env->CallStaticIntMethod(cls_USB_Device, mid_USB_Dev_getMaxPacketSize); -} - -/* BDI 555 methods - * - * For documentation see the java doc. - */ -EXPORT void BDI555_break_() -{ - env->CallStaticVoidMethod(cls_BDI555, mid_BDI555_break_); -} - -EXPORT void BDI555_go() -{ - env->CallStaticVoidMethod(cls_BDI555, mid_BDI555_go); -} - -EXPORT void BDI555_reset_target() -{ - env->CallStaticVoidMethod(cls_BDI555, mid_BDI555_reset_target); -} - -EXPORT BOOL BDI555_isFreezeAsserted() -{ - jboolean isAsserted; - isAsserted = env->CallStaticBooleanMethod(cls_BDI555, mid_BDI555_isFreezeAsserted); - return (isAsserted != JNI_FALSE); -} - -EXPORT void BDI555_startFastDownload(int startAddr) -{ - env->CallStaticVoidMethod(cls_BDI555, mid_BDI555_startFastDownload, startAddr); -} - -EXPORT void BDI555_fastDownload(int downloadData[], int dataLength) -{ - jintArray jdata; - jdata = env->NewIntArray(dataLength); - if (jdata == NULL) { - jclass excCls; - excCls = env->FindClass("java/lang/OutOfMemoryError"); - if (excCls == 0) { - return; - } - env->ThrowNew(excCls, "BDI555_fastDownload: not enough memory"); - return; - } -// TODO: check type cast - env->SetIntArrayRegion(jdata, 0, dataLength, (jint*) downloadData); - env->CallStaticVoidMethod(cls_BDI555, mid_BDI555_fastDownload, jdata, dataLength); - env->DeleteLocalRef(jdata); -} - -EXPORT void BDI555_stopFastDownload() -{ - env->CallStaticVoidMethod(cls_BDI555, mid_BDI555_stopFastDownload); -} - -EXPORT void BDI555_writeMem(int addr, int value, int size) -{ - env->CallStaticVoidMethod(cls_BDI555, mid_BDI555_writeMem, addr, value, size); -} - -EXPORT int BDI555_readMem(int addr, int size) -{ - return env->CallStaticIntMethod(cls_BDI555, mid_BDI555_readMem, addr, size); -} - -EXPORT void BDI555_writeMemSeq(int value, int size) -{ - env->CallStaticVoidMethod(cls_BDI555, mid_BDI555_writeMemSeq, value, size); -} - -EXPORT int BDI555_readMemSeq(int size) -{ - return env->CallStaticIntMethod(cls_BDI555, mid_BDI555_readMemSeq, size); -} - -EXPORT int BDI555_readGPR(int gpr) -{ - return env->CallStaticIntMethod(cls_BDI555, mid_BDI555_readGPR, gpr); -} - -EXPORT void BDI555_writeGPR(int gpr, int value) -{ - env->CallStaticVoidMethod(cls_BDI555, mid_BDI555_writeGPR, gpr, value); -} - -EXPORT int BDI555_readSPR(int spr) -{ - return env->CallStaticIntMethod(cls_BDI555, mid_BDI555_readSPR, spr); -} - -EXPORT void BDI555_writeSPR(int spr, int value) -{ - env->CallStaticVoidMethod(cls_BDI555, mid_BDI555_writeSPR, spr, value); -} - -EXPORT int BDI555_readMSR() -{ - return env->CallStaticIntMethod(cls_BDI555, mid_BDI555_readMSR); -} - -EXPORT void BDI555_writeMSR(int value) -{ - env->CallStaticVoidMethod(cls_BDI555, mid_BDI555_writeMSR, value); -} - -EXPORT long BDI555_readFPR(int fpr, int tmpMemAddr) -{ - return env->CallStaticLongMethod(cls_BDI555, mid_BDI555_readFPR, fpr, tmpMemAddr); -} - -EXPORT void BDI555_writeFPR(int fpr, int tmpMemAddr, long value) -{ - env->CallStaticVoidMethod(cls_BDI555, mid_BDI555_writeSPR, fpr, tmpMemAddr, value); -} - -EXPORT int BDI555_readCR() -{ - return env->CallStaticIntMethod(cls_BDI555, mid_BDI555_readCR); -} - -EXPORT void BDI555_writeCR(int value) -{ - env->CallStaticVoidMethod(cls_BDI555, mid_BDI555_writeCR, value); -} - -EXPORT int BDI555_readFPSCR() -{ - return env->CallStaticIntMethod(cls_BDI555, mid_BDI555_readFPSCR); -} - -EXPORT void BDI555_writeFPSCR(int value) -{ - env->CallStaticVoidMethod(cls_BDI555, mid_BDI555_writeFPSCR, value); -} - -EXPORT BOOL BDI555_isTargetInDebugMode() -{ - jboolean inDebugMode; - inDebugMode = env->CallStaticBooleanMethod(cls_BDI555, mid_BDI555_isTargetInDebugMode); - return (inDebugMode != JNI_FALSE); -} - -EXPORT void BDI555_setGpr31(int gpr31) -{ - env->CallStaticVoidMethod(cls_BDI555, mid_BDI555_setGpr31, gpr31); -} - - -/* BDI 332 methods - * - * For documentation see the java doc. - */ -EXPORT void BDI332_nopsToLegalCmd() -{ - env->CallStaticVoidMethod(cls_BDI332, mid_BDI332_nopsToLegalCmd); -} - -EXPORT void BDI332_break_() -{ - env->CallStaticVoidMethod(cls_BDI332, mid_BDI332_break_); -} - -EXPORT void BDI332_go() -{ - env->CallStaticVoidMethod(cls_BDI332, mid_BDI332_go); -} - -EXPORT void BDI332_reset_target() -{ - env->CallStaticVoidMethod(cls_BDI332, mid_BDI332_reset_target); -} - -EXPORT void BDI332_reset_peripherals() -{ - env->CallStaticVoidMethod(cls_BDI332, mid_BDI332_reset_peripherals); -} - -EXPORT BOOL BDI332_isFreezeAsserted() -{ - jboolean isAsserted; - isAsserted = env->CallStaticBooleanMethod(cls_BDI332, mid_BDI332_isFreezeAsserted); - return (isAsserted != JNI_FALSE); -} - -EXPORT void BDI332_fillMem(int downloadData[], int dataLength) -{ - jintArray jdata; - jdata = env->NewIntArray(dataLength); - if (jdata == NULL) { - jclass excCls; - excCls = env->FindClass("java/lang/OutOfMemoryError"); - if (excCls == 0) { - return; - } - env->ThrowNew(excCls, "BDI332_fillMem: not enough memory"); - return; - } -// for (int i = 0; i < dataLength; ++i) { -// fprintf_flush(stdout, ("data %d: %x\n", i, downloadData[i]); -// } - - env->SetIntArrayRegion(jdata, 0, dataLength, (jint*) downloadData); - env->CallStaticVoidMethod(cls_BDI332, mid_BDI332_fillMem, jdata, dataLength); - env->DeleteLocalRef(jdata); -} - -EXPORT int BDI332_dumpMem(int nofData, int result[]) -{ - jintArray intArray; - jsize size; - jint *intArrayElements; - intArray = (jintArray) env->CallStaticObjectMethod(cls_BDI332, mid_BDI332_dumpMem, nofData); - if (intArray == NULL) - return 0; - size = env->GetArrayLength(intArray); - intArrayElements = env->GetIntArrayElements(intArray, 0); - for (int i = 0; i < size; i++) { - result[i] = intArrayElements[i]; - } - env->ReleaseIntArrayElements(intArray, intArrayElements, 0); - return size; -} - -EXPORT void BDI332_writeMem(int addr, int value, int size) -{ - env->CallStaticVoidMethod(cls_BDI332, mid_BDI332_writeMem, addr, value, size); -} - -EXPORT int BDI332_readMem(int addr, int size) -{ - return env->CallStaticIntMethod(cls_BDI332, mid_BDI332_readMem, addr, size); -} - -EXPORT int BDI332_readUserReg(int reg) -{ - return env->CallStaticIntMethod(cls_BDI332, mid_BDI332_readUserReg, reg); -} - -EXPORT void BDI332_writeUserReg(int reg, int value) -{ - env->CallStaticVoidMethod(cls_BDI332, mid_BDI332_writeUserReg, reg, value); -} - -EXPORT int BDI332_readSysReg(int reg) -{ - return env->CallStaticIntMethod(cls_BDI332, mid_BDI332_readSysReg, reg); -} - -EXPORT void BDI332_writeSysReg(int reg, int value) -{ - env->CallStaticVoidMethod(cls_BDI332, mid_BDI332_writeSysReg, reg, value); -} - -EXPORT BOOL BDI332_isTargetInDebugMode() -{ - jboolean isAsserted; - isAsserted = env->CallStaticBooleanMethod(cls_BDI332, mid_BDI332_isTargetInDebugMode); - return (isAsserted != JNI_FALSE); -} - -/* - * UART functions - * - * For documentation see the java doc. - */ -EXPORT int UART0_read(char result[]) -{ - jbyteArray byteArray; - jsize size; - jbyte *byteArrayElements; - byteArray = (jbyteArray) env->CallStaticObjectMethod(cls_Uart0, mid_Uart0_read); - if (byteArray == NULL) - return 0; - size = env->GetArrayLength(byteArray); - byteArrayElements = env->GetByteArrayElements(byteArray, 0); - for (int i = 0; i < size; i++) { - result[i] = byteArrayElements[i]; - } - env->ReleaseByteArrayElements(byteArray, byteArrayElements, 0); - return size; -} - -EXPORT int UART0_write(char data[], int dataLength) -{ - jbyteArray jdata; - jboolean result; - jdata = env->NewByteArray(dataLength); - if (jdata == NULL) { - jclass excCls; - excCls = env->FindClass("java/lang/OutOfMemoryError"); - if (excCls == 0) { - return FALSE; - } - env->ThrowNew(excCls, "UART0_write: not enough memory"); - return FALSE; - } - - env->SetByteArrayRegion(jdata, 0, dataLength, (jbyte*) data); - result = env->CallStaticBooleanMethod(cls_Uart0, mid_Uart0_write, jdata, dataLength); - env->DeleteLocalRef(jdata); - return result; -} diff --git a/JNIdll/libjvm.a b/JNIdll/libjvm.a deleted file mode 100644 index 14d00b6..0000000 Binary files a/JNIdll/libjvm.a and /dev/null differ diff --git a/JNIdll/makefile b/JNIdll/makefile deleted file mode 100644 index 61b9994..0000000 --- a/JNIdll/makefile +++ /dev/null @@ -1,22 +0,0 @@ -DLLSRC=BDI_dll.cpp -DLL=BDI.dll -DEF=BDI.def -JVMLIBA=libjvm.a -OBJ=$(SRC:.c=.o) # replaces the .c from SRC with .o -JAVA_HOME="C:/Program Files/Java/jdk1.5.0_04" - -CC=gcc -RM=rm - -dll: $(DLL) - $(CC) -Wall -D_JNI_IMPLEMENTATION_ -Wl,--kill-at, \ - -I$(JAVAPATH)/include -I$(JAVAPATH)/include/win32 \ - -shared $(DLLSRC) -o $(DLL) $(DEF) $(JVMLIBA) - -dll_def: $(DLL) - $(CC) -Wall -D_JNI_IMPLEMENTATION_ -Wl,--output-def,$(DEF),--kill-at, \ - -I$(JAVAPATH)/include -I$(JAVAPATH)/include/win32 \ - -shared $(DLLSRC) -o $(DLL) $(JVMLIBA) - -clean: - $(RM) $(DLL) diff --git a/blackbox/BDI.dll b/blackbox/BDI.dll deleted file mode 100644 index 16e1c18..0000000 Binary files a/blackbox/BDI.dll and /dev/null differ diff --git a/blackbox/Usb/Mod/!Compile.otd b/blackbox/Usb/Mod/!Compile.otd deleted file mode 100644 index 8aafa6f..0000000 --- a/blackbox/Usb/Mod/!Compile.otd +++ /dev/null @@ -1,17 +0,0 @@ -¿¿CXdeCmdsDev.CompileThis - UsbBDIDll - UsbBDI - UsbBDI332 - UsbBDI555 - UsbTargLog - UsbUtils -¿¿E - -¿¿CDevDebug.UnloadThis - UsbTargLog - UsbBDI555 - UsbBDI332 - UsbBDI - UsbBDIDll - UsbUtils - ¿¿E diff --git a/blackbox/Usb/Mod/BDI.otd b/blackbox/Usb/Mod/BDI.otd deleted file mode 100644 index 7843bfe..0000000 --- a/blackbox/Usb/Mod/BDI.otd +++ /dev/null @@ -1,469 +0,0 @@ -MODULE UsbBDI; - IMPORT SYS := SYSTEM, BDI := UsbBDIDll, Log := StdLog, ComTools, WinApi, Services, TextModels, Ports, - Files, HostFiles; - - CONST - ttDefaultPeriod = 500; (*500 ms*) ttPipeHandDisconnected = -1; - nul = 0X; - ascLf = 0AX; ascCr = 0DX; - CONST - FALSE_ = 0; - PATH_LENGTH* = 512; - - CONST - JAVA_OUT_FILENAME = "JavaOut.txt"; - JAVA_ERR_FILENAME = "JavaErr.txt"; - INVALID_HANDLE_VALUE = -1; - STD_OUT_COLOR = Ports.green; - STD_ERR_COLOR = Ports.grey50; - JAVA_OUT_COLOR = Ports.blue; - JAVA_ERR_COLOR = Ports.red; - - CONST - MAX_UART_DATA_LENGTH* = BDI.MAX_UART_DATA_LENGTH; - - CONST - PATH_SEPARATOR = "\"; - ARG_SEPARATOR = ";"; - JAR_FILE_USB = "usb.jar"; - JAR_FILE_BDI = "usbpdi.jar"; - JAR_LOCATION = "Usb" + PATH_SEPARATOR + "Rsrc"; - - TYPE - StdReaderWriter = POINTER TO ABSTRACT RECORD (Services.Action) - stdIoText: TextModels.Model; stdIoTextPos: INTEGER; - time, endTime: LONGINT; period: INTEGER; - hStdOut, hStdErr: WinApi.HANDLE; - connected, running: BOOLEAN; prevChar: SHORTCHAR - END; - JvmReaderWriter = POINTER TO EXTENSIBLE RECORD (StdReaderWriter) - errText: TextModels.Model; stdIoWriter, stdErrWriter: TextModels.Writer; - hJavaOut, hJavaErr: WinApi.HANDLE; - END; - - - VAR - bool: BDI.BOOL; - Done-, deviceOpen, jvmCreated: BOOLEAN; (** previous operation successfully completed *) - readerWriter: JvmReaderWriter; - -(* ----------- Standard-IO / Java ReaderWriter --------------- *) - PROCEDURE (task: StdReaderWriter) Clear, NEW, EXTENSIBLE; - BEGIN - task.stdIoText := NIL; task.stdIoTextPos := 0; - task.hStdOut := ttPipeHandDisconnected; task.hStdErr := ttPipeHandDisconnected; - task.time := 0; task.endTime := 0; task.period := 0; - task.connected := FALSE; task.running := FALSE; - task.prevChar := nul; - END Clear; - - PROCEDURE (task: StdReaderWriter) Stop, NEW, EXTENSIBLE; - VAR done: WinApi.BOOL; - BEGIN - Services.RemoveAction(task); task.running := FALSE; - IF task.connected THEN - done := WinApi.CloseHandle(task.hStdOut); - done := WinApi.CloseHandle(task.hStdErr); - END; - task.Clear - END Stop; - - PROCEDURE (task: StdReaderWriter) SetTime (startFromNow, period, timeOut: INTEGER), NEW; - BEGIN - task.time := Services.Ticks() + startFromNow; - IF timeOut <= 0 THEN timeOut := MAX(INTEGER) END; - task.endTime := task.time + LONG(timeOut) * Services.resolution DIV 1000; - task.period := period - END SetTime; - - PROCEDURE (task: StdReaderWriter) ConnectStdOutPipe (hStdOut: WinApi.HANDLE), NEW; - VAR done: WinApi.BOOL; - BEGIN - IF task.connected & (task.hStdOut # hStdOut) THEN done := WinApi.CloseHandle(task.hStdOut) END; - task.hStdOut := hStdOut; task.connected := TRUE - END ConnectStdOutPipe; - - PROCEDURE (task: StdReaderWriter) ConnectStdErrPipe (hStdErr: WinApi.HANDLE), NEW; - VAR done: WinApi.BOOL; - BEGIN - IF task.connected & (task.hStdErr # hStdErr) THEN done := WinApi.CloseHandle(task.hStdErr) END; - task.hStdErr := hStdErr; task.connected := TRUE - END ConnectStdErrPipe; - - PROCEDURE (task: StdReaderWriter) Start, NEW, ABSTRACT; - - PROCEDURE NewJvmReaderWriter ( ): JvmReaderWriter; - VAR rec: JvmReaderWriter; - BEGIN - NEW(rec); rec.Clear; RETURN rec - END NewJvmReaderWriter; - - PROCEDURE (rec: JvmReaderWriter) Clear, EXTENSIBLE; - VAR done: WinApi.BOOL; - BEGIN - rec.Clear^; - rec.errText := NIL; rec.stdIoWriter := NIL; rec.stdErrWriter := NIL; - rec.hJavaOut := ttPipeHandDisconnected; rec.hJavaErr := ttPipeHandDisconnected; - END Clear; - - PROCEDURE (rec: JvmReaderWriter) Stop, EXTENSIBLE; - VAR done: WinApi.BOOL; - BEGIN - IF rec.connected THEN - rec.Stop^; done := WinApi.CloseHandle(rec.hJavaErr); done := WinApi.CloseHandle(rec.hJavaOut) - END; - rec.Clear - END Stop; - - PROCEDURE (rec: JvmReaderWriter) ConnectJavaOutPipe (hJavaOut: WinApi.HANDLE), NEW; - VAR done: WinApi.BOOL; - BEGIN - IF rec.connected & (rec.hJavaOut # hJavaOut) THEN done := WinApi.CloseHandle(rec.hJavaOut) END; - rec.hJavaOut := hJavaOut; rec.connected := TRUE - END ConnectJavaOutPipe; - - PROCEDURE (rec: JvmReaderWriter) ConnectJavaErrPipe (hJavaErr: WinApi.HANDLE), NEW; - VAR done: WinApi.BOOL; - BEGIN - IF rec.connected & (rec.hJavaErr # hJavaErr) THEN done := WinApi.CloseHandle(rec.hJavaErr) END; - rec.hJavaErr := hJavaErr; rec.connected := TRUE - END ConnectJavaErrPipe; - - PROCEDURE (rec: JvmReaderWriter) Start; - VAR handle, stdOutHandle, stdErrHandle: WinApi.HANDLE; - BEGIN - IF rec.running THEN rec.Stop END; - IF rec.stdIoText = NIL THEN rec.stdIoText := TextModels.dir.New(); END; - IF rec.stdIoWriter = NIL THEN rec.stdIoWriter := rec.stdIoText.NewWriter(NIL) END; - rec.stdIoWriter.SetPos(rec.stdIoTextPos); - - IF rec.errText = NIL THEN rec.errText := TextModels.dir.New(); END; - IF rec.stdErrWriter = NIL THEN rec.stdErrWriter := rec.errText.NewWriter(NIL) END; - rec.stdErrWriter.SetPos(rec.errText.Length()); - - (* Connect Std pipes *) - rec.ConnectStdOutPipe(BDI.getOutPipeHandle()); - rec.ConnectStdErrPipe(BDI.getErrPipeHandle()); - - (* Connect Java pipes *) - handle := WinApi.CreateFile(JAVA_OUT_FILENAME, WinApi.GENERIC_READ + WinApi.GENERIC_WRITE, - WinApi.FILE_SHARE_WRITE, NIL, WinApi.OPEN_EXISTING, {}, 0); - IF (handle = INVALID_HANDLE_VALUE) THEN - Log.String("Error opening JAVA_OUT_FILENAME"); Log.Ln; - ELSE - rec.ConnectJavaOutPipe(handle) - END; - - handle := WinApi.CreateFile(JAVA_ERR_FILENAME, WinApi.GENERIC_READ + WinApi.GENERIC_WRITE, - WinApi.FILE_SHARE_WRITE, NIL, WinApi.OPEN_EXISTING, {}, 0); - IF (handle = INVALID_HANDLE_VALUE) THEN - Log.String("Error opening JAVA_ERR_FILENAME"); Log.Ln; - ELSE - rec.ConnectJavaErrPipe(handle) - END; - - rec.running := TRUE; Services.DoLater(rec, rec.time) - END Start; - - PROCEDURE (rec: JvmReaderWriter) Do; - VAR - outModel: TextModels.Model; - n, ioDone, errDone, nofBytesRead, ioBytesAvail, errBytesAvail, exitCode: INTEGER; - ch: SHORTCHAR; - strSC: ARRAY 512 OF SHORTCHAR; - success: WinApi.BOOL; - BEGIN - IF rec.running THEN - (* STD OUT *) - IF rec.hStdOut > 0 THEN - nofBytesRead := 0; ioBytesAvail := 0; - ioDone := WinApi.PeekNamedPipe( - rec.hStdOut, (*//handle to pipe to copy from *) - SYS.ADR(strSC), (*//pointer to data buffer*) - LEN(strSC), (*//size, in bytes, of data buffer*) - nofBytesRead, (*nofBytesRead,*) (*//pointer to number of bytes read*) - ioBytesAvail, (*//pointer to total number of bytes available*) - NIL (*//pointer to unread bytes in this message*) - ); - IF (ioDone # 0) & (ioBytesAvail > 0) THEN - ioDone := WinApi.ReadFile(rec.hStdOut, SYS.ADR(strSC), LEN(strSC), nofBytesRead, NIL); - IF (ioDone # 0) & (nofBytesRead > 0) THEN - FOR n := 0 TO nofBytesRead - 1 DO - ch := strSC[n]; - IF (ch = ascLf) & (rec.prevChar # ascCr) THEN ch := TextModels.line END; - rec.stdIoWriter.WriteChar(ch); - rec.prevChar := ch; - END - END; - rec.stdIoText.SetAttr(0, rec.stdIoText.Length(), - TextModels.NewColor(TextModels.dir.attr, STD_OUT_COLOR)); - Log.text.Append(rec.stdIoText) - END; - END; - (* STD ERR *) - IF rec.hStdErr > 0 THEN - nofBytesRead := 0; errBytesAvail := 0; - ioDone := WinApi.PeekNamedPipe( - rec.hStdErr, (*//handle to pipe to copy from *) - SYS.ADR(strSC), (*//pointer to data buffer*) - LEN(strSC), (*//size, in bytes, of data buffer*) - nofBytesRead, (*nofBytesRead,*) (*//pointer to number of bytes read*) - errBytesAvail, (*//pointer to total number of bytes available*) - NIL (*//pointer to unread bytes in this message*) - ); - IF (ioDone # 0) & (errBytesAvail > 0) THEN - errDone := WinApi.ReadFile(rec.hStdErr, SYS.ADR(strSC), LEN(strSC), nofBytesRead, NIL); - IF (errDone # 0) & (nofBytesRead > 0) THEN - FOR n := 0 TO nofBytesRead - 1 DO - ch := strSC[n]; - IF (ch = ascLf) & (rec.prevChar # ascCr) THEN ch := TextModels.line END; - rec.stdErrWriter.WriteChar(ch); rec.prevChar := ch - END - END; - rec.errText.SetAttr(0, rec.errText.Length(), - TextModels.NewColor(TextModels.dir.attr, STD_ERR_COLOR)); - Log.text.Append(rec.errText) - END - END; - (* JAVA OUT *) - IF rec.hJavaOut > 0 THEN - ioDone := WinApi.ReadFile(rec.hJavaOut, SYS.ADR(strSC), LEN(strSC), nofBytesRead, NIL); - IF (ioDone # 0) & (nofBytesRead > 0) THEN - FOR n := 0 TO nofBytesRead - 1 DO - ch := strSC[n]; - IF (ch = ascLf) & (rec.prevChar # ascCr) THEN ch := TextModels.line END; - rec.stdIoWriter.WriteChar(ch); - rec.prevChar := ch; - END - END; - rec.stdIoText.SetAttr(0, rec.stdIoText.Length(), - TextModels.NewColor(TextModels.dir.attr, JAVA_OUT_COLOR)); - Log.text.Append(rec.stdIoText) - END; - (* JAVA ERR *) - IF rec.hJavaErr > 0 THEN - errDone := WinApi.ReadFile(rec.hJavaErr, SYS.ADR(strSC), LEN(strSC), nofBytesRead, NIL); - IF (errDone # 0) & (nofBytesRead > 0) THEN - FOR n := 0 TO nofBytesRead - 1 DO - ch := strSC[n]; - IF (ch = ascLf) & (rec.prevChar # ascCr) THEN ch := TextModels.line END; - rec.stdErrWriter.WriteChar(ch); rec.prevChar := ch - END - END; - rec.errText.SetAttr(0, rec.errText.Length(), - TextModels.NewColor(TextModels.dir.attr, JAVA_ERR_COLOR)); - Log.text.Append(rec.errText) - END; - INC( rec.time, rec.period ); Services.DoLater(rec, rec.time ) - END; - END Do; - -(* ----------- JVM --------------- *) - - PROCEDURE CreateJVM (classpath: ARRAY OF SHORTCHAR); - VAR string: WinApi.PtrSTR; - BEGIN - string := ComTools.NewSString(classpath); - bool := BDI.createJVM(string); - IF bool = FALSE_ THEN - Done := FALSE; - Log.String("creating JVM failed"); Log.Ln; - HALT(77); - ELSE - Done := TRUE; - Log.String("JVM successfully created"); Log.Ln; - jvmCreated := TRUE; - END; - (* We need to create the jvm before opening the ReaderWriter. - The javaout, javaerr can only be opened after creating the jvm! *) - IF readerWriter = NIL THEN - readerWriter := NewJvmReaderWriter(); - readerWriter.Start(); - END; - ComTools.FreeSString(string); - END CreateJVM; - - PROCEDURE DestroyJVM ; - BEGIN - bool := BDI.destroyJVM(); - IF bool = FALSE_ THEN - Done := FALSE; - Log.String("destroying JVM failed"); Log.Ln; - ELSE - Done := TRUE; - Log.String("JVM destroyed"); Log.Ln; - END; - jvmCreated := FALSE; - END DestroyJVM; - - PROCEDURE CheckForExceptions * (): BOOLEAN; - BEGIN - RETURN (BDI.checkForExceptions() # FALSE_) - END CheckForExceptions; - -(* ----------- USB --------------- *) - - PROCEDURE USB_Device_open ; - BEGIN - BDI.USB_Device_open; - Done := ~CheckForExceptions(); - IF Done THEN - deviceOpen := TRUE; - END - END USB_Device_open; - - PROCEDURE USB_Device_close ; - BEGIN - BDI.USB_Device_close; - Done := ~CheckForExceptions(); - deviceOpen := FALSE; - END USB_Device_close; - - PROCEDURE USB_Device_reset * ; - BEGIN - BDI.USB_Device_reset; - Done := ~CheckForExceptions(); - deviceOpen := FALSE; - END USB_Device_reset; - - PROCEDURE USB_Device_getMaxPacketSize * (): INTEGER; - VAR val: INTEGER; - BEGIN - IF deviceOpen THEN - Done := TRUE; - RETURN BDI.USB_Device_getMaxPacketSize(); - ELSE - Done := FALSE; - RETURN - 1 - END - END USB_Device_getMaxPacketSize; - -(* --------- UART0 ----------------- *) - - PROCEDURE UART0_read * (VAR data: ARRAY OF SHORTCHAR; VAR length: INTEGER): BOOLEAN; - BEGIN - length := BDI.UART0_read(data); - RETURN length # FALSE_; - END UART0_read; - - PROCEDURE UART0_write * (VAR data: ARRAY OF SHORTCHAR; length: INTEGER): BOOLEAN; - VAR - result: INTEGER; - BEGIN - RETURN BDI.UART0_write(SYS.ADR(data[0]), length) # FALSE_; - END UART0_write; - -(* -------------- Helper Functions ------------------*) - - PROCEDURE GetUserStartUpPath (VAR startupPath: ARRAY OF SHORTCHAR); - VAR - userStartUpLocator: Files.Locator; userStartUpHostLoc: HostFiles.Locator; - startupPathChar: ARRAY PATH_LENGTH OF CHAR; - i: INTEGER; - BEGIN - userStartUpLocator := Files.dir.This(""); userStartUpHostLoc := userStartUpLocator(HostFiles.Locator); - startupPathChar := userStartUpHostLoc.path$; - FOR i := 0 TO LEN(startupPathChar) - 1 DO - startupPath[i] := SYS.VAL(SHORTCHAR, startupPathChar[i]); - END - END GetUserStartUpPath; - - PROCEDURE GetSystemStartUpPath (VAR startupPath: ARRAY OF SHORTCHAR); - VAR - cmdLinePtr: WinApi.PtrWSTR; args: WinApi.RetCommandLineToArgvW; - n, i, nofArgs: INTEGER; - sysStartUpLocator: Files.Locator; sysStartUpHostLoc: HostFiles.Locator; - BEGIN - cmdLinePtr := WinApi.GetCommandLineW(); - args := WinApi.CommandLineToArgvW(cmdLinePtr, nofArgs); - - n := LEN(args[0]$); - REPEAT DEC(n) UNTIL (args[0][n] = PATH_SEPARATOR) OR (n <= 0); args[0][n] := nul; - - sysStartUpLocator := HostFiles.NewLocator(args[0]$); args[0][n] := PATH_SEPARATOR; - sysStartUpHostLoc := sysStartUpLocator(HostFiles.Locator); - FOR i := 0 TO LEN(sysStartUpHostLoc.path$) DO - startupPath[i] := SYS.VAL(SHORTCHAR, sysStartUpHostLoc.path[i]); - END; - END GetSystemStartUpPath; - - PROCEDURE CheckIfFileExists (filePath: ARRAY OF CHAR; fileName: ARRAY OF CHAR): BOOLEAN; - VAR - i: INTEGER; done: BOOLEAN; - loc: Files.Locator; file: Files.File; name: Files.Name; - BEGIN - loc := Files.dir.This(filePath); - IF loc.res # 0 THEN (*RETURN FALSE*) END; - FOR i := 0 TO LEN(fileName$) DO - name[i] := fileName[i]; - END; - file := Files.dir.Old(loc, name, Files.shared); - RETURN loc.res = 0 - END CheckIfFileExists; - - PROCEDURE ConnectDevice * ; - VAR - startupPath: ARRAY PATH_LENGTH OF SHORTCHAR; - BEGIN - IF ~deviceOpen THEN - IF ~jvmCreated THEN - (* Check for existence of jar-file (whether in user of system directory) *) - GetUserStartUpPath(startupPath); - IF ~CheckIfFileExists(startupPath + PATH_SEPARATOR + JAR_LOCATION, JAR_FILE_USB) OR - ~CheckIfFileExists(startupPath + PATH_SEPARATOR + JAR_LOCATION, JAR_FILE_BDI) THEN - GetSystemStartUpPath(startupPath); - IF ~CheckIfFileExists(startupPath + PATH_SEPARATOR + JAR_LOCATION, JAR_FILE_USB) OR - ~CheckIfFileExists(startupPath + PATH_SEPARATOR + JAR_LOCATION, JAR_FILE_BDI) THEN - Log.String(JAR_FILE_USB + " or " + JAR_FILE_BDI + - " not found in user or system path; expected in " + JAR_LOCATION); Log.Ln; - HALT(76); - END - END; - Log.String("Startup Path: " + startupPath); Log.Ln; - CreateJVM(startupPath + PATH_SEPARATOR + JAR_LOCATION + PATH_SEPARATOR + JAR_FILE_USB + - ARG_SEPARATOR + startupPath + PATH_SEPARATOR + JAR_LOCATION + PATH_SEPARATOR + - JAR_FILE_BDI); - (* - CreateJVM("D:\work\USB\eclipse\mcdp\jars\usb.jar;D:\work\USB\eclipse\mcdp\jars\usbpdi.jar"); - *) - IF ~Done THEN HALT(78) END; - jvmCreated := TRUE; - END; - USB_Device_open; - IF ~Done THEN HALT(79) END; - deviceOpen := TRUE; - END - END ConnectDevice; - - PROCEDURE DeviceOpen * (): BOOLEAN ; - BEGIN - RETURN deviceOpen - END DeviceOpen; - - (* Close and reopen the device *) - PROCEDURE ReopenDevice * ; - BEGIN - ConnectDevice; - USB_Device_close; - USB_Device_open; - IF Done THEN - Log.String("Device opened successfully"); Log.Ln; - ELSE - Log.String("Error while opening Device"); Log.Ln; - END - END ReopenDevice; - -BEGIN - deviceOpen := FALSE; - jvmCreated := FALSE; -CLOSE - IF readerWriter # NIL THEN - readerWriter.Stop; - END; - IF deviceOpen THEN - USB_Device_close; - END; - IF jvmCreated THEN - DestroyJVM - END -END UsbBDI. diff --git a/blackbox/Usb/Mod/BDI332.otd b/blackbox/Usb/Mod/BDI332.otd deleted file mode 100644 index c4c4744..0000000 --- a/blackbox/Usb/Mod/BDI332.otd +++ /dev/null @@ -1,109 +0,0 @@ -MODULE UsbBDI332; - IMPORT SYS := SYSTEM, BDI := UsbBDIDll, BDIMain := UsbBDI, WinApi; - - CONST - FALSE_ = 0; - - VAR - Done-: BOOLEAN; - - (* --------- 332 ----------------- *) - - PROCEDURE nopsToLegalCmd * ; - BEGIN - BDI.BDI332_nopsToLegalCmd; - Done := ~BDIMain.CheckForExceptions() - END nopsToLegalCmd; - - PROCEDURE go * ; - BEGIN - BDI.BDI332_go; - Done := ~BDIMain.CheckForExceptions() - END go; - - PROCEDURE break_ * ; - BEGIN - BDI.BDI332_break_; - Done := ~BDIMain.CheckForExceptions() - END break_; - - PROCEDURE reset_target * ; - BEGIN - BDI.BDI332_reset_target; - Done := ~BDIMain.CheckForExceptions() - END reset_target; - - PROCEDURE reset_peripherals * ; - BEGIN - BDI.BDI332_reset_peripherals; - Done := ~BDIMain.CheckForExceptions() - END reset_peripherals; - - PROCEDURE isFreezeAsserted * (): BOOLEAN; - VAR result: WinApi.BOOL; - BEGIN - result := BDI.BDI332_isFreezeAsserted(); - Done := ~BDIMain.CheckForExceptions(); - RETURN result # FALSE_ - END isFreezeAsserted; - - PROCEDURE fillMem * (downloadData: ARRAY OF INTEGER; dataLength: INTEGER); - BEGIN - BDI.BDI332_fillMem(SYS.ADR(downloadData[0]), dataLength); - Done := ~BDIMain.CheckForExceptions() - END fillMem; - - PROCEDURE dumpMem * (nofData: INTEGER; VAR result: ARRAY OF INTEGER; VAR length: INTEGER); - BEGIN - length := BDI.BDI332_dumpMem(nofData, result); - Done := ~BDIMain.CheckForExceptions() - END dumpMem; - - PROCEDURE writeMem * (addr, value, size: INTEGER); - BEGIN - BDI.BDI332_writeMem(addr, value, size); - Done := ~BDIMain.CheckForExceptions() - END writeMem; - - PROCEDURE readMem * (addr, size: INTEGER): INTEGER; - VAR result: INTEGER; - BEGIN - result := BDI.BDI332_readMem(addr, size); - Done := ~BDIMain.CheckForExceptions(); - RETURN result - END readMem; - - PROCEDURE readUserReg * (reg: INTEGER): INTEGER; - VAR result: INTEGER; - BEGIN - result := BDI.BDI332_readUserReg(reg); - Done := ~BDIMain.CheckForExceptions(); - RETURN result - END readUserReg; - - PROCEDURE writeUserReg * (reg, value: INTEGER); - BEGIN - BDI.BDI332_writeUserReg(reg, value); - Done := ~BDIMain.CheckForExceptions() - END writeUserReg; - - PROCEDURE readSysReg * (reg: INTEGER): INTEGER; - VAR result: INTEGER; - BEGIN - result := BDI.BDI332_readSysReg(reg); - Done := ~BDIMain.CheckForExceptions(); - RETURN result - END readSysReg; - - PROCEDURE writeSysReg * (reg, value: INTEGER); - BEGIN - BDI.BDI332_writeSysReg(reg, value); - Done := ~BDIMain.CheckForExceptions() - END writeSysReg; - - PROCEDURE isTargetInDebugMode * (): BOOLEAN; - BEGIN - RETURN BDI.BDI332_isTargetInDebugMode() # FALSE_; - END isTargetInDebugMode; - -END UsbBDI332. \ No newline at end of file diff --git a/blackbox/Usb/Mod/BDI555.otd b/blackbox/Usb/Mod/BDI555.otd deleted file mode 100644 index fcd8205..0000000 --- a/blackbox/Usb/Mod/BDI555.otd +++ /dev/null @@ -1,189 +0,0 @@ -MODULE UsbBDI555; - IMPORT SYS := SYSTEM, BDI := UsbBDIDll, BDIMain := UsbBDI, WinApi; - - CONST - FALSE_ = 0; - - CONST - MAX_NOF_LONGS_FILL* = BDI.MAX_NOF_LONGS_FILL; - - VAR - Done-: BOOLEAN; - -(* ----------- 555 --------------- *) - - PROCEDURE go * ; - BEGIN - BDI.BDI555_go; - Done := ~BDIMain.CheckForExceptions() - END go; - - PROCEDURE break_ * ; - BEGIN - BDI.BDI555_break_; - Done := ~BDIMain.CheckForExceptions() - END break_; - - PROCEDURE reset_target * ; - BEGIN - BDI.BDI555_reset_target; - Done := ~BDIMain.CheckForExceptions() - END reset_target; - - PROCEDURE isFreezeAsserted * (): BOOLEAN; - VAR result: WinApi.BOOL; - BEGIN - result := BDI.BDI555_isFreezeAsserted(); - Done := ~BDIMain.CheckForExceptions(); - RETURN result # FALSE_ - END isFreezeAsserted; - - PROCEDURE startFastDownload * (addr: INTEGER); - BEGIN - BDI.BDI555_startFastDownload(addr); - Done := ~BDIMain.CheckForExceptions() - END startFastDownload; - - PROCEDURE fastDownload * (downloadData: ARRAY OF INTEGER; dataLength: INTEGER); - (*VAR i: INTEGER;*) - BEGIN - (* - Log.String("BDI555_fastDownload: length = "); Log.Int(dataLength); Log.Ln; - FOR i := 0 TO dataLength - 1 DO - Log.Int(downloadData[i]); Log.Tab; - END; - Log.Ln; - *) - BDI.BDI555_fastDownload(SYS.ADR(downloadData[0]), dataLength); - Done := ~BDIMain.CheckForExceptions() - END fastDownload; - - PROCEDURE stopFastDownload * ; - BEGIN - BDI.BDI555_stopFastDownload; - Done := ~BDIMain.CheckForExceptions() - END stopFastDownload; - - PROCEDURE writeMem * (addr, value, size: INTEGER); - BEGIN - BDI.BDI555_writeMem(addr, value, size); - Done := ~BDIMain.CheckForExceptions() - END writeMem; - - PROCEDURE readMem * (addr, size: INTEGER): INTEGER; - VAR result: INTEGER; - BEGIN - result := BDI.BDI555_readMem(addr, size); - Done := ~BDIMain.CheckForExceptions(); - RETURN result - END readMem; - - PROCEDURE writeMemSeq * (value, size: INTEGER); - BEGIN - BDI.BDI555_writeMemSeq(value, size); - Done := ~BDIMain.CheckForExceptions() - END writeMemSeq; - - PROCEDURE readMemSeq * (size: INTEGER): INTEGER; - VAR result: INTEGER; - BEGIN - result := BDI.BDI555_readMemSeq(size); - Done := ~BDIMain.CheckForExceptions(); - RETURN result - END readMemSeq; - - PROCEDURE readGPR * (gpr: INTEGER): INTEGER; - VAR result: INTEGER; - BEGIN - result := BDI.BDI555_readGPR(gpr); - Done := ~BDIMain.CheckForExceptions(); - RETURN result - END readGPR; - - PROCEDURE writeGPR * (gpr, value: INTEGER); - BEGIN - BDI.BDI555_writeGPR(gpr, value); - Done := ~BDIMain.CheckForExceptions() - END writeGPR; - - PROCEDURE readSPR * (spr: INTEGER): INTEGER; - VAR result: INTEGER; - BEGIN - result := BDI.BDI555_readSPR(spr); - Done := ~BDIMain.CheckForExceptions(); - RETURN result - END readSPR; - - PROCEDURE writeSPR * (spr, value: INTEGER); - BEGIN - BDI.BDI555_writeSPR(spr, value); - Done := ~BDIMain.CheckForExceptions() - END writeSPR; - - PROCEDURE readMSR * (): INTEGER; - VAR result: INTEGER; - BEGIN - result := BDI.BDI555_readMSR(); - Done := ~BDIMain.CheckForExceptions(); - RETURN result - END readMSR; - - PROCEDURE writeMSR * (value: INTEGER); - BEGIN - BDI.BDI555_writeMSR(value); - Done := ~BDIMain.CheckForExceptions() - END writeMSR; - - PROCEDURE readFPR * (fpr, tmpMemAddr: INTEGER): LONGINT; - VAR result: LONGINT; - BEGIN - result := BDI.BDI555_readFPR(fpr, tmpMemAddr); - Done := ~BDIMain.CheckForExceptions(); - RETURN result - END readFPR; - - PROCEDURE writeFPR * (fpr, tmpMemAddr: INTEGER; value: LONGINT); - BEGIN - BDI.BDI555_writeFPR(fpr, tmpMemAddr, value); - Done := ~BDIMain.CheckForExceptions() - END writeFPR; - - PROCEDURE readCR * (): INTEGER; - VAR result: INTEGER; - BEGIN - result := BDI.BDI555_readCR(); - Done := ~BDIMain.CheckForExceptions(); - RETURN result - END readCR; - - PROCEDURE writeCR * (value: INTEGER); - BEGIN - BDI.BDI555_writeCR(value); - Done := ~BDIMain.CheckForExceptions() - END writeCR; - - PROCEDURE readFPSCR * (): INTEGER; - VAR result: INTEGER; - BEGIN - result := BDI.BDI555_readFPSCR(); - Done := ~BDIMain.CheckForExceptions(); - RETURN result - END readFPSCR; - - PROCEDURE writeFPSCR * (value: INTEGER); - BEGIN - BDI.BDI555_writeFPSCR(value); - Done := ~BDIMain.CheckForExceptions() - END writeFPSCR; - - PROCEDURE isTargetInDebugMode * (): BOOLEAN; - BEGIN - RETURN BDI.BDI555_isTargetInDebugMode() # FALSE_; - END isTargetInDebugMode; - - PROCEDURE setGpr31 * (gpr31: INTEGER); - BEGIN - BDI.BDI555_setGpr31(gpr31); - END setGpr31; - -END UsbBDI555. \ No newline at end of file diff --git a/blackbox/Usb/Mod/BDIDll.otd b/blackbox/Usb/Mod/BDIDll.otd deleted file mode 100644 index efbb8a4..0000000 --- a/blackbox/Usb/Mod/BDIDll.otd +++ /dev/null @@ -1,178 +0,0 @@ -MODULE UsbBDIDll ["BDI.dll"]; - IMPORT SYSTEM; - - CONST - MAX_NOF_LONGS_FILL* = 84; - MAX_UART_DATA_LENGTH* = 256; - - TYPE - PtrSTR* = POINTER TO ARRAY [untagged] OF SHORTCHAR; - BOOL* = INTEGER; - -(* -------JVM--------- *) - - PROCEDURE getErrPipeHandle* (): INTEGER; - (*END getErrPipeHandle; *) - - PROCEDURE getOutPipeHandle* (): INTEGER; - (*END getOutPipeHandle; *) - - PROCEDURE createJVM* (classpath: PtrSTR): BOOL; - (*END createJVM; *) - - PROCEDURE destroyJVM* (): INTEGER; - (*END destroyJVM; *) - - PROCEDURE checkForExceptions* (): BOOL; - (*END checkForExceptions; *) - -(* -------USB--------- *) - - PROCEDURE USB_Device_open*; - (*END USB_Device_open; *) - - PROCEDURE USB_Device_close*; - (*END USB_Device_close; *) - - PROCEDURE USB_Device_reset*; - (*END USB_Device_reset; *) - - PROCEDURE USB_Device_getMaxPacketSize* (): INTEGER; - (*END USB_Device_reset; *) - -(* -------555--------- *) - - PROCEDURE BDI555_go*; - (*END BDI555_go; *) - - PROCEDURE BDI555_break_*; - (*END BDI555_break_; *) - - PROCEDURE BDI555_reset_target*; - (*END BDI555_reset_target; *) - - PROCEDURE BDI555_isFreezeAsserted* (): BOOL; - (*END BDI555_isFreezeAsserted; *) - - PROCEDURE BDI555_startFastDownload* (adr: INTEGER); - (*END BDI555_startFastDownload; *) - - PROCEDURE BDI555_fastDownload* (downloadData: (* ARRAY OF *) INTEGER; dataLength: INTEGER); - (*END BDI555_fastDownload; *) - - PROCEDURE BDI555_stopFastDownload*; - (*END BDI555_stopFastDownload; *) - - PROCEDURE BDI555_writeMem* (addr, value, size: INTEGER); - (*END BDI555_writeMem; *) - - PROCEDURE BDI555_readMem* (addr, size: INTEGER): INTEGER; - (*END BDI555_readMem; *) - - PROCEDURE BDI555_writeMemSeq* (value, size: INTEGER); - (*END BDI555_writeMemSeq; *) - - PROCEDURE BDI555_readMemSeq* (size: INTEGER): INTEGER; - (*END BDI555_readMemSeq; *) - - PROCEDURE BDI555_readGPR* (gpr: INTEGER): INTEGER; - (*END BDI555_readGPR; *) - - PROCEDURE BDI555_writeGPR* (gpr, value: INTEGER); - (*END BDI555_writeGPR; *) - - PROCEDURE BDI555_readSPR* (spr: INTEGER): INTEGER; - (*END BDI555_readSPR; *) - - PROCEDURE BDI555_writeSPR* (spr, value: INTEGER); - (*END BDI555_writeSPR; *) - - PROCEDURE BDI555_readMSR* (): INTEGER; - (*END BDI555_readMSR; *) - - PROCEDURE BDI555_writeMSR* (value: INTEGER); - (*END BDI555_writeMSR; *) - - PROCEDURE BDI555_readFPR* (fpr, tmpMemAddr: INTEGER): LONGINT; - (*END BDI555_readFPR; *) - - PROCEDURE BDI555_writeFPR* (fpr, tmpMemAddr: INTEGER; value: LONGINT); - (*END BDI555_writeFPR; *) - - PROCEDURE BDI555_readCR* (): INTEGER; - (*END BDI555_readCR; *) - - PROCEDURE BDI555_writeCR* (value: INTEGER); - (*END BDI555_writeCR; *) - - PROCEDURE BDI555_readFPSCR* (): INTEGER; - (*END BDI555_readFPSCR; *) - - PROCEDURE BDI555_writeFPSCR* (value: INTEGER); - (*END BDI555_writeFPSCR; *) - - PROCEDURE BDI555_isTargetInDebugMode* (): BOOL; - (*END BDI555_isTargetInDebugMode; *) - - PROCEDURE BDI555_setGpr31* (gpr31: INTEGER); - (*END BDI555_setGpr31; *) - -(* -------332--------- *) - - PROCEDURE BDI332_nopsToLegalCmd*; - (*END BDI332_nopsToLegalCmd; *) - - PROCEDURE BDI332_go*; - (*END BDI332_go; *) - - PROCEDURE BDI332_break_*; - (*END BDI332_break_; *) - - PROCEDURE BDI332_reset_target*; - (*END BDI332_reset_target; *) - - PROCEDURE BDI332_reset_peripherals*; - (*END BDI332_reset_peripherals; *) - - PROCEDURE BDI332_isFreezeAsserted* (): BOOL; - (*END BDI332_isFreezeAsserted; *) - - PROCEDURE BDI332_fillMem* (downloadData: (* ARRAY OF *) INTEGER; dataLength: INTEGER); - (*END BDI332_fillMem; *) - - PROCEDURE BDI332_dumpMem* (nofData: INTEGER; VAR result: ARRAY OF INTEGER): INTEGER; -(* - PROCEDURE BDI332_dumpMem* (nofData: INTEGER; VAR result: ARRAY [untagged] MAX_NOF_LONGS_FILL OF INTEGER): INTEGER; -*) - (*END BDI332_dumpMem; *) - - PROCEDURE BDI332_writeMem* (addr, value, size: INTEGER); - (*END BDI332_writeMem; *) - - PROCEDURE BDI332_readMem* (addr, size: INTEGER): INTEGER; - (*END BDI332_readMem; *) - - PROCEDURE BDI332_readUserReg* (reg: INTEGER): INTEGER; - (*END BDI332_readUserReg; *) - - PROCEDURE BDI332_writeUserReg* (reg, value: INTEGER); - (*END BDI332_writeUserReg; *) - - PROCEDURE BDI332_readSysReg* (reg: INTEGER): INTEGER; - (*END BDI332_readSysReg; *) - - PROCEDURE BDI332_writeSysReg* (reg, value: INTEGER); - (*END BDI332_writeSysReg; *) - - PROCEDURE BDI332_isTargetInDebugMode* (): BOOL; - (*END BDI332_isTargetInDebugMode; *) - -(* ------ UART0 ------ *) - - PROCEDURE UART0_read* (VAR data: ARRAY [untagged] OF SHORTCHAR): INTEGER; - (*END UART0_read; *) - - PROCEDURE UART0_write* (data: (* ARRAY OF SHORTCHAR *) INTEGER; length: INTEGER): BOOL; - (*END UART0_write; *) - -END UsbBDIDll. diff --git a/blackbox/Usb/Mod/TargLog.otd b/blackbox/Usb/Mod/TargLog.otd deleted file mode 100644 index b96d9d8..0000000 --- a/blackbox/Usb/Mod/TargLog.otd +++ /dev/null @@ -1,111 +0,0 @@ - -MODULE UsbTargLog; -(** © NTB/AS 12.01.2006 *) -(** - Changes: -*) - IMPORT - USB := UsbBDI, Log := StdLog, Services, TextModels, XUT := XdeUtilities; - - CONST - logTitle = "USB Target Log"; - PERIOD = 500; - - TYPE - Receiver = POINTER TO RECORD (Services.Action) - time: LONGINT; period: INTEGER - END; - - VAR - receiver: Receiver; - logTextModel: TextModels.Model; logWriter: TextModels.Writer; - - PROCEDURE (receiver: Receiver) Do; - VAR - length, i: INTEGER; done: BOOLEAN; - data: ARRAY USB.MAX_UART_DATA_LENGTH OF SHORTCHAR; - BEGIN - done := USB.UART0_read(data, length); - IF done THEN - length := MIN(length, USB.MAX_UART_DATA_LENGTH ); - FOR i := 0 TO length - 1 DO - logWriter.WriteChar(data[i]) - END - END; - INC( receiver.time, receiver.period ); Services.DoLater(receiver, receiver.time ) - END Do; - - PROCEDURE Stop * ; - BEGIN - IF receiver # NIL THEN Services.RemoveAction(receiver ); receiver := NIL END; - logWriter := NIL; logTextModel := NIL - END Stop; - - PROCEDURE StartReceiver; - BEGIN - IF receiver # NIL THEN Services.RemoveAction(receiver ); receiver := NIL END; - NEW(receiver); - receiver.time := Services.Ticks(); receiver.period := PERIOD; - Services.DoLater(receiver, receiver.time) - END StartReceiver; - - PROCEDURE Start * ; - VAR beg, end: INTEGER; - BEGIN - IF ~USB.DeviceOpen() THEN - USB.ConnectDevice; - END; - Stop; - Log.String("opening USB target log"); Log.Ln; - XUT.GetTextModel("", logTextModel, beg, end); logWriter := logTextModel.NewWriter(NIL); - XUT.ShowTextView(logTextModel, logTitle); - StartReceiver; - END Start; - - PROCEDURE SendSelToTarget * ; - (** send all visible char of the current selection to the target - *) - VAR - reader: TextModels.Reader; textModel: TextModels.Model; beg, end, currentLen: INTEGER; ch: CHAR; - data: ARRAY USB.MAX_UART_DATA_LENGTH OF SHORTCHAR; done, error: BOOLEAN; - BEGIN - XUT.GetTextModel("@", textModel, beg, end); - IF textModel # NIL THEN - reader := textModel.NewReader(NIL); reader.SetPos(beg); - currentLen := 0; error := FALSE; - WHILE reader.Pos() < end DO - reader.ReadChar(ch); - data[currentLen] := SHORT(ch); - INC(currentLen); - IF currentLen >= USB.MAX_UART_DATA_LENGTH THEN - done := USB.UART0_write(data, currentLen); - IF ~done THEN - error := TRUE; - Log.String("Sending data failed"); Log.Ln; - END; - currentLen := 0; - END - END; - IF currentLen > 0 THEN - done := USB.UART0_write(data, currentLen); - IF ~done THEN - error := TRUE; - Log.String("Sending data failed"); Log.Ln; - END - END; - IF ~error THEN - Log.String("Data sent successfully"); Log.Ln; - END - END - END SendSelToTarget; - - PROCEDURE ClearText * ; - BEGIN - IF logTextModel # NIL THEN - logTextModel.Delete(0, logTextModel.Length()); logWriter.SetPos(0) - END - END ClearText; - -CLOSE - Stop -END UsbTargLog . diff --git a/blackbox/Usb/Mod/Utils.otd b/blackbox/Usb/Mod/Utils.otd deleted file mode 100644 index b6ed49e..0000000 --- a/blackbox/Usb/Mod/Utils.otd +++ /dev/null @@ -1,130 +0,0 @@ -MODULE UsbUtils; -IMPORT SYSTEM, WinApi, Strings, ComTools, Log := StdLog; - - CONST - HK_LM_JRE_Key = "SOFTWARE\javaSoft\Java Runtime Environment"; - HK_LM_JRE_CurrentVersion_value = "CurrentVersion"; - HK_LM_JRE_JavaHome_value = "JavaHome"; - HK_LM_PATH_Key = "SYSTEM\CurrentControlSet\Control\Session Manager\Environment"; - HK_CU_PATH_Key = "Environment"; - PATH_value = "PATH"; - - PROCEDURE RegLMQuery* (IN subKey, valueName: ARRAY OF SHORTCHAR; - OUT qValue: ARRAY OF SHORTCHAR): BOOLEAN; - VAR - res, length: INTEGER; hKey: WinApi.HKEY; - BEGIN - qValue := ""; - res := WinApi.RegOpenKeyEx(WinApi.HKEY_LOCAL_MACHINE, - subKey, 0, WinApi.KEY_QUERY_VALUE, hKey); - IF res # WinApi.ERROR_SUCCESS THEN - RETURN FALSE - ELSE - length := LEN(qValue); - res := WinApi.RegQueryValueEx(hKey, valueName, NIL, NIL, qValue[0], length); - IF res # WinApi.ERROR_SUCCESS THEN - RETURN FALSE - END - END; - res := WinApi.RegCloseKey(hKey); - RETURN TRUE; - END RegLMQuery; - - PROCEDURE RegCUQuery* (IN subKey, valueName: ARRAY OF SHORTCHAR; - OUT qValue: ARRAY OF SHORTCHAR): BOOLEAN; - VAR - res, length: INTEGER; hKey: WinApi.HKEY; - BEGIN - qValue := ""; - res := WinApi.RegOpenKeyEx(WinApi.HKEY_CURRENT_USER, - subKey, 0, WinApi.KEY_QUERY_VALUE, hKey); - IF res # WinApi.ERROR_SUCCESS THEN - RETURN FALSE - ELSE - length := LEN(qValue); - res := WinApi.RegQueryValueEx(hKey, valueName, NIL, NIL, qValue[0], length); - IF res # WinApi.ERROR_SUCCESS THEN - RETURN FALSE - END - END; - res := WinApi.RegCloseKey(hKey); - RETURN TRUE; - END RegCUQuery; - - PROCEDURE RegCUCreateKeyAndSetValue* (IN subKey, valueName: ARRAY OF SHORTCHAR; - newValue: ARRAY OF SHORTCHAR): BOOLEAN; - VAR - res, length, lpdwDisposition: INTEGER; hKey: WinApi.HKEY; - BEGIN - res := WinApi.RegCreateKeyEx(WinApi.HKEY_CURRENT_USER, subKey, 0, NIL, - WinApi.REG_OPTION_NON_VOLATILE, WinApi.KEY_ALL_ACCESS, NIL, hKey, lpdwDisposition); - IF res # WinApi.ERROR_SUCCESS THEN - RETURN FALSE - END; - res := WinApi.RegSetValueEx(hKey, valueName, 0, WinApi.REG_SZ, - newValue[0], LEN(newValue$)); - IF res # WinApi.ERROR_SUCCESS THEN - RETURN FALSE - END; - res := WinApi.RegCloseKey(hKey); - RETURN TRUE - END RegCUCreateKeyAndSetValue; - - PROCEDURE CheckAndSetPath*; - CONST - PATH_Pattern = "\bin\client"; - - SMTO_ABORTIFHUNG = {1} (* 2 in C *); - HWND_BROADCAST = 0FFFFH; - - VAR - jreHome, regValue, tmpRegValue: ARRAY 2048 OF SHORTCHAR; - pos, result: INTEGER; noUserPathValue, success, found: BOOLEAN; - environment: WinApi.PtrSTR; - BEGIN - (* get jre home path *) - IF ~RegLMQuery(HK_LM_JRE_Key, HK_LM_JRE_CurrentVersion_value, tmpRegValue) (* e.g. "1.5" *) THEN - Log.String("UsbUtils: Error getting " + HK_LM_JRE_Key + "! Is Java installed?"); Log.Ln; RETURN - END; - IF ~RegLMQuery(HK_LM_JRE_Key + "\" + tmpRegValue, HK_LM_JRE_JavaHome_value, jreHome) THEN - Log.String("UsbUtils: Error getting " + HK_LM_JRE_Key + "\" + tmpRegValue + "! Is Java installed?"); Log.Ln; RETURN - END; - (* look for %javahome%\bin\client on system and user path*) - regValue := jreHome + PATH_Pattern; - found := RegLMQuery(HK_LM_PATH_Key, "Path", tmpRegValue); - Strings.Find(LONG(tmpRegValue), LONG(regValue), 0, pos); - found := pos >= 0; - IF found THEN - Log.String("the PATH system variable " + regValue + " is already set"); Log.Ln; - RETURN - END; - tmpRegValue := ""; - noUserPathValue := ~RegCUQuery(HK_CU_PATH_Key, PATH_value, tmpRegValue); - Strings.Find(LONG(tmpRegValue), PATH_Pattern, 0, pos); - found := pos >= 0; - IF ~found THEN (* insert registry key into user PATH variable *) - IF tmpRegValue = "" THEN - tmpRegValue := regValue; - ELSE - tmpRegValue := tmpRegValue + ";" + regValue - END; - IF RegCUCreateKeyAndSetValue(HK_CU_PATH_Key, PATH_value, tmpRegValue) THEN - IF noUserPathValue THEN (* create user PATH value first *) - Log.String("user value PATH created"); Log.Ln; - END; - Log.String(regValue + " added to user PATH"); Log.Ln; - ELSE - Log.String("UsbUtils: Error on CreateKey with value " + tmpRegValue); Log.Ln; - END; - (* Notify windows about Environment Change (if this is not done, the changes will only take effect after reboot) *) - Log.String("Updating Environment - this may take some seconds..."); Log.Ln; - environment := ComTools.NewSString("Environment"); - result := WinApi.SendMessageTimeout(HWND_BROADCAST, WinApi.WM_SETTINGCHANGE, 0, - SYSTEM.VAL(INTEGER, environment), SMTO_ABORTIFHUNG, 2000, result); - Log.String("Please restart Blackbox"); Log.Ln; - ELSE - Log.String("the PATH user variable " + regValue + " is already set"); Log.Ln; - END - END CheckAndSetPath; - -END UsbUtils. \ No newline at end of file diff --git a/blackbox/Usb/Rsrc/usb.jar b/blackbox/Usb/Rsrc/usb.jar deleted file mode 100644 index b8b19d1..0000000 Binary files a/blackbox/Usb/Rsrc/usb.jar and /dev/null differ diff --git a/blackbox/Usb/Rsrc/usbpdi.jar b/blackbox/Usb/Rsrc/usbpdi.jar deleted file mode 100644 index bef89dc..0000000 Binary files a/blackbox/Usb/Rsrc/usbpdi.jar and /dev/null differ diff --git a/distribute/Definitions.txt b/distribute/Definitions.txt deleted file mode 100644 index 70b1842..0000000 --- a/distribute/Definitions.txt +++ /dev/null @@ -1,4 +0,0 @@ -Manufacturer string: NTB -Product string: USB Programming and Debugging Interface -VID: 0x8235 -PDI: 0x0100 diff --git a/distribute/LibusbWin.dll b/distribute/LibusbWin.dll deleted file mode 100644 index 102cc87..0000000 Binary files a/distribute/LibusbWin.dll and /dev/null differ diff --git a/distribute/Output/setup.exe b/distribute/Output/setup.exe deleted file mode 100644 index 4745844..0000000 Binary files a/distribute/Output/setup.exe and /dev/null differ diff --git a/distribute/USBPDI.cat b/distribute/USBPDI.cat deleted file mode 100644 index 2ef39c5..0000000 --- a/distribute/USBPDI.cat +++ /dev/null @@ -1,3 +0,0 @@ -This file will contain the digital signature of the files to be installed -on the system. -This file will be provided by Microsoft upon certification of your drivers. diff --git a/distribute/USBPDI.inf b/distribute/USBPDI.inf deleted file mode 100644 index 2ba06fe..0000000 --- a/distribute/USBPDI.inf +++ /dev/null @@ -1,106 +0,0 @@ -[Version] -Signature = "$Chicago$" -provider = %manufacturer% -DriverVer = 10/14/2005,0.1.10.2 -CatalogFile = USBPDI.cat - -Class = LibUsbDevices -ClassGUID = {EB781AAF-9C70-4523-A5DF-642A87ECA567} - -[ClassInstall] -AddReg=ClassInstall.AddReg - -[ClassInstall32] -AddReg=ClassInstall.AddReg - -[ClassInstall.AddReg] -HKR,,,,"LibUSB-Win32 Devices" -HKR,,Icon,,"-20" - -[Manufacturer] -%manufacturer%=Devices - -;-------------------------------------------------------------------------- -; Files -;-------------------------------------------------------------------------- - -[SourceDisksNames] -1 = "Libusb-Win32 Driver Installation Disk",, - -[SourceDisksFiles] -libusb0.sys = 1,, -libusb0.dll = 1,, -LibusbWin.dll = 1,, - -[DestinationDirs] -LIBUSB.Files.Sys = 10,System32\Drivers -LIBUSB.Files.Dll = 10,System32 -LIBUSB.Files.Dll2 = 10,System32 - -[LIBUSB.Files.Sys] -libusb0.sys - -[LIBUSB.Files.Dll] -libusb0.dll - -[LIBUSB.Files.DllJNI] -LibusbWin.dll - -;-------------------------------------------------------------------------- -; Device driver -;-------------------------------------------------------------------------- - -[LIBUSB_DEV] -CopyFiles = LIBUSB.Files.Sys, LIBUSB.Files.Dll, LIBUSB.Files.DllJNI -AddReg = LIBUSB_DEV.AddReg - -[LIBUSB_DEV.NT] -CopyFiles = LIBUSB.Files.Sys, LIBUSB.Files.Dll, LIBUSB.Files.DllJNI - -[LIBUSB_DEV.HW] -DelReg = LIBUSB_DEV.DelReg.HW -AddReg = LIBUSB_DEV.AddReg.HW - -[LIBUSB_DEV.NT.HW] -DelReg = LIBUSB_DEV.DelReg.HW -AddReg = LIBUSB_DEV.AddReg.HW - -[LIBUSB_DEV.NT.Services] -AddService = libusb0, 0x00000002, LIBUSB.AddService - -[LIBUSB_DEV.AddReg] -HKR,,DevLoader,,*ntkern -HKR,,NTMPDriver,,libusb0.sys - -[LIBUSB_DEV.DelReg.HW] -HKR,,LowerFilters -HKR,,UpperFilters - -[LIBUSB_DEV.AddReg.HW] -HKR,,libusb_is_device_driver, 0x00010001 ,1 - -;-------------------------------------------------------------------------- -; Services -;-------------------------------------------------------------------------- - -[LIBUSB.AddService] -DisplayName = "LibUsb-Win32 - Kernel Driver 10/14/2005, 0.1.10.2" -ServiceType = 1 -StartType = 3 -ErrorControl = 0 -ServiceBinary = %12%\libusb0.sys - -;-------------------------------------------------------------------------- -; Devices -;-------------------------------------------------------------------------- - -[Devices] -"USB Programming and Debugging Interface"=LIBUSB_DEV, USB\VID_8235&PID_0100 - - -;-------------------------------------------------------------------------- -; Strings -;-------------------------------------------------------------------------- - -[Strings] -manufacturer = "NTB" diff --git a/distribute/driver_installer_template.iss b/distribute/driver_installer_template.iss deleted file mode 100644 index 7979af0..0000000 --- a/distribute/driver_installer_template.iss +++ /dev/null @@ -1,190 +0,0 @@ -; This examples demonstrates how libusb's drivers -; can be installed automatically along with your application using an installer. -; -; Requirements: Inno Setup (http://www.jrsoftware.org/isdl.php) -; -; To use this script, do the following: -; - copy libusb's driver (libusb0.sys, libusb0.dll) to this folder -; - create an .inf and .cab file using libusb's 'inf-wiward.exe' -; and save the generated files in this folder. -; - in this script replace with the name of your .inf file -; - customize other settings (strings) -; - open this scipt with Inno Setup -; - compile and run - -[Setup] -AppName=USB Programming and Debugging Interface -AppVerName=USB Programming and Debugging Interface 0.0.2 -AppPublisher=NTB -AppPublisherURL=http://inf.ntb.ch/ -AppVersion=0.0.2 -DefaultDirName={pf}\USB PD-Interface -DefaultGroupName=USB PD-Interface -Compression=lzma -SolidCompression=yes -ChangesEnvironment=yes -; WinMe or higher -MinVersion=4.9,5 -PrivilegesRequired=admin -WizardImageFile=setupUSBPDI_2.bmp -WizardSmallImageFile=setupUSBPDI_2small.bmp - -[Files] -; copy the file to the App folder -Source: "*.sys"; DestDir: "{app}\driver" -Source: "*.cat"; DestDir: "{app}\driver" -Source: "*.dll"; DestDir: "{app}\driver" -Source: "*.inf"; DestDir: "{app}\driver" - -; also copy the DLL to the system folders so that rundll32.exe will find it -Source: "*.dll"; DestDir: "{win}\system32"; FLags: replacesameversion restartreplace uninsneveruninstall - -[Icons] -Name: "{group}\Uninstall USB PD-Interface"; Filename: "{uninstallexe}" - -[Run] -; invoke libusb's DLL to install the .inf file -Filename: "rundll32"; Parameters: "libusb0.dll,usb_install_driver_np_rundll {app}\driver\USBPDI.inf"; StatusMsg: "Installing Programming and Debugging Interface driver (this may take a few seconds) ..." - -[Code] -const - WM_SETTINGCHANGE = $1A; - SMTO_ABORTIFHUNG = $2; - -function SendMessageTimeout(hwnd :LongInt; msg :LongInt; wParam :LongInt; - lParam :String; fuFlags :LongInt; uTimeout :LongInt; var lpdwResult :LongInt): LongInt; - external 'SendMessageTimeoutA@user32.dll stdcall'; - -// NotifyWindows: The function will notify other running applications -// (notably Windows Explorer) that they should reload their environment -// variables from the registry. -// On Windows NT platforms, if the funtion is not called, the -// environment variable will not be seen by applications launched from -// Explorer until the user logs off or restarts the computer. -procedure NotifyWindows(); -var - res :LOngInt; -begin - SendMessageTimeout(HWND_BROADCAST, WM_SETTINGCHANGE, 0,'Environment', SMTO_ABORTIFHUNG, 5000, res); -end; - -{returns true if s1 contains s2, else false (Case insensitive)} -function ContainsString(const s1, s2 :String):Boolean; -var - s1Lower, s2Lower :String; i, j, s1Length, s2Length:Integer; -begin - s1Lower := Lowercase(s1); - s2Lower := Lowercase(s2); - s1Length := Length(s1); - s2Length := Length(s2); - if s1Length < s2Length then begin - Result := False; - Exit; - end; - j := 1; - for i := 1 TO s1Length do begin - if j > s2Length then begin - Result := True; - Exit - end; - if s1Lower[i] = s2Lower[j] then begin - j := j + 1; - end else begin - j := 1; - end - end; - Result := False; -end; - -function InitializeSetup(): Boolean; -var - Rootkey, Res: Integer; SubKeyName, ResultStr, ValueName, messageStr, JREPath, JREBin, JREBinClient, EnvPath: String; - javaInstalled, continueOnError, writeRegistry: Boolean; -begin - javaInstalled := True; - continueOnError := False; - rootKey := HKLM; - SubKeyName := 'SOFTWARE\JavaSoft\Java Runtime Environment'; - ValueName := 'CurrentVersion'; - if not RegQueryStringValue(RootKey, SubKeyName, ValueName, ResultStr) then - javaInstalled := False; - if javaInstalled then begin - if not RegQueryStringValue(RootKey, SubKeyName, ValueName, ResultStr) then begin - javaInstalled := False; - end else begin - SubKeyName := SubKeyName + '\' + ResultStr; - ValueName := 'JavaHome'; - if not RegQueryStringValue(RootKey, SubKeyName, ValueName, JREPath) then - javaInstalled := False; - end; - end; - if not javaInstalled then begin - messageStr := 'No Java Runtime Environment found!' #13#10; - messageStr := messageStr + 'The JRE is needed to run this program.' #13#13; - messageStr := messageStr + 'If you continue, you need to set your PATH environment variable manualy to' #13#10; - messageStr := messageStr + 'JRE\bin and JRE\bin\client after installing the JRE from java.sun.com.' #13#13; - messageStr := messageStr + 'Do you want to continue?'; - if MsgBox(messageStr, mbError, MB_YESNO) = idYes then - continueOnError := True; - end; - if javaInstalled then begin - Result := True; - {JREPath contains the path to the JRE directory (e.g. C:\Program Files\Java\jre1.5.0_06)} - {get the USER Path variable} - RootKey := HKCU; - SubKeyName := 'Environment'; - ValueName := 'PATH'; - JREBin := JREPath + '\bin'; - JREBinClient := JREPath + '\bin\client'; - {check if PATH is already set} - if not RegValueExists(RootKey, SubKeyName, ValueName) then begin - {create new PATH entry} - messageStr := 'In order to run the program the path to your JRE\bin and JRE\bin\client must be added.' #13#10; - messageStr := messageStr + 'Setup will added this paths to your User PATH variable.' #13#13; - messageStr := messageStr + 'Do you want Setup to modify your PATH variable?'; - if MsgBox(messageStr, mbConfirmation, MB_YESNO) = idYes then begin - RegWriteStringValue(RootKey, SubKeyName, ValueName, JREBin + ';' + JREBinClient); - NotifyWindows(); - end - end else begin - if RegQueryStringValue(RootKey, SubKeyName, ValueName, EnvPath) then begin - writeRegistry := False; - {check if EnvPath contains the right paths} - if not ContainsString(EnvPath, JREBin) then begin - {add to Path} - Res := Length(EnvPath); - if EnvPath[Res] = ';' then begin - end else begin - EnvPath := EnvPath + ';'; - end; - EnvPath := EnvPath + JREBin; - writeRegistry := True; - end - if not ContainsString(EnvPath, JREBinClient) then begin - {add to Path} - Res := Length(EnvPath); - if EnvPath[Res] = ';' then begin - end else begin - EnvPath := EnvPath + ';'; - end; - EnvPath := EnvPath + JREBinClient; - writeRegistry := True; - end - if writeRegistry then begin - messageStr := 'In order to run the program the path to your JRE\bin and JRE\bin\client must be added.' #13#10; - messageStr := messageStr + 'Setup will added this paths to your User PATH variable.' #13#13; - messageStr := messageStr + 'Do you want Setup to modify your PATH variable?'; - if MsgBox(messageStr, mbConfirmation, MB_YESNO) = idYes then begin - RegWriteStringValue(RootKey, SubKeyName, ValueName, EnvPath); - NotifyWindows(); - end - end - end else - continueOnError := True; - end; - end else - Result := False; - if continueOnError then - Result := True; -end; - diff --git a/distribute/libusb0.dll b/distribute/libusb0.dll deleted file mode 100644 index ce635ef..0000000 Binary files a/distribute/libusb0.dll and /dev/null differ diff --git a/distribute/libusb0.sys b/distribute/libusb0.sys deleted file mode 100644 index 639c0f1..0000000 Binary files a/distribute/libusb0.sys and /dev/null differ diff --git a/distribute/setupUSBPDI_2.bmp b/distribute/setupUSBPDI_2.bmp deleted file mode 100644 index 9dd5683..0000000 Binary files a/distribute/setupUSBPDI_2.bmp and /dev/null differ diff --git a/distribute/setupUSBPDI_2small.bmp b/distribute/setupUSBPDI_2small.bmp deleted file mode 100644 index 6dc51c0..0000000 Binary files a/distribute/setupUSBPDI_2small.bmp and /dev/null differ diff --git a/mcdp/resources/targets/general/device.dtd b/mcdp/resources/targets/general/device.dtd deleted file mode 100644 index 092ca4d..0000000 --- a/mcdp/resources/targets/general/device.dtd +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/mcdp/resources/targets/general/memoryMap.dtd b/mcdp/resources/targets/general/memoryMap.dtd deleted file mode 100644 index 3870c45..0000000 --- a/mcdp/resources/targets/general/memoryMap.dtd +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/mcdp/resources/targets/general/registerDictionary.dtd b/mcdp/resources/targets/general/registerDictionary.dtd deleted file mode 100644 index f6bccc3..0000000 --- a/mcdp/resources/targets/general/registerDictionary.dtd +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - - - - diff --git a/mcdp/resources/targets/mc68332/registerDictionary.dtd b/mcdp/resources/targets/mc68332/registerDictionary.dtd deleted file mode 100644 index b617f4c..0000000 --- a/mcdp/resources/targets/mc68332/registerDictionary.dtd +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - - - - - diff --git a/mcdp/resources/targets/mc68332/registerDictionary.xml b/mcdp/resources/targets/mc68332/registerDictionary.xml deleted file mode 100644 index 417ea3f..0000000 --- a/mcdp/resources/targets/mc68332/registerDictionary.xml +++ /dev/null @@ -1,524 +0,0 @@ - - - - - - - - - data register 0 - - - data register 1 - - - data register 2 - - - data register 3 - - - data register 43 - - - data register 5 - - - data register 6 - - - data register 7 - - - - - address register 0 - - - address register 1 - - - address register 2 - - - address register 3 - - - address register 4 - - - address register 5 - - - address register 06 - - - address register 7 - - - - - return program counter - - - current instruction program counter - - - status register - - - user stack pointer (A7) - - - supervisor stack pointer - - - source function code register - - - destination function code register - - - temporary register A - - - fault address register - - - vector base register - - - - - - sim module configuration register - - - clock synthesizer control - - - system protection control - - - - chip select pin assignment register 0 - - - - - chip select pin assignment register 1 - - - - CSBOOT base address register - - - CSBOOT option register - - - - - chip select 0 base address register - - - - chip select 0 option register - - - - chip select 1 base address register - - - - chip select 1 option register - - - - chip select 2 base address register - - - - chip select 2 option register - - - - chip select 3 base address register - - - - chip select 3 option register - - - - chip select 4 base address register - - - - chip select 4 option register - - - - chip select 5 base address register - - - - chip select 5 option register - - - - chip select 6 base address register - - - - chip select 6 option register - - - - chip select 7 base address register - - - - chip select 7 option register - - - - chip select 8 base address register - - - - chip select 8 option register - - - - chip select 9 base address register - - - - chip select 9 option register - - - - - - - - TPURAM module configuration register - - - - - TPURAM base address and status register - - - - - TPU module control register - - - TPU configuration register - - - - development support control register - - - - - development support status register - - - - - TPU interrupt configuration register - - - - TPU interrupt enable register - - - - channel function select register 0 - - - - - channel function select register 1 - - - - - channel function select register 2 - - - - - channel function select register 3 - - - - host sequence register 0 - - - host sequence register 1 - - - host service request register 0 - - - host service request register 1 - - - channel priority register 0 - - - channel priority register 1 - - - TPU interrupt status register - - - ??? - - - service grant latch register - - - decoded channel number register - - - - - - Port E data register 0 - - - Port E data register 1 - - - Port E data direction register - - - Port E pin assignment register - - - - - - Port F data register 0 - - - Port F data register 1 - - - Port F data direction register - - - Port F pin assignment register - - - - - - TPU parameter ram start address - - - TPU parameter ram start address - - - TPU parameter ram start address - - - TPU parameter ram start address - - - TPU parameter ram start address - - - TPU parameter ram start address - - - TPU parameter ram start address - - - TPU parameter ram start address - - - TPU parameter ram start address - - - TPU parameter ram start address - - - TPU parameter ram start address - - - TPU parameter ram start address - - - TPU parameter ram start address - - - TPU parameter ram start address - - - TPU parameter ram start address - - - TPU parameter ram start address - - - - - - QSM configuration register - - - QSM test register - - - QSM interrupt level register - - - QSM interrupt vector register - - - SCI control register 0 - - - SCI control register 1 - - - SCI status register - - - SCI data register - - - - QSM port data register - - - QSM pin assignment register - - - QSM data direction register - - - QSPI control register 0 - - - QSPI control register 1 - - - QSPI control register 2 - - - QSPI control register 3 - - - QSPI status register - - - - QSPI receive data - - - QSPI transmit data - - - QSPI command control - - - \ No newline at end of file diff --git a/mcdp/resources/targets/mpc555/devices/deviceAm29LV160D.xml b/mcdp/resources/targets/mpc555/devices/deviceAm29LV160D.xml deleted file mode 100644 index b9575cc..0000000 --- a/mcdp/resources/targets/mpc555/devices/deviceAm29LV160D.xml +++ /dev/null @@ -1,38 +0,0 @@ - - - - - - - - 0x200000 - - ToppcKernel.CextRomBase - ToppcKernel.CextRomSize - - - ToppcKernel.excpCodeSize - - - - 0x6000 - - - - 0x4000 - - - 0x4000 - - - 0x10000 - - - 0x20000 - - - - ToppcKernel.pBR0 - ToppcKernel.pOR0 - - \ No newline at end of file diff --git a/mcdp/resources/targets/mpc555/devices/deviceMPC555Flash.xml b/mcdp/resources/targets/mpc555/devices/deviceMPC555Flash.xml deleted file mode 100644 index 1d16329..0000000 --- a/mcdp/resources/targets/mpc555/devices/deviceMPC555Flash.xml +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - 0x2000 - 0x3E000 - - - 0x40000 - 0x30000 - - \ No newline at end of file diff --git a/mcdp/resources/targets/mpc555/devices/deviceRAM.xml b/mcdp/resources/targets/mpc555/devices/deviceRAM.xml deleted file mode 100644 index 2fadcf6..0000000 --- a/mcdp/resources/targets/mpc555/devices/deviceRAM.xml +++ /dev/null @@ -1,64 +0,0 @@ - - - - - - - - - - 0 - 0x2000 - - 0 - - - - ToppcKernel.CintRamBase - ToppcKernel.CintRamSize - - - ToppcKernel.sysTabAdr - - - - - - - - - - - - - ToppcKernel.stackSize - - - - - ToppcKernel.CextRamBase - ToppcKernel.CextRamSize - - - - - - ToppcKernel.pBR0 - ToppcKernel.pOR0 - ToppcKernel.pBR1 - ToppcKernel.pOR1 - - ToppcKernel.pDMBR - - - ToppcKernel.pDMOR - - 7 - - -1 - - 0x31C7400F - - 0x03802 - - \ No newline at end of file diff --git a/mcdp/resources/targets/mpc555/memoryAssignmentRAM.xml b/mcdp/resources/targets/mpc555/memoryAssignmentRAM.xml deleted file mode 100644 index 9ded604..0000000 --- a/mcdp/resources/targets/mpc555/memoryAssignmentRAM.xml +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - InternalRam.SysTab - - - InternalRam - InternalRam - InternalRam - - - only_link_if_referenced - - - InternalFlashAblock0.ExcCode - - - \ No newline at end of file diff --git a/mcdp/resources/targets/mpc555/memoryMap.xml b/mcdp/resources/targets/mpc555/memoryMap.xml deleted file mode 100644 index 48a112e..0000000 --- a/mcdp/resources/targets/mpc555/memoryMap.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - - diff --git a/mcdp/resources/targets/mpc555/registerDictionary.dtd b/mcdp/resources/targets/mpc555/registerDictionary.dtd deleted file mode 100644 index c86bb4e..0000000 --- a/mcdp/resources/targets/mpc555/registerDictionary.dtd +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - - - - - diff --git a/mcdp/resources/targets/mpc555/registerDictionary.xml b/mcdp/resources/targets/mpc555/registerDictionary.xml deleted file mode 100644 index 29c7c35..0000000 --- a/mcdp/resources/targets/mpc555/registerDictionary.xml +++ /dev/null @@ -1,1954 +0,0 @@ - - - - - - - - - General Purpose Register 0 - - - General Purpose Register 1 - - - General Purpose Register 2 - - - General Purpose Register 3 - - - General Purpose Register 4 - - - General Purpose Register 5 - - - General Purpose Register 6 - - - General Purpose Register 7 - - - General Purpose Register 8 - - - General Purpose Register 9 - - - General Purpose Register 10 - - - General Purpose Register 11 - - - General Purpose Register 12 - - - General Purpose Register 13 - - - General Purpose Register 14 - - - General Purpose Register 15 - - - General Purpose Register 16 - - - General Purpose Register 17 - - - General Purpose Register 18 - - - General Purpose Register 19 - - - General Purpose Register 20 - - - General Purpose Register 21 - - - General Purpose Register 22 - - - General Purpose Register 23 - - - General Purpose Register 24 - - - General Purpose Register 25 - - - General Purpose Register 26 - - - General Purpose Register 27 - - - General Purpose Register 28 - - - General Purpose Register 29 - - - General Purpose Register 30 - - - General Purpose Register 31 - - - - - Floating-Point Register 0 - - - Floating-Point Register 1 - - - Floating-Point Register 2 - - - Floating-Point Register 3 - - - Floating-Point Register 4 - - - Floating-Point Register 5 - - - Floating-Point Register 6 - - - Floating-Point Register 7 - - - Floating-Point Register 8 - - - Floating-Point Register 9 - - - Floating-Point Register 10 - - - Floating-Point Register 11 - - - Floating-Point Register 12 - - - Floating-Point Register 13 - - - Floating-Point Register 14 - - - Floating-Point Register 15 - - - Floating-Point Register 16 - - - Floating-Point Register 17 - - - Floating-Point Register 18 - - - Floating-Point Register 19 - - - Floating-Point Register 20 - - - Floating-Point Register 21 - - - Floating-Point Register 22 - - - Floating-Point Register 23 - - - Floating-Point Register 24 - - - Floating-Point Register 25 - - - Floating-Point Register 26 - - - Floating-Point Register 27 - - - Floating-Point Register 28 - - - Floating-Point Register 29 - - - Floating-Point Register 30 - - - Floating-Point Register 31 - - - - - Integer Exception Register (XER) - - - Link Register (LR) - - - Count Register (CTR) - - - - DAE/ Source Instruction Service Register (DSISR) - - - - Data Address Register (DAR) - - - Decrement Register (DEC) - - - Save and Restore Register 0 (SRR0) - - - Save and Restore Register 1 (SRR1) - - - External Interrupt Enable (EIE) - - - External Interrupt Disable (EID) - - - Non-Recoverable Interrupt (NRI) - - - Comparator A Value Register (CMPA) - - - Comparator B Value Register (CMPB) - - - Comparator C Value Register (CMPC) - - - Comparator D Value Register (CMPD) - - - Exception Cause Register (ECR) - - - Debug Enable Register (DER) - - - - Breakpoint Counter A Value and Control (COUNTA) - - - - - Breakpoint Counter B Value and Control (COUNTB) - - - - Comparator E Value Register (CMPE) - - - Comparator F Value Register (CMPF) - - - Comparator G Value Register (CMPG) - - - Comparator H Value Register (CMPH) - - - - L-Bus Support Comparators Control (LCTRL1) - - - - - L-Bus Support Comparators Control (LCTRL2) - - - - - I-Bus Support Control Register (ICTRL) - - - - Breakpoint Address Register (BAR) - - - Time Base Lower - Read (TBLR) - - - Time Base Upper - Read (TBUR) - - - SPR General 0 (SPRG0) - - - SPR General 1 (SPRG1) - - - SPR General 2 (SPRG2) - - - SPR General 3 (SPRG3) - - - Time Base Lower - Write (TBLW) - - - Time Base Upper - Write (TBUW) - - - Processor Version Register (PVR) - - - - Global Region Attribute Register (MI_GRA) - - - - - L2U Global Region Attribute Register (L2U_GRA) - - - - - BBC Module Configuration Register (BBCMCR) - - - - - L2U Module Configuration Register (L2U_MCR) - - - - Development Port Data Register (DPDR) - - - Internal Memory Map Register (IMMR) - - - Region Address Register 0 (MI_RBA0) - - - Region Address Register 1 (MI_RBA1) - - - Region Address Register 2 (MI_RBA2) - - - Region Address Register 3 (MI_RBA3) - - - - L2U Region 0 Address Register (L2U_RBA0) - - - - - L2U Region 1 Address Register (L2U_RBA1) - - - - - L2U Region 2 Address Register (L2U_RBA2) - - - - - L2U Region 3Address Register (L2U_RBA3) - - - - Region Attribute Register 0 (MI_RA0) - - - Region Attribute Register 1 (MI_RA1) - - - Region Attribute Register 2 (MI_RA2) - - - Region Attribute Register 3 (MI_RA3) - - - - L2U Region 0 Attribute Register (L2U_RA0) - - - - - L2U Region 1 Attribute Register (L2U_RA1) - - - - - L2U Region 2 Attribute Register (L2U_RA2) - - - - - L2U Region 3 Attribute Register (L2U_RA3) - - - - - Floating-Point Exception Cause Register (FPECR) - - - - - - Machine State Register - - - Count Register - - - - Floating-Point Status and Control Register - - - - - - - - SIU Module Configuration Register - - - - System Protection Control Register - - - - Software Service Register - - - Interrupt Pending Register - - - Interrupt Mask Register - - - Interrupt Edge Level Mask - - - Interrupt Vector - - - Transfer Error Status Register - - - - USIU General-Purpose I/O Data Register 1 - - - - - USIU General-Purpose I/O Data Register 2 - - - - - USIU General-Purpose I/O Control Register - - - - - External Master Mode Control Register - - - - - Pads Module Configuration Register - - - - - - Memory Control Base Register 0 - - - Memory Control Option Register 0 - - - Memory Control Base Register 1 - - - Memory Control Option Register 1 - - - Memory Control Base Register 2 - - - Memory Control Option Register 2 - - - Memory Control Base Register 3 - - - Memory Control Option Register 3 - - - Dual Mapping Base Register - - - Dual Mapping Option Register - - - Memory Status - - - - - Time Base Status and Control - - - Time Base Reference 0 - - - Time Base Reference 1 - - - - Real Time Clock Status and Control - - - - Real Time Clock - - - Real Time Alarm Seconds - - - Real Time Alarm - - - PIT Status and Control - - - PIT Count - - - PIT Register - - - - - System Clock Control Register - - - - PLL Low Power and Reset Control Register - - - - Reset Status Register - - - Change of Lock Interrupt Register - - - VDDSRM Control Register - - - - - Time Base Status and Control Key - - - Time Base Reference 0 Key - - - Time Base Reference 1 Key - - - Time Base and Decrementer Key - - - - Real-Time Clock Status and Control Key - - - - Real-Time Clock Key - - - Real-Time Alarm Seconds Key - - - Real-Time Alarm Key - - - PIT Status and Control Key - - - PIT Count Key - - - - - System Clock Control Key - - - - PLL Low-Power and Reset Control Register Key - - - - Reset Status Register Key - - - - - - - CMF_A EEPROM Configuration Register - - - - CMF_A EEPROM Test Register - - - - CMF_A EEPROM High Voltage Control Register - - - - - - CMF_B EEPROM Configuration Register - - - - CMF_B EEPROM Test Register - - - - CMF_B EEPROM High Voltage Control Register - - - - - - - - DPT Module Configuration Register - - - Test register, factory test only - - - RAM Array Address Register - - - - Multiple Input Signature Register High - - - - - Multiple Input Signature Register Low - - - - MISC Counter - - - - - - - - - TPU3_A Module Configuration Register - - - - - TPU3_A Test Configuration Register - - - - - TPU3_A Development Support Control Register - - - - - TPU3_A Development Support Status Register - - - - - TPU3_A Interrupt Configuration Register - - - - - TPU3_A Channel Interrupt Enable Register - - - - - TPU3_A Channel Function Selection Register 0 - - - - - TPU3_A Channel Function Selection Register 1 - - - - - TPU3_A Channel Function Selection Register 2 - - - - - TPU_A Channel Function Selection Register 3 - - - - TPU_A Host Sequence Register 0 - - - TPU_A Host Sequence Register 1 - - - - TPU_A Host Service Request Register 0 - - - - - TPU_A Host Service Request Register 1 - - - - TPU_A Channel Priority Register 0 - - - TPU_A Channel Priority Register 1 - - - - TPU_A Channel Interrupt Status Register - - - - TPU_A Link Register - - - - TPU_A Service Grant Latch Register - - - - - TPU_A Decoded Channel Number Register - - - - - TPU_A Module Configuration Register 2 - - - - - TPU_A Module Configuration Register 3 - - - - TPU_A Internal Scan Data Register - - - - TPU_A Internal Scan Control Register - - - - - - TPU3_B Module Configuration Register - - - - - TPU3_B Test Configuration Register - - - - - TPU3_B Development Support Control Register - - - - - TPU3_B Development Support Status Register - - - - - TPU3_B Interrupt Configuration Register - - - - - TPU3_B Channel Interrupt Enable Register - - - - - TPU3_B Channel Function Selection Register 0 - - - - - TPU3_B Channel Function Selection Register 1 - - - - - TPU3_B Channel Function Selection Register 2 - - - - - TPU_B Channel Function Selection Register 3 - - - - TPU_B Host Sequence Register 0 - - - TPU_B Host Sequence Register 1 - - - - TPU_B Host Service Request Register 0 - - - - - TPU_B Host Service Request Register 1 - - - - TPU_B Channel Priority Register 0 - - - TPU_B Channel Priority Register 1 - - - - TPU_B Channel Interrupt Status Register - - - - TPU_B Link Register - - - - TPU_B Service Grant Latch Register - - - - - TPU_B Decoded Channel Number Register - - - - - TPU_B Module Configuration Register 2 - - - - - TPU_B Module Configuration Register 3 - - - - TPU_B Internal Scan Data Register - - - - TPU_B Internal Scan Control Register - - - - - - - - - - QADC64 Module Configuration Register - - - - QADC64 Test Register - - - QADC64 Interrupt Register - - - Port A and Port B Data - - - - Port A Data and Port B Direction Register - - - - QADC64 Control Register 0 - - - QADC64 Control Register 1 - - - QADC64 Control Register 2 - - - QADC64 Status Register 0 - - - QADC64 Status Register 1 - - - - - QADC64 Module Configuration Register - - - - QADC64 Test Register - - - QADC64 Interrupt Register - - - Port A and Port B Data - - - - Port A Data and Port B Direction Register - - - - QADC64 Control Register 0 - - - QADC64 Control Register 1 - - - QADC64 Control Register 2 - - - QADC64 Status Register 0 - - - QADC64 Status Register 1 - - - - - - - - QSMCM Module Configuration Register - - - - QSMCM Test Register - - - Dual SCI Interrupt Level - - - Queued SPI Interrupt Level - - - SCI1Control Register 0 - - - SCI1Control Register 1 - - - SCI1 Status Register - - - SCI1 Data Register - - - QSMCM Port QS Data Register - - - - QSMCM Port QS PIn Assignment Register / QSMCM Port QS - Data Direction Register - - - - QSPI Control Register 0 - - - QSPI Control Register 1 - - - QSPI Control Register 2 - - - QSPI Control Register 3 - - - QSPI Status Register 3 - - - SCI2 Control Register 0 - - - SCI2 Control Register 1 - - - SCI2 Status Register - - - SCI2 Data Register - - - QSCI1 Control Register - - - QSCI1 Status Register - - - - - - - - MPWMSM0 Period Register - - - MPWMSM0 Pulse Register - - - MPWMSM0 Count Register - - - MPWMSM0 Status/Control Register - - - - MPWMSM1 Period Register - - - MPWMSM1 Pulse Register - - - MPWMSM1 Count Register - - - MPWMSM1 Status/Control Register - - - - MPWMSM2 Period Register - - - MPWMSM2 Pulse Register - - - MPWMSM2 Count Register - - - MPWMSM2 Status/Control Register - - - - MPWMSM3 Period Register - - - MPWMSM3 Pulse Register - - - MPWMSM3 Count Register - - - MPWMSM3 Status/Control Register - - - - MMCSM6 Up-Counter Register - - - MMCSM6 Modulus Latch Register - - - - MMCSM6 Status/Control Register Duplicated - - - - MMCSM6 Status/Control Register - - - - MDASM11 Data A Register - - - MDASM11 Data B Register - - - - MDASM11 Status/Control Register Duplicated - - - - MDASM11 Status/Control Register - - - - MDASM12 Data A Register - - - MDASM12 Data B Register - - - - MDASM12 Status/Control Register Duplicated - - - - MDASM12 Status/Control Register - - - - MDASM13 Data A Register - - - MDASM13 Data B Register - - - - MDASM13 Status/Control Register Duplicated - - - - MDASM13 Status/Control Register - - - - MDASM14 Data A Register - - - MDASM14 Data B Register - - - - MDASM14 Status/Control Register Duplicated - - - - MDASM14 Status/Control Register - - - - MDASM15 Data A Register - - - MDASM15 Data B Register - - - - MDASM15 Status/Control Register Duplicated - - - - MDASM15 Status/Control Register - - - - MPWMSM16 Period Register - - - MPWMSM16 Pulse Register - - - MPWMSM16 Count Register - - - MPWMSM16 Status/Control Register - - - - MPWMSM17 Period Register - - - MPWMSM17 Pulse Register - - - MPWMSM17 Count Register - - - MPWMSM17 Status/Control Register - - - - MPWMSM18 Period Register - - - MPWMSM18 Pulse Register - - - MPWMSM18 Count Register - - - MPWMSM18 Status/Control Register - - - - MPWMSM19 Period Register - - - MPWMSM19 Pulse Register - - - MPWMSM19 Count Register - - - MPWMSM19 Status/Control Register - - - - MMCSM22 Up-Counter Register - - - MMCSM22 Modulus Latch Register - - - - MMCSM22 Status/Control Register Duplicated - - - - MMCSM22 Status/Control Register - - - - MDASM27 Data A Register - - - MDASM27 Data B Register - - - - MDASM27 Status/Control Register Duplicated - - - - MDASM27 Status/Control Register - - - - MDASM28 Data A Register - - - MDASM28 Data B Register - - - - MDASM28 Status/Control Register Duplicated - - - - MDASM28 Status/Control Register - - - - MDASM29 Data A Register - - - MDASM29 Data B Register - - - - MDASM29 Status/Control Register Duplicated - - - - MDASM29 Status/Control Register - - - - MDASM30 Data A Register - - - MDASM30 Data B Register - - - - MDASM30 Status/Control Register Duplicated - - - - MDASM30 Status/Control Register - - - - MDASM31 Data A Register - - - MDASM31 Data B Register - - - - MDASM31 Status/Control Register Duplicated - - - - MDASM31 Status/Control Register - - - - MPIOSM Data Register - - - MPIOSM Data Direction Register - - - - - MIOS1 Test and Pin Control Register - - - - - MIOS1 Module Version Number Register - - - - MIOS1 Module Control Register - - - - MCPSM Status/Control Register - - - - MIRSM0 Interrupt Status Register - - - MIRSM0 Interrupt Enable Register - - - MIRSM0 Request Pending Register - - - - MIOS1 Interrupt Level Register 0 - - - - MIRSM1 Interrupt Status Register - - - MIRSM1 Interrupt Enable Register - - - MIRSM1 Request Pending Register - - - - MIOS1 Interrupt Level Register 1 - - - - - - - - - TouCAN_A Module Configuration Register - - - - TouCAN_A Test Register - - - - TouCAN_A Interrupt Configuration Register - - - - - TouCAN_A Control Register 0 / TouCAN_A Control Register - 1 - - - - - TouCAN_A Control and Prescaler Divider Register / - TouCAN_A Control Register 2 - - - - - TouCAN_A Free-Running Timer Register - - - - TouCAN_A Receive Global Mask High - - - TouCAN_A Receive Global Mask Low - - - - TouCAN_A Receive Buffer 14 Mask High - - - - - TouCAN_A Receive Buffer 14 Mask Low - - - - - TouCAN_A Receive Buffer 15 Mask High - - - - - TouCAN_A Receive Buffer 15 Mask Low - - - - - TouCAN_A Error and Status Register - - - - TouCAN_A Interrupt Masks - - - TouCAN_A Interrupt Flags - - - - TouCAN_A Receive Error Counter / TouCAN_A Transmit Error - Counter - - - - - - TouCAN_B Module Configuration Register - - - - TouCAN_B Test Register - - - - TouCAN_B Interrupt Configuration Register - - - - - TouCAN_B Control Register 0 / TouCAN_B Control Register - 1 - - - - - TouCAN_B Control and Prescaler Divider Register / - TouCAN_B Control Register 2 - - - - - TouCAN_B Free-Running Timer Register - - - - TouCAN_B Receive Global Mask High - - - TouCAN_B Receive Global Mask Low - - - - TouCAN_B Receive Buffer 14 Mask High - - - - - TouCAN_B Receive Buffer 14 Mask Low - - - - - TouCAN_B Receive Buffer 15 Mask High - - - - - TouCAN_B Receive Buffer 15 Mask Low - - - - - TouCAN_B Error and Status Register - - - - TouCAN_B Interrupt Masks - - - TouCAN_B Interrupt Flags - - - - TouCAN_B Receive Error Counter / TouCAN_B Transmit Error - Counter - - - - - - UIMB Module Configuration Register - - - - - Test Register — Reserved - - - Pending Interrupt Request Registe - - - - - - - - - SRAM_A Module Configuration Register - - - - SRAM_A Test Register - - - - - SRAM_B Module Configuration Register - - - - SRAM_B Test Register - - - - diff --git a/mcdp/scrapBook.jpage b/mcdp/scrapBook.jpage deleted file mode 100644 index 9ecc960..0000000 --- a/mcdp/scrapBook.jpage +++ /dev/null @@ -1,115 +0,0 @@ -short i = (short) 0x8613; -return i;(short) -31213 -++++++ -int i = -15; -System.out.println(i & 0xFF); -++++++ -int x; for (int i = -10000; i < 10000; i++) { - x = (i & 0xFF); - if (x < 0){ - System.out.println(i & 0xFF); - } -} -++++++ -int b = -15; -int c = (b & 0xFF); -System.out.println(c); -++++++ -byte b = (byte) 0x80; -b |= 0x40; -b |= 0x20; -System.out.println(b); -++++++ -int word = -1; // 0x00010000; -int shift = 27; -byte b = (byte) ((word >>> 21) & 0x0FF); -int i = (word >>> shift); -System.out.println(word + "\t" + shift); -System.out.println(b); -System.out.println(i); -++++++ -int word = 0xFF3; -byte b = (byte) ((word & 0x07) << 5); -System.out.println(b); -++++++ -System.out.println(64 >>> 1); -++++++ -int word = 0xFF0F0F0F; boolean lengthBit = false, controlBit = true; -byte b = (byte) 0x80; -if (lengthBit) { - b |= 0x40; -} -if (controlBit) { - b |= 0x20; -} b |= (byte) (word >>> 27); System.out.print(b + "\t"); -b = (byte) ((word >>> 19) & 0xFF); System.out.print(b + "\t"); -b = (byte) ((word >>> 11) & 0xFF); System.out.print(b + "\t"); -b = (byte) ((word >>> 3) & 0xFF); System.out.print(b + "\t"); -b = (byte) ((word & 0x07) << 5); System.out.println(b); -++++++ -byte[] data = new byte[5]; -data[0] = 0x00; data[1] = 0x00; data[2] = 0x00; data[3] = 0x29; data[4] = (byte) 0x80; -int retValue = ((data[0] << 3) + ((data[1] & 0xFF) >>> 5)) << 24; -System.out.println("0x" + Integer.toHexString(retValue)); -// second byte -retValue += (((data[1] << 3) & 0xFF) + ((data[2] & 0xFF) >>> 5)) << 16; -System.out.println("0x" + Integer.toHexString(retValue)); -// third byte -retValue += (((data[2] << 3) & 0xFF) + ((data[3] & 0xFF) >>> 5)) << 8; -System.out.println("0x" + Integer.toHexString(retValue)); -// fourth byte -retValue += ((data[3] << 3) & 0xFF) + ((data[4] & 0xFF) >>> 5); -System.out.println("0x" + Integer.toHexString(retValue)); -++++++ -byte b = 0x7D; -System.out.println((b & 0x80)); -++++++ -int i1 = 0x12345678, i2 = 0x56789012; -long l = ((long) i1 << 32) + i2; -System.out.println(Long.toHexString(l)); -++++++ -int val = 5; -for (int i = 0; i <= 7; i++) { - int cmd = 0xFC00010C + (7 - i) * 0x800000 + ((val >>> i*4) & 0xF)*0x1000; - System.out.println(i + "\t0x" + Integer.toHexString(cmd)); -} -++++++ -System.out.println("0x" + Integer.toHexString((0x20 << 3) & 0xFF)); -++++++ -int data = 0x1111; -byte b; -b = (byte) ((data >>> 9) & 0xFF); -System.out.println("0x" + Integer.toHexString(b)); -b = (byte) ((data >>> 1) & 0xFF); -System.out.println("0x" + Integer.toHexString(b)); -b = (byte) ((data & 0x01) << 7); -System.out.println("0x" + Integer.toHexString(b)); -++++++ -byte[] data = new byte[3]; -data[0] = (byte) 0xFF; data[1] = 0x01; data[2] = 0x00; -byte b = 0; -for (int bit = 0; bit <= 7; bit++) { - if ((data[1] & (1 << bit)) > 0) { - b += 1 << (7 - bit); - } -} -int retValue = (b & 0xFF) << 8; -// turn LSB -b = 0; -for (int bit = 0; bit <= 7; bit++) { - if ((data[0] & (1 << bit)) > 0) { - b += 1 << (7 - bit); - } -} -retValue += (b & 0xFF); -System.out.println("0x" + Integer.toHexString(retValue)); -++++++ -System.out.println(((512 - 6) / 2) & 0xFFFC); -++++++ -int MR30TSPR = 0x7FC003A6; -int spr = 158; -System.out.println(((spr & 0x1F) * 0x20 + (spr >>> 5)) * 0x800 + MR30TSPR); -+++++++ -int val = 0xFFFFFA00; -System.out.println("0x" + Integer.toHexString(val >>> 16)); -System.out.println("0x" + Integer.toHexString(val & 0xFFFF)); diff --git a/mcdp/src/ch/ntb/mcdp/bdi/BDIException.java b/mcdp/src/ch/ntb/mcdp/bdi/BDIException.java deleted file mode 100644 index df2c516..0000000 --- a/mcdp/src/ch/ntb/mcdp/bdi/BDIException.java +++ /dev/null @@ -1,14 +0,0 @@ -package ch.ntb.mcdp.bdi; - -public class BDIException extends Exception { - - public BDIException(String string) { - super(string); - } - - /** - * - */ - private static final long serialVersionUID = -3800838568826846479L; - -} diff --git a/mcdp/src/ch/ntb/mcdp/bdi/MC68332.java b/mcdp/src/ch/ntb/mcdp/bdi/MC68332.java deleted file mode 100644 index fa4f11d..0000000 --- a/mcdp/src/ch/ntb/mcdp/bdi/MC68332.java +++ /dev/null @@ -1,1065 +0,0 @@ -package ch.ntb.mcdp.bdi; - -import ch.ntb.mcdp.usb.DataPacket; -import ch.ntb.mcdp.usb.Dispatch; -import ch.ntb.mcdp.usb.DispatchException; -import ch.ntb.mcdp.usb.USBDevice; -import ch.ntb.mcdp.utils.logger.LogUtil; -import ch.ntb.mcdp.utils.logger.McdpLogger; -import ch.ntb.usb.Device; -import ch.ntb.usb.USB; -import ch.ntb.usb.USBException; - -/** - * Represents the Background Debugging Interface of the MC68332 microcontroller. - * - * @author schlaepfer - * - */ -public class MC68332 { - - private static McdpLogger logger = LogUtil.ch_ntb_mcdp_bdi; - - // BDI subtypes - /** - * 17 Bit Packet to BDI - */ - private static final byte STYPE_BDI_17IN = 0x10; - - /** - * 17 Bit Packet from BDI - */ - private static final byte STYPE_BDI_17OUT = 0x11; - - /** - * Fast Download Data to download to target (Fill) - */ - private static final byte STYPE_BDI_17FILL_BYTE_WORD = 0x12; - - /** - * Fast Download Data to download to target (Fill) - */ - private static final byte STYPE_BDI_17FILL_LONG = 0x13; - - /** - * Dump target memory (Dump) - */ - private static final byte STYPE_BDI_17DUMP = 0x14; - - /** - * Hard Reset - */ - private static final byte STYPE_BDI_HARD_RESET_332 = 0x07; - - /** - * Get status of Freeze-Signal - */ - private static final byte STYPE_BDI_GET_FREEZE = 0x08; - - /** - * Fast Download successfully finished (Fill) - */ - private static final byte STYPE_BDI_SUCCESS_FD = 0x60; - - /** - * HARD_RESET done - */ - private static final byte STYPE_BDI_HARD_RESET_SUCCESS = 0x61; - - /** - * Freeze-Signal status (length = 1 byte) - */ - private static final byte STYPE_BDI_FREEZE_RESULT = 0x62; - - /** - * Fast Download Data received from target (Dump) - */ - private static final byte STYPE_BDI_DUMP_DATA = 0x63; - - /** - * Unknown STYPE - */ - private static final byte STYPE_BDI_UNKNOWN_STYPE = 0x70; - - /** - * Error if length in FD (Fast Download) packet too small - */ - private static final byte STYPE_BDI_ERROR_FD_LENGTH = 0x71; - - /** - * General FD Error - */ - private static final byte STYPE_BDI_ERROR_FD_GENERAL = 0x72; - - /** - * Dump error - */ - private static final byte STYPE_BDI_DUMP_ERROR = 0x74; - - /** - * data length in bytes - */ - private static final int BDI_DATA17_LENGTH = 3; - - /** - * no operation - */ - private static final int NOP = 0x0000; - - /** - * asserts RESET for 512 clock cycles (CPU is not affected) - */ - private static final int RST = 0x0400; - - /** - * resume execution - */ - private static final int GO = 0x0C00; - - /** - * read data register - */ - private static final int RDREG = 0x2180; - - /** - * write data register - */ - private static final int WDREG = 0x2080; - - /** - * read system register - */ - private static final int RSREG = 0x2580; - - /** - * write system register - */ - private static final int WSREG = 0x2480; - - /** - * write memory byte - */ - private static final int WRITEB = 0x1800; - - /** - * write memory word - */ - private static final int WRITEW = 0x1840; - - /** - * write memory long - */ - private static final int WRITEL = 0x1880; - - /** - * read memory byte - */ - private static final int READB = 0x1900; - - /** - * read memory word - */ - private static final int READW = 0x1940; - - /** - * read memory long - */ - private static final int READL = 0x1980; - - /** - * fill memory byte - */ - private static final int FILLB = 0x1C00; - - /** - * fill memory word - */ - private static final int FILLW = 0x1C40; - - /** - * fill memory long - */ - private static final int FILLL = 0x1C80; - - /** - * dump memory long - */ - private static final int DUMPB = 0x1D00; - - /** - * dump memory long - */ - private static final int DUMPW = 0x1D40; - - /** - * dump memory long - */ - private static final int DUMPL = 0x1D80; - - /** - * BDI return Code: Command Complete; Status OK - */ - private static final int STATUS_OK = 0xFFFF; - - /** - * Maximal number of words or bytes (1 or 2 bytes) for one usb-packet to - * download (fill). - */ - private int maxNofBytesWordsFill; - - /** - * Maximal number of longs (4 bytes) for one usb-packet to download (fill).
- */ - private int maxNofLongsFill; - - /** - * Maximal number of words or bytes (1 or 2 bytes) to dump in one - * usb-packet. - */ - private int maxNofBytesWordsDump; - - /** - * Maximal number of longs (4 bytes) to dump in one usb-packet. - */ - private int maxNofLongsDump; - - /** - * The last known state on the freeze signal. - */ - private boolean targetInDebugMode = false; - - /** - * Temporary buffer of the data to send. - */ - private byte[] sendData; - - /** - * Sizes which are setup up when writing or reading memory data. This values - * are used in fillMem and dumpMem. - */ - private int readMemSize, writeMemSize; - - /** - * The USB device to connect to. - */ - private Device device; - - /** - * @param device - * The USB device to connect to. Before using any methods which - * communicate with the device, the device must be connected. - */ - public MC68332(Device device) { - readMemSize = 0; - writeMemSize = 0; - sendData = new byte[USB.HIGHSPEED_MAX_BULK_PACKET_SIZE]; - this.device = device; - } - - /** - * Transmit a packet to the USB-target. The length transmitted over USB is - * dataLength + DataPacket.PACKET_MIN_LENGTH. - * - * @param STYPE - * subtype of the packet STYPE_BDI_* - * @param dataLength - * length of the data to be sent - * @return resulting response from target - * @throws USBException - * @throws DispatchException - * @throws BDIException - */ - private DataPacket transmit(byte STYPE, int dataLength) - throws USBException, DispatchException, BDIException { - // initialize packet - sendData[0] = DataPacket.PACKET_HEADER; - sendData[1] = Dispatch.MTYPE_BDI; - sendData[2] = STYPE; - sendData[3] = (byte) (dataLength / 0x100); // length - sendData[4] = (byte) (dataLength & 0xFF); - sendData[DataPacket.PACKET_DATA_OFFSET + dataLength] = DataPacket.PACKET_END; - - // write USB-command - USBDevice - .write_BDI(sendData, dataLength + DataPacket.PACKET_MIN_LENGTH); - - // read result - DataPacket data = Dispatch.readBDI(); - if (data.subtype == STYPE_BDI_UNKNOWN_STYPE) { - throw new BDIException("unknown subtype: " + data.subtype); - } - return data; - } - - /** - * Inserts 17-bits of data (3 bytes) into the send bufferList. - * - * @param data - * 17 bits (3 bytes) of data - * @param offset - * the offset from the beginning of the data - */ - private void fillPacket(int data, int offset) { - - // refer to CPU32 Reference Manual, Section 7.2.7 - // bit16 = 0 + 16 bits of data (MSB .. LSB) - sendData[DataPacket.PACKET_DATA_OFFSET + offset] = (byte) ((data >>> 9) & 0x7F); - sendData[DataPacket.PACKET_DATA_OFFSET + offset + 1] = (byte) ((data >>> 1) & 0xFF); - sendData[DataPacket.PACKET_DATA_OFFSET + offset + 2] = (byte) ((data & 0x01) << 7); - } - - /** - * Send one BDI instruction (17 bits) to the target without any other data. - * - * @param data - * BDI instruction - * @return resulting response from target - * @throws USBException - * @throws DispatchException - * @throws BDIException - */ - public DataPacket transfer(int data) throws USBException, - DispatchException, BDIException { - - fillPacket(data, 0); - - return transmit(STYPE_BDI_17IN, BDI_DATA17_LENGTH); - } - - /** - * Checks the result for error conditions and converts the byte data to an - * integer. - * - * @param data - * DataPacket to be parsed - * @return data received from the target as an integer - * @throws BDIException - * @throws USBException - * @throws DispatchException - */ - private int parseResult17(DataPacket data, int offset) throws BDIException, - USBException, DispatchException { - if ((data.subtype != STYPE_BDI_17OUT) - && (data.subtype != STYPE_BDI_DUMP_DATA)) { - throw new BDIException("wrong subtype: " + data.subtype); - } - boolean statusControlBit = (data.data[0 + offset] & 0x80) > 0; - int retValue = (((data.data[0 + offset] << 1) & 0xFF) + ((data.data[1 + offset] & 0x80) >>> 7)) << 8; - retValue += ((data.data[1 + offset] << 1) & 0xFF) - + ((data.data[2 + offset] & 0x80) >>> 7); - - if (statusControlBit) { - switch (retValue) { - case 0x0000: - // Not Ready - return 0; - case 0x0001: - // Data Invalid - throw new BDIException( - "BERR Terminated Bus Cycle; Data Invalid"); - case 0xFFFF: - // Illegal Command - throw new BDIException("Illegal Command"); - default: - // invalid case - throw new BDIException("invalid case: 0x" - + Integer.toHexString(retValue)); - } - } - // retValue = 0xxxxx -> Valid Data Transfer - // retValue = 0xFFFF -> Command Complete; Status OK - return retValue; - } - - /** - * Combines the transfer(int data) and - * parseResult17(DataPacket data) methods.
- * Use this for a normal BDI transfer. - * - * @param data - * @return - * @throws USBException - * @throws DispatchException - * @throws BDIException - */ - private int transferAndParse17(int data) throws USBException, - DispatchException, BDIException { - return parseResult17(transfer(data), 0); - } - - /** - * Sends NOPs to the target until a STATUS_OK result is - * received. - * - * @throws USBException - * @throws DispatchException - * @throws BDIException - */ - public void nopsToLegalCmd() throws USBException, DispatchException, - BDIException { - final int NOF_NOPS_TO_LEGAL_CMD = 4; - for (int i = 0; i < NOF_NOPS_TO_LEGAL_CMD; i++) { - if (transferAndParse17(NOP) == STATUS_OK) { - return; - } - } - throw new BDIException("timeout, tried " + NOF_NOPS_TO_LEGAL_CMD - + " times"); - } - - /** - * Signals a breakpoint and enters debug mode. - * - * @throws USBException - * @throws DispatchException - * @throws BDIException - */ - public void break_() throws USBException, DispatchException, BDIException { - if (transferAndParse17(NOP) != STATUS_OK) { - throw new BDIException("no STATUS_OK received"); - } - targetInDebugMode = isFreezeAsserted(); - } - - /** - * Resume from debug mode. - * - * @throws USBException - * @throws DispatchException - * @throws BDIException - */ - public void go() throws USBException, DispatchException, BDIException { - if (!targetInDebugMode) { - throw new BDIException("target not in debug mode"); - } - transferAndParse17(GO); - targetInDebugMode = isFreezeAsserted(); - } - - /** - * Send a command to reset the microcontroller.
- * The reset is done electrically by the USB-controller. - * - * @throws USBException - * @throws DispatchException - * @throws BDIException - */ - private void hard_reset() throws USBException, DispatchException, - BDIException { - DataPacket data = transmit(STYPE_BDI_HARD_RESET_332, 0); - if (data == null) { - throw new BDIException("no data from device"); - } - if (data.subtype != STYPE_BDI_HARD_RESET_SUCCESS) { - throw new BDIException("wrong subtype: " + data.subtype); - } - } - - /** - * Reset the target and put it into debug mode. - * - * @throws USBException - * @throws DispatchException - * @throws BDIException - */ - public void reset_target() throws USBException, DispatchException, - BDIException { - // hard reset - hard_reset(); - // break - break_(); - } - - /** - * Send the RST command (reset peripherals) to the microcontroller. - * - * @throws USBException - * @throws DispatchException - * @throws BDIException - */ - public void reset_peripherals() throws USBException, DispatchException, - BDIException { - // hard reset - transferAndParse17(RST); - // wait for 50ms - try { - Thread.sleep(50); - } catch (InterruptedException e) { - e.printStackTrace(); - } - // break - break_(); - } - - /** - * Check if the freeze signal is asserted.
- * The freeze siganl is asserted if the target is in debug mode. - * - * @return - * @throws USBException - * @throws DispatchException - * @throws BDIException - */ - public boolean isFreezeAsserted() throws USBException, DispatchException, - BDIException { - DataPacket data = transmit(STYPE_BDI_GET_FREEZE, 0); - if (data == null) { - throw new BDIException("no data from device"); - } - if (data.subtype != STYPE_BDI_FREEZE_RESULT) { - throw new BDIException("wrong subtype: " + data.subtype); - } - if ((data.data[0] != 0) && (data.data[0] != 1)) { - throw new BDIException("wrong data: " + data.data[0]); - } - targetInDebugMode = data.data[0] == 1; - return targetInDebugMode; - } - - /** - * Update the internal maximal values for the fill and - * dump commands. - */ - private void updateMaxValues() { - // update the values (now the device should be connected) - if ((maxNofLongsFill <= 0) | (maxNofBytesWordsFill <= 0) - | (maxNofBytesWordsDump <= 0) | (maxNofLongsDump <= 0)) { - maxNofBytesWordsDump = (device.getMaxPacketSize() - - DataPacket.PACKET_MIN_LENGTH - 3/* NOP */) / 3; - maxNofBytesWordsFill = (device.getMaxPacketSize() - - DataPacket.PACKET_MIN_LENGTH - 3) / 6; - maxNofLongsDump = maxNofBytesWordsFill; - maxNofLongsFill = (device.getMaxPacketSize() - - DataPacket.PACKET_MIN_LENGTH - 3) / 9; - logger.finer("update maxNofLongs: " + maxNofLongsFill - + ", maxNofBytesWords: " + maxNofBytesWordsFill); - } - } - - /** - * Fill large blocks of memory.
- * Fill is used in conjunction with the writeMem command. The - * maximal number of words is defined by - * MAX_NOF_WORDS_FAST_DOWNLOAD for 1 and 2 byte (word) data. - * For 4 byte (long) data, only half the size of - * MAX_NOF_WORDS_FAST_DOWNLOAD is available as 4 bytes of - * data has to be split in two packets (2 x 3 bytes).
- * Befor using fillMem, writeMem has to be - * called to set up the start address and size. - * - * @param downloadData - * Data to be downloaded (size depending on size set up with - * writeMem) - * @param dataLength - * Number of bytes, words or longs (1, 2, 4 bytes) - * @throws BDIException - * @throws DispatchException - * @throws USBException - */ - public void fillMem(int[] downloadData, int dataLength) - throws BDIException, USBException, DispatchException { - // check if data fits into USB-packet - int currentIndex = 0; - DataPacket data; - logger.finer("dataLength: " + dataLength); - updateMaxValues(); - switch (writeMemSize) { - case 1: - if (dataLength > maxNofBytesWordsFill) { - throw new BDIException("data length (" + dataLength - + ") larger than maxNofBytesWords (" - + maxNofBytesWordsFill + ")"); - } - while (currentIndex < dataLength) { - // FILLB - fillPacket(FILLB, currentIndex * 6); - // DATA - fillPacket(downloadData[currentIndex] & 0xFF, - currentIndex * 6 + 3); - currentIndex++; - } - // send NOP to get result of last write - fillPacket(NOP, currentIndex * 6); - data = transmit(STYPE_BDI_17FILL_BYTE_WORD, dataLength * 6 + 3); - break; - case 2: - if (dataLength > maxNofBytesWordsFill) { - throw new BDIException("data length (" + dataLength - + ") larger than maxNofBytesWords (" - + maxNofBytesWordsFill + ")"); - } - while (currentIndex < dataLength) { - // FILLW - fillPacket(FILLW, currentIndex * 6); - // DATA - fillPacket(downloadData[currentIndex], currentIndex * 6 + 3); - currentIndex++; - } - // send NOP to get result of last write - fillPacket(NOP, currentIndex * 6); - data = transmit(STYPE_BDI_17FILL_BYTE_WORD, dataLength * 6 + 3); - break; - case 4: - if (dataLength > (maxNofLongsFill)) { - throw new BDIException("data length (" + dataLength - + ") larger than maxNofLongs (" + maxNofLongsFill + ")"); - } - while (currentIndex < dataLength) { - // FILLL - fillPacket(FILLL, currentIndex * 9); - // MS data - fillPacket((downloadData[currentIndex] >>> 16), - currentIndex * 9 + 3); - // LS data - fillPacket(downloadData[currentIndex], currentIndex * 9 + 6); - currentIndex++; - } - // send NOP to get result of last write - fillPacket(NOP, currentIndex * 9); - data = transmit(STYPE_BDI_17FILL_LONG, dataLength * 9 + 3); - logger.fine("FILL: Transmit: " + (dataLength * 9 + 3)); - break; - default: - throw new BDIException("invalid writeMemSize: " + writeMemSize); - } - - if (data == null) { - throw new BDIException("no data from device"); - } - - switch (data.subtype) { - case STYPE_BDI_SUCCESS_FD: - break; - case STYPE_BDI_ERROR_FD_LENGTH: - System.out.println("0x" - + Integer.toHexString(((data.data[0] & 0xff) << 8) - + (data.data[1] & 0xff))); - throw new BDIException("length smaller than BDI_DATA17_LENGTH"); - case STYPE_BDI_ERROR_FD_GENERAL: - System.out.println("0x" - + Integer.toHexString(((data.data[0] & 0xff) << 8) - + (data.data[1] & 0xff))); - throw new BDIException("general fast download error"); - default: - throw new BDIException("wrong subtype: " + data.subtype); - } - } - - /** - * Dump large blocks of memory.
- * Dump is used in conjunction with the readMem(...) command. - * The size depends on the size set up with readMem(...) and - * is internally stored. - * - * @param nofData - * number of bytes/words/longs to read (depends on the size set - * up with readMem(...)) - * @return read values - * @throws USBException - * @throws DispatchException - * @throws BDIException - */ - public int[] dumpMem(int nofData) throws USBException, DispatchException, - BDIException { - - updateMaxValues(); - int dataSize; - switch (readMemSize) { - case 1: - if (nofData > maxNofBytesWordsFill) - nofData = maxNofBytesWordsFill; - // fill the packet with {DUMPB} + 1 NOP at the end - int i; - for (i = 0; i < nofData; i++) { - fillPacket(DUMPB, i * 3); - } - fillPacket(NOP, i * 3); - dataSize = i * 3 + 3; - break; - case 2: - if (nofData > maxNofBytesWordsFill) - nofData = maxNofBytesWordsFill; - // fill the packet with {DUMPW} + 1 NOP at the end - for (i = 0; i < nofData; i++) { - fillPacket(DUMPW, i * 3); - } - fillPacket(NOP, i * 3); - dataSize = i * 3 + 3; - break; - case 4: - if (nofData > maxNofLongsFill) - nofData = maxNofLongsFill; - // fill the packet with {DUMPL + NOP} + 1 NOP at the end - for (i = 0; i < nofData; i++) { - fillPacket(DUMPL, i * 6); - fillPacket(NOP, i * 6 + 3); - } - fillPacket(NOP, i * 6); - dataSize = i * 6 + 3; - break; - default: - throw new BDIException("invalid readMemSize: " + readMemSize); - } - - DataPacket res = transmit(STYPE_BDI_17DUMP, dataSize); - /* - * The status of each transfer is checked on the USB-Controller. If an - * error occurs, a STYPE_BDI_DUMP_ERROR packet is returned. - */ - if (res == null) { - throw new BDIException("no data from device"); - } - - int[] result; - switch (res.subtype) { - case STYPE_BDI_DUMP_DATA: - switch (readMemSize) { - case 1: - case 2: - result = new int[(res.data.length) / 3]; - // MS Result before LS Result - int resIndex = 0; - while (resIndex * 3 + 3 < res.data.length) { - result[resIndex] = parseResult17(res, resIndex * 3); - resIndex++; - } - return result; - case 4: - result = new int[(res.data.length) / 6]; - // MS Result before LS Result - resIndex = 0; - while (resIndex * 6 + 6 < res.data.length) { - // MS Result - result[resIndex] = parseResult17(res, resIndex * 6) << 16; - // LS Result - result[resIndex] += parseResult17(res, resIndex * 6 + 3); - resIndex++; - } - return result; - // the default case is handled above - } - case STYPE_BDI_DUMP_ERROR: - // throws BDI exceptions, but not for "Not Ready" - throw new BDIException("STYPE_BDI_DUMP_ERROR"); - default: - throw new BDIException("wrong subtype: " + res.subtype); - } - } - - /** - * Write to a specified memory address.
- * - * @param addr - * address to write - * @param value - * value to write - * @param size - * number of bytes to read - * @throws USBException - * @throws DispatchException - * @throws BDIException - */ - public void writeMem(int addr, int value, int size) throws USBException, - DispatchException, BDIException { - - if (!targetInDebugMode) { - throw new BDIException("target not in debug mode"); - } - logger.info("addr: 0x" + Integer.toHexString(addr >>> 16) + " 0x" - + Integer.toHexString(addr & 0xFFFF) + "\tvalue: 0x" - + Integer.toHexString(value >>> 16) + " 0x" - + Integer.toHexString(value & 0xFFFF)); - - writeMemSize = size; - switch (size) { - case 1: - // put instr. - transferAndParse17(WRITEB); - // put MS ADDR - transferAndParse17(addr >>> 16); - // put LS ADDR - transferAndParse17(addr & 0xFFFF); - // put data (byte) - transferAndParse17(value & 0xFFFF); - break; - case 2: - // put instr. - transferAndParse17(WRITEW); - // put MS ADDR - transferAndParse17(addr >>> 16); - // put LS ADDR - transferAndParse17(addr & 0xFFFF); - // put data (word) - transferAndParse17(value & 0xFFFF); - break; - case 4: - // put instr. - transferAndParse17(WRITEL); - // put MS ADDR - transferAndParse17(addr >>> 16); - // put LS ADDR - transferAndParse17(addr & 0xFFFF); - // put MS data (long) - transferAndParse17(value >>> 16); - // put LS data (long) - transferAndParse17(value & 0xFFFF); - break; - default: - writeMemSize = 0; - throw new BDIException("wrong size: " + size - + " (should be 1, 2 or 4)"); - } - // check status - if (transferAndParse17(NOP) != STATUS_OK) { - // throw new BDIException("error on writeMem"); - } - } - - /** - * Read the value of a specified memory address.
- * - * @param addr - * address to read - * @param size - * number of bytes to read - * @return value of this memory address - * @throws USBException - * @throws DispatchException - * @throws BDIException - */ - public int readMem(int addr, int size) throws USBException, - DispatchException, BDIException { - - if (!targetInDebugMode) { - throw new BDIException("target not in debug mode"); - } - - logger.info("addr: 0x" + Integer.toHexString(addr >>> 16) + " 0x" - + Integer.toHexString(addr & 0xFFFF)); - - readMemSize = size; - switch (size) { - case 1: - // put instr. - transferAndParse17(READB); - // put MS ADDR - transferAndParse17(addr >>> 16); - // put LS ADDR - transferAndParse17(addr & 0xFFFF); - // get data (byte) - return transferAndParse17(NOP); - case 2: - // put instr. - transferAndParse17(READW); - // put MS ADDR - transferAndParse17(addr >>> 16); - // put LS ADDR - transferAndParse17(addr & 0xFFFF); - // get data (word) - return transferAndParse17(NOP); - case 4: - // put instr. - transferAndParse17(READL); - // put MS ADDR - transferAndParse17(addr >>> 16); - // put LS ADDR - transferAndParse17(addr & 0xFFFF); - // get MS data (long) - int valMS = transferAndParse17(NOP); - // get LS data (long) - return (valMS << 16) + transferAndParse17(NOP); - default: - readMemSize = 0; - throw new BDIException("wrong size: " + size - + " (should be 1, 2 or 4 bytes)"); - } - } - - /** - * Read a specified value from a user register.
- * See the registerDictionary.xml file for valid registers. This - * file can be found in the mc68332 resource-section. - * - * @param reg - * register to read - * @return value of register - * @throws USBException - * @throws DispatchException - * @throws BDIException - */ - public int readUserReg(int reg) throws USBException, DispatchException, - BDIException { - - if (!targetInDebugMode) { - throw new BDIException("target not in debug mode"); - } - - // put instr. - transferAndParse17(RDREG + (reg & 0x0F)); - // get MS data (long) - int valMS = transferAndParse17(NOP); - // get LS data (long) - return (valMS << 16) + transferAndParse17(NOP); - } - - /** - * Write a specified value to user register.
- * See the registerDictionary.xml file for valid registers. This - * file can be found in the mc68332 resource-section. - * - * @param reg - * register to write - * @param value - * value to write to register - * @throws USBException - * @throws DispatchException - * @throws BDIException - */ - public void writeUserReg(int reg, int value) throws USBException, - DispatchException, BDIException { - - if (!targetInDebugMode) { - throw new BDIException("target not in debug mode"); - } - - // put instr. - transferAndParse17(WDREG + (reg & 0x0F)); - // put MS data (long) - transferAndParse17(value >>> 16); - // put LS data (long) - transferAndParse17(value); - // check status - if (transferAndParse17(NOP) != STATUS_OK) { - throw new BDIException("error on writeUserReg"); - } - } - - /** - * Read a specified value from a system register.
- * See the registerDictionary.xml file for valid registers. This - * file can be found in the mc68332 resource-section. - * - * @param reg - * register to read - * @return value of register - * @throws USBException - * @throws DispatchException - * @throws BDIException - */ - public int readSysReg(int reg) throws USBException, DispatchException, - BDIException { - - if (!targetInDebugMode) { - throw new BDIException("target not in debug mode"); - } - - // put instr. - transferAndParse17(RSREG + (reg & 0x0F)); - // get MS data (long) - int valMS = transferAndParse17(NOP); - // get LS data (long) - return (valMS << 16) + transferAndParse17(NOP); - } - - /** - * Write a specified value to system register.
- * See the registerDictionary.xml file for valid registers. This - * file can be found in the mc68332 resource-section. - * - * @param reg - * register to write - * @param value - * value to write to register - * @throws USBException - * @throws DispatchException - * @throws BDIException - */ - public void writeSysReg(int reg, int value) throws USBException, - DispatchException, BDIException { - - if (!targetInDebugMode) { - throw new BDIException("target not in debug mode"); - } - logger.info("register: 0x" + Integer.toHexString(reg) + ", value: " - + "0x" + Integer.toHexString(value) + "\tinstructions: 0x" - + Integer.toHexString(WSREG + (reg & 0xF)) + " 0x" - + Integer.toHexString(value >>> 16) + ", 0x" - + Integer.toHexString(value)); - - // put instr. - transferAndParse17(WSREG + (reg & 0x0F)); - // put MS data (long) - transferAndParse17(value >>> 16); - // put LS data (long) - transferAndParse17(value); - // check status - if (transferAndParse17(NOP) != STATUS_OK) { - throw new BDIException("error on writeUserReg"); - } - } - - /** - * Return the last known state of the freeze signal.
- * This value may not be up to date as the target state may have changed - * meanwhile. To get the up to date value use isFreezeAsserted - * which will issue an USB request, read the freeze signal and update the - * internal value returned by this method. - * - * @return the last known state of the freeze signal - */ - public boolean isTargetInDebugMode() { - return targetInDebugMode; - } - - /** - * Maximal number of words or bytes (1 or 2 bytes) for one usb-packet to - * download (fill).
- * This method will only return a valid result, if the USB device is - * connected. - * - * @return - */ - public int getMaxNofBytesWordsFill() { - updateMaxValues(); - return maxNofBytesWordsFill; - } - - /** - * Maximal number of longs (4 bytes) for one usb-packet to download (fill) - * or read (dump).
- * This method will only return a valid result, if the USB device is - * connected. - * - * @return - */ - public int getMaxNofLongsFill() { - updateMaxValues(); - return maxNofLongsFill; - } - - /** - * Maximal number of words or bytes (1 or 2 bytes) to dump in one - * usb-packet.
- * This method will only return a valid result, if the USB device is - * connected. - * - * @return - */ - public int getMaxNofBytesWordsDump() { - updateMaxValues(); - return maxNofBytesWordsDump; - } - - /** - * Maximal number of longs (4 bytes) for one usb-packet to download (fill) - * or read (dump).
- * This method will only return a valid result, if the USB device is - * connected. - * - * @return - */ - public int getMaxNofLongsDump() { - updateMaxValues(); - return maxNofLongsDump; - } -} diff --git a/mcdp/src/ch/ntb/mcdp/bdi/MPC555.java b/mcdp/src/ch/ntb/mcdp/bdi/MPC555.java deleted file mode 100644 index 8be821f..0000000 --- a/mcdp/src/ch/ntb/mcdp/bdi/MPC555.java +++ /dev/null @@ -1,1179 +0,0 @@ -package ch.ntb.mcdp.bdi; - -import ch.ntb.mcdp.usb.DataPacket; -import ch.ntb.mcdp.usb.Dispatch; -import ch.ntb.mcdp.usb.DispatchException; -import ch.ntb.mcdp.usb.USBDevice; -import ch.ntb.mcdp.utils.logger.LogUtil; -import ch.ntb.mcdp.utils.logger.McdpLogger; -import ch.ntb.usb.Device; -import ch.ntb.usb.USB; -import ch.ntb.usb.USBException; - -/** - * Represents the Background Debugging Interface of the MPC555 microcontroller. - * - * @author schlaepfer - * - */ -public class MPC555 { - - private static McdpLogger logger = LogUtil.ch_ntb_mcdp_bdi; - - // BDI subtypes - /** - * 35 Bit Packet to BDI - */ - private static final byte STYPE_BDI_35IN = 0x01; - - /** - * 35 Bit Packet from BDI - */ - private static final byte STYPE_BDI_35OUT = 0x02; - - /** - * Fast Download Data - */ - private static final byte STYPE_BDI_35FD_DATA = 0x05; - - /** - * Hard Reset - */ - private static final byte STYPE_BDI_HARD_RESET_555 = 0x06; - - /** - * Get status of Freeze-Signal - */ - private static final byte STYPE_BDI_GET_FREEZE = 0x08; - - /** - * Fast Download successfully finished - */ - private static final byte STYPE_BDI_SUCCESS_FD = 0x60; - - /** - * HARD_RESET done - */ - private static final byte STYPE_BDI_HARD_RESET_SUCCESS = 0x61; - - /** - * Freeze-Signal status (length = 1 byte) - */ - private static final byte STYPE_BDI_FREEZE_RESULT = 0x62; - - /** - * Unknown STYPE - */ - private static final byte STYPE_BDI_UNKNOWN_STYPE = 0x70; - - /** - * Error if length in FD (Fast Download) packet too small - */ - private static final byte STYPE_BDI_ERROR_FD_LENGTH = 0x71; - - /** - * General FD Error - */ - private static final byte STYPE_BDI_ERROR_FD_GENERAL = 0x72; - - /** - * General FD Error - */ - private static final byte STYPE_BDI_ERROR_TIMEOUT = 0x73; - - /** - * number of bytes per BDI transfer (35 bits) - */ - private static final int BDI_DATA35_LENGTH = 5; - - /** - * no operation, nop = ori 0,0,0 - */ - private static final int NOP = 0x60000000; - - /** - * return from interrupt - */ - private static final int RFI = 0x4C000064; - - /** - * mtspr DPDR, Rx - */ - private static final int MRTDPDR = 0x7C169BA6; - - /** - * mfspr Rx, DPDR - */ - private static final int MDPDRTR = 0x7C169AA6; - - /** - * mtspr spr, R30 - */ - private static final int MR30TSPR = 0x7FC003A6; - - /** - * mfspr R30, spr - */ - private static final int MSPRTR30 = 0x7FC002A6; - - /** - * mftbr R30, tbr - */ - private static final int MTBRTR30 = 0x7FC002E6; - - /** - * Null indication result of a BDI transaction - */ - private static final int NULL_INDICATION = -1; - - /** - * Maximal number of wordsfor one usb-packet to download (fastDownload). - */ - private int maxNofWordsFastDownload; - - /** - * Internal state whether the fast download procedure has been started. - */ - private boolean fastDownloadStarted; - - /** - * The last known state on the freeze signal. - */ - private boolean targetInDebugMode; - - /** - * Temporary buffer of the data to send. - */ - private byte[] sendData; - - /** - * Temporary register values (see epilogue and - * prologue). - */ - private int gpr30, gpr31, ecr; - - /** - * The USB device to connect to. - */ - private Device device; - - /** - * @param device - * The USB device to connect to. Before using any methods which - * communicate with the device, the device must be connected. - */ - public MPC555(Device device) { - targetInDebugMode = false; - fastDownloadStarted = false; - this.device = device; - sendData = new byte[USB.HIGHSPEED_MAX_BULK_PACKET_SIZE]; - } - - /** - * Initialize an USB packet. - * - * @param STYPE - * the subtype - * @param dataLength - * length of the data contained in the packet (not the length of - * the USB packet). - */ - private void initPacket(byte STYPE, int dataLength) { - logger.finest("initPacket(0x" + Integer.toHexString(STYPE) + ", " - + dataLength + ")"); - sendData[0] = DataPacket.PACKET_HEADER; - sendData[1] = Dispatch.MTYPE_BDI; - sendData[2] = STYPE; - sendData[3] = (byte) (dataLength / 0x100); // length - sendData[4] = (byte) (dataLength & 0xFF); - sendData[DataPacket.PACKET_DATA_OFFSET + dataLength] = DataPacket.PACKET_END; - } - - /** - * Transmit an USB packet and receive the result. - * - * @param dataLength - * @return - * @throws USBException - * @throws DispatchException - * @throws BDIException - */ - private DataPacket transmit(int dataLength) throws USBException, - DispatchException, BDIException { - // write USB-command - USBDevice - .write_BDI(sendData, dataLength + DataPacket.PACKET_MIN_LENGTH); - - // read result - DataPacket data = Dispatch.readBDI(); - if (data.subtype == STYPE_BDI_UNKNOWN_STYPE) { - throw new BDIException("unknown subtype: " + data.subtype); - } else if (data.subtype == STYPE_BDI_ERROR_TIMEOUT) { - // receive invalid packet - Dispatch.readBDI(); - throw new BDIException("timeout error (DSDO not low)"); - } - return data; - } - - /** - * - * - * @param modeBit - * @param controlBit - * @param data - * @param offset - */ - private void fillPacket(boolean modeBit, boolean controlBit, int data, - int offset) { - - // startBit = 1 | modeBit | controlBit | 32 bits of data - byte b = (byte) 0x80; - if (modeBit) { - b |= 0x40; - } - if (controlBit) { - b |= 0x20; - } - b |= (byte) (data >>> 27); - sendData[DataPacket.PACKET_DATA_OFFSET + offset] = b; - sendData[DataPacket.PACKET_DATA_OFFSET + offset + 1] = (byte) ((data >>> 19) & 0xFF); - sendData[DataPacket.PACKET_DATA_OFFSET + offset + 2] = (byte) ((data >>> 11) & 0xFF); - sendData[DataPacket.PACKET_DATA_OFFSET + offset + 3] = (byte) ((data >>> 3) & 0xFF); - sendData[DataPacket.PACKET_DATA_OFFSET + offset + 4] = (byte) ((data & 0x07) << 5); - } - - private DataPacket transfer(boolean modeBit, boolean controlBit, int data) - throws USBException, DispatchException, BDIException { - - initPacket(STYPE_BDI_35IN, BDI_DATA35_LENGTH); - - fillPacket(modeBit, controlBit, data, 0); - - return transmit(BDI_DATA35_LENGTH); - } - - private int parseResult35(DataPacket data) throws BDIException { - if (data.subtype != STYPE_BDI_35OUT) { - throw new BDIException("wrong subtype: " + data.subtype); - } - // 1 bit is always 0 (Ready Bit) - // 2 + 3 bit are status bits - // 32 data bits - if ((data.data[0] & 0x80) > 0) { - throw new BDIException("ready bit is not 0: 0x" - + Integer.toHexString(data.data[0] & 0xFF)); - } - // status[0:1] - switch ((data.data[0] >>> 5) & 0x03) { - // for status 1 to 3, the first bit (after status) indicates the freeze - // status, and the second bit if a download procedure is in progress - case 0: - // first byte - int retValue = (((data.data[0] << 3) & 0xFF) + ((data.data[1] & 0xFF) >>> 5)) << 24; - // second byte - retValue += (((data.data[1] << 3) & 0xFF) + ((data.data[2] & 0xFF) >>> 5)) << 16; - // third byte - retValue += (((data.data[2] << 3) & 0xFF) + ((data.data[3] & 0xFF) >>> 5)) << 8; - // fourth byte - retValue += ((data.data[3] << 3) & 0xFF) - + ((data.data[4] & 0xFF) >>> 5); - return retValue; - case 1: - // update freeze status - targetInDebugMode = (data.data[0] & 0x10) > 0; - logger.finer("targetInDebugMode: " + targetInDebugMode); - throw new BDIException("Sequencing Error: " + data.toString()); - case 2: - // update freeze status - targetInDebugMode = (data.data[0] & 0x10) > 0; - logger.finer("targetInDebugMode: " + targetInDebugMode); - throw new BDIException("CPU Exception: " + data.toString()); - case 3: - // update freeze status - targetInDebugMode = (data.data[0] & 0x10) > 0; - logger.finer("targetInDebugMode: " + targetInDebugMode); - return NULL_INDICATION; - default: - throw new BDIException("invalid case"); - } - } - - private int transferAndParse35(boolean modeBit, boolean controlBit, int data) - throws USBException, DispatchException, BDIException { - return parseResult35(transfer(modeBit, controlBit, data)); - } - - private void epilogue() throws USBException, DispatchException, - BDIException { - - logger.fine("epilogue()"); - - // restore GPR30 - // put instr mfspr: GPR30, DPDR - transferAndParse35(false, false, 0x7FD69AA6); - // put GPR30 in DPDR - logger.finer("write gpr30: 0x" + Integer.toHexString(gpr30)); - transferAndParse35(false, true, gpr30); - - // restore GPR31 - // put instr. mfspr: GPR31, DPDR - transferAndParse35(false, false, 0x7FF69AA6); - // put GPR31 in DPDR - logger.finer("write gpr31: 0x" + Integer.toHexString(gpr31)); - transferAndParse35(false, true, gpr31); - - // 21.4.1.6 Exiting Debug Mode - // return from interrupt - normal execution follows - // put instr. rfi - transferAndParse35(false, false, RFI); - } - - private void prologue() throws USBException, DispatchException, - BDIException { - final int EBRK_bit = 1; - - logger.fine("prologue()"); - - // save GPR30 - // put instr. mtspr DPDR, GPR30 - transferAndParse35(false, false, 0x7FD69BA6); - - // read ECR for exception cause - // put instr. mfspr GPR30, ECR - gpr30 = transferAndParse35(false, false, 0x7FD422A6); - logger.finer("save gpr30: 0x" + Integer.toHexString(gpr30)); - // put instr. mtspr DPDR, GPR30 - transferAndParse35(false, false, 0x7FD69BA6); - - // save GPR31 - // put instr. mtspr DPDR, GPR31 - ecr = transferAndParse35(false, false, 0x7FF69BA6); - // nop - gpr31 = transferAndParse35(false, false, NOP); - logger.finer("save gpr31: 0x" + Integer.toHexString(gpr31)); - - // throw an exception if EBRK (External breakpoint exception) bit is not - // set - if ((ecr & (EBRK_bit * 2)) <= 0) { - throw new BDIException( - "Wrong debug enable cause (not due to EBRK): Exception Cause Register = " - + "0x" + Integer.toHexString(ecr)); - } - } - - /** - * Signals a breakpoint and enters debug mode. - * - * @throws USBException - * @throws DispatchException - * @throws BDIException - */ - public void break_() throws USBException, DispatchException, BDIException { - logger.fine("break_()"); - // assert maskable breakpoint - if (transferAndParse35(true, true, 0x7E000000) == NULL_INDICATION) { - prologue(); - } - // negate breakpoint - transferAndParse35(true, true, 0x3E000000); - } - - /** - * Resume from debug mode. - * - * @throws USBException - * @throws DispatchException - * @throws BDIException - */ - public void go() throws USBException, DispatchException, BDIException { - logger.fine("go()"); - if (!targetInDebugMode) { - throw new BDIException("target not in debug mode"); - } - - epilogue(); - // force a check whether the freeze signal is asserted or not - // this has to be done, because the state is not updated in the epilogue - // instructions - targetInDebugMode = isFreezeAsserted(); - } - - /** - * Send a command to reset the microcontroller.
- * The reset is done electrically by the USB-controller. - * - * @throws USBException - * @throws DispatchException - * @throws BDIException - */ - private void hard_reset() throws USBException, DispatchException, - BDIException { - initPacket(STYPE_BDI_HARD_RESET_555, 0); - DataPacket data = transmit(0); - if (data == null) { - throw new BDIException("no data from device"); - } - if (data.subtype != STYPE_BDI_HARD_RESET_SUCCESS) { - throw new BDIException("wrong subtype: " + data.subtype); - } - fastDownloadStarted = false; - } - - /** - * Reset the target and put it into debug mode. - * - * @throws USBException - * @throws DispatchException - * @throws BDIException - */ - public void reset_target() throws USBException, DispatchException, - BDIException { - logger.fine("reset_target()"); - // hard reset - hard_reset(); - // read ECR for exception cause - // put instr. mfspr GPR30, ECR - transferAndParse35(false, false, 0x7FD422A6); - // put instr. mtspr DPDR, GPR30 - transferAndParse35(false, false, 0x7FD69BA6); - // nop - ecr = transferAndParse35(false, false, NOP); - // check if entry into debug mode was because of DPI - // User's Manual 21.7.11 ECR - logger.fine("ecr: " + ecr); - if (ecr != 0x01) { - throw new BDIException( - "Wrong debug enable cause (not because of DPI): Exception Cause Register = 0x" - + Integer.toHexString(ecr)); - } - } - - /** - * Check if the freeze signal is asserted.
- * The freeze siganl is asserted if the target is in debug mode. - * - * @return - * @throws USBException - * @throws DispatchException - * @throws BDIException - */ - public boolean isFreezeAsserted() throws USBException, DispatchException, - BDIException { - initPacket(STYPE_BDI_GET_FREEZE, 0); - logger.fine("isFreezeAsserted()"); - DataPacket data = transmit(0); - if (data == null) { - throw new BDIException("no data from device"); - } - if (data.subtype != STYPE_BDI_FREEZE_RESULT) { - throw new BDIException("wrong subtype: " + data.subtype); - } - if ((data.data[0] != 0) && (data.data[0] != 1)) { - throw new BDIException("wrong data: " + data.data[0]); - } - targetInDebugMode = data.data[0] == 1; - return targetInDebugMode; - } - - /** - * Called to start the fast download procedure. - * - * @param startAddr - * Address to which the data will be downloaded. - * @throws USBException - * @throws DispatchException - * @throws BDIException - */ - public void startFastDownload(int startAddr) throws USBException, - DispatchException, BDIException { - logger.fine("startFastDownload(" + startAddr + ")"); - if (!targetInDebugMode) { - throw new BDIException("target not in debug mode"); - } - // put instr. mfspr GPR30, DPDR - transferAndParse35(false, false, 0x7FD69AA6); - // put adr into DPDR - transferAndParse35(false, true, startAddr - 4); - // start fast download - int result = transferAndParse35(true, true, 0xC6000000); - logger.finer("result: " + result); - // TODO: - // result == -1!!!! - // if (result != 0x7F) { - // ERROR - // } - fastDownloadStarted = true; - } - - /** - * Update the internal maximal values for the fastDownload - * procedure. - */ - private void updateMaxValues() { - // update the value (now the device should be connected) - if (maxNofWordsFastDownload <= 0) { - maxNofWordsFastDownload = ((device.getMaxPacketSize() - DataPacket.PACKET_MIN_LENGTH) / BDI_DATA35_LENGTH); - logger.finer("update maxNofWordsFastDownload: " - + maxNofWordsFastDownload); - } - } - - /** - * Fill one USB-Packet with data to download. The maximal number of words is - * defined by maxNofWordsFastDownload
- * startFastDownload has to be called before to set up the - * start address. - * - * @param downloadData - * Data to be downloaded (32 bit wide) - * @param dataLength - * Length of the data to download (words) - * @throws BDIException - * @throws DispatchException - * @throws USBException - */ - public void fastDownload(int[] downloadData, int dataLength) - throws BDIException, USBException, DispatchException { - logger.fine("fastDownload(int[], " + dataLength + ")"); - if (!fastDownloadStarted) { - throw new BDIException("start fast download first"); - } - updateMaxValues(); - // check if data fits into USB-packet - if (dataLength > maxNofWordsFastDownload) { - throw new BDIException("data larger than maxNofWordsFastDownload: " - + dataLength + " > " + maxNofWordsFastDownload); - } - int currentIndex = 0; - initPacket(STYPE_BDI_35FD_DATA, dataLength * BDI_DATA35_LENGTH); - while (currentIndex < dataLength) { - fillPacket(false, true, downloadData[currentIndex], currentIndex - * BDI_DATA35_LENGTH); - currentIndex++; - } - - DataPacket data = transmit(dataLength * BDI_DATA35_LENGTH); - if (data == null) { - throw new BDIException("no data from device"); - } - - switch (data.subtype) { - case STYPE_BDI_SUCCESS_FD: - - break; - case STYPE_BDI_ERROR_FD_LENGTH: - throw new BDIException("length smaller than BDI_DATA35_LENGTH"); - case STYPE_BDI_ERROR_FD_GENERAL: - throw new BDIException("general fast download error"); - default: - throw new BDIException("wrong subtype: " + data.subtype); - } - } - - /** - * Stop the fast download procedure.
- * Use this command after startFastDownload(...) and - * fastDownload(...). - * - * @throws USBException - * @throws DispatchException - * @throws BDIException - */ - public void stopFastDownload() throws USBException, DispatchException, - BDIException { - fastDownloadStarted = false; - logger.fine("stopFastDownload()"); - // stop fast download - int result = transferAndParse35(true, true, 0x86000000); - logger.finer("result: " + result); - // result == -1 !!! - // if (result != 0x5F) { - // // TODO: change exception string - // throw new BDIException("result != 0x5F: " + result); - // } - // terminate gracefully (DATA transaction) - transferAndParse35(false, true, 0x0); - } - - /** - * Write a value to the specified memory address. - * - * @param addr - * @param value - * @param size - * @throws USBException - * @throws DispatchException - * @throws BDIException - */ - public void writeMem(int addr, int value, int size) throws USBException, - DispatchException, BDIException { - logger.fine("writeMem(0x" + Integer.toHexString(addr) + ", 0x" - + Integer.toHexString(value) + ", " + size + ")"); - if (!targetInDebugMode) { - throw new BDIException("target not in debug mode"); - } - - // put instr. mfspr GPR30, DPDR - transferAndParse35(false, false, 0x7FD69AA6); - // put adr into DPDR - transferAndParse35(false, true, addr); - // put instr. mfspr GPR31, DPDR - transferAndParse35(false, false, 0x7FF69AA6); - // put val into DPDR - transferAndParse35(false, true, value); - switch (size) { - case 1: - // put instr. stbu 31, 0(30) - transferAndParse35(false, false, 0x9FFE0000); - break; - case 2: - // put instr. sthu 31, 0(30) - transferAndParse35(false, false, 0x0B7FE0000); - break; - case 4: - // put instr. stwu 31, 0(30) - transferAndParse35(false, false, 0x97FE0000); - break; - default: - throw new BDIException("wrong size: " + size - + " (should be 1, 2 or 4)"); - } - } - - /** - * Read a value from the specified memory address. - * - * @param addr - * @param size - * @return - * @throws USBException - * @throws DispatchException - * @throws BDIException - */ - public int readMem(int addr, int size) throws USBException, - DispatchException, BDIException { - logger.fine("readMem(0x" + Integer.toHexString(addr) + ", " + size - + ")"); - if (!targetInDebugMode) { - throw new BDIException("target not in debug mode"); - } - - // put instr. mfspr GPR30, DPDR - transferAndParse35(false, false, 0x7FD69AA6); - // put adr into DPDR - transferAndParse35(false, true, addr); - switch (size) { - case 1: - // put instr. lbzu 31, 0(30) - transferAndParse35(false, false, 0x8FFE0000); - break; - case 2: - // put instr. lhzu 31, 0(30) - transferAndParse35(false, false, 0x0A7FE0000); - break; - case 4: - // put instr. lwzu 31, 0(30) - transferAndParse35(false, false, 0x87FE0000); - break; - default: - throw new BDIException("wrong size: " + size - + " (should be 1, 2 or 4)"); - } - // put instr. mtspr DPDR, GPR31 - transferAndParse35(false, false, 0x7FF69BA6); - // put instr. nop - return transferAndParse35(false, false, NOP); - } - - /** - * Write a value to the next memory address set up with the - * writeMem command. - * - * @param value - * @param size - * @throws USBException - * @throws DispatchException - * @throws BDIException - */ - public void writeMemSeq(int value, int size) throws USBException, - DispatchException, BDIException { - logger.fine("writeMemSeq(int, int)"); - if (!targetInDebugMode) { - throw new BDIException("target not in debug mode"); - } - - // put instr. mfspr GPR30, DPDR - transferAndParse35(false, false, 0x7FF69AA6); - // put val into DPDR - transferAndParse35(false, true, value); - switch (size) { - case 1: - // put instr. stbu 31, 1(30) - transferAndParse35(false, false, 0x9FFE0001); - break; - case 2: - // put instr. sthu 31, 2(30) - transferAndParse35(false, false, 0x0B7FE0002); - break; - case 4: - // put instr. stwu 31, 4(30) - transferAndParse35(false, false, 0x97FE0004); - break; - default: - throw new BDIException("wrong size: " + size - + " (should be 1, 2 or 4)"); - } - } - - /** - * Read a value from the next memory address set up with the - * readMem command. - * - * @param size - * @return - * @throws USBException - * @throws DispatchException - * @throws BDIException - */ - public int readMemSeq(int size) throws USBException, DispatchException, - BDIException { - logger.fine("readMemSeq(int)"); - if (!targetInDebugMode) { - throw new BDIException("target not in debug mode"); - } - - switch (size) { - case 1: - // put instr. lbzu 31, 1(30) - transferAndParse35(false, false, 0x8FFE0001); - break; - case 2: - // put instr. lhzu 31, 2(30) - transferAndParse35(false, false, 0x0A7FE0002); - break; - case 4: - // put instr. lwzu 31, 4(30) - transferAndParse35(false, false, 0x87FE0004); - break; - default: - throw new BDIException("wrong size: " + size - + " (should be 1, 2 or 4)"); - } - // put instr. mtspr DPDR, GPR31 - transferAndParse35(false, false, 0x7FF69BA6); - // put instr. nop - return transferAndParse35(false, false, NOP); - } - - /** - * Read a General Purpose Register. - * - * @param gpr - * @return - * @throws USBException - * @throws DispatchException - * @throws BDIException - */ - public int readGPR(int gpr) throws USBException, DispatchException, - BDIException { - logger.fine("readGPR(" + gpr + ")"); - if (!targetInDebugMode) { - throw new BDIException("target not in debug mode"); - } - - if (gpr == 30) { - return gpr30; - } else if (gpr == 31) { - return gpr31; - } - int cmd = MRTDPDR + (gpr * 0x200000); - - // put instr. mtspr DPDR, GPRx - transferAndParse35(false, false, cmd); - // put instr. nop - return transferAndParse35(false, false, NOP); - } - - /** - * Write a General Purpose Register. - * - * @param gpr - * @param value - * @throws USBException - * @throws DispatchException - * @throws BDIException - */ - public void writeGPR(int gpr, int value) throws USBException, - DispatchException, BDIException { - logger.fine("writeGPR(" + gpr + ", 0x" + Integer.toHexString(value) - + ")"); - if (!targetInDebugMode) { - throw new BDIException("target not in debug mode"); - } - - if (gpr == 30) { - gpr30 = gpr; - return; - } else if (gpr == 31) { - gpr31 = gpr; - return; - } - int cmd = MDPDRTR + (gpr * 0x200000); - - // put instr. mfspr GPRx, DPDR - transferAndParse35(false, false, cmd); - // put data - transferAndParse35(false, true, value); - } - - /** - * Read a Special Purpose Register. - * - * @param spr - * @return - * @throws USBException - * @throws DispatchException - * @throws BDIException - */ - public int readSPR(int spr) throws USBException, DispatchException, - BDIException { - logger.fine("readSPR(" + spr + ")"); - if (!targetInDebugMode) { - throw new BDIException("target not in debug mode"); - } - - int cmd = ((spr & 0x1F) * 0x20 + (spr >>> 5)) * 0x800; - if ((spr == 268) || (spr == 269)) { - cmd += MTBRTR30; - } else { - cmd += MSPRTR30; - } - - // put instr. mfspr GPR30, SPRxxx - transferAndParse35(false, false, cmd); - // put instr. mtspr DPDR, GPR30 - transferAndParse35(false, false, 0x7FD69BA6); - // put instr. nop - return transferAndParse35(false, false, NOP); - } - - /** - * Write a Special Purpose Register. - * - * @param spr - * @param value - * @throws USBException - * @throws DispatchException - * @throws BDIException - */ - public void writeSPR(int spr, int value) throws USBException, - DispatchException, BDIException { - logger.fine("writeSPR(" + spr + ", 0x" + Integer.toHexString(value) - + ")"); - if (!targetInDebugMode) { - throw new BDIException("target not in debug mode"); - } - int cmd = MR30TSPR + ((spr & 0x1F) * 0x20 + (spr >>> 5)) * 0x800; - - // put instr. mfspr GPR30, DPDR - transferAndParse35(false, false, 0x7FD69AA6); - // put data - transferAndParse35(false, true, value); - // put instr. mtspr SPRxxx, GPR30 - transferAndParse35(false, false, cmd); - } - - /** - * Read the Machine Status Register. - * - * @return - * @throws USBException - * @throws DispatchException - * @throws BDIException - */ - public int readMSR() throws USBException, DispatchException, BDIException { - logger.fine("readMSR()"); - if (!targetInDebugMode) { - throw new BDIException("target not in debug mode"); - } - - // put instr. mfmsr GPR30, MSR - transferAndParse35(false, false, 0x7FC000A6); - // put instr. mtspr DPDR, GPR30 - transferAndParse35(false, false, 0x7FD69BA6); - // put instr. nop - return transferAndParse35(false, false, NOP); - } - - /** - * Write the Machine Status Register. - * - * @param value - * @throws USBException - * @throws DispatchException - * @throws BDIException - */ - public void writeMSR(int value) throws USBException, DispatchException, - BDIException { - logger.fine("writeMSR(0x" + Integer.toHexString(value) + ")"); - if (!targetInDebugMode) { - throw new BDIException("target not in debug mode"); - } - // put instr. mfspr GPR30, DPDR - transferAndParse35(false, false, 0x7FD69AA6); - // put data - transferAndParse35(false, true, value); - // put instr. mtmsr MSR, GPR30 - transferAndParse35(false, false, 0x7FC00124); - } - - /** - * Read a Floating Point Register. - * - * @param fpr - * @param tmpMemAddr - * @return - * @throws USBException - * @throws DispatchException - * @throws BDIException - */ - public long readFPR(int fpr, int tmpMemAddr) throws USBException, - DispatchException, BDIException { - logger.fine("readFPR(" + fpr + ", 0x" + Integer.toHexString(tmpMemAddr) - + ")"); - if (!targetInDebugMode) { - throw new BDIException("target not in debug mode"); - } - // set FP bit - writeMSR(0x2002); - - // set r30 to tmpMemAddr - // put instr. mfspr r30, DPDR - transferAndParse35(false, false, MDPDRTR + (30 * 0x200000)); - // put tmpMemAddr - transferAndParse35(false, true, tmpMemAddr); - - // put instr. stfd frS, 0(r30) - transferAndParse35(false, false, 0x0D81E0000 + fpr * 0x200000); - // read data from tmpMemAddr - return ((long) readMem(tmpMemAddr, 4) << 32) - + readMem(tmpMemAddr + 4, 4); - } - - /** - * Write a Floating Point Register. - * - * @param fpr - * @param tmpMemAddr - * @param value - * @throws USBException - * @throws DispatchException - * @throws BDIException - */ - public void writeFPR(int fpr, int tmpMemAddr, long value) - throws USBException, DispatchException, BDIException { - logger.fine("writeFPR(" + fpr + ", 0x" - + Integer.toHexString(tmpMemAddr) + ", 0x" - + Long.toHexString(value) + ")"); - if (!targetInDebugMode) { - throw new BDIException("target not in debug mode"); - } - // set FP bit - writeMSR(0x2002); - - // write data to tmpMemAddr - writeMem(tmpMemAddr, (int) (value >>> 32), 4); - writeMem(tmpMemAddr + 4, (int) value, 4); - - // set r30 to tmpMemAddr - // put instr. mfspr r30, DPDR - transferAndParse35(false, false, MDPDRTR + (30 * 0x200000)); - // put tmpMemAddr - transferAndParse35(false, true, tmpMemAddr); - - // put instr. lfd frS, 0(r30) - transferAndParse35(false, false, 0x0C81E0000 + fpr * 0x200000); - // nop - transferAndParse35(false, false, NOP); - } - - /** - * Read the Condition Register. - * - * @return - * @throws USBException - * @throws DispatchException - * @throws BDIException - */ - public int readCR() throws USBException, DispatchException, BDIException { - logger.fine("readCR()"); - if (!targetInDebugMode) { - throw new BDIException("target not in debug mode"); - } - - // put instr. mfcr GPR30 - transferAndParse35(false, false, 0x7FC00026); - // put instr. mtspr DPDR, GPR30 - transferAndParse35(false, false, 0x7FD69BA6); - // nop - return transferAndParse35(false, false, NOP); - } - - /** - * Write the Condition Register. - * - * @param value - * @throws USBException - * @throws DispatchException - * @throws BDIException - */ - public void writeCR(int value) throws USBException, DispatchException, - BDIException { - logger.fine("writeCR(0x" + Integer.toHexString(value) + ")"); - if (!targetInDebugMode) { - throw new BDIException("target not in debug mode"); - } - // put instr. mfspr GPR30, DPDR - transferAndParse35(false, false, 0x7FD69AA6); - // put data - transferAndParse35(false, true, value); - - // put instr. mtcrf CRM=all, GPR30 - transferAndParse35(false, false, 0x7FCFF120); - } - - /** - * Read the Floating-Point Status and Control Register. - * - * @return - * @throws USBException - * @throws DispatchException - * @throws BDIException - */ - public int readFPSCR() throws USBException, DispatchException, BDIException { - logger.fine("readFPSCR()"); - if (!targetInDebugMode) { - throw new BDIException("target not in debug mode"); - } - // save CR - int cr = readCR(); - // set FP bit - writeMSR(0x2002); - // put instr. mcrfs crf0, crf0 - transferAndParse35(false, false, 0xFC000080); - // put instr. mcrfs crf1, crf1 - transferAndParse35(false, false, 0xFC840080); - // put instr. mcrfs crf2, crf2 - transferAndParse35(false, false, 0xFD080080); - // put instr. mcrfs crf3, crf3 - transferAndParse35(false, false, 0xFD8C0080); - // put instr. mcrfs crf4, crf4 - transferAndParse35(false, false, 0xFE100080); - // put instr. mcrfs crf5, crf5 - transferAndParse35(false, false, 0xFE940080); - // put instr. mcrfs crf6, crf6 - transferAndParse35(false, false, 0xFF180080); - // put instr. mcrfs crf7, crf7 - transferAndParse35(false, false, 0xFF9C0080); - int retVal = readCR(); - writeCR(cr); - return retVal; - } - - /** - * Write the Floating-Point Status and Control Register. - * - * @param value - * @throws USBException - * @throws DispatchException - * @throws BDIException - */ - public void writeFPSCR(int value) throws USBException, DispatchException, - BDIException { - logger.fine("writeFPSCR(0x" + Integer.toHexString(value) + ")"); - if (!targetInDebugMode) { - throw new BDIException("target not in debug mode"); - } - // set FP bit - writeMSR(0x2002); - for (int i = 0; i < 7; i++) { - int cmd = 0xFC00010C + (7 - i) * 0x800000 - + ((value >>> i * 4) & 0xF) * 0x1000; - // put instr. mtfsfi crfx, imm - transferAndParse35(false, false, cmd); - } - } - - /** - * Return the last known state of the freeze signal. This value may not be - * up to date as the target state may have changed meanwhile. To get the up - * to date value use isFreezeAsserted which will issue an USB - * request, read the freeze signal and update the internal value returned by - * this method.
- * The value is also updated when parsing certain BDI results (see - * parseResult35). - * - * @return the last known state of the freeze signal - */ - public boolean isTargetInDebugMode() { - return targetInDebugMode; - } - - /** - * Read the currently stored value of the GPR 30 register.
- * This value is updated when entering debug mode (prologue). - * - * @return the store value of this register - */ - public int getGpr30() { - return gpr30; - } - - /** - * Set the value of the GPR 30 register.
- * This value is written to the GPR30 register when the microcontroller - * resumes from debug mode (epilogue). - * - * @param value - * value to write to the register - */ - public void setGpr30(int value) { - logger.fine("gpr30: 0x" + Integer.toHexString(value)); - gpr30 = value; - } - - /** - * Read the currently stored value of the GPR 31 register.
- * This value is updated when entering debug mode (prologue). - * - * @return the store value of this register - */ - public int getGpr31() { - return gpr31; - } - - /** - * Set the value of the GPR 31 register.
- * This value is written to the GPR31 register when the microcontroller - * resumes from debug mode (epilogue). - * - * @param value - * value to write to the register - */ - public void setGpr31(int value) { - logger.fine("gpr31: 0x" + Integer.toHexString(value)); - gpr31 = value; - } - - /** - * @return number of maximal words used in the fastDownload - * procedure.
- * Note that this procedure only returns a valid value if the device - * is already connected (the USB bulk transfer size must be known). - */ - public int getMaxNofWordsFastDownload() { - updateMaxValues(); - return maxNofWordsFastDownload; - } -} diff --git a/mcdp/src/ch/ntb/mcdp/bdi/blackbox/MC68332.java b/mcdp/src/ch/ntb/mcdp/bdi/blackbox/MC68332.java deleted file mode 100644 index 30451c9..0000000 --- a/mcdp/src/ch/ntb/mcdp/bdi/blackbox/MC68332.java +++ /dev/null @@ -1,255 +0,0 @@ -package ch.ntb.mcdp.bdi.blackbox; - -import ch.ntb.mcdp.bdi.BDIException; -import ch.ntb.mcdp.usb.DispatchException; -import ch.ntb.mcdp.usb.USBDevice; -import ch.ntb.usb.USBException; - -public class MC68332 { - - private static ch.ntb.mcdp.bdi.MC68332 bdi; - - /** - * Create a new BDI instance. - */ - static { - bdi = new ch.ntb.mcdp.bdi.MC68332(USBDevice.getDevice()); - } - - /** - * Sends NOPs to the target until a STATUS_OK result is - * received. - * - * @throws USBException - * @throws DispatchException - * @throws BDIException - */ - public static void nopsToLegalCmd() throws USBException, DispatchException, - BDIException { - bdi.nopsToLegalCmd(); - } - - /** - * Signals a breakpoint and enters debug mode. - * - * @throws USBException - * @throws DispatchException - * @throws BDIException - */ - public static void break_() throws USBException, DispatchException, - BDIException { - bdi.break_(); - } - - /** - * Resume from debug mode. - * - * @throws USBException - * @throws DispatchException - * @throws BDIException - */ - public static void go() throws USBException, DispatchException, - BDIException { - bdi.go(); - } - - /** - * Reset the target and put it into debug mode. - * - * @throws USBException - * @throws DispatchException - * @throws BDIException - */ - public static void reset_target() throws USBException, DispatchException, - BDIException { - bdi.reset_target(); - } - - /** - * Send the RST command (reset peripherals) to the microcontroller. - * - * @throws USBException - * @throws DispatchException - * @throws BDIException - */ - public static void reset_peripherals() throws USBException, - DispatchException, BDIException { - bdi.reset_peripherals(); - } - - /** - * Check if the freeze signal is asserted.
- * The freeze siganl is asserted if the target is in debug mode. - * - * @return - * @throws USBException - * @throws DispatchException - * @throws BDIException - */ - public static boolean isFreezeAsserted() throws USBException, - DispatchException, BDIException { - return bdi.isFreezeAsserted(); - } - - /** - * Fill large blocks of memory.
- * Fill is used in conjunction with the writeMem command. The - * maximal number of words is defined by - * MAX_NOF_WORDS_FAST_DOWNLOAD for 1 and 2 byte (word) data. - * For 4 byte (long) data, only half the size of - * MAX_NOF_WORDS_FAST_DOWNLOAD is available as 4 bytes of - * data has to be split in two packets (2 x 2 bytes).
- * Befor using fillMem, writeMem has to be - * called to set up the start address and size. - * - * @param downloadData - * Data to be downloaded (size depending on size set up with - * writeMem) - * @param dataLength - * Number of bytes, words or longs (1, 2, 4 bytes) - * @throws BDIException - * @throws DispatchException - * @throws USBException - */ - public static void fillMem(int[] downloadData, int dataLength) - throws BDIException, USBException, DispatchException { - bdi.fillMem(downloadData, dataLength); - } - - /** - * Dump large blocks of memory.
- * Dump is used in conjunction with the readMem(...) command. - * The size depends on the size set up with readMem(...) and - * is internally stored. - * - * @param nofData - * number of bytes/words/longs to read (depends on the size set - * up with readMem(...)) - * @return read values - * @throws USBException - * @throws DispatchException - * @throws BDIException - */ - public static int[] dumpMem(int nofData) throws USBException, - DispatchException, BDIException { - return bdi.dumpMem(nofData); - } - - /** - * Write to a specified memory address.
- * - * @param addr - * address to write - * @param value - * value to write - * @param size - * number of bytes to read - * @throws USBException - * @throws DispatchException - * @throws BDIException - */ - public static void writeMem(int addr, int value, int size) - throws USBException, DispatchException, BDIException { - bdi.writeMem(addr, value, size); - } - - /** - * Read the value of a specified memory address.
- * - * @param addr - * address to read - * @param size - * number of bytes to read - * @return value of this memory address - * @throws USBException - * @throws DispatchException - * @throws BDIException - */ - public static int readMem(int addr, int size) throws USBException, - DispatchException, BDIException { - return bdi.readMem(addr, size); - } - - /** - * Read a specified value from a user register.
- * See the registerDictionary.xml file for valid registers. This - * file can be found in the mc68332 resource-section. - * - * @param reg - * register to read - * @return value of register - * @throws USBException - * @throws DispatchException - * @throws BDIException - */ - public static int readUserReg(int reg) throws USBException, - DispatchException, BDIException { - return bdi.readUserReg(reg); - } - - /** - * Write a specified value to user register.
- * See the registerDictionary.xml file for valid registers. This - * file can be found in the mc68332 resource-section. - * - * @param reg - * register to write - * @param value - * value to write to register - * @throws USBException - * @throws DispatchException - * @throws BDIException - */ - public static void writeUserReg(int reg, int value) throws USBException, - DispatchException, BDIException { - bdi.writeUserReg(reg, value); - } - - /** - * Read a specified value from a system register.
- * See the registerDictionary.xml file for valid registers. This - * file can be found in the mc68332 resource-section. - * - * @param reg - * register to read - * @return value of register - * @throws USBException - * @throws DispatchException - * @throws BDIException - */ - public static int readSysReg(int reg) throws USBException, - DispatchException, BDIException { - return bdi.readSysReg(reg); - } - - /** - * Write a specified value to system register.
- * See the registerDictionary.xml file for valid registers. This - * file can be found in the mc68332 resource-section. - * - * @param reg - * register to write - * @param value - * value to write to register - * @throws USBException - * @throws DispatchException - * @throws BDIException - */ - public static void writeSysReg(int reg, int value) throws USBException, - DispatchException, BDIException { - bdi.writeSysReg(reg, value); - } - - /** - * Return the last known state of the freeze signal.
- * This value may not be up to date as the target state may have changed - * meanwhile. To get the up to date value use isFreezeAsserted - * which will issue an USB request, read the freeze signal and update the - * internal value returned by this method. - * - * @return the last known state of the freeze signal - */ - public static boolean isTargetInDebugMode() { - return bdi.isTargetInDebugMode(); - } -} diff --git a/mcdp/src/ch/ntb/mcdp/bdi/blackbox/MPC555.java b/mcdp/src/ch/ntb/mcdp/bdi/blackbox/MPC555.java deleted file mode 100644 index 2819d07..0000000 --- a/mcdp/src/ch/ntb/mcdp/bdi/blackbox/MPC555.java +++ /dev/null @@ -1,252 +0,0 @@ -package ch.ntb.mcdp.bdi.blackbox; - -import ch.ntb.mcdp.bdi.BDIException; -import ch.ntb.mcdp.usb.DispatchException; -import ch.ntb.mcdp.usb.USBDevice; -import ch.ntb.usb.USBException; - -public class MPC555 { - - private static ch.ntb.mcdp.bdi.MPC555 bdi; - - /** - * Create a new BDI instance. - */ - static { - bdi = new ch.ntb.mcdp.bdi.MPC555(USBDevice.getDevice()); - } - - /** - * Signals a breakpoint and enters debug mode. - * - * @throws USBException - * @throws DispatchException - * @throws BDIException - */ - public static void break_() throws USBException, DispatchException, - BDIException { - bdi.break_(); - } - - /** - * Resume from debug mode. - * - * @throws USBException - * @throws DispatchException - * @throws BDIException - */ - public static void go() throws USBException, DispatchException, - BDIException { - bdi.go(); - } - - /** - * Reset the target and put it into debug mode. - * - * @throws USBException - * @throws DispatchException - * @throws BDIException - */ - public static void reset_target() throws USBException, DispatchException, - BDIException { - bdi.reset_target(); - } - - /** - * Check if the freeze signal is asserted.
- * The freeze siganl is asserted if the target is in debug mode. - * - * @return - * @throws USBException - * @throws DispatchException - * @throws BDIException - */ - public static boolean isFreezeAsserted() throws USBException, - DispatchException, BDIException { - return bdi.isFreezeAsserted(); - } - - /** - * Called to start the fast download procedure. - * - * @param startAddr - * Address to which the data will be downloaded. - * @throws USBException - * @throws DispatchException - * @throws BDIException - */ - public static void startFastDownload(int startAddr) throws USBException, - DispatchException, BDIException { - bdi.startFastDownload(startAddr); - } - - /** - * Fill one USB-Packet with data to download. The maximal number of words is - * defined by MAX_NOF_WORDS_FAST_DOWNLOAD
- * startFastDownload has to be called before to set up the - * start address. - * - * @param downloadData - * Data to be downloaded (32 bit wide) - * @param dataLength - * Length of the data to download (words) - * @throws BDIException - * @throws DispatchException - * @throws USBException - */ - public static void fastDownload(int[] downloadData, int dataLength) - throws BDIException, USBException, DispatchException { - bdi.fastDownload(downloadData, dataLength); - } - - /** - * Stop the fast download procedure.
- * Use this command after startFastDownload(...) and - * fastDownload(...). - * - * @throws USBException - * @throws DispatchException - * @throws BDIException - */ - public static void stopFastDownload() throws USBException, - DispatchException, BDIException { - bdi.stopFastDownload(); - } - - public static void writeMem(int addr, int value, int size) - throws USBException, DispatchException, BDIException { - bdi.writeMem(addr, value, size); - } - - public static int readMem(int addr, int size) throws USBException, - DispatchException, BDIException { - return bdi.readMem(addr, size); - } - - public static void writeMemSeq(int value, int size) throws USBException, - DispatchException, BDIException { - bdi.writeMemSeq(value, size); - } - - public static int readMemSeq(int size) throws USBException, - DispatchException, BDIException { - return bdi.readMemSeq(size); - } - - public static int readGPR(int gpr) throws USBException, DispatchException, - BDIException { - return bdi.readGPR(gpr); - } - - public static void writeGPR(int gpr, int value) throws USBException, - DispatchException, BDIException { - bdi.writeGPR(gpr, value); - } - - public static int readSPR(int spr) throws USBException, DispatchException, - BDIException { - return bdi.readSPR(spr); - } - - public static void writeSPR(int spr, int value) throws USBException, - DispatchException, BDIException { - bdi.writeSPR(spr, value); - } - - public static int readMSR() throws USBException, DispatchException, - BDIException { - return bdi.readMSR(); - } - - public static void writeMSR(int value) throws USBException, - DispatchException, BDIException { - bdi.writeMSR(value); - } - - public static long readFPR(int fpr, int tmpMemAddr) throws USBException, - DispatchException, BDIException { - return bdi.readFPR(fpr, tmpMemAddr); - } - - public static void writeFPR(int fpr, int tmpMemAddr, long value) - throws USBException, DispatchException, BDIException { - bdi.writeFPR(fpr, tmpMemAddr, value); - } - - public static int readCR() throws USBException, DispatchException, - BDIException { - return bdi.readCR(); - } - - public static void writeCR(int value) throws USBException, - DispatchException, BDIException { - bdi.writeCR(value); - } - - public static int readFPSCR() throws USBException, DispatchException, - BDIException { - return bdi.readFPSCR(); - } - - public static void writeFPSCR(int value) throws USBException, - DispatchException, BDIException { - bdi.writeFPSCR(value); - } - - /** - * Return the last known state of the freeze signal. This value may not be - * up to date as the target state may have changed meanwhile. To get the up - * to date value use isFreezeAsserted which will issue an USB - * request, read the freeze signal and update the internal value returned by - * this method. - * - * @return the last known state of the freeze signal - */ - public static boolean isTargetInDebugMode() { - return bdi.isTargetInDebugMode(); - } - - /** - * Read the currently stored value of the GPR 30 register.
- * This value is updated when entering debug mode (break -> prologue). - * - * @return the store value of this register - */ - public static int getGpr30() { - return bdi.getGpr30(); - } - - /** - * Set the value of the GPR 30 register.
- * This value is written to the GPR30 register when the microcontroller - * resumes from debug mode (go -> epilogue). - * - * @param value - * value to write to the register - */ - public static void setGpr30(int value) { - bdi.setGpr30(value); - } - - /** - * Read the currently stored value of the GPR 31 register.
- * This value is updated when entering debug mode (break -> prologue). - * - * @return the store value of this register - */ - public static int getGpr31() { - return bdi.getGpr31(); - } - - /** - * Set the value of the GPR 31 register.
- * This value is written to the GPR31 register when the microcontroller - * resumes from debug mode (go -> epilogue). - * - * @param value - * value to write to the register - */ - public static void setGpr31(int value) { - bdi.setGpr31(value); - } -} diff --git a/mcdp/src/ch/ntb/mcdp/bdi/test/BDI332App.java b/mcdp/src/ch/ntb/mcdp/bdi/test/BDI332App.java deleted file mode 100644 index 3e1d122..0000000 --- a/mcdp/src/ch/ntb/mcdp/bdi/test/BDI332App.java +++ /dev/null @@ -1,279 +0,0 @@ -package ch.ntb.mcdp.bdi.test; - -import org.eclipse.swt.SWT; -import org.eclipse.swt.layout.RowLayout; -import org.eclipse.swt.widgets.Button; -import org.eclipse.swt.widgets.Display; -import org.eclipse.swt.widgets.Shell; - -import ch.ntb.mcdp.bdi.MC68332; -import ch.ntb.mcdp.usb.USBDevice; -import ch.ntb.usb.USBException; - -public class BDI332App { - - private Shell sShell = null; // @jve:decl-index=0:visual-constraint="10,10" - - private Button button1 = null; - - private Button button2 = null; - - private Button button3 = null; - - private Button button4 = null; - - private Button button5 = null; - - private Button button6 = null; - - private Button button7 = null; - - private Button button8 = null; - - private Button button9 = null; - - private Button button10 = null; - - private Button button15 = null; - - private Button button11 = null; - - private Button button12 = null; - - private Button button13 = null; - - private Button button14 = null; - - private Button button20 = null; - - private Button button16 = null; - - private Button button17 = null; - - private Button button18 = null; - - private Button button19 = null; - - /** - * This method initializes sShell - */ - private void createSShell() { - sShell = new Shell(); - sShell.setText("Shell"); - sShell.setLayout(new RowLayout()); - sShell.setSize(new org.eclipse.swt.graphics.Point(320, 134)); - button1 = new Button(sShell, SWT.NONE); - button1.setText("testBdiTransaction"); - button1 - .addSelectionListener(new org.eclipse.swt.events.SelectionAdapter() { - public void widgetSelected( - org.eclipse.swt.events.SelectionEvent e) { - BDI332test.button1(); - } - }); - button2 = new Button(sShell, SWT.NONE); - button2.setText("reset_target"); - button2 - .addSelectionListener(new org.eclipse.swt.events.SelectionAdapter() { - public void widgetSelected( - org.eclipse.swt.events.SelectionEvent e) { - BDI332test.button2(); - } - }); - button3 = new Button(sShell, SWT.NONE); - button3.setText("go"); - button3 - .addSelectionListener(new org.eclipse.swt.events.SelectionAdapter() { - public void widgetSelected( - org.eclipse.swt.events.SelectionEvent e) { - BDI332test.button3(); - } - }); - button4 = new Button(sShell, SWT.NONE); - button4.setText("break_"); - button4 - .addSelectionListener(new org.eclipse.swt.events.SelectionAdapter() { - public void widgetSelected( - org.eclipse.swt.events.SelectionEvent e) { - BDI332test.button4(); - } - }); - button5 = new Button(sShell, SWT.NONE); - button5.setText("freeze"); - button6 = new Button(sShell, SWT.NONE); - button6.setText("writeMem"); - button6 - .addSelectionListener(new org.eclipse.swt.events.SelectionAdapter() { - public void widgetSelected( - org.eclipse.swt.events.SelectionEvent e) { - BDI332test.button6(); - } - }); - button7 = new Button(sShell, SWT.NONE); - button7.setText("readMem"); - button8 = new Button(sShell, SWT.NONE); - button8.setText("dumpMem"); - button8 - .addSelectionListener(new org.eclipse.swt.events.SelectionAdapter() { - public void widgetSelected( - org.eclipse.swt.events.SelectionEvent e) { - BDI332test.button8(); - } - }); - button9 = new Button(sShell, SWT.NONE); - button9.setText("NOP"); - button10 = new Button(sShell, SWT.NONE); - button10.setText("fillMem"); - button11 = new Button(sShell, SWT.NONE); - button11.setText("initTarget"); - button11 - .addSelectionListener(new org.eclipse.swt.events.SelectionAdapter() { - public void widgetSelected( - org.eclipse.swt.events.SelectionEvent e) { - BDI332test.button11(); - } - }); - button12 = new Button(sShell, SWT.NONE); - button12.setText("replaceA"); - button12 - .addSelectionListener(new org.eclipse.swt.events.SelectionAdapter() { - public void widgetSelected( - org.eclipse.swt.events.SelectionEvent e) { - BDI332test.button12(); - } - }); - button13 = new Button(sShell, SWT.NONE); - button13.setText("compare1"); - button13 - .addSelectionListener(new org.eclipse.swt.events.SelectionAdapter() { - public void widgetSelected( - org.eclipse.swt.events.SelectionEvent e) { - BDI332test.button13(); - } - }); - button14 = new Button(sShell, SWT.NONE); - button14.setText("compare2"); - button14 - .addSelectionListener(new org.eclipse.swt.events.SelectionAdapter() { - public void widgetSelected( - org.eclipse.swt.events.SelectionEvent e) { - BDI332test.button14(); - } - }); - button15 = new Button(sShell, SWT.NONE); - button15.setText("resetUSB"); - button16 = new Button(sShell, SWT.NONE); - button16.setText("replaceE"); - button16 - .addSelectionListener(new org.eclipse.swt.events.SelectionAdapter() { - public void widgetSelected( - org.eclipse.swt.events.SelectionEvent e) { - BDI332test.button16(); - } - }); - button17 = new Button(sShell, SWT.NONE); - button17.setText("-"); - button17 - .addSelectionListener(new org.eclipse.swt.events.SelectionAdapter() { - public void widgetSelected( - org.eclipse.swt.events.SelectionEvent e) { - BDI332test.button17(); - } - }); - button18 = new Button(sShell, SWT.NONE); - button18.setText("-"); - button18 - .addSelectionListener(new org.eclipse.swt.events.SelectionAdapter() { - public void widgetSelected( - org.eclipse.swt.events.SelectionEvent e) { - BDI332test.button18(); - } - }); - button19 = new Button(sShell, SWT.NONE); - button19.setText("-"); - button19 - .addSelectionListener(new org.eclipse.swt.events.SelectionAdapter() { - public void widgetSelected( - org.eclipse.swt.events.SelectionEvent e) { - Dump332.dumpToBin(); - } - }); - button20 = new Button(sShell, SWT.NONE); - button20.setText("-"); - button20 - .addSelectionListener(new org.eclipse.swt.events.SelectionAdapter() { - public void widgetSelected( - org.eclipse.swt.events.SelectionEvent e) { - Dump332.dumpToHex(); - } - }); - button15 - .addSelectionListener(new org.eclipse.swt.events.SelectionAdapter() { - public void widgetSelected( - org.eclipse.swt.events.SelectionEvent e) { - BDI332test.button15(); - } - }); - button10 - .addSelectionListener(new org.eclipse.swt.events.SelectionAdapter() { - public void widgetSelected( - org.eclipse.swt.events.SelectionEvent e) { - BDI332test.button10(); - } - }); - button9 - .addSelectionListener(new org.eclipse.swt.events.SelectionAdapter() { - public void widgetSelected( - org.eclipse.swt.events.SelectionEvent e) { - BDI332test.button9(); - } - }); - button7 - .addSelectionListener(new org.eclipse.swt.events.SelectionAdapter() { - public void widgetSelected( - org.eclipse.swt.events.SelectionEvent e) { - BDI332test.button7(); - } - }); - button5 - .addSelectionListener(new org.eclipse.swt.events.SelectionAdapter() { - public void widgetSelected( - org.eclipse.swt.events.SelectionEvent e) { - BDI332test.button5(); - } - }); - } - - public static void main(String[] args) { - BDI332App app = new BDI332App(); - app.createSShell(); - app.sShell.open(); - - Display display = app.sShell.getDisplay(); - - try { - USBDevice.open(); - MC68332 bdi = new MC68332(USBDevice.getDevice()); - BDI332test.bdi = bdi; - Dump332.bdi = bdi; - System.out.println("open device..."); - } catch (USBException e) { - e.printStackTrace(); - return; - } - - while (!app.sShell.isDisposed()) { - if (!display.readAndDispatch()) { - display.sleep(); - } - } - - try { - USBDevice.close(); - System.out.println("closing device..."); - } catch (USBException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - } -} diff --git a/mcdp/src/ch/ntb/mcdp/bdi/test/BDI332test.java b/mcdp/src/ch/ntb/mcdp/bdi/test/BDI332test.java deleted file mode 100644 index 11ef256..0000000 --- a/mcdp/src/ch/ntb/mcdp/bdi/test/BDI332test.java +++ /dev/null @@ -1,718 +0,0 @@ -package ch.ntb.mcdp.bdi.test; - -import ch.ntb.mcdp.bdi.BDIException; -import ch.ntb.mcdp.bdi.MC68332; -import ch.ntb.mcdp.mc68332.IMCBTargetBoard; -import ch.ntb.mcdp.usb.DataPacket; -import ch.ntb.mcdp.usb.DispatchException; -import ch.ntb.mcdp.usb.USBDevice; -import ch.ntb.mcdp.utils.logger.LogUtil; -import ch.ntb.mcdp.utils.logger.McdpLogger; -import ch.ntb.usb.USBException; - -public class BDI332test { - - private static McdpLogger logger = LogUtil.ch_ntb_mcdp_bdi_test; - - public static MC68332 bdi; - - private static void testBdiTransaction() { - // test bdi transaction - DataPacket result = null; - try { - result = bdi.transfer(0xaaaa); - } catch (USBException e1) { - // TODO Auto-generated catch block - e1.printStackTrace(); - } catch (DispatchException e1) { - // TODO Auto-generated catch block - e1.printStackTrace(); - } catch (BDIException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - if (result != null) { - logger.info(result.toString()); - } - } - - private static void reset_target() { - try { - bdi.reset_target(); - } catch (USBException e1) { - // TODO Auto-generated catch block - e1.printStackTrace(); - } catch (DispatchException e1) { - // TODO Auto-generated catch block - e1.printStackTrace(); - } catch (BDIException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - } - - private static void freeze() { - try { - logger.info("isFreezeAsserted: " + bdi.isFreezeAsserted()); - } catch (USBException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } catch (DispatchException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } catch (BDIException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - - } - - private static void break_() { - try { - bdi.break_(); - } catch (USBException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } catch (DispatchException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } catch (BDIException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - } - - private static void go() { - try { - bdi.go(); - } catch (USBException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } catch (DispatchException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } catch (BDIException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - } - - private static void writeMem() { - final int BASE_ADDR = 0x105624; - try { - bdi.writeMem(BASE_ADDR, 0x123456, 4); - bdi.writeMem(BASE_ADDR + 4, 0x123457, 4); - bdi.writeMem(BASE_ADDR + 8, 0x123458, 4); - } catch (USBException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } catch (DispatchException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } catch (BDIException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - } - - private static void readMem() { - final int BASE_ADDR = 0x105624; - try { - StringBuffer sb = new StringBuffer("0x" - + Integer.toHexString(bdi.readMem(BASE_ADDR, 4)) + "\n"); - sb.append("0x" + Integer.toHexString(bdi.readMem(BASE_ADDR + 4, 4)) - + "\n"); - sb.append("0x" + Integer.toHexString(bdi.readMem(BASE_ADDR + 8, 4)) - + "\n"); - logger.info(sb.toString()); - } catch (USBException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } catch (DispatchException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } catch (BDIException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - } - - // private static void fastDownload() { - // int[] testData = new int[120]; - // for (int i = 0; i < testData.length; i++) { - // testData[i] = i; - // } - // try { - // BDI332.startFastDownload(0x800000); - // BDI332.fastDownload(testData, BDI332.MAX_NOF_WORDS_FAST_DOWNLOAD); - // BDI332.stopFastDownload(); - // } catch (USBException e) { - // // TODO Auto-generated catch block - // e.printStackTrace(); - // } catch (DispatchException e) { - // // TODO Auto-generated catch block - // e.printStackTrace(); - // } catch (BDIException e) { - // // TODO Auto-generated catch block - // e.printStackTrace(); - // } - // } - - // private static void readMemSeq() { - // int startAddr = 0x800000; - // try { - // StringBuffer sb = new StringBuffer(0 + "\tData: 0x" - // + Integer.toHexString(BDI332.readMem(startAddr, 4)) + "\n"); - // for (int i = 1; i < 120; i++) { - // sb.append(i + "\tData: 0x" - // + Integer.toHexString(BDI332.readMemSeq(4)) + "\n"); - // } - // System.out.println(sb.toString()); - // } catch (USBException e) { - // // TODO Auto-generated catch block - // e.printStackTrace(); - // } catch (DispatchException e) { - // // TODO Auto-generated catch block - // e.printStackTrace(); - // } catch (BDIException e) { - // // TODO Auto-generated catch block - // e.printStackTrace(); - // } - // } - - public static void button1() { - logger.info("testBdiTransaction()"); - testBdiTransaction(); - } - - public static void button2() { - logger.info("reset_target()"); - reset_target(); - } - - public static void button3() { - logger.info("go()"); - go(); - } - - public static void button4() { - logger.info("break_()"); - break_(); - } - - public static void button5() { - logger.info("freeze()"); - freeze(); - } - - public static void button6() { - logger.info("writeMem()"); - writeMem(); - } - - public static void button7() { - logger.info("readMem()"); - readMem(); - } - - public static void button8() { - - final int BASE_ADDR = 0x105624; - int[] result; - - logger.info("dump()"); - try { - logger.info("Data: 0x" - + Integer.toHexString(bdi.readMem(BASE_ADDR, 4)) + " "); - result = bdi.dumpMem(bdi.getMaxNofLongsDump()); - StringBuffer sb = new StringBuffer(); - for (int i = 0; i < result.length; i++) { - sb.append("0x" + Integer.toHexString(result[i]) + " "); - } - logger.info(sb.toString()); - - } catch (USBException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } catch (DispatchException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } catch (BDIException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - } - - public static void button9() { - logger.info("nop"); - // test bdi transaction - DataPacket result = null; - try { - result = bdi.transfer(0x0000); - } catch (USBException e1) { - // TODO Auto-generated catch block - e1.printStackTrace(); - } catch (DispatchException e1) { - // TODO Auto-generated catch block - e1.printStackTrace(); - } catch (BDIException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - if (result != null) { - logger.info(result.toString()); - } - } - - public static void button10() { - - final int BASE_ADDR = 0x105624; - - logger.info("fill"); - try { - bdi.writeMem(BASE_ADDR, 0, 4); - int[] data = new int[bdi.getMaxNofLongsFill()]; - for (int i = 0; i < data.length; i++) { - data[i] = i; - } - bdi.fillMem(data, data.length); - } catch (USBException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } catch (DispatchException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } catch (BDIException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - } - - public static void button11() { - logger.info("initTarget()"); - try { - IMCBTargetBoard imcb = new IMCBTargetBoard(bdi); - imcb.init(); - } catch (Exception e) { - e.printStackTrace(); - } - } - - public static void button12() { - - final int BASE_ADDR = 0x105624; - final int DATA = 0x00ff00ff; - final int OFFSET = 0x06 * 4; - final int LENGTH = 0x04; - - try { - logger.info("Fill (1 to data.length)"); - bdi.writeMem(BASE_ADDR, 0, 4); - int[] data = new int[bdi.getMaxNofLongsFill()]; - for (int i = 0; i < data.length; i++) { - data[i] = i + 1; - } - bdi.fillMem(data, data.length); - logger.info("writing byte " + (OFFSET / 4) + " to " - + ((OFFSET / 4) + LENGTH) + " with 0x" - + Integer.toHexString(DATA)); - bdi.writeMem(BASE_ADDR + OFFSET, DATA, 4); - for (int i = 0; i < LENGTH; i++) { - data[i] = DATA; - } - bdi.fillMem(data, LENGTH); - logger.info((LENGTH + 1) + " bytes written"); - logger.info("dump data"); - int firstInt = bdi.readMem(BASE_ADDR, 4); - int[] result = bdi.dumpMem(bdi.getMaxNofLongsDump()); - StringBuffer sb = new StringBuffer(); - for (int i = 0; i < result.length; i++) { - sb.append("0x" + Integer.toHexString(result[i]) + " "); - } - logger.info("Data: 0x" + Integer.toHexString(firstInt) + " " - + sb.toString()); - logger.info("Done"); - } catch (BDIException e) { - e.printStackTrace(); - } catch (USBException e) { - e.printStackTrace(); - } catch (DispatchException e) { - e.printStackTrace(); - } - } - - public static void button13() { - final int BASE_ADDR = 0x105624; - final int FIRST_VAL = 0xFF; - - try { - logger.info("initialize data"); - bdi.writeMem(BASE_ADDR, FIRST_VAL, 4); - int[] data = new int[bdi.getMaxNofLongsFill()]; - for (int i = 0; i < data.length; i++) { - data[i] = 5; - } - bdi.fillMem(data, data.length); - - logger.info("write data"); - bdi.writeMem(BASE_ADDR, FIRST_VAL, 4); - data = new int[10]; - for (int i = 0; i < data.length; i++) { - data[i] = i; - } - bdi.fillMem(data, data.length); - logger.info("Fill done"); - logger.info("read back data"); - int firstResult = bdi.readMem(BASE_ADDR, 4); - if (firstResult != FIRST_VAL) { - logger.warning("Error at 0: 0x" - + Integer.toHexString(firstResult) + " instead of 0x" - + Integer.toHexString(FIRST_VAL)); - } - logger.fine("Compare first 0x" + Integer.toHexString(firstResult) - + " == 0x" + Integer.toHexString(FIRST_VAL)); - int[] result = bdi.dumpMem(bdi.getMaxNofLongsDump()); - for (int i = 0; i < result.length; i++) { - logger.fine("Compare " + i + ": 0x" - + Integer.toHexString(result[i])); - } - logger.info("Dump done"); - } catch (USBException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } catch (DispatchException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } catch (BDIException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - } - - public static void button14() { - - final int BASE_ADDR = 0x105624; - final int FIRST_VAL = 0xFF; - - logger.info("write data"); - try { - bdi.writeMem(BASE_ADDR, FIRST_VAL, 4); - int[] data = new int[bdi.getMaxNofLongsFill()]; - for (int i = 0; i < data.length; i++) { - data[i] = i; - } - bdi.fillMem(data, data.length); - logger.info("Fill done"); - logger.info("read back data"); - int firstResult = bdi.readMem(BASE_ADDR, 4); - if (firstResult != FIRST_VAL) { - logger.warning("Error at 0: 0x" - + Integer.toHexString(firstResult) + " instead of 0x" - + Integer.toHexString(FIRST_VAL)); - } - logger.fine("Compare first 0x" + Integer.toHexString(firstResult) - + " == 0x" + Integer.toHexString(FIRST_VAL)); - int[] result = bdi.dumpMem(bdi.getMaxNofLongsFill()); - for (int i = 0; i < result.length; i++) { - if (data[i] != result[i]) { - logger.warning("Error at " + i + ": 0x" - + Integer.toHexString(result[i]) + " instead of 0x" - + Integer.toHexString(data[i])); - } - logger.fine("Compare " + i + ": 0x" - + Integer.toHexString(result[i]) + " == 0x" - + Integer.toHexString(data[i])); - - } - logger.info("Dump done"); - } catch (USBException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } catch (DispatchException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } catch (BDIException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - } - - public static void button15() { - logger.info("resetUSB()"); - try { - USBDevice.reset(); - Thread.sleep(500); - USBDevice.open(); - } catch (USBException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } catch (InterruptedException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - } - - public static void button16() { - final int BASE_ADDR = 0x105624; - final int DATA = 0x00ff00ff; - final int OFFSET = (bdi.getMaxNofLongsFill() - 2) * 4; - final int LENGTH = 0x04; - final int DUMP_BASE = BASE_ADDR + (bdi.getMaxNofLongsFill() / 2) * 4; - - try { - logger.info("REPLACE at the end"); - logger.info("Fill first"); - bdi.writeMem(BASE_ADDR, 0, 4); - int[] data = new int[bdi.getMaxNofLongsFill()]; - for (int i = 0; i < data.length; i++) { - data[i] = i + 1; - } - bdi.fillMem(data, data.length); - logger.info("Fill second"); - bdi.writeMem(BASE_ADDR + (bdi.getMaxNofLongsFill() + 1) * 4, 0, 4); - for (int i = 0; i < data.length; i++) { - data[i] = bdi.getMaxNofLongsFill() + i + 2; - } - bdi.fillMem(data, data.length); - logger.info("Dump from base: 0x" + Integer.toHexString(DUMP_BASE)); - int firstInt = bdi.readMem(DUMP_BASE, 4); - int[] result = bdi.dumpMem(bdi.getMaxNofLongsFill()); - StringBuffer sb = new StringBuffer(); - for (int i = 0; i < result.length; i++) { - sb.append("0x" + Integer.toHexString(result[i]) + " "); - } - logger.info("Data: 0x" + Integer.toHexString(firstInt) + " " - + sb.toString()); - - logger.info("writing byte " + (OFFSET / 4) + " to " - + ((OFFSET / 4) + LENGTH) + " with 0x" - + Integer.toHexString(DATA)); - bdi.writeMem(BASE_ADDR + OFFSET, DATA, 4); - for (int i = 0; i < LENGTH; i++) { - data[i] = DATA; - } - bdi.fillMem(data, LENGTH); - logger.info((LENGTH + 1) + " bytes written"); - logger.info("dump data from base: 0x" - + Integer.toHexString(DUMP_BASE)); - firstInt = bdi.readMem(DUMP_BASE, 4); - result = bdi.dumpMem(bdi.getMaxNofLongsFill()); - sb = new StringBuffer(); - for (int i = 0; i < result.length; i++) { - sb.append("0x" + Integer.toHexString(result[i]) + " "); - } - logger.info("Data: 0x" + Integer.toHexString(firstInt) + " " - + sb.toString()); - logger.info("Done"); - } catch (BDIException e) { - e.printStackTrace(); - } catch (USBException e) { - e.printStackTrace(); - } catch (DispatchException e) { - e.printStackTrace(); - } - - } - - public static void button17() { - logger.info("test read/write mem byte/word"); - final int BASE_ADDR = 0x105624; - final int DATA = 0x12345678; - - try { - logger.info("read 4 bytes at: 0x" + Integer.toHexString(BASE_ADDR) - + ", value: 0x" - + Integer.toHexString(bdi.readMem(BASE_ADDR, 4))); - logger.info("read 2 bytes at: 0x" + Integer.toHexString(BASE_ADDR) - + ", value: 0x" - + Integer.toHexString(bdi.readMem(BASE_ADDR, 2))); - logger.info("read 1 byte at: 0x" + Integer.toHexString(BASE_ADDR) - + ", value: 0x" - + Integer.toHexString(bdi.readMem(BASE_ADDR, 1))); - logger.info("write 1 byte at: 0x" + Integer.toHexString(BASE_ADDR) - + ", value: 0x" + Integer.toHexString(DATA)); - bdi.writeMem(BASE_ADDR, DATA, 1); - logger.info("read 4 bytes at: 0x" + Integer.toHexString(BASE_ADDR) - + ", value: 0x" - + Integer.toHexString(bdi.readMem(BASE_ADDR, 4))); - logger.info("write 2 byte at: 0x" + Integer.toHexString(BASE_ADDR) - + ", value: 0x" + Integer.toHexString(DATA)); - bdi.writeMem(BASE_ADDR, DATA, 2); - logger.info("read 4 bytes at: 0x" + Integer.toHexString(BASE_ADDR) - + ", value: 0x" - + Integer.toHexString(bdi.readMem(BASE_ADDR, 4))); - logger.info("write 4 byte at: 0x" + Integer.toHexString(BASE_ADDR) - + ", value: 0x" + Integer.toHexString(DATA)); - bdi.writeMem(BASE_ADDR, DATA, 4); - logger.info("read 4 bytes at: 0x" + Integer.toHexString(BASE_ADDR) - + ", value: 0x" - + Integer.toHexString(bdi.readMem(BASE_ADDR, 4))); - } catch (USBException e) { - e.printStackTrace(); - } catch (DispatchException e) { - e.printStackTrace(); - } catch (BDIException e) { - e.printStackTrace(); - } - logger.info("test done"); - } - - private static void dump(int baseAddr, int size) throws USBException, - DispatchException, BDIException { - int dumpSize = 0; - if (size > 2) { - dumpSize = bdi.getMaxNofLongsFill(); - } else { - dumpSize = bdi.getMaxNofBytesWordsFill(); - } - logger.info("read " + size + " byte(s) at 0x" - + Integer.toHexString(baseAddr) + ", value: " - + Integer.toHexString(bdi.readMem(baseAddr, size))); - int[] result = bdi.dumpMem(dumpSize); - StringBuffer sb = new StringBuffer("data: "); - for (int i = 0; i < result.length; i++) { - sb.append("0x" + Integer.toHexString(result[i]) + " "); - } - logger.info(sb.toString()); - } - - private static void fill(int baseAddr, int size) throws USBException, - DispatchException, BDIException { - int fillSize = 0; - if (size > 2) { - fillSize = bdi.getMaxNofLongsFill(); - } else { - fillSize = bdi.getMaxNofBytesWordsFill(); - } - int[] data = new int[fillSize]; - for (int i = 0; i < data.length; i++) { - data[i] = i; - } - logger.info("fill " + data.length + " integers with size " + size - + " byte(s)"); - bdi.writeMem(baseAddr, 0, size); - bdi.fillMem(data, data.length); - } - - public static void button18() { - final int BASE_ADDR = 0x105624; - - int[] data = new int[bdi.getMaxNofBytesWordsFill()]; - for (int i = 0; i < data.length; i++) { - data[i] = i; - } - try { - IMCBTargetBoard imcb = new IMCBTargetBoard(bdi); - imcb.init(); - fill(BASE_ADDR, 4); - // TODO: this does produce an error why??? - imcb.init(); - dump(BASE_ADDR, 4); - imcb.init(); - fill(BASE_ADDR, 2); - imcb.init(); - dump(BASE_ADDR, 2); - imcb.init(); - fill(BASE_ADDR, 1); - imcb.init(); - dump(BASE_ADDR, 1); - - } catch (Exception e) { - e.printStackTrace(); - } - - } - - public static void button19() { - logger.info("test read/write register"); - - try { - int REG = 0x8; - int VALUE = 0x12345; - logger.info("test SysReg (ATEMP)"); - bdi.writeSysReg(REG, VALUE); - int result = bdi.readSysReg(REG); - checkResult(VALUE, result); - - REG = 0x5; - logger.info("test UserReg (D5)"); - bdi.writeUserReg(REG, VALUE); - result = bdi.readUserReg(REG); - checkResult(VALUE, result); - - REG = 0xD; - logger.info("test UserReg (A5)"); - bdi.writeUserReg(REG, VALUE); - result = bdi.readUserReg(REG); - checkResult(VALUE, result); - - // Does only work after LoadRam! - // - // REG = 0xFFFFFA00; - // logger.info("test ctrlReg (SIMCR)"); - // bdi.writeMem(REG, VALUE, 4); - // result = bdi.readMem(REG, 4); - // checkResult(VALUE, result); - - } catch (USBException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } catch (DispatchException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } catch (BDIException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - } - - private static void checkResult(int value, int result) { - if (value != result) { - logger.severe("value: 0x" + Integer.toHexString(value) - + ", result: 0x" + Integer.toHexString(result)); - } else { - logger.info("test ok: result: 0x" + Integer.toHexString(result)); - } - } - - public static void button20() { - final int BASE_ADDR = 0x01004E0; - try { - StringBuffer sb = new StringBuffer("0x" - + Integer.toHexString(bdi.readMem(BASE_ADDR, 4)) + "\n"); - sb.append("0x" + Integer.toHexString(bdi.readMem(BASE_ADDR + 4, 4)) - + "\n"); - sb.append("0x" + Integer.toHexString(bdi.readMem(BASE_ADDR + 8, 4)) - + "\n"); - logger.info(sb.toString()); - } catch (USBException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } catch (DispatchException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } catch (BDIException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - } - - // public static void main(String[] args) { - // boolean testRunning = true; - // - // while (testRunning) { - // // testBdiTransaction(); - // // reset_target(); - // // freeze(); - // // go(); - // // System.out.println(); - // - // try { - // Thread.sleep(5000); - // } catch (InterruptedException e) { - // e.printStackTrace(); - // } - // } - // - // } -} diff --git a/mcdp/src/ch/ntb/mcdp/bdi/test/BDI555App.java b/mcdp/src/ch/ntb/mcdp/bdi/test/BDI555App.java deleted file mode 100644 index 18c2c4f..0000000 --- a/mcdp/src/ch/ntb/mcdp/bdi/test/BDI555App.java +++ /dev/null @@ -1,221 +0,0 @@ -package ch.ntb.mcdp.bdi.test; - -import org.eclipse.swt.SWT; -import org.eclipse.swt.layout.RowLayout; -import org.eclipse.swt.widgets.Button; -import org.eclipse.swt.widgets.Display; -import org.eclipse.swt.widgets.Shell; - -import ch.ntb.mcdp.bdi.MPC555; -import ch.ntb.mcdp.usb.USBDevice; -import ch.ntb.usb.USBException; - -public class BDI555App { - - private Shell sShell = null; // @jve:decl-index=0:visual-constraint="10,10" - - private Button button1 = null; - - private Button button2 = null; - - private Button button3 = null; - - private Button button4 = null; - - private Button button5 = null; - - private Button button6 = null; - - private Button button7 = null; - - private Button button8 = null; - - private Button button9 = null; - - private Button button10 = null; - - private Button button11 = null; - - private Button button12 = null; - - private Button button13 = null; - - private Button button14 = null; - - private Button button15 = null; - - /** - * This method initializes sShell - */ - private void createSShell() { - sShell = new Shell(); - sShell.setText("Shell"); - sShell.setLayout(new RowLayout()); - sShell.setSize(new org.eclipse.swt.graphics.Point(361, 108)); - button1 = new Button(sShell, SWT.NONE); - button1.setText("testBdiTransaction"); - button1 - .addSelectionListener(new org.eclipse.swt.events.SelectionAdapter() { - public void widgetSelected( - org.eclipse.swt.events.SelectionEvent e) { - BDI555test.button1(); - } - }); - button2 = new Button(sShell, SWT.NONE); - button2.setText("reset_target"); - button2 - .addSelectionListener(new org.eclipse.swt.events.SelectionAdapter() { - public void widgetSelected( - org.eclipse.swt.events.SelectionEvent e) { - BDI555test.button2(); - } - }); - button3 = new Button(sShell, SWT.NONE); - button3.setText("go"); - button3 - .addSelectionListener(new org.eclipse.swt.events.SelectionAdapter() { - public void widgetSelected( - org.eclipse.swt.events.SelectionEvent e) { - BDI555test.button3(); - } - }); - button4 = new Button(sShell, SWT.NONE); - button4.setText("break_"); - button4 - .addSelectionListener(new org.eclipse.swt.events.SelectionAdapter() { - public void widgetSelected( - org.eclipse.swt.events.SelectionEvent e) { - BDI555test.button4(); - } - }); - button5 = new Button(sShell, SWT.NONE); - button5.setText("freeze"); - button6 = new Button(sShell, SWT.NONE); - button6.setText("writeMem"); - button6 - .addSelectionListener(new org.eclipse.swt.events.SelectionAdapter() { - public void widgetSelected( - org.eclipse.swt.events.SelectionEvent e) { - BDI555test.button6(); - } - }); - button7 = new Button(sShell, SWT.NONE); - button7.setText("readMem"); - button8 = new Button(sShell, SWT.NONE); - button8.setText("readMemSeq"); - button8 - .addSelectionListener(new org.eclipse.swt.events.SelectionAdapter() { - public void widgetSelected( - org.eclipse.swt.events.SelectionEvent e) { - BDI555test.button8(); - } - }); - button9 = new Button(sShell, SWT.NONE); - button9.setText("Button9"); - button10 = new Button(sShell, SWT.NONE); - button10.setText("fastDownload"); - button11 = new Button(sShell, SWT.NONE); - button11.setText("read/write Registers"); - button12 = new Button(sShell, SWT.NONE); - button12.setText("Button12"); - button12 - .addSelectionListener(new org.eclipse.swt.events.SelectionAdapter() { - public void widgetSelected( - org.eclipse.swt.events.SelectionEvent e) { - BDI555test.button12(); - } - }); - button13 = new Button(sShell, SWT.NONE); - button13.setText("Button13"); - button13 - .addSelectionListener(new org.eclipse.swt.events.SelectionAdapter() { - public void widgetSelected( - org.eclipse.swt.events.SelectionEvent e) { - BDI555test.button13(); - } - }); - button14 = new Button(sShell, SWT.NONE); - button14.setText("Button14"); - button14 - .addSelectionListener(new org.eclipse.swt.events.SelectionAdapter() { - public void widgetSelected( - org.eclipse.swt.events.SelectionEvent e) { - BDI555test.button14(); - } - }); - button15 = new Button(sShell, SWT.NONE); - button15.setText("Button15"); - button15 - .addSelectionListener(new org.eclipse.swt.events.SelectionAdapter() { - public void widgetSelected( - org.eclipse.swt.events.SelectionEvent e) { - BDI555test.button15(); - } - }); - button11 - .addSelectionListener(new org.eclipse.swt.events.SelectionAdapter() { - public void widgetSelected( - org.eclipse.swt.events.SelectionEvent e) { - BDI555test.button11(); - } - }); - button10 - .addSelectionListener(new org.eclipse.swt.events.SelectionAdapter() { - public void widgetSelected( - org.eclipse.swt.events.SelectionEvent e) { - BDI555test.button10(); - } - }); - button9 - .addSelectionListener(new org.eclipse.swt.events.SelectionAdapter() { - public void widgetSelected( - org.eclipse.swt.events.SelectionEvent e) { - BDI555test.button9(); - } - }); - button7 - .addSelectionListener(new org.eclipse.swt.events.SelectionAdapter() { - public void widgetSelected( - org.eclipse.swt.events.SelectionEvent e) { - BDI555test.button7(); - } - }); - button5 - .addSelectionListener(new org.eclipse.swt.events.SelectionAdapter() { - public void widgetSelected( - org.eclipse.swt.events.SelectionEvent e) { - BDI555test.button5(); - } - }); - } - - public static void main(String[] args) { - BDI555App app = new BDI555App(); - app.createSShell(); - app.sShell.open(); - - Display display = app.sShell.getDisplay(); - - try { - USBDevice.open(); - BDI555test.bdi = new MPC555(USBDevice.getDevice()); - } catch (USBException e) { - e.printStackTrace(); - return; - } - - while (!app.sShell.isDisposed()) { - if (!display.readAndDispatch()) { - display.sleep(); - } - } - - try { - USBDevice.close(); - } catch (USBException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - - } -} diff --git a/mcdp/src/ch/ntb/mcdp/bdi/test/BDI555test.java b/mcdp/src/ch/ntb/mcdp/bdi/test/BDI555test.java deleted file mode 100644 index 389db2a..0000000 --- a/mcdp/src/ch/ntb/mcdp/bdi/test/BDI555test.java +++ /dev/null @@ -1,648 +0,0 @@ -package ch.ntb.mcdp.bdi.test; - -import java.util.logging.Level; - -import ch.ntb.mcdp.bdi.BDIException; -import ch.ntb.mcdp.bdi.MPC555; -import ch.ntb.mcdp.usb.DispatchException; -import ch.ntb.mcdp.utils.logger.LogUtil; -import ch.ntb.mcdp.utils.logger.McdpLogger; -import ch.ntb.usb.USBException; - -public class BDI555test { - - private static McdpLogger logger = LogUtil.ch_ntb_mcdp_bdi_test; - - public static MPC555 bdi; - - private static void testBdiTransaction() { - /* - // test bdi transaction - DataPacket result = null; - try { - // result = bdi.transfer(false, false, 0x00000000); - result = bdi.transfer(false, false, 0x7FD69BA6); - // result = bdi.transfer(false, false, 0x60000000); - } catch (USBException e1) { - // TODO Auto-generated catch block - e1.printStackTrace(); - } catch (DispatchException e1) { - // TODO Auto-generated catch block - e1.printStackTrace(); - } catch (BDIException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - if (result != null) { - System.out.println(result.toString()); - } - */ - } - - private static void reset_target() { - try { - bdi.reset_target(); - // assign pin to Freeze output - bdi.writeMem(0x02FC000, 0x40000, 4); - // enable bus monitor, disable watchdog timer - bdi.writeMem(0x02FC004, 0x0FFFFFF83, 4); - // SCCR, switch off EECLK for download - bdi.writeMem(0x02FC280, 0x08121C100, 4); - logger.info("Is freeze asserted: " + bdi.isFreezeAsserted()); - } catch (USBException e1) { - // TODO Auto-generated catch block - e1.printStackTrace(); - } catch (DispatchException e1) { - // TODO Auto-generated catch block - e1.printStackTrace(); - } catch (BDIException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - } - - private static void freeze() { - try { - logger.info("isFreezeAsserted: " + bdi.isFreezeAsserted()); - } catch (USBException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } catch (DispatchException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } catch (BDIException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - - } - - private static void break_() { - try { - bdi.break_(); - logger.info("break"); - } catch (USBException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } catch (DispatchException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } catch (BDIException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - } - - private static void go() { - try { - bdi.go(); - logger.info("go"); - } catch (USBException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } catch (DispatchException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } catch (BDIException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - } - - private static void writeMem() { - final int BASE_ADDR = 0x800000, VALUE = 0x123456; - try { - bdi.writeMem(BASE_ADDR, VALUE, 4); - logger.info("writeMem: BASE_ADDR = 0x" - + Integer.toHexString(BASE_ADDR) + ", value = 0x" - + Integer.toHexString(VALUE)); - } catch (USBException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } catch (DispatchException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } catch (BDIException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - } - - private static void readMem() { - final int BASE_ADDR = 0x800000; - try { - StringBuffer sb = new StringBuffer("readMem: BASE_ADDR = 0x" - + Integer.toHexString(BASE_ADDR) + ", value = "); - for (int i = 0; i < 10; i++) { - sb.append("0x" - + Integer - .toHexString(bdi.readMem(BASE_ADDR + i * 4, 4)) - + "\n"); - } - logger.info(sb.toString()); - } catch (USBException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } catch (DispatchException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } catch (BDIException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - } - - private static void fastDownload() { - final int BASE_ADDR = 0x800000; - int[] testData = new int[bdi.getMaxNofWordsFastDownload()]; - for (int i = 0; i < testData.length; i++) { - testData[i] = i; - } - try { - logger.info("fastDownload at BASE_ADDR = 0x" - + Integer.toHexString(BASE_ADDR) + ", length = " - + bdi.getMaxNofWordsFastDownload()); - bdi.startFastDownload(BASE_ADDR); - bdi.fastDownload(testData, bdi.getMaxNofWordsFastDownload()); - bdi.stopFastDownload(); - } catch (USBException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } catch (DispatchException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } catch (BDIException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - } - - private static void readMemSeq() { - final int BASE_ADDR = 0x800000; - try { - StringBuffer sb = new StringBuffer("readMemSeq: BASE_ADDR = 0x" - + Integer.toHexString(BASE_ADDR) + "\n" + 0 + "\tData: 0x" - + Integer.toHexString(bdi.readMem(BASE_ADDR, 4)) + "\n"); - for (int i = 1; i < 120; i++) { - sb.append(i + "\tData: 0x" - + Integer.toHexString(bdi.readMemSeq(4)) + "\n"); - } - logger.info(sb.toString()); - } catch (USBException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } catch (DispatchException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } catch (BDIException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - } - - private static void nop() throws USBException, DispatchException, - BDIException { - // nop - System.out.println("nop"); - //int data = bdi.transferAndParse35(true, true, 0x00000000); - //System.out.println("0x" + Integer.toHexString(data)); - } - - public static void button1() { - System.out.println("testBdiTransaction()"); - testBdiTransaction(); - } - - public static void button2() { - reset_target(); - } - - public static void button3() { - go(); - } - - public static void button4() { - break_(); - } - - public static void button5() { - freeze(); - } - - public static void button6() { - writeMem(); - } - - public static void button7() { - readMem(); - } - - public static void button8() { - readMemSeq(); - } - - public static void button9() { - final int SPR = 158; - final int VALUE = 0x12345; - try { - int result = bdi.readSPR(SPR); - logger.info("readSPR(" + SPR + ") = 0x" - + Integer.toHexString(result)); - bdi.writeSPR(SPR, VALUE); - logger.info("writeSPR(" + SPR + ", 0x" + Integer.toHexString(VALUE) - + ")"); - result = bdi.readSPR(SPR); - logger.info("readSPR(" + SPR + ") = 0x" - + Integer.toHexString(result)); - } catch (USBException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } catch (DispatchException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } catch (BDIException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - - // logger.info("not implemented!"); - - // logger.info("hard_reset()"); - // try { - // bdi.hard_reset(); - // } catch (USBException e) { - // e.printStackTrace(); - // } catch (DispatchException e) { - // e.printStackTrace(); - // } catch (BDIException e) { - // e.printStackTrace(); - // } - } - - public static void button10() { - // fastDownload(); - button12(); - } - - public static void button11() { - Level oldLevel = LogUtil.ch_ntb_mcdp_bdi.getLevel(); - LogUtil.setLevel(LogUtil.ch_ntb_mcdp_bdi, Level.ALL); - try { - logger.info("test SPR"); - - // valid spr registers: - // CMPA–CMPD SPR 144 – SPR 147 - // CMPE–CMPF SPR 152, 153 - // CMPG–CMPH SPR 154, 155 - // ICTRL SPR 158 - // LCTRL1 SPR 156 - // LCTRL2 SPR 157 - // COUNTA SPR 150 - // COUNTB SPR 151 - // ECR SPR 148 - // DER SPR 149 - - int REG = 152; - int VALUE = 0x12345; - bdi.writeSPR(REG, VALUE); - int result = bdi.readSPR(REG); - checkResult(VALUE, result); - - logger.info("test GPR"); - REG = 5; - bdi.writeGPR(REG, VALUE); - result = bdi.readGPR(REG); - checkResult(VALUE, result); - - logger.info("test FPR"); - int TMP_MEM_ADDR = 0x800000; - long LONG_VAL = 0x12345012345L; - bdi.writeFPR(REG, TMP_MEM_ADDR, LONG_VAL); - long fprResult = bdi.readFPR(REG, TMP_MEM_ADDR); - if (fprResult != LONG_VAL) { - logger.severe("value: 0x" + Long.toHexString(LONG_VAL) - + ", result: 0x" + Long.toHexString(fprResult)); - } else { - logger - .info("test ok: result: 0x" - + Long.toHexString(fprResult)); - } - - logger.info("test MSR"); - bdi.writeMSR(VALUE); - result = bdi.readMSR(); - checkResult(VALUE, result); - - logger.info("test CR"); - bdi.writeCR(VALUE); - result = bdi.readCR(); - checkResult(VALUE, result); - - logger.info("test CtrlReg"); - int MEM_ADDR = 0x2FC100; - bdi.writeMem(MEM_ADDR, VALUE, 4); - result = bdi.readMem(MEM_ADDR, 4); - checkResult(VALUE, result); - - } catch (USBException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } catch (DispatchException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } catch (BDIException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - - LogUtil.setLevel(LogUtil.ch_ntb_mcdp_bdi, oldLevel); - } - - private static void checkResult(int value, int result) { - if (value != result) { - logger.severe("value: 0x" + Integer.toHexString(value) - + ", result: 0x" + Integer.toHexString(result)); - } else { - logger.info("test ok: result: 0x" + Integer.toHexString(result)); - } - } - - public static void button12() { - final int BASE_ADDR = 0x3f9bf0; - - int[] data = new int[bdi.getMaxNofWordsFastDownload()]; - - data[0] = 0x9421ffb0; - data[1] = 0xbf810040; - data[2] = 0x3be10038; - data[3] = 0x3bc30000; - data[4] = 0x3ba40000; - data[5] = 0x3c600030; - data[6] = 0x38836102; - data[7] = 0x38a08000; - data[8] = 0xb0a40000; - data[9] = 0x2c9e0000; - data[10] = 0x4085004c; - data[11] = 0x3cc00030; - data[12] = 0x38e66100; - data[13] = 0x39000000; - data[14] = 0xb1070000; - data[15] = 0x1f9d2710; - data[16] = 0x339cffff; - data[17] = 0x2f1c0000; - data[18] = 0x4199fff8; - data[19] = 0x3d200030; - data[20] = 0x39496100; - data[21] = 0x39608000; - data[22] = 0xb16a0000; - data[23] = 0x1f9d2710; - data[24] = 0x339cffff; - data[25] = 0x2f9c0000; - data[26] = 0x419dfff8; - data[27] = 0x33deffff; - data[28] = 0x4280ffb4; - data[29] = 0x383fffc8; - data[30] = 0xbb810040; - data[31] = 0x38210050; - data[32] = 0x4e800020; - data[33] = 0x9421ffb0; - data[34] = 0x7c0802a6; - data[35] = 0x9001004c; - data[36] = 0xbfc10044; - data[37] = 0x3be10038; - data[38] = 0x90410014; - data[39] = 0x7fcc42e6; - data[40] = 0x387e0000; - data[41] = 0x42800008; - data[42] = 0x7fe00008; - data[43] = 0x383fffc8; - data[44] = 0xbbc10044; - data[45] = 0x8001004c; - data[46] = 0x7c0803a6; - data[47] = 0x38210050; - data[48] = 0x4e800020; - data[49] = 0x9421ffb8; - data[50] = 0x7c0802a6; - data[51] = 0x90010044; - data[52] = 0xbfa10038; - data[53] = 0x3be10038; - data[54] = 0x90410014; - data[55] = 0x3bc30000; - data[56] = 0x3ba40000; - data[57] = 0x4bffffa1; - data[58] = 0x90620018; - data[59] = 0x81820018; - data[60] = 0x3c60000f; - data[61] = 0x38834240; - data[62] = 0x7cac23d7; - data[63] = 0x40800008; - data[64] = 0x30a5ffff; - data[65] = 0x90be0000; - data[66] = 0x80c20018; - data[67] = 0x38e003e8; - data[68] = 0x7d063bd7; - data[69] = 0x40800008; - data[70] = 0x3108ffff; - data[71] = 0x392003e8; - data[72] = 0x7d484bd6; - data[73] = 0x7d4a49d6; - data[74] = 0x7d4a4011; - data[75] = 0x40800008; - data[76] = 0x314a03e8; - data[77] = 0xb15d0000; - data[78] = 0x383fffc8; - data[79] = 0xbba10038; - data[80] = 0x80010044; - data[81] = 0x7c0803a6; - data[82] = 0x38210048; - data[83] = 0x4e800020; - data[84] = 0x9421ff98; - data[85] = 0xbf21004c; - data[86] = 0x3be10038; - data[87] = 0x3bc30000; - data[88] = 0x3ba40000; - data[89] = 0x3b7e0000; - data[90] = 0x3b800000; - data[91] = 0x7c9be800; - data[92] = 0x40840070; - data[93] = 0xa33b0000; - data[94] = 0x7f9ccb78; - data[95] = 0x3b40000f; - data[96] = 0x578b0001; - data[97] = 0x4182000c; - data[98] = 0x6b8c8000; - data[99] = 0x6d9c0810; - data[100] = 0x57830801; - - try { - StringBuffer sb = new StringBuffer("dumpData: BASE_ADDR = 0x" - + Integer.toHexString(BASE_ADDR) + "\n" + 0 + "\tData: 0x" - + Integer.toHexString(bdi.readMem(BASE_ADDR, 4)) + "\n"); - for (int i = 1; i < 120; i++) { - sb.append(i + "\tData: 0x" - + Integer.toHexString(bdi.readMemSeq(4)) + "\n"); - } - logger.info(sb.toString()); - - logger.info("fastDownload at BASE_ADDR = 0x" - + Integer.toHexString(BASE_ADDR) + ", length = " - + bdi.getMaxNofWordsFastDownload()); - bdi.startFastDownload(BASE_ADDR); - bdi.fastDownload(data, bdi.getMaxNofWordsFastDownload()); - bdi.stopFastDownload(); - - sb = new StringBuffer("dumpData: BASE_ADDR = 0x" - + Integer.toHexString(BASE_ADDR) + "\n" + 0 + "\tData: 0x" - + Integer.toHexString(bdi.readMem(BASE_ADDR, 4)) + "\n"); - for (int i = 1; i < 120; i++) { - sb.append(i + "\tData: 0x" - + Integer.toHexString(bdi.readMemSeq(4)) + "\n"); - } - logger.info(sb.toString()); - } catch (USBException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } catch (DispatchException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } catch (BDIException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - - } - - private static int[] getSampleData(int length) { - int[] data = new int[length]; - for (int i = 0; i < data.length; i++) { - data[i] = (int) (Math.random() * Integer.MAX_VALUE); - } - return data; - } - - private static void testFill(int baseAddr) throws USBException, - DispatchException, BDIException { - // int length = (int) (1 + Math.random() - // * (bdi.getMaxNofWordsFastDownload() - 1)); - int length = 101; - int[] data = getSampleData(length); - logger.info("BaseAddr: 0x" + Integer.toHexString(baseAddr) - + ", dataLength: " + data.length); - // download data - bdi.startFastDownload(baseAddr); - bdi.fastDownload(data, data.length); - bdi.stopFastDownload(); - // read back data - int[] compare = new int[data.length]; - compare[0] = bdi.readMem(baseAddr, 4); - for (int i = 1; i < compare.length; i++) { - compare[i] = bdi.readMemSeq(4); - } - StringBuffer sb = new StringBuffer(); - for (int i = 0; i < compare.length; i++) { - if (compare[i] != data[i]) { - sb.append("Error at " + i + ", addr: 0x" - + Integer.toHexString(baseAddr + i * 4) - + ", expected: 0x" + Integer.toHexString(data[i]) - + ", read: " + Integer.toHexString(compare[i]) + "\n"); - } - } - if (sb.length() > 0) { - logger.warning(sb.toString()); - } - } - - public static void runFillTests(int nofRuns) { - try { - // BR0 = 01000003H(* 16777219*) - // OR0 = 0FFC00020H(* -4194272*) - // BR1 = 0800003H(* 8388611*) - // OR1 = 0FFE00020H(* -2097120*) - // DMBR = 03H(* 3*) - // DMOR = 07E000000H(* 2113929216*) - // ICTRL = 07H(* 7*) - // RSR = 00H(* 0*) - // DER = 031C7400FH(* 835141647*) - // SRR1 = 03802H(* 14338*) - - bdi.writeMem(0x2FC100, 0x01000003, 4); - bdi.writeMem(0x2FC104, 0x0FFC00020, 4); - bdi.writeMem(0x2FC108, 0x0800003, 4); - bdi.writeMem(0x2FC10C, 0x0FFE00020, 4); - bdi.writeMem(0x2FC140, 3, 4); - bdi.writeMem(0x2FC144, 0x7E000000, 4); - bdi.writeSPR(158, 0x07); - bdi.writeMem(0x2FC288, -1, 4); - bdi.writeSPR(149, 0x031C7400F); - bdi.writeSPR(27, 0x03802); - - for (int i = 0; i < nofRuns; i++) { - testFill(0x03F9800); - testFill(0x03F9BF0); - testFill(0x03F9D84); - testFill(0x03F9AA8); - testFill(0x03F9AE0); - testFill(0x0); - testFill(0x0594); - testFill(0x0D94); - testFill(0x01EA4); - testFill(0x0802000); - testFill(0x0802C10); - testFill(0x0803480); - } - } catch (USBException e) { - e.printStackTrace(); - } catch (DispatchException e) { - e.printStackTrace(); - } catch (BDIException e) { - e.printStackTrace(); - } - } - - public static void button13() { - logger.info("extensive fill test"); - runFillTests(100); - logger.info("test done"); - } - - public static void button14() { - - try { - logger.info("start FillTest"); - FillTest.doFill(); - logger.info("start compare"); - FillTest.doCompare(); - logger.info("FillTest done"); - } catch (BDIException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } catch (USBException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } catch (DispatchException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - } - - public static void button15() { - - try { - logger.info("start FillShort"); - FillTest.doFill2(); - logger.info("start compare"); - FillTest.doCompare(); - logger.info("FillShort done"); - } catch (BDIException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } catch (USBException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } catch (DispatchException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - - } -} diff --git a/mcdp/src/ch/ntb/mcdp/bdi/test/Dump332.java b/mcdp/src/ch/ntb/mcdp/bdi/test/Dump332.java deleted file mode 100644 index 77f29a1..0000000 --- a/mcdp/src/ch/ntb/mcdp/bdi/test/Dump332.java +++ /dev/null @@ -1,135 +0,0 @@ -package ch.ntb.mcdp.bdi.test; - -import java.io.File; -import java.io.FileOutputStream; -import java.io.IOException; -import java.io.OutputStream; - -import ch.ntb.mcdp.utils.intelHex.IntelHex; -import ch.ntb.mcdp.bdi.BDIException; -import ch.ntb.mcdp.bdi.MC68332; -import ch.ntb.mcdp.usb.DispatchException; -import ch.ntb.mcdp.utils.logger.LogUtil; -import ch.ntb.mcdp.utils.logger.McdpLogger; -import ch.ntb.usb.USBException; - -public class Dump332 { - - private static final String pathHex = "D:\\temp\\332dump.ihx", - pathBin = "D:\\temp\\332dump.bin"; - - private static McdpLogger logger = LogUtil.ch_ntb_mcdp_bdi_test; - - public static MC68332 bdi; - - // CromBase = 0H; - // CromSize = 100000H (* 1 MByte kByte *); - // CromCSBAR = CromBase DIV 256 + 7; - // - // CramBase = 100000H; - // CramSize = 040000H; (* 256 kByte *) - // CramCSBAR = CramBase DIV 256 + 5; - - public static void dumpToHex() { - // IntelHex.setFileName(fileName); - IntelHex.openWrite(pathHex); - - // Read Ram - final int BASE_ADDR = 0x100000; - final int MEMORY_SIZE = 0x04000; - - int currentAddress = BASE_ADDR, firstResult; - int[] result; - int hexDataLength = 2 * bdi.getMaxNofLongsFill() + 2, hexDataIndex = 0; - short[] hexData = new short[hexDataLength]; - - logger.info("dumpToHex: memory from BASE_ADDR: 0x" - + Integer.toHexString(BASE_ADDR) + ", size = 0x" - + Integer.toHexString(MEMORY_SIZE)); - try { - // setup base address - firstResult = bdi.readMem(currentAddress, 4); - hexData[hexDataIndex++] = (short) (firstResult / 0x10000); - hexData[hexDataIndex++] = (short) firstResult; - currentAddress += 4; - while (currentAddress < BASE_ADDR + MEMORY_SIZE) { - result = bdi.dumpMem(bdi.getMaxNofLongsFill()); - int i; - for (i = 0; i < result.length; i++) { - hexData[hexDataIndex + i * 2] = (short) (result[i] / 0x10000); - hexData[hexDataIndex + i * 2 + 1] = (short) result[i]; - } - IntelHex.writeDataBlock(currentAddress, hexDataIndex + i * 2, - hexData); - currentAddress += hexDataIndex + i * 2; - hexDataIndex = 0; - } - IntelHex.close(); - logger.info("Dump finished"); - } catch (USBException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } catch (DispatchException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } catch (BDIException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - } - - private static void write(OutputStream os, int data) throws IOException { - os.write((byte) ((data / 0x1000000) & 0xFF)); - os.write((byte) ((data / 0x10000) & 0xFF)); - os.write((byte) ((data / 0x100) & 0xFF)); - os.write((byte) ((data) & 0xFF)); - } - - public static void dumpToBin() { - - // Read Ram - final int BASE_ADDR = 0x100000; - final int MEMORY_SIZE = 0x04000; - - int currentAddress = BASE_ADDR, firstResult; - int[] result; - - logger.info("dumpToBin: memory from BASE_ADDR: 0x" - + Integer.toHexString(BASE_ADDR) + ", size = 0x" - + Integer.toHexString(MEMORY_SIZE)); - - try { - String path = pathBin.substring(0, pathBin.lastIndexOf('\\')); - File pathFile = new File(path); - pathFile.mkdirs(); - File f = new File(pathBin); - f.createNewFile(); - OutputStream os = new FileOutputStream(f); - - // setup base address - firstResult = bdi.readMem(currentAddress, 4); - write(os, firstResult); - currentAddress += 4; - while (currentAddress < BASE_ADDR + MEMORY_SIZE) { - result = bdi.dumpMem(bdi.getMaxNofLongsFill()); - for (int i = 0; i < result.length; i++) { - write(os, result[i]); - } - currentAddress += result.length * 4; - } - logger.info("Dump finished"); - } catch (USBException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } catch (DispatchException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } catch (BDIException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } catch (IOException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - } -} diff --git a/mcdp/src/ch/ntb/mcdp/bdi/test/FillTest.java b/mcdp/src/ch/ntb/mcdp/bdi/test/FillTest.java deleted file mode 100644 index 7aecaa8..0000000 --- a/mcdp/src/ch/ntb/mcdp/bdi/test/FillTest.java +++ /dev/null @@ -1,11016 +0,0 @@ -package ch.ntb.mcdp.bdi.test; - -import ch.ntb.mcdp.bdi.BDIException; -import ch.ntb.mcdp.bdi.MPC555; -import ch.ntb.mcdp.usb.DispatchException; -import ch.ntb.mcdp.utils.logger.LogUtil; -import ch.ntb.mcdp.utils.logger.McdpLogger; -import ch.ntb.usb.USBException; - -public class FillTest { - - private static McdpLogger logger = LogUtil.ch_ntb_mcdp_bdi_test; - - public static MPC555 bdi; - - static int[] addr = new int[10000]; - static int[] val = new int[10000]; - static int index, baseAddr; - - private static void add(int nix, int[] data, int dataLength) { - logger.info("fill: baseAddr: 0x" + Integer.toHexString(baseAddr) - + ", length: " + dataLength); - for (int i = 0; i < dataLength; i++) { - addr[index + i] = baseAddr + i * 4; - val[index + i] = data[i]; - } - index += dataLength; - baseAddr += dataLength * 4; - } - - public static void doCompare() throws USBException, DispatchException, - BDIException { - for (int i = 0; i < index; i++) { - int result = bdi.readMem(addr[i], 4); - if (val[i] != result) { - logger.severe("Error at " + i + ", addr: 0x" - + Integer.toHexString(addr[i]) + ", expected: 0x" - + Integer.toHexString(val[i]) + ", read: 0x" - + Integer.toHexString(result)); - } - } - } - - public static void doFillShort() throws USBException, DispatchException, - BDIException { - index = 0; - - bdi.writeMem(0x2FC100, 0x01000003, 4); - bdi.writeMem(0x2FC104, 0x0FFC00020, 4); - bdi.writeMem(0x2FC108, 0x0800003, 4); - bdi.writeMem(0x2FC10C, 0x0FFE00020, 4); - bdi.writeMem(0x2FC140, 3, 4); - bdi.writeMem(0x2FC144, 0x7E000000, 4); - bdi.writeSPR(158, 0x07); - bdi.writeMem(0x2FC288, -1, 4); - bdi.writeSPR(149, 0x031C7400F); - bdi.writeSPR(27, 0x03802); - - int length; - int[] data = new int[bdi.getMaxNofWordsFastDownload()]; - - baseAddr = 0x3F9800; - bdi.startFastDownload(baseAddr); - length = 42; - data[0] = 0x0; - data[1] = 0x0; - data[2] = 0x0; - data[3] = 0x0; - data[4] = 0xA8; - data[5] = 0x80; - data[6] = 0x38; - data[7] = 0x54; - data[8] = 0x68; - data[9] = 0x74; - data[10] = 0x0; - data[11] = 0x0; - data[12] = 0x0; - data[13] = 0x0; - data[14] = 0x3; - data[15] = 0x0; - data[16] = 0x2000; - data[17] = 0x3F9800; - data[18] = 0x6800; - data[19] = 0x800000; - data[20] = 0x200000; - data[21] = 0x2; - data[22] = 0x2000; - data[23] = 0x3E000; - data[24] = 0x40000; - data[25] = 0x30000; - data[26] = 0x1; - data[27] = 0x3FF800; - data[28] = 0x800; - data[29] = 0x1; - data[30] = 0x803730; - data[31] = 0x1FC8CC; - data[32] = 0x30; - data[33] = 0x6; - data[34] = 0x3F98A8; - data[35] = 0x3F9914; - data[36] = 0x3F9ACC; - data[37] = 0x802000; - data[38] = 0x80330C; - data[39] = 0x8034DC; - data[40] = 0x0; - data[41] = 0x0; - add(baseAddr, data, length); - bdi.fastDownload(data, length); - bdi.stopFastDownload(); - baseAddr = 0x3F98A8; - bdi.startFastDownload(baseAddr); - length = 27; - data[0] = 0x0; - data[1] = 0x3F98E4; - data[2] = 0x0; - data[3] = 0x3F9908; - data[4] = 0x8; - data[5] = 0x3FA1F0; - data[6] = 0x0; - data[7] = 0x3F98A8; - data[8] = 0x6C; - data[9] = 0x3F9BF0; - data[10] = 0x64C; - data[11] = 0x3FA6D8; - data[12] = 0x8; - data[13] = 0x3FA6E0; - data[14] = 0x28; - data[15] = 0xB; - data[16] = 0x546F7070; - data[17] = 0x634B6572; - data[18] = 0x6E656C00; - data[19] = 0x0; - data[20] = 0x0; - data[21] = 0x0; - data[22] = 0x0; - data[23] = 0x0; - data[24] = 0x0; - data[25] = 0x0; - data[26] = 0xE9ACBB39; - add(baseAddr, data, length); - bdi.fastDownload(data, length); - bdi.stopFastDownload(); - baseAddr = 0x3F9BF0; - bdi.startFastDownload(baseAddr); - length = 101; - data[0] = 0x9421FFB0; - data[1] = 0xBF810040; - data[2] = 0x3BE10038; - data[3] = 0x3BC30000; - data[4] = 0x3BA40000; - data[5] = 0x3C600030; - data[6] = 0x38836102; - data[7] = 0x38A08000; - data[8] = 0xB0A40000; - data[9] = 0x2C9E0000; - data[10] = 0x4085004C; - data[11] = 0x3CC00030; - data[12] = 0x38E66100; - data[13] = 0x39000000; - data[14] = 0xB1070000; - data[15] = 0x1F9D2710; - data[16] = 0x339CFFFF; - data[17] = 0x2F1C0000; - data[18] = 0x4199FFF8; - data[19] = 0x3D200030; - data[20] = 0x39496100; - data[21] = 0x39608000; - data[22] = 0xB16A0000; - data[23] = 0x1F9D2710; - data[24] = 0x339CFFFF; - data[25] = 0x2F9C0000; - data[26] = 0x419DFFF8; - data[27] = 0x33DEFFFF; - data[28] = 0x4280FFB4; - data[29] = 0x383FFFC8; - data[30] = 0xBB810040; - data[31] = 0x38210050; - data[32] = 0x4E800020; - data[33] = 0x9421FFB0; - data[34] = 0x7C0802A6; - data[35] = 0x9001004C; - data[36] = 0xBFC10044; - data[37] = 0x3BE10038; - data[38] = 0x90410014; - data[39] = 0x7FCC42E6; - data[40] = 0x387E0000; - data[41] = 0x42800008; - data[42] = 0x7FE00008; - data[43] = 0x383FFFC8; - data[44] = 0xBBC10044; - data[45] = 0x8001004C; - data[46] = 0x7C0803A6; - data[47] = 0x38210050; - data[48] = 0x4E800020; - data[49] = 0x9421FFB8; - data[50] = 0x7C0802A6; - data[51] = 0x90010044; - data[52] = 0xBFA10038; - data[53] = 0x3BE10038; - data[54] = 0x90410014; - data[55] = 0x3BC30000; - data[56] = 0x3BA40000; - data[57] = 0x4BFFFFA1; - data[58] = 0x90620018; - data[59] = 0x81820018; - data[60] = 0x3C60000F; - data[61] = 0x38834240; - data[62] = 0x7CAC23D7; - data[63] = 0x40800008; - data[64] = 0x30A5FFFF; - data[65] = 0x90BE0000; - data[66] = 0x80C20018; - data[67] = 0x38E003E8; - data[68] = 0x7D063BD7; - data[69] = 0x40800008; - data[70] = 0x3108FFFF; - data[71] = 0x392003E8; - data[72] = 0x7D484BD6; - data[73] = 0x7D4A49D6; - data[74] = 0x7D4A4011; - data[75] = 0x40800008; - data[76] = 0x314A03E8; - data[77] = 0xB15D0000; - data[78] = 0x383FFFC8; - data[79] = 0xBBA10038; - data[80] = 0x80010044; - data[81] = 0x7C0803A6; - data[82] = 0x38210048; - data[83] = 0x4E800020; - data[84] = 0x9421FF98; - data[85] = 0xBF21004C; - data[86] = 0x3BE10038; - data[87] = 0x3BC30000; - data[88] = 0x3BA40000; - data[89] = 0x3B7E0000; - data[90] = 0x3B800000; - data[91] = 0x7C9BE800; - data[92] = 0x40840070; - data[93] = 0xA33B0000; - data[94] = 0x7F9CCB78; - data[95] = 0x3B40000F; - data[96] = 0x578B0001; - data[97] = 0x4182000C; - data[98] = 0x6B8C8000; - data[99] = 0x6D9C0810; - data[100] = 0x57830801; - add(baseAddr, data, length); - bdi.fastDownload(data, length); - length = 101; - data[0] = 0x4182000C; - data[1] = 0x6B844000; - data[2] = 0x6C9C0408; - data[3] = 0x57851001; - data[4] = 0x4182000C; - data[5] = 0x6B862000; - data[6] = 0x6CDC0204; - data[7] = 0x579C1838; - data[8] = 0x335AFFFD; - data[9] = 0x2F1A0000; - data[10] = 0x409AFFC4; - data[11] = 0x57870001; - data[12] = 0x41820010; - data[13] = 0x5788083C; - data[14] = 0x6D1C1021; - data[15] = 0x42800008; - data[16] = 0x579C083C; - data[17] = 0x337B0002; - data[18] = 0x4280FF90; - data[19] = 0x3B400010; - data[20] = 0x57890001; - data[21] = 0x41820010; - data[22] = 0x578A083C; - data[23] = 0x6D5C1021; - data[24] = 0x42800008; - data[25] = 0x579C083C; - data[26] = 0x335AFFFF; - data[27] = 0x2F9A0000; - data[28] = 0x409EFFE0; - data[29] = 0x578B843E; - data[30] = 0x386B0000; - data[31] = 0x42800008; - data[32] = 0x7FE00008; - data[33] = 0x383FFFC8; - data[34] = 0xBB21004C; - data[35] = 0x38210068; - data[36] = 0x4E800020; - data[37] = 0x9421FFC0; - data[38] = 0xBFE1003C; - data[39] = 0x3BE10038; - data[40] = 0x42800000; - data[41] = 0x383FFFC8; - data[42] = 0xBBE1003C; - data[43] = 0x38210040; - data[44] = 0x4E800020; - data[45] = 0x9421FFB8; - data[46] = 0x7C0802A6; - data[47] = 0x90010044; - data[48] = 0xBFA10038; - data[49] = 0x3BE10038; - data[50] = 0x90410014; - data[51] = 0x3BC30000; - data[52] = 0x3BA40000; - data[53] = 0x2C9E027E; - data[54] = 0x40860014; - data[55] = 0x2F1D0800; - data[56] = 0x409A000C; - data[57] = 0x3BC00800; - data[58] = 0x7FDE9BA6; - data[59] = 0x2F9E009E; - data[60] = 0x409E000C; - data[61] = 0x3BDD0000; - data[62] = 0x7FDE23A6; - data[63] = 0x383FFFC8; - data[64] = 0xBBA10038; - data[65] = 0x80010044; - data[66] = 0x7C0803A6; - data[67] = 0x38210048; - data[68] = 0x4E800020; - data[69] = 0x9421FF38; - data[70] = 0x7C0802A6; - data[71] = 0x900100C4; - data[72] = 0xBDE10080; - data[73] = 0x3BE10038; - data[74] = 0x90410014; - data[75] = 0x3D800030; - data[76] = 0x386CC000; - data[77] = 0x3C800004; - data[78] = 0x90830000; - data[79] = 0x3CA00030; - data[80] = 0x38C5C284; - data[81] = 0x3CE00090; - data[82] = 0x90E60000; - data[83] = 0x3D000030; - data[84] = 0x3928C284; - data[85] = 0x82090000; - data[86] = 0x560A7801; - data[87] = 0x4182FFF0; - data[88] = 0x3D600030; - data[89] = 0x398B7F80; - data[90] = 0x38600000; - data[91] = 0x906C0000; - data[92] = 0x3860009E; - data[93] = 0x38800007; - data[94] = 0x4BFFFF3D; - data[95] = 0x3C800030; - data[96] = 0x38A4C100; - data[97] = 0x3CC00100; - data[98] = 0x38E60003; - data[99] = 0x90E50000; - data[100] = 0x3D000030; - add(baseAddr, data, length); - bdi.fastDownload(data, length); - length = 54; - data[0] = 0x3928C104; - data[1] = 0x3D40FFC0; - data[2] = 0x396A0020; - data[3] = 0x91690000; - data[4] = 0x3D800030; - data[5] = 0x386CC108; - data[6] = 0x3C800080; - data[7] = 0x38A40003; - data[8] = 0x90A30000; - data[9] = 0x3CC00030; - data[10] = 0x38E6C10C; - data[11] = 0x3D00FFE0; - data[12] = 0x39280020; - data[13] = 0x91270000; - data[14] = 0x3D400030; - data[15] = 0x396AC03C; - data[16] = 0x39800000; - data[17] = 0xB18B0000; - data[18] = 0x3C600030; - data[19] = 0x3883C280; - data[20] = 0x3CA08121; - data[21] = 0x38C50300; - data[22] = 0x90C40000; - data[23] = 0x3CE00030; - data[24] = 0x3907C200; - data[25] = 0x39200001; - data[26] = 0xB1280000; - data[27] = 0x3D400030; - data[28] = 0x396AC288; - data[29] = 0xA1EB0000; - data[30] = 0x55ECD001; - data[31] = 0x4082000C; - data[32] = 0x55E38001; - data[33] = 0x4182008C; - data[34] = 0x3C800030; - data[35] = 0x38A4C004; - data[36] = 0x38C0FF83; - data[37] = 0x90C50000; - data[38] = 0x3CE00030; - data[39] = 0x3907C140; - data[40] = 0x39200001; - data[41] = 0x91280000; - data[42] = 0x3D400030; - data[43] = 0x396AC144; - data[44] = 0x3D807E00; - data[45] = 0x918B0000; - data[46] = 0x3C600100; - data[47] = 0x38832010; - data[48] = 0x82240000; - data[49] = 0x3CA00040; - data[50] = 0x38C59800; - data[51] = 0x3CE00100; - data[52] = 0x39072000; - data[53] = 0x3926FFFC; - add(baseAddr, data, length); - bdi.fastDownload(data, length); - bdi.stopFastDownload(); - - } - - public static void doFill() throws BDIException, USBException, - DispatchException { - index = 0; - - bdi.writeMem(0x2FC100, 0x01000003, 4); - bdi.writeMem(0x2FC104, 0x0FFC00020, 4); - bdi.writeMem(0x2FC108, 0x0800003, 4); - bdi.writeMem(0x2FC10C, 0x0FFE00020, 4); - bdi.writeMem(0x2FC140, 3, 4); - bdi.writeMem(0x2FC144, 0x7E000000, 4); - bdi.writeSPR(158, 0x07); - bdi.writeMem(0x2FC288, -1, 4); - bdi.writeSPR(149, 0x031C7400F); - bdi.writeSPR(27, 0x03802); - - int length; - int[] data = new int[bdi.getMaxNofWordsFastDownload()]; - - baseAddr = 0x3F9800; - bdi.startFastDownload(baseAddr); - length = 42; - data[0] = 0x0; - data[1] = 0x0; - data[2] = 0x0; - data[3] = 0x0; - data[4] = 0xA8; - data[5] = 0x80; - data[6] = 0x38; - data[7] = 0x54; - data[8] = 0x68; - data[9] = 0x74; - data[10] = 0x0; - data[11] = 0x0; - data[12] = 0x0; - data[13] = 0x0; - data[14] = 0x3; - data[15] = 0x0; - data[16] = 0x2000; - data[17] = 0x3F9800; - data[18] = 0x6800; - data[19] = 0x800000; - data[20] = 0x200000; - data[21] = 0x2; - data[22] = 0x2000; - data[23] = 0x3E000; - data[24] = 0x40000; - data[25] = 0x30000; - data[26] = 0x1; - data[27] = 0x3FF800; - data[28] = 0x800; - data[29] = 0x1; - data[30] = 0x803730; - data[31] = 0x1FC8CC; - data[32] = 0x30; - data[33] = 0x6; - data[34] = 0x3F98A8; - data[35] = 0x3F9914; - data[36] = 0x3F9ACC; - data[37] = 0x802000; - data[38] = 0x80330C; - data[39] = 0x8034DC; - data[40] = 0x0; - data[41] = 0x0; - add(baseAddr, data, length); - bdi.fastDownload(data, length); - bdi.stopFastDownload(); - baseAddr = 0x3F98A8; - bdi.startFastDownload(baseAddr); - length = 27; - data[0] = 0x0; - data[1] = 0x3F98E4; - data[2] = 0x0; - data[3] = 0x3F9908; - data[4] = 0x8; - data[5] = 0x3FA1F0; - data[6] = 0x0; - data[7] = 0x3F98A8; - data[8] = 0x6C; - data[9] = 0x3F9BF0; - data[10] = 0x64C; - data[11] = 0x3FA6D8; - data[12] = 0x8; - data[13] = 0x3FA6E0; - data[14] = 0x28; - data[15] = 0xB; - data[16] = 0x546F7070; - data[17] = 0x634B6572; - data[18] = 0x6E656C00; - data[19] = 0x0; - data[20] = 0x0; - data[21] = 0x0; - data[22] = 0x0; - data[23] = 0x0; - data[24] = 0x0; - data[25] = 0x0; - data[26] = 0xE9ACBB39; - add(baseAddr, data, length); - bdi.fastDownload(data, length); - bdi.stopFastDownload(); - baseAddr = 0x3F9BF0; - bdi.startFastDownload(baseAddr); - length = 101; - data[0] = 0x9421FFB0; - data[1] = 0xBF810040; - data[2] = 0x3BE10038; - data[3] = 0x3BC30000; - data[4] = 0x3BA40000; - data[5] = 0x3C600030; - data[6] = 0x38836102; - data[7] = 0x38A08000; - data[8] = 0xB0A40000; - data[9] = 0x2C9E0000; - data[10] = 0x4085004C; - data[11] = 0x3CC00030; - data[12] = 0x38E66100; - data[13] = 0x39000000; - data[14] = 0xB1070000; - data[15] = 0x1F9D2710; - data[16] = 0x339CFFFF; - data[17] = 0x2F1C0000; - data[18] = 0x4199FFF8; - data[19] = 0x3D200030; - data[20] = 0x39496100; - data[21] = 0x39608000; - data[22] = 0xB16A0000; - data[23] = 0x1F9D2710; - data[24] = 0x339CFFFF; - data[25] = 0x2F9C0000; - data[26] = 0x419DFFF8; - data[27] = 0x33DEFFFF; - data[28] = 0x4280FFB4; - data[29] = 0x383FFFC8; - data[30] = 0xBB810040; - data[31] = 0x38210050; - data[32] = 0x4E800020; - data[33] = 0x9421FFB0; - data[34] = 0x7C0802A6; - data[35] = 0x9001004C; - data[36] = 0xBFC10044; - data[37] = 0x3BE10038; - data[38] = 0x90410014; - data[39] = 0x7FCC42E6; - data[40] = 0x387E0000; - data[41] = 0x42800008; - data[42] = 0x7FE00008; - data[43] = 0x383FFFC8; - data[44] = 0xBBC10044; - data[45] = 0x8001004C; - data[46] = 0x7C0803A6; - data[47] = 0x38210050; - data[48] = 0x4E800020; - data[49] = 0x9421FFB8; - data[50] = 0x7C0802A6; - data[51] = 0x90010044; - data[52] = 0xBFA10038; - data[53] = 0x3BE10038; - data[54] = 0x90410014; - data[55] = 0x3BC30000; - data[56] = 0x3BA40000; - data[57] = 0x4BFFFFA1; - data[58] = 0x90620018; - data[59] = 0x81820018; - data[60] = 0x3C60000F; - data[61] = 0x38834240; - data[62] = 0x7CAC23D7; - data[63] = 0x40800008; - data[64] = 0x30A5FFFF; - data[65] = 0x90BE0000; - data[66] = 0x80C20018; - data[67] = 0x38E003E8; - data[68] = 0x7D063BD7; - data[69] = 0x40800008; - data[70] = 0x3108FFFF; - data[71] = 0x392003E8; - data[72] = 0x7D484BD6; - data[73] = 0x7D4A49D6; - data[74] = 0x7D4A4011; - data[75] = 0x40800008; - data[76] = 0x314A03E8; - data[77] = 0xB15D0000; - data[78] = 0x383FFFC8; - data[79] = 0xBBA10038; - data[80] = 0x80010044; - data[81] = 0x7C0803A6; - data[82] = 0x38210048; - data[83] = 0x4E800020; - data[84] = 0x9421FF98; - data[85] = 0xBF21004C; - data[86] = 0x3BE10038; - data[87] = 0x3BC30000; - data[88] = 0x3BA40000; - data[89] = 0x3B7E0000; - data[90] = 0x3B800000; - data[91] = 0x7C9BE800; - data[92] = 0x40840070; - data[93] = 0xA33B0000; - data[94] = 0x7F9CCB78; - data[95] = 0x3B40000F; - data[96] = 0x578B0001; - data[97] = 0x4182000C; - data[98] = 0x6B8C8000; - data[99] = 0x6D9C0810; - data[100] = 0x57830801; - add(baseAddr, data, length); - bdi.fastDownload(data, length); - length = 101; - data[0] = 0x4182000C; - data[1] = 0x6B844000; - data[2] = 0x6C9C0408; - data[3] = 0x57851001; - data[4] = 0x4182000C; - data[5] = 0x6B862000; - data[6] = 0x6CDC0204; - data[7] = 0x579C1838; - data[8] = 0x335AFFFD; - data[9] = 0x2F1A0000; - data[10] = 0x409AFFC4; - data[11] = 0x57870001; - data[12] = 0x41820010; - data[13] = 0x5788083C; - data[14] = 0x6D1C1021; - data[15] = 0x42800008; - data[16] = 0x579C083C; - data[17] = 0x337B0002; - data[18] = 0x4280FF90; - data[19] = 0x3B400010; - data[20] = 0x57890001; - data[21] = 0x41820010; - data[22] = 0x578A083C; - data[23] = 0x6D5C1021; - data[24] = 0x42800008; - data[25] = 0x579C083C; - data[26] = 0x335AFFFF; - data[27] = 0x2F9A0000; - data[28] = 0x409EFFE0; - data[29] = 0x578B843E; - data[30] = 0x386B0000; - data[31] = 0x42800008; - data[32] = 0x7FE00008; - data[33] = 0x383FFFC8; - data[34] = 0xBB21004C; - data[35] = 0x38210068; - data[36] = 0x4E800020; - data[37] = 0x9421FFC0; - data[38] = 0xBFE1003C; - data[39] = 0x3BE10038; - data[40] = 0x42800000; - data[41] = 0x383FFFC8; - data[42] = 0xBBE1003C; - data[43] = 0x38210040; - data[44] = 0x4E800020; - data[45] = 0x9421FFB8; - data[46] = 0x7C0802A6; - data[47] = 0x90010044; - data[48] = 0xBFA10038; - data[49] = 0x3BE10038; - data[50] = 0x90410014; - data[51] = 0x3BC30000; - data[52] = 0x3BA40000; - data[53] = 0x2C9E027E; - data[54] = 0x40860014; - data[55] = 0x2F1D0800; - data[56] = 0x409A000C; - data[57] = 0x3BC00800; - data[58] = 0x7FDE9BA6; - data[59] = 0x2F9E009E; - data[60] = 0x409E000C; - data[61] = 0x3BDD0000; - data[62] = 0x7FDE23A6; - data[63] = 0x383FFFC8; - data[64] = 0xBBA10038; - data[65] = 0x80010044; - data[66] = 0x7C0803A6; - data[67] = 0x38210048; - data[68] = 0x4E800020; - data[69] = 0x9421FF38; - data[70] = 0x7C0802A6; - data[71] = 0x900100C4; - data[72] = 0xBDE10080; - data[73] = 0x3BE10038; - data[74] = 0x90410014; - data[75] = 0x3D800030; - data[76] = 0x386CC000; - data[77] = 0x3C800004; - data[78] = 0x90830000; - data[79] = 0x3CA00030; - data[80] = 0x38C5C284; - data[81] = 0x3CE00090; - data[82] = 0x90E60000; - data[83] = 0x3D000030; - data[84] = 0x3928C284; - data[85] = 0x82090000; - data[86] = 0x560A7801; - data[87] = 0x4182FFF0; - data[88] = 0x3D600030; - data[89] = 0x398B7F80; - data[90] = 0x38600000; - data[91] = 0x906C0000; - data[92] = 0x3860009E; - data[93] = 0x38800007; - data[94] = 0x4BFFFF3D; - data[95] = 0x3C800030; - data[96] = 0x38A4C100; - data[97] = 0x3CC00100; - data[98] = 0x38E60003; - data[99] = 0x90E50000; - data[100] = 0x3D000030; - add(baseAddr, data, length); - bdi.fastDownload(data, length); - length = 54; - data[0] = 0x3928C104; - data[1] = 0x3D40FFC0; - data[2] = 0x396A0020; - data[3] = 0x91690000; - data[4] = 0x3D800030; - data[5] = 0x386CC108; - data[6] = 0x3C800080; - data[7] = 0x38A40003; - data[8] = 0x90A30000; - data[9] = 0x3CC00030; - data[10] = 0x38E6C10C; - data[11] = 0x3D00FFE0; - data[12] = 0x39280020; - data[13] = 0x91270000; - data[14] = 0x3D400030; - data[15] = 0x396AC03C; - data[16] = 0x39800000; - data[17] = 0xB18B0000; - data[18] = 0x3C600030; - data[19] = 0x3883C280; - data[20] = 0x3CA08121; - data[21] = 0x38C50300; - data[22] = 0x90C40000; - data[23] = 0x3CE00030; - data[24] = 0x3907C200; - data[25] = 0x39200001; - data[26] = 0xB1280000; - data[27] = 0x3D400030; - data[28] = 0x396AC288; - data[29] = 0xA1EB0000; - data[30] = 0x55ECD001; - data[31] = 0x4082000C; - data[32] = 0x55E38001; - data[33] = 0x4182008C; - data[34] = 0x3C800030; - data[35] = 0x38A4C004; - data[36] = 0x38C0FF83; - data[37] = 0x90C50000; - data[38] = 0x3CE00030; - data[39] = 0x3907C140; - data[40] = 0x39200001; - data[41] = 0x91280000; - data[42] = 0x3D400030; - data[43] = 0x396AC144; - data[44] = 0x3D807E00; - data[45] = 0x918B0000; - data[46] = 0x3C600100; - data[47] = 0x38832010; - data[48] = 0x82240000; - data[49] = 0x3CA00040; - data[50] = 0x38C59800; - data[51] = 0x3CE00100; - data[52] = 0x39072000; - data[53] = 0x3926FFFC; - add(baseAddr, data, length); - bdi.fastDownload(data, length); - bdi.stopFastDownload(); - baseAddr = 0x3F9FF0; - bdi.startFastDownload(baseAddr); - length = 101; - data[0] = 0x3948FFFC; - data[1] = 0x562BE8FF; - data[2] = 0x7D6903A6; - data[3] = 0x562C077E; - data[4] = 0x7D8103A6; - data[5] = 0x41820018; - data[6] = 0x856A0004; - data[7] = 0x858A0004; - data[8] = 0x95690004; - data[9] = 0x95890004; - data[10] = 0x4200FFF0; - data[11] = 0x38600004; - data[12] = 0x7D63542A; - data[13] = 0x7D634D2A; - data[14] = 0x3C800040; - data[15] = 0x3BC49814; - data[16] = 0x83DE0000; - data[17] = 0x3CBE0040; - data[18] = 0x3BC59808; - data[19] = 0x3A600000; - data[20] = 0x38C00000; - data[21] = 0x90C20000; - data[22] = 0x83BE0000; - data[23] = 0x2C9D0000; - data[24] = 0x40860008; - data[25] = 0x42800184; - data[26] = 0x825D0000; - data[27] = 0x30F20001; - data[28] = 0x54E8103A; - data[29] = 0x7F7D4214; - data[30] = 0x82DB0010; - data[31] = 0x833B001C; - data[32] = 0x387D0000; - data[33] = 0x7C9DCA14; - data[34] = 0x4BFFFCC9; - data[35] = 0x2F030000; - data[36] = 0x419A0014; - data[37] = 0x38600008; - data[38] = 0x38800010; - data[39] = 0x4BFFFB65; - data[40] = 0x4280FFF4; - data[41] = 0x839B0020; - data[42] = 0x833B0024; - data[43] = 0x387C0000; - data[44] = 0x7C9CCA14; - data[45] = 0x4BFFFC9D; - data[46] = 0x2F830000; - data[47] = 0x419E0020; - data[48] = 0x38600010; - data[49] = 0x38800008; - data[50] = 0x4BFFFB39; - data[51] = 0x38600004; - data[52] = 0x38800040; - data[53] = 0x4BFFFB2D; - data[54] = 0x4280FFE8; - data[55] = 0x835B0008; - data[56] = 0x833B000C; - data[57] = 0x831B0028; - data[58] = 0x3938FFFC; - data[59] = 0x395AFFFC; - data[60] = 0x572BE8FF; - data[61] = 0x7D6903A6; - data[62] = 0x572C077E; - data[63] = 0x7D8103A6; - data[64] = 0x41820018; - data[65] = 0x856A0004; - data[66] = 0x858A0004; - data[67] = 0x95690004; - data[68] = 0x95890004; - data[69] = 0x4200FFF0; - data[70] = 0x38600004; - data[71] = 0x7D63542A; - data[72] = 0x7D634D2A; - data[73] = 0x82FB0030; - data[74] = 0x3AB70000; - data[75] = 0x829B0034; - data[76] = 0x7E94AA14; - data[77] = 0x7C95A000; - data[78] = 0x40840014; - data[79] = 0x38800000; - data[80] = 0x90950000; - data[81] = 0x32B50004; - data[82] = 0x4280FFEC; - data[83] = 0x2F130000; - data[84] = 0x419A0070; - data[85] = 0x38BF0040; - data[86] = 0x92C50000; - data[87] = 0x38DF0040; - data[88] = 0x92E60004; - data[89] = 0x801F0040; - data[90] = 0x7C0903A6; - data[91] = 0x805F0044; - data[92] = 0x4E800421; - data[93] = 0x80410014; - data[94] = 0x2F930002; - data[95] = 0x409E0040; - data[96] = 0x3CE00030; - data[97] = 0x3907C018; - data[98] = 0x3D20FFFF; - data[99] = 0x91280000; - data[100] = 0x3D400030; - add(baseAddr, data, length); - bdi.fastDownload(data, length); - length = 46; - data[0] = 0x396AC010; - data[1] = 0x3D80FFFF; - data[2] = 0x918B0000; - data[3] = 0x3C600030; - data[4] = 0x3883C014; - data[5] = 0x3CA0FFFF; - data[6] = 0x90A40000; - data[7] = 0x7E0000A6; - data[8] = 0x62108000; - data[9] = 0x7E000124; - data[10] = 0x42800014; - data[11] = 0x3CC00040; - data[12] = 0x38E69E18; - data[13] = 0x90E20010; - data[14] = 0x90420014; - data[15] = 0x81020000; - data[16] = 0x31280001; - data[17] = 0x91220000; - data[18] = 0x32730001; - data[19] = 0x33DE0004; - data[20] = 0x4280FE74; - data[21] = 0x383FFFC8; - data[22] = 0xB9E10080; - data[23] = 0x800100C4; - data[24] = 0x7C0803A6; - data[25] = 0x382100C8; - data[26] = 0x4E800020; - data[27] = 0x9421FFC0; - data[28] = 0x7C0802A6; - data[29] = 0x9001003C; - data[30] = 0xBFE10038; - data[31] = 0x3BE10038; - data[32] = 0x90410014; - data[33] = 0x4BFFFC91; - data[34] = 0x80020010; - data[35] = 0x7C0903A6; - data[36] = 0x80420014; - data[37] = 0x4E800421; - data[38] = 0x80410014; - data[39] = 0x383FFFC8; - data[40] = 0xBBE10038; - data[41] = 0x8001003C; - data[42] = 0x7C0803A6; - data[43] = 0x38210040; - data[44] = 0x4E800020; - data[45] = 0xECF41B66; - add(baseAddr, data, length); - bdi.fastDownload(data, length); - bdi.stopFastDownload(); - baseAddr = 0x3F9914; - bdi.startFastDownload(baseAddr); - length = 101; - data[0] = 0x0; - data[1] = 0x3F9950; - data[2] = 0x3F9994; - data[3] = 0x3F9974; - data[4] = 0x18; - data[5] = 0x3FA6A0; - data[6] = 0x0; - data[7] = 0x3F9914; - data[8] = 0x1B8; - data[9] = 0x3FA23C; - data[10] = 0x49C; - data[11] = 0x3FA708; - data[12] = 0x18; - data[13] = 0x3FA720; - data[14] = 0x440; - data[15] = 0x9; - data[16] = 0x546F7070; - data[17] = 0x63486561; - data[18] = 0x70000000; - data[19] = 0x0; - data[20] = 0x0; - data[21] = 0x0; - data[22] = 0x0; - data[23] = 0x0; - data[24] = 0x0; - data[25] = 0x0; - data[26] = 0x3FA6E0; - data[27] = 0x3F9A6C; - data[28] = 0x3F99FC; - data[29] = 0x3F9994; - data[30] = 0xF; - data[31] = 0xF; - data[32] = 0x4; - data[33] = 0x0; - data[34] = 0x0; - data[35] = 0xC; - data[36] = 0x3F9914; - data[37] = 0x3F9950; - data[38] = 0x3F99D8; - data[39] = 0x3F99FC; - data[40] = 0x3F9994; - data[41] = 0x0; - data[42] = 0x0; - data[43] = 0x0; - data[44] = 0x0; - data[45] = 0x0; - data[46] = 0x0; - data[47] = 0x0; - data[48] = 0xC0; - data[49] = 0x12; - data[50] = 0x54797065; - data[51] = 0x44657363; - data[52] = 0x72697074; - data[53] = 0x6F724465; - data[54] = 0x73630000; - data[55] = 0x0; - data[56] = 0xF; - data[57] = 0xF; - data[58] = 0x10; - data[59] = 0x0; - data[60] = 0x0; - data[61] = 0x8; - data[62] = 0x3F9914; - data[63] = 0x3F9950; - data[64] = 0x3F9A4C; - data[65] = 0x3F9A6C; - data[66] = 0x3F99FC; - data[67] = 0x0; - data[68] = 0x0; - data[69] = 0x0; - data[70] = 0x0; - data[71] = 0x0; - data[72] = 0x0; - data[73] = 0x0; - data[74] = 0x0; - data[75] = 0x8; - data[76] = 0xC; - data[77] = 0xB4; - data[78] = 0xD; - data[79] = 0x46726565; - data[80] = 0x426C6F63; - data[81] = 0x6B446573; - data[82] = 0x63000000; - data[83] = 0x0; - data[84] = 0xF; - data[85] = 0xF; - data[86] = 0x8; - data[87] = 0x0; - data[88] = 0x0; - data[89] = 0x4; - data[90] = 0x3F9914; - data[91] = 0x3F9950; - data[92] = 0x3F9AB4; - data[93] = 0x0; - data[94] = 0x3F9A6C; - data[95] = 0x0; - data[96] = 0x0; - data[97] = 0x0; - data[98] = 0x0; - data[99] = 0x0; - data[100] = 0x0; - add(baseAddr, data, length); - bdi.fastDownload(data, length); - length = 9; - data[0] = 0x0; - data[1] = 0x0; - data[2] = 0xBC; - data[3] = 0x9; - data[4] = 0x426C6F63; - data[5] = 0x6B446573; - data[6] = 0x63000000; - data[7] = 0x0; - data[8] = 0xEA187BE9; - add(baseAddr, data, length); - bdi.fastDownload(data, length); - bdi.stopFastDownload(); - baseAddr = 0x3FA23C; - bdi.startFastDownload(baseAddr); - length = 101; - data[0] = 0x9421FF90; - data[1] = 0x7C000026; - data[2] = 0x9001006C; - data[3] = 0xBF210050; - data[4] = 0x3BE10038; - data[5] = 0x3BC30000; - data[6] = 0x3BA00000; - data[7] = 0x3B800000; - data[8] = 0x7FD92670; - data[9] = 0x2C990009; - data[10] = 0x40850008; - data[11] = 0x3B200009; - data[12] = 0xCB9000A; - data[13] = 0x5723103A; - data[14] = 0x7C821A14; - data[15] = 0x83A40414; - data[16] = 0x2F1D0000; - data[17] = 0x409A0024; - data[18] = 0x2F990009; - data[19] = 0x409C001C; - data[20] = 0x33390001; - data[21] = 0xCB9000A; - data[22] = 0x5725103A; - data[23] = 0x7CC22A14; - data[24] = 0x83A60414; - data[25] = 0x4280FFDC; - data[26] = 0x2C9E0080; - data[27] = 0x40850044; - data[28] = 0x2F1D0000; - data[29] = 0x419A003C; - data[30] = 0x4E600182; - data[31] = 0x41930034; - data[32] = 0xE9D0000; - data[33] = 0x80FD0004; - data[34] = 0x7F9E3800; - data[35] = 0x409D0010; - data[36] = 0xE9D0000; - data[37] = 0x83BD0008; - data[38] = 0x42800008; - data[39] = 0x4E600242; - data[40] = 0x2C9D0000; - data[41] = 0x40860008; - data[42] = 0x4E600242; - data[43] = 0x4280FFD0; - data[44] = 0x2F1D0000; - data[45] = 0x409A0008; - data[46] = 0x42800000; - data[47] = 0xE9D0000; - data[48] = 0x811D000C; - data[49] = 0x2F880000; - data[50] = 0x409E0020; - data[51] = 0xCB9000A; - data[52] = 0x5729103A; - data[53] = 0x7D424A14; - data[54] = 0xE9D0000; - data[55] = 0x817D0008; - data[56] = 0x916A0414; - data[57] = 0x4280001C; - data[58] = 0xE9D0000; - data[59] = 0x819D000C; - data[60] = 0xE8C0000; - data[61] = 0xE9D0000; - data[62] = 0x807D0008; - data[63] = 0x906C0008; - data[64] = 0xE9D0000; - data[65] = 0x809D0008; - data[66] = 0x2C840000; - data[67] = 0x4186001C; - data[68] = 0xE9D0000; - data[69] = 0x80BD0008; - data[70] = 0xE850000; - data[71] = 0xE9D0000; - data[72] = 0x80DD000C; - data[73] = 0x90C5000C; - data[74] = 0xE9D0000; - data[75] = 0x837D0004; - data[76] = 0x80E2000C; - data[77] = 0x7D1B3810; - data[78] = 0x9102000C; - data[79] = 0x7F5ED810; - data[80] = 0x7F592670; - data[81] = 0x2F190000; - data[82] = 0x4099008C; - data[83] = 0x8122000C; - data[84] = 0x7D49D214; - data[85] = 0x9142000C; - data[86] = 0x2F990009; - data[87] = 0x409D0008; - data[88] = 0x3B200009; - data[89] = 0x7D7DF214; - data[90] = 0x3B8B0000; - data[91] = 0xE9C0000; - data[92] = 0x319C0004; - data[93] = 0x919C0000; - data[94] = 0xE9C0000; - data[95] = 0x935C0004; - data[96] = 0xE9C0000; - data[97] = 0xCB9000A; - data[98] = 0x5723103A; - data[99] = 0x7C821A14; - data[100] = 0x80A40414; - add(baseAddr, data, length); - bdi.fastDownload(data, length); - length = 101; - data[0] = 0x90BC0008; - data[1] = 0xE9C0000; - data[2] = 0x80DC0008; - data[3] = 0x2C860000; - data[4] = 0x41860014; - data[5] = 0xE9C0000; - data[6] = 0x80FC0008; - data[7] = 0xE870000; - data[8] = 0x9387000C; - data[9] = 0xE9C0000; - data[10] = 0x39000000; - data[11] = 0x911C000C; - data[12] = 0xCB9000A; - data[13] = 0x5729103A; - data[14] = 0x7D424A14; - data[15] = 0x938A0414; - data[16] = 0x387D0000; - data[17] = 0x42800008; - data[18] = 0x7FE00008; - data[19] = 0x383FFFC8; - data[20] = 0xBB210050; - data[21] = 0x8001006C; - data[22] = 0x7C0FF120; - data[23] = 0x38210070; - data[24] = 0x4E800020; - data[25] = 0x9421FF90; - data[26] = 0x7C0802A6; - data[27] = 0x9001006C; - data[28] = 0xBF410054; - data[29] = 0x3BE10038; - data[30] = 0x90410014; - data[31] = 0x3B800000; - data[32] = 0x3BC30000; - data[33] = 0x317E0004; - data[34] = 0x318B0010; - data[35] = 0x306CFFFF; - data[36] = 0x54640036; - data[37] = 0x3BC40000; - data[38] = 0x387E0000; - data[39] = 0x4BFFFDD1; - data[40] = 0x3B830000; - data[41] = 0xE9C0000; - data[42] = 0x3CA055AA; - data[43] = 0x38C555AA; - data[44] = 0x90DC0000; - data[45] = 0xE9C0000; - data[46] = 0x3B7C0004; - data[47] = 0x3BA00000; - data[48] = 0x335EFFF8; - data[49] = 0x7F1DD000; - data[50] = 0x41990014; - data[51] = 0x38E00000; - data[52] = 0x7CFBE92E; - data[53] = 0x33BD0004; - data[54] = 0x4280FFEC; - data[55] = 0x387B0000; - data[56] = 0x383FFFC8; - data[57] = 0xBB410054; - data[58] = 0x8001006C; - data[59] = 0x7C0803A6; - data[60] = 0x38210070; - data[61] = 0x4E800020; - data[62] = 0x9421FF90; - data[63] = 0x7C0802A6; - data[64] = 0x9001006C; - data[65] = 0xBF210050; - data[66] = 0x3BE10038; - data[67] = 0x90410014; - data[68] = 0x3BC00000; - data[69] = 0x3B600000; - data[70] = 0x3BC30000; - data[71] = 0xE9E0000; - data[72] = 0x811E0000; - data[73] = 0x31280004; - data[74] = 0x31490010; - data[75] = 0x316AFFFF; - data[76] = 0x556C0036; - data[77] = 0x3BAC0000; - data[78] = 0x387D0000; - data[79] = 0x4BFFFD31; - data[80] = 0x3B630000; - data[81] = 0xE9B0000; - data[82] = 0x93DB0000; - data[83] = 0xE9B0000; - data[84] = 0x3B5B0004; - data[85] = 0x3B800000; - data[86] = 0x333DFFF8; - data[87] = 0x7F9CC800; - data[88] = 0x419D0014; - data[89] = 0x38600000; - data[90] = 0x7C7AE12E; - data[91] = 0x339C0004; - data[92] = 0x4280FFEC; - data[93] = 0x387A0000; - data[94] = 0x383FFFC8; - data[95] = 0xBB210050; - data[96] = 0x8001006C; - data[97] = 0x7C0803A6; - data[98] = 0x38210070; - data[99] = 0x4E800020; - data[100] = 0x9421FFC0; - add(baseAddr, data, length); - bdi.fastDownload(data, length); - length = 54; - data[0] = 0xBFE1003C; - data[1] = 0x3BE10038; - data[2] = 0x383FFFC8; - data[3] = 0xBBE1003C; - data[4] = 0x38210040; - data[5] = 0x4E800020; - data[6] = 0x9421FF60; - data[7] = 0xBE61006C; - data[8] = 0x3BE10038; - data[9] = 0x3A600000; - data[10] = 0x3C800040; - data[11] = 0x38A49824; - data[12] = 0x82C50000; - data[13] = 0x3CD60040; - data[14] = 0x38E69800; - data[15] = 0x81070004; - data[16] = 0x91020004; - data[17] = 0x3D360040; - data[18] = 0x39499800; - data[19] = 0x816A0008; - data[20] = 0x91620000; - data[21] = 0x82A20004; - data[22] = 0x81820004; - data[23] = 0x80620000; - data[24] = 0x7E8C1A14; - data[25] = 0x38800000; - data[26] = 0x90950000; - data[27] = 0x32B50004; - data[28] = 0x7C95A000; - data[29] = 0x4184FFF0; - data[30] = 0x80A20000; - data[31] = 0x54A6073E; - data[32] = 0x80E20000; - data[33] = 0x7D063810; - data[34] = 0x91020000; - data[35] = 0x81220004; - data[36] = 0x81420000; - data[37] = 0x7D695214; - data[38] = 0x91620008; - data[39] = 0x81820000; - data[40] = 0x9182000C; - data[41] = 0x3BC00000; - data[42] = 0x2F1E0009; - data[43] = 0x41990020; - data[44] = 0xCBE000A; - data[45] = 0x57C3103A; - data[46] = 0x7C821A14; - data[47] = 0x38A00000; - data[48] = 0x90A40414; - data[49] = 0x33DE0001; - data[50] = 0x4280FFE0; - data[51] = 0x82620004; - data[52] = 0xE930000; - data[53] = 0xE930000; - add(baseAddr, data, length); - bdi.fastDownload(data, length); - bdi.stopFastDownload(); - baseAddr = 0x3FA63C; - bdi.startFastDownload(baseAddr); - length = 39; - data[0] = 0x38D30004; - data[1] = 0x90D30000; - data[2] = 0xE930000; - data[3] = 0x80E20000; - data[4] = 0x90F30004; - data[5] = 0xE930000; - data[6] = 0x39000000; - data[7] = 0x91130008; - data[8] = 0xE930000; - data[9] = 0x81330004; - data[10] = 0x7D3E2670; - data[11] = 0x2F9E0009; - data[12] = 0x409D0008; - data[13] = 0x3BC00009; - data[14] = 0xCBE000A; - data[15] = 0x57CA103A; - data[16] = 0x7D625214; - data[17] = 0x926B0414; - data[18] = 0xE930000; - data[19] = 0x39800000; - data[20] = 0x9193000C; - data[21] = 0x383FFFC8; - data[22] = 0xBA61006C; - data[23] = 0x382100A0; - data[24] = 0x4E800020; - data[25] = 0x9421FFC0; - data[26] = 0x7C0802A6; - data[27] = 0x9001003C; - data[28] = 0xBFE10038; - data[29] = 0x3BE10038; - data[30] = 0x90410014; - data[31] = 0x4BFFFEC5; - data[32] = 0x383FFFC8; - data[33] = 0xBBE10038; - data[34] = 0x8001003C; - data[35] = 0x7C0803A6; - data[36] = 0x38210040; - data[37] = 0x4E800020; - data[38] = 0x340DD8B; - add(baseAddr, data, length); - bdi.fastDownload(data, length); - bdi.stopFastDownload(); - baseAddr = 0x3F9ACC; - bdi.startFastDownload(baseAddr); - length = 73; - data[0] = 0x10; - data[1] = 0x3FABA0; - data[2] = 0x3FABA4; - data[3] = 0x3FABA8; - data[4] = 0x3FABAC; - data[5] = 0x3FABB0; - data[6] = 0x3FABB4; - data[7] = 0x3FABB8; - data[8] = 0x3FABBC; - data[9] = 0x3FABC0; - data[10] = 0x3FABC4; - data[11] = 0x3FABC8; - data[12] = 0x3FABCC; - data[13] = 0x3FABD0; - data[14] = 0x3FABD4; - data[15] = 0x3FABD8; - data[16] = 0x3FABDC; - data[17] = 0x3F9B48; - data[18] = 0x3F9B8C; - data[19] = 0x3F9B6C; - data[20] = 0x10; - data[21] = 0x1FBC; - data[22] = 0x0; - data[23] = 0x3F9ACC; - data[24] = 0x124; - data[25] = 0x0; - data[26] = 0x1FF4; - data[27] = 0x3FAB60; - data[28] = 0x10; - data[29] = 0x3FAB70; - data[30] = 0x70; - data[31] = 0xF; - data[32] = 0x546F7070; - data[33] = 0x63457863; - data[34] = 0x65707469; - data[35] = 0x6F6E7300; - data[36] = 0x0; - data[37] = 0x0; - data[38] = 0x0; - data[39] = 0x0; - data[40] = 0x0; - data[41] = 0x3FA720; - data[42] = 0x3FA6E0; - data[43] = 0x3F9B8C; - data[44] = 0x0; - data[45] = 0x3FAB70; - data[46] = 0xF; - data[47] = 0xF; - data[48] = 0x14; - data[49] = 0x0; - data[50] = 0x1; - data[51] = 0xC; - data[52] = 0x3F9ACC; - data[53] = 0x3F9B48; - data[54] = 0x3F9BD4; - data[55] = 0x0; - data[56] = 0x3F9B8C; - data[57] = 0x0; - data[58] = 0x0; - data[59] = 0x0; - data[60] = 0x0; - data[61] = 0x0; - data[62] = 0x0; - data[63] = 0x0; - data[64] = 0x10; - data[65] = 0xBC; - data[66] = 0xD; - data[67] = 0x496E7465; - data[68] = 0x72727570; - data[69] = 0x74446573; - data[70] = 0x63000000; - data[71] = 0x0; - data[72] = 0xEBD013B6; - add(baseAddr, data, length); - bdi.fastDownload(data, length); - bdi.stopFastDownload(); - baseAddr = 0x0; - bdi.startFastDownload(baseAddr); - length = 101; - data[0] = 0x9421FFC0; - data[1] = 0xBFC10038; - data[2] = 0x3BE10038; - data[3] = 0x3BC30000; - data[4] = 0x80620008; - data[5] = 0x30830001; - data[6] = 0x90820008; - data[7] = 0x383FFFC8; - data[8] = 0xBBC10038; - data[9] = 0x38210040; - data[10] = 0x4E800020; - data[11] = 0x9421FFB0; - data[12] = 0xBF810040; - data[13] = 0x3BE10038; - data[14] = 0x3BC30000; - data[15] = 0x3BA40000; - data[16] = 0x3CA00030; - data[17] = 0x38C56102; - data[18] = 0x38E08000; - data[19] = 0xB0E60000; - data[20] = 0x2C9E0000; - data[21] = 0x4085004C; - data[22] = 0x3D000030; - data[23] = 0x39286100; - data[24] = 0x39400000; - data[25] = 0xB1490000; - data[26] = 0x1F9D2710; - data[27] = 0x339CFFFF; - data[28] = 0x2F1C0000; - data[29] = 0x4199FFF8; - data[30] = 0x3D600030; - data[31] = 0x398B6100; - data[32] = 0x38608000; - data[33] = 0xB06C0000; - data[34] = 0x1F9D2710; - data[35] = 0x339CFFFF; - data[36] = 0x2F9C0000; - data[37] = 0x419DFFF8; - data[38] = 0x33DEFFFF; - data[39] = 0x4280FFB4; - data[40] = 0x383FFFC8; - data[41] = 0xBB810040; - data[42] = 0x38210050; - data[43] = 0x4E800020; - data[44] = 0x0; - data[45] = 0x0; - data[46] = 0x9421FF24; - data[47] = 0x900100C0; - data[48] = 0x7C1A02A6; - data[49] = 0x900100C4; - data[50] = 0x7C1B02A6; - data[51] = 0x900100C8; - data[52] = 0x7C1113A6; - data[53] = 0x7C0802A6; - data[54] = 0x900100D0; - data[55] = 0x7C000026; - data[56] = 0x900100D4; - data[57] = 0x7C0902A6; - data[58] = 0x900100D8; - data[59] = 0xBC410048; - data[60] = 0x3BE10038; - data[61] = 0x3C400040; - data[62] = 0x3842AB70; - data[63] = 0x90410014; - data[64] = 0x3C800040; - data[65] = 0x3824FFE0; - data[66] = 0x3CA00100; - data[67] = 0x38C52014; - data[68] = 0x83C60000; - data[69] = 0x3CFE0100; - data[70] = 0x39072000; - data[71] = 0x83A80008; - data[72] = 0x839D0000; - data[73] = 0x313D0004; - data[74] = 0x578A103A; - data[75] = 0x7D695214; - data[76] = 0x836B0030; - data[77] = 0x385B0000; - data[78] = 0x319D0004; - data[79] = 0x5783103A; - data[80] = 0x7C8C1A14; - data[81] = 0x83640010; - data[82] = 0x387B0000; - data[83] = 0x7C7A03A6; - data[84] = 0x38603802; - data[85] = 0x7C7B03A6; - data[86] = 0x4C000064; - data[87] = 0x383FFFC8; - data[88] = 0xB8410048; - data[89] = 0x800100D8; - data[90] = 0x7C0903A6; - data[91] = 0x800100D4; - data[92] = 0x7C0FF120; - data[93] = 0x800100D0; - data[94] = 0x7C0803A6; - data[95] = 0x800100C8; - data[96] = 0x7C1B03A6; - data[97] = 0x800100C4; - data[98] = 0x7C1A03A6; - data[99] = 0x800100C0; - data[100] = 0x382100DC; - add(baseAddr, data, length); - bdi.fastDownload(data, length); - length = 101; - data[0] = 0x4C000064; - data[1] = 0x0; - data[2] = 0x0; - data[3] = 0x0; - data[4] = 0x0; - data[5] = 0x0; - data[6] = 0x0; - data[7] = 0x0; - data[8] = 0x0; - data[9] = 0x0; - data[10] = 0x0; - data[11] = 0x0; - data[12] = 0x0; - data[13] = 0x0; - data[14] = 0x0; - data[15] = 0x0; - data[16] = 0x0; - data[17] = 0x0; - data[18] = 0x0; - data[19] = 0x0; - data[20] = 0x0; - data[21] = 0x0; - data[22] = 0x0; - data[23] = 0x0; - data[24] = 0x0; - data[25] = 0x0; - data[26] = 0x0; - data[27] = 0x9421FF34; - data[28] = 0x900100B0; - data[29] = 0x7C1A02A6; - data[30] = 0x900100B4; - data[31] = 0x7C1B02A6; - data[32] = 0x900100B8; - data[33] = 0x7C1113A6; - data[34] = 0x7C0802A6; - data[35] = 0x900100C0; - data[36] = 0x7C000026; - data[37] = 0x900100C4; - data[38] = 0x7C0902A6; - data[39] = 0x900100C8; - data[40] = 0xBC410038; - data[41] = 0x3BE10038; - data[42] = 0x3C400040; - data[43] = 0x3842AB70; - data[44] = 0x90410014; - data[45] = 0x80A20000; - data[46] = 0x30C50001; - data[47] = 0x90C20000; - data[48] = 0x38600010; - data[49] = 0x38800010; - data[50] = 0x4BFFFDD1; - data[51] = 0x4280FFF4; - data[52] = 0x383FFFC8; - data[53] = 0xB8410038; - data[54] = 0x800100C8; - data[55] = 0x7C0903A6; - data[56] = 0x800100C4; - data[57] = 0x7C0FF120; - data[58] = 0x800100C0; - data[59] = 0x7C0803A6; - data[60] = 0x800100B8; - data[61] = 0x7C1B03A6; - data[62] = 0x800100B4; - data[63] = 0x7C1A03A6; - data[64] = 0x800100B0; - data[65] = 0x382100CC; - data[66] = 0x4C000064; - data[67] = 0x0; - data[68] = 0x0; - data[69] = 0x0; - data[70] = 0x0; - data[71] = 0x0; - data[72] = 0x0; - data[73] = 0x0; - data[74] = 0x0; - data[75] = 0x0; - data[76] = 0x0; - data[77] = 0x0; - data[78] = 0x0; - data[79] = 0x0; - data[80] = 0x0; - data[81] = 0x0; - data[82] = 0x0; - data[83] = 0x0; - data[84] = 0x0; - data[85] = 0x0; - data[86] = 0x0; - data[87] = 0x0; - data[88] = 0x0; - data[89] = 0x0; - data[90] = 0x0; - data[91] = 0x9421FFA0; - data[92] = 0x7C0802A6; - data[93] = 0x9001005C; - data[94] = 0xBF610048; - data[95] = 0x3BE10038; - data[96] = 0x90410014; - data[97] = 0x3B800000; - data[98] = 0x3CE00030; - data[99] = 0x3907C010; - data[100] = 0xA3A80000; - add(baseAddr, data, length); - bdi.fastDownload(data, length); - length = 54; - data[0] = 0x3BC00010; - data[1] = 0x33DEFFFF; - data[2] = 0x7FC9F0F8; - data[3] = 0x5FA94801; - data[4] = 0x4182011C; - data[5] = 0x315E0001; - data[6] = 0x3960000F; - data[7] = 0x3D808000; - data[8] = 0x7D8C5E30; - data[9] = 0x7D8C5030; - data[10] = 0x5D8C583E; - data[11] = 0x558C083E; - data[12] = 0x3C600030; - data[13] = 0x3883C014; - data[14] = 0xB1840000; - data[15] = 0x7C1013A6; - data[16] = 0x20BE000F; - data[17] = 0xCA50010; - data[18] = 0x54A6103A; - data[19] = 0x7CE23214; - data[20] = 0x83870030; - data[21] = 0x57C8F801; - data[22] = 0x41820040; - data[23] = 0x387C0000; - data[24] = 0x8123FFFC; - data[25] = 0x8009FFF0; - data[26] = 0x7C0903A6; - data[27] = 0x8049FFF4; - data[28] = 0x4E800421; - data[29] = 0x80410014; - data[30] = 0x39400001; - data[31] = 0x7D4AF030; - data[32] = 0x3D600030; - data[33] = 0x398BC010; - data[34] = 0xB14C0000; - data[35] = 0x3BC00000; - data[36] = 0x4280009C; - data[37] = 0x42800094; - data[38] = 0xE9C0000; - data[39] = 0x807C0000; - data[40] = 0xA3630000; - data[41] = 0xE9C0000; - data[42] = 0x809C0004; - data[43] = 0x7C8520F8; - data[44] = 0x5F652801; - data[45] = 0x41820048; - data[46] = 0xE9C0000; - data[47] = 0x80DC0008; - data[48] = 0xA3660000; - data[49] = 0xE9C0000; - data[50] = 0x80FC000C; - data[51] = 0x7CE838F8; - data[52] = 0x5F684001; - data[53] = 0x41820028; - add(baseAddr, data, length); - bdi.fastDownload(data, length); - bdi.stopFastDownload(); - baseAddr = 0x400; - bdi.startFastDownload(baseAddr); - length = 101; - data[0] = 0x387C0000; - data[1] = 0x8123FFFC; - data[2] = 0x8009FFF0; - data[3] = 0x7C0903A6; - data[4] = 0x8049FFF4; - data[5] = 0x4E800421; - data[6] = 0x80410014; - data[7] = 0x3BC00000; - data[8] = 0x42800034; - data[9] = 0xE9C0000; - data[10] = 0x815C0010; - data[11] = 0x2C8A0000; - data[12] = 0x41860010; - data[13] = 0xE9C0000; - data[14] = 0x839C0010; - data[15] = 0x42800014; - data[16] = 0x81620008; - data[17] = 0x318B0001; - data[18] = 0x91820008; - data[19] = 0x42800008; - data[20] = 0x4280FF2C; - data[21] = 0x2F1E0000; - data[22] = 0x409AFED4; - data[23] = 0x383FFFC8; - data[24] = 0xBB610048; - data[25] = 0x8001005C; - data[26] = 0x7C0803A6; - data[27] = 0x38210060; - data[28] = 0x4E800020; - data[29] = 0x0; - data[30] = 0x0; - data[31] = 0x0; - data[32] = 0x0; - data[33] = 0x0; - data[34] = 0x0; - data[35] = 0x0; - data[36] = 0x0; - data[37] = 0x0; - data[38] = 0x0; - data[39] = 0x0; - data[40] = 0x0; - data[41] = 0x0; - data[42] = 0x0; - data[43] = 0x0; - data[44] = 0x0; - data[45] = 0x0; - data[46] = 0x0; - data[47] = 0x0; - data[48] = 0x0; - data[49] = 0x0; - data[50] = 0x0; - data[51] = 0x0; - data[52] = 0x0; - data[53] = 0x0; - data[54] = 0x0; - data[55] = 0x0; - data[56] = 0x0; - data[57] = 0x0; - data[58] = 0x0; - data[59] = 0x0; - data[60] = 0x0; - data[61] = 0x0; - data[62] = 0x0; - data[63] = 0x0; - data[64] = 0x9421FF28; - data[65] = 0x900100BC; - data[66] = 0x7C1A02A6; - data[67] = 0x900100C0; - data[68] = 0x7C1B02A6; - data[69] = 0x900100C4; - data[70] = 0x7C1113A6; - data[71] = 0x7C0802A6; - data[72] = 0x900100CC; - data[73] = 0x7C000026; - data[74] = 0x900100D0; - data[75] = 0x7C0902A6; - data[76] = 0x900100D4; - data[77] = 0xBC410044; - data[78] = 0x3BE10038; - data[79] = 0x3C400040; - data[80] = 0x3842AB70; - data[81] = 0x90410014; - data[82] = 0x80620004; - data[83] = 0x30830001; - data[84] = 0x90820004; - data[85] = 0x3CA00030; - data[86] = 0x38C5C014; - data[87] = 0xA3C60000; - data[88] = 0x4BFFFDA1; - data[89] = 0x7C1113A6; - data[90] = 0x3CE00030; - data[91] = 0x3907C014; - data[92] = 0xB3C80000; - data[93] = 0x383FFFC8; - data[94] = 0xB8410044; - data[95] = 0x800100D4; - data[96] = 0x7C0903A6; - data[97] = 0x800100D0; - data[98] = 0x7C0FF120; - data[99] = 0x800100CC; - data[100] = 0x7C0803A6; - add(baseAddr, data, length); - bdi.fastDownload(data, length); - length = 101; - data[0] = 0x800100C4; - data[1] = 0x7C1B03A6; - data[2] = 0x800100C0; - data[3] = 0x7C1A03A6; - data[4] = 0x800100BC; - data[5] = 0x382100D8; - data[6] = 0x4C000064; - data[7] = 0x0; - data[8] = 0x0; - data[9] = 0x0; - data[10] = 0x0; - data[11] = 0x0; - data[12] = 0x0; - data[13] = 0x0; - data[14] = 0x0; - data[15] = 0x0; - data[16] = 0x0; - data[17] = 0x0; - data[18] = 0x0; - data[19] = 0x0; - data[20] = 0x0; - data[21] = 0x0; - data[22] = 0x0; - data[23] = 0x0; - data[24] = 0x0; - data[25] = 0x0; - data[26] = 0x0; - data[27] = 0x9421FF34; - data[28] = 0x900100B0; - data[29] = 0x7C1A02A6; - data[30] = 0x900100B4; - data[31] = 0x7C1B02A6; - data[32] = 0x900100B8; - data[33] = 0x7C1113A6; - data[34] = 0x7C0802A6; - data[35] = 0x900100C0; - data[36] = 0x7C000026; - data[37] = 0x900100C4; - data[38] = 0x7C0902A6; - data[39] = 0x900100C8; - data[40] = 0xBC410038; - data[41] = 0x3BE10038; - data[42] = 0x3C400040; - data[43] = 0x3842AB70; - data[44] = 0x90410014; - data[45] = 0x8122000C; - data[46] = 0x31490001; - data[47] = 0x9142000C; - data[48] = 0x38600010; - data[49] = 0x38800010; - data[50] = 0x4BFFF9D1; - data[51] = 0x4280FFF4; - data[52] = 0x383FFFC8; - data[53] = 0xB8410038; - data[54] = 0x800100C8; - data[55] = 0x7C0903A6; - data[56] = 0x800100C4; - data[57] = 0x7C0FF120; - data[58] = 0x800100C0; - data[59] = 0x7C0803A6; - data[60] = 0x800100B8; - data[61] = 0x7C1B03A6; - data[62] = 0x800100B4; - data[63] = 0x7C1A03A6; - data[64] = 0x800100B0; - data[65] = 0x382100CC; - data[66] = 0x4C000064; - data[67] = 0x0; - data[68] = 0x0; - data[69] = 0x0; - data[70] = 0x0; - data[71] = 0x0; - data[72] = 0x0; - data[73] = 0x0; - data[74] = 0x0; - data[75] = 0x0; - data[76] = 0x0; - data[77] = 0x0; - data[78] = 0x0; - data[79] = 0x0; - data[80] = 0x0; - data[81] = 0x0; - data[82] = 0x0; - data[83] = 0x0; - data[84] = 0x0; - data[85] = 0x0; - data[86] = 0x0; - data[87] = 0x0; - data[88] = 0x0; - data[89] = 0x0; - data[90] = 0x0; - data[91] = 0x9421FF34; - data[92] = 0x900100B0; - data[93] = 0x7C1A02A6; - data[94] = 0x900100B4; - data[95] = 0x7C1B02A6; - data[96] = 0x900100B8; - data[97] = 0x7C1113A6; - data[98] = 0x7C0802A6; - data[99] = 0x900100C0; - data[100] = 0x7C000026; - add(baseAddr, data, length); - bdi.fastDownload(data, length); - length = 54; - data[0] = 0x900100C4; - data[1] = 0x7C0902A6; - data[2] = 0x900100C8; - data[3] = 0xBC410038; - data[4] = 0x3BE10038; - data[5] = 0x3C400040; - data[6] = 0x3842AB70; - data[7] = 0x90410014; - data[8] = 0x81620010; - data[9] = 0x318B0001; - data[10] = 0x91820010; - data[11] = 0x38600010; - data[12] = 0x38800010; - data[13] = 0x4BFFF8D1; - data[14] = 0x4280FFF4; - data[15] = 0x383FFFC8; - data[16] = 0xB8410038; - data[17] = 0x800100C8; - data[18] = 0x7C0903A6; - data[19] = 0x800100C4; - data[20] = 0x7C0FF120; - data[21] = 0x800100C0; - data[22] = 0x7C0803A6; - data[23] = 0x800100B8; - data[24] = 0x7C1B03A6; - data[25] = 0x800100B4; - data[26] = 0x7C1A03A6; - data[27] = 0x800100B0; - data[28] = 0x382100CC; - data[29] = 0x4C000064; - data[30] = 0x0; - data[31] = 0x0; - data[32] = 0x0; - data[33] = 0x0; - data[34] = 0x0; - data[35] = 0x0; - data[36] = 0x0; - data[37] = 0x0; - data[38] = 0x0; - data[39] = 0x0; - data[40] = 0x0; - data[41] = 0x0; - data[42] = 0x0; - data[43] = 0x0; - data[44] = 0x0; - data[45] = 0x0; - data[46] = 0x0; - data[47] = 0x0; - data[48] = 0x0; - data[49] = 0x0; - data[50] = 0x0; - data[51] = 0x0; - data[52] = 0x0; - data[53] = 0x0; - add(baseAddr, data, length); - bdi.fastDownload(data, length); - bdi.stopFastDownload(); - baseAddr = 0x800; - bdi.startFastDownload(baseAddr); - length = 101; - data[0] = 0x9421FF34; - data[1] = 0x900100B0; - data[2] = 0x7C1A02A6; - data[3] = 0x900100B4; - data[4] = 0x7C1B02A6; - data[5] = 0x900100B8; - data[6] = 0x7C1113A6; - data[7] = 0x7C0802A6; - data[8] = 0x900100C0; - data[9] = 0x7C000026; - data[10] = 0x900100C4; - data[11] = 0x7C0902A6; - data[12] = 0x900100C8; - data[13] = 0xBC410038; - data[14] = 0x3BE10038; - data[15] = 0x3C400040; - data[16] = 0x3842AB70; - data[17] = 0x90410014; - data[18] = 0x80620014; - data[19] = 0x30830001; - data[20] = 0x90820014; - data[21] = 0x38600010; - data[22] = 0x38800010; - data[23] = 0x4BFFF7D1; - data[24] = 0x4280FFF4; - data[25] = 0x383FFFC8; - data[26] = 0xB8410038; - data[27] = 0x800100C8; - data[28] = 0x7C0903A6; - data[29] = 0x800100C4; - data[30] = 0x7C0FF120; - data[31] = 0x800100C0; - data[32] = 0x7C0803A6; - data[33] = 0x800100B8; - data[34] = 0x7C1B03A6; - data[35] = 0x800100B4; - data[36] = 0x7C1A03A6; - data[37] = 0x800100B0; - data[38] = 0x382100CC; - data[39] = 0x4C000064; - data[40] = 0x0; - data[41] = 0x0; - data[42] = 0x0; - data[43] = 0x0; - data[44] = 0x0; - data[45] = 0x0; - data[46] = 0x0; - data[47] = 0x0; - data[48] = 0x0; - data[49] = 0x0; - data[50] = 0x0; - data[51] = 0x0; - data[52] = 0x0; - data[53] = 0x0; - data[54] = 0x0; - data[55] = 0x0; - data[56] = 0x0; - data[57] = 0x0; - data[58] = 0x0; - data[59] = 0x0; - data[60] = 0x0; - data[61] = 0x0; - data[62] = 0x0; - data[63] = 0x0; - data[64] = 0x9421FF28; - data[65] = 0x900100BC; - data[66] = 0x7C1A02A6; - data[67] = 0x900100C0; - data[68] = 0x7C1B02A6; - data[69] = 0x900100C4; - data[70] = 0x7C1113A6; - data[71] = 0x7C0802A6; - data[72] = 0x900100CC; - data[73] = 0x7C000026; - data[74] = 0x900100D0; - data[75] = 0x7C0902A6; - data[76] = 0x900100D4; - data[77] = 0xBC410044; - data[78] = 0x3BE10038; - data[79] = 0x3C400040; - data[80] = 0x3842AB70; - data[81] = 0x80A20018; - data[82] = 0x30C50001; - data[83] = 0x90C20018; - data[84] = 0x383FFFC8; - data[85] = 0xB8410044; - data[86] = 0x800100D4; - data[87] = 0x7C0903A6; - data[88] = 0x800100D0; - data[89] = 0x7C0FF120; - data[90] = 0x800100CC; - data[91] = 0x7C0803A6; - data[92] = 0x800100C4; - data[93] = 0x7C1B03A6; - data[94] = 0x800100C0; - data[95] = 0x7C1A03A6; - data[96] = 0x800100BC; - data[97] = 0x382100D8; - data[98] = 0x4C000064; - data[99] = 0x0; - data[100] = 0x0; - add(baseAddr, data, length); - bdi.fastDownload(data, length); - length = 101; - data[0] = 0x0; - data[1] = 0x0; - data[2] = 0x0; - data[3] = 0x0; - data[4] = 0x0; - data[5] = 0x0; - data[6] = 0x0; - data[7] = 0x0; - data[8] = 0x0; - data[9] = 0x0; - data[10] = 0x0; - data[11] = 0x0; - data[12] = 0x0; - data[13] = 0x0; - data[14] = 0x0; - data[15] = 0x0; - data[16] = 0x0; - data[17] = 0x0; - data[18] = 0x0; - data[19] = 0x0; - data[20] = 0x0; - data[21] = 0x0; - data[22] = 0x0; - data[23] = 0x0; - data[24] = 0x0; - data[25] = 0x0; - data[26] = 0x0; - data[27] = 0x0; - data[28] = 0x0; - data[29] = 0x0; - data[30] = 0x0; - data[31] = 0x0; - data[32] = 0x0; - data[33] = 0x0; - data[34] = 0x0; - data[35] = 0x0; - data[36] = 0x0; - data[37] = 0x0; - data[38] = 0x0; - data[39] = 0x0; - data[40] = 0x0; - data[41] = 0x0; - data[42] = 0x0; - data[43] = 0x0; - data[44] = 0x0; - data[45] = 0x0; - data[46] = 0x0; - data[47] = 0x0; - data[48] = 0x0; - data[49] = 0x0; - data[50] = 0x0; - data[51] = 0x0; - data[52] = 0x0; - data[53] = 0x0; - data[54] = 0x0; - data[55] = 0x0; - data[56] = 0x0; - data[57] = 0x0; - data[58] = 0x0; - data[59] = 0x0; - data[60] = 0x0; - data[61] = 0x0; - data[62] = 0x0; - data[63] = 0x0; - data[64] = 0x0; - data[65] = 0x0; - data[66] = 0x0; - data[67] = 0x0; - data[68] = 0x0; - data[69] = 0x0; - data[70] = 0x0; - data[71] = 0x0; - data[72] = 0x0; - data[73] = 0x0; - data[74] = 0x0; - data[75] = 0x0; - data[76] = 0x0; - data[77] = 0x0; - data[78] = 0x0; - data[79] = 0x0; - data[80] = 0x0; - data[81] = 0x0; - data[82] = 0x0; - data[83] = 0x0; - data[84] = 0x0; - data[85] = 0x0; - data[86] = 0x0; - data[87] = 0x0; - data[88] = 0x0; - data[89] = 0x0; - data[90] = 0x0; - data[91] = 0x0; - data[92] = 0x0; - data[93] = 0x0; - data[94] = 0x0; - data[95] = 0x0; - data[96] = 0x0; - data[97] = 0x0; - data[98] = 0x0; - data[99] = 0x0; - data[100] = 0x0; - add(baseAddr, data, length); - bdi.fastDownload(data, length); - length = 54; - data[0] = 0x0; - data[1] = 0x0; - data[2] = 0x0; - data[3] = 0x0; - data[4] = 0x0; - data[5] = 0x0; - data[6] = 0x0; - data[7] = 0x0; - data[8] = 0x0; - data[9] = 0x0; - data[10] = 0x0; - data[11] = 0x0; - data[12] = 0x0; - data[13] = 0x0; - data[14] = 0x0; - data[15] = 0x0; - data[16] = 0x0; - data[17] = 0x0; - data[18] = 0x0; - data[19] = 0x0; - data[20] = 0x0; - data[21] = 0x0; - data[22] = 0x0; - data[23] = 0x0; - data[24] = 0x0; - data[25] = 0x0; - data[26] = 0x0; - data[27] = 0x0; - data[28] = 0x0; - data[29] = 0x0; - data[30] = 0x0; - data[31] = 0x0; - data[32] = 0x0; - data[33] = 0x0; - data[34] = 0x0; - data[35] = 0x0; - data[36] = 0x0; - data[37] = 0x0; - data[38] = 0x0; - data[39] = 0x0; - data[40] = 0x0; - data[41] = 0x0; - data[42] = 0x0; - data[43] = 0x0; - data[44] = 0x0; - data[45] = 0x0; - data[46] = 0x0; - data[47] = 0x0; - data[48] = 0x0; - data[49] = 0x0; - data[50] = 0x0; - data[51] = 0x0; - data[52] = 0x0; - data[53] = 0x0; - add(baseAddr, data, length); - bdi.fastDownload(data, length); - bdi.stopFastDownload(); - baseAddr = 0xC00; - bdi.startFastDownload(baseAddr); - length = 101; - data[0] = 0x9421FF34; - data[1] = 0x900100B0; - data[2] = 0x7C1A02A6; - data[3] = 0x900100B4; - data[4] = 0x7C1B02A6; - data[5] = 0x900100B8; - data[6] = 0x7C1113A6; - data[7] = 0x7C0802A6; - data[8] = 0x900100C0; - data[9] = 0x7C000026; - data[10] = 0x900100C4; - data[11] = 0x7C0902A6; - data[12] = 0x900100C8; - data[13] = 0xBC410038; - data[14] = 0x3BE10038; - data[15] = 0x3C400040; - data[16] = 0x3842AB70; - data[17] = 0x90410014; - data[18] = 0x80E2001C; - data[19] = 0x31070001; - data[20] = 0x9102001C; - data[21] = 0x38600010; - data[22] = 0x38800010; - data[23] = 0x4BFFF3D1; - data[24] = 0x4280FFF4; - data[25] = 0x383FFFC8; - data[26] = 0xB8410038; - data[27] = 0x800100C8; - data[28] = 0x7C0903A6; - data[29] = 0x800100C4; - data[30] = 0x7C0FF120; - data[31] = 0x800100C0; - data[32] = 0x7C0803A6; - data[33] = 0x800100B8; - data[34] = 0x7C1B03A6; - data[35] = 0x800100B4; - data[36] = 0x7C1A03A6; - data[37] = 0x800100B0; - data[38] = 0x382100CC; - data[39] = 0x4C000064; - data[40] = 0x0; - data[41] = 0x0; - data[42] = 0x0; - data[43] = 0x0; - data[44] = 0x0; - data[45] = 0x0; - data[46] = 0x0; - data[47] = 0x0; - data[48] = 0x0; - data[49] = 0x0; - data[50] = 0x0; - data[51] = 0x0; - data[52] = 0x0; - data[53] = 0x0; - data[54] = 0x0; - data[55] = 0x0; - data[56] = 0x0; - data[57] = 0x0; - data[58] = 0x0; - data[59] = 0x0; - data[60] = 0x0; - data[61] = 0x0; - data[62] = 0x0; - data[63] = 0x0; - data[64] = 0x9421FF34; - data[65] = 0x900100B0; - data[66] = 0x7C1A02A6; - data[67] = 0x900100B4; - data[68] = 0x7C1B02A6; - data[69] = 0x900100B8; - data[70] = 0x7C1113A6; - data[71] = 0x7C0802A6; - data[72] = 0x900100C0; - data[73] = 0x7C000026; - data[74] = 0x900100C4; - data[75] = 0x7C0902A6; - data[76] = 0x900100C8; - data[77] = 0xBC410038; - data[78] = 0x3BE10038; - data[79] = 0x3C400040; - data[80] = 0x3842AB70; - data[81] = 0x90410014; - data[82] = 0x81220020; - data[83] = 0x31490001; - data[84] = 0x91420020; - data[85] = 0x38600010; - data[86] = 0x38800010; - data[87] = 0x4BFFF2D1; - data[88] = 0x4280FFF4; - data[89] = 0x383FFFC8; - data[90] = 0xB8410038; - data[91] = 0x800100C8; - data[92] = 0x7C0903A6; - data[93] = 0x800100C4; - data[94] = 0x7C0FF120; - data[95] = 0x800100C0; - data[96] = 0x7C0803A6; - data[97] = 0x800100B8; - data[98] = 0x7C1B03A6; - data[99] = 0x800100B4; - data[100] = 0x7C1A03A6; - add(baseAddr, data, length); - bdi.fastDownload(data, length); - length = 101; - data[0] = 0x800100B0; - data[1] = 0x382100CC; - data[2] = 0x4C000064; - data[3] = 0x0; - data[4] = 0x0; - data[5] = 0x0; - data[6] = 0x0; - data[7] = 0x0; - data[8] = 0x0; - data[9] = 0x0; - data[10] = 0x0; - data[11] = 0x0; - data[12] = 0x0; - data[13] = 0x0; - data[14] = 0x0; - data[15] = 0x0; - data[16] = 0x0; - data[17] = 0x0; - data[18] = 0x0; - data[19] = 0x0; - data[20] = 0x0; - data[21] = 0x0; - data[22] = 0x0; - data[23] = 0x0; - data[24] = 0x0; - data[25] = 0x0; - data[26] = 0x0; - data[27] = 0x9421FF34; - data[28] = 0x900100B0; - data[29] = 0x7C1A02A6; - data[30] = 0x900100B4; - data[31] = 0x7C1B02A6; - data[32] = 0x900100B8; - data[33] = 0x7C1113A6; - data[34] = 0x7C0802A6; - data[35] = 0x900100C0; - data[36] = 0x7C000026; - data[37] = 0x900100C4; - data[38] = 0x7C0902A6; - data[39] = 0x900100C8; - data[40] = 0xBC410038; - data[41] = 0x3BE10038; - data[42] = 0x3C400040; - data[43] = 0x3842AB70; - data[44] = 0x90410014; - data[45] = 0x81620024; - data[46] = 0x318B0001; - data[47] = 0x91820024; - data[48] = 0x38600010; - data[49] = 0x38800010; - data[50] = 0x4BFFF1D1; - data[51] = 0x4280FFF4; - data[52] = 0x383FFFC8; - data[53] = 0xB8410038; - data[54] = 0x800100C8; - data[55] = 0x7C0903A6; - data[56] = 0x800100C4; - data[57] = 0x7C0FF120; - data[58] = 0x800100C0; - data[59] = 0x7C0803A6; - data[60] = 0x800100B8; - data[61] = 0x7C1B03A6; - data[62] = 0x800100B4; - data[63] = 0x7C1A03A6; - data[64] = 0x800100B0; - data[65] = 0x382100CC; - data[66] = 0x4C000064; - data[67] = 0x0; - data[68] = 0x0; - data[69] = 0x0; - data[70] = 0x0; - data[71] = 0x0; - data[72] = 0x0; - data[73] = 0x0; - data[74] = 0x0; - data[75] = 0x0; - data[76] = 0x0; - data[77] = 0x0; - data[78] = 0x0; - data[79] = 0x0; - data[80] = 0x0; - data[81] = 0x0; - data[82] = 0x0; - data[83] = 0x0; - data[84] = 0x0; - data[85] = 0x0; - data[86] = 0x0; - data[87] = 0x0; - data[88] = 0x0; - data[89] = 0x0; - data[90] = 0x0; - data[91] = 0x0; - data[92] = 0x0; - data[93] = 0x0; - data[94] = 0x0; - data[95] = 0x0; - data[96] = 0x0; - data[97] = 0x0; - data[98] = 0x0; - data[99] = 0x0; - data[100] = 0x0; - add(baseAddr, data, length); - bdi.fastDownload(data, length); - length = 54; - data[0] = 0x0; - data[1] = 0x0; - data[2] = 0x0; - data[3] = 0x0; - data[4] = 0x0; - data[5] = 0x0; - data[6] = 0x0; - data[7] = 0x0; - data[8] = 0x0; - data[9] = 0x0; - data[10] = 0x0; - data[11] = 0x0; - data[12] = 0x0; - data[13] = 0x0; - data[14] = 0x0; - data[15] = 0x0; - data[16] = 0x0; - data[17] = 0x0; - data[18] = 0x0; - data[19] = 0x0; - data[20] = 0x0; - data[21] = 0x0; - data[22] = 0x0; - data[23] = 0x0; - data[24] = 0x0; - data[25] = 0x0; - data[26] = 0x0; - data[27] = 0x0; - data[28] = 0x0; - data[29] = 0x0; - data[30] = 0x0; - data[31] = 0x0; - data[32] = 0x0; - data[33] = 0x0; - data[34] = 0x0; - data[35] = 0x0; - data[36] = 0x0; - data[37] = 0x0; - data[38] = 0x0; - data[39] = 0x0; - data[40] = 0x0; - data[41] = 0x0; - data[42] = 0x0; - data[43] = 0x0; - data[44] = 0x0; - data[45] = 0x0; - data[46] = 0x0; - data[47] = 0x0; - data[48] = 0x0; - data[49] = 0x0; - data[50] = 0x0; - data[51] = 0x0; - data[52] = 0x0; - data[53] = 0x0; - add(baseAddr, data, length); - bdi.fastDownload(data, length); - bdi.stopFastDownload(); - baseAddr = 0x1000; - bdi.startFastDownload(baseAddr); - length = 101; - data[0] = 0x9421FF34; - data[1] = 0x900100B0; - data[2] = 0x7C1A02A6; - data[3] = 0x900100B4; - data[4] = 0x7C1B02A6; - data[5] = 0x900100B8; - data[6] = 0x7C1113A6; - data[7] = 0x7C0802A6; - data[8] = 0x900100C0; - data[9] = 0x7C000026; - data[10] = 0x900100C4; - data[11] = 0x7C0902A6; - data[12] = 0x900100C8; - data[13] = 0xBC410038; - data[14] = 0x3BE10038; - data[15] = 0x3C400040; - data[16] = 0x3842AB70; - data[17] = 0x90410014; - data[18] = 0x80620028; - data[19] = 0x30830001; - data[20] = 0x90820028; - data[21] = 0x38600010; - data[22] = 0x38800010; - data[23] = 0x4BFFEFD1; - data[24] = 0x4280FFF4; - data[25] = 0x383FFFC8; - data[26] = 0xB8410038; - data[27] = 0x800100C8; - data[28] = 0x7C0903A6; - data[29] = 0x800100C4; - data[30] = 0x7C0FF120; - data[31] = 0x800100C0; - data[32] = 0x7C0803A6; - data[33] = 0x800100B8; - data[34] = 0x7C1B03A6; - data[35] = 0x800100B4; - data[36] = 0x7C1A03A6; - data[37] = 0x800100B0; - data[38] = 0x382100CC; - data[39] = 0x4C000064; - data[40] = 0x9421FFB0; - data[41] = 0x7C0802A6; - data[42] = 0x9001004C; - data[43] = 0xBFA10040; - data[44] = 0x3BE10038; - data[45] = 0x90410014; - data[46] = 0x3BA00000; - data[47] = 0x8062FFFC; - data[48] = 0x8042FFF4; - data[49] = 0x483F9405; - data[50] = 0x80410014; - data[51] = 0x3BA30000; - data[52] = 0x3BC00000; - data[53] = 0x2F9E000F; - data[54] = 0x419D001C; - data[55] = 0xCBE0010; - data[56] = 0x57C5103A; - data[57] = 0x7CC22A14; - data[58] = 0x93A60030; - data[59] = 0x33DE0001; - data[60] = 0x4280FFE4; - data[61] = 0x383FFFC8; - data[62] = 0xBBA10040; - data[63] = 0x8001004C; - data[64] = 0x7C0803A6; - data[65] = 0x38210050; - data[66] = 0x4E800020; - data[67] = 0x9421FFB0; - data[68] = 0x7C0802A6; - data[69] = 0x9001004C; - data[70] = 0xBFC10044; - data[71] = 0x3BE10038; - data[72] = 0x90410014; - data[73] = 0x3BC00000; - data[74] = 0x7FD603A6; - data[75] = 0x383FFFC8; - data[76] = 0xBBC10044; - data[77] = 0x8001004C; - data[78] = 0x7C0803A6; - data[79] = 0x38210050; - data[80] = 0x4E800020; - data[81] = 0x9421FFB8; - data[82] = 0xBFA1003C; - data[83] = 0x3BE10038; - data[84] = 0x3BC30000; - data[85] = 0x3BA40000; - data[86] = 0x57A7083C; - data[87] = 0xCA70010; - data[88] = 0x54E8103A; - data[89] = 0x7D224214; - data[90] = 0x93C90030; - data[91] = 0x383FFFC8; - data[92] = 0xBBA1003C; - data[93] = 0x38210048; - data[94] = 0x4E800020; - data[95] = 0x9421FFB8; - data[96] = 0xBFA1003C; - data[97] = 0x3BE10038; - data[98] = 0x3BC30000; - data[99] = 0x3BA40000; - data[100] = 0xE9E0000; - add(baseAddr, data, length); - bdi.fastDownload(data, length); - length = 101; - data[0] = 0x57AA083C; - data[1] = 0x316A0001; - data[2] = 0xCAB0010; - data[3] = 0x556C103A; - data[4] = 0x7C626214; - data[5] = 0x80830030; - data[6] = 0x909E0010; - data[7] = 0x57A5083C; - data[8] = 0x30C50001; - data[9] = 0xCA60010; - data[10] = 0x54C7103A; - data[11] = 0x7D023A14; - data[12] = 0x93C80030; - data[13] = 0x383FFFC8; - data[14] = 0xBBA1003C; - data[15] = 0x38210048; - data[16] = 0x4E800020; - data[17] = 0x0; - data[18] = 0x0; - data[19] = 0x0; - data[20] = 0x0; - data[21] = 0x0; - data[22] = 0x0; - data[23] = 0x0; - data[24] = 0x0; - data[25] = 0x0; - data[26] = 0x0; - data[27] = 0x0; - data[28] = 0x0; - data[29] = 0x0; - data[30] = 0x0; - data[31] = 0x0; - data[32] = 0x0; - data[33] = 0x0; - data[34] = 0x0; - data[35] = 0x0; - data[36] = 0x0; - data[37] = 0x0; - data[38] = 0x0; - data[39] = 0x0; - data[40] = 0x0; - data[41] = 0x0; - data[42] = 0x0; - data[43] = 0x0; - data[44] = 0x0; - data[45] = 0x0; - data[46] = 0x0; - data[47] = 0x0; - data[48] = 0x0; - data[49] = 0x0; - data[50] = 0x0; - data[51] = 0x0; - data[52] = 0x0; - data[53] = 0x0; - data[54] = 0x0; - data[55] = 0x0; - data[56] = 0x0; - data[57] = 0x0; - data[58] = 0x0; - data[59] = 0x0; - data[60] = 0x0; - data[61] = 0x0; - data[62] = 0x0; - data[63] = 0x0; - data[64] = 0x0; - data[65] = 0x0; - data[66] = 0x0; - data[67] = 0x0; - data[68] = 0x0; - data[69] = 0x0; - data[70] = 0x0; - data[71] = 0x0; - data[72] = 0x0; - data[73] = 0x0; - data[74] = 0x0; - data[75] = 0x0; - data[76] = 0x0; - data[77] = 0x0; - data[78] = 0x0; - data[79] = 0x0; - data[80] = 0x0; - data[81] = 0x0; - data[82] = 0x0; - data[83] = 0x0; - data[84] = 0x0; - data[85] = 0x0; - data[86] = 0x0; - data[87] = 0x0; - data[88] = 0x0; - data[89] = 0x0; - data[90] = 0x0; - data[91] = 0x0; - data[92] = 0x0; - data[93] = 0x0; - data[94] = 0x0; - data[95] = 0x0; - data[96] = 0x0; - data[97] = 0x0; - data[98] = 0x0; - data[99] = 0x0; - data[100] = 0x0; - add(baseAddr, data, length); - bdi.fastDownload(data, length); - length = 54; - data[0] = 0x0; - data[1] = 0x0; - data[2] = 0x0; - data[3] = 0x0; - data[4] = 0x0; - data[5] = 0x0; - data[6] = 0x0; - data[7] = 0x0; - data[8] = 0x0; - data[9] = 0x0; - data[10] = 0x0; - data[11] = 0x0; - data[12] = 0x0; - data[13] = 0x0; - data[14] = 0x0; - data[15] = 0x0; - data[16] = 0x0; - data[17] = 0x0; - data[18] = 0x0; - data[19] = 0x0; - data[20] = 0x0; - data[21] = 0x0; - data[22] = 0x0; - data[23] = 0x0; - data[24] = 0x0; - data[25] = 0x0; - data[26] = 0x0; - data[27] = 0x0; - data[28] = 0x0; - data[29] = 0x0; - data[30] = 0x0; - data[31] = 0x0; - data[32] = 0x0; - data[33] = 0x0; - data[34] = 0x0; - data[35] = 0x0; - data[36] = 0x0; - data[37] = 0x0; - data[38] = 0x0; - data[39] = 0x0; - data[40] = 0x0; - data[41] = 0x0; - data[42] = 0x0; - data[43] = 0x0; - data[44] = 0x0; - data[45] = 0x0; - data[46] = 0x0; - data[47] = 0x0; - data[48] = 0x0; - data[49] = 0x0; - data[50] = 0x0; - data[51] = 0x0; - data[52] = 0x0; - data[53] = 0x0; - add(baseAddr, data, length); - bdi.fastDownload(data, length); - bdi.stopFastDownload(); - baseAddr = 0x1400; - bdi.startFastDownload(baseAddr); - length = 101; - data[0] = 0x0; - data[1] = 0x0; - data[2] = 0x0; - data[3] = 0x0; - data[4] = 0x0; - data[5] = 0x0; - data[6] = 0x0; - data[7] = 0x0; - data[8] = 0x0; - data[9] = 0x0; - data[10] = 0x0; - data[11] = 0x0; - data[12] = 0x0; - data[13] = 0x0; - data[14] = 0x0; - data[15] = 0x0; - data[16] = 0x0; - data[17] = 0x0; - data[18] = 0x0; - data[19] = 0x0; - data[20] = 0x0; - data[21] = 0x0; - data[22] = 0x0; - data[23] = 0x0; - data[24] = 0x0; - data[25] = 0x0; - data[26] = 0x0; - data[27] = 0x0; - data[28] = 0x0; - data[29] = 0x0; - data[30] = 0x0; - data[31] = 0x0; - data[32] = 0x0; - data[33] = 0x0; - data[34] = 0x0; - data[35] = 0x0; - data[36] = 0x0; - data[37] = 0x0; - data[38] = 0x0; - data[39] = 0x0; - data[40] = 0x0; - data[41] = 0x0; - data[42] = 0x0; - data[43] = 0x0; - data[44] = 0x0; - data[45] = 0x0; - data[46] = 0x0; - data[47] = 0x0; - data[48] = 0x0; - data[49] = 0x0; - data[50] = 0x0; - data[51] = 0x0; - data[52] = 0x0; - data[53] = 0x0; - data[54] = 0x0; - data[55] = 0x0; - data[56] = 0x0; - data[57] = 0x0; - data[58] = 0x0; - data[59] = 0x0; - data[60] = 0x0; - data[61] = 0x0; - data[62] = 0x0; - data[63] = 0x0; - data[64] = 0x0; - data[65] = 0x0; - data[66] = 0x0; - data[67] = 0x0; - data[68] = 0x0; - data[69] = 0x0; - data[70] = 0x0; - data[71] = 0x0; - data[72] = 0x0; - data[73] = 0x0; - data[74] = 0x0; - data[75] = 0x0; - data[76] = 0x0; - data[77] = 0x0; - data[78] = 0x0; - data[79] = 0x0; - data[80] = 0x0; - data[81] = 0x0; - data[82] = 0x0; - data[83] = 0x0; - data[84] = 0x0; - data[85] = 0x0; - data[86] = 0x0; - data[87] = 0x0; - data[88] = 0x0; - data[89] = 0x0; - data[90] = 0x0; - data[91] = 0x0; - data[92] = 0x0; - data[93] = 0x0; - data[94] = 0x0; - data[95] = 0x0; - data[96] = 0x0; - data[97] = 0x0; - data[98] = 0x0; - data[99] = 0x0; - data[100] = 0x0; - add(baseAddr, data, length); - bdi.fastDownload(data, length); - length = 101; - data[0] = 0x0; - data[1] = 0x0; - data[2] = 0x0; - data[3] = 0x0; - data[4] = 0x0; - data[5] = 0x0; - data[6] = 0x0; - data[7] = 0x0; - data[8] = 0x0; - data[9] = 0x0; - data[10] = 0x0; - data[11] = 0x0; - data[12] = 0x0; - data[13] = 0x0; - data[14] = 0x0; - data[15] = 0x0; - data[16] = 0x0; - data[17] = 0x0; - data[18] = 0x0; - data[19] = 0x0; - data[20] = 0x0; - data[21] = 0x0; - data[22] = 0x0; - data[23] = 0x0; - data[24] = 0x0; - data[25] = 0x0; - data[26] = 0x0; - data[27] = 0x0; - data[28] = 0x0; - data[29] = 0x0; - data[30] = 0x0; - data[31] = 0x0; - data[32] = 0x0; - data[33] = 0x0; - data[34] = 0x0; - data[35] = 0x0; - data[36] = 0x0; - data[37] = 0x0; - data[38] = 0x0; - data[39] = 0x0; - data[40] = 0x0; - data[41] = 0x0; - data[42] = 0x0; - data[43] = 0x0; - data[44] = 0x0; - data[45] = 0x0; - data[46] = 0x0; - data[47] = 0x0; - data[48] = 0x0; - data[49] = 0x0; - data[50] = 0x0; - data[51] = 0x0; - data[52] = 0x0; - data[53] = 0x0; - data[54] = 0x0; - data[55] = 0x0; - data[56] = 0x0; - data[57] = 0x0; - data[58] = 0x0; - data[59] = 0x0; - data[60] = 0x0; - data[61] = 0x0; - data[62] = 0x0; - data[63] = 0x0; - data[64] = 0x0; - data[65] = 0x0; - data[66] = 0x0; - data[67] = 0x0; - data[68] = 0x0; - data[69] = 0x0; - data[70] = 0x0; - data[71] = 0x0; - data[72] = 0x0; - data[73] = 0x0; - data[74] = 0x0; - data[75] = 0x0; - data[76] = 0x0; - data[77] = 0x0; - data[78] = 0x0; - data[79] = 0x0; - data[80] = 0x0; - data[81] = 0x0; - data[82] = 0x0; - data[83] = 0x0; - data[84] = 0x0; - data[85] = 0x0; - data[86] = 0x0; - data[87] = 0x0; - data[88] = 0x0; - data[89] = 0x0; - data[90] = 0x0; - data[91] = 0x0; - data[92] = 0x0; - data[93] = 0x0; - data[94] = 0x0; - data[95] = 0x0; - data[96] = 0x0; - data[97] = 0x0; - data[98] = 0x0; - data[99] = 0x0; - data[100] = 0x0; - add(baseAddr, data, length); - bdi.fastDownload(data, length); - length = 54; - data[0] = 0x0; - data[1] = 0x0; - data[2] = 0x0; - data[3] = 0x0; - data[4] = 0x0; - data[5] = 0x0; - data[6] = 0x0; - data[7] = 0x0; - data[8] = 0x0; - data[9] = 0x0; - data[10] = 0x0; - data[11] = 0x0; - data[12] = 0x0; - data[13] = 0x0; - data[14] = 0x0; - data[15] = 0x0; - data[16] = 0x0; - data[17] = 0x0; - data[18] = 0x0; - data[19] = 0x0; - data[20] = 0x0; - data[21] = 0x0; - data[22] = 0x0; - data[23] = 0x0; - data[24] = 0x0; - data[25] = 0x0; - data[26] = 0x0; - data[27] = 0x0; - data[28] = 0x0; - data[29] = 0x0; - data[30] = 0x0; - data[31] = 0x0; - data[32] = 0x0; - data[33] = 0x0; - data[34] = 0x0; - data[35] = 0x0; - data[36] = 0x0; - data[37] = 0x0; - data[38] = 0x0; - data[39] = 0x0; - data[40] = 0x0; - data[41] = 0x0; - data[42] = 0x0; - data[43] = 0x0; - data[44] = 0x0; - data[45] = 0x0; - data[46] = 0x0; - data[47] = 0x0; - data[48] = 0x0; - data[49] = 0x0; - data[50] = 0x0; - data[51] = 0x0; - data[52] = 0x0; - data[53] = 0x0; - add(baseAddr, data, length); - bdi.fastDownload(data, length); - bdi.stopFastDownload(); - baseAddr = 0x1800; - bdi.startFastDownload(baseAddr); - length = 101; - data[0] = 0x0; - data[1] = 0x0; - data[2] = 0x0; - data[3] = 0x0; - data[4] = 0x0; - data[5] = 0x0; - data[6] = 0x0; - data[7] = 0x0; - data[8] = 0x0; - data[9] = 0x0; - data[10] = 0x0; - data[11] = 0x0; - data[12] = 0x0; - data[13] = 0x0; - data[14] = 0x0; - data[15] = 0x0; - data[16] = 0x0; - data[17] = 0x0; - data[18] = 0x0; - data[19] = 0x0; - data[20] = 0x0; - data[21] = 0x0; - data[22] = 0x0; - data[23] = 0x0; - data[24] = 0x0; - data[25] = 0x0; - data[26] = 0x0; - data[27] = 0x0; - data[28] = 0x0; - data[29] = 0x0; - data[30] = 0x0; - data[31] = 0x0; - data[32] = 0x0; - data[33] = 0x0; - data[34] = 0x0; - data[35] = 0x0; - data[36] = 0x0; - data[37] = 0x0; - data[38] = 0x0; - data[39] = 0x0; - data[40] = 0x0; - data[41] = 0x0; - data[42] = 0x0; - data[43] = 0x0; - data[44] = 0x0; - data[45] = 0x0; - data[46] = 0x0; - data[47] = 0x0; - data[48] = 0x0; - data[49] = 0x0; - data[50] = 0x0; - data[51] = 0x0; - data[52] = 0x0; - data[53] = 0x0; - data[54] = 0x0; - data[55] = 0x0; - data[56] = 0x0; - data[57] = 0x0; - data[58] = 0x0; - data[59] = 0x0; - data[60] = 0x0; - data[61] = 0x0; - data[62] = 0x0; - data[63] = 0x0; - data[64] = 0x0; - data[65] = 0x0; - data[66] = 0x0; - data[67] = 0x0; - data[68] = 0x0; - data[69] = 0x0; - data[70] = 0x0; - data[71] = 0x0; - data[72] = 0x0; - data[73] = 0x0; - data[74] = 0x0; - data[75] = 0x0; - data[76] = 0x0; - data[77] = 0x0; - data[78] = 0x0; - data[79] = 0x0; - data[80] = 0x0; - data[81] = 0x0; - data[82] = 0x0; - data[83] = 0x0; - data[84] = 0x0; - data[85] = 0x0; - data[86] = 0x0; - data[87] = 0x0; - data[88] = 0x0; - data[89] = 0x0; - data[90] = 0x0; - data[91] = 0x0; - data[92] = 0x0; - data[93] = 0x0; - data[94] = 0x0; - data[95] = 0x0; - data[96] = 0x0; - data[97] = 0x0; - data[98] = 0x0; - data[99] = 0x0; - data[100] = 0x0; - add(baseAddr, data, length); - bdi.fastDownload(data, length); - length = 101; - data[0] = 0x0; - data[1] = 0x0; - data[2] = 0x0; - data[3] = 0x0; - data[4] = 0x0; - data[5] = 0x0; - data[6] = 0x0; - data[7] = 0x0; - data[8] = 0x0; - data[9] = 0x0; - data[10] = 0x0; - data[11] = 0x0; - data[12] = 0x0; - data[13] = 0x0; - data[14] = 0x0; - data[15] = 0x0; - data[16] = 0x0; - data[17] = 0x0; - data[18] = 0x0; - data[19] = 0x0; - data[20] = 0x0; - data[21] = 0x0; - data[22] = 0x0; - data[23] = 0x0; - data[24] = 0x0; - data[25] = 0x0; - data[26] = 0x0; - data[27] = 0x0; - data[28] = 0x0; - data[29] = 0x0; - data[30] = 0x0; - data[31] = 0x0; - data[32] = 0x0; - data[33] = 0x0; - data[34] = 0x0; - data[35] = 0x0; - data[36] = 0x0; - data[37] = 0x0; - data[38] = 0x0; - data[39] = 0x0; - data[40] = 0x0; - data[41] = 0x0; - data[42] = 0x0; - data[43] = 0x0; - data[44] = 0x0; - data[45] = 0x0; - data[46] = 0x0; - data[47] = 0x0; - data[48] = 0x0; - data[49] = 0x0; - data[50] = 0x0; - data[51] = 0x0; - data[52] = 0x0; - data[53] = 0x0; - data[54] = 0x0; - data[55] = 0x0; - data[56] = 0x0; - data[57] = 0x0; - data[58] = 0x0; - data[59] = 0x0; - data[60] = 0x0; - data[61] = 0x0; - data[62] = 0x0; - data[63] = 0x0; - data[64] = 0x0; - data[65] = 0x0; - data[66] = 0x0; - data[67] = 0x0; - data[68] = 0x0; - data[69] = 0x0; - data[70] = 0x0; - data[71] = 0x0; - data[72] = 0x0; - data[73] = 0x0; - data[74] = 0x0; - data[75] = 0x0; - data[76] = 0x0; - data[77] = 0x0; - data[78] = 0x0; - data[79] = 0x0; - data[80] = 0x0; - data[81] = 0x0; - data[82] = 0x0; - data[83] = 0x0; - data[84] = 0x0; - data[85] = 0x0; - data[86] = 0x0; - data[87] = 0x0; - data[88] = 0x0; - data[89] = 0x0; - data[90] = 0x0; - data[91] = 0x0; - data[92] = 0x0; - data[93] = 0x0; - data[94] = 0x0; - data[95] = 0x0; - data[96] = 0x0; - data[97] = 0x0; - data[98] = 0x0; - data[99] = 0x0; - data[100] = 0x0; - add(baseAddr, data, length); - bdi.fastDownload(data, length); - length = 54; - data[0] = 0x0; - data[1] = 0x0; - data[2] = 0x0; - data[3] = 0x0; - data[4] = 0x0; - data[5] = 0x0; - data[6] = 0x0; - data[7] = 0x0; - data[8] = 0x0; - data[9] = 0x0; - data[10] = 0x0; - data[11] = 0x0; - data[12] = 0x0; - data[13] = 0x0; - data[14] = 0x0; - data[15] = 0x0; - data[16] = 0x0; - data[17] = 0x0; - data[18] = 0x0; - data[19] = 0x0; - data[20] = 0x0; - data[21] = 0x0; - data[22] = 0x0; - data[23] = 0x0; - data[24] = 0x0; - data[25] = 0x0; - data[26] = 0x0; - data[27] = 0x0; - data[28] = 0x0; - data[29] = 0x0; - data[30] = 0x0; - data[31] = 0x0; - data[32] = 0x0; - data[33] = 0x0; - data[34] = 0x0; - data[35] = 0x0; - data[36] = 0x0; - data[37] = 0x0; - data[38] = 0x0; - data[39] = 0x0; - data[40] = 0x0; - data[41] = 0x0; - data[42] = 0x0; - data[43] = 0x0; - data[44] = 0x0; - data[45] = 0x0; - data[46] = 0x0; - data[47] = 0x0; - data[48] = 0x0; - data[49] = 0x0; - data[50] = 0x0; - data[51] = 0x0; - data[52] = 0x0; - data[53] = 0x0; - add(baseAddr, data, length); - bdi.fastDownload(data, length); - bdi.stopFastDownload(); - baseAddr = 0x1C00; - bdi.startFastDownload(baseAddr); - length = 101; - data[0] = 0x0; - data[1] = 0x0; - data[2] = 0x0; - data[3] = 0x0; - data[4] = 0x0; - data[5] = 0x0; - data[6] = 0x0; - data[7] = 0x0; - data[8] = 0x0; - data[9] = 0x0; - data[10] = 0x0; - data[11] = 0x0; - data[12] = 0x0; - data[13] = 0x0; - data[14] = 0x0; - data[15] = 0x0; - data[16] = 0x0; - data[17] = 0x0; - data[18] = 0x0; - data[19] = 0x0; - data[20] = 0x0; - data[21] = 0x0; - data[22] = 0x0; - data[23] = 0x0; - data[24] = 0x0; - data[25] = 0x0; - data[26] = 0x0; - data[27] = 0x0; - data[28] = 0x0; - data[29] = 0x0; - data[30] = 0x0; - data[31] = 0x0; - data[32] = 0x0; - data[33] = 0x0; - data[34] = 0x0; - data[35] = 0x0; - data[36] = 0x0; - data[37] = 0x0; - data[38] = 0x0; - data[39] = 0x0; - data[40] = 0x0; - data[41] = 0x0; - data[42] = 0x0; - data[43] = 0x0; - data[44] = 0x0; - data[45] = 0x0; - data[46] = 0x0; - data[47] = 0x0; - data[48] = 0x0; - data[49] = 0x0; - data[50] = 0x0; - data[51] = 0x0; - data[52] = 0x0; - data[53] = 0x0; - data[54] = 0x0; - data[55] = 0x0; - data[56] = 0x0; - data[57] = 0x0; - data[58] = 0x0; - data[59] = 0x0; - data[60] = 0x0; - data[61] = 0x0; - data[62] = 0x0; - data[63] = 0x0; - data[64] = 0x0; - data[65] = 0x0; - data[66] = 0x0; - data[67] = 0x0; - data[68] = 0x0; - data[69] = 0x0; - data[70] = 0x0; - data[71] = 0x0; - data[72] = 0x0; - data[73] = 0x0; - data[74] = 0x0; - data[75] = 0x0; - data[76] = 0x0; - data[77] = 0x0; - data[78] = 0x0; - data[79] = 0x0; - data[80] = 0x0; - data[81] = 0x0; - data[82] = 0x0; - data[83] = 0x0; - data[84] = 0x0; - data[85] = 0x0; - data[86] = 0x0; - data[87] = 0x0; - data[88] = 0x0; - data[89] = 0x0; - data[90] = 0x0; - data[91] = 0x0; - data[92] = 0x0; - data[93] = 0x0; - data[94] = 0x0; - data[95] = 0x0; - data[96] = 0x0; - data[97] = 0x0; - data[98] = 0x0; - data[99] = 0x0; - data[100] = 0x0; - add(baseAddr, data, length); - bdi.fastDownload(data, length); - length = 101; - data[0] = 0x0; - data[1] = 0x0; - data[2] = 0x0; - data[3] = 0x0; - data[4] = 0x0; - data[5] = 0x0; - data[6] = 0x0; - data[7] = 0x0; - data[8] = 0x0; - data[9] = 0x0; - data[10] = 0x0; - data[11] = 0x0; - data[12] = 0x0; - data[13] = 0x0; - data[14] = 0x0; - data[15] = 0x0; - data[16] = 0x0; - data[17] = 0x0; - data[18] = 0x0; - data[19] = 0x0; - data[20] = 0x0; - data[21] = 0x0; - data[22] = 0x0; - data[23] = 0x0; - data[24] = 0x0; - data[25] = 0x0; - data[26] = 0x0; - data[27] = 0x0; - data[28] = 0x0; - data[29] = 0x0; - data[30] = 0x0; - data[31] = 0x0; - data[32] = 0x0; - data[33] = 0x0; - data[34] = 0x0; - data[35] = 0x0; - data[36] = 0x0; - data[37] = 0x0; - data[38] = 0x0; - data[39] = 0x0; - data[40] = 0x0; - data[41] = 0x0; - data[42] = 0x0; - data[43] = 0x0; - data[44] = 0x0; - data[45] = 0x0; - data[46] = 0x0; - data[47] = 0x0; - data[48] = 0x0; - data[49] = 0x0; - data[50] = 0x0; - data[51] = 0x0; - data[52] = 0x0; - data[53] = 0x0; - data[54] = 0x0; - data[55] = 0x0; - data[56] = 0x0; - data[57] = 0x0; - data[58] = 0x0; - data[59] = 0x0; - data[60] = 0x0; - data[61] = 0x0; - data[62] = 0x0; - data[63] = 0x0; - data[64] = 0x0; - data[65] = 0x0; - data[66] = 0x0; - data[67] = 0x0; - data[68] = 0x0; - data[69] = 0x0; - data[70] = 0x0; - data[71] = 0x0; - data[72] = 0x0; - data[73] = 0x0; - data[74] = 0x0; - data[75] = 0x0; - data[76] = 0x0; - data[77] = 0x0; - data[78] = 0x0; - data[79] = 0x0; - data[80] = 0x0; - data[81] = 0x0; - data[82] = 0x0; - data[83] = 0x0; - data[84] = 0x0; - data[85] = 0x0; - data[86] = 0x0; - data[87] = 0x0; - data[88] = 0x0; - data[89] = 0x0; - data[90] = 0x0; - data[91] = 0x0; - data[92] = 0x0; - data[93] = 0x0; - data[94] = 0x0; - data[95] = 0x0; - data[96] = 0x0; - data[97] = 0x0; - data[98] = 0x0; - data[99] = 0x0; - data[100] = 0x0; - add(baseAddr, data, length); - bdi.fastDownload(data, length); - length = 51; - data[0] = 0x0; - data[1] = 0x0; - data[2] = 0x0; - data[3] = 0x0; - data[4] = 0x0; - data[5] = 0x0; - data[6] = 0x0; - data[7] = 0x0; - data[8] = 0x0; - data[9] = 0x0; - data[10] = 0x0; - data[11] = 0x0; - data[12] = 0x0; - data[13] = 0x0; - data[14] = 0x0; - data[15] = 0x0; - data[16] = 0x0; - data[17] = 0x0; - data[18] = 0x0; - data[19] = 0x0; - data[20] = 0x0; - data[21] = 0x0; - data[22] = 0x0; - data[23] = 0x0; - data[24] = 0x0; - data[25] = 0x0; - data[26] = 0x0; - data[27] = 0x0; - data[28] = 0x0; - data[29] = 0x0; - data[30] = 0x9421FFC0; - data[31] = 0xBFE1003C; - data[32] = 0x3BE10038; - data[33] = 0x383FFFC8; - data[34] = 0xBBE1003C; - data[35] = 0x38210040; - data[36] = 0x4E800020; - data[37] = 0x9421FFC0; - data[38] = 0x7C0802A6; - data[39] = 0x9001003C; - data[40] = 0xBFE10038; - data[41] = 0x3BE10038; - data[42] = 0x90410014; - data[43] = 0x4BFFF0CD; - data[44] = 0x383FFFC8; - data[45] = 0xBBE10038; - data[46] = 0x8001003C; - data[47] = 0x7C0803A6; - data[48] = 0x38210040; - data[49] = 0x4E800020; - data[50] = 0x50C5598E; - add(baseAddr, data, length); - bdi.fastDownload(data, length); - bdi.stopFastDownload(); - baseAddr = 0x802000; - bdi.startFastDownload(baseAddr); - length = 101; - data[0] = 0x26; - data[1] = 0x80326C; - data[2] = 0x803304; - data[3] = 0x803268; - data[4] = 0x803270; - data[5] = 0x803274; - data[6] = 0x803278; - data[7] = 0x80327C; - data[8] = 0x803280; - data[9] = 0x803284; - data[10] = 0x803288; - data[11] = 0x80328C; - data[12] = 0x803290; - data[13] = 0x803294; - data[14] = 0x803298; - data[15] = 0x80329C; - data[16] = 0x8032A0; - data[17] = 0x8032A4; - data[18] = 0x8032A8; - data[19] = 0x8032AC; - data[20] = 0x8032B0; - data[21] = 0x8032B4; - data[22] = 0x8032B8; - data[23] = 0x8032BC; - data[24] = 0x8032C0; - data[25] = 0x8032C4; - data[26] = 0x8032C8; - data[27] = 0x8032CC; - data[28] = 0x8032D0; - data[29] = 0x8032D4; - data[30] = 0x8032D8; - data[31] = 0x8032DC; - data[32] = 0x8032E0; - data[33] = 0x8032E4; - data[34] = 0x8032E8; - data[35] = 0x8032EC; - data[36] = 0x8032F0; - data[37] = 0x8032F4; - data[38] = 0x8032F8; - data[39] = 0x8020D4; - data[40] = 0x802130; - data[41] = 0x8020F8; - data[42] = 0x18; - data[43] = 0x80320C; - data[44] = 0x0; - data[45] = 0x802000; - data[46] = 0x27C; - data[47] = 0x80227C; - data[48] = 0xFC8; - data[49] = 0x803244; - data[50] = 0x18; - data[51] = 0x80325C; - data[52] = 0xB0; - data[53] = 0xA; - data[54] = 0x546F7070; - data[55] = 0x63546173; - data[56] = 0x6B730000; - data[57] = 0x0; - data[58] = 0x0; - data[59] = 0x0; - data[60] = 0x0; - data[61] = 0x0; - data[62] = 0x3FA720; - data[63] = 0x3FA6E0; - data[64] = 0x3FA720; - data[65] = 0x802220; - data[66] = 0x8021A4; - data[67] = 0x802130; - data[68] = 0x8022F0; - data[69] = 0x80325C; - data[70] = 0x802370; - data[71] = 0x80325C; - data[72] = 0x8022B4; - data[73] = 0x80325C; - data[74] = 0xF; - data[75] = 0xF; - data[76] = 0x24; - data[77] = 0x0; - data[78] = 0x3; - data[79] = 0xC; - data[80] = 0x802000; - data[81] = 0x8020D4; - data[82] = 0x802174; - data[83] = 0x8021A4; - data[84] = 0x802130; - data[85] = 0x0; - data[86] = 0x0; - data[87] = 0x0; - data[88] = 0x0; - data[89] = 0x0; - data[90] = 0x0; - data[91] = 0x0; - data[92] = 0xC0; - data[93] = 0x8; - data[94] = 0x5461736B; - data[95] = 0x44657363; - data[96] = 0x0; - data[97] = 0x8022F0; - data[98] = 0x80325C; - data[99] = 0x802370; - data[100] = 0x80325C; - add(baseAddr, data, length); - bdi.fastDownload(data, length); - length = 58; - data[0] = 0x8023F4; - data[1] = 0x80325C; - data[2] = 0x0; - data[3] = 0xC; - data[4] = 0x24; - data[5] = 0x1; - data[6] = 0x3; - data[7] = 0x8; - data[8] = 0x802000; - data[9] = 0x8020D4; - data[10] = 0x8021E8; - data[11] = 0x802220; - data[12] = 0x802130; - data[13] = 0x8021A4; - data[14] = 0x0; - data[15] = 0x0; - data[16] = 0x0; - data[17] = 0x0; - data[18] = 0x0; - data[19] = 0x0; - data[20] = 0xC0; - data[21] = 0xD; - data[22] = 0x4572726F; - data[23] = 0x72546173; - data[24] = 0x6B446573; - data[25] = 0x63000000; - data[26] = 0x0; - data[27] = 0x8022F0; - data[28] = 0x80325C; - data[29] = 0x802370; - data[30] = 0x80325C; - data[31] = 0x8031EC; - data[32] = 0x80325C; - data[33] = 0x0; - data[34] = 0xC; - data[35] = 0x24; - data[36] = 0x1; - data[37] = 0x3; - data[38] = 0x4; - data[39] = 0x802000; - data[40] = 0x8020D4; - data[41] = 0x802264; - data[42] = 0x0; - data[43] = 0x802130; - data[44] = 0x802220; - data[45] = 0x0; - data[46] = 0x0; - data[47] = 0x0; - data[48] = 0x0; - data[49] = 0x0; - data[50] = 0x0; - data[51] = 0xC0; - data[52] = 0xA; - data[53] = 0x47435461; - data[54] = 0x736B4465; - data[55] = 0x73630000; - data[56] = 0x0; - data[57] = 0x7145256D; - add(baseAddr, data, length); - bdi.fastDownload(data, length); - bdi.stopFastDownload(); - baseAddr = 0x80227C; - bdi.startFastDownload(baseAddr); - length = 101; - data[0] = 0x9421FFC0; - data[1] = 0xBFC10038; - data[2] = 0x3BE10038; - data[3] = 0x3BC30000; - data[4] = 0xA8620002; - data[5] = 0x2C830000; - data[6] = 0x40860008; - data[7] = 0xB3C20002; - data[8] = 0x38800000; - data[9] = 0x98820000; - data[10] = 0x383FFFC8; - data[11] = 0xBBC10038; - data[12] = 0x38210040; - data[13] = 0x4E800020; - data[14] = 0x9421FFB8; - data[15] = 0x7C0802A6; - data[16] = 0x90010044; - data[17] = 0xBFC1003C; - data[18] = 0x3BE10038; - data[19] = 0x90410014; - data[20] = 0x3BC30000; - data[21] = 0x38600063; - data[22] = 0x4BFFFFA9; - data[23] = 0x383FFFC8; - data[24] = 0xBBC1003C; - data[25] = 0x80010044; - data[26] = 0x7C0803A6; - data[27] = 0x38210048; - data[28] = 0x4E800020; - data[29] = 0x9421FFB8; - data[30] = 0xBFA1003C; - data[31] = 0x3BE10038; - data[32] = 0x3BC30000; - data[33] = 0x3BA40000; - data[34] = 0xE9E0000; - data[35] = 0xE9D0000; - data[36] = 0x80BE0018; - data[37] = 0x80DD0018; - data[38] = 0x7F053000; - data[39] = 0x41980034; - data[40] = 0xE9E0000; - data[41] = 0xE9D0000; - data[42] = 0x80FE0018; - data[43] = 0x811D0018; - data[44] = 0x7F874000; - data[45] = 0x409E0024; - data[46] = 0xE9E0000; - data[47] = 0xE9D0000; - data[48] = 0xA93E0020; - data[49] = 0xA95D0020; - data[50] = 0x7C895000; - data[51] = 0x4084000C; - data[52] = 0x38600001; - data[53] = 0x42800008; - data[54] = 0x38600000; - data[55] = 0x42800008; - data[56] = 0x7FE00008; - data[57] = 0x383FFFC8; - data[58] = 0xBBA1003C; - data[59] = 0x38210048; - data[60] = 0x4E800020; - data[61] = 0x9421FFC0; - data[62] = 0xBFC10038; - data[63] = 0x3BE10038; - data[64] = 0x3BC30000; - data[65] = 0xE9E0000; - data[66] = 0x817E0000; - data[67] = 0x2F0B0000; - data[68] = 0x4198004C; - data[69] = 0xE9E0000; - data[70] = 0x819E0000; - data[71] = 0x3C608000; - data[72] = 0x3883FC17; - data[73] = 0x7F8C2000; - data[74] = 0x419D0034; - data[75] = 0xE9E0000; - data[76] = 0x80BE0004; - data[77] = 0x2C850000; - data[78] = 0x41840024; - data[79] = 0xE9E0000; - data[80] = 0x80DE0004; - data[81] = 0x3CE08000; - data[82] = 0x3907FC17; - data[83] = 0x7F064000; - data[84] = 0x4199000C; - data[85] = 0x38600001; - data[86] = 0x42800008; - data[87] = 0x38600000; - data[88] = 0x42800008; - data[89] = 0x7FE00008; - data[90] = 0x383FFFC8; - data[91] = 0xBBC10038; - data[92] = 0x38210040; - data[93] = 0x4E800020; - data[94] = 0x9421FFB8; - data[95] = 0x7C0802A6; - data[96] = 0x90010044; - data[97] = 0xBFC1003C; - data[98] = 0x3BE10038; - data[99] = 0x90410014; - data[100] = 0x3BC30000; - add(baseAddr, data, length); - bdi.fastDownload(data, length); - length = 101; - data[0] = 0x38600062; - data[1] = 0x4BFFFE69; - data[2] = 0x383FFFC8; - data[3] = 0xBBC1003C; - data[4] = 0x80010044; - data[5] = 0x7C0803A6; - data[6] = 0x38210048; - data[7] = 0x4E800020; - data[8] = 0x9421FFB0; - data[9] = 0x7C0802A6; - data[10] = 0x9001004C; - data[11] = 0xBFA10040; - data[12] = 0x3BE10038; - data[13] = 0x90410014; - data[14] = 0x3BC30000; - data[15] = 0x89220000; - data[16] = 0x2F890000; - data[17] = 0x419E0020; - data[18] = 0xA9420004; - data[19] = 0xA9620006; - data[20] = 0x7D8A5A14; - data[21] = 0x2C8C0020; - data[22] = 0x4084000C; - data[23] = 0x38600001; - data[24] = 0x42800008; - data[25] = 0x38600000; - data[26] = 0x98620000; - data[27] = 0x88820000; - data[28] = 0x2F040000; - data[29] = 0x419A0088; - data[30] = 0xA8A20004; - data[31] = 0x30C50001; - data[32] = 0xB0C20004; - data[33] = 0xABA20004; - data[34] = 0x387E0000; - data[35] = 0x7FA70E70; - data[36] = 0xCA70022; - data[37] = 0x54E8103A; - data[38] = 0x7D224214; - data[39] = 0x80890018; - data[40] = 0x8143FFFC; - data[41] = 0x800AFFE0; - data[42] = 0x7C0903A6; - data[43] = 0x804AFFE4; - data[44] = 0x4E800421; - data[45] = 0x80410014; - data[46] = 0x2F830000; - data[47] = 0x419E0030; - data[48] = 0xCBD0022; - data[49] = 0x57AB103A; - data[50] = 0x7D825A14; - data[51] = 0x7FA30E70; - data[52] = 0xCA30022; - data[53] = 0x5464103A; - data[54] = 0x7CA22214; - data[55] = 0x80C50018; - data[56] = 0x90CC0018; - data[57] = 0x7FBD0E70; - data[58] = 0x4280FFA0; - data[59] = 0xCBD0022; - data[60] = 0x57A7103A; - data[61] = 0x7D023A14; - data[62] = 0x93C80018; - data[63] = 0x383FFFC8; - data[64] = 0xBBA10040; - data[65] = 0x8001004C; - data[66] = 0x7C0803A6; - data[67] = 0x38210050; - data[68] = 0x4E800020; - data[69] = 0x9421FFA8; - data[70] = 0x7C0802A6; - data[71] = 0x90010054; - data[72] = 0xBF810044; - data[73] = 0x3BE10038; - data[74] = 0x90410014; - data[75] = 0x3BC00000; - data[76] = 0xA9220004; - data[77] = 0x2C890001; - data[78] = 0x40850118; - data[79] = 0xA9420004; - data[80] = 0xCAA0022; - data[81] = 0x554B103A; - data[82] = 0x7D825A14; - data[83] = 0x83CC0018; - data[84] = 0xA8620004; - data[85] = 0xCA30022; - data[86] = 0x5464103A; - data[87] = 0x7CA22214; - data[88] = 0x80C2000C; - data[89] = 0x90C50018; - data[90] = 0x3BA00001; - data[91] = 0xA8E20004; - data[92] = 0x3107FFFF; - data[93] = 0xB1020004; - data[94] = 0x57BC083C; - data[95] = 0xA9220004; - data[96] = 0x7F1C4800; - data[97] = 0x40990008; - data[98] = 0x428000B4; - data[99] = 0xCBC0022; - data[100] = 0x578A103A; - add(baseAddr, data, length); - bdi.fastDownload(data, length); - length = 54; - data[0] = 0x7D625214; - data[1] = 0x806B0018; - data[2] = 0x319C0001; - data[3] = 0xCAC0022; - data[4] = 0x5584103A; - data[5] = 0x7CA22214; - data[6] = 0x80850018; - data[7] = 0x80C3FFFC; - data[8] = 0x8006FFE0; - data[9] = 0x7C0903A6; - data[10] = 0x8046FFE4; - data[11] = 0x4E800421; - data[12] = 0x80410014; - data[13] = 0x20E30001; - data[14] = 0x2F870000; - data[15] = 0x419E0008; - data[16] = 0x339C0001; - data[17] = 0x387E0000; - data[18] = 0xCBC0022; - data[19] = 0x5788103A; - data[20] = 0x7D224214; - data[21] = 0x80890018; - data[22] = 0x8143FFFC; - data[23] = 0x800AFFE0; - data[24] = 0x7C0903A6; - data[25] = 0x804AFFE4; - data[26] = 0x4E800421; - data[27] = 0x80410014; - data[28] = 0x2C830000; - data[29] = 0x4186000C; - data[30] = 0x42800030; - data[31] = 0x42800028; - data[32] = 0xCBD0022; - data[33] = 0x57AB103A; - data[34] = 0x7D825A14; - data[35] = 0xCBC0022; - data[36] = 0x5783103A; - data[37] = 0x7C821A14; - data[38] = 0x80A40018; - data[39] = 0x90AC0018; - data[40] = 0x3BBC0000; - data[41] = 0x4280FF40; - data[42] = 0xCBD0022; - data[43] = 0x57A6103A; - data[44] = 0x7CE23214; - data[45] = 0x93C70018; - data[46] = 0x42800020; - data[47] = 0xA9020004; - data[48] = 0x2F080001; - data[49] = 0x409A0014; - data[50] = 0x8122000C; - data[51] = 0x9122001C; - data[52] = 0x39400000; - data[53] = 0xB1420004; - add(baseAddr, data, length); - bdi.fastDownload(data, length); - bdi.stopFastDownload(); - baseAddr = 0x80267C; - bdi.startFastDownload(baseAddr); - length = 101; - data[0] = 0x383FFFC8; - data[1] = 0xBB810044; - data[2] = 0x80010054; - data[3] = 0x7C0803A6; - data[4] = 0x38210058; - data[5] = 0x4E800020; - data[6] = 0x9421FFA8; - data[7] = 0x7C0802A6; - data[8] = 0x90010054; - data[9] = 0xBF810044; - data[10] = 0x3BE10038; - data[11] = 0x90410014; - data[12] = 0x3BC00000; - data[13] = 0xA9620004; - data[14] = 0x2F8B0001; - data[15] = 0x409D00E0; - data[16] = 0x83C2001C; - data[17] = 0x3BA00001; - data[18] = 0x57BC083C; - data[19] = 0xA9820004; - data[20] = 0x7C9C6000; - data[21] = 0x40850008; - data[22] = 0x428000B4; - data[23] = 0xCBC0022; - data[24] = 0x5783103A; - data[25] = 0x7C821A14; - data[26] = 0x80640018; - data[27] = 0x30BC0001; - data[28] = 0xCA50022; - data[29] = 0x54A6103A; - data[30] = 0x7CE23214; - data[31] = 0x80870018; - data[32] = 0x8103FFFC; - data[33] = 0x8008FFE0; - data[34] = 0x7C0903A6; - data[35] = 0x8048FFE4; - data[36] = 0x4E800421; - data[37] = 0x80410014; - data[38] = 0x21230001; - data[39] = 0x2F090000; - data[40] = 0x419A0008; - data[41] = 0x339C0001; - data[42] = 0x387E0000; - data[43] = 0xCBC0022; - data[44] = 0x578A103A; - data[45] = 0x7D625214; - data[46] = 0x808B0018; - data[47] = 0x8183FFFC; - data[48] = 0x800CFFE0; - data[49] = 0x7C0903A6; - data[50] = 0x804CFFE4; - data[51] = 0x4E800421; - data[52] = 0x80410014; - data[53] = 0x2F830000; - data[54] = 0x419E000C; - data[55] = 0x42800030; - data[56] = 0x42800028; - data[57] = 0xCBD0022; - data[58] = 0x57A3103A; - data[59] = 0x7C821A14; - data[60] = 0xCBC0022; - data[61] = 0x5785103A; - data[62] = 0x7CC22A14; - data[63] = 0x80E60018; - data[64] = 0x90E40018; - data[65] = 0x3BBC0000; - data[66] = 0x4280FF40; - data[67] = 0xCBD0022; - data[68] = 0x57A8103A; - data[69] = 0x7D224214; - data[70] = 0x93C90018; - data[71] = 0x383FFFC8; - data[72] = 0xBB810044; - data[73] = 0x80010054; - data[74] = 0x7C0803A6; - data[75] = 0x38210058; - data[76] = 0x4E800020; - data[77] = 0x9421FF98; - data[78] = 0x7C0802A6; - data[79] = 0x90010064; - data[80] = 0xBF41004C; - data[81] = 0x3BE10038; - data[82] = 0x90410014; - data[83] = 0x3BC30000; - data[84] = 0x3BA00000; - data[85] = 0xAB420004; - data[86] = 0x2C9A0000; - data[87] = 0x40850024; - data[88] = 0xCBA0022; - data[89] = 0x574A103A; - data[90] = 0x7D625214; - data[91] = 0x818B0018; - data[92] = 0x7F0CF000; - data[93] = 0x419A000C; - data[94] = 0x335AFFFF; - data[95] = 0x4280FFDC; - data[96] = 0x2F9A0000; - data[97] = 0x409D01B4; - data[98] = 0x2C9A0001; - data[99] = 0x4086000C; - data[100] = 0x4BFFFD19; - add(baseAddr, data, length); - bdi.fastDownload(data, length); - length = 101; - data[0] = 0x428001A4; - data[1] = 0xA8620004; - data[2] = 0xCA30022; - data[3] = 0x5464103A; - data[4] = 0x7CA22214; - data[5] = 0x83A50018; - data[6] = 0xA8C20004; - data[7] = 0xCA60022; - data[8] = 0x54C7103A; - data[9] = 0x7D023A14; - data[10] = 0x8122000C; - data[11] = 0x91280018; - data[12] = 0xA9420004; - data[13] = 0x7F1A5000; - data[14] = 0x409A0014; - data[15] = 0xA9620004; - data[16] = 0x318BFFFF; - data[17] = 0xB1820004; - data[18] = 0x4280015C; - data[19] = 0x2F9A0001; - data[20] = 0x409D0154; - data[21] = 0xA8620004; - data[22] = 0x3083FFFF; - data[23] = 0xB0820004; - data[24] = 0x3B9A0000; - data[25] = 0x387D0000; - data[26] = 0x7F850E70; - data[27] = 0xCA50022; - data[28] = 0x54A6103A; - data[29] = 0x7CE23214; - data[30] = 0x80870018; - data[31] = 0x8103FFFC; - data[32] = 0x8008FFE0; - data[33] = 0x7C0903A6; - data[34] = 0x8048FFE4; - data[35] = 0x4E800421; - data[36] = 0x80410014; - data[37] = 0x2C830000; - data[38] = 0x41860030; - data[39] = 0xCBC0022; - data[40] = 0x5789103A; - data[41] = 0x7D424A14; - data[42] = 0x7F8B0E70; - data[43] = 0xCAB0022; - data[44] = 0x556C103A; - data[45] = 0x7C626214; - data[46] = 0x80830018; - data[47] = 0x908A0018; - data[48] = 0x7F9C0E70; - data[49] = 0x4280FFA0; - data[50] = 0x7F1CD000; - data[51] = 0x409A00C8; - data[52] = 0x579B083C; - data[53] = 0xA8A20004; - data[54] = 0x7F9B2800; - data[55] = 0x409D0008; - data[56] = 0x428000B4; - data[57] = 0xCBB0022; - data[58] = 0x5766103A; - data[59] = 0x7CE23214; - data[60] = 0x80670018; - data[61] = 0x311B0001; - data[62] = 0xCA80022; - data[63] = 0x5509103A; - data[64] = 0x7D424A14; - data[65] = 0x808A0018; - data[66] = 0x8163FFFC; - data[67] = 0x800BFFE0; - data[68] = 0x7C0903A6; - data[69] = 0x804BFFE4; - data[70] = 0x4E800421; - data[71] = 0x80410014; - data[72] = 0x21830001; - data[73] = 0x2C8C0000; - data[74] = 0x41860008; - data[75] = 0x337B0001; - data[76] = 0x387D0000; - data[77] = 0xCBB0022; - data[78] = 0x5764103A; - data[79] = 0x7CA22214; - data[80] = 0x80850018; - data[81] = 0x80C3FFFC; - data[82] = 0x8006FFE0; - data[83] = 0x7C0903A6; - data[84] = 0x8046FFE4; - data[85] = 0x4E800421; - data[86] = 0x80410014; - data[87] = 0x2F030000; - data[88] = 0x419A000C; - data[89] = 0x42800030; - data[90] = 0x42800028; - data[91] = 0xCBC0022; - data[92] = 0x5787103A; - data[93] = 0x7D023A14; - data[94] = 0xCBB0022; - data[95] = 0x5769103A; - data[96] = 0x7D424A14; - data[97] = 0x816A0018; - data[98] = 0x91680018; - data[99] = 0x3B9B0000; - data[100] = 0x4280FF40; - add(baseAddr, data, length); - bdi.fastDownload(data, length); - length = 54; - data[0] = 0xCBC0022; - data[1] = 0x578C103A; - data[2] = 0x7C626214; - data[3] = 0x93A30018; - data[4] = 0x383FFFC8; - data[5] = 0xBB41004C; - data[6] = 0x80010064; - data[7] = 0x7C0803A6; - data[8] = 0x38210068; - data[9] = 0x4E800020; - data[10] = 0x9421FFB0; - data[11] = 0x7C0802A6; - data[12] = 0x9001004C; - data[13] = 0xBFA10040; - data[14] = 0x3BE10038; - data[15] = 0x90410014; - data[16] = 0x3BC30000; - data[17] = 0xA8820006; - data[18] = 0x23A40022; - data[19] = 0x2F9D0022; - data[20] = 0x409C0024; - data[21] = 0xCBD0022; - data[22] = 0x57A5103A; - data[23] = 0x7CC22A14; - data[24] = 0x80E60018; - data[25] = 0x7C87F000; - data[26] = 0x4186000C; - data[27] = 0x33BD0001; - data[28] = 0x4280FFDC; - data[29] = 0x2F1D0022; - data[30] = 0x4098003C; - data[31] = 0xCBD0022; - data[32] = 0x57A8103A; - data[33] = 0x7D224214; - data[34] = 0xA9420006; - data[35] = 0x216A0022; - data[36] = 0xCAB0022; - data[37] = 0x556C103A; - data[38] = 0x7C626214; - data[39] = 0x80830018; - data[40] = 0x90890018; - data[41] = 0xA8A20006; - data[42] = 0x30C5FFFF; - data[43] = 0xB0C20006; - data[44] = 0x4280000C; - data[45] = 0x387E0000; - data[46] = 0x4BFFFD55; - data[47] = 0xE9E0000; - data[48] = 0x38E00000; - data[49] = 0x98FE0017; - data[50] = 0x383FFFC8; - data[51] = 0xBBA10040; - data[52] = 0x8001004C; - data[53] = 0x7C0803A6; - add(baseAddr, data, length); - bdi.fastDownload(data, length); - bdi.stopFastDownload(); - baseAddr = 0x802A7C; - bdi.startFastDownload(baseAddr); - length = 101; - data[0] = 0x38210050; - data[1] = 0x4E800020; - data[2] = 0x9421FFC0; - data[3] = 0x7C0802A6; - data[4] = 0x9001003C; - data[5] = 0xBFE10038; - data[6] = 0x3BE10038; - data[7] = 0x90410014; - data[8] = 0x8042FFEC; - data[9] = 0x4BBF71D5; - data[10] = 0x80410014; - data[11] = 0x42800008; - data[12] = 0x7FE00008; - data[13] = 0x383FFFC8; - data[14] = 0xBBE10038; - data[15] = 0x8001003C; - data[16] = 0x7C0803A6; - data[17] = 0x38210040; - data[18] = 0x4E800020; - data[19] = 0x9421FFA0; - data[20] = 0x7C0802A6; - data[21] = 0x9001005C; - data[22] = 0xBF610048; - data[23] = 0x3BE10038; - data[24] = 0x90410014; - data[25] = 0x3BC00000; - data[26] = 0x8102FFEC; - data[27] = 0x81280008; - data[28] = 0x912200A0; - data[29] = 0x8148000C; - data[30] = 0x914200A4; - data[31] = 0x816200A0; - data[32] = 0x2F8B0000; - data[33] = 0x419E0028; - data[34] = 0x8182FFEC; - data[35] = 0x38600000; - data[36] = 0x906C0008; - data[37] = 0x906C000C; - data[38] = 0x800200A0; - data[39] = 0x7C0903A6; - data[40] = 0x804200A4; - data[41] = 0x4E800421; - data[42] = 0x80410014; - data[43] = 0x80620014; - data[44] = 0xE830000; - data[45] = 0x38630018; - data[46] = 0x80820014; - data[47] = 0xE840000; - data[48] = 0x38840020; - data[49] = 0x8042FFEC; - data[50] = 0x4BBF7171; - data[51] = 0x80410014; - data[52] = 0x83C2001C; - data[53] = 0x387E0000; - data[54] = 0x80820014; - data[55] = 0x80A3FFFC; - data[56] = 0x8005FFE0; - data[57] = 0x7C0903A6; - data[58] = 0x8045FFE4; - data[59] = 0x4E800421; - data[60] = 0x80410014; - data[61] = 0x2C830000; - data[62] = 0x41860214; - data[63] = 0x38C00001; - data[64] = 0xB0C2000A; - data[65] = 0xE9E0000; - data[66] = 0x80FE0008; - data[67] = 0x31070001; - data[68] = 0x911E0008; - data[69] = 0xE9E0000; - data[70] = 0x893E0015; - data[71] = 0x2F090000; - data[72] = 0x419A006C; - data[73] = 0x4BFFFEE5; - data[74] = 0x3BA30000; - data[75] = 0x387E0000; - data[76] = 0x8143FFFC; - data[77] = 0x800AFFF0; - data[78] = 0x7C0903A6; - data[79] = 0x804AFFF4; - data[80] = 0x4E800421; - data[81] = 0x80410014; - data[82] = 0x4BFFFEC1; - data[83] = 0x3B830000; - data[84] = 0x7F7DE010; - data[85] = 0xE9E0000; - data[86] = 0x817E000C; - data[87] = 0x7F9B5800; - data[88] = 0x409C0010; - data[89] = 0xE9E0000; - data[90] = 0x937E000C; - data[91] = 0x4280001C; - data[92] = 0xE9E0000; - data[93] = 0x819E0010; - data[94] = 0x7C9B6000; - data[95] = 0x4085000C; - data[96] = 0xE9E0000; - data[97] = 0x937E0010; - data[98] = 0x42800020; - data[99] = 0x387E0000; - data[100] = 0x8083FFFC; - add(baseAddr, data, length); - bdi.fastDownload(data, length); - length = 101; - data[0] = 0x8004FFF0; - data[1] = 0x7C0903A6; - data[2] = 0x8044FFF4; - data[3] = 0x4E800421; - data[4] = 0x80410014; - data[5] = 0xE9E0000; - data[6] = 0x88BE0017; - data[7] = 0x2F050000; - data[8] = 0x419A0154; - data[9] = 0xE9E0000; - data[10] = 0x80DE0004; - data[11] = 0x2F860000; - data[12] = 0x419D0034; - data[13] = 0xA8E20006; - data[14] = 0x31070001; - data[15] = 0xB1020006; - data[16] = 0xA9220006; - data[17] = 0x21490022; - data[18] = 0xCAA0022; - data[19] = 0x554B103A; - data[20] = 0x7D825A14; - data[21] = 0x8062001C; - data[22] = 0x906C0018; - data[23] = 0x4BFFF8B9; - data[24] = 0x42800114; - data[25] = 0xE9E0000; - data[26] = 0xE9E0000; - data[27] = 0xA89E0020; - data[28] = 0xA8BE0022; - data[29] = 0x7CC42A14; - data[30] = 0xB0DE0020; - data[31] = 0xE9E0000; - data[32] = 0xA8FE0020; - data[33] = 0x2C8703E8; - data[34] = 0x41840024; - data[35] = 0xE9E0000; - data[36] = 0xA91E0020; - data[37] = 0x3128FC18; - data[38] = 0xB13E0020; - data[39] = 0xE9E0000; - data[40] = 0x815E0018; - data[41] = 0x316A0001; - data[42] = 0x917E0018; - data[43] = 0xE9E0000; - data[44] = 0xE9E0000; - data[45] = 0x819E0018; - data[46] = 0x807E001C; - data[47] = 0x7C8C1A14; - data[48] = 0x909E0018; - data[49] = 0xE9E0000; - data[50] = 0x88BE0016; - data[51] = 0x2F050000; - data[52] = 0x419A00A0; - data[53] = 0x387E0000; - data[54] = 0x80820014; - data[55] = 0x80C3FFFC; - data[56] = 0x8006FFE0; - data[57] = 0x7C0903A6; - data[58] = 0x8046FFE4; - data[59] = 0x4E800421; - data[60] = 0x80410014; - data[61] = 0x2F830000; - data[62] = 0x419E0078; - data[63] = 0xE9E0000; - data[64] = 0x80E20014; - data[65] = 0xE870000; - data[66] = 0xE9E0000; - data[67] = 0xA9070020; - data[68] = 0xA93E0022; - data[69] = 0x7D484A14; - data[70] = 0xB15E0020; - data[71] = 0xE9E0000; - data[72] = 0xA97E0020; - data[73] = 0x2C8B03E8; - data[74] = 0x41840028; - data[75] = 0xE9E0000; - data[76] = 0xA99E0020; - data[77] = 0x306CFC18; - data[78] = 0xB07E0020; - data[79] = 0x80820014; - data[80] = 0xE840000; - data[81] = 0x80A40018; - data[82] = 0x30C50001; - data[83] = 0x90C40018; - data[84] = 0xE9E0000; - data[85] = 0x80E20014; - data[86] = 0xE870000; - data[87] = 0xE9E0000; - data[88] = 0x81070018; - data[89] = 0x813E001C; - data[90] = 0x7D484A14; - data[91] = 0x915E0018; - data[92] = 0x4BFFF915; - data[93] = 0x428000F4; - data[94] = 0xA9620006; - data[95] = 0x2F0B0000; - data[96] = 0x409900E8; - data[97] = 0xA9820008; - data[98] = 0x306C0001; - data[99] = 0xB0620008; - data[100] = 0xA8820008; - add(baseAddr, data, length); - bdi.fastDownload(data, length); - length = 54; - data[0] = 0x2F840022; - data[1] = 0x419C0010; - data[2] = 0xA8A20006; - data[3] = 0x20C50022; - data[4] = 0xB0C20008; - data[5] = 0xA8E20008; - data[6] = 0xB0E2000A; - data[7] = 0xA9020008; - data[8] = 0xCA80022; - data[9] = 0x5509103A; - data[10] = 0x7D424A14; - data[11] = 0x83CA0018; - data[12] = 0xE9E0000; - data[13] = 0x817E0008; - data[14] = 0x318B0001; - data[15] = 0x919E0008; - data[16] = 0xE9E0000; - data[17] = 0x887E0015; - data[18] = 0x2C830000; - data[19] = 0x4186006C; - data[20] = 0x4BFFFC91; - data[21] = 0x3BA30000; - data[22] = 0x387E0000; - data[23] = 0x8083FFFC; - data[24] = 0x8004FFF0; - data[25] = 0x7C0903A6; - data[26] = 0x8044FFF4; - data[27] = 0x4E800421; - data[28] = 0x80410014; - data[29] = 0x4BFFFC6D; - data[30] = 0x3B830000; - data[31] = 0x7F7DE010; - data[32] = 0xE9E0000; - data[33] = 0x80BE000C; - data[34] = 0x7F1B2800; - data[35] = 0x40980010; - data[36] = 0xE9E0000; - data[37] = 0x937E000C; - data[38] = 0x4280001C; - data[39] = 0xE9E0000; - data[40] = 0x80DE0010; - data[41] = 0x7F9B3000; - data[42] = 0x409D000C; - data[43] = 0xE9E0000; - data[44] = 0x937E0010; - data[45] = 0x42800020; - data[46] = 0x387E0000; - data[47] = 0x80E3FFFC; - data[48] = 0x8007FFF0; - data[49] = 0x7C0903A6; - data[50] = 0x8047FFF4; - data[51] = 0x4E800421; - data[52] = 0x80410014; - data[53] = 0x4280FC6C; - add(baseAddr, data, length); - bdi.fastDownload(data, length); - bdi.stopFastDownload(); - baseAddr = 0x802E7C; - bdi.startFastDownload(baseAddr); - length = 101; - data[0] = 0x383FFFC8; - data[1] = 0xBB610048; - data[2] = 0x8001005C; - data[3] = 0x7C0803A6; - data[4] = 0x38210060; - data[5] = 0x4E800020; - data[6] = 0x9421FFC0; - data[7] = 0x7C0802A6; - data[8] = 0x9001003C; - data[9] = 0xBFE10038; - data[10] = 0x3BE10038; - data[11] = 0x90410014; - data[12] = 0x8042FFEC; - data[13] = 0x4BBF6DC5; - data[14] = 0x80410014; - data[15] = 0x390003E8; - data[16] = 0x7C6343D7; - data[17] = 0x40800008; - data[18] = 0x3063FFFF; - data[19] = 0x42800008; - data[20] = 0x7FE00008; - data[21] = 0x383FFFC8; - data[22] = 0xBBE10038; - data[23] = 0x8001003C; - data[24] = 0x7C0803A6; - data[25] = 0x38210040; - data[26] = 0x4E800020; - data[27] = 0x9421FFA8; - data[28] = 0x7C0802A6; - data[29] = 0x90010054; - data[30] = 0xBFA10048; - data[31] = 0x3BE10038; - data[32] = 0x90410014; - data[33] = 0x3BC30000; - data[34] = 0x387E0000; - data[35] = 0x4BFFFAC5; - data[36] = 0x387E0000; - data[37] = 0x8123FFFC; - data[38] = 0x8009FFE8; - data[39] = 0x7C0903A6; - data[40] = 0x8049FFEC; - data[41] = 0x4E800421; - data[42] = 0x80410014; - data[43] = 0x21430001; - data[44] = 0x2C8A0000; - data[45] = 0x41860010; - data[46] = 0x38600001; - data[47] = 0x4BFFF345; - data[48] = 0x42800154; - data[49] = 0xA9620004; - data[50] = 0xA9820006; - data[51] = 0x7C6B6214; - data[52] = 0x2F030020; - data[53] = 0x41980010; - data[54] = 0x38600002; - data[55] = 0x4BFFF325; - data[56] = 0x42800134; - data[57] = 0x387F0000; - data[58] = 0x389F0008; - data[59] = 0x8042FFEC; - data[60] = 0x4BBF6D49; - data[61] = 0x80410014; - data[62] = 0xA89F0008; - data[63] = 0xE9E0000; - data[64] = 0x80BE0000; - data[65] = 0x7FA42A14; - data[66] = 0xE9E0000; - data[67] = 0x80DE0000; - data[68] = 0x2F860000; - data[69] = 0x419D0014; - data[70] = 0xE9E0000; - data[71] = 0x80FE0004; - data[72] = 0x2C870000; - data[73] = 0x408500C0; - data[74] = 0xE9E0000; - data[75] = 0x390003E8; - data[76] = 0x7D3D43D7; - data[77] = 0x40800008; - data[78] = 0x3129FFFF; - data[79] = 0x815F0000; - data[80] = 0x7D6A4A14; - data[81] = 0x917E0018; - data[82] = 0xE9E0000; - data[83] = 0x398003E8; - data[84] = 0x7C7D63D6; - data[85] = 0x7C6361D6; - data[86] = 0x7C63E811; - data[87] = 0x40800008; - data[88] = 0x306303E8; - data[89] = 0xB07E0020; - data[90] = 0xE9E0000; - data[91] = 0xE9E0000; - data[92] = 0x809E0004; - data[93] = 0x38A003E8; - data[94] = 0x7CC42BD7; - data[95] = 0x40800008; - data[96] = 0x30C6FFFF; - data[97] = 0x90DE001C; - data[98] = 0xE9E0000; - data[99] = 0xE9E0000; - data[100] = 0x80FE0004; - add(baseAddr, data, length); - bdi.fastDownload(data, length); - length = 101; - data[0] = 0x390003E8; - data[1] = 0x7D2743D6; - data[2] = 0x7D2941D6; - data[3] = 0x7D293811; - data[4] = 0x40800008; - data[5] = 0x312903E8; - data[6] = 0xB13E0022; - data[7] = 0xE9E0000; - data[8] = 0x39400000; - data[9] = 0x915E0008; - data[10] = 0xE9E0000; - data[11] = 0x3D608000; - data[12] = 0x398BFFFF; - data[13] = 0x919E000C; - data[14] = 0xE9E0000; - data[15] = 0x38600000; - data[16] = 0x907E0010; - data[17] = 0x387E0000; - data[18] = 0x4BFFF3D9; - data[19] = 0x42800028; - data[20] = 0xA8820006; - data[21] = 0x30A40001; - data[22] = 0xB0A20006; - data[23] = 0xA8C20006; - data[24] = 0x20E60022; - data[25] = 0xCA70022; - data[26] = 0x54E8103A; - data[27] = 0x7D224214; - data[28] = 0x93C90018; - data[29] = 0xE9E0000; - data[30] = 0x39400001; - data[31] = 0x995E0017; - data[32] = 0x383FFFC8; - data[33] = 0xBBA10048; - data[34] = 0x80010054; - data[35] = 0x7C0803A6; - data[36] = 0x38210058; - data[37] = 0x4E800020; - data[38] = 0x9421FFB0; - data[39] = 0x7C0802A6; - data[40] = 0x9001004C; - data[41] = 0xBFC10044; - data[42] = 0x3BE10038; - data[43] = 0x90410014; - data[44] = 0x39600001; - data[45] = 0x99620000; - data[46] = 0x39800000; - data[47] = 0xB1820002; - data[48] = 0x38600000; - data[49] = 0x906200A0; - data[50] = 0x906200A4; - data[51] = 0x38800000; - data[52] = 0xB0820004; - data[53] = 0x38A00000; - data[54] = 0xB0A20006; - data[55] = 0x38C00022; - data[56] = 0xB0C20008; - data[57] = 0x8062FFF8; - data[58] = 0x8042FFE8; - data[59] = 0x4BBF73CD; - data[60] = 0x80410014; - data[61] = 0x9062000C; - data[62] = 0x80E2000C; - data[63] = 0xE870000; - data[64] = 0x3D008000; - data[65] = 0x3928FFFF; - data[66] = 0x91270018; - data[67] = 0x8142000C; - data[68] = 0xE8A0000; - data[69] = 0x39600000; - data[70] = 0xB16A0020; - data[71] = 0x8062FFF8; - data[72] = 0x8042FFE8; - data[73] = 0x4BBF7395; - data[74] = 0x80410014; - data[75] = 0x90620010; - data[76] = 0x81820010; - data[77] = 0xE8C0000; - data[78] = 0x3C608000; - data[79] = 0x906C0018; - data[80] = 0x80820010; - data[81] = 0xE840000; - data[82] = 0x38A00000; - data[83] = 0xB0A40020; - data[84] = 0x8062FFFC; - data[85] = 0x8042FFE8; - data[86] = 0x4BBF7361; - data[87] = 0x80410014; - data[88] = 0x90620014; - data[89] = 0x80C20010; - data[90] = 0x90C20018; - data[91] = 0x3BC00001; - data[92] = 0x2F1E0021; - data[93] = 0x41990020; - data[94] = 0xCBE0022; - data[95] = 0x57C7103A; - data[96] = 0x7D023A14; - data[97] = 0x8122000C; - data[98] = 0x91280018; - data[99] = 0x33DE0001; - data[100] = 0x4280FFE0; - add(baseAddr, data, length); - bdi.fastDownload(data, length); - length = 40; - data[0] = 0x3D400080; - data[1] = 0x396A2AC8; - data[2] = 0x8182FFEC; - data[3] = 0x916C0010; - data[4] = 0x904C0014; - data[5] = 0x383FFFC8; - data[6] = 0xBBC10044; - data[7] = 0x8001004C; - data[8] = 0x7C0803A6; - data[9] = 0x38210050; - data[10] = 0x4E800020; - data[11] = 0x9421FFC0; - data[12] = 0xBFE1003C; - data[13] = 0x3BE10038; - data[14] = 0x383FFFC8; - data[15] = 0xBBE1003C; - data[16] = 0x38210040; - data[17] = 0x4E800020; - data[18] = 0x9421FFC0; - data[19] = 0xBFC10038; - data[20] = 0x3BE10038; - data[21] = 0x3BC30000; - data[22] = 0x383FFFC8; - data[23] = 0xBBC10038; - data[24] = 0x38210040; - data[25] = 0x4E800020; - data[26] = 0x9421FFC0; - data[27] = 0x7C0802A6; - data[28] = 0x9001003C; - data[29] = 0xBFE10038; - data[30] = 0x3BE10038; - data[31] = 0x90410014; - data[32] = 0x4BFFFE85; - data[33] = 0x383FFFC8; - data[34] = 0xBBE10038; - data[35] = 0x8001003C; - data[36] = 0x7C0803A6; - data[37] = 0x38210040; - data[38] = 0x4E800020; - data[39] = 0x73C16892; - add(baseAddr, data, length); - bdi.fastDownload(data, length); - bdi.stopFastDownload(); - baseAddr = 0x80330C; - bdi.startFastDownload(baseAddr); - length = 27; - data[0] = 0x0; - data[1] = 0x803348; - data[2] = 0x0; - data[3] = 0x80336C; - data[4] = 0x8; - data[5] = 0x8034A0; - data[6] = 0x0; - data[7] = 0x80330C; - data[8] = 0x6C; - data[9] = 0x803378; - data[10] = 0x15C; - data[11] = 0x8034D4; - data[12] = 0x8; - data[13] = 0x8034DC; - data[14] = 0x0; - data[15] = 0x9; - data[16] = 0x4472764D; - data[17] = 0x70696F73; - data[18] = 0x6D000000; - data[19] = 0x0; - data[20] = 0x0; - data[21] = 0x0; - data[22] = 0x0; - data[23] = 0x0; - data[24] = 0x0; - data[25] = 0x3FA6E0; - data[26] = 0x8451FDF2; - add(baseAddr, data, length); - bdi.fastDownload(data, length); - bdi.stopFastDownload(); - baseAddr = 0x803378; - bdi.startFastDownload(baseAddr); - length = 87; - data[0] = 0x9421FFB0; - data[1] = 0x7C000026; - data[2] = 0x9001004C; - data[3] = 0xBFA10040; - data[4] = 0x3BE10038; - data[5] = 0x3BC30000; - data[6] = 0x2C840000; - data[7] = 0x4E663042; - data[8] = 0x3C600030; - data[9] = 0x38836102; - data[10] = 0xA3A40000; - data[11] = 0x40930014; - data[12] = 0x38A00001; - data[13] = 0x7CA5F030; - data[14] = 0x7FBD2B78; - data[15] = 0x42800010; - data[16] = 0x38C00001; - data[17] = 0x7CC6F030; - data[18] = 0x7FBD3078; - data[19] = 0x3CE00030; - data[20] = 0x39076102; - data[21] = 0xB3A80000; - data[22] = 0x383FFFC8; - data[23] = 0xBBA10040; - data[24] = 0x8001004C; - data[25] = 0x7C0FF120; - data[26] = 0x38210050; - data[27] = 0x4E800020; - data[28] = 0x9421FFB0; - data[29] = 0x7C000026; - data[30] = 0x9001004C; - data[31] = 0xBFA10040; - data[32] = 0x3BE10038; - data[33] = 0x3BC30000; - data[34] = 0x2F040000; - data[35] = 0x4E7AD042; - data[36] = 0x3D200030; - data[37] = 0x39496100; - data[38] = 0xA3AA0000; - data[39] = 0x40930014; - data[40] = 0x39600001; - data[41] = 0x7D6BF030; - data[42] = 0x7FBD5B78; - data[43] = 0x42800010; - data[44] = 0x39800001; - data[45] = 0x7D8CF030; - data[46] = 0x7FBD6078; - data[47] = 0x3C600030; - data[48] = 0x38836100; - data[49] = 0xB3A40000; - data[50] = 0x383FFFC8; - data[51] = 0xBBA10040; - data[52] = 0x8001004C; - data[53] = 0x7C0FF120; - data[54] = 0x38210050; - data[55] = 0x4E800020; - data[56] = 0x9421FFB0; - data[57] = 0xBFA10044; - data[58] = 0x3BE10038; - data[59] = 0x3BC30000; - data[60] = 0x3CA00030; - data[61] = 0x38C56100; - data[62] = 0xA3A60000; - data[63] = 0x7FC7F0F8; - data[64] = 0x5FA73801; - data[65] = 0x4F821042; - data[66] = 0x7D000026; - data[67] = 0x5503EFFE; - data[68] = 0x42800008; - data[69] = 0x7FE00008; - data[70] = 0x383FFFC8; - data[71] = 0xBBA10044; - data[72] = 0x38210050; - data[73] = 0x4E800020; - data[74] = 0x9421FFC0; - data[75] = 0x7C0802A6; - data[76] = 0x9001003C; - data[77] = 0xBFE10038; - data[78] = 0x3BE10038; - data[79] = 0x90410014; - data[80] = 0x383FFFC8; - data[81] = 0xBBE10038; - data[82] = 0x8001003C; - data[83] = 0x7C0803A6; - data[84] = 0x38210040; - data[85] = 0x4E800020; - data[86] = 0x84BDA90A; - add(baseAddr, data, length); - bdi.fastDownload(data, length); - bdi.stopFastDownload(); - baseAddr = 0x8034DC; - bdi.startFastDownload(baseAddr); - length = 60; - data[0] = 0x1; - data[1] = 0x803728; - data[2] = 0x80351C; - data[3] = 0x803570; - data[4] = 0x803540; - data[5] = 0x10; - data[6] = 0x803680; - data[7] = 0x0; - data[8] = 0x8034DC; - data[9] = 0xF0; - data[10] = 0x8035CC; - data[11] = 0x14C; - data[12] = 0x803718; - data[13] = 0x10; - data[14] = 0x803728; - data[15] = 0x8; - data[16] = 0xF; - data[17] = 0x44727674; - data[18] = 0x6573744C; - data[19] = 0x6564426C; - data[20] = 0x696E6B00; - data[21] = 0x0; - data[22] = 0x0; - data[23] = 0x0; - data[24] = 0x0; - data[25] = 0x3FA720; - data[26] = 0x80325C; - data[27] = 0x8034DC; - data[28] = 0x803570; - data[29] = 0x8022F0; - data[30] = 0x80325C; - data[31] = 0x802370; - data[32] = 0x80325C; - data[33] = 0x8035CC; - data[34] = 0x803728; - data[35] = 0x1; - data[36] = 0xC; - data[37] = 0x24; - data[38] = 0x1; - data[39] = 0x3; - data[40] = 0xC; - data[41] = 0x8034DC; - data[42] = 0x80351C; - data[43] = 0x8035B4; - data[44] = 0x0; - data[45] = 0x802130; - data[46] = 0x803570; - data[47] = 0x0; - data[48] = 0x0; - data[49] = 0x0; - data[50] = 0x0; - data[51] = 0x0; - data[52] = 0x0; - data[53] = 0xC0; - data[54] = 0xB; - data[55] = 0x3F5E426C; - data[56] = 0x696E6B54; - data[57] = 0x61736B00; - data[58] = 0x0; - data[59] = 0x86212A8C; - add(baseAddr, data, length); - bdi.fastDownload(data, length); - bdi.stopFastDownload(); - baseAddr = 0x8035CC; - bdi.startFastDownload(baseAddr); - length = 83; - data[0] = 0x9421FFB0; - data[1] = 0x7C0802A6; - data[2] = 0x9001004C; - data[3] = 0xBFA10040; - data[4] = 0x3BE10038; - data[5] = 0x90410014; - data[6] = 0x3BC30000; - data[7] = 0x88620004; - data[8] = 0x2C830000; - data[9] = 0x4186001C; - data[10] = 0x3860000F; - data[11] = 0x38800001; - data[12] = 0x8042FFF8; - data[13] = 0x4BFFFDE9; - data[14] = 0x80410014; - data[15] = 0x42800018; - data[16] = 0x3860000F; - data[17] = 0x38800000; - data[18] = 0x8042FFF8; - data[19] = 0x4BFFFDD1; - data[20] = 0x80410014; - data[21] = 0x88820004; - data[22] = 0x20A40001; - data[23] = 0x98A20004; - data[24] = 0x383FFFC8; - data[25] = 0xBBA10040; - data[26] = 0x8001004C; - data[27] = 0x7C0803A6; - data[28] = 0x38210050; - data[29] = 0x4E800020; - data[30] = 0x9421FFB8; - data[31] = 0xBFC10040; - data[32] = 0x3BE10038; - data[33] = 0x3BC00000; - data[34] = 0x2F1E004C; - data[35] = 0x41990018; - data[36] = 0x30DE0100; - data[37] = 0x3CE00080; - data[38] = 0x7CC7F12E; - data[39] = 0x33DE0004; - data[40] = 0x4280FFE8; - data[41] = 0x383FFFC8; - data[42] = 0xBBC10040; - data[43] = 0x38210048; - data[44] = 0x4E800020; - data[45] = 0x9421FFC0; - data[46] = 0x7C0802A6; - data[47] = 0x9001003C; - data[48] = 0xBFE10038; - data[49] = 0x3BE10038; - data[50] = 0x90410014; - data[51] = 0x8062FFFC; - data[52] = 0x8042FFF0; - data[53] = 0x4BBF6E29; - data[54] = 0x80410014; - data[55] = 0x90620000; - data[56] = 0x81020000; - data[57] = 0xE880000; - data[58] = 0x392001F4; - data[59] = 0x91280004; - data[60] = 0x80620000; - data[61] = 0x8042FFF4; - data[62] = 0x4BFFF825; - data[63] = 0x80410014; - data[64] = 0x3860000F; - data[65] = 0x38800001; - data[66] = 0x8042FFF8; - data[67] = 0x4BFFFCA1; - data[68] = 0x80410014; - data[69] = 0x3860000F; - data[70] = 0x38800001; - data[71] = 0x8042FFF8; - data[72] = 0x4BFFFCFD; - data[73] = 0x80410014; - data[74] = 0x39400000; - data[75] = 0x99420004; - data[76] = 0x383FFFC8; - data[77] = 0xBBE10038; - data[78] = 0x8001003C; - data[79] = 0x7C0803A6; - data[80] = 0x38210040; - data[81] = 0x4E800020; - data[82] = 0x87111E2A; - add(baseAddr, data, length); - bdi.fastDownload(data, length); - bdi.stopFastDownload(); - } - - public static void doFill2() throws BDIException, USBException, - DispatchException { - index = 0; - - bdi.writeMem(0x2FC100, 0x01000003, 4); - bdi.writeMem(0x2FC104, 0x0FFC00020, 4); - bdi.writeMem(0x2FC108, 0x0800003, 4); - bdi.writeMem(0x2FC10C, 0x0FFE00020, 4); - bdi.writeMem(0x2FC140, 3, 4); - bdi.writeMem(0x2FC144, 0x7E000000, 4); - bdi.writeSPR(158, 0x07); - bdi.writeMem(0x2FC288, -1, 4); - bdi.writeSPR(149, 0x031C7400F); - bdi.writeSPR(27, 0x03802); - - int length; - int[] data = new int[bdi.getMaxNofWordsFastDownload()]; - - baseAddr = 0x3f9800; - bdi.startFastDownload(baseAddr); - length = 101; - data[0] = 0x0; - data[1] = 0x0; - data[2] = 0x0; - data[3] = 0x0; - data[4] = 0xa8; - data[5] = 0x80; - data[6] = 0x38; - data[7] = 0x54; - data[8] = 0x68; - data[9] = 0x74; - data[10] = 0x0; - data[11] = 0x0; - data[12] = 0x0; - data[13] = 0x0; - data[14] = 0x3; - data[15] = 0x0; - data[16] = 0x2000; - data[17] = 0x3f9800; - data[18] = 0x6800; - data[19] = 0x800000; - data[20] = 0x200000; - data[21] = 0x2; - data[22] = 0x2000; - data[23] = 0x3e000; - data[24] = 0x40000; - data[25] = 0x30000; - data[26] = 0x1; - data[27] = 0x3ff800; - data[28] = 0x800; - data[29] = 0x1; - data[30] = 0x803730; - data[31] = 0x1fc8cc; - data[32] = 0x30; - data[33] = 0x6; - data[34] = 0x3f98a8; - data[35] = 0x3f9914; - data[36] = 0x3f9acc; - data[37] = 0x802000; - data[38] = 0x80330c; - data[39] = 0x8034dc; - data[40] = 0x0; - data[41] = 0x0; - data[42] = 0x0; - data[43] = 0x0; - data[44] = 0x22d4cc; - data[45] = 0x618a7525; - data[46] = 0x10e09e0; - data[47] = 0x10bbbfc; - data[48] = 0x10bbc04; - data[49] = 0x10bbc08; - data[50] = 0x10e09e0; - data[51] = 0x22d4f0; - data[52] = 0x618a7620; - data[53] = 0x10bbbe0; - data[54] = 0x0; - data[55] = 0x22d4ec; - data[56] = 0x618a6660; - data[57] = 0x0; - data[58] = 0x10e0a20; - data[59] = 0x10e09e0; - data[60] = 0x22d4fc; - data[61] = 0x618f1be6; - data[62] = 0x10bbbe0; - data[63] = 0x22d51c; - data[64] = 0x618f2ed4; - data[65] = 0x10bbc20; - data[66] = 0x10bbbe0; - data[67] = 0x2; - data[68] = 0x22d608; - data[69] = 0x618f4939; - data[70] = 0x4d; - data[71] = 0x2de; - data[72] = 0x22d62c; - data[73] = 0x618e01a4; - data[74] = 0xb000d; - data[75] = 0x1; - data[76] = 0x0; - data[77] = 0xffffffff; - data[78] = 0x1; - data[79] = 0x5fbb08; - data[80] = 0x2c2; - data[81] = 0x5fbb08; - data[82] = 0x22d568; - data[83] = 0x0; - data[84] = 0x0; - data[85] = 0x10e25e0; - data[86] = 0x0; - data[87] = 0x22d588; - data[88] = 0x618f2f10; - data[89] = 0x10be680; - data[90] = 0x22d588; - data[91] = 0x618f2fe6; - data[92] = 0x10bbc20; - data[93] = 0xdbbe0; - data[94] = 0x3f; - data[95] = 0x22d674; - data[96] = 0x618f4939; - data[97] = 0x1; - data[98] = 0x1; - data[99] = 0x1; - data[100] = 0x10be340; - add(baseAddr, data, length); - bdi.fastDownload(data, length); - bdi.stopFastDownload(); - baseAddr = 0x3f98a8; - bdi.startFastDownload(baseAddr); - length = 101; - data[0] = 0x0; - data[1] = 0x3f98e4; - data[2] = 0x0; - data[3] = 0x3f9908; - data[4] = 0x8; - data[5] = 0x3fa1f0; - data[6] = 0x0; - data[7] = 0x3f98a8; - data[8] = 0x6c; - data[9] = 0x3f9bf0; - data[10] = 0x64c; - data[11] = 0x3fa6d8; - data[12] = 0x8; - data[13] = 0x3fa6e0; - data[14] = 0x28; - data[15] = 0xb; - data[16] = 0x546f7070; - data[17] = 0x634b6572; - data[18] = 0x6e656c00; - data[19] = 0x0; - data[20] = 0x0; - data[21] = 0x0; - data[22] = 0x0; - data[23] = 0x0; - data[24] = 0x0; - data[25] = 0x0; - data[26] = 0xe9acbb39; - data[27] = 0x3ff800; - data[28] = 0x800; - data[29] = 0x1; - data[30] = 0x803730; - data[31] = 0x1fc8cc; - data[32] = 0x30; - data[33] = 0x6; - data[34] = 0x3f98a8; - data[35] = 0x3f9914; - data[36] = 0x3f9acc; - data[37] = 0x802000; - data[38] = 0x80330c; - data[39] = 0x8034dc; - data[40] = 0x0; - data[41] = 0x0; - data[42] = 0x0; - data[43] = 0x0; - data[44] = 0x22d4cc; - data[45] = 0x618a7525; - data[46] = 0x10e09e0; - data[47] = 0x10bbbfc; - data[48] = 0x10bbc04; - data[49] = 0x10bbc08; - data[50] = 0x10e09e0; - data[51] = 0x22d4f0; - data[52] = 0x618a7620; - data[53] = 0x10bbbe0; - data[54] = 0x0; - data[55] = 0x22d4ec; - data[56] = 0x618a6660; - data[57] = 0x0; - data[58] = 0x10e0a20; - data[59] = 0x10e09e0; - data[60] = 0x22d4fc; - data[61] = 0x618f1be6; - data[62] = 0x10bbbe0; - data[63] = 0x22d51c; - data[64] = 0x618f2ed4; - data[65] = 0x10bbc20; - data[66] = 0x10bbbe0; - data[67] = 0x2; - data[68] = 0x22d608; - data[69] = 0x618f4939; - data[70] = 0x4d; - data[71] = 0x2de; - data[72] = 0x22d62c; - data[73] = 0x618e01a4; - data[74] = 0xb000d; - data[75] = 0x1; - data[76] = 0x0; - data[77] = 0xffffffff; - data[78] = 0x1; - data[79] = 0x5fbb08; - data[80] = 0x2c2; - data[81] = 0x5fbb08; - data[82] = 0x22d568; - data[83] = 0x0; - data[84] = 0x0; - data[85] = 0x10e25e0; - data[86] = 0x0; - data[87] = 0x22d588; - data[88] = 0x618f2f10; - data[89] = 0x10be680; - data[90] = 0x22d588; - data[91] = 0x618f2fe6; - data[92] = 0x10bbc20; - data[93] = 0xdbbe0; - data[94] = 0x3f; - data[95] = 0x22d674; - data[96] = 0x618f4939; - data[97] = 0x1; - data[98] = 0x1; - data[99] = 0x1; - data[100] = 0x10be340; - add(baseAddr, data, length); - bdi.fastDownload(data, length); - bdi.stopFastDownload(); - baseAddr = 0x3f9bf0; - bdi.startFastDownload(baseAddr); - length = 101; - data[0] = 0x9421ffb0; - data[1] = 0xbf810040; - data[2] = 0x3be10038; - data[3] = 0x3bc30000; - data[4] = 0x3ba40000; - data[5] = 0x3c600030; - data[6] = 0x38836102; - data[7] = 0x38a08000; - data[8] = 0xb0a40000; - data[9] = 0x2c9e0000; - data[10] = 0x4085004c; - data[11] = 0x3cc00030; - data[12] = 0x38e66100; - data[13] = 0x39000000; - data[14] = 0xb1070000; - data[15] = 0x1f9d2710; - data[16] = 0x339cffff; - data[17] = 0x2f1c0000; - data[18] = 0x4199fff8; - data[19] = 0x3d200030; - data[20] = 0x39496100; - data[21] = 0x39608000; - data[22] = 0xb16a0000; - data[23] = 0x1f9d2710; - data[24] = 0x339cffff; - data[25] = 0x2f9c0000; - data[26] = 0x419dfff8; - data[27] = 0x33deffff; - data[28] = 0x4280ffb4; - data[29] = 0x383fffc8; - data[30] = 0xbb810040; - data[31] = 0x38210050; - data[32] = 0x4e800020; - data[33] = 0x9421ffb0; - data[34] = 0x7c0802a6; - data[35] = 0x9001004c; - data[36] = 0xbfc10044; - data[37] = 0x3be10038; - data[38] = 0x90410014; - data[39] = 0x7fcc42e6; - data[40] = 0x387e0000; - data[41] = 0x42800008; - data[42] = 0x7fe00008; - data[43] = 0x383fffc8; - data[44] = 0xbbc10044; - data[45] = 0x8001004c; - data[46] = 0x7c0803a6; - data[47] = 0x38210050; - data[48] = 0x4e800020; - data[49] = 0x9421ffb8; - data[50] = 0x7c0802a6; - data[51] = 0x90010044; - data[52] = 0xbfa10038; - data[53] = 0x3be10038; - data[54] = 0x90410014; - data[55] = 0x3bc30000; - data[56] = 0x3ba40000; - data[57] = 0x4bffffa1; - data[58] = 0x90620018; - data[59] = 0x81820018; - data[60] = 0x3c60000f; - data[61] = 0x38834240; - data[62] = 0x7cac23d7; - data[63] = 0x40800008; - data[64] = 0x30a5ffff; - data[65] = 0x90be0000; - data[66] = 0x80c20018; - data[67] = 0x38e003e8; - data[68] = 0x7d063bd7; - data[69] = 0x40800008; - data[70] = 0x3108ffff; - data[71] = 0x392003e8; - data[72] = 0x7d484bd6; - data[73] = 0x7d4a49d6; - data[74] = 0x7d4a4011; - data[75] = 0x40800008; - data[76] = 0x314a03e8; - data[77] = 0xb15d0000; - data[78] = 0x383fffc8; - data[79] = 0xbba10038; - data[80] = 0x80010044; - data[81] = 0x7c0803a6; - data[82] = 0x38210048; - data[83] = 0x4e800020; - data[84] = 0x9421ff98; - data[85] = 0xbf21004c; - data[86] = 0x3be10038; - data[87] = 0x3bc30000; - data[88] = 0x3ba40000; - data[89] = 0x3b7e0000; - data[90] = 0x3b800000; - data[91] = 0x7c9be800; - data[92] = 0x40840070; - data[93] = 0xa33b0000; - data[94] = 0x7f9ccb78; - data[95] = 0x3b40000f; - data[96] = 0x578b0001; - data[97] = 0x4182000c; - data[98] = 0x6b8c8000; - data[99] = 0x6d9c0810; - data[100] = 0x57830801; - add(baseAddr, data, length); - bdi.fastDownload(data, length); - length = 101; - data[0] = 0x4182000c; - data[1] = 0x6b844000; - data[2] = 0x6c9c0408; - data[3] = 0x57851001; - data[4] = 0x4182000c; - data[5] = 0x6b862000; - data[6] = 0x6cdc0204; - data[7] = 0x579c1838; - data[8] = 0x335afffd; - data[9] = 0x2f1a0000; - data[10] = 0x409affc4; - data[11] = 0x57870001; - data[12] = 0x41820010; - data[13] = 0x5788083c; - data[14] = 0x6d1c1021; - data[15] = 0x42800008; - data[16] = 0x579c083c; - data[17] = 0x337b0002; - data[18] = 0x4280ff90; - data[19] = 0x3b400010; - data[20] = 0x57890001; - data[21] = 0x41820010; - data[22] = 0x578a083c; - data[23] = 0x6d5c1021; - data[24] = 0x42800008; - data[25] = 0x579c083c; - data[26] = 0x335affff; - data[27] = 0x2f9a0000; - data[28] = 0x409effe0; - data[29] = 0x578b843e; - data[30] = 0x386b0000; - data[31] = 0x42800008; - data[32] = 0x7fe00008; - data[33] = 0x383fffc8; - data[34] = 0xbb21004c; - data[35] = 0x38210068; - data[36] = 0x4e800020; - data[37] = 0x9421ffc0; - data[38] = 0xbfe1003c; - data[39] = 0x3be10038; - data[40] = 0x42800000; - data[41] = 0x383fffc8; - data[42] = 0xbbe1003c; - data[43] = 0x38210040; - data[44] = 0x4e800020; - data[45] = 0x9421ffb8; - data[46] = 0x7c0802a6; - data[47] = 0x90010044; - data[48] = 0xbfa10038; - data[49] = 0x3be10038; - data[50] = 0x90410014; - data[51] = 0x3bc30000; - data[52] = 0x3ba40000; - data[53] = 0x2c9e027e; - data[54] = 0x40860014; - data[55] = 0x2f1d0800; - data[56] = 0x409a000c; - data[57] = 0x3bc00800; - data[58] = 0x7fde9ba6; - data[59] = 0x2f9e009e; - data[60] = 0x409e000c; - data[61] = 0x3bdd0000; - data[62] = 0x7fde23a6; - data[63] = 0x383fffc8; - data[64] = 0xbba10038; - data[65] = 0x80010044; - data[66] = 0x7c0803a6; - data[67] = 0x38210048; - data[68] = 0x4e800020; - data[69] = 0x9421ff38; - data[70] = 0x7c0802a6; - data[71] = 0x900100c4; - data[72] = 0xbde10080; - data[73] = 0x3be10038; - data[74] = 0x90410014; - data[75] = 0x3d800030; - data[76] = 0x386cc000; - data[77] = 0x3c800004; - data[78] = 0x90830000; - data[79] = 0x3ca00030; - data[80] = 0x38c5c284; - data[81] = 0x3ce00090; - data[82] = 0x90e60000; - data[83] = 0x3d000030; - data[84] = 0x3928c284; - data[85] = 0x82090000; - data[86] = 0x560a7801; - data[87] = 0x4182fff0; - data[88] = 0x3d600030; - data[89] = 0x398b7f80; - data[90] = 0x38600000; - data[91] = 0x906c0000; - data[92] = 0x3860009e; - data[93] = 0x38800007; - data[94] = 0x4bffff3d; - data[95] = 0x3c800030; - data[96] = 0x38a4c100; - data[97] = 0x3cc00100; - data[98] = 0x38e60003; - data[99] = 0x90e50000; - data[100] = 0x3d000030; - add(baseAddr, data, length); - bdi.fastDownload(data, length); - length = 101; - data[0] = 0x3928c104; - data[1] = 0x3d40ffc0; - data[2] = 0x396a0020; - data[3] = 0x91690000; - data[4] = 0x3d800030; - data[5] = 0x386cc108; - data[6] = 0x3c800080; - data[7] = 0x38a40003; - data[8] = 0x90a30000; - data[9] = 0x3cc00030; - data[10] = 0x38e6c10c; - data[11] = 0x3d00ffe0; - data[12] = 0x39280020; - data[13] = 0x91270000; - data[14] = 0x3d400030; - data[15] = 0x396ac03c; - data[16] = 0x39800000; - data[17] = 0xb18b0000; - data[18] = 0x3c600030; - data[19] = 0x3883c280; - data[20] = 0x3ca08121; - data[21] = 0x38c50300; - data[22] = 0x90c40000; - data[23] = 0x3ce00030; - data[24] = 0x3907c200; - data[25] = 0x39200001; - data[26] = 0xb1280000; - data[27] = 0x3d400030; - data[28] = 0x396ac288; - data[29] = 0xa1eb0000; - data[30] = 0x55ecd001; - data[31] = 0x4082000c; - data[32] = 0x55e38001; - data[33] = 0x4182008c; - data[34] = 0x3c800030; - data[35] = 0x38a4c004; - data[36] = 0x38c0ff83; - data[37] = 0x90c50000; - data[38] = 0x3ce00030; - data[39] = 0x3907c140; - data[40] = 0x39200001; - data[41] = 0x91280000; - data[42] = 0x3d400030; - data[43] = 0x396ac144; - data[44] = 0x3d807e00; - data[45] = 0x918b0000; - data[46] = 0x3c600100; - data[47] = 0x38832010; - data[48] = 0x82240000; - data[49] = 0x3ca00040; - data[50] = 0x38c59800; - data[51] = 0x3ce00100; - data[52] = 0x39072000; - data[53] = 0x3926fffc; - data[54] = 0x40860014; - data[55] = 0x2f1d0800; - data[56] = 0x409a000c; - data[57] = 0x3bc00800; - data[58] = 0x7fde9ba6; - data[59] = 0x2f9e009e; - data[60] = 0x409e000c; - data[61] = 0x3bdd0000; - data[62] = 0x7fde23a6; - data[63] = 0x383fffc8; - data[64] = 0xbba10038; - data[65] = 0x80010044; - data[66] = 0x7c0803a6; - data[67] = 0x38210048; - data[68] = 0x4e800020; - data[69] = 0x9421ff38; - data[70] = 0x7c0802a6; - data[71] = 0x900100c4; - data[72] = 0xbde10080; - data[73] = 0x3be10038; - data[74] = 0x90410014; - data[75] = 0x3d800030; - data[76] = 0x386cc000; - data[77] = 0x3c800004; - data[78] = 0x90830000; - data[79] = 0x3ca00030; - data[80] = 0x38c5c284; - data[81] = 0x3ce00090; - data[82] = 0x90e60000; - data[83] = 0x3d000030; - data[84] = 0x3928c284; - data[85] = 0x82090000; - data[86] = 0x560a7801; - data[87] = 0x4182fff0; - data[88] = 0x3d600030; - data[89] = 0x398b7f80; - data[90] = 0x38600000; - data[91] = 0x906c0000; - data[92] = 0x3860009e; - data[93] = 0x38800007; - data[94] = 0x4bffff3d; - data[95] = 0x3c800030; - data[96] = 0x38a4c100; - data[97] = 0x3cc00100; - data[98] = 0x38e60003; - data[99] = 0x90e50000; - data[100] = 0x3d000030; - add(baseAddr, data, length); - bdi.fastDownload(data, length); - bdi.stopFastDownload(); - baseAddr = 0x3f9ff0; - bdi.startFastDownload(baseAddr); - length = 101; - data[0] = 0x3948fffc; - data[1] = 0x562be8ff; - data[2] = 0x7d6903a6; - data[3] = 0x562c077e; - data[4] = 0x7d8103a6; - data[5] = 0x41820018; - data[6] = 0x856a0004; - data[7] = 0x858a0004; - data[8] = 0x95690004; - data[9] = 0x95890004; - data[10] = 0x4200fff0; - data[11] = 0x38600004; - data[12] = 0x7d63542a; - data[13] = 0x7d634d2a; - data[14] = 0x3c800040; - data[15] = 0x3bc49814; - data[16] = 0x83de0000; - data[17] = 0x3cbe0040; - data[18] = 0x3bc59808; - data[19] = 0x3a600000; - data[20] = 0x38c00000; - data[21] = 0x90c20000; - data[22] = 0x83be0000; - data[23] = 0x2c9d0000; - data[24] = 0x40860008; - data[25] = 0x42800184; - data[26] = 0x825d0000; - data[27] = 0x30f20001; - data[28] = 0x54e8103a; - data[29] = 0x7f7d4214; - data[30] = 0x82db0010; - data[31] = 0x833b001c; - data[32] = 0x387d0000; - data[33] = 0x7c9dca14; - data[34] = 0x4bfffcc9; - data[35] = 0x2f030000; - data[36] = 0x419a0014; - data[37] = 0x38600008; - data[38] = 0x38800010; - data[39] = 0x4bfffb65; - data[40] = 0x4280fff4; - data[41] = 0x839b0020; - data[42] = 0x833b0024; - data[43] = 0x387c0000; - data[44] = 0x7c9cca14; - data[45] = 0x4bfffc9d; - data[46] = 0x2f830000; - data[47] = 0x419e0020; - data[48] = 0x38600010; - data[49] = 0x38800008; - data[50] = 0x4bfffb39; - data[51] = 0x38600004; - data[52] = 0x38800040; - data[53] = 0x4bfffb2d; - data[54] = 0x4280ffe8; - data[55] = 0x835b0008; - data[56] = 0x833b000c; - data[57] = 0x831b0028; - data[58] = 0x3938fffc; - data[59] = 0x395afffc; - data[60] = 0x572be8ff; - data[61] = 0x7d6903a6; - data[62] = 0x572c077e; - data[63] = 0x7d8103a6; - data[64] = 0x41820018; - data[65] = 0x856a0004; - data[66] = 0x858a0004; - data[67] = 0x95690004; - data[68] = 0x95890004; - data[69] = 0x4200fff0; - data[70] = 0x38600004; - data[71] = 0x7d63542a; - data[72] = 0x7d634d2a; - data[73] = 0x82fb0030; - data[74] = 0x3ab70000; - data[75] = 0x829b0034; - data[76] = 0x7e94aa14; - data[77] = 0x7c95a000; - data[78] = 0x40840014; - data[79] = 0x38800000; - data[80] = 0x90950000; - data[81] = 0x32b50004; - data[82] = 0x4280ffec; - data[83] = 0x2f130000; - data[84] = 0x419a0070; - data[85] = 0x38bf0040; - data[86] = 0x92c50000; - data[87] = 0x38df0040; - data[88] = 0x92e60004; - data[89] = 0x801f0040; - data[90] = 0x7c0903a6; - data[91] = 0x805f0044; - data[92] = 0x4e800421; - data[93] = 0x80410014; - data[94] = 0x2f930002; - data[95] = 0x409e0040; - data[96] = 0x3ce00030; - data[97] = 0x3907c018; - data[98] = 0x3d20ffff; - data[99] = 0x91280000; - data[100] = 0x3d400030; - add(baseAddr, data, length); - bdi.fastDownload(data, length); - length = 101; - data[0] = 0x396ac010; - data[1] = 0x3d80ffff; - data[2] = 0x918b0000; - data[3] = 0x3c600030; - data[4] = 0x3883c014; - data[5] = 0x3ca0ffff; - data[6] = 0x90a40000; - data[7] = 0x7e0000a6; - data[8] = 0x62108000; - data[9] = 0x7e000124; - data[10] = 0x42800014; - data[11] = 0x3cc00040; - data[12] = 0x38e69e18; - data[13] = 0x90e20010; - data[14] = 0x90420014; - data[15] = 0x81020000; - data[16] = 0x31280001; - data[17] = 0x91220000; - data[18] = 0x32730001; - data[19] = 0x33de0004; - data[20] = 0x4280fe74; - data[21] = 0x383fffc8; - data[22] = 0xb9e10080; - data[23] = 0x800100c4; - data[24] = 0x7c0803a6; - data[25] = 0x382100c8; - data[26] = 0x4e800020; - data[27] = 0x9421ffc0; - data[28] = 0x7c0802a6; - data[29] = 0x9001003c; - data[30] = 0xbfe10038; - data[31] = 0x3be10038; - data[32] = 0x90410014; - data[33] = 0x4bfffc91; - data[34] = 0x80020010; - data[35] = 0x7c0903a6; - data[36] = 0x80420014; - data[37] = 0x4e800421; - data[38] = 0x80410014; - data[39] = 0x383fffc8; - data[40] = 0xbbe10038; - data[41] = 0x8001003c; - data[42] = 0x7c0803a6; - data[43] = 0x38210040; - data[44] = 0x4e800020; - data[45] = 0xecf41b66; - data[46] = 0x2f830000; - data[47] = 0x419e0020; - data[48] = 0x38600010; - data[49] = 0x38800008; - data[50] = 0x4bfffb39; - data[51] = 0x38600004; - data[52] = 0x38800040; - data[53] = 0x4bfffb2d; - data[54] = 0x4280ffe8; - data[55] = 0x835b0008; - data[56] = 0x833b000c; - data[57] = 0x831b0028; - data[58] = 0x3938fffc; - data[59] = 0x395afffc; - data[60] = 0x572be8ff; - data[61] = 0x7d6903a6; - data[62] = 0x572c077e; - data[63] = 0x7d8103a6; - data[64] = 0x41820018; - data[65] = 0x856a0004; - data[66] = 0x858a0004; - data[67] = 0x95690004; - data[68] = 0x95890004; - data[69] = 0x4200fff0; - data[70] = 0x38600004; - data[71] = 0x7d63542a; - data[72] = 0x7d634d2a; - data[73] = 0x82fb0030; - data[74] = 0x3ab70000; - data[75] = 0x829b0034; - data[76] = 0x7e94aa14; - data[77] = 0x7c95a000; - data[78] = 0x40840014; - data[79] = 0x38800000; - data[80] = 0x90950000; - data[81] = 0x32b50004; - data[82] = 0x4280ffec; - data[83] = 0x2f130000; - data[84] = 0x419a0070; - data[85] = 0x38bf0040; - data[86] = 0x92c50000; - data[87] = 0x38df0040; - data[88] = 0x92e60004; - data[89] = 0x801f0040; - data[90] = 0x7c0903a6; - data[91] = 0x805f0044; - data[92] = 0x4e800421; - data[93] = 0x80410014; - data[94] = 0x2f930002; - data[95] = 0x409e0040; - data[96] = 0x3ce00030; - data[97] = 0x3907c018; - data[98] = 0x3d20ffff; - data[99] = 0x91280000; - data[100] = 0x3d400030; - add(baseAddr, data, length); - bdi.fastDownload(data, length); - bdi.stopFastDownload(); - baseAddr = 0x3f9914; - bdi.startFastDownload(baseAddr); - length = 101; - data[0] = 0x0; - data[1] = 0x3f9950; - data[2] = 0x3f9994; - data[3] = 0x3f9974; - data[4] = 0x18; - data[5] = 0x3fa6a0; - data[6] = 0x0; - data[7] = 0x3f9914; - data[8] = 0x1b8; - data[9] = 0x3fa23c; - data[10] = 0x49c; - data[11] = 0x3fa708; - data[12] = 0x18; - data[13] = 0x3fa720; - data[14] = 0x440; - data[15] = 0x9; - data[16] = 0x546f7070; - data[17] = 0x63486561; - data[18] = 0x70000000; - data[19] = 0x0; - data[20] = 0x0; - data[21] = 0x0; - data[22] = 0x0; - data[23] = 0x0; - data[24] = 0x0; - data[25] = 0x0; - data[26] = 0x3fa6e0; - data[27] = 0x3f9a6c; - data[28] = 0x3f99fc; - data[29] = 0x3f9994; - data[30] = 0xffffffff; - data[31] = 0xffffffff; - data[32] = 0x4; - data[33] = 0x0; - data[34] = 0x0; - data[35] = 0xfffffffc; - data[36] = 0x3f9914; - data[37] = 0x3f9950; - data[38] = 0x3f99d8; - data[39] = 0x3f99fc; - data[40] = 0x3f9994; - data[41] = 0x0; - data[42] = 0x0; - data[43] = 0x0; - data[44] = 0x0; - data[45] = 0x0; - data[46] = 0x0; - data[47] = 0x0; - data[48] = 0xffffffc0; - data[49] = 0x12; - data[50] = 0x54797065; - data[51] = 0x44657363; - data[52] = 0x72697074; - data[53] = 0x6f724465; - data[54] = 0x73630000; - data[55] = 0x0; - data[56] = 0xffffffff; - data[57] = 0xffffffff; - data[58] = 0x10; - data[59] = 0x0; - data[60] = 0x0; - data[61] = 0xfffffff8; - data[62] = 0x3f9914; - data[63] = 0x3f9950; - data[64] = 0x3f9a4c; - data[65] = 0x3f9a6c; - data[66] = 0x3f99fc; - data[67] = 0x0; - data[68] = 0x0; - data[69] = 0x0; - data[70] = 0x0; - data[71] = 0x0; - data[72] = 0x0; - data[73] = 0x0; - data[74] = 0x0; - data[75] = 0x8; - data[76] = 0xc; - data[77] = 0xffffffb4; - data[78] = 0xd; - data[79] = 0x46726565; - data[80] = 0x426c6f63; - data[81] = 0x6b446573; - data[82] = 0x63000000; - data[83] = 0x0; - data[84] = 0xffffffff; - data[85] = 0xffffffff; - data[86] = 0x8; - data[87] = 0x0; - data[88] = 0x0; - data[89] = 0xfffffff4; - data[90] = 0x3f9914; - data[91] = 0x3f9950; - data[92] = 0x3f9ab4; - data[93] = 0x0; - data[94] = 0x3f9a6c; - data[95] = 0x0; - data[96] = 0x0; - data[97] = 0x0; - data[98] = 0x0; - data[99] = 0x0; - data[100] = 0x0; - add(baseAddr, data, length); - bdi.fastDownload(data, length); - length = 101; - data[0] = 0x0; - data[1] = 0x0; - data[2] = 0xffffffbc; - data[3] = 0x9; - data[4] = 0x426c6f63; - data[5] = 0x6b446573; - data[6] = 0x63000000; - data[7] = 0x0; - data[8] = 0xea187be9; - data[9] = 0x3fa23c; - data[10] = 0x49c; - data[11] = 0x3fa708; - data[12] = 0x18; - data[13] = 0x3fa720; - data[14] = 0x440; - data[15] = 0x9; - data[16] = 0x546f7070; - data[17] = 0x63486561; - data[18] = 0x70000000; - data[19] = 0x0; - data[20] = 0x0; - data[21] = 0x0; - data[22] = 0x0; - data[23] = 0x0; - data[24] = 0x0; - data[25] = 0x0; - data[26] = 0x3fa6e0; - data[27] = 0x3f9a6c; - data[28] = 0x3f99fc; - data[29] = 0x3f9994; - data[30] = 0xffffffff; - data[31] = 0xffffffff; - data[32] = 0x4; - data[33] = 0x0; - data[34] = 0x0; - data[35] = 0xfffffffc; - data[36] = 0x3f9914; - data[37] = 0x3f9950; - data[38] = 0x3f99d8; - data[39] = 0x3f99fc; - data[40] = 0x3f9994; - data[41] = 0x0; - data[42] = 0x0; - data[43] = 0x0; - data[44] = 0x0; - data[45] = 0x0; - data[46] = 0x0; - data[47] = 0x0; - data[48] = 0xffffffc0; - data[49] = 0x12; - data[50] = 0x54797065; - data[51] = 0x44657363; - data[52] = 0x72697074; - data[53] = 0x6f724465; - data[54] = 0x73630000; - data[55] = 0x0; - data[56] = 0xffffffff; - data[57] = 0xffffffff; - data[58] = 0x10; - data[59] = 0x0; - data[60] = 0x0; - data[61] = 0xfffffff8; - data[62] = 0x3f9914; - data[63] = 0x3f9950; - data[64] = 0x3f9a4c; - data[65] = 0x3f9a6c; - data[66] = 0x3f99fc; - data[67] = 0x0; - data[68] = 0x0; - data[69] = 0x0; - data[70] = 0x0; - data[71] = 0x0; - data[72] = 0x0; - data[73] = 0x0; - data[74] = 0x0; - data[75] = 0x8; - data[76] = 0xc; - data[77] = 0xffffffb4; - data[78] = 0xd; - data[79] = 0x46726565; - data[80] = 0x426c6f63; - data[81] = 0x6b446573; - data[82] = 0x63000000; - data[83] = 0x0; - data[84] = 0xffffffff; - data[85] = 0xffffffff; - data[86] = 0x8; - data[87] = 0x0; - data[88] = 0x0; - data[89] = 0xfffffff4; - data[90] = 0x3f9914; - data[91] = 0x3f9950; - data[92] = 0x3f9ab4; - data[93] = 0x0; - data[94] = 0x3f9a6c; - data[95] = 0x0; - data[96] = 0x0; - data[97] = 0x0; - data[98] = 0x0; - data[99] = 0x0; - data[100] = 0x0; - add(baseAddr, data, length); - bdi.fastDownload(data, length); - bdi.stopFastDownload(); - baseAddr = 0x3fa23c; - bdi.startFastDownload(baseAddr); - length = 101; - data[0] = 0x9421ff90; - data[1] = 0x7c000026; - data[2] = 0x9001006c; - data[3] = 0xbf210050; - data[4] = 0x3be10038; - data[5] = 0x3bc30000; - data[6] = 0x3ba00000; - data[7] = 0x3b800000; - data[8] = 0x7fd92670; - data[9] = 0x2c990009; - data[10] = 0x40850008; - data[11] = 0x3b200009; - data[12] = 0xcb9000a; - data[13] = 0x5723103a; - data[14] = 0x7c821a14; - data[15] = 0x83a40414; - data[16] = 0x2f1d0000; - data[17] = 0x409a0024; - data[18] = 0x2f990009; - data[19] = 0x409c001c; - data[20] = 0x33390001; - data[21] = 0xcb9000a; - data[22] = 0x5725103a; - data[23] = 0x7cc22a14; - data[24] = 0x83a60414; - data[25] = 0x4280ffdc; - data[26] = 0x2c9e0080; - data[27] = 0x40850044; - data[28] = 0x2f1d0000; - data[29] = 0x419a003c; - data[30] = 0x4e600182; - data[31] = 0x41930034; - data[32] = 0xe9d0000; - data[33] = 0x80fd0004; - data[34] = 0x7f9e3800; - data[35] = 0x409d0010; - data[36] = 0xe9d0000; - data[37] = 0x83bd0008; - data[38] = 0x42800008; - data[39] = 0x4e600242; - data[40] = 0x2c9d0000; - data[41] = 0x40860008; - data[42] = 0x4e600242; - data[43] = 0x4280ffd0; - data[44] = 0x2f1d0000; - data[45] = 0x409a0008; - data[46] = 0x42800000; - data[47] = 0xe9d0000; - data[48] = 0x811d000c; - data[49] = 0x2f880000; - data[50] = 0x409e0020; - data[51] = 0xcb9000a; - data[52] = 0x5729103a; - data[53] = 0x7d424a14; - data[54] = 0xe9d0000; - data[55] = 0x817d0008; - data[56] = 0x916a0414; - data[57] = 0x4280001c; - data[58] = 0xe9d0000; - data[59] = 0x819d000c; - data[60] = 0xe8c0000; - data[61] = 0xe9d0000; - data[62] = 0x807d0008; - data[63] = 0x906c0008; - data[64] = 0xe9d0000; - data[65] = 0x809d0008; - data[66] = 0x2c840000; - data[67] = 0x4186001c; - data[68] = 0xe9d0000; - data[69] = 0x80bd0008; - data[70] = 0xe850000; - data[71] = 0xe9d0000; - data[72] = 0x80dd000c; - data[73] = 0x90c5000c; - data[74] = 0xe9d0000; - data[75] = 0x837d0004; - data[76] = 0x80e2000c; - data[77] = 0x7d1b3810; - data[78] = 0x9102000c; - data[79] = 0x7f5ed810; - data[80] = 0x7f592670; - data[81] = 0x2f190000; - data[82] = 0x4099008c; - data[83] = 0x8122000c; - data[84] = 0x7d49d214; - data[85] = 0x9142000c; - data[86] = 0x2f990009; - data[87] = 0x409d0008; - data[88] = 0x3b200009; - data[89] = 0x7d7df214; - data[90] = 0x3b8b0000; - data[91] = 0xe9c0000; - data[92] = 0x319c0004; - data[93] = 0x919c0000; - data[94] = 0xe9c0000; - data[95] = 0x935c0004; - data[96] = 0xe9c0000; - data[97] = 0xcb9000a; - data[98] = 0x5723103a; - data[99] = 0x7c821a14; - data[100] = 0x80a40414; - add(baseAddr, data, length); - bdi.fastDownload(data, length); - length = 101; - data[0] = 0x90bc0008; - data[1] = 0xe9c0000; - data[2] = 0x80dc0008; - data[3] = 0x2c860000; - data[4] = 0x41860014; - data[5] = 0xe9c0000; - data[6] = 0x80fc0008; - data[7] = 0xe870000; - data[8] = 0x9387000c; - data[9] = 0xe9c0000; - data[10] = 0x39000000; - data[11] = 0x911c000c; - data[12] = 0xcb9000a; - data[13] = 0x5729103a; - data[14] = 0x7d424a14; - data[15] = 0x938a0414; - data[16] = 0x387d0000; - data[17] = 0x42800008; - data[18] = 0x7fe00008; - data[19] = 0x383fffc8; - data[20] = 0xbb210050; - data[21] = 0x8001006c; - data[22] = 0x7c0ff120; - data[23] = 0x38210070; - data[24] = 0x4e800020; - data[25] = 0x9421ff90; - data[26] = 0x7c0802a6; - data[27] = 0x9001006c; - data[28] = 0xbf410054; - data[29] = 0x3be10038; - data[30] = 0x90410014; - data[31] = 0x3b800000; - data[32] = 0x3bc30000; - data[33] = 0x317e0004; - data[34] = 0x318b0010; - data[35] = 0x306cffff; - data[36] = 0x54640036; - data[37] = 0x3bc40000; - data[38] = 0x387e0000; - data[39] = 0x4bfffdd1; - data[40] = 0x3b830000; - data[41] = 0xe9c0000; - data[42] = 0x3ca055aa; - data[43] = 0x38c555aa; - data[44] = 0x90dc0000; - data[45] = 0xe9c0000; - data[46] = 0x3b7c0004; - data[47] = 0x3ba00000; - data[48] = 0x335efff8; - data[49] = 0x7f1dd000; - data[50] = 0x41990014; - data[51] = 0x38e00000; - data[52] = 0x7cfbe92e; - data[53] = 0x33bd0004; - data[54] = 0x4280ffec; - data[55] = 0x387b0000; - data[56] = 0x383fffc8; - data[57] = 0xbb410054; - data[58] = 0x8001006c; - data[59] = 0x7c0803a6; - data[60] = 0x38210070; - data[61] = 0x4e800020; - data[62] = 0x9421ff90; - data[63] = 0x7c0802a6; - data[64] = 0x9001006c; - data[65] = 0xbf210050; - data[66] = 0x3be10038; - data[67] = 0x90410014; - data[68] = 0x3bc00000; - data[69] = 0x3b600000; - data[70] = 0x3bc30000; - data[71] = 0xe9e0000; - data[72] = 0x811e0000; - data[73] = 0x31280004; - data[74] = 0x31490010; - data[75] = 0x316affff; - data[76] = 0x556c0036; - data[77] = 0x3bac0000; - data[78] = 0x387d0000; - data[79] = 0x4bfffd31; - data[80] = 0x3b630000; - data[81] = 0xe9b0000; - data[82] = 0x93db0000; - data[83] = 0xe9b0000; - data[84] = 0x3b5b0004; - data[85] = 0x3b800000; - data[86] = 0x333dfff8; - data[87] = 0x7f9cc800; - data[88] = 0x419d0014; - data[89] = 0x38600000; - data[90] = 0x7c7ae12e; - data[91] = 0x339c0004; - data[92] = 0x4280ffec; - data[93] = 0x387a0000; - data[94] = 0x383fffc8; - data[95] = 0xbb210050; - data[96] = 0x8001006c; - data[97] = 0x7c0803a6; - data[98] = 0x38210070; - data[99] = 0x4e800020; - data[100] = 0x9421ffc0; - add(baseAddr, data, length); - bdi.fastDownload(data, length); - length = 101; - data[0] = 0xbfe1003c; - data[1] = 0x3be10038; - data[2] = 0x383fffc8; - data[3] = 0xbbe1003c; - data[4] = 0x38210040; - data[5] = 0x4e800020; - data[6] = 0x9421ff60; - data[7] = 0xbe61006c; - data[8] = 0x3be10038; - data[9] = 0x3a600000; - data[10] = 0x3c800040; - data[11] = 0x38a49824; - data[12] = 0x82c50000; - data[13] = 0x3cd60040; - data[14] = 0x38e69800; - data[15] = 0x81070004; - data[16] = 0x91020004; - data[17] = 0x3d360040; - data[18] = 0x39499800; - data[19] = 0x816a0008; - data[20] = 0x91620000; - data[21] = 0x82a20004; - data[22] = 0x81820004; - data[23] = 0x80620000; - data[24] = 0x7e8c1a14; - data[25] = 0x38800000; - data[26] = 0x90950000; - data[27] = 0x32b50004; - data[28] = 0x7c95a000; - data[29] = 0x4184fff0; - data[30] = 0x80a20000; - data[31] = 0x54a6073e; - data[32] = 0x80e20000; - data[33] = 0x7d063810; - data[34] = 0x91020000; - data[35] = 0x81220004; - data[36] = 0x81420000; - data[37] = 0x7d695214; - data[38] = 0x91620008; - data[39] = 0x81820000; - data[40] = 0x9182000c; - data[41] = 0x3bc00000; - data[42] = 0x2f1e0009; - data[43] = 0x41990020; - data[44] = 0xcbe000a; - data[45] = 0x57c3103a; - data[46] = 0x7c821a14; - data[47] = 0x38a00000; - data[48] = 0x90a40414; - data[49] = 0x33de0001; - data[50] = 0x4280ffe0; - data[51] = 0x82620004; - data[52] = 0xe930000; - data[53] = 0xe930000; - data[54] = 0x4280ffec; - data[55] = 0x387b0000; - data[56] = 0x383fffc8; - data[57] = 0xbb410054; - data[58] = 0x8001006c; - data[59] = 0x7c0803a6; - data[60] = 0x38210070; - data[61] = 0x4e800020; - data[62] = 0x9421ff90; - data[63] = 0x7c0802a6; - data[64] = 0x9001006c; - data[65] = 0xbf210050; - data[66] = 0x3be10038; - data[67] = 0x90410014; - data[68] = 0x3bc00000; - data[69] = 0x3b600000; - data[70] = 0x3bc30000; - data[71] = 0xe9e0000; - data[72] = 0x811e0000; - data[73] = 0x31280004; - data[74] = 0x31490010; - data[75] = 0x316affff; - data[76] = 0x556c0036; - data[77] = 0x3bac0000; - data[78] = 0x387d0000; - data[79] = 0x4bfffd31; - data[80] = 0x3b630000; - data[81] = 0xe9b0000; - data[82] = 0x93db0000; - data[83] = 0xe9b0000; - data[84] = 0x3b5b0004; - data[85] = 0x3b800000; - data[86] = 0x333dfff8; - data[87] = 0x7f9cc800; - data[88] = 0x419d0014; - data[89] = 0x38600000; - data[90] = 0x7c7ae12e; - data[91] = 0x339c0004; - data[92] = 0x4280ffec; - data[93] = 0x387a0000; - data[94] = 0x383fffc8; - data[95] = 0xbb210050; - data[96] = 0x8001006c; - data[97] = 0x7c0803a6; - data[98] = 0x38210070; - data[99] = 0x4e800020; - data[100] = 0x9421ffc0; - add(baseAddr, data, length); - bdi.fastDownload(data, length); - bdi.stopFastDownload(); - baseAddr = 0x3fa63c; - bdi.startFastDownload(baseAddr); - length = 101; - data[0] = 0x38d30004; - data[1] = 0x90d30000; - data[2] = 0xe930000; - data[3] = 0x80e20000; - data[4] = 0x90f30004; - data[5] = 0xe930000; - data[6] = 0x39000000; - data[7] = 0x91130008; - data[8] = 0xe930000; - data[9] = 0x81330004; - data[10] = 0x7d3e2670; - data[11] = 0x2f9e0009; - data[12] = 0x409d0008; - data[13] = 0x3bc00009; - data[14] = 0xcbe000a; - data[15] = 0x57ca103a; - data[16] = 0x7d625214; - data[17] = 0x926b0414; - data[18] = 0xe930000; - data[19] = 0x39800000; - data[20] = 0x9193000c; - data[21] = 0x383fffc8; - data[22] = 0xba61006c; - data[23] = 0x382100a0; - data[24] = 0x4e800020; - data[25] = 0x9421ffc0; - data[26] = 0x7c0802a6; - data[27] = 0x9001003c; - data[28] = 0xbfe10038; - data[29] = 0x3be10038; - data[30] = 0x90410014; - data[31] = 0x4bfffec5; - data[32] = 0x383fffc8; - data[33] = 0xbbe10038; - data[34] = 0x8001003c; - data[35] = 0x7c0803a6; - data[36] = 0x38210040; - data[37] = 0x4e800020; - data[38] = 0xf340dd8b; - data[39] = 0x81820000; - data[40] = 0x9182000c; - data[41] = 0x3bc00000; - data[42] = 0x2f1e0009; - data[43] = 0x41990020; - data[44] = 0xcbe000a; - data[45] = 0x57c3103a; - data[46] = 0x7c821a14; - data[47] = 0x38a00000; - data[48] = 0x90a40414; - data[49] = 0x33de0001; - data[50] = 0x4280ffe0; - data[51] = 0x82620004; - data[52] = 0xe930000; - data[53] = 0xe930000; - data[54] = 0x4280ffec; - data[55] = 0x387b0000; - data[56] = 0x383fffc8; - data[57] = 0xbb410054; - data[58] = 0x8001006c; - data[59] = 0x7c0803a6; - data[60] = 0x38210070; - data[61] = 0x4e800020; - data[62] = 0x9421ff90; - data[63] = 0x7c0802a6; - data[64] = 0x9001006c; - data[65] = 0xbf210050; - data[66] = 0x3be10038; - data[67] = 0x90410014; - data[68] = 0x3bc00000; - data[69] = 0x3b600000; - data[70] = 0x3bc30000; - data[71] = 0xe9e0000; - data[72] = 0x811e0000; - data[73] = 0x31280004; - data[74] = 0x31490010; - data[75] = 0x316affff; - data[76] = 0x556c0036; - data[77] = 0x3bac0000; - data[78] = 0x387d0000; - data[79] = 0x4bfffd31; - data[80] = 0x3b630000; - data[81] = 0xe9b0000; - data[82] = 0x93db0000; - data[83] = 0xe9b0000; - data[84] = 0x3b5b0004; - data[85] = 0x3b800000; - data[86] = 0x333dfff8; - data[87] = 0x7f9cc800; - data[88] = 0x419d0014; - data[89] = 0x38600000; - data[90] = 0x7c7ae12e; - data[91] = 0x339c0004; - data[92] = 0x4280ffec; - data[93] = 0x387a0000; - data[94] = 0x383fffc8; - data[95] = 0xbb210050; - data[96] = 0x8001006c; - data[97] = 0x7c0803a6; - data[98] = 0x38210070; - data[99] = 0x4e800020; - data[100] = 0x9421ffc0; - add(baseAddr, data, length); - bdi.fastDownload(data, length); - bdi.stopFastDownload(); - baseAddr = 0x3f9acc; - bdi.startFastDownload(baseAddr); - length = 101; - data[0] = 0x10; - data[1] = 0x3faba0; - data[2] = 0x3faba4; - data[3] = 0x3faba8; - data[4] = 0x3fabac; - data[5] = 0x3fabb0; - data[6] = 0x3fabb4; - data[7] = 0x3fabb8; - data[8] = 0x3fabbc; - data[9] = 0x3fabc0; - data[10] = 0x3fabc4; - data[11] = 0x3fabc8; - data[12] = 0x3fabcc; - data[13] = 0x3fabd0; - data[14] = 0x3fabd4; - data[15] = 0x3fabd8; - data[16] = 0x3fabdc; - data[17] = 0x3f9b48; - data[18] = 0x3f9b8c; - data[19] = 0x3f9b6c; - data[20] = 0x10; - data[21] = 0x1fbc; - data[22] = 0x0; - data[23] = 0x3f9acc; - data[24] = 0x124; - data[25] = 0x0; - data[26] = 0x1ff4; - data[27] = 0x3fab60; - data[28] = 0x10; - data[29] = 0x3fab70; - data[30] = 0x70; - data[31] = 0xf; - data[32] = 0x546f7070; - data[33] = 0x63457863; - data[34] = 0x65707469; - data[35] = 0x6f6e7300; - data[36] = 0x0; - data[37] = 0x0; - data[38] = 0x0; - data[39] = 0x0; - data[40] = 0x0; - data[41] = 0x3fa720; - data[42] = 0x3fa6e0; - data[43] = 0x3f9b8c; - data[44] = 0x0; - data[45] = 0x3fab70; - data[46] = 0xffffffff; - data[47] = 0xffffffff; - data[48] = 0x14; - data[49] = 0x0; - data[50] = 0x1; - data[51] = 0xfffffffc; - data[52] = 0x3f9acc; - data[53] = 0x3f9b48; - data[54] = 0x3f9bd4; - data[55] = 0x0; - data[56] = 0x3f9b8c; - data[57] = 0x0; - data[58] = 0x0; - data[59] = 0x0; - data[60] = 0x0; - data[61] = 0x0; - data[62] = 0x0; - data[63] = 0x0; - data[64] = 0x10; - data[65] = 0xffffffbc; - data[66] = 0xd; - data[67] = 0x496e7465; - data[68] = 0x72727570; - data[69] = 0x74446573; - data[70] = 0x63000000; - data[71] = 0x0; - data[72] = 0xebd013b6; - data[73] = 0x31280004; - data[74] = 0x31490010; - data[75] = 0x316affff; - data[76] = 0x556c0036; - data[77] = 0x3bac0000; - data[78] = 0x387d0000; - data[79] = 0x4bfffd31; - data[80] = 0x3b630000; - data[81] = 0xe9b0000; - data[82] = 0x93db0000; - data[83] = 0xe9b0000; - data[84] = 0x3b5b0004; - data[85] = 0x3b800000; - data[86] = 0x333dfff8; - data[87] = 0x7f9cc800; - data[88] = 0x419d0014; - data[89] = 0x38600000; - data[90] = 0x7c7ae12e; - data[91] = 0x339c0004; - data[92] = 0x4280ffec; - data[93] = 0x387a0000; - data[94] = 0x383fffc8; - data[95] = 0xbb210050; - data[96] = 0x8001006c; - data[97] = 0x7c0803a6; - data[98] = 0x38210070; - data[99] = 0x4e800020; - data[100] = 0x9421ffc0; - add(baseAddr, data, length); - bdi.fastDownload(data, length); - bdi.stopFastDownload(); - baseAddr = 0x0; - bdi.startFastDownload(baseAddr); - length = 101; - data[0] = 0x9421ffc0; - data[1] = 0xbfc10038; - data[2] = 0x3be10038; - data[3] = 0x3bc30000; - data[4] = 0x80620008; - data[5] = 0x30830001; - data[6] = 0x90820008; - data[7] = 0x383fffc8; - data[8] = 0xbbc10038; - data[9] = 0x38210040; - data[10] = 0x4e800020; - data[11] = 0x9421ffb0; - data[12] = 0xbf810040; - data[13] = 0x3be10038; - data[14] = 0x3bc30000; - data[15] = 0x3ba40000; - data[16] = 0x3ca00030; - data[17] = 0x38c56102; - data[18] = 0x38e08000; - data[19] = 0xb0e60000; - data[20] = 0x2c9e0000; - data[21] = 0x4085004c; - data[22] = 0x3d000030; - data[23] = 0x39286100; - data[24] = 0x39400000; - data[25] = 0xb1490000; - data[26] = 0x1f9d2710; - data[27] = 0x339cffff; - data[28] = 0x2f1c0000; - data[29] = 0x4199fff8; - data[30] = 0x3d600030; - data[31] = 0x398b6100; - data[32] = 0x38608000; - data[33] = 0xb06c0000; - data[34] = 0x1f9d2710; - data[35] = 0x339cffff; - data[36] = 0x2f9c0000; - data[37] = 0x419dfff8; - data[38] = 0x33deffff; - data[39] = 0x4280ffb4; - data[40] = 0x383fffc8; - data[41] = 0xbb810040; - data[42] = 0x38210050; - data[43] = 0x4e800020; - data[44] = 0x0; - data[45] = 0x0; - data[46] = 0x9421ff24; - data[47] = 0x900100c0; - data[48] = 0x7c1a02a6; - data[49] = 0x900100c4; - data[50] = 0x7c1b02a6; - data[51] = 0x900100c8; - data[52] = 0x7c1113a6; - data[53] = 0x7c0802a6; - data[54] = 0x900100d0; - data[55] = 0x7c000026; - data[56] = 0x900100d4; - data[57] = 0x7c0902a6; - data[58] = 0x900100d8; - data[59] = 0xbc410048; - data[60] = 0x3be10038; - data[61] = 0x3c400040; - data[62] = 0x3842ab70; - data[63] = 0x90410014; - data[64] = 0x3c800040; - data[65] = 0x3824ffe0; - data[66] = 0x3ca00100; - data[67] = 0x38c52014; - data[68] = 0x83c60000; - data[69] = 0x3cfe0100; - data[70] = 0x39072000; - data[71] = 0x83a80008; - data[72] = 0x839d0000; - data[73] = 0x313d0004; - data[74] = 0x578a103a; - data[75] = 0x7d695214; - data[76] = 0x836b0030; - data[77] = 0x385b0000; - data[78] = 0x319d0004; - data[79] = 0x5783103a; - data[80] = 0x7c8c1a14; - data[81] = 0x83640010; - data[82] = 0x387b0000; - data[83] = 0x7c7a03a6; - data[84] = 0x38603802; - data[85] = 0x7c7b03a6; - data[86] = 0x4c000064; - data[87] = 0x383fffc8; - data[88] = 0xb8410048; - data[89] = 0x800100d8; - data[90] = 0x7c0903a6; - data[91] = 0x800100d4; - data[92] = 0x7c0ff120; - data[93] = 0x800100d0; - data[94] = 0x7c0803a6; - data[95] = 0x800100c8; - data[96] = 0x7c1b03a6; - data[97] = 0x800100c4; - data[98] = 0x7c1a03a6; - data[99] = 0x800100c0; - data[100] = 0x382100dc; - add(baseAddr, data, length); - bdi.fastDownload(data, length); - length = 101; - data[0] = 0x4c000064; - data[1] = 0x0; - data[2] = 0x0; - data[3] = 0x0; - data[4] = 0x0; - data[5] = 0x0; - data[6] = 0x0; - data[7] = 0x0; - data[8] = 0x0; - data[9] = 0x0; - data[10] = 0x0; - data[11] = 0x0; - data[12] = 0x0; - data[13] = 0x0; - data[14] = 0x0; - data[15] = 0x0; - data[16] = 0x0; - data[17] = 0x0; - data[18] = 0x0; - data[19] = 0x0; - data[20] = 0x0; - data[21] = 0x0; - data[22] = 0x0; - data[23] = 0x0; - data[24] = 0x0; - data[25] = 0x0; - data[26] = 0x0; - data[27] = 0x9421ff34; - data[28] = 0x900100b0; - data[29] = 0x7c1a02a6; - data[30] = 0x900100b4; - data[31] = 0x7c1b02a6; - data[32] = 0x900100b8; - data[33] = 0x7c1113a6; - data[34] = 0x7c0802a6; - data[35] = 0x900100c0; - data[36] = 0x7c000026; - data[37] = 0x900100c4; - data[38] = 0x7c0902a6; - data[39] = 0x900100c8; - data[40] = 0xbc410038; - data[41] = 0x3be10038; - data[42] = 0x3c400040; - data[43] = 0x3842ab70; - data[44] = 0x90410014; - data[45] = 0x80a20000; - data[46] = 0x30c50001; - data[47] = 0x90c20000; - data[48] = 0x38600010; - data[49] = 0x38800010; - data[50] = 0x4bfffdd1; - data[51] = 0x4280fff4; - data[52] = 0x383fffc8; - data[53] = 0xb8410038; - data[54] = 0x800100c8; - data[55] = 0x7c0903a6; - data[56] = 0x800100c4; - data[57] = 0x7c0ff120; - data[58] = 0x800100c0; - data[59] = 0x7c0803a6; - data[60] = 0x800100b8; - data[61] = 0x7c1b03a6; - data[62] = 0x800100b4; - data[63] = 0x7c1a03a6; - data[64] = 0x800100b0; - data[65] = 0x382100cc; - data[66] = 0x4c000064; - data[67] = 0x0; - data[68] = 0x0; - data[69] = 0x0; - data[70] = 0x0; - data[71] = 0x0; - data[72] = 0x0; - data[73] = 0x0; - data[74] = 0x0; - data[75] = 0x0; - data[76] = 0x0; - data[77] = 0x0; - data[78] = 0x0; - data[79] = 0x0; - data[80] = 0x0; - data[81] = 0x0; - data[82] = 0x0; - data[83] = 0x0; - data[84] = 0x0; - data[85] = 0x0; - data[86] = 0x0; - data[87] = 0x0; - data[88] = 0x0; - data[89] = 0x0; - data[90] = 0x0; - data[91] = 0x9421ffa0; - data[92] = 0x7c0802a6; - data[93] = 0x9001005c; - data[94] = 0xbf610048; - data[95] = 0x3be10038; - data[96] = 0x90410014; - data[97] = 0x3b800000; - data[98] = 0x3ce00030; - data[99] = 0x3907c010; - data[100] = 0xa3a80000; - add(baseAddr, data, length); - bdi.fastDownload(data, length); - length = 101; - data[0] = 0x3bc00010; - data[1] = 0x33deffff; - data[2] = 0x7fc9f0f8; - data[3] = 0x5fa94801; - data[4] = 0x4182011c; - data[5] = 0x315e0001; - data[6] = 0x3960000f; - data[7] = 0x3d808000; - data[8] = 0x7d8c5e30; - data[9] = 0x7d8c5030; - data[10] = 0x5d8c583e; - data[11] = 0x558c083e; - data[12] = 0x3c600030; - data[13] = 0x3883c014; - data[14] = 0xb1840000; - data[15] = 0x7c1013a6; - data[16] = 0x20be000f; - data[17] = 0xca50010; - data[18] = 0x54a6103a; - data[19] = 0x7ce23214; - data[20] = 0x83870030; - data[21] = 0x57c8f801; - data[22] = 0x41820040; - data[23] = 0x387c0000; - data[24] = 0x8123fffc; - data[25] = 0x8009fff0; - data[26] = 0x7c0903a6; - data[27] = 0x8049fff4; - data[28] = 0x4e800421; - data[29] = 0x80410014; - data[30] = 0x39400001; - data[31] = 0x7d4af030; - data[32] = 0x3d600030; - data[33] = 0x398bc010; - data[34] = 0xb14c0000; - data[35] = 0x3bc00000; - data[36] = 0x4280009c; - data[37] = 0x42800094; - data[38] = 0xe9c0000; - data[39] = 0x807c0000; - data[40] = 0xa3630000; - data[41] = 0xe9c0000; - data[42] = 0x809c0004; - data[43] = 0x7c8520f8; - data[44] = 0x5f652801; - data[45] = 0x41820048; - data[46] = 0xe9c0000; - data[47] = 0x80dc0008; - data[48] = 0xa3660000; - data[49] = 0xe9c0000; - data[50] = 0x80fc000c; - data[51] = 0x7ce838f8; - data[52] = 0x5f684001; - data[53] = 0x41820028; - data[54] = 0x800100c8; - data[55] = 0x7c0903a6; - data[56] = 0x800100c4; - data[57] = 0x7c0ff120; - data[58] = 0x800100c0; - data[59] = 0x7c0803a6; - data[60] = 0x800100b8; - data[61] = 0x7c1b03a6; - data[62] = 0x800100b4; - data[63] = 0x7c1a03a6; - data[64] = 0x800100b0; - data[65] = 0x382100cc; - data[66] = 0x4c000064; - data[67] = 0x0; - data[68] = 0x0; - data[69] = 0x0; - data[70] = 0x0; - data[71] = 0x0; - data[72] = 0x0; - data[73] = 0x0; - data[74] = 0x0; - data[75] = 0x0; - data[76] = 0x0; - data[77] = 0x0; - data[78] = 0x0; - data[79] = 0x0; - data[80] = 0x0; - data[81] = 0x0; - data[82] = 0x0; - data[83] = 0x0; - data[84] = 0x0; - data[85] = 0x0; - data[86] = 0x0; - data[87] = 0x0; - data[88] = 0x0; - data[89] = 0x0; - data[90] = 0x0; - data[91] = 0x9421ffa0; - data[92] = 0x7c0802a6; - data[93] = 0x9001005c; - data[94] = 0xbf610048; - data[95] = 0x3be10038; - data[96] = 0x90410014; - data[97] = 0x3b800000; - data[98] = 0x3ce00030; - data[99] = 0x3907c010; - data[100] = 0xa3a80000; - add(baseAddr, data, length); - bdi.fastDownload(data, length); - bdi.stopFastDownload(); - baseAddr = 0x400; - bdi.startFastDownload(baseAddr); - length = 101; - data[0] = 0x387c0000; - data[1] = 0x8123fffc; - data[2] = 0x8009fff0; - data[3] = 0x7c0903a6; - data[4] = 0x8049fff4; - data[5] = 0x4e800421; - data[6] = 0x80410014; - data[7] = 0x3bc00000; - data[8] = 0x42800034; - data[9] = 0xe9c0000; - data[10] = 0x815c0010; - data[11] = 0x2c8a0000; - data[12] = 0x41860010; - data[13] = 0xe9c0000; - data[14] = 0x839c0010; - data[15] = 0x42800014; - data[16] = 0x81620008; - data[17] = 0x318b0001; - data[18] = 0x91820008; - data[19] = 0x42800008; - data[20] = 0x4280ff2c; - data[21] = 0x2f1e0000; - data[22] = 0x409afed4; - data[23] = 0x383fffc8; - data[24] = 0xbb610048; - data[25] = 0x8001005c; - data[26] = 0x7c0803a6; - data[27] = 0x38210060; - data[28] = 0x4e800020; - data[29] = 0x0; - data[30] = 0x0; - data[31] = 0x0; - data[32] = 0x0; - data[33] = 0x0; - data[34] = 0x0; - data[35] = 0x0; - data[36] = 0x0; - data[37] = 0x0; - data[38] = 0x0; - data[39] = 0x0; - data[40] = 0x0; - data[41] = 0x0; - data[42] = 0x0; - data[43] = 0x0; - data[44] = 0x0; - data[45] = 0x0; - data[46] = 0x0; - data[47] = 0x0; - data[48] = 0x0; - data[49] = 0x0; - data[50] = 0x0; - data[51] = 0x0; - data[52] = 0x0; - data[53] = 0x0; - data[54] = 0x0; - data[55] = 0x0; - data[56] = 0x0; - data[57] = 0x0; - data[58] = 0x0; - data[59] = 0x0; - data[60] = 0x0; - data[61] = 0x0; - data[62] = 0x0; - data[63] = 0x0; - data[64] = 0x9421ff28; - data[65] = 0x900100bc; - data[66] = 0x7c1a02a6; - data[67] = 0x900100c0; - data[68] = 0x7c1b02a6; - data[69] = 0x900100c4; - data[70] = 0x7c1113a6; - data[71] = 0x7c0802a6; - data[72] = 0x900100cc; - data[73] = 0x7c000026; - data[74] = 0x900100d0; - data[75] = 0x7c0902a6; - data[76] = 0x900100d4; - data[77] = 0xbc410044; - data[78] = 0x3be10038; - data[79] = 0x3c400040; - data[80] = 0x3842ab70; - data[81] = 0x90410014; - data[82] = 0x80620004; - data[83] = 0x30830001; - data[84] = 0x90820004; - data[85] = 0x3ca00030; - data[86] = 0x38c5c014; - data[87] = 0xa3c60000; - data[88] = 0x4bfffda1; - data[89] = 0x7c1113a6; - data[90] = 0x3ce00030; - data[91] = 0x3907c014; - data[92] = 0xb3c80000; - data[93] = 0x383fffc8; - data[94] = 0xb8410044; - data[95] = 0x800100d4; - data[96] = 0x7c0903a6; - data[97] = 0x800100d0; - data[98] = 0x7c0ff120; - data[99] = 0x800100cc; - data[100] = 0x7c0803a6; - add(baseAddr, data, length); - bdi.fastDownload(data, length); - length = 101; - data[0] = 0x800100c4; - data[1] = 0x7c1b03a6; - data[2] = 0x800100c0; - data[3] = 0x7c1a03a6; - data[4] = 0x800100bc; - data[5] = 0x382100d8; - data[6] = 0x4c000064; - data[7] = 0x0; - data[8] = 0x0; - data[9] = 0x0; - data[10] = 0x0; - data[11] = 0x0; - data[12] = 0x0; - data[13] = 0x0; - data[14] = 0x0; - data[15] = 0x0; - data[16] = 0x0; - data[17] = 0x0; - data[18] = 0x0; - data[19] = 0x0; - data[20] = 0x0; - data[21] = 0x0; - data[22] = 0x0; - data[23] = 0x0; - data[24] = 0x0; - data[25] = 0x0; - data[26] = 0x0; - data[27] = 0x9421ff34; - data[28] = 0x900100b0; - data[29] = 0x7c1a02a6; - data[30] = 0x900100b4; - data[31] = 0x7c1b02a6; - data[32] = 0x900100b8; - data[33] = 0x7c1113a6; - data[34] = 0x7c0802a6; - data[35] = 0x900100c0; - data[36] = 0x7c000026; - data[37] = 0x900100c4; - data[38] = 0x7c0902a6; - data[39] = 0x900100c8; - data[40] = 0xbc410038; - data[41] = 0x3be10038; - data[42] = 0x3c400040; - data[43] = 0x3842ab70; - data[44] = 0x90410014; - data[45] = 0x8122000c; - data[46] = 0x31490001; - data[47] = 0x9142000c; - data[48] = 0x38600010; - data[49] = 0x38800010; - data[50] = 0x4bfff9d1; - data[51] = 0x4280fff4; - data[52] = 0x383fffc8; - data[53] = 0xb8410038; - data[54] = 0x800100c8; - data[55] = 0x7c0903a6; - data[56] = 0x800100c4; - data[57] = 0x7c0ff120; - data[58] = 0x800100c0; - data[59] = 0x7c0803a6; - data[60] = 0x800100b8; - data[61] = 0x7c1b03a6; - data[62] = 0x800100b4; - data[63] = 0x7c1a03a6; - data[64] = 0x800100b0; - data[65] = 0x382100cc; - data[66] = 0x4c000064; - data[67] = 0x0; - data[68] = 0x0; - data[69] = 0x0; - data[70] = 0x0; - data[71] = 0x0; - data[72] = 0x0; - data[73] = 0x0; - data[74] = 0x0; - data[75] = 0x0; - data[76] = 0x0; - data[77] = 0x0; - data[78] = 0x0; - data[79] = 0x0; - data[80] = 0x0; - data[81] = 0x0; - data[82] = 0x0; - data[83] = 0x0; - data[84] = 0x0; - data[85] = 0x0; - data[86] = 0x0; - data[87] = 0x0; - data[88] = 0x0; - data[89] = 0x0; - data[90] = 0x0; - data[91] = 0x9421ff34; - data[92] = 0x900100b0; - data[93] = 0x7c1a02a6; - data[94] = 0x900100b4; - data[95] = 0x7c1b02a6; - data[96] = 0x900100b8; - data[97] = 0x7c1113a6; - data[98] = 0x7c0802a6; - data[99] = 0x900100c0; - data[100] = 0x7c000026; - add(baseAddr, data, length); - bdi.fastDownload(data, length); - length = 101; - data[0] = 0x900100c4; - data[1] = 0x7c0902a6; - data[2] = 0x900100c8; - data[3] = 0xbc410038; - data[4] = 0x3be10038; - data[5] = 0x3c400040; - data[6] = 0x3842ab70; - data[7] = 0x90410014; - data[8] = 0x81620010; - data[9] = 0x318b0001; - data[10] = 0x91820010; - data[11] = 0x38600010; - data[12] = 0x38800010; - data[13] = 0x4bfff8d1; - data[14] = 0x4280fff4; - data[15] = 0x383fffc8; - data[16] = 0xb8410038; - data[17] = 0x800100c8; - data[18] = 0x7c0903a6; - data[19] = 0x800100c4; - data[20] = 0x7c0ff120; - data[21] = 0x800100c0; - data[22] = 0x7c0803a6; - data[23] = 0x800100b8; - data[24] = 0x7c1b03a6; - data[25] = 0x800100b4; - data[26] = 0x7c1a03a6; - data[27] = 0x800100b0; - data[28] = 0x382100cc; - data[29] = 0x4c000064; - data[30] = 0x0; - data[31] = 0x0; - data[32] = 0x0; - data[33] = 0x0; - data[34] = 0x0; - data[35] = 0x0; - data[36] = 0x0; - data[37] = 0x0; - data[38] = 0x0; - data[39] = 0x0; - data[40] = 0x0; - data[41] = 0x0; - data[42] = 0x0; - data[43] = 0x0; - data[44] = 0x0; - data[45] = 0x0; - data[46] = 0x0; - data[47] = 0x0; - data[48] = 0x0; - data[49] = 0x0; - data[50] = 0x0; - data[51] = 0x0; - data[52] = 0x0; - data[53] = 0x0; - data[54] = 0x800100c8; - data[55] = 0x7c0903a6; - data[56] = 0x800100c4; - data[57] = 0x7c0ff120; - data[58] = 0x800100c0; - data[59] = 0x7c0803a6; - data[60] = 0x800100b8; - data[61] = 0x7c1b03a6; - data[62] = 0x800100b4; - data[63] = 0x7c1a03a6; - data[64] = 0x800100b0; - data[65] = 0x382100cc; - data[66] = 0x4c000064; - data[67] = 0x0; - data[68] = 0x0; - data[69] = 0x0; - data[70] = 0x0; - data[71] = 0x0; - data[72] = 0x0; - data[73] = 0x0; - data[74] = 0x0; - data[75] = 0x0; - data[76] = 0x0; - data[77] = 0x0; - data[78] = 0x0; - data[79] = 0x0; - data[80] = 0x0; - data[81] = 0x0; - data[82] = 0x0; - data[83] = 0x0; - data[84] = 0x0; - data[85] = 0x0; - data[86] = 0x0; - data[87] = 0x0; - data[88] = 0x0; - data[89] = 0x0; - data[90] = 0x0; - data[91] = 0x9421ff34; - data[92] = 0x900100b0; - data[93] = 0x7c1a02a6; - data[94] = 0x900100b4; - data[95] = 0x7c1b02a6; - data[96] = 0x900100b8; - data[97] = 0x7c1113a6; - data[98] = 0x7c0802a6; - data[99] = 0x900100c0; - data[100] = 0x7c000026; - add(baseAddr, data, length); - bdi.fastDownload(data, length); - bdi.stopFastDownload(); - baseAddr = 0x800; - bdi.startFastDownload(baseAddr); - length = 101; - data[0] = 0x9421ff34; - data[1] = 0x900100b0; - data[2] = 0x7c1a02a6; - data[3] = 0x900100b4; - data[4] = 0x7c1b02a6; - data[5] = 0x900100b8; - data[6] = 0x7c1113a6; - data[7] = 0x7c0802a6; - data[8] = 0x900100c0; - data[9] = 0x7c000026; - data[10] = 0x900100c4; - data[11] = 0x7c0902a6; - data[12] = 0x900100c8; - data[13] = 0xbc410038; - data[14] = 0x3be10038; - data[15] = 0x3c400040; - data[16] = 0x3842ab70; - data[17] = 0x90410014; - data[18] = 0x80620014; - data[19] = 0x30830001; - data[20] = 0x90820014; - data[21] = 0x38600010; - data[22] = 0x38800010; - data[23] = 0x4bfff7d1; - data[24] = 0x4280fff4; - data[25] = 0x383fffc8; - data[26] = 0xb8410038; - data[27] = 0x800100c8; - data[28] = 0x7c0903a6; - data[29] = 0x800100c4; - data[30] = 0x7c0ff120; - data[31] = 0x800100c0; - data[32] = 0x7c0803a6; - data[33] = 0x800100b8; - data[34] = 0x7c1b03a6; - data[35] = 0x800100b4; - data[36] = 0x7c1a03a6; - data[37] = 0x800100b0; - data[38] = 0x382100cc; - data[39] = 0x4c000064; - data[40] = 0x0; - data[41] = 0x0; - data[42] = 0x0; - data[43] = 0x0; - data[44] = 0x0; - data[45] = 0x0; - data[46] = 0x0; - data[47] = 0x0; - data[48] = 0x0; - data[49] = 0x0; - data[50] = 0x0; - data[51] = 0x0; - data[52] = 0x0; - data[53] = 0x0; - data[54] = 0x0; - data[55] = 0x0; - data[56] = 0x0; - data[57] = 0x0; - data[58] = 0x0; - data[59] = 0x0; - data[60] = 0x0; - data[61] = 0x0; - data[62] = 0x0; - data[63] = 0x0; - data[64] = 0x9421ff28; - data[65] = 0x900100bc; - data[66] = 0x7c1a02a6; - data[67] = 0x900100c0; - data[68] = 0x7c1b02a6; - data[69] = 0x900100c4; - data[70] = 0x7c1113a6; - data[71] = 0x7c0802a6; - data[72] = 0x900100cc; - data[73] = 0x7c000026; - data[74] = 0x900100d0; - data[75] = 0x7c0902a6; - data[76] = 0x900100d4; - data[77] = 0xbc410044; - data[78] = 0x3be10038; - data[79] = 0x3c400040; - data[80] = 0x3842ab70; - data[81] = 0x80a20018; - data[82] = 0x30c50001; - data[83] = 0x90c20018; - data[84] = 0x383fffc8; - data[85] = 0xb8410044; - data[86] = 0x800100d4; - data[87] = 0x7c0903a6; - data[88] = 0x800100d0; - data[89] = 0x7c0ff120; - data[90] = 0x800100cc; - data[91] = 0x7c0803a6; - data[92] = 0x800100c4; - data[93] = 0x7c1b03a6; - data[94] = 0x800100c0; - data[95] = 0x7c1a03a6; - data[96] = 0x800100bc; - data[97] = 0x382100d8; - data[98] = 0x4c000064; - data[99] = 0x0; - data[100] = 0x0; - add(baseAddr, data, length); - bdi.fastDownload(data, length); - length = 101; - data[0] = 0x0; - data[1] = 0x0; - data[2] = 0x0; - data[3] = 0x0; - data[4] = 0x0; - data[5] = 0x0; - data[6] = 0x0; - data[7] = 0x0; - data[8] = 0x0; - data[9] = 0x0; - data[10] = 0x0; - data[11] = 0x0; - data[12] = 0x0; - data[13] = 0x0; - data[14] = 0x0; - data[15] = 0x0; - data[16] = 0x0; - data[17] = 0x0; - data[18] = 0x0; - data[19] = 0x0; - data[20] = 0x0; - data[21] = 0x0; - data[22] = 0x0; - data[23] = 0x0; - data[24] = 0x0; - data[25] = 0x0; - data[26] = 0x0; - data[27] = 0x0; - data[28] = 0x0; - data[29] = 0x0; - data[30] = 0x0; - data[31] = 0x0; - data[32] = 0x0; - data[33] = 0x0; - data[34] = 0x0; - data[35] = 0x0; - data[36] = 0x0; - data[37] = 0x0; - data[38] = 0x0; - data[39] = 0x0; - data[40] = 0x0; - data[41] = 0x0; - data[42] = 0x0; - data[43] = 0x0; - data[44] = 0x0; - data[45] = 0x0; - data[46] = 0x0; - data[47] = 0x0; - data[48] = 0x0; - data[49] = 0x0; - data[50] = 0x0; - data[51] = 0x0; - data[52] = 0x0; - data[53] = 0x0; - data[54] = 0x0; - data[55] = 0x0; - data[56] = 0x0; - data[57] = 0x0; - data[58] = 0x0; - data[59] = 0x0; - data[60] = 0x0; - data[61] = 0x0; - data[62] = 0x0; - data[63] = 0x0; - data[64] = 0x0; - data[65] = 0x0; - data[66] = 0x0; - data[67] = 0x0; - data[68] = 0x0; - data[69] = 0x0; - data[70] = 0x0; - data[71] = 0x0; - data[72] = 0x0; - data[73] = 0x0; - data[74] = 0x0; - data[75] = 0x0; - data[76] = 0x0; - data[77] = 0x0; - data[78] = 0x0; - data[79] = 0x0; - data[80] = 0x0; - data[81] = 0x0; - data[82] = 0x0; - data[83] = 0x0; - data[84] = 0x0; - data[85] = 0x0; - data[86] = 0x0; - data[87] = 0x0; - data[88] = 0x0; - data[89] = 0x0; - data[90] = 0x0; - data[91] = 0x0; - data[92] = 0x0; - data[93] = 0x0; - data[94] = 0x0; - data[95] = 0x0; - data[96] = 0x0; - data[97] = 0x0; - data[98] = 0x0; - data[99] = 0x0; - data[100] = 0x0; - add(baseAddr, data, length); - bdi.fastDownload(data, length); - length = 101; - data[0] = 0x0; - data[1] = 0x0; - data[2] = 0x0; - data[3] = 0x0; - data[4] = 0x0; - data[5] = 0x0; - data[6] = 0x0; - data[7] = 0x0; - data[8] = 0x0; - data[9] = 0x0; - data[10] = 0x0; - data[11] = 0x0; - data[12] = 0x0; - data[13] = 0x0; - data[14] = 0x0; - data[15] = 0x0; - data[16] = 0x0; - data[17] = 0x0; - data[18] = 0x0; - data[19] = 0x0; - data[20] = 0x0; - data[21] = 0x0; - data[22] = 0x0; - data[23] = 0x0; - data[24] = 0x0; - data[25] = 0x0; - data[26] = 0x0; - data[27] = 0x0; - data[28] = 0x0; - data[29] = 0x0; - data[30] = 0x0; - data[31] = 0x0; - data[32] = 0x0; - data[33] = 0x0; - data[34] = 0x0; - data[35] = 0x0; - data[36] = 0x0; - data[37] = 0x0; - data[38] = 0x0; - data[39] = 0x0; - data[40] = 0x0; - data[41] = 0x0; - data[42] = 0x0; - data[43] = 0x0; - data[44] = 0x0; - data[45] = 0x0; - data[46] = 0x0; - data[47] = 0x0; - data[48] = 0x0; - data[49] = 0x0; - data[50] = 0x0; - data[51] = 0x0; - data[52] = 0x0; - data[53] = 0x0; - data[54] = 0x0; - data[55] = 0x0; - data[56] = 0x0; - data[57] = 0x0; - data[58] = 0x0; - data[59] = 0x0; - data[60] = 0x0; - data[61] = 0x0; - data[62] = 0x0; - data[63] = 0x0; - data[64] = 0x0; - data[65] = 0x0; - data[66] = 0x0; - data[67] = 0x0; - data[68] = 0x0; - data[69] = 0x0; - data[70] = 0x0; - data[71] = 0x0; - data[72] = 0x0; - data[73] = 0x0; - data[74] = 0x0; - data[75] = 0x0; - data[76] = 0x0; - data[77] = 0x0; - data[78] = 0x0; - data[79] = 0x0; - data[80] = 0x0; - data[81] = 0x0; - data[82] = 0x0; - data[83] = 0x0; - data[84] = 0x0; - data[85] = 0x0; - data[86] = 0x0; - data[87] = 0x0; - data[88] = 0x0; - data[89] = 0x0; - data[90] = 0x0; - data[91] = 0x0; - data[92] = 0x0; - data[93] = 0x0; - data[94] = 0x0; - data[95] = 0x0; - data[96] = 0x0; - data[97] = 0x0; - data[98] = 0x0; - data[99] = 0x0; - data[100] = 0x0; - add(baseAddr, data, length); - bdi.fastDownload(data, length); - bdi.stopFastDownload(); - baseAddr = 0xc00; - bdi.startFastDownload(baseAddr); - length = 101; - data[0] = 0x9421ff34; - data[1] = 0x900100b0; - data[2] = 0x7c1a02a6; - data[3] = 0x900100b4; - data[4] = 0x7c1b02a6; - data[5] = 0x900100b8; - data[6] = 0x7c1113a6; - data[7] = 0x7c0802a6; - data[8] = 0x900100c0; - data[9] = 0x7c000026; - data[10] = 0x900100c4; - data[11] = 0x7c0902a6; - data[12] = 0x900100c8; - data[13] = 0xbc410038; - data[14] = 0x3be10038; - data[15] = 0x3c400040; - data[16] = 0x3842ab70; - data[17] = 0x90410014; - data[18] = 0x80e2001c; - data[19] = 0x31070001; - data[20] = 0x9102001c; - data[21] = 0x38600010; - data[22] = 0x38800010; - data[23] = 0x4bfff3d1; - data[24] = 0x4280fff4; - data[25] = 0x383fffc8; - data[26] = 0xb8410038; - data[27] = 0x800100c8; - data[28] = 0x7c0903a6; - data[29] = 0x800100c4; - data[30] = 0x7c0ff120; - data[31] = 0x800100c0; - data[32] = 0x7c0803a6; - data[33] = 0x800100b8; - data[34] = 0x7c1b03a6; - data[35] = 0x800100b4; - data[36] = 0x7c1a03a6; - data[37] = 0x800100b0; - data[38] = 0x382100cc; - data[39] = 0x4c000064; - data[40] = 0x0; - data[41] = 0x0; - data[42] = 0x0; - data[43] = 0x0; - data[44] = 0x0; - data[45] = 0x0; - data[46] = 0x0; - data[47] = 0x0; - data[48] = 0x0; - data[49] = 0x0; - data[50] = 0x0; - data[51] = 0x0; - data[52] = 0x0; - data[53] = 0x0; - data[54] = 0x0; - data[55] = 0x0; - data[56] = 0x0; - data[57] = 0x0; - data[58] = 0x0; - data[59] = 0x0; - data[60] = 0x0; - data[61] = 0x0; - data[62] = 0x0; - data[63] = 0x0; - data[64] = 0x9421ff34; - data[65] = 0x900100b0; - data[66] = 0x7c1a02a6; - data[67] = 0x900100b4; - data[68] = 0x7c1b02a6; - data[69] = 0x900100b8; - data[70] = 0x7c1113a6; - data[71] = 0x7c0802a6; - data[72] = 0x900100c0; - data[73] = 0x7c000026; - data[74] = 0x900100c4; - data[75] = 0x7c0902a6; - data[76] = 0x900100c8; - data[77] = 0xbc410038; - data[78] = 0x3be10038; - data[79] = 0x3c400040; - data[80] = 0x3842ab70; - data[81] = 0x90410014; - data[82] = 0x81220020; - data[83] = 0x31490001; - data[84] = 0x91420020; - data[85] = 0x38600010; - data[86] = 0x38800010; - data[87] = 0x4bfff2d1; - data[88] = 0x4280fff4; - data[89] = 0x383fffc8; - data[90] = 0xb8410038; - data[91] = 0x800100c8; - data[92] = 0x7c0903a6; - data[93] = 0x800100c4; - data[94] = 0x7c0ff120; - data[95] = 0x800100c0; - data[96] = 0x7c0803a6; - data[97] = 0x800100b8; - data[98] = 0x7c1b03a6; - data[99] = 0x800100b4; - data[100] = 0x7c1a03a6; - add(baseAddr, data, length); - bdi.fastDownload(data, length); - length = 101; - data[0] = 0x800100b0; - data[1] = 0x382100cc; - data[2] = 0x4c000064; - data[3] = 0x0; - data[4] = 0x0; - data[5] = 0x0; - data[6] = 0x0; - data[7] = 0x0; - data[8] = 0x0; - data[9] = 0x0; - data[10] = 0x0; - data[11] = 0x0; - data[12] = 0x0; - data[13] = 0x0; - data[14] = 0x0; - data[15] = 0x0; - data[16] = 0x0; - data[17] = 0x0; - data[18] = 0x0; - data[19] = 0x0; - data[20] = 0x0; - data[21] = 0x0; - data[22] = 0x0; - data[23] = 0x0; - data[24] = 0x0; - data[25] = 0x0; - data[26] = 0x0; - data[27] = 0x9421ff34; - data[28] = 0x900100b0; - data[29] = 0x7c1a02a6; - data[30] = 0x900100b4; - data[31] = 0x7c1b02a6; - data[32] = 0x900100b8; - data[33] = 0x7c1113a6; - data[34] = 0x7c0802a6; - data[35] = 0x900100c0; - data[36] = 0x7c000026; - data[37] = 0x900100c4; - data[38] = 0x7c0902a6; - data[39] = 0x900100c8; - data[40] = 0xbc410038; - data[41] = 0x3be10038; - data[42] = 0x3c400040; - data[43] = 0x3842ab70; - data[44] = 0x90410014; - data[45] = 0x81620024; - data[46] = 0x318b0001; - data[47] = 0x91820024; - data[48] = 0x38600010; - data[49] = 0x38800010; - data[50] = 0x4bfff1d1; - data[51] = 0x4280fff4; - data[52] = 0x383fffc8; - data[53] = 0xb8410038; - data[54] = 0x800100c8; - data[55] = 0x7c0903a6; - data[56] = 0x800100c4; - data[57] = 0x7c0ff120; - data[58] = 0x800100c0; - data[59] = 0x7c0803a6; - data[60] = 0x800100b8; - data[61] = 0x7c1b03a6; - data[62] = 0x800100b4; - data[63] = 0x7c1a03a6; - data[64] = 0x800100b0; - data[65] = 0x382100cc; - data[66] = 0x4c000064; - data[67] = 0x0; - data[68] = 0x0; - data[69] = 0x0; - data[70] = 0x0; - data[71] = 0x0; - data[72] = 0x0; - data[73] = 0x0; - data[74] = 0x0; - data[75] = 0x0; - data[76] = 0x0; - data[77] = 0x0; - data[78] = 0x0; - data[79] = 0x0; - data[80] = 0x0; - data[81] = 0x0; - data[82] = 0x0; - data[83] = 0x0; - data[84] = 0x0; - data[85] = 0x0; - data[86] = 0x0; - data[87] = 0x0; - data[88] = 0x0; - data[89] = 0x0; - data[90] = 0x0; - data[91] = 0x0; - data[92] = 0x0; - data[93] = 0x0; - data[94] = 0x0; - data[95] = 0x0; - data[96] = 0x0; - data[97] = 0x0; - data[98] = 0x0; - data[99] = 0x0; - data[100] = 0x0; - add(baseAddr, data, length); - bdi.fastDownload(data, length); - length = 101; - data[0] = 0x0; - data[1] = 0x0; - data[2] = 0x0; - data[3] = 0x0; - data[4] = 0x0; - data[5] = 0x0; - data[6] = 0x0; - data[7] = 0x0; - data[8] = 0x0; - data[9] = 0x0; - data[10] = 0x0; - data[11] = 0x0; - data[12] = 0x0; - data[13] = 0x0; - data[14] = 0x0; - data[15] = 0x0; - data[16] = 0x0; - data[17] = 0x0; - data[18] = 0x0; - data[19] = 0x0; - data[20] = 0x0; - data[21] = 0x0; - data[22] = 0x0; - data[23] = 0x0; - data[24] = 0x0; - data[25] = 0x0; - data[26] = 0x0; - data[27] = 0x0; - data[28] = 0x0; - data[29] = 0x0; - data[30] = 0x0; - data[31] = 0x0; - data[32] = 0x0; - data[33] = 0x0; - data[34] = 0x0; - data[35] = 0x0; - data[36] = 0x0; - data[37] = 0x0; - data[38] = 0x0; - data[39] = 0x0; - data[40] = 0x0; - data[41] = 0x0; - data[42] = 0x0; - data[43] = 0x0; - data[44] = 0x0; - data[45] = 0x0; - data[46] = 0x0; - data[47] = 0x0; - data[48] = 0x0; - data[49] = 0x0; - data[50] = 0x0; - data[51] = 0x0; - data[52] = 0x0; - data[53] = 0x0; - data[54] = 0x800100c8; - data[55] = 0x7c0903a6; - data[56] = 0x800100c4; - data[57] = 0x7c0ff120; - data[58] = 0x800100c0; - data[59] = 0x7c0803a6; - data[60] = 0x800100b8; - data[61] = 0x7c1b03a6; - data[62] = 0x800100b4; - data[63] = 0x7c1a03a6; - data[64] = 0x800100b0; - data[65] = 0x382100cc; - data[66] = 0x4c000064; - data[67] = 0x0; - data[68] = 0x0; - data[69] = 0x0; - data[70] = 0x0; - data[71] = 0x0; - data[72] = 0x0; - data[73] = 0x0; - data[74] = 0x0; - data[75] = 0x0; - data[76] = 0x0; - data[77] = 0x0; - data[78] = 0x0; - data[79] = 0x0; - data[80] = 0x0; - data[81] = 0x0; - data[82] = 0x0; - data[83] = 0x0; - data[84] = 0x0; - data[85] = 0x0; - data[86] = 0x0; - data[87] = 0x0; - data[88] = 0x0; - data[89] = 0x0; - data[90] = 0x0; - data[91] = 0x0; - data[92] = 0x0; - data[93] = 0x0; - data[94] = 0x0; - data[95] = 0x0; - data[96] = 0x0; - data[97] = 0x0; - data[98] = 0x0; - data[99] = 0x0; - data[100] = 0x0; - add(baseAddr, data, length); - bdi.fastDownload(data, length); - bdi.stopFastDownload(); - baseAddr = 0x1000; - bdi.startFastDownload(baseAddr); - length = 101; - data[0] = 0x9421ff34; - data[1] = 0x900100b0; - data[2] = 0x7c1a02a6; - data[3] = 0x900100b4; - data[4] = 0x7c1b02a6; - data[5] = 0x900100b8; - data[6] = 0x7c1113a6; - data[7] = 0x7c0802a6; - data[8] = 0x900100c0; - data[9] = 0x7c000026; - data[10] = 0x900100c4; - data[11] = 0x7c0902a6; - data[12] = 0x900100c8; - data[13] = 0xbc410038; - data[14] = 0x3be10038; - data[15] = 0x3c400040; - data[16] = 0x3842ab70; - data[17] = 0x90410014; - data[18] = 0x80620028; - data[19] = 0x30830001; - data[20] = 0x90820028; - data[21] = 0x38600010; - data[22] = 0x38800010; - data[23] = 0x4bffefd1; - data[24] = 0x4280fff4; - data[25] = 0x383fffc8; - data[26] = 0xb8410038; - data[27] = 0x800100c8; - data[28] = 0x7c0903a6; - data[29] = 0x800100c4; - data[30] = 0x7c0ff120; - data[31] = 0x800100c0; - data[32] = 0x7c0803a6; - data[33] = 0x800100b8; - data[34] = 0x7c1b03a6; - data[35] = 0x800100b4; - data[36] = 0x7c1a03a6; - data[37] = 0x800100b0; - data[38] = 0x382100cc; - data[39] = 0x4c000064; - data[40] = 0x9421ffb0; - data[41] = 0x7c0802a6; - data[42] = 0x9001004c; - data[43] = 0xbfa10040; - data[44] = 0x3be10038; - data[45] = 0x90410014; - data[46] = 0x3ba00000; - data[47] = 0x8062fffc; - data[48] = 0x8042fff4; - data[49] = 0x483f9405; - data[50] = 0x80410014; - data[51] = 0x3ba30000; - data[52] = 0x3bc00000; - data[53] = 0x2f9e000f; - data[54] = 0x419d001c; - data[55] = 0xcbe0010; - data[56] = 0x57c5103a; - data[57] = 0x7cc22a14; - data[58] = 0x93a60030; - data[59] = 0x33de0001; - data[60] = 0x4280ffe4; - data[61] = 0x383fffc8; - data[62] = 0xbba10040; - data[63] = 0x8001004c; - data[64] = 0x7c0803a6; - data[65] = 0x38210050; - data[66] = 0x4e800020; - data[67] = 0x9421ffb0; - data[68] = 0x7c0802a6; - data[69] = 0x9001004c; - data[70] = 0xbfc10044; - data[71] = 0x3be10038; - data[72] = 0x90410014; - data[73] = 0x3bc00000; - data[74] = 0x7fd603a6; - data[75] = 0x383fffc8; - data[76] = 0xbbc10044; - data[77] = 0x8001004c; - data[78] = 0x7c0803a6; - data[79] = 0x38210050; - data[80] = 0x4e800020; - data[81] = 0x9421ffb8; - data[82] = 0xbfa1003c; - data[83] = 0x3be10038; - data[84] = 0x3bc30000; - data[85] = 0x3ba40000; - data[86] = 0x57a7083c; - data[87] = 0xca70010; - data[88] = 0x54e8103a; - data[89] = 0x7d224214; - data[90] = 0x93c90030; - data[91] = 0x383fffc8; - data[92] = 0xbba1003c; - data[93] = 0x38210048; - data[94] = 0x4e800020; - data[95] = 0x9421ffb8; - data[96] = 0xbfa1003c; - data[97] = 0x3be10038; - data[98] = 0x3bc30000; - data[99] = 0x3ba40000; - data[100] = 0xe9e0000; - add(baseAddr, data, length); - bdi.fastDownload(data, length); - length = 101; - data[0] = 0x57aa083c; - data[1] = 0x316a0001; - data[2] = 0xcab0010; - data[3] = 0x556c103a; - data[4] = 0x7c626214; - data[5] = 0x80830030; - data[6] = 0x909e0010; - data[7] = 0x57a5083c; - data[8] = 0x30c50001; - data[9] = 0xca60010; - data[10] = 0x54c7103a; - data[11] = 0x7d023a14; - data[12] = 0x93c80030; - data[13] = 0x383fffc8; - data[14] = 0xbba1003c; - data[15] = 0x38210048; - data[16] = 0x4e800020; - data[17] = 0x0; - data[18] = 0x0; - data[19] = 0x0; - data[20] = 0x0; - data[21] = 0x0; - data[22] = 0x0; - data[23] = 0x0; - data[24] = 0x0; - data[25] = 0x0; - data[26] = 0x0; - data[27] = 0x0; - data[28] = 0x0; - data[29] = 0x0; - data[30] = 0x0; - data[31] = 0x0; - data[32] = 0x0; - data[33] = 0x0; - data[34] = 0x0; - data[35] = 0x0; - data[36] = 0x0; - data[37] = 0x0; - data[38] = 0x0; - data[39] = 0x0; - data[40] = 0x0; - data[41] = 0x0; - data[42] = 0x0; - data[43] = 0x0; - data[44] = 0x0; - data[45] = 0x0; - data[46] = 0x0; - data[47] = 0x0; - data[48] = 0x0; - data[49] = 0x0; - data[50] = 0x0; - data[51] = 0x0; - data[52] = 0x0; - data[53] = 0x0; - data[54] = 0x0; - data[55] = 0x0; - data[56] = 0x0; - data[57] = 0x0; - data[58] = 0x0; - data[59] = 0x0; - data[60] = 0x0; - data[61] = 0x0; - data[62] = 0x0; - data[63] = 0x0; - data[64] = 0x0; - data[65] = 0x0; - data[66] = 0x0; - data[67] = 0x0; - data[68] = 0x0; - data[69] = 0x0; - data[70] = 0x0; - data[71] = 0x0; - data[72] = 0x0; - data[73] = 0x0; - data[74] = 0x0; - data[75] = 0x0; - data[76] = 0x0; - data[77] = 0x0; - data[78] = 0x0; - data[79] = 0x0; - data[80] = 0x0; - data[81] = 0x0; - data[82] = 0x0; - data[83] = 0x0; - data[84] = 0x0; - data[85] = 0x0; - data[86] = 0x0; - data[87] = 0x0; - data[88] = 0x0; - data[89] = 0x0; - data[90] = 0x0; - data[91] = 0x0; - data[92] = 0x0; - data[93] = 0x0; - data[94] = 0x0; - data[95] = 0x0; - data[96] = 0x0; - data[97] = 0x0; - data[98] = 0x0; - data[99] = 0x0; - data[100] = 0x0; - add(baseAddr, data, length); - bdi.fastDownload(data, length); - length = 101; - data[0] = 0x0; - data[1] = 0x0; - data[2] = 0x0; - data[3] = 0x0; - data[4] = 0x0; - data[5] = 0x0; - data[6] = 0x0; - data[7] = 0x0; - data[8] = 0x0; - data[9] = 0x0; - data[10] = 0x0; - data[11] = 0x0; - data[12] = 0x0; - data[13] = 0x0; - data[14] = 0x0; - data[15] = 0x0; - data[16] = 0x0; - data[17] = 0x0; - data[18] = 0x0; - data[19] = 0x0; - data[20] = 0x0; - data[21] = 0x0; - data[22] = 0x0; - data[23] = 0x0; - data[24] = 0x0; - data[25] = 0x0; - data[26] = 0x0; - data[27] = 0x0; - data[28] = 0x0; - data[29] = 0x0; - data[30] = 0x0; - data[31] = 0x0; - data[32] = 0x0; - data[33] = 0x0; - data[34] = 0x0; - data[35] = 0x0; - data[36] = 0x0; - data[37] = 0x0; - data[38] = 0x0; - data[39] = 0x0; - data[40] = 0x0; - data[41] = 0x0; - data[42] = 0x0; - data[43] = 0x0; - data[44] = 0x0; - data[45] = 0x0; - data[46] = 0x0; - data[47] = 0x0; - data[48] = 0x0; - data[49] = 0x0; - data[50] = 0x0; - data[51] = 0x0; - data[52] = 0x0; - data[53] = 0x0; - data[54] = 0x0; - data[55] = 0x0; - data[56] = 0x0; - data[57] = 0x0; - data[58] = 0x0; - data[59] = 0x0; - data[60] = 0x0; - data[61] = 0x0; - data[62] = 0x0; - data[63] = 0x0; - data[64] = 0x0; - data[65] = 0x0; - data[66] = 0x0; - data[67] = 0x0; - data[68] = 0x0; - data[69] = 0x0; - data[70] = 0x0; - data[71] = 0x0; - data[72] = 0x0; - data[73] = 0x0; - data[74] = 0x0; - data[75] = 0x0; - data[76] = 0x0; - data[77] = 0x0; - data[78] = 0x0; - data[79] = 0x0; - data[80] = 0x0; - data[81] = 0x0; - data[82] = 0x0; - data[83] = 0x0; - data[84] = 0x0; - data[85] = 0x0; - data[86] = 0x0; - data[87] = 0x0; - data[88] = 0x0; - data[89] = 0x0; - data[90] = 0x0; - data[91] = 0x0; - data[92] = 0x0; - data[93] = 0x0; - data[94] = 0x0; - data[95] = 0x0; - data[96] = 0x0; - data[97] = 0x0; - data[98] = 0x0; - data[99] = 0x0; - data[100] = 0x0; - add(baseAddr, data, length); - bdi.fastDownload(data, length); - bdi.stopFastDownload(); - baseAddr = 0x1400; - bdi.startFastDownload(baseAddr); - length = 101; - data[0] = 0x0; - data[1] = 0x0; - data[2] = 0x0; - data[3] = 0x0; - data[4] = 0x0; - data[5] = 0x0; - data[6] = 0x0; - data[7] = 0x0; - data[8] = 0x0; - data[9] = 0x0; - data[10] = 0x0; - data[11] = 0x0; - data[12] = 0x0; - data[13] = 0x0; - data[14] = 0x0; - data[15] = 0x0; - data[16] = 0x0; - data[17] = 0x0; - data[18] = 0x0; - data[19] = 0x0; - data[20] = 0x0; - data[21] = 0x0; - data[22] = 0x0; - data[23] = 0x0; - data[24] = 0x0; - data[25] = 0x0; - data[26] = 0x0; - data[27] = 0x0; - data[28] = 0x0; - data[29] = 0x0; - data[30] = 0x0; - data[31] = 0x0; - data[32] = 0x0; - data[33] = 0x0; - data[34] = 0x0; - data[35] = 0x0; - data[36] = 0x0; - data[37] = 0x0; - data[38] = 0x0; - data[39] = 0x0; - data[40] = 0x0; - data[41] = 0x0; - data[42] = 0x0; - data[43] = 0x0; - data[44] = 0x0; - data[45] = 0x0; - data[46] = 0x0; - data[47] = 0x0; - data[48] = 0x0; - data[49] = 0x0; - data[50] = 0x0; - data[51] = 0x0; - data[52] = 0x0; - data[53] = 0x0; - data[54] = 0x0; - data[55] = 0x0; - data[56] = 0x0; - data[57] = 0x0; - data[58] = 0x0; - data[59] = 0x0; - data[60] = 0x0; - data[61] = 0x0; - data[62] = 0x0; - data[63] = 0x0; - data[64] = 0x0; - data[65] = 0x0; - data[66] = 0x0; - data[67] = 0x0; - data[68] = 0x0; - data[69] = 0x0; - data[70] = 0x0; - data[71] = 0x0; - data[72] = 0x0; - data[73] = 0x0; - data[74] = 0x0; - data[75] = 0x0; - data[76] = 0x0; - data[77] = 0x0; - data[78] = 0x0; - data[79] = 0x0; - data[80] = 0x0; - data[81] = 0x0; - data[82] = 0x0; - data[83] = 0x0; - data[84] = 0x0; - data[85] = 0x0; - data[86] = 0x0; - data[87] = 0x0; - data[88] = 0x0; - data[89] = 0x0; - data[90] = 0x0; - data[91] = 0x0; - data[92] = 0x0; - data[93] = 0x0; - data[94] = 0x0; - data[95] = 0x0; - data[96] = 0x0; - data[97] = 0x0; - data[98] = 0x0; - data[99] = 0x0; - data[100] = 0x0; - add(baseAddr, data, length); - bdi.fastDownload(data, length); - length = 101; - data[0] = 0x0; - data[1] = 0x0; - data[2] = 0x0; - data[3] = 0x0; - data[4] = 0x0; - data[5] = 0x0; - data[6] = 0x0; - data[7] = 0x0; - data[8] = 0x0; - data[9] = 0x0; - data[10] = 0x0; - data[11] = 0x0; - data[12] = 0x0; - data[13] = 0x0; - data[14] = 0x0; - data[15] = 0x0; - data[16] = 0x0; - data[17] = 0x0; - data[18] = 0x0; - data[19] = 0x0; - data[20] = 0x0; - data[21] = 0x0; - data[22] = 0x0; - data[23] = 0x0; - data[24] = 0x0; - data[25] = 0x0; - data[26] = 0x0; - data[27] = 0x0; - data[28] = 0x0; - data[29] = 0x0; - data[30] = 0x0; - data[31] = 0x0; - data[32] = 0x0; - data[33] = 0x0; - data[34] = 0x0; - data[35] = 0x0; - data[36] = 0x0; - data[37] = 0x0; - data[38] = 0x0; - data[39] = 0x0; - data[40] = 0x0; - data[41] = 0x0; - data[42] = 0x0; - data[43] = 0x0; - data[44] = 0x0; - data[45] = 0x0; - data[46] = 0x0; - data[47] = 0x0; - data[48] = 0x0; - data[49] = 0x0; - data[50] = 0x0; - data[51] = 0x0; - data[52] = 0x0; - data[53] = 0x0; - data[54] = 0x0; - data[55] = 0x0; - data[56] = 0x0; - data[57] = 0x0; - data[58] = 0x0; - data[59] = 0x0; - data[60] = 0x0; - data[61] = 0x0; - data[62] = 0x0; - data[63] = 0x0; - data[64] = 0x0; - data[65] = 0x0; - data[66] = 0x0; - data[67] = 0x0; - data[68] = 0x0; - data[69] = 0x0; - data[70] = 0x0; - data[71] = 0x0; - data[72] = 0x0; - data[73] = 0x0; - data[74] = 0x0; - data[75] = 0x0; - data[76] = 0x0; - data[77] = 0x0; - data[78] = 0x0; - data[79] = 0x0; - data[80] = 0x0; - data[81] = 0x0; - data[82] = 0x0; - data[83] = 0x0; - data[84] = 0x0; - data[85] = 0x0; - data[86] = 0x0; - data[87] = 0x0; - data[88] = 0x0; - data[89] = 0x0; - data[90] = 0x0; - data[91] = 0x0; - data[92] = 0x0; - data[93] = 0x0; - data[94] = 0x0; - data[95] = 0x0; - data[96] = 0x0; - data[97] = 0x0; - data[98] = 0x0; - data[99] = 0x0; - data[100] = 0x0; - add(baseAddr, data, length); - bdi.fastDownload(data, length); - length = 101; - data[0] = 0x0; - data[1] = 0x0; - data[2] = 0x0; - data[3] = 0x0; - data[4] = 0x0; - data[5] = 0x0; - data[6] = 0x0; - data[7] = 0x0; - data[8] = 0x0; - data[9] = 0x0; - data[10] = 0x0; - data[11] = 0x0; - data[12] = 0x0; - data[13] = 0x0; - data[14] = 0x0; - data[15] = 0x0; - data[16] = 0x0; - data[17] = 0x0; - data[18] = 0x0; - data[19] = 0x0; - data[20] = 0x0; - data[21] = 0x0; - data[22] = 0x0; - data[23] = 0x0; - data[24] = 0x0; - data[25] = 0x0; - data[26] = 0x0; - data[27] = 0x0; - data[28] = 0x0; - data[29] = 0x0; - data[30] = 0x0; - data[31] = 0x0; - data[32] = 0x0; - data[33] = 0x0; - data[34] = 0x0; - data[35] = 0x0; - data[36] = 0x0; - data[37] = 0x0; - data[38] = 0x0; - data[39] = 0x0; - data[40] = 0x0; - data[41] = 0x0; - data[42] = 0x0; - data[43] = 0x0; - data[44] = 0x0; - data[45] = 0x0; - data[46] = 0x0; - data[47] = 0x0; - data[48] = 0x0; - data[49] = 0x0; - data[50] = 0x0; - data[51] = 0x0; - data[52] = 0x0; - data[53] = 0x0; - data[54] = 0x0; - data[55] = 0x0; - data[56] = 0x0; - data[57] = 0x0; - data[58] = 0x0; - data[59] = 0x0; - data[60] = 0x0; - data[61] = 0x0; - data[62] = 0x0; - data[63] = 0x0; - data[64] = 0x0; - data[65] = 0x0; - data[66] = 0x0; - data[67] = 0x0; - data[68] = 0x0; - data[69] = 0x0; - data[70] = 0x0; - data[71] = 0x0; - data[72] = 0x0; - data[73] = 0x0; - data[74] = 0x0; - data[75] = 0x0; - data[76] = 0x0; - data[77] = 0x0; - data[78] = 0x0; - data[79] = 0x0; - data[80] = 0x0; - data[81] = 0x0; - data[82] = 0x0; - data[83] = 0x0; - data[84] = 0x0; - data[85] = 0x0; - data[86] = 0x0; - data[87] = 0x0; - data[88] = 0x0; - data[89] = 0x0; - data[90] = 0x0; - data[91] = 0x0; - data[92] = 0x0; - data[93] = 0x0; - data[94] = 0x0; - data[95] = 0x0; - data[96] = 0x0; - data[97] = 0x0; - data[98] = 0x0; - data[99] = 0x0; - data[100] = 0x0; - add(baseAddr, data, length); - bdi.fastDownload(data, length); - bdi.stopFastDownload(); - baseAddr = 0x1800; - bdi.startFastDownload(baseAddr); - length = 101; - data[0] = 0x0; - data[1] = 0x0; - data[2] = 0x0; - data[3] = 0x0; - data[4] = 0x0; - data[5] = 0x0; - data[6] = 0x0; - data[7] = 0x0; - data[8] = 0x0; - data[9] = 0x0; - data[10] = 0x0; - data[11] = 0x0; - data[12] = 0x0; - data[13] = 0x0; - data[14] = 0x0; - data[15] = 0x0; - data[16] = 0x0; - data[17] = 0x0; - data[18] = 0x0; - data[19] = 0x0; - data[20] = 0x0; - data[21] = 0x0; - data[22] = 0x0; - data[23] = 0x0; - data[24] = 0x0; - data[25] = 0x0; - data[26] = 0x0; - data[27] = 0x0; - data[28] = 0x0; - data[29] = 0x0; - data[30] = 0x0; - data[31] = 0x0; - data[32] = 0x0; - data[33] = 0x0; - data[34] = 0x0; - data[35] = 0x0; - data[36] = 0x0; - data[37] = 0x0; - data[38] = 0x0; - data[39] = 0x0; - data[40] = 0x0; - data[41] = 0x0; - data[42] = 0x0; - data[43] = 0x0; - data[44] = 0x0; - data[45] = 0x0; - data[46] = 0x0; - data[47] = 0x0; - data[48] = 0x0; - data[49] = 0x0; - data[50] = 0x0; - data[51] = 0x0; - data[52] = 0x0; - data[53] = 0x0; - data[54] = 0x0; - data[55] = 0x0; - data[56] = 0x0; - data[57] = 0x0; - data[58] = 0x0; - data[59] = 0x0; - data[60] = 0x0; - data[61] = 0x0; - data[62] = 0x0; - data[63] = 0x0; - data[64] = 0x0; - data[65] = 0x0; - data[66] = 0x0; - data[67] = 0x0; - data[68] = 0x0; - data[69] = 0x0; - data[70] = 0x0; - data[71] = 0x0; - data[72] = 0x0; - data[73] = 0x0; - data[74] = 0x0; - data[75] = 0x0; - data[76] = 0x0; - data[77] = 0x0; - data[78] = 0x0; - data[79] = 0x0; - data[80] = 0x0; - data[81] = 0x0; - data[82] = 0x0; - data[83] = 0x0; - data[84] = 0x0; - data[85] = 0x0; - data[86] = 0x0; - data[87] = 0x0; - data[88] = 0x0; - data[89] = 0x0; - data[90] = 0x0; - data[91] = 0x0; - data[92] = 0x0; - data[93] = 0x0; - data[94] = 0x0; - data[95] = 0x0; - data[96] = 0x0; - data[97] = 0x0; - data[98] = 0x0; - data[99] = 0x0; - data[100] = 0x0; - add(baseAddr, data, length); - bdi.fastDownload(data, length); - length = 101; - data[0] = 0x0; - data[1] = 0x0; - data[2] = 0x0; - data[3] = 0x0; - data[4] = 0x0; - data[5] = 0x0; - data[6] = 0x0; - data[7] = 0x0; - data[8] = 0x0; - data[9] = 0x0; - data[10] = 0x0; - data[11] = 0x0; - data[12] = 0x0; - data[13] = 0x0; - data[14] = 0x0; - data[15] = 0x0; - data[16] = 0x0; - data[17] = 0x0; - data[18] = 0x0; - data[19] = 0x0; - data[20] = 0x0; - data[21] = 0x0; - data[22] = 0x0; - data[23] = 0x0; - data[24] = 0x0; - data[25] = 0x0; - data[26] = 0x0; - data[27] = 0x0; - data[28] = 0x0; - data[29] = 0x0; - data[30] = 0x0; - data[31] = 0x0; - data[32] = 0x0; - data[33] = 0x0; - data[34] = 0x0; - data[35] = 0x0; - data[36] = 0x0; - data[37] = 0x0; - data[38] = 0x0; - data[39] = 0x0; - data[40] = 0x0; - data[41] = 0x0; - data[42] = 0x0; - data[43] = 0x0; - data[44] = 0x0; - data[45] = 0x0; - data[46] = 0x0; - data[47] = 0x0; - data[48] = 0x0; - data[49] = 0x0; - data[50] = 0x0; - data[51] = 0x0; - data[52] = 0x0; - data[53] = 0x0; - data[54] = 0x0; - data[55] = 0x0; - data[56] = 0x0; - data[57] = 0x0; - data[58] = 0x0; - data[59] = 0x0; - data[60] = 0x0; - data[61] = 0x0; - data[62] = 0x0; - data[63] = 0x0; - data[64] = 0x0; - data[65] = 0x0; - data[66] = 0x0; - data[67] = 0x0; - data[68] = 0x0; - data[69] = 0x0; - data[70] = 0x0; - data[71] = 0x0; - data[72] = 0x0; - data[73] = 0x0; - data[74] = 0x0; - data[75] = 0x0; - data[76] = 0x0; - data[77] = 0x0; - data[78] = 0x0; - data[79] = 0x0; - data[80] = 0x0; - data[81] = 0x0; - data[82] = 0x0; - data[83] = 0x0; - data[84] = 0x0; - data[85] = 0x0; - data[86] = 0x0; - data[87] = 0x0; - data[88] = 0x0; - data[89] = 0x0; - data[90] = 0x0; - data[91] = 0x0; - data[92] = 0x0; - data[93] = 0x0; - data[94] = 0x0; - data[95] = 0x0; - data[96] = 0x0; - data[97] = 0x0; - data[98] = 0x0; - data[99] = 0x0; - data[100] = 0x0; - add(baseAddr, data, length); - bdi.fastDownload(data, length); - length = 101; - data[0] = 0x0; - data[1] = 0x0; - data[2] = 0x0; - data[3] = 0x0; - data[4] = 0x0; - data[5] = 0x0; - data[6] = 0x0; - data[7] = 0x0; - data[8] = 0x0; - data[9] = 0x0; - data[10] = 0x0; - data[11] = 0x0; - data[12] = 0x0; - data[13] = 0x0; - data[14] = 0x0; - data[15] = 0x0; - data[16] = 0x0; - data[17] = 0x0; - data[18] = 0x0; - data[19] = 0x0; - data[20] = 0x0; - data[21] = 0x0; - data[22] = 0x0; - data[23] = 0x0; - data[24] = 0x0; - data[25] = 0x0; - data[26] = 0x0; - data[27] = 0x0; - data[28] = 0x0; - data[29] = 0x0; - data[30] = 0x0; - data[31] = 0x0; - data[32] = 0x0; - data[33] = 0x0; - data[34] = 0x0; - data[35] = 0x0; - data[36] = 0x0; - data[37] = 0x0; - data[38] = 0x0; - data[39] = 0x0; - data[40] = 0x0; - data[41] = 0x0; - data[42] = 0x0; - data[43] = 0x0; - data[44] = 0x0; - data[45] = 0x0; - data[46] = 0x0; - data[47] = 0x0; - data[48] = 0x0; - data[49] = 0x0; - data[50] = 0x0; - data[51] = 0x0; - data[52] = 0x0; - data[53] = 0x0; - data[54] = 0x0; - data[55] = 0x0; - data[56] = 0x0; - data[57] = 0x0; - data[58] = 0x0; - data[59] = 0x0; - data[60] = 0x0; - data[61] = 0x0; - data[62] = 0x0; - data[63] = 0x0; - data[64] = 0x0; - data[65] = 0x0; - data[66] = 0x0; - data[67] = 0x0; - data[68] = 0x0; - data[69] = 0x0; - data[70] = 0x0; - data[71] = 0x0; - data[72] = 0x0; - data[73] = 0x0; - data[74] = 0x0; - data[75] = 0x0; - data[76] = 0x0; - data[77] = 0x0; - data[78] = 0x0; - data[79] = 0x0; - data[80] = 0x0; - data[81] = 0x0; - data[82] = 0x0; - data[83] = 0x0; - data[84] = 0x0; - data[85] = 0x0; - data[86] = 0x0; - data[87] = 0x0; - data[88] = 0x0; - data[89] = 0x0; - data[90] = 0x0; - data[91] = 0x0; - data[92] = 0x0; - data[93] = 0x0; - data[94] = 0x0; - data[95] = 0x0; - data[96] = 0x0; - data[97] = 0x0; - data[98] = 0x0; - data[99] = 0x0; - data[100] = 0x0; - add(baseAddr, data, length); - bdi.fastDownload(data, length); - bdi.stopFastDownload(); - baseAddr = 0x1c00; - bdi.startFastDownload(baseAddr); - length = 101; - data[0] = 0x0; - data[1] = 0x0; - data[2] = 0x0; - data[3] = 0x0; - data[4] = 0x0; - data[5] = 0x0; - data[6] = 0x0; - data[7] = 0x0; - data[8] = 0x0; - data[9] = 0x0; - data[10] = 0x0; - data[11] = 0x0; - data[12] = 0x0; - data[13] = 0x0; - data[14] = 0x0; - data[15] = 0x0; - data[16] = 0x0; - data[17] = 0x0; - data[18] = 0x0; - data[19] = 0x0; - data[20] = 0x0; - data[21] = 0x0; - data[22] = 0x0; - data[23] = 0x0; - data[24] = 0x0; - data[25] = 0x0; - data[26] = 0x0; - data[27] = 0x0; - data[28] = 0x0; - data[29] = 0x0; - data[30] = 0x0; - data[31] = 0x0; - data[32] = 0x0; - data[33] = 0x0; - data[34] = 0x0; - data[35] = 0x0; - data[36] = 0x0; - data[37] = 0x0; - data[38] = 0x0; - data[39] = 0x0; - data[40] = 0x0; - data[41] = 0x0; - data[42] = 0x0; - data[43] = 0x0; - data[44] = 0x0; - data[45] = 0x0; - data[46] = 0x0; - data[47] = 0x0; - data[48] = 0x0; - data[49] = 0x0; - data[50] = 0x0; - data[51] = 0x0; - data[52] = 0x0; - data[53] = 0x0; - data[54] = 0x0; - data[55] = 0x0; - data[56] = 0x0; - data[57] = 0x0; - data[58] = 0x0; - data[59] = 0x0; - data[60] = 0x0; - data[61] = 0x0; - data[62] = 0x0; - data[63] = 0x0; - data[64] = 0x0; - data[65] = 0x0; - data[66] = 0x0; - data[67] = 0x0; - data[68] = 0x0; - data[69] = 0x0; - data[70] = 0x0; - data[71] = 0x0; - data[72] = 0x0; - data[73] = 0x0; - data[74] = 0x0; - data[75] = 0x0; - data[76] = 0x0; - data[77] = 0x0; - data[78] = 0x0; - data[79] = 0x0; - data[80] = 0x0; - data[81] = 0x0; - data[82] = 0x0; - data[83] = 0x0; - data[84] = 0x0; - data[85] = 0x0; - data[86] = 0x0; - data[87] = 0x0; - data[88] = 0x0; - data[89] = 0x0; - data[90] = 0x0; - data[91] = 0x0; - data[92] = 0x0; - data[93] = 0x0; - data[94] = 0x0; - data[95] = 0x0; - data[96] = 0x0; - data[97] = 0x0; - data[98] = 0x0; - data[99] = 0x0; - data[100] = 0x0; - add(baseAddr, data, length); - bdi.fastDownload(data, length); - length = 101; - data[0] = 0x0; - data[1] = 0x0; - data[2] = 0x0; - data[3] = 0x0; - data[4] = 0x0; - data[5] = 0x0; - data[6] = 0x0; - data[7] = 0x0; - data[8] = 0x0; - data[9] = 0x0; - data[10] = 0x0; - data[11] = 0x0; - data[12] = 0x0; - data[13] = 0x0; - data[14] = 0x0; - data[15] = 0x0; - data[16] = 0x0; - data[17] = 0x0; - data[18] = 0x0; - data[19] = 0x0; - data[20] = 0x0; - data[21] = 0x0; - data[22] = 0x0; - data[23] = 0x0; - data[24] = 0x0; - data[25] = 0x0; - data[26] = 0x0; - data[27] = 0x0; - data[28] = 0x0; - data[29] = 0x0; - data[30] = 0x0; - data[31] = 0x0; - data[32] = 0x0; - data[33] = 0x0; - data[34] = 0x0; - data[35] = 0x0; - data[36] = 0x0; - data[37] = 0x0; - data[38] = 0x0; - data[39] = 0x0; - data[40] = 0x0; - data[41] = 0x0; - data[42] = 0x0; - data[43] = 0x0; - data[44] = 0x0; - data[45] = 0x0; - data[46] = 0x0; - data[47] = 0x0; - data[48] = 0x0; - data[49] = 0x0; - data[50] = 0x0; - data[51] = 0x0; - data[52] = 0x0; - data[53] = 0x0; - data[54] = 0x0; - data[55] = 0x0; - data[56] = 0x0; - data[57] = 0x0; - data[58] = 0x0; - data[59] = 0x0; - data[60] = 0x0; - data[61] = 0x0; - data[62] = 0x0; - data[63] = 0x0; - data[64] = 0x0; - data[65] = 0x0; - data[66] = 0x0; - data[67] = 0x0; - data[68] = 0x0; - data[69] = 0x0; - data[70] = 0x0; - data[71] = 0x0; - data[72] = 0x0; - data[73] = 0x0; - data[74] = 0x0; - data[75] = 0x0; - data[76] = 0x0; - data[77] = 0x0; - data[78] = 0x0; - data[79] = 0x0; - data[80] = 0x0; - data[81] = 0x0; - data[82] = 0x0; - data[83] = 0x0; - data[84] = 0x0; - data[85] = 0x0; - data[86] = 0x0; - data[87] = 0x0; - data[88] = 0x0; - data[89] = 0x0; - data[90] = 0x0; - data[91] = 0x0; - data[92] = 0x0; - data[93] = 0x0; - data[94] = 0x0; - data[95] = 0x0; - data[96] = 0x0; - data[97] = 0x0; - data[98] = 0x0; - data[99] = 0x0; - data[100] = 0x0; - add(baseAddr, data, length); - bdi.fastDownload(data, length); - length = 101; - data[0] = 0x0; - data[1] = 0x0; - data[2] = 0x0; - data[3] = 0x0; - data[4] = 0x0; - data[5] = 0x0; - data[6] = 0x0; - data[7] = 0x0; - data[8] = 0x0; - data[9] = 0x0; - data[10] = 0x0; - data[11] = 0x0; - data[12] = 0x0; - data[13] = 0x0; - data[14] = 0x0; - data[15] = 0x0; - data[16] = 0x0; - data[17] = 0x0; - data[18] = 0x0; - data[19] = 0x0; - data[20] = 0x0; - data[21] = 0x0; - data[22] = 0x0; - data[23] = 0x0; - data[24] = 0x0; - data[25] = 0x0; - data[26] = 0x0; - data[27] = 0x0; - data[28] = 0x0; - data[29] = 0x0; - data[30] = 0x9421ffc0; - data[31] = 0xbfe1003c; - data[32] = 0x3be10038; - data[33] = 0x383fffc8; - data[34] = 0xbbe1003c; - data[35] = 0x38210040; - data[36] = 0x4e800020; - data[37] = 0x9421ffc0; - data[38] = 0x7c0802a6; - data[39] = 0x9001003c; - data[40] = 0xbfe10038; - data[41] = 0x3be10038; - data[42] = 0x90410014; - data[43] = 0x4bfff0cd; - data[44] = 0x383fffc8; - data[45] = 0xbbe10038; - data[46] = 0x8001003c; - data[47] = 0x7c0803a6; - data[48] = 0x38210040; - data[49] = 0x4e800020; - data[50] = 0x50c5598e; - data[51] = 0x0; - data[52] = 0x0; - data[53] = 0x0; - data[54] = 0x0; - data[55] = 0x0; - data[56] = 0x0; - data[57] = 0x0; - data[58] = 0x0; - data[59] = 0x0; - data[60] = 0x0; - data[61] = 0x0; - data[62] = 0x0; - data[63] = 0x0; - data[64] = 0x0; - data[65] = 0x0; - data[66] = 0x0; - data[67] = 0x0; - data[68] = 0x0; - data[69] = 0x0; - data[70] = 0x0; - data[71] = 0x0; - data[72] = 0x0; - data[73] = 0x0; - data[74] = 0x0; - data[75] = 0x0; - data[76] = 0x0; - data[77] = 0x0; - data[78] = 0x0; - data[79] = 0x0; - data[80] = 0x0; - data[81] = 0x0; - data[82] = 0x0; - data[83] = 0x0; - data[84] = 0x0; - data[85] = 0x0; - data[86] = 0x0; - data[87] = 0x0; - data[88] = 0x0; - data[89] = 0x0; - data[90] = 0x0; - data[91] = 0x0; - data[92] = 0x0; - data[93] = 0x0; - data[94] = 0x0; - data[95] = 0x0; - data[96] = 0x0; - data[97] = 0x0; - data[98] = 0x0; - data[99] = 0x0; - data[100] = 0x0; - add(baseAddr, data, length); - bdi.fastDownload(data, length); - bdi.stopFastDownload(); - baseAddr = 0x802000; - bdi.startFastDownload(baseAddr); - length = 101; - data[0] = 0x26; - data[1] = 0x80326c; - data[2] = 0x803304; - data[3] = 0x803268; - data[4] = 0x803270; - data[5] = 0x803274; - data[6] = 0x803278; - data[7] = 0x80327c; - data[8] = 0x803280; - data[9] = 0x803284; - data[10] = 0x803288; - data[11] = 0x80328c; - data[12] = 0x803290; - data[13] = 0x803294; - data[14] = 0x803298; - data[15] = 0x80329c; - data[16] = 0x8032a0; - data[17] = 0x8032a4; - data[18] = 0x8032a8; - data[19] = 0x8032ac; - data[20] = 0x8032b0; - data[21] = 0x8032b4; - data[22] = 0x8032b8; - data[23] = 0x8032bc; - data[24] = 0x8032c0; - data[25] = 0x8032c4; - data[26] = 0x8032c8; - data[27] = 0x8032cc; - data[28] = 0x8032d0; - data[29] = 0x8032d4; - data[30] = 0x8032d8; - data[31] = 0x8032dc; - data[32] = 0x8032e0; - data[33] = 0x8032e4; - data[34] = 0x8032e8; - data[35] = 0x8032ec; - data[36] = 0x8032f0; - data[37] = 0x8032f4; - data[38] = 0x8032f8; - data[39] = 0x8020d4; - data[40] = 0x802130; - data[41] = 0x8020f8; - data[42] = 0x18; - data[43] = 0x80320c; - data[44] = 0x0; - data[45] = 0x802000; - data[46] = 0x27c; - data[47] = 0x80227c; - data[48] = 0xfc8; - data[49] = 0x803244; - data[50] = 0x18; - data[51] = 0x80325c; - data[52] = 0xb0; - data[53] = 0xa; - data[54] = 0x546f7070; - data[55] = 0x63546173; - data[56] = 0x6b730000; - data[57] = 0x0; - data[58] = 0x0; - data[59] = 0x0; - data[60] = 0x0; - data[61] = 0x0; - data[62] = 0x3fa720; - data[63] = 0x3fa6e0; - data[64] = 0x3fa720; - data[65] = 0x802220; - data[66] = 0x8021a4; - data[67] = 0x802130; - data[68] = 0x8022f0; - data[69] = 0x80325c; - data[70] = 0x802370; - data[71] = 0x80325c; - data[72] = 0x8022b4; - data[73] = 0x80325c; - data[74] = 0xffffffff; - data[75] = 0xffffffff; - data[76] = 0x24; - data[77] = 0x0; - data[78] = 0x3; - data[79] = 0xfffffffc; - data[80] = 0x802000; - data[81] = 0x8020d4; - data[82] = 0x802174; - data[83] = 0x8021a4; - data[84] = 0x802130; - data[85] = 0x0; - data[86] = 0x0; - data[87] = 0x0; - data[88] = 0x0; - data[89] = 0x0; - data[90] = 0x0; - data[91] = 0x0; - data[92] = 0xffffffc0; - data[93] = 0x8; - data[94] = 0x5461736b; - data[95] = 0x44657363; - data[96] = 0x0; - data[97] = 0x8022f0; - data[98] = 0x80325c; - data[99] = 0x802370; - data[100] = 0x80325c; - add(baseAddr, data, length); - bdi.fastDownload(data, length); - length = 101; - data[0] = 0x8023f4; - data[1] = 0x80325c; - data[2] = 0x0; - data[3] = 0xfffffffc; - data[4] = 0x24; - data[5] = 0x1; - data[6] = 0x3; - data[7] = 0xfffffff8; - data[8] = 0x802000; - data[9] = 0x8020d4; - data[10] = 0x8021e8; - data[11] = 0x802220; - data[12] = 0x802130; - data[13] = 0x8021a4; - data[14] = 0x0; - data[15] = 0x0; - data[16] = 0x0; - data[17] = 0x0; - data[18] = 0x0; - data[19] = 0x0; - data[20] = 0xffffffc0; - data[21] = 0xd; - data[22] = 0x4572726f; - data[23] = 0x72546173; - data[24] = 0x6b446573; - data[25] = 0x63000000; - data[26] = 0x0; - data[27] = 0x8022f0; - data[28] = 0x80325c; - data[29] = 0x802370; - data[30] = 0x80325c; - data[31] = 0x8031ec; - data[32] = 0x80325c; - data[33] = 0x0; - data[34] = 0xfffffffc; - data[35] = 0x24; - data[36] = 0x1; - data[37] = 0x3; - data[38] = 0xfffffff4; - data[39] = 0x802000; - data[40] = 0x8020d4; - data[41] = 0x802264; - data[42] = 0x0; - data[43] = 0x802130; - data[44] = 0x802220; - data[45] = 0x0; - data[46] = 0x0; - data[47] = 0x0; - data[48] = 0x0; - data[49] = 0x0; - data[50] = 0x0; - data[51] = 0xffffffc0; - data[52] = 0xa; - data[53] = 0x47435461; - data[54] = 0x736b4465; - data[55] = 0x73630000; - data[56] = 0x0; - data[57] = 0x7145256d; - data[58] = 0x0; - data[59] = 0x0; - data[60] = 0x0; - data[61] = 0x0; - data[62] = 0x3fa720; - data[63] = 0x3fa6e0; - data[64] = 0x3fa720; - data[65] = 0x802220; - data[66] = 0x8021a4; - data[67] = 0x802130; - data[68] = 0x8022f0; - data[69] = 0x80325c; - data[70] = 0x802370; - data[71] = 0x80325c; - data[72] = 0x8022b4; - data[73] = 0x80325c; - data[74] = 0xffffffff; - data[75] = 0xffffffff; - data[76] = 0x24; - data[77] = 0x0; - data[78] = 0x3; - data[79] = 0xfffffffc; - data[80] = 0x802000; - data[81] = 0x8020d4; - data[82] = 0x802174; - data[83] = 0x8021a4; - data[84] = 0x802130; - data[85] = 0x0; - data[86] = 0x0; - data[87] = 0x0; - data[88] = 0x0; - data[89] = 0x0; - data[90] = 0x0; - data[91] = 0x0; - data[92] = 0xffffffc0; - data[93] = 0x8; - data[94] = 0x5461736b; - data[95] = 0x44657363; - data[96] = 0x0; - data[97] = 0x8022f0; - data[98] = 0x80325c; - data[99] = 0x802370; - data[100] = 0x80325c; - add(baseAddr, data, length); - bdi.fastDownload(data, length); - bdi.stopFastDownload(); - baseAddr = 0x80227c; - bdi.startFastDownload(baseAddr); - length = 101; - data[0] = 0x9421ffc0; - data[1] = 0xbfc10038; - data[2] = 0x3be10038; - data[3] = 0x3bc30000; - data[4] = 0xa8620002; - data[5] = 0x2c830000; - data[6] = 0x40860008; - data[7] = 0xb3c20002; - data[8] = 0x38800000; - data[9] = 0x98820000; - data[10] = 0x383fffc8; - data[11] = 0xbbc10038; - data[12] = 0x38210040; - data[13] = 0x4e800020; - data[14] = 0x9421ffb8; - data[15] = 0x7c0802a6; - data[16] = 0x90010044; - data[17] = 0xbfc1003c; - data[18] = 0x3be10038; - data[19] = 0x90410014; - data[20] = 0x3bc30000; - data[21] = 0x38600063; - data[22] = 0x4bffffa9; - data[23] = 0x383fffc8; - data[24] = 0xbbc1003c; - data[25] = 0x80010044; - data[26] = 0x7c0803a6; - data[27] = 0x38210048; - data[28] = 0x4e800020; - data[29] = 0x9421ffb8; - data[30] = 0xbfa1003c; - data[31] = 0x3be10038; - data[32] = 0x3bc30000; - data[33] = 0x3ba40000; - data[34] = 0xe9e0000; - data[35] = 0xe9d0000; - data[36] = 0x80be0018; - data[37] = 0x80dd0018; - data[38] = 0x7f053000; - data[39] = 0x41980034; - data[40] = 0xe9e0000; - data[41] = 0xe9d0000; - data[42] = 0x80fe0018; - data[43] = 0x811d0018; - data[44] = 0x7f874000; - data[45] = 0x409e0024; - data[46] = 0xe9e0000; - data[47] = 0xe9d0000; - data[48] = 0xa93e0020; - data[49] = 0xa95d0020; - data[50] = 0x7c895000; - data[51] = 0x4084000c; - data[52] = 0x38600001; - data[53] = 0x42800008; - data[54] = 0x38600000; - data[55] = 0x42800008; - data[56] = 0x7fe00008; - data[57] = 0x383fffc8; - data[58] = 0xbba1003c; - data[59] = 0x38210048; - data[60] = 0x4e800020; - data[61] = 0x9421ffc0; - data[62] = 0xbfc10038; - data[63] = 0x3be10038; - data[64] = 0x3bc30000; - data[65] = 0xe9e0000; - data[66] = 0x817e0000; - data[67] = 0x2f0b0000; - data[68] = 0x4198004c; - data[69] = 0xe9e0000; - data[70] = 0x819e0000; - data[71] = 0x3c608000; - data[72] = 0x3883fc17; - data[73] = 0x7f8c2000; - data[74] = 0x419d0034; - data[75] = 0xe9e0000; - data[76] = 0x80be0004; - data[77] = 0x2c850000; - data[78] = 0x41840024; - data[79] = 0xe9e0000; - data[80] = 0x80de0004; - data[81] = 0x3ce08000; - data[82] = 0x3907fc17; - data[83] = 0x7f064000; - data[84] = 0x4199000c; - data[85] = 0x38600001; - data[86] = 0x42800008; - data[87] = 0x38600000; - data[88] = 0x42800008; - data[89] = 0x7fe00008; - data[90] = 0x383fffc8; - data[91] = 0xbbc10038; - data[92] = 0x38210040; - data[93] = 0x4e800020; - data[94] = 0x9421ffb8; - data[95] = 0x7c0802a6; - data[96] = 0x90010044; - data[97] = 0xbfc1003c; - data[98] = 0x3be10038; - data[99] = 0x90410014; - data[100] = 0x3bc30000; - add(baseAddr, data, length); - bdi.fastDownload(data, length); - length = 101; - data[0] = 0x38600062; - data[1] = 0x4bfffe69; - data[2] = 0x383fffc8; - data[3] = 0xbbc1003c; - data[4] = 0x80010044; - data[5] = 0x7c0803a6; - data[6] = 0x38210048; - data[7] = 0x4e800020; - data[8] = 0x9421ffb0; - data[9] = 0x7c0802a6; - data[10] = 0x9001004c; - data[11] = 0xbfa10040; - data[12] = 0x3be10038; - data[13] = 0x90410014; - data[14] = 0x3bc30000; - data[15] = 0x89220000; - data[16] = 0x2f890000; - data[17] = 0x419e0020; - data[18] = 0xa9420004; - data[19] = 0xa9620006; - data[20] = 0x7d8a5a14; - data[21] = 0x2c8c0020; - data[22] = 0x4084000c; - data[23] = 0x38600001; - data[24] = 0x42800008; - data[25] = 0x38600000; - data[26] = 0x98620000; - data[27] = 0x88820000; - data[28] = 0x2f040000; - data[29] = 0x419a0088; - data[30] = 0xa8a20004; - data[31] = 0x30c50001; - data[32] = 0xb0c20004; - data[33] = 0xaba20004; - data[34] = 0x387e0000; - data[35] = 0x7fa70e70; - data[36] = 0xca70022; - data[37] = 0x54e8103a; - data[38] = 0x7d224214; - data[39] = 0x80890018; - data[40] = 0x8143fffc; - data[41] = 0x800affe0; - data[42] = 0x7c0903a6; - data[43] = 0x804affe4; - data[44] = 0x4e800421; - data[45] = 0x80410014; - data[46] = 0x2f830000; - data[47] = 0x419e0030; - data[48] = 0xcbd0022; - data[49] = 0x57ab103a; - data[50] = 0x7d825a14; - data[51] = 0x7fa30e70; - data[52] = 0xca30022; - data[53] = 0x5464103a; - data[54] = 0x7ca22214; - data[55] = 0x80c50018; - data[56] = 0x90cc0018; - data[57] = 0x7fbd0e70; - data[58] = 0x4280ffa0; - data[59] = 0xcbd0022; - data[60] = 0x57a7103a; - data[61] = 0x7d023a14; - data[62] = 0x93c80018; - data[63] = 0x383fffc8; - data[64] = 0xbba10040; - data[65] = 0x8001004c; - data[66] = 0x7c0803a6; - data[67] = 0x38210050; - data[68] = 0x4e800020; - data[69] = 0x9421ffa8; - data[70] = 0x7c0802a6; - data[71] = 0x90010054; - data[72] = 0xbf810044; - data[73] = 0x3be10038; - data[74] = 0x90410014; - data[75] = 0x3bc00000; - data[76] = 0xa9220004; - data[77] = 0x2c890001; - data[78] = 0x40850118; - data[79] = 0xa9420004; - data[80] = 0xcaa0022; - data[81] = 0x554b103a; - data[82] = 0x7d825a14; - data[83] = 0x83cc0018; - data[84] = 0xa8620004; - data[85] = 0xca30022; - data[86] = 0x5464103a; - data[87] = 0x7ca22214; - data[88] = 0x80c2000c; - data[89] = 0x90c50018; - data[90] = 0x3ba00001; - data[91] = 0xa8e20004; - data[92] = 0x3107ffff; - data[93] = 0xb1020004; - data[94] = 0x57bc083c; - data[95] = 0xa9220004; - data[96] = 0x7f1c4800; - data[97] = 0x40990008; - data[98] = 0x428000b4; - data[99] = 0xcbc0022; - data[100] = 0x578a103a; - add(baseAddr, data, length); - bdi.fastDownload(data, length); - length = 101; - data[0] = 0x7d625214; - data[1] = 0x806b0018; - data[2] = 0x319c0001; - data[3] = 0xcac0022; - data[4] = 0x5584103a; - data[5] = 0x7ca22214; - data[6] = 0x80850018; - data[7] = 0x80c3fffc; - data[8] = 0x8006ffe0; - data[9] = 0x7c0903a6; - data[10] = 0x8046ffe4; - data[11] = 0x4e800421; - data[12] = 0x80410014; - data[13] = 0x20e30001; - data[14] = 0x2f870000; - data[15] = 0x419e0008; - data[16] = 0x339c0001; - data[17] = 0x387e0000; - data[18] = 0xcbc0022; - data[19] = 0x5788103a; - data[20] = 0x7d224214; - data[21] = 0x80890018; - data[22] = 0x8143fffc; - data[23] = 0x800affe0; - data[24] = 0x7c0903a6; - data[25] = 0x804affe4; - data[26] = 0x4e800421; - data[27] = 0x80410014; - data[28] = 0x2c830000; - data[29] = 0x4186000c; - data[30] = 0x42800030; - data[31] = 0x42800028; - data[32] = 0xcbd0022; - data[33] = 0x57ab103a; - data[34] = 0x7d825a14; - data[35] = 0xcbc0022; - data[36] = 0x5783103a; - data[37] = 0x7c821a14; - data[38] = 0x80a40018; - data[39] = 0x90ac0018; - data[40] = 0x3bbc0000; - data[41] = 0x4280ff40; - data[42] = 0xcbd0022; - data[43] = 0x57a6103a; - data[44] = 0x7ce23214; - data[45] = 0x93c70018; - data[46] = 0x42800020; - data[47] = 0xa9020004; - data[48] = 0x2f080001; - data[49] = 0x409a0014; - data[50] = 0x8122000c; - data[51] = 0x9122001c; - data[52] = 0x39400000; - data[53] = 0xb1420004; - data[54] = 0x7ca22214; - data[55] = 0x80c50018; - data[56] = 0x90cc0018; - data[57] = 0x7fbd0e70; - data[58] = 0x4280ffa0; - data[59] = 0xcbd0022; - data[60] = 0x57a7103a; - data[61] = 0x7d023a14; - data[62] = 0x93c80018; - data[63] = 0x383fffc8; - data[64] = 0xbba10040; - data[65] = 0x8001004c; - data[66] = 0x7c0803a6; - data[67] = 0x38210050; - data[68] = 0x4e800020; - data[69] = 0x9421ffa8; - data[70] = 0x7c0802a6; - data[71] = 0x90010054; - data[72] = 0xbf810044; - data[73] = 0x3be10038; - data[74] = 0x90410014; - data[75] = 0x3bc00000; - data[76] = 0xa9220004; - data[77] = 0x2c890001; - data[78] = 0x40850118; - data[79] = 0xa9420004; - data[80] = 0xcaa0022; - data[81] = 0x554b103a; - data[82] = 0x7d825a14; - data[83] = 0x83cc0018; - data[84] = 0xa8620004; - data[85] = 0xca30022; - data[86] = 0x5464103a; - data[87] = 0x7ca22214; - data[88] = 0x80c2000c; - data[89] = 0x90c50018; - data[90] = 0x3ba00001; - data[91] = 0xa8e20004; - data[92] = 0x3107ffff; - data[93] = 0xb1020004; - data[94] = 0x57bc083c; - data[95] = 0xa9220004; - data[96] = 0x7f1c4800; - data[97] = 0x40990008; - data[98] = 0x428000b4; - data[99] = 0xcbc0022; - data[100] = 0x578a103a; - add(baseAddr, data, length); - bdi.fastDownload(data, length); - bdi.stopFastDownload(); - baseAddr = 0x80267c; - bdi.startFastDownload(baseAddr); - length = 101; - data[0] = 0x383fffc8; - data[1] = 0xbb810044; - data[2] = 0x80010054; - data[3] = 0x7c0803a6; - data[4] = 0x38210058; - data[5] = 0x4e800020; - data[6] = 0x9421ffa8; - data[7] = 0x7c0802a6; - data[8] = 0x90010054; - data[9] = 0xbf810044; - data[10] = 0x3be10038; - data[11] = 0x90410014; - data[12] = 0x3bc00000; - data[13] = 0xa9620004; - data[14] = 0x2f8b0001; - data[15] = 0x409d00e0; - data[16] = 0x83c2001c; - data[17] = 0x3ba00001; - data[18] = 0x57bc083c; - data[19] = 0xa9820004; - data[20] = 0x7c9c6000; - data[21] = 0x40850008; - data[22] = 0x428000b4; - data[23] = 0xcbc0022; - data[24] = 0x5783103a; - data[25] = 0x7c821a14; - data[26] = 0x80640018; - data[27] = 0x30bc0001; - data[28] = 0xca50022; - data[29] = 0x54a6103a; - data[30] = 0x7ce23214; - data[31] = 0x80870018; - data[32] = 0x8103fffc; - data[33] = 0x8008ffe0; - data[34] = 0x7c0903a6; - data[35] = 0x8048ffe4; - data[36] = 0x4e800421; - data[37] = 0x80410014; - data[38] = 0x21230001; - data[39] = 0x2f090000; - data[40] = 0x419a0008; - data[41] = 0x339c0001; - data[42] = 0x387e0000; - data[43] = 0xcbc0022; - data[44] = 0x578a103a; - data[45] = 0x7d625214; - data[46] = 0x808b0018; - data[47] = 0x8183fffc; - data[48] = 0x800cffe0; - data[49] = 0x7c0903a6; - data[50] = 0x804cffe4; - data[51] = 0x4e800421; - data[52] = 0x80410014; - data[53] = 0x2f830000; - data[54] = 0x419e000c; - data[55] = 0x42800030; - data[56] = 0x42800028; - data[57] = 0xcbd0022; - data[58] = 0x57a3103a; - data[59] = 0x7c821a14; - data[60] = 0xcbc0022; - data[61] = 0x5785103a; - data[62] = 0x7cc22a14; - data[63] = 0x80e60018; - data[64] = 0x90e40018; - data[65] = 0x3bbc0000; - data[66] = 0x4280ff40; - data[67] = 0xcbd0022; - data[68] = 0x57a8103a; - data[69] = 0x7d224214; - data[70] = 0x93c90018; - data[71] = 0x383fffc8; - data[72] = 0xbb810044; - data[73] = 0x80010054; - data[74] = 0x7c0803a6; - data[75] = 0x38210058; - data[76] = 0x4e800020; - data[77] = 0x9421ff98; - data[78] = 0x7c0802a6; - data[79] = 0x90010064; - data[80] = 0xbf41004c; - data[81] = 0x3be10038; - data[82] = 0x90410014; - data[83] = 0x3bc30000; - data[84] = 0x3ba00000; - data[85] = 0xab420004; - data[86] = 0x2c9a0000; - data[87] = 0x40850024; - data[88] = 0xcba0022; - data[89] = 0x574a103a; - data[90] = 0x7d625214; - data[91] = 0x818b0018; - data[92] = 0x7f0cf000; - data[93] = 0x419a000c; - data[94] = 0x335affff; - data[95] = 0x4280ffdc; - data[96] = 0x2f9a0000; - data[97] = 0x409d01b4; - data[98] = 0x2c9a0001; - data[99] = 0x4086000c; - data[100] = 0x4bfffd19; - add(baseAddr, data, length); - bdi.fastDownload(data, length); - length = 101; - data[0] = 0x428001a4; - data[1] = 0xa8620004; - data[2] = 0xca30022; - data[3] = 0x5464103a; - data[4] = 0x7ca22214; - data[5] = 0x83a50018; - data[6] = 0xa8c20004; - data[7] = 0xca60022; - data[8] = 0x54c7103a; - data[9] = 0x7d023a14; - data[10] = 0x8122000c; - data[11] = 0x91280018; - data[12] = 0xa9420004; - data[13] = 0x7f1a5000; - data[14] = 0x409a0014; - data[15] = 0xa9620004; - data[16] = 0x318bffff; - data[17] = 0xb1820004; - data[18] = 0x4280015c; - data[19] = 0x2f9a0001; - data[20] = 0x409d0154; - data[21] = 0xa8620004; - data[22] = 0x3083ffff; - data[23] = 0xb0820004; - data[24] = 0x3b9a0000; - data[25] = 0x387d0000; - data[26] = 0x7f850e70; - data[27] = 0xca50022; - data[28] = 0x54a6103a; - data[29] = 0x7ce23214; - data[30] = 0x80870018; - data[31] = 0x8103fffc; - data[32] = 0x8008ffe0; - data[33] = 0x7c0903a6; - data[34] = 0x8048ffe4; - data[35] = 0x4e800421; - data[36] = 0x80410014; - data[37] = 0x2c830000; - data[38] = 0x41860030; - data[39] = 0xcbc0022; - data[40] = 0x5789103a; - data[41] = 0x7d424a14; - data[42] = 0x7f8b0e70; - data[43] = 0xcab0022; - data[44] = 0x556c103a; - data[45] = 0x7c626214; - data[46] = 0x80830018; - data[47] = 0x908a0018; - data[48] = 0x7f9c0e70; - data[49] = 0x4280ffa0; - data[50] = 0x7f1cd000; - data[51] = 0x409a00c8; - data[52] = 0x579b083c; - data[53] = 0xa8a20004; - data[54] = 0x7f9b2800; - data[55] = 0x409d0008; - data[56] = 0x428000b4; - data[57] = 0xcbb0022; - data[58] = 0x5766103a; - data[59] = 0x7ce23214; - data[60] = 0x80670018; - data[61] = 0x311b0001; - data[62] = 0xca80022; - data[63] = 0x5509103a; - data[64] = 0x7d424a14; - data[65] = 0x808a0018; - data[66] = 0x8163fffc; - data[67] = 0x800bffe0; - data[68] = 0x7c0903a6; - data[69] = 0x804bffe4; - data[70] = 0x4e800421; - data[71] = 0x80410014; - data[72] = 0x21830001; - data[73] = 0x2c8c0000; - data[74] = 0x41860008; - data[75] = 0x337b0001; - data[76] = 0x387d0000; - data[77] = 0xcbb0022; - data[78] = 0x5764103a; - data[79] = 0x7ca22214; - data[80] = 0x80850018; - data[81] = 0x80c3fffc; - data[82] = 0x8006ffe0; - data[83] = 0x7c0903a6; - data[84] = 0x8046ffe4; - data[85] = 0x4e800421; - data[86] = 0x80410014; - data[87] = 0x2f030000; - data[88] = 0x419a000c; - data[89] = 0x42800030; - data[90] = 0x42800028; - data[91] = 0xcbc0022; - data[92] = 0x5787103a; - data[93] = 0x7d023a14; - data[94] = 0xcbb0022; - data[95] = 0x5769103a; - data[96] = 0x7d424a14; - data[97] = 0x816a0018; - data[98] = 0x91680018; - data[99] = 0x3b9b0000; - data[100] = 0x4280ff40; - add(baseAddr, data, length); - bdi.fastDownload(data, length); - length = 101; - data[0] = 0xcbc0022; - data[1] = 0x578c103a; - data[2] = 0x7c626214; - data[3] = 0x93a30018; - data[4] = 0x383fffc8; - data[5] = 0xbb41004c; - data[6] = 0x80010064; - data[7] = 0x7c0803a6; - data[8] = 0x38210068; - data[9] = 0x4e800020; - data[10] = 0x9421ffb0; - data[11] = 0x7c0802a6; - data[12] = 0x9001004c; - data[13] = 0xbfa10040; - data[14] = 0x3be10038; - data[15] = 0x90410014; - data[16] = 0x3bc30000; - data[17] = 0xa8820006; - data[18] = 0x23a40022; - data[19] = 0x2f9d0022; - data[20] = 0x409c0024; - data[21] = 0xcbd0022; - data[22] = 0x57a5103a; - data[23] = 0x7cc22a14; - data[24] = 0x80e60018; - data[25] = 0x7c87f000; - data[26] = 0x4186000c; - data[27] = 0x33bd0001; - data[28] = 0x4280ffdc; - data[29] = 0x2f1d0022; - data[30] = 0x4098003c; - data[31] = 0xcbd0022; - data[32] = 0x57a8103a; - data[33] = 0x7d224214; - data[34] = 0xa9420006; - data[35] = 0x216a0022; - data[36] = 0xcab0022; - data[37] = 0x556c103a; - data[38] = 0x7c626214; - data[39] = 0x80830018; - data[40] = 0x90890018; - data[41] = 0xa8a20006; - data[42] = 0x30c5ffff; - data[43] = 0xb0c20006; - data[44] = 0x4280000c; - data[45] = 0x387e0000; - data[46] = 0x4bfffd55; - data[47] = 0xe9e0000; - data[48] = 0x38e00000; - data[49] = 0x98fe0017; - data[50] = 0x383fffc8; - data[51] = 0xbba10040; - data[52] = 0x8001004c; - data[53] = 0x7c0803a6; - data[54] = 0x7f9b2800; - data[55] = 0x409d0008; - data[56] = 0x428000b4; - data[57] = 0xcbb0022; - data[58] = 0x5766103a; - data[59] = 0x7ce23214; - data[60] = 0x80670018; - data[61] = 0x311b0001; - data[62] = 0xca80022; - data[63] = 0x5509103a; - data[64] = 0x7d424a14; - data[65] = 0x808a0018; - data[66] = 0x8163fffc; - data[67] = 0x800bffe0; - data[68] = 0x7c0903a6; - data[69] = 0x804bffe4; - data[70] = 0x4e800421; - data[71] = 0x80410014; - data[72] = 0x21830001; - data[73] = 0x2c8c0000; - data[74] = 0x41860008; - data[75] = 0x337b0001; - data[76] = 0x387d0000; - data[77] = 0xcbb0022; - data[78] = 0x5764103a; - data[79] = 0x7ca22214; - data[80] = 0x80850018; - data[81] = 0x80c3fffc; - data[82] = 0x8006ffe0; - data[83] = 0x7c0903a6; - data[84] = 0x8046ffe4; - data[85] = 0x4e800421; - data[86] = 0x80410014; - data[87] = 0x2f030000; - data[88] = 0x419a000c; - data[89] = 0x42800030; - data[90] = 0x42800028; - data[91] = 0xcbc0022; - data[92] = 0x5787103a; - data[93] = 0x7d023a14; - data[94] = 0xcbb0022; - data[95] = 0x5769103a; - data[96] = 0x7d424a14; - data[97] = 0x816a0018; - data[98] = 0x91680018; - data[99] = 0x3b9b0000; - data[100] = 0x4280ff40; - add(baseAddr, data, length); - bdi.fastDownload(data, length); - bdi.stopFastDownload(); - baseAddr = 0x802a7c; - bdi.startFastDownload(baseAddr); - length = 101; - data[0] = 0x38210050; - data[1] = 0x4e800020; - data[2] = 0x9421ffc0; - data[3] = 0x7c0802a6; - data[4] = 0x9001003c; - data[5] = 0xbfe10038; - data[6] = 0x3be10038; - data[7] = 0x90410014; - data[8] = 0x8042ffec; - data[9] = 0x4bbf71d5; - data[10] = 0x80410014; - data[11] = 0x42800008; - data[12] = 0x7fe00008; - data[13] = 0x383fffc8; - data[14] = 0xbbe10038; - data[15] = 0x8001003c; - data[16] = 0x7c0803a6; - data[17] = 0x38210040; - data[18] = 0x4e800020; - data[19] = 0x9421ffa0; - data[20] = 0x7c0802a6; - data[21] = 0x9001005c; - data[22] = 0xbf610048; - data[23] = 0x3be10038; - data[24] = 0x90410014; - data[25] = 0x3bc00000; - data[26] = 0x8102ffec; - data[27] = 0x81280008; - data[28] = 0x912200a0; - data[29] = 0x8148000c; - data[30] = 0x914200a4; - data[31] = 0x816200a0; - data[32] = 0x2f8b0000; - data[33] = 0x419e0028; - data[34] = 0x8182ffec; - data[35] = 0x38600000; - data[36] = 0x906c0008; - data[37] = 0x906c000c; - data[38] = 0x800200a0; - data[39] = 0x7c0903a6; - data[40] = 0x804200a4; - data[41] = 0x4e800421; - data[42] = 0x80410014; - data[43] = 0x80620014; - data[44] = 0xe830000; - data[45] = 0x38630018; - data[46] = 0x80820014; - data[47] = 0xe840000; - data[48] = 0x38840020; - data[49] = 0x8042ffec; - data[50] = 0x4bbf7171; - data[51] = 0x80410014; - data[52] = 0x83c2001c; - data[53] = 0x387e0000; - data[54] = 0x80820014; - data[55] = 0x80a3fffc; - data[56] = 0x8005ffe0; - data[57] = 0x7c0903a6; - data[58] = 0x8045ffe4; - data[59] = 0x4e800421; - data[60] = 0x80410014; - data[61] = 0x2c830000; - data[62] = 0x41860214; - data[63] = 0x38c00001; - data[64] = 0xb0c2000a; - data[65] = 0xe9e0000; - data[66] = 0x80fe0008; - data[67] = 0x31070001; - data[68] = 0x911e0008; - data[69] = 0xe9e0000; - data[70] = 0x893e0015; - data[71] = 0x2f090000; - data[72] = 0x419a006c; - data[73] = 0x4bfffee5; - data[74] = 0x3ba30000; - data[75] = 0x387e0000; - data[76] = 0x8143fffc; - data[77] = 0x800afff0; - data[78] = 0x7c0903a6; - data[79] = 0x804afff4; - data[80] = 0x4e800421; - data[81] = 0x80410014; - data[82] = 0x4bfffec1; - data[83] = 0x3b830000; - data[84] = 0x7f7de010; - data[85] = 0xe9e0000; - data[86] = 0x817e000c; - data[87] = 0x7f9b5800; - data[88] = 0x409c0010; - data[89] = 0xe9e0000; - data[90] = 0x937e000c; - data[91] = 0x4280001c; - data[92] = 0xe9e0000; - data[93] = 0x819e0010; - data[94] = 0x7c9b6000; - data[95] = 0x4085000c; - data[96] = 0xe9e0000; - data[97] = 0x937e0010; - data[98] = 0x42800020; - data[99] = 0x387e0000; - data[100] = 0x8083fffc; - add(baseAddr, data, length); - bdi.fastDownload(data, length); - length = 101; - data[0] = 0x8004fff0; - data[1] = 0x7c0903a6; - data[2] = 0x8044fff4; - data[3] = 0x4e800421; - data[4] = 0x80410014; - data[5] = 0xe9e0000; - data[6] = 0x88be0017; - data[7] = 0x2f050000; - data[8] = 0x419a0154; - data[9] = 0xe9e0000; - data[10] = 0x80de0004; - data[11] = 0x2f860000; - data[12] = 0x419d0034; - data[13] = 0xa8e20006; - data[14] = 0x31070001; - data[15] = 0xb1020006; - data[16] = 0xa9220006; - data[17] = 0x21490022; - data[18] = 0xcaa0022; - data[19] = 0x554b103a; - data[20] = 0x7d825a14; - data[21] = 0x8062001c; - data[22] = 0x906c0018; - data[23] = 0x4bfff8b9; - data[24] = 0x42800114; - data[25] = 0xe9e0000; - data[26] = 0xe9e0000; - data[27] = 0xa89e0020; - data[28] = 0xa8be0022; - data[29] = 0x7cc42a14; - data[30] = 0xb0de0020; - data[31] = 0xe9e0000; - data[32] = 0xa8fe0020; - data[33] = 0x2c8703e8; - data[34] = 0x41840024; - data[35] = 0xe9e0000; - data[36] = 0xa91e0020; - data[37] = 0x3128fc18; - data[38] = 0xb13e0020; - data[39] = 0xe9e0000; - data[40] = 0x815e0018; - data[41] = 0x316a0001; - data[42] = 0x917e0018; - data[43] = 0xe9e0000; - data[44] = 0xe9e0000; - data[45] = 0x819e0018; - data[46] = 0x807e001c; - data[47] = 0x7c8c1a14; - data[48] = 0x909e0018; - data[49] = 0xe9e0000; - data[50] = 0x88be0016; - data[51] = 0x2f050000; - data[52] = 0x419a00a0; - data[53] = 0x387e0000; - data[54] = 0x80820014; - data[55] = 0x80c3fffc; - data[56] = 0x8006ffe0; - data[57] = 0x7c0903a6; - data[58] = 0x8046ffe4; - data[59] = 0x4e800421; - data[60] = 0x80410014; - data[61] = 0x2f830000; - data[62] = 0x419e0078; - data[63] = 0xe9e0000; - data[64] = 0x80e20014; - data[65] = 0xe870000; - data[66] = 0xe9e0000; - data[67] = 0xa9070020; - data[68] = 0xa93e0022; - data[69] = 0x7d484a14; - data[70] = 0xb15e0020; - data[71] = 0xe9e0000; - data[72] = 0xa97e0020; - data[73] = 0x2c8b03e8; - data[74] = 0x41840028; - data[75] = 0xe9e0000; - data[76] = 0xa99e0020; - data[77] = 0x306cfc18; - data[78] = 0xb07e0020; - data[79] = 0x80820014; - data[80] = 0xe840000; - data[81] = 0x80a40018; - data[82] = 0x30c50001; - data[83] = 0x90c40018; - data[84] = 0xe9e0000; - data[85] = 0x80e20014; - data[86] = 0xe870000; - data[87] = 0xe9e0000; - data[88] = 0x81070018; - data[89] = 0x813e001c; - data[90] = 0x7d484a14; - data[91] = 0x915e0018; - data[92] = 0x4bfff915; - data[93] = 0x428000f4; - data[94] = 0xa9620006; - data[95] = 0x2f0b0000; - data[96] = 0x409900e8; - data[97] = 0xa9820008; - data[98] = 0x306c0001; - data[99] = 0xb0620008; - data[100] = 0xa8820008; - add(baseAddr, data, length); - bdi.fastDownload(data, length); - length = 101; - data[0] = 0x2f840022; - data[1] = 0x419c0010; - data[2] = 0xa8a20006; - data[3] = 0x20c50022; - data[4] = 0xb0c20008; - data[5] = 0xa8e20008; - data[6] = 0xb0e2000a; - data[7] = 0xa9020008; - data[8] = 0xca80022; - data[9] = 0x5509103a; - data[10] = 0x7d424a14; - data[11] = 0x83ca0018; - data[12] = 0xe9e0000; - data[13] = 0x817e0008; - data[14] = 0x318b0001; - data[15] = 0x919e0008; - data[16] = 0xe9e0000; - data[17] = 0x887e0015; - data[18] = 0x2c830000; - data[19] = 0x4186006c; - data[20] = 0x4bfffc91; - data[21] = 0x3ba30000; - data[22] = 0x387e0000; - data[23] = 0x8083fffc; - data[24] = 0x8004fff0; - data[25] = 0x7c0903a6; - data[26] = 0x8044fff4; - data[27] = 0x4e800421; - data[28] = 0x80410014; - data[29] = 0x4bfffc6d; - data[30] = 0x3b830000; - data[31] = 0x7f7de010; - data[32] = 0xe9e0000; - data[33] = 0x80be000c; - data[34] = 0x7f1b2800; - data[35] = 0x40980010; - data[36] = 0xe9e0000; - data[37] = 0x937e000c; - data[38] = 0x4280001c; - data[39] = 0xe9e0000; - data[40] = 0x80de0010; - data[41] = 0x7f9b3000; - data[42] = 0x409d000c; - data[43] = 0xe9e0000; - data[44] = 0x937e0010; - data[45] = 0x42800020; - data[46] = 0x387e0000; - data[47] = 0x80e3fffc; - data[48] = 0x8007fff0; - data[49] = 0x7c0903a6; - data[50] = 0x8047fff4; - data[51] = 0x4e800421; - data[52] = 0x80410014; - data[53] = 0x4280fc6c; - data[54] = 0x80820014; - data[55] = 0x80c3fffc; - data[56] = 0x8006ffe0; - data[57] = 0x7c0903a6; - data[58] = 0x8046ffe4; - data[59] = 0x4e800421; - data[60] = 0x80410014; - data[61] = 0x2f830000; - data[62] = 0x419e0078; - data[63] = 0xe9e0000; - data[64] = 0x80e20014; - data[65] = 0xe870000; - data[66] = 0xe9e0000; - data[67] = 0xa9070020; - data[68] = 0xa93e0022; - data[69] = 0x7d484a14; - data[70] = 0xb15e0020; - data[71] = 0xe9e0000; - data[72] = 0xa97e0020; - data[73] = 0x2c8b03e8; - data[74] = 0x41840028; - data[75] = 0xe9e0000; - data[76] = 0xa99e0020; - data[77] = 0x306cfc18; - data[78] = 0xb07e0020; - data[79] = 0x80820014; - data[80] = 0xe840000; - data[81] = 0x80a40018; - data[82] = 0x30c50001; - data[83] = 0x90c40018; - data[84] = 0xe9e0000; - data[85] = 0x80e20014; - data[86] = 0xe870000; - data[87] = 0xe9e0000; - data[88] = 0x81070018; - data[89] = 0x813e001c; - data[90] = 0x7d484a14; - data[91] = 0x915e0018; - data[92] = 0x4bfff915; - data[93] = 0x428000f4; - data[94] = 0xa9620006; - data[95] = 0x2f0b0000; - data[96] = 0x409900e8; - data[97] = 0xa9820008; - data[98] = 0x306c0001; - data[99] = 0xb0620008; - data[100] = 0xa8820008; - add(baseAddr, data, length); - bdi.fastDownload(data, length); - bdi.stopFastDownload(); - baseAddr = 0x802e7c; - bdi.startFastDownload(baseAddr); - length = 101; - data[0] = 0x383fffc8; - data[1] = 0xbb610048; - data[2] = 0x8001005c; - data[3] = 0x7c0803a6; - data[4] = 0x38210060; - data[5] = 0x4e800020; - data[6] = 0x9421ffc0; - data[7] = 0x7c0802a6; - data[8] = 0x9001003c; - data[9] = 0xbfe10038; - data[10] = 0x3be10038; - data[11] = 0x90410014; - data[12] = 0x8042ffec; - data[13] = 0x4bbf6dc5; - data[14] = 0x80410014; - data[15] = 0x390003e8; - data[16] = 0x7c6343d7; - data[17] = 0x40800008; - data[18] = 0x3063ffff; - data[19] = 0x42800008; - data[20] = 0x7fe00008; - data[21] = 0x383fffc8; - data[22] = 0xbbe10038; - data[23] = 0x8001003c; - data[24] = 0x7c0803a6; - data[25] = 0x38210040; - data[26] = 0x4e800020; - data[27] = 0x9421ffa8; - data[28] = 0x7c0802a6; - data[29] = 0x90010054; - data[30] = 0xbfa10048; - data[31] = 0x3be10038; - data[32] = 0x90410014; - data[33] = 0x3bc30000; - data[34] = 0x387e0000; - data[35] = 0x4bfffac5; - data[36] = 0x387e0000; - data[37] = 0x8123fffc; - data[38] = 0x8009ffe8; - data[39] = 0x7c0903a6; - data[40] = 0x8049ffec; - data[41] = 0x4e800421; - data[42] = 0x80410014; - data[43] = 0x21430001; - data[44] = 0x2c8a0000; - data[45] = 0x41860010; - data[46] = 0x38600001; - data[47] = 0x4bfff345; - data[48] = 0x42800154; - data[49] = 0xa9620004; - data[50] = 0xa9820006; - data[51] = 0x7c6b6214; - data[52] = 0x2f030020; - data[53] = 0x41980010; - data[54] = 0x38600002; - data[55] = 0x4bfff325; - data[56] = 0x42800134; - data[57] = 0x387f0000; - data[58] = 0x389f0008; - data[59] = 0x8042ffec; - data[60] = 0x4bbf6d49; - data[61] = 0x80410014; - data[62] = 0xa89f0008; - data[63] = 0xe9e0000; - data[64] = 0x80be0000; - data[65] = 0x7fa42a14; - data[66] = 0xe9e0000; - data[67] = 0x80de0000; - data[68] = 0x2f860000; - data[69] = 0x419d0014; - data[70] = 0xe9e0000; - data[71] = 0x80fe0004; - data[72] = 0x2c870000; - data[73] = 0x408500c0; - data[74] = 0xe9e0000; - data[75] = 0x390003e8; - data[76] = 0x7d3d43d7; - data[77] = 0x40800008; - data[78] = 0x3129ffff; - data[79] = 0x815f0000; - data[80] = 0x7d6a4a14; - data[81] = 0x917e0018; - data[82] = 0xe9e0000; - data[83] = 0x398003e8; - data[84] = 0x7c7d63d6; - data[85] = 0x7c6361d6; - data[86] = 0x7c63e811; - data[87] = 0x40800008; - data[88] = 0x306303e8; - data[89] = 0xb07e0020; - data[90] = 0xe9e0000; - data[91] = 0xe9e0000; - data[92] = 0x809e0004; - data[93] = 0x38a003e8; - data[94] = 0x7cc42bd7; - data[95] = 0x40800008; - data[96] = 0x30c6ffff; - data[97] = 0x90de001c; - data[98] = 0xe9e0000; - data[99] = 0xe9e0000; - data[100] = 0x80fe0004; - add(baseAddr, data, length); - bdi.fastDownload(data, length); - length = 101; - data[0] = 0x390003e8; - data[1] = 0x7d2743d6; - data[2] = 0x7d2941d6; - data[3] = 0x7d293811; - data[4] = 0x40800008; - data[5] = 0x312903e8; - data[6] = 0xb13e0022; - data[7] = 0xe9e0000; - data[8] = 0x39400000; - data[9] = 0x915e0008; - data[10] = 0xe9e0000; - data[11] = 0x3d608000; - data[12] = 0x398bffff; - data[13] = 0x919e000c; - data[14] = 0xe9e0000; - data[15] = 0x38600000; - data[16] = 0x907e0010; - data[17] = 0x387e0000; - data[18] = 0x4bfff3d9; - data[19] = 0x42800028; - data[20] = 0xa8820006; - data[21] = 0x30a40001; - data[22] = 0xb0a20006; - data[23] = 0xa8c20006; - data[24] = 0x20e60022; - data[25] = 0xca70022; - data[26] = 0x54e8103a; - data[27] = 0x7d224214; - data[28] = 0x93c90018; - data[29] = 0xe9e0000; - data[30] = 0x39400001; - data[31] = 0x995e0017; - data[32] = 0x383fffc8; - data[33] = 0xbba10048; - data[34] = 0x80010054; - data[35] = 0x7c0803a6; - data[36] = 0x38210058; - data[37] = 0x4e800020; - data[38] = 0x9421ffb0; - data[39] = 0x7c0802a6; - data[40] = 0x9001004c; - data[41] = 0xbfc10044; - data[42] = 0x3be10038; - data[43] = 0x90410014; - data[44] = 0x39600001; - data[45] = 0x99620000; - data[46] = 0x39800000; - data[47] = 0xb1820002; - data[48] = 0x38600000; - data[49] = 0x906200a0; - data[50] = 0x906200a4; - data[51] = 0x38800000; - data[52] = 0xb0820004; - data[53] = 0x38a00000; - data[54] = 0xb0a20006; - data[55] = 0x38c00022; - data[56] = 0xb0c20008; - data[57] = 0x8062fff8; - data[58] = 0x8042ffe8; - data[59] = 0x4bbf73cd; - data[60] = 0x80410014; - data[61] = 0x9062000c; - data[62] = 0x80e2000c; - data[63] = 0xe870000; - data[64] = 0x3d008000; - data[65] = 0x3928ffff; - data[66] = 0x91270018; - data[67] = 0x8142000c; - data[68] = 0xe8a0000; - data[69] = 0x39600000; - data[70] = 0xb16a0020; - data[71] = 0x8062fff8; - data[72] = 0x8042ffe8; - data[73] = 0x4bbf7395; - data[74] = 0x80410014; - data[75] = 0x90620010; - data[76] = 0x81820010; - data[77] = 0xe8c0000; - data[78] = 0x3c608000; - data[79] = 0x906c0018; - data[80] = 0x80820010; - data[81] = 0xe840000; - data[82] = 0x38a00000; - data[83] = 0xb0a40020; - data[84] = 0x8062fffc; - data[85] = 0x8042ffe8; - data[86] = 0x4bbf7361; - data[87] = 0x80410014; - data[88] = 0x90620014; - data[89] = 0x80c20010; - data[90] = 0x90c20018; - data[91] = 0x3bc00001; - data[92] = 0x2f1e0021; - data[93] = 0x41990020; - data[94] = 0xcbe0022; - data[95] = 0x57c7103a; - data[96] = 0x7d023a14; - data[97] = 0x8122000c; - data[98] = 0x91280018; - data[99] = 0x33de0001; - data[100] = 0x4280ffe0; - add(baseAddr, data, length); - bdi.fastDownload(data, length); - length = 101; - data[0] = 0x3d400080; - data[1] = 0x396a2ac8; - data[2] = 0x8182ffec; - data[3] = 0x916c0010; - data[4] = 0x904c0014; - data[5] = 0x383fffc8; - data[6] = 0xbbc10044; - data[7] = 0x8001004c; - data[8] = 0x7c0803a6; - data[9] = 0x38210050; - data[10] = 0x4e800020; - data[11] = 0x9421ffc0; - data[12] = 0xbfe1003c; - data[13] = 0x3be10038; - data[14] = 0x383fffc8; - data[15] = 0xbbe1003c; - data[16] = 0x38210040; - data[17] = 0x4e800020; - data[18] = 0x9421ffc0; - data[19] = 0xbfc10038; - data[20] = 0x3be10038; - data[21] = 0x3bc30000; - data[22] = 0x383fffc8; - data[23] = 0xbbc10038; - data[24] = 0x38210040; - data[25] = 0x4e800020; - data[26] = 0x9421ffc0; - data[27] = 0x7c0802a6; - data[28] = 0x9001003c; - data[29] = 0xbfe10038; - data[30] = 0x3be10038; - data[31] = 0x90410014; - data[32] = 0x4bfffe85; - data[33] = 0x383fffc8; - data[34] = 0xbbe10038; - data[35] = 0x8001003c; - data[36] = 0x7c0803a6; - data[37] = 0x38210040; - data[38] = 0x4e800020; - data[39] = 0x73c16892; - data[40] = 0x9001004c; - data[41] = 0xbfc10044; - data[42] = 0x3be10038; - data[43] = 0x90410014; - data[44] = 0x39600001; - data[45] = 0x99620000; - data[46] = 0x39800000; - data[47] = 0xb1820002; - data[48] = 0x38600000; - data[49] = 0x906200a0; - data[50] = 0x906200a4; - data[51] = 0x38800000; - data[52] = 0xb0820004; - data[53] = 0x38a00000; - data[54] = 0xb0a20006; - data[55] = 0x38c00022; - data[56] = 0xb0c20008; - data[57] = 0x8062fff8; - data[58] = 0x8042ffe8; - data[59] = 0x4bbf73cd; - data[60] = 0x80410014; - data[61] = 0x9062000c; - data[62] = 0x80e2000c; - data[63] = 0xe870000; - data[64] = 0x3d008000; - data[65] = 0x3928ffff; - data[66] = 0x91270018; - data[67] = 0x8142000c; - data[68] = 0xe8a0000; - data[69] = 0x39600000; - data[70] = 0xb16a0020; - data[71] = 0x8062fff8; - data[72] = 0x8042ffe8; - data[73] = 0x4bbf7395; - data[74] = 0x80410014; - data[75] = 0x90620010; - data[76] = 0x81820010; - data[77] = 0xe8c0000; - data[78] = 0x3c608000; - data[79] = 0x906c0018; - data[80] = 0x80820010; - data[81] = 0xe840000; - data[82] = 0x38a00000; - data[83] = 0xb0a40020; - data[84] = 0x8062fffc; - data[85] = 0x8042ffe8; - data[86] = 0x4bbf7361; - data[87] = 0x80410014; - data[88] = 0x90620014; - data[89] = 0x80c20010; - data[90] = 0x90c20018; - data[91] = 0x3bc00001; - data[92] = 0x2f1e0021; - data[93] = 0x41990020; - data[94] = 0xcbe0022; - data[95] = 0x57c7103a; - data[96] = 0x7d023a14; - data[97] = 0x8122000c; - data[98] = 0x91280018; - data[99] = 0x33de0001; - data[100] = 0x4280ffe0; - add(baseAddr, data, length); - bdi.fastDownload(data, length); - bdi.stopFastDownload(); - baseAddr = 0x80330c; - bdi.startFastDownload(baseAddr); - length = 101; - data[0] = 0x0; - data[1] = 0x803348; - data[2] = 0x0; - data[3] = 0x80336c; - data[4] = 0x8; - data[5] = 0x8034a0; - data[6] = 0x0; - data[7] = 0x80330c; - data[8] = 0x6c; - data[9] = 0x803378; - data[10] = 0x15c; - data[11] = 0x8034d4; - data[12] = 0x8; - data[13] = 0x8034dc; - data[14] = 0x0; - data[15] = 0x9; - data[16] = 0x4472764d; - data[17] = 0x70696f73; - data[18] = 0x6d000000; - data[19] = 0x0; - data[20] = 0x0; - data[21] = 0x0; - data[22] = 0x0; - data[23] = 0x0; - data[24] = 0x0; - data[25] = 0x3fa6e0; - data[26] = 0x8451fdf2; - data[27] = 0x7c0802a6; - data[28] = 0x9001003c; - data[29] = 0xbfe10038; - data[30] = 0x3be10038; - data[31] = 0x90410014; - data[32] = 0x4bfffe85; - data[33] = 0x383fffc8; - data[34] = 0xbbe10038; - data[35] = 0x8001003c; - data[36] = 0x7c0803a6; - data[37] = 0x38210040; - data[38] = 0x4e800020; - data[39] = 0x73c16892; - data[40] = 0x9001004c; - data[41] = 0xbfc10044; - data[42] = 0x3be10038; - data[43] = 0x90410014; - data[44] = 0x39600001; - data[45] = 0x99620000; - data[46] = 0x39800000; - data[47] = 0xb1820002; - data[48] = 0x38600000; - data[49] = 0x906200a0; - data[50] = 0x906200a4; - data[51] = 0x38800000; - data[52] = 0xb0820004; - data[53] = 0x38a00000; - data[54] = 0xb0a20006; - data[55] = 0x38c00022; - data[56] = 0xb0c20008; - data[57] = 0x8062fff8; - data[58] = 0x8042ffe8; - data[59] = 0x4bbf73cd; - data[60] = 0x80410014; - data[61] = 0x9062000c; - data[62] = 0x80e2000c; - data[63] = 0xe870000; - data[64] = 0x3d008000; - data[65] = 0x3928ffff; - data[66] = 0x91270018; - data[67] = 0x8142000c; - data[68] = 0xe8a0000; - data[69] = 0x39600000; - data[70] = 0xb16a0020; - data[71] = 0x8062fff8; - data[72] = 0x8042ffe8; - data[73] = 0x4bbf7395; - data[74] = 0x80410014; - data[75] = 0x90620010; - data[76] = 0x81820010; - data[77] = 0xe8c0000; - data[78] = 0x3c608000; - data[79] = 0x906c0018; - data[80] = 0x80820010; - data[81] = 0xe840000; - data[82] = 0x38a00000; - data[83] = 0xb0a40020; - data[84] = 0x8062fffc; - data[85] = 0x8042ffe8; - data[86] = 0x4bbf7361; - data[87] = 0x80410014; - data[88] = 0x90620014; - data[89] = 0x80c20010; - data[90] = 0x90c20018; - data[91] = 0x3bc00001; - data[92] = 0x2f1e0021; - data[93] = 0x41990020; - data[94] = 0xcbe0022; - data[95] = 0x57c7103a; - data[96] = 0x7d023a14; - data[97] = 0x8122000c; - data[98] = 0x91280018; - data[99] = 0x33de0001; - data[100] = 0x4280ffe0; - add(baseAddr, data, length); - bdi.fastDownload(data, length); - bdi.stopFastDownload(); - baseAddr = 0x803378; - bdi.startFastDownload(baseAddr); - length = 101; - data[0] = 0x9421ffb0; - data[1] = 0x7c000026; - data[2] = 0x9001004c; - data[3] = 0xbfa10040; - data[4] = 0x3be10038; - data[5] = 0x3bc30000; - data[6] = 0x2c840000; - data[7] = 0x4e663042; - data[8] = 0x3c600030; - data[9] = 0x38836102; - data[10] = 0xa3a40000; - data[11] = 0x40930014; - data[12] = 0x38a00001; - data[13] = 0x7ca5f030; - data[14] = 0x7fbd2b78; - data[15] = 0x42800010; - data[16] = 0x38c00001; - data[17] = 0x7cc6f030; - data[18] = 0x7fbd3078; - data[19] = 0x3ce00030; - data[20] = 0x39076102; - data[21] = 0xb3a80000; - data[22] = 0x383fffc8; - data[23] = 0xbba10040; - data[24] = 0x8001004c; - data[25] = 0x7c0ff120; - data[26] = 0x38210050; - data[27] = 0x4e800020; - data[28] = 0x9421ffb0; - data[29] = 0x7c000026; - data[30] = 0x9001004c; - data[31] = 0xbfa10040; - data[32] = 0x3be10038; - data[33] = 0x3bc30000; - data[34] = 0x2f040000; - data[35] = 0x4e7ad042; - data[36] = 0x3d200030; - data[37] = 0x39496100; - data[38] = 0xa3aa0000; - data[39] = 0x40930014; - data[40] = 0x39600001; - data[41] = 0x7d6bf030; - data[42] = 0x7fbd5b78; - data[43] = 0x42800010; - data[44] = 0x39800001; - data[45] = 0x7d8cf030; - data[46] = 0x7fbd6078; - data[47] = 0x3c600030; - data[48] = 0x38836100; - data[49] = 0xb3a40000; - data[50] = 0x383fffc8; - data[51] = 0xbba10040; - data[52] = 0x8001004c; - data[53] = 0x7c0ff120; - data[54] = 0x38210050; - data[55] = 0x4e800020; - data[56] = 0x9421ffb0; - data[57] = 0xbfa10044; - data[58] = 0x3be10038; - data[59] = 0x3bc30000; - data[60] = 0x3ca00030; - data[61] = 0x38c56100; - data[62] = 0xa3a60000; - data[63] = 0x7fc7f0f8; - data[64] = 0x5fa73801; - data[65] = 0x4f821042; - data[66] = 0x7d000026; - data[67] = 0x5503effe; - data[68] = 0x42800008; - data[69] = 0x7fe00008; - data[70] = 0x383fffc8; - data[71] = 0xbba10044; - data[72] = 0x38210050; - data[73] = 0x4e800020; - data[74] = 0x9421ffc0; - data[75] = 0x7c0802a6; - data[76] = 0x9001003c; - data[77] = 0xbfe10038; - data[78] = 0x3be10038; - data[79] = 0x90410014; - data[80] = 0x383fffc8; - data[81] = 0xbbe10038; - data[82] = 0x8001003c; - data[83] = 0x7c0803a6; - data[84] = 0x38210040; - data[85] = 0x4e800020; - data[86] = 0x84bda90a; - data[87] = 0x80410014; - data[88] = 0x90620014; - data[89] = 0x80c20010; - data[90] = 0x90c20018; - data[91] = 0x3bc00001; - data[92] = 0x2f1e0021; - data[93] = 0x41990020; - data[94] = 0xcbe0022; - data[95] = 0x57c7103a; - data[96] = 0x7d023a14; - data[97] = 0x8122000c; - data[98] = 0x91280018; - data[99] = 0x33de0001; - data[100] = 0x4280ffe0; - add(baseAddr, data, length); - bdi.fastDownload(data, length); - bdi.stopFastDownload(); - baseAddr = 0x8034dc; - bdi.startFastDownload(baseAddr); - length = 101; - data[0] = 0x1; - data[1] = 0x803728; - data[2] = 0x80351c; - data[3] = 0x803570; - data[4] = 0x803540; - data[5] = 0x10; - data[6] = 0x803680; - data[7] = 0x0; - data[8] = 0x8034dc; - data[9] = 0xf0; - data[10] = 0x8035cc; - data[11] = 0x14c; - data[12] = 0x803718; - data[13] = 0x10; - data[14] = 0x803728; - data[15] = 0x8; - data[16] = 0xf; - data[17] = 0x44727674; - data[18] = 0x6573744c; - data[19] = 0x6564426c; - data[20] = 0x696e6b00; - data[21] = 0x0; - data[22] = 0x0; - data[23] = 0x0; - data[24] = 0x0; - data[25] = 0x3fa720; - data[26] = 0x80325c; - data[27] = 0x8034dc; - data[28] = 0x803570; - data[29] = 0x8022f0; - data[30] = 0x80325c; - data[31] = 0x802370; - data[32] = 0x80325c; - data[33] = 0x8035cc; - data[34] = 0x803728; - data[35] = 0x1; - data[36] = 0xfffffffc; - data[37] = 0x24; - data[38] = 0x1; - data[39] = 0x3; - data[40] = 0xfffffffc; - data[41] = 0x8034dc; - data[42] = 0x80351c; - data[43] = 0x8035b4; - data[44] = 0x0; - data[45] = 0x802130; - data[46] = 0x803570; - data[47] = 0x0; - data[48] = 0x0; - data[49] = 0x0; - data[50] = 0x0; - data[51] = 0x0; - data[52] = 0x0; - data[53] = 0xffffffc0; - data[54] = 0xb; - data[55] = 0x3f5e426c; - data[56] = 0x696e6b54; - data[57] = 0x61736b00; - data[58] = 0x0; - data[59] = 0x86212a8c; - data[60] = 0x3ca00030; - data[61] = 0x38c56100; - data[62] = 0xa3a60000; - data[63] = 0x7fc7f0f8; - data[64] = 0x5fa73801; - data[65] = 0x4f821042; - data[66] = 0x7d000026; - data[67] = 0x5503effe; - data[68] = 0x42800008; - data[69] = 0x7fe00008; - data[70] = 0x383fffc8; - data[71] = 0xbba10044; - data[72] = 0x38210050; - data[73] = 0x4e800020; - data[74] = 0x9421ffc0; - data[75] = 0x7c0802a6; - data[76] = 0x9001003c; - data[77] = 0xbfe10038; - data[78] = 0x3be10038; - data[79] = 0x90410014; - data[80] = 0x383fffc8; - data[81] = 0xbbe10038; - data[82] = 0x8001003c; - data[83] = 0x7c0803a6; - data[84] = 0x38210040; - data[85] = 0x4e800020; - data[86] = 0x84bda90a; - data[87] = 0x80410014; - data[88] = 0x90620014; - data[89] = 0x80c20010; - data[90] = 0x90c20018; - data[91] = 0x3bc00001; - data[92] = 0x2f1e0021; - data[93] = 0x41990020; - data[94] = 0xcbe0022; - data[95] = 0x57c7103a; - data[96] = 0x7d023a14; - data[97] = 0x8122000c; - data[98] = 0x91280018; - data[99] = 0x33de0001; - data[100] = 0x4280ffe0; - add(baseAddr, data, length); - bdi.fastDownload(data, length); - bdi.stopFastDownload(); - baseAddr = 0x8035cc; - bdi.startFastDownload(baseAddr); - length = 101; - data[0] = 0x9421ffb0; - data[1] = 0x7c0802a6; - data[2] = 0x9001004c; - data[3] = 0xbfa10040; - data[4] = 0x3be10038; - data[5] = 0x90410014; - data[6] = 0x3bc30000; - data[7] = 0x88620004; - data[8] = 0x2c830000; - data[9] = 0x4186001c; - data[10] = 0x3860000f; - data[11] = 0x38800001; - data[12] = 0x8042fff8; - data[13] = 0x4bfffde9; - data[14] = 0x80410014; - data[15] = 0x42800018; - data[16] = 0x3860000f; - data[17] = 0x38800000; - data[18] = 0x8042fff8; - data[19] = 0x4bfffdd1; - data[20] = 0x80410014; - data[21] = 0x88820004; - data[22] = 0x20a40001; - data[23] = 0x98a20004; - data[24] = 0x383fffc8; - data[25] = 0xbba10040; - data[26] = 0x8001004c; - data[27] = 0x7c0803a6; - data[28] = 0x38210050; - data[29] = 0x4e800020; - data[30] = 0x9421ffb8; - data[31] = 0xbfc10040; - data[32] = 0x3be10038; - data[33] = 0x3bc00000; - data[34] = 0x2f1e004c; - data[35] = 0x41990018; - data[36] = 0x30de0100; - data[37] = 0x3ce00080; - data[38] = 0x7cc7f12e; - data[39] = 0x33de0004; - data[40] = 0x4280ffe8; - data[41] = 0x383fffc8; - data[42] = 0xbbc10040; - data[43] = 0x38210048; - data[44] = 0x4e800020; - data[45] = 0x9421ffc0; - data[46] = 0x7c0802a6; - data[47] = 0x9001003c; - data[48] = 0xbfe10038; - data[49] = 0x3be10038; - data[50] = 0x90410014; - data[51] = 0x8062fffc; - data[52] = 0x8042fff0; - data[53] = 0x4bbf6e29; - data[54] = 0x80410014; - data[55] = 0x90620000; - data[56] = 0x81020000; - data[57] = 0xe880000; - data[58] = 0x392001f4; - data[59] = 0x91280004; - data[60] = 0x80620000; - data[61] = 0x8042fff4; - data[62] = 0x4bfff825; - data[63] = 0x80410014; - data[64] = 0x3860000f; - data[65] = 0x38800001; - data[66] = 0x8042fff8; - data[67] = 0x4bfffca1; - data[68] = 0x80410014; - data[69] = 0x3860000f; - data[70] = 0x38800001; - data[71] = 0x8042fff8; - data[72] = 0x4bfffcfd; - data[73] = 0x80410014; - data[74] = 0x39400000; - data[75] = 0x99420004; - data[76] = 0x383fffc8; - data[77] = 0xbbe10038; - data[78] = 0x8001003c; - data[79] = 0x7c0803a6; - data[80] = 0x38210040; - data[81] = 0x4e800020; - data[82] = 0x87111e2a; - data[83] = 0x7c0803a6; - data[84] = 0x38210040; - data[85] = 0x4e800020; - data[86] = 0x84bda90a; - data[87] = 0x80410014; - data[88] = 0x90620014; - data[89] = 0x80c20010; - data[90] = 0x90c20018; - data[91] = 0x3bc00001; - data[92] = 0x2f1e0021; - data[93] = 0x41990020; - data[94] = 0xcbe0022; - data[95] = 0x57c7103a; - data[96] = 0x7d023a14; - data[97] = 0x8122000c; - data[98] = 0x91280018; - data[99] = 0x33de0001; - data[100] = 0x4280ffe0; - add(baseAddr, data, length); - bdi.fastDownload(data, length); - bdi.stopFastDownload(); - } -} diff --git a/mcdp/src/ch/ntb/mcdp/dict/Register.java b/mcdp/src/ch/ntb/mcdp/dict/Register.java deleted file mode 100644 index 4d066e0..0000000 --- a/mcdp/src/ch/ntb/mcdp/dict/Register.java +++ /dev/null @@ -1,232 +0,0 @@ -package ch.ntb.mcdp.dict; - -/** - * Representation of a register. - * - * @author schlaepfer - */ -/** - * @author schlaepfer - * - */ -public abstract class Register { - - public enum Accessmode { - none, supervisor, user, test - }; - - public enum Accessattr { - none, readonly, writeonly - }; - - private static final String INIT_STRING = "***"; - - /** - * Register specific type values.
- * The index of each type in the types array represents its numeric value. - * When the register is read from an xml file, its type is converted from a - * string (xml file) to an integer (index of types field). Therefore each - * type in the corresponding xml file must be included in the type array.
- * The type field must be initialised in the static { } - * section of the subclass. - */ - protected static String[] types = null; - - /** - * Menemoic of the register. Registers are identified by this value. - */ - private String mnemonic = INIT_STRING; - - /** - * Alternative mnemonic of the register - */ - private String altmnemonic = INIT_STRING; - - /** - * Register specific type - */ - private int type; - - /** - * Address or a register specific value (e.g. BDI-identifier) - */ - private int value; - - /** - * Size in bytes (width) - */ - private int size; - - /** - * A string description of the register - */ - private String description = ""; - - /** - * The register access mode - */ - private Accessmode accessmode = Accessmode.none; - - /** - * The register access attribute - */ - private Accessattr accessattr = Accessattr.none; - - /** - * @return the mnemonic of this register - */ - public String getMnemonic() { - return mnemonic; - } - - /** - * Set the mnemonic of this register - * - * @param name - */ - public void setMnemonic(String name) { - this.mnemonic = name; - } - - /** - * @return alternative mnemonic of the register - */ - public String getAltmnemonic() { - return altmnemonic; - } - - /** - * Set the alternative name of the register. - * - * @param altname - */ - public void setAltmnemonic(String altname) { - this.altmnemonic = altname; - } - - /** - * @return the register description - */ - public String getDescription() { - return description; - } - - /** - * Set the register description. - * - * @param description - */ - public void setDescription(String description) { - this.description = description; - } - - /** - * @return the size in bytes (width) - */ - public int getSize() { - return size; - } - - /** - * Set the size in bytes (width) - * - * @param size - */ - public void setSize(int size) { - this.size = size; - } - - /** - * @return the type of the register. This is the index of the static - * types String array. - */ - public int getType() { - return type; - } - - /** - * Set the type of the register. This is the index of the static - * types String array. - * - * @param type - */ - public void setType(int type) { - this.type = type; - } - - /** - * @return the address or a register specific value (e.g. BDI-identifier) - */ - public int getValue() { - return value; - } - - /** - * Set the address or a register specific value (e.g. BDI-identifier). - * - * @param value - */ - public void setValue(int value) { - this.value = value; - } - - /** - * @return true if a mnemonic was set and the size is valid (size > 0), else - * false - */ - public boolean isValid() { - if ((mnemonic == INIT_STRING) || (size <= 0)) - return false; - return true; - } - - @Override - public String toString() { - return new String(mnemonic + "\t" + altmnemonic + "\t" + types[type] - + "\t0x" + Integer.toHexString(value) + "\t" + size + "\t" - + description); - } - - /** - * Get the register specific type strings. This value has to be initialised - * in the static section of the derived Register class as - * this is Register specific. - * - * @return types strings - */ - public static String[] getTypes() { - return types; - } - - /** - * @return the access attributes of the register - */ - public Accessattr getAccessattr() { - return accessattr; - } - - /** - * Set the access attribute of the register - * - * @param accessattr - */ - public void setAccessattr(Accessattr accessattr) { - this.accessattr = accessattr; - } - - /** - * @return the access mode of this register - */ - public Accessmode getAccessmode() { - return accessmode; - } - - /** - * Set the access mode of this register - * - * @param accessmode - */ - public void setAccessmode(Accessmode accessmode) { - this.accessmode = accessmode; - } -} diff --git a/mcdp/src/ch/ntb/mcdp/dict/RegisterDict.java b/mcdp/src/ch/ntb/mcdp/dict/RegisterDict.java deleted file mode 100644 index 9f55f1d..0000000 --- a/mcdp/src/ch/ntb/mcdp/dict/RegisterDict.java +++ /dev/null @@ -1,260 +0,0 @@ -package ch.ntb.mcdp.dict; - -import java.io.File; -import java.io.IOException; -import java.lang.reflect.Method; -import java.util.Iterator; -import java.util.LinkedList; - -import javax.xml.parsers.ParserConfigurationException; -import javax.xml.parsers.SAXParser; -import javax.xml.parsers.SAXParserFactory; - -import org.xml.sax.Attributes; -import org.xml.sax.SAXException; -import org.xml.sax.SAXParseException; -import org.xml.sax.helpers.DefaultHandler; - -public abstract class RegisterDict extends DefaultHandler { - - private static final long serialVersionUID = -582382284126896830L; - - private Class regClass; - private Method regClassGetTypesMethod; - private static final String GetTypes_METHOD_NAME = "getTypes"; - - private LinkedList registers; - - private String[] types; - - private static final String ELEMENT_REGISTER = "register"; - private static final String ELEMENT_DESCRIPTION = "description"; - - private static final String ATTR_MNEMONIC = "mnemonic"; - private static final String ATTR_ALTMNEMONIC = "altmnemonic"; - private static final String ATTR_TYPE = "type"; - private static final String ATTR_VALUE = "value"; - private static final String ATTR_SIZE = "size"; - private static final String ATTR_ACCESSMODE = "accessmode"; - private static final String ATTR_ACCESSATTR = "accessattr"; - - private Register reg; - private StringBuffer cdata; - - /** - * Default constructor which takes the Class object from a - * Register subclass as argument. The registerDict will be of - * this Register-type.
- * An example:
- * MPC555Register extends Register -> use MPC555Register.class - * as parameter. - * - * @param registerClass - * subclass of Register - */ - protected RegisterDict(Class registerClass) { - this.regClass = registerClass; - try { - this.regClassGetTypesMethod = regClass.getMethod( - GetTypes_METHOD_NAME, (Class[]) null); - this.regClass.newInstance(); - this.types = (String[]) regClassGetTypesMethod.invoke( - (Object[]) null, (Object[]) null); - } catch (Exception e) { - e.printStackTrace(); - System.exit(1); - } - this.registers = new LinkedList(); - } - - private int convertType(String typeStr) throws SAXException { - for (int index = 0; index < types.length; index++) { - if (typeStr.equals(types[index])) { - return index; - } - } - throw new SAXException("invalid register definition: " + typeStr); - } - - private int parseInt(String s) { - if (s == "") - return 0; - if (s.indexOf('x') > 0) { - // is hex number - if (s.length() <= 2) { // exception for "0x" - throw new NumberFormatException("string too short: " + s); - } - if ((s.length() > 10)) { // exception for e.g. 0x112345678 - throw new NumberFormatException("number too large: " + s); - } - // check if string too long (max - return (int) Long.parseLong(s.substring(s.indexOf('x') + 1, s - .length()), 16); - } else { - // is decimal number - return Integer.parseInt(s); - } - } - - /** - * Adds the registers from the specified xml-file to the register - * dictionary.
- * The xml-file must be structured according to - * registerDictionary.dtd. The dtd-file must be adapted to - * the type values specific to this register. Include - * - * in your xml file. - * - * @param xmlPathname - * path to the xml file - * @throws IOException - * throws an IOException if the file is not found - * @throws SAXException - * @throws ParserConfigurationException - * @throws ParserConfigurationException - * throws an ParserConfigurationException if the SAX parser - * can't be configured - * @throws SAXException - * throws an SAXException if the file could not be successfully - * parsed - */ - public void addRegistersFromFile(String xmlPathname) throws IOException, - ParserConfigurationException, SAXException { - // reset temporary register variable - reg = null; - // Use the default (non-validating) parser - SAXParserFactory factory = SAXParserFactory.newInstance(); - factory.setValidating(true); - // Parse the input - SAXParser saxParser = factory.newSAXParser(); - saxParser.parse(new File(xmlPathname), this); - } - - /** - * Print a list of Registers to standard out. - */ - public void printRegisters() { - System.out - .println("******************** register dictionary *********************"); - System.out - .println("Mnemonic\tAltmnemonic\tType\tAddress\tSize\tDescription"); - System.out - .println("**************************************************************"); - for (Iterator i = registers.iterator(); i.hasNext();) { - Register r = (Register) i.next(); - System.out.println(r.toString()); - } - System.out - .println("**************************************************************"); - } - - /** - * Get a register by its name. - * - * @param name - * the register name - * @return register on null if no register is found - */ - public Register getRegister(String name) { - for (Iterator i = registers.iterator(); i.hasNext();) { - Register r = (Register) i.next(); - if (r.getMnemonic().equals(name) || r.getAltmnemonic().equals(name)) { - return r; - } - } - return null; - } - - // =========================================================== - // SAX DocumentHandler methods - // =========================================================== - - public void startDocument() throws SAXException { - } - - public void endDocument() throws SAXException { - } - - public void startElement(String namespaceURI, String lName, // local name - String qName, // qualified name - Attributes attrs) throws SAXException { - if (qName.equals(ELEMENT_REGISTER)) { - if (attrs != null) { - // instantiate new register - try { - reg = (Register) regClass.newInstance(); - } catch (Exception e) { - throw new SAXException(e.getMessage()); - } - for (int i = 0; i < attrs.getLength(); i++) { - String attr_qName = attrs.getQName(i); - String attr_value = attrs.getValue(i); - if (attr_qName.equals(ATTR_MNEMONIC)) { - reg.setMnemonic(attr_value); - } else if (attr_qName.equals(ATTR_ALTMNEMONIC)) { - reg.setAltmnemonic(attr_value); - } else if (attr_qName.equals(ATTR_TYPE)) { - reg.setType(convertType(attr_value)); - } else if (attr_qName.equals(ATTR_SIZE)) { - reg.setSize(parseInt(attr_value)); - } else if (attr_qName.equals(ATTR_VALUE)) { - reg.setValue(parseInt(attr_value)); - } else if (attr_qName.equals(ATTR_ACCESSMODE)) { - reg.setAccessmode(Register.Accessmode - .valueOf(attr_value)); - } else if (attr_qName.equals(ATTR_ACCESSATTR)) { - reg.setAccessattr(Register.Accessattr - .valueOf(attr_value)); - } - } - } else { - throw new SAXException("attributes expected"); - } - } else if (qName.equals(ELEMENT_DESCRIPTION)) { - // reset the cdata for descriptions - cdata = new StringBuffer(); - } - } - - @SuppressWarnings("unchecked") - public void endElement(String namespaceURI, String sName, // simple - // name - String qName // qualified name - ) throws SAXException { - if (qName.equals(ELEMENT_DESCRIPTION)) { - reg.setDescription(cdata.toString().trim()); - } - if (reg != null) { - registers.add(reg); - reg = null; - } - } - - public void characters(char buf[], int offset, int len) throws SAXException { - int startOffset = offset; - while ((offset < startOffset + len) && (buf[offset] <= ' ')) { - offset++; - } - len -= offset - startOffset; - while ((len > 0) && (buf[offset + len - 1] <= ' ')) { - len--; - } - cdata.append(buf, offset, len); - } - - // =========================================================== - // SAX ErrorHandler methods - // =========================================================== - - // treat validation errors as fatal - public void error(SAXParseException e) throws SAXParseException { - throw e; - } - - // dump warnings too - public void warning(SAXParseException err) throws SAXParseException { - System.out.println("** Warning" + ", line " + err.getLineNumber() - + ", uri " + err.getSystemId()); - System.out.println(" " + err.getMessage()); - } -} diff --git a/mcdp/src/ch/ntb/mcdp/dict/test/Test332Dict.java b/mcdp/src/ch/ntb/mcdp/dict/test/Test332Dict.java deleted file mode 100644 index 29d6e5e..0000000 --- a/mcdp/src/ch/ntb/mcdp/dict/test/Test332Dict.java +++ /dev/null @@ -1,32 +0,0 @@ -package ch.ntb.mcdp.dict.test; - -import java.io.IOException; - -import javax.xml.parsers.ParserConfigurationException; - -import org.xml.sax.SAXException; - -import ch.ntb.mcdp.mc68332.MC68332RegisterDict; - -public class Test332Dict { - - private static final String PATH_TO_REGISTER_FILE = "resources/targets/mc68332/registerDictionary.xml"; - - public static void main(String[] args) { - MC68332RegisterDict regdict = new MC68332RegisterDict(); - - try { - regdict.addRegistersFromFile(PATH_TO_REGISTER_FILE); - } catch (IOException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } catch (ParserConfigurationException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } catch (SAXException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - regdict.printRegisters(); -} -} diff --git a/mcdp/src/ch/ntb/mcdp/dict/test/Test555Dict.java b/mcdp/src/ch/ntb/mcdp/dict/test/Test555Dict.java deleted file mode 100644 index 1ad6761..0000000 --- a/mcdp/src/ch/ntb/mcdp/dict/test/Test555Dict.java +++ /dev/null @@ -1,29 +0,0 @@ -package ch.ntb.mcdp.dict.test; - -import java.io.IOException; - -import javax.xml.parsers.ParserConfigurationException; - -import org.xml.sax.SAXException; - -import ch.ntb.mcdp.mpc555.MPC555RegisterDict; - -public class Test555Dict { - - private static final String PATH_TO_REGISTER_FILE = "resources/targets/mpc555/registerDictionary.xml"; - - public static void main(String[] args) { - MPC555RegisterDict regdict = new MPC555RegisterDict(); - - try { - regdict.addRegistersFromFile(PATH_TO_REGISTER_FILE); - } catch (IOException e) { - e.printStackTrace(); - } catch (ParserConfigurationException e) { - e.printStackTrace(); - } catch (SAXException e) { - e.printStackTrace(); - } - regdict.printRegisters(); - } -} diff --git a/mcdp/src/ch/ntb/mcdp/mc68332/IMCBTargetBoard.java b/mcdp/src/ch/ntb/mcdp/mc68332/IMCBTargetBoard.java deleted file mode 100644 index 638ab64..0000000 --- a/mcdp/src/ch/ntb/mcdp/mc68332/IMCBTargetBoard.java +++ /dev/null @@ -1,94 +0,0 @@ -package ch.ntb.mcdp.mc68332; - -import java.io.IOException; - -import javax.xml.parsers.ParserConfigurationException; - -import org.xml.sax.SAXException; - -import ch.ntb.mcdp.bdi.BDIException; -import ch.ntb.mcdp.bdi.MC68332; -import ch.ntb.mcdp.usb.DispatchException; -import ch.ntb.mcdp.utils.logger.LogUtil; -import ch.ntb.mcdp.utils.logger.McdpLogger; -import ch.ntb.usb.USBException; - -public class IMCBTargetBoard { - - private static final McdpLogger logger = LogUtil.ch_ntb_mcdp_mc68332; - - private final static String dictionaryPath = "resources/targets/mc68332/registerDictionary.xml"; - - private static MC68332RegisterDict regDict = new MC68332RegisterDict(); - - private MC68332 bdi; - - public IMCBTargetBoard(MC68332 bdi) { - this.bdi = bdi; - } - - public void writeRegister(String name, int value) throws USBException, - DispatchException, BDIException { - logger.info("writeRegister: " + name + ", value: 0x" - + Integer.toHexString(value)); - MC68332Register r = (MC68332Register) regDict.getRegister(name); - switch (r.getType()) { - case MC68332Register.CtrlReg: - bdi.writeMem(r.getValue(), value, r.getSize()); - break; - case MC68332Register.SysReg: - bdi.writeSysReg(r.getValue(), value); - break; - case MC68332Register.UserReg: - bdi.writeUserReg(r.getValue(), value); - break; - } - } - - public int readRegister(String name) throws USBException, - DispatchException, BDIException { - logger.info("readRegister: " + name); - MC68332Register r = (MC68332Register) regDict.getRegister(name); - switch (r.getType()) { - case MC68332Register.CtrlReg: - return bdi.readMem(r.getValue(), r.getSize()); - case MC68332Register.SysReg: - return bdi.readSysReg(r.getValue()); - case MC68332Register.UserReg: - return bdi.readUserReg(r.getValue()); - } - return -1; - } - - public void init() throws USBException, DispatchException, BDIException, - IOException, ParserConfigurationException, SAXException { - - logger.info("reading dictionary file from " + dictionaryPath); - regDict.addRegistersFromFile(dictionaryPath); - - bdi.reset_target(); - - // regDict.printRegisters(); - - writeRegister("SR", 0x2700); - writeRegister("SFC", 0x05); - writeRegister("DFC", 0x05); - writeRegister("VBR", 0x100000); - - writeRegister("SIMCR", 0x0404F); - writeRegister("SYNCR", 0x7F80); - writeRegister("SYPCR", 0x04); - writeRegister("CSPAR0", 0x03FF); - writeRegister("CSPAR1", 0x01); - writeRegister("CSBARBT", 0x07); - writeRegister("CSORBT", 0x06830); - writeRegister("CSBAR0", 0x07); - writeRegister("CSOR0", 0x07430); - writeRegister("CSBAR1", 0x01005); - writeRegister("CSOR1", 0x06C30); - writeRegister("CSBAR2", 0x01005); - writeRegister("CSOR2", 0x05030); - writeRegister("CSBAR3", 0x01005); - writeRegister("CSOR3", 0x03030); - } -} diff --git a/mcdp/src/ch/ntb/mcdp/mc68332/MC68332Register.java b/mcdp/src/ch/ntb/mcdp/mc68332/MC68332Register.java deleted file mode 100644 index 7c57672..0000000 --- a/mcdp/src/ch/ntb/mcdp/mc68332/MC68332Register.java +++ /dev/null @@ -1,28 +0,0 @@ -package ch.ntb.mcdp.mc68332; - -import ch.ntb.mcdp.dict.Register; - -/** - * Representation of a MC68332 Register - * - * For system and user registers the value value is used as BDI - * specific identifier (code specific to each register from the Technical - * Reference Manual). - * - * @author schlaepfer - * - */ -public class MC68332Register extends Register { - - // Register Types - static { - types = new String[] { "UserReg", "SysReg", "CtrlReg" }; - } - - static final int UserReg = 0; - - static final int SysReg = 1; - - static final int CtrlReg = 2; - -} diff --git a/mcdp/src/ch/ntb/mcdp/mc68332/MC68332RegisterDict.java b/mcdp/src/ch/ntb/mcdp/mc68332/MC68332RegisterDict.java deleted file mode 100644 index ff68729..0000000 --- a/mcdp/src/ch/ntb/mcdp/mc68332/MC68332RegisterDict.java +++ /dev/null @@ -1,10 +0,0 @@ -package ch.ntb.mcdp.mc68332; - -import ch.ntb.mcdp.dict.RegisterDict; - -public class MC68332RegisterDict extends RegisterDict { - - public MC68332RegisterDict() { - super(MC68332Register.class); - } -} diff --git a/mcdp/src/ch/ntb/mcdp/mpc555/MPC555Register.java b/mcdp/src/ch/ntb/mcdp/mpc555/MPC555Register.java deleted file mode 100644 index 0a0072e..0000000 --- a/mcdp/src/ch/ntb/mcdp/mpc555/MPC555Register.java +++ /dev/null @@ -1,33 +0,0 @@ -package ch.ntb.mcdp.mpc555; - -import ch.ntb.mcdp.dict.Register; - -/** - * Representation of a MPC555 Register - * - * @author schlaepfer - * - */ -public class MPC555Register extends Register { - - // Register Types - static { - types = new String[] { "GPR", "FPR", "SPR", "MSR", "CR", "FPSCR", - "CtrlReg" }; - } - - static final int GPR = 0; - - static final int FPR = 1; - - static final int SPR = 2; - - static final int MSR = 3; - - static final int CR = 4; - - static final int FPSCR = 5; - - static final int CtrlReg = 6; - -} diff --git a/mcdp/src/ch/ntb/mcdp/mpc555/MPC555RegisterDict.java b/mcdp/src/ch/ntb/mcdp/mpc555/MPC555RegisterDict.java deleted file mode 100644 index 0cdfd7e..0000000 --- a/mcdp/src/ch/ntb/mcdp/mpc555/MPC555RegisterDict.java +++ /dev/null @@ -1,10 +0,0 @@ -package ch.ntb.mcdp.mpc555; - -import ch.ntb.mcdp.dict.RegisterDict; - -public class MPC555RegisterDict extends RegisterDict { - - public MPC555RegisterDict() { - super(MPC555Register.class); - } -} diff --git a/mcdp/src/ch/ntb/mcdp/system/memMap/Device.java b/mcdp/src/ch/ntb/mcdp/system/memMap/Device.java deleted file mode 100644 index ec682ae..0000000 --- a/mcdp/src/ch/ntb/mcdp/system/memMap/Device.java +++ /dev/null @@ -1,45 +0,0 @@ -package ch.ntb.mcdp.system.memMap; - -import java.util.LinkedList; - -public class Device { - - private String type; - - private int width; - - private int size = -1; - - private MemAttributes attr; - - LinkedList segments; - - Device(String type, int width) { - this.type = type; - this.width = width; - this.attr = new MemAttributes(); - this.size = -1; - segments = new LinkedList(); - } - - public String getType() { - return type; - } - - public int getWidth() { - return width; - } - - public MemAttributes getAttributes() { - return attr; - } - - public int getSize() { - return size; - } - - public void setSize(int size) { - this.size = size; - } - -} diff --git a/mcdp/src/ch/ntb/mcdp/system/memMap/MemAttributes.java b/mcdp/src/ch/ntb/mcdp/system/memMap/MemAttributes.java deleted file mode 100644 index 420fb6e..0000000 --- a/mcdp/src/ch/ntb/mcdp/system/memMap/MemAttributes.java +++ /dev/null @@ -1,82 +0,0 @@ -package ch.ntb.mcdp.system.memMap; - -/** - * Attributes for Device and Segment objects.
- * Use the predefined constants to set or unset an attribute. - * - * @author schlaepfer - * - */ -public class MemAttributes { - - public static int NOF_ATTRIBUTES = 8; - - public static int read = 0, write = 1, const_ = 2, code = 3, var = 4, - sysconst = 5, heap = 6, stack = 7; - - private boolean[] values = new boolean[NOF_ATTRIBUTES]; - - MemAttributes() { - for (int i = 0; i < values.length; i++) { - values[i] = false; - } - } - - public void set(int index) { - values[index] = true; - } - - public void unset(int index) { - values[index] = false; - } - - public boolean isSet(int index) { - return values[index]; - } - - public boolean isReadSet() { - return values[read]; - } - - public boolean isWriteSet() { - return values[write]; - } - - public boolean isConstSet() { - return values[const_]; - } - - public boolean isCodeSet() { - return values[code]; - } - - public boolean isVarSet() { - return values[var]; - } - - public boolean isSysconstSet() { - return values[sysconst]; - } - - public boolean isHeapSet() { - return values[heap]; - } - - public boolean isStackSet() { - return values[stack]; - } - - public void reset() { - for (int i = 0; i < values.length; i++) { - values[i] = false; - } - } - - public MemAttributes clone() { - MemAttributes at = new MemAttributes(); - for (int i = 0; i < NOF_ATTRIBUTES; i++) { - at.values[i] = values[i]; - } - return at; - } -} diff --git a/mcdp/src/ch/ntb/mcdp/system/memMap/MemoryMap.java b/mcdp/src/ch/ntb/mcdp/system/memMap/MemoryMap.java deleted file mode 100644 index 49bf8dd..0000000 --- a/mcdp/src/ch/ntb/mcdp/system/memMap/MemoryMap.java +++ /dev/null @@ -1,407 +0,0 @@ -package ch.ntb.mcdp.system.memMap; - -import java.io.File; -import java.io.IOException; -import java.util.Collection; -import java.util.Iterator; -import java.util.TreeMap; - -import javax.xml.parsers.DocumentBuilder; -import javax.xml.parsers.DocumentBuilderFactory; -import javax.xml.parsers.ParserConfigurationException; - -import org.w3c.dom.Document; -import org.w3c.dom.NamedNodeMap; -import org.w3c.dom.Node; -import org.w3c.dom.NodeList; -import org.xml.sax.ErrorHandler; -import org.xml.sax.SAXException; -import org.xml.sax.SAXParseException; - -public class MemoryMap { - - private TreeMap devices; - - // Elements - private static final String E_MEMORY_MAP = "memorymap"; - - private static final String E_DEVICE = "device"; - - private static final String A_DEVICE_TYPE = "type"; - - private static final String A_DEVICE_WIDTH = "width"; - - private static final String E_ATTRIBUTES = "attributes"; - - private static final String E_SIZE = "size"; - - private static final String E_SEGMENT = "segment"; - - private static final String E_INIT = "init"; - - private static final String E_ASSIGNMENT = "assignment"; - - private static final String A_NAME = "name"; - - private static final String A_TYPE = "type"; - - private static final String A_TYPE_VALUE = "value"; - - private static final String A_TYPE_URI = "uri"; - - private static final String A_MODE = "mode"; - - private static final String V_MODE_REPLACE = "replace"; - - private static final String A_READ = "read"; - - private static final String A_WRITE = "write"; - - private static final String A_CONST = "const"; - - private static final String A_CODE = "code"; - - private static final String A_VAR = "var"; - - private static final String A_SYSCONST = "sysconst"; - - private static final String A_HEAP = "heap"; - - private static final String A_STACK = "stack"; - - private static final String V_ADD = "add"; - - private static final String V_REMOVE = "remove"; - - private static final String E_BASE = "base"; - - private static final String E_SUBSEGMENT = "subsegment"; - - private static final String E_SUBSEGMENTLIST = "subsegmentList"; - - private static final String A_START_ID = "startID"; - - private static final String A_NUMBER_OF_ENTRIES = "numberOfEntries"; - - private int parseInt(String s) { - if (s == "") - return 0; - if (s.indexOf('x') > 0) { - // is hex number - if (s.length() <= 2) { // exception for "0x" - throw new NumberFormatException("string too short: " + s); - } - if ((s.length() > 10)) { // exception for e.g. 0x112345678 - throw new NumberFormatException("number too large: " + s); - } - // check if string too long (max - return (int) Long.parseLong(s.substring(s.indexOf('x') + 1, s - .length()), 16); - } else { - // is decimal number - return Integer.parseInt(s); - } - } - - public MemoryMap(String pathToMemFile) throws ParserConfigurationException, - SAXException, IOException { - devices = new TreeMap(); - DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); - factory.setValidating(true); - factory.setNamespaceAware(true); - factory.setXIncludeAware(true); - DocumentBuilder builder = factory.newDocumentBuilder(); - builder.setErrorHandler(new ErrorHandler() { - // ignore fatal errors (an exception is guaranteed) - public void fatalError(SAXParseException exception) - throws SAXException { - } - - // treat validation errors as fatal error - public void error(SAXParseException e) throws SAXParseException { - throw e; - } - - // treat warnings as fatal error - public void warning(SAXParseException e) throws SAXParseException { - throw e; - } - }); - Document document = builder.parse(new File(pathToMemFile)); - NodeList list = document.getElementsByTagName(E_MEMORY_MAP); - if (list == null) { - throw new SAXParseException("<" + E_MEMORY_MAP - + "> element not found", null); - } - list = list.item(0).getChildNodes(); - for (int i = 0; i < list.getLength(); i++) { - // Device (REQUIRED+) - System.out.println(list.item(i).getNodeName()); - if (list.item(i).getNodeName().equals(E_DEVICE)) { - Device d = parseDevice(list.item(i)); - devices.put(d.getType(), d); - } - } - } - - private Device parseDevice(Node node) { - NamedNodeMap attributes = node.getAttributes(); - String type = null; - int width = 0; - for (int j = 0; j < attributes.getLength(); j++) { - if (attributes.item(j).getNodeName().equals(A_DEVICE_TYPE)) { - type = attributes.item(j).getNodeValue(); - System.out.println("\tType: " + type); - } else if (attributes.item(j).getNodeName().equals(A_DEVICE_WIDTH)) { - width = parseInt(attributes.item(j).getNodeValue()); - System.out.println("\tWidth: " + width); - } - } - Device d = new Device(type, width); - NodeList children = node.getChildNodes(); - for (int i = 0; i < children.getLength(); i++) { - System.out.println("\t\t" + children.item(i).getNodeName()); - // ELEMENT attributes (REQUIRED) - // ELEMENT size (OPTIONAL?) - // ELEMENT segment (REQUIRED+) - // ELEMENT init (OPTIONAL) - if (children.item(i).getNodeName().equals(E_ATTRIBUTES)) { - parseAttributes(children.item(i), d.getAttributes()); - } else if (children.item(i).getNodeName().equals(E_SIZE)) { - d.setSize(parseInt(children.item(i).getTextContent())); - } else if (children.item(i).getNodeName().equals(E_SEGMENT)) { - d.segments - .add(parseSegment(children.item(i), d.getAttributes())); - } else if (children.item(i).getNodeName().equals(E_INIT)) { - parseInit(children.item(i)); - } - } - return d; - } - - private void setAttributes(String nodeValue, MemAttributes attributes, - int index) { - if (nodeValue.equals(V_ADD)) { - attributes.set(index); - System.out.println("setAttribute (" + index + "): set: " - + attributes.isSet(index)); - } else if (nodeValue.equals(V_REMOVE)) { - attributes.unset(index); - System.out.println("setAttribute (" + index + "): unset: " - + attributes.isSet(index)); - } - } - - private void parseAttributes(Node node, MemAttributes attributes) { - NamedNodeMap attr = node.getAttributes(); - for (int i = 0; i < attr.getLength(); i++) { - String nodeName = attr.item(i).getNodeName(); - String nodeValue = attr.item(i).getNodeValue(); - System.out.println(nodeName); - if (nodeName.equals(A_MODE)) { - if (nodeValue.equals(V_MODE_REPLACE)) { - // clear all attributes - attributes.reset(); - } - } else if (nodeName.equals(A_READ)) { - setAttributes(nodeValue, attributes, MemAttributes.read); - } else if (nodeName.equals(A_WRITE)) { - setAttributes(nodeValue, attributes, MemAttributes.write); - } else if (nodeName.equals(A_CONST)) { - setAttributes(nodeValue, attributes, MemAttributes.const_); - } else if (nodeName.equals(A_CODE)) { - setAttributes(nodeValue, attributes, MemAttributes.code); - } else if (nodeName.equals(A_VAR)) { - setAttributes(nodeValue, attributes, MemAttributes.var); - } else if (nodeName.equals(A_SYSCONST)) { - setAttributes(nodeValue, attributes, MemAttributes.sysconst); - } else if (nodeName.equals(A_HEAP)) { - setAttributes(nodeValue, attributes, MemAttributes.heap); - } else if (nodeName.equals(A_STACK)) { - setAttributes(nodeValue, attributes, MemAttributes.stack); - } - } - } - - private int convertToNumber(String constant) { - int result = -1; - try { - return parseInt(constant); - } catch (NumberFormatException e) { - // TODO: convert constant to number - System.out.println("setBase: Kernel Constant: " + constant); - } - return result; - } - - private Segment parseSegment(Node node, MemAttributes attributes) { - // ATTRIBUTE name (REQUIRED) TODO - // ELEMENT attributes (OPTIONAL?) - // ELEMENT base (REQUIRED) - // ELEMENT size (REQUIRED) - // ELEMENT subsegment (OPTIONAL*) - // ELEMENT subsegmentList (OPTIONAL?) - NamedNodeMap attrMap = node.getAttributes(); - String name = ""; - for (int i = 0; i < attrMap.getLength(); i++) { - if (attrMap.item(i).getNodeName().equals(A_NAME)) { - name = attrMap.item(i).getNodeValue(); - // TODO remove - System.out.println("-> Segment: name: " + name); - } - } - MemAttributes attr = attributes.clone(); - Segment s = new Segment(name, attr); - NodeList children = node.getChildNodes(); - for (int i = 0; i < children.getLength(); i++) { - if (children.item(i).getNodeName().equals(E_ATTRIBUTES)) { - parseAttributes(children.item(i), attr); - } else if (children.item(i).getNodeName().equals(E_BASE)) { - s.setBase(convertToNumber(children.item(i).getTextContent())); - } else if (children.item(i).getNodeName().equals(E_SIZE)) { - s.setSize(convertToNumber(children.item(i).getTextContent())); - } else if (children.item(i).getNodeName().equals(E_SUBSEGMENT)) { - s.add(parseSegment(children.item(i), attr)); - } else if (children.item(i).getNodeName().equals(E_SUBSEGMENTLIST)) { - parseSegmentList(s, children.item(i), attr); - } - } - return s; - } - - private void parseSegmentList(Segment rootSegment, Node segmentList, - MemAttributes attributes) { - String name = ""; - int nofEntries = 0, startID = 0, size = 0; - MemAttributes attr = rootSegment.getMemAttributes().clone(); - NamedNodeMap attrMap = segmentList.getAttributes(); - for (int i = 0; i < attrMap.getLength(); i++) { - if (attrMap.item(i).getNodeName().equals(A_NAME)) { - name = attrMap.item(i).getNodeValue(); - } else if (attrMap.item(i).getNodeName() - .equals(A_NUMBER_OF_ENTRIES)) { - nofEntries = parseInt(attrMap.item(i).getNodeValue()); - } else if (attrMap.item(i).getNodeName().equals(A_START_ID)) { - startID = parseInt(attrMap.item(i).getNodeValue()); - } - } - NodeList children = segmentList.getChildNodes(); - for (int i = 0; i < children.getLength(); i++) { - if (children.item(i).getNodeName().equals(E_ATTRIBUTES)) { - parseAttributes(children.item(i), attr); - } else if (children.item(i).getNodeName().equals(E_SIZE)) { - size = parseInt(children.item(i).getTextContent()); - } - } - for (int i = 0; i < nofEntries; i++) { - Segment s = new Segment(new String(name - + Integer.toString(startID + i)), attr); - s.setSize(size); - rootSegment.add(s); - } - } - - private void parseInit(Node node) { - NodeList children = node.getChildNodes(); - for (int i = 0; i < children.getLength(); i++) { - if (children.item(i).getNodeName().equals(E_ASSIGNMENT)) { - NamedNodeMap attr = children.item(i).getAttributes(); - String name = null, type = null, value = null; - for (int j = 0; j < attr.getLength(); j++) { - if (attr.item(j).getNodeName().equals(A_NAME)) { - name = attr.item(j).getNodeValue(); - } else if (attr.item(j).getNodeName().equals(A_TYPE)) { - type = attr.item(j).getNodeValue(); - } - } - value = children.item(i).getTextContent(); - System.out.print("\t\t\t assignment: type = " + type - + ", name = " + name + ", value = "); - if (type.equals(A_TYPE_VALUE)) { - System.out.println("0x" - + Integer.toHexString(parseInt(value))); - } else if (type.equals(A_TYPE_URI)) { - System.out.println(value); - } - } - } - } - - public void printMemMap() { - Collection coll = devices.values(); - System.out.println("*** *** Memory Map *** ***"); - for (Iterator iter = coll.iterator(); iter.hasNext();) { - Device element = (Device) iter.next(); - printTab(0); - System.out.println("Device: " + element.getType() + ", size: 0x" - + Integer.toHexString(element.getSize()) + ", width: " - + element.getWidth()); - for (Iterator segIter = element.segments.iterator(); segIter - .hasNext();) { - Segment seg = (Segment) segIter.next(); - printSegment(1, seg); - } - } - System.out.println("*** *** *** *** *** *** *** ***"); - } - - private void printTab(int count) { - for (int i = 0; i < count; i++) { - System.out.print('\t'); - } - } - - private void printSegment(int indent, Segment seg) { - printTab(indent); - System.out.println("Segment: " + seg.getName() + ", base: 0x" - + Integer.toHexString(seg.getBase()) + ", size: 0x" - + Integer.toHexString(seg.getSize())); - printMemAttributes(indent + 1, seg.getMemAttributes()); - for (Iterator subSegIter = seg.getSegments().iterator(); subSegIter - .hasNext();) { - Segment subseg = (Segment) subSegIter.next(); - printSegment(2, subseg); - } - } - - private void printMemAttributes(int indent, MemAttributes attr) { - printTab(indent); - System.out.print("MemAttributes: "); - for (int i = 0; i < MemAttributes.NOF_ATTRIBUTES; i++) { - if (attr.isSet(i)) { - if (i > 0) { - System.out.print(", "); - } - String type = null; - switch (i) { - case 0: - type = "read"; - break; - case 1: - type = "write"; - break; - case 2: - type = "const"; - break; - case 3: - type = "code"; - break; - case 4: - type = "var"; - break; - case 5: - type = "sysconst"; - break; - case 6: - type = "heap"; - break; - case 7: - type = "stack"; - break; - } - System.out.print(type); - } - } - System.out.println(); - } -} diff --git a/mcdp/src/ch/ntb/mcdp/system/memMap/Segment.java b/mcdp/src/ch/ntb/mcdp/system/memMap/Segment.java deleted file mode 100644 index c854514..0000000 --- a/mcdp/src/ch/ntb/mcdp/system/memMap/Segment.java +++ /dev/null @@ -1,60 +0,0 @@ -package ch.ntb.mcdp.system.memMap; - -import java.util.LinkedList; - -public class Segment { - - private LinkedList subsegments; - - private String name; - - private MemAttributes attr; - - private int base = 0; - - private int size = 0; - - Segment(String name) { - this.name = name; - subsegments = new LinkedList(); - attr = new MemAttributes(); - } - - Segment(String name, MemAttributes attr) { - this.name = name; - subsegments = new LinkedList(); - this.attr = attr; - } - - public MemAttributes getMemAttributes() { - return attr; - } - - public void add(Segment s) { - subsegments.add(s); - } - - public LinkedList getSegments() { - return subsegments; - } - - public int getBase() { - return base; - } - - public void setBase(int base) { - this.base = base; - } - - public int getSize() { - return size; - } - - public void setSize(int size) { - this.size = size; - } - - public String getName() { - return name; - } -} diff --git a/mcdp/src/ch/ntb/mcdp/system/memMap/test/MemoryMapTest.java b/mcdp/src/ch/ntb/mcdp/system/memMap/test/MemoryMapTest.java deleted file mode 100644 index 13ff03d..0000000 --- a/mcdp/src/ch/ntb/mcdp/system/memMap/test/MemoryMapTest.java +++ /dev/null @@ -1,33 +0,0 @@ -package ch.ntb.mcdp.system.memMap.test; - -import java.io.IOException; - -import javax.xml.parsers.ParserConfigurationException; - -import org.xml.sax.SAXException; - -import ch.ntb.mcdp.system.memMap.MemoryMap; - -public class MemoryMapTest { - - private static String filePath = "resources/targets/mpc555/memoryMap.xml"; - - public static void main(String[] args) { - MemoryMap map = null; - try { - map = new MemoryMap(filePath); - } catch (ParserConfigurationException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } catch (SAXException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } catch (IOException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - System.out.println("done"); - map.printMemMap(); - } - -} diff --git a/mcdp/src/ch/ntb/mcdp/uart/Uart.java b/mcdp/src/ch/ntb/mcdp/uart/Uart.java deleted file mode 100644 index 9c181f6..0000000 --- a/mcdp/src/ch/ntb/mcdp/uart/Uart.java +++ /dev/null @@ -1,58 +0,0 @@ -package ch.ntb.mcdp.uart; - -import java.io.InputStream; -import java.io.OutputStream; - -public abstract class Uart { - - private UartOutputStream out; - - UartInputStream in; - - Uart() { - UartDispatch.getUartList().add(this); - out = new UartOutputStream(getSTYPE_IN()); - in = new UartInputStream(); - // if the read-Thread is already started, this statement has no effect - UartDispatch.start(); - } - - /** - * Get the stream to write to the target device. - * - * @return OutputStream to write to target device - */ - public OutputStream getOutputStream() { - return out; - } - - /** - * Get the stream to read from the target device. - * - * @return InputStream to read from target device - */ - public InputStream getInputStream() { - return in; - } - - /** - * The packet subtype specified for this UART packet (from target to PC). - * This constant is defined in Dispatch.h.
- * Note: This direction is different from the input/output direction of the - * streams. - * - * @return packet subtype - */ - abstract byte getSTYPE_OUT(); - - /** - * The packet subtype specified for this UART packet (from PC to target). - * This constant is defined in Dispatch.h.
- * Note: This direction is different from the input/output direction of the - * streams. - * - * @return packet subtype - */ - abstract byte getSTYPE_IN(); - -} diff --git a/mcdp/src/ch/ntb/mcdp/uart/Uart0.java b/mcdp/src/ch/ntb/mcdp/uart/Uart0.java deleted file mode 100644 index a51c0e5..0000000 --- a/mcdp/src/ch/ntb/mcdp/uart/Uart0.java +++ /dev/null @@ -1,26 +0,0 @@ -package ch.ntb.mcdp.uart; - - -public class Uart0 extends Uart { - - // UART 0 Subtypes - /** - * Data to UART 0 - */ - private static final byte STYPE_UART_0_IN = 0x11; - - /** - * Data from UART 0 - */ - private static final byte STYPE_UART_0_OUT = 0x22; - - @Override - protected byte getSTYPE_OUT() { - return STYPE_UART_0_OUT; - } - - @Override - protected byte getSTYPE_IN() { - return STYPE_UART_0_IN; - } -} diff --git a/mcdp/src/ch/ntb/mcdp/uart/UartDispatch.java b/mcdp/src/ch/ntb/mcdp/uart/UartDispatch.java deleted file mode 100644 index 24d8b96..0000000 --- a/mcdp/src/ch/ntb/mcdp/uart/UartDispatch.java +++ /dev/null @@ -1,137 +0,0 @@ -package ch.ntb.mcdp.uart; - -import java.util.Iterator; -import java.util.LinkedList; - -import ch.ntb.mcdp.usb.DataPacket; -import ch.ntb.mcdp.usb.Dispatch; -import ch.ntb.mcdp.usb.DispatchException; -import ch.ntb.mcdp.usb.USBDevice; -import ch.ntb.usb.USBException; -import ch.ntb.usb.USBTimeoutException; - -public class UartDispatch { - - /** - * Size of the UART buffer on the USB controller.
- * This value is specified in UART_BUF_LEN in the file - * uart.h. - */ - public static final int UART_BUF_LEN = 256; - - private static boolean running = false; - - private static Thread dispatchThread; - - private static LinkedList uarts = new LinkedList(); - - /** - * Starts the read thread for all Uarts. If the thread is already running, - * no action is taken. - */ - public static void start() { - if (dispatchThread == null) { - dispatchThread = new Thread() { - @Override - public void run() { - while (running) { - DataPacket data; - try { - data = Dispatch.readUART(); - if (data != null) { - Iterator iterator = uarts.iterator(); - while (iterator.hasNext()) { - Uart uartObj = (Uart) iterator.next(); - if (uartObj.getSTYPE_OUT() == data.subtype) { - uartObj.in.bufferList.add(data); - } - } - } - // TODO: remove - sleep(200); - } catch (USBTimeoutException e) { - // ignore TimeoutExceptions - } catch (USBException e) { - // TODO: Exceptionhandling - e.printStackTrace(); - try { - sleep(2000); - } catch (InterruptedException e1) { - e1.printStackTrace(); - } - } catch (DispatchException e) { - // TODO: Exceptionhandling - e.printStackTrace(); - try { - sleep(2000); - } catch (InterruptedException e1) { - e1.printStackTrace(); - } - } catch (InterruptedException e) { - // TODO Exceptionhandling - e.printStackTrace(); - } - } - } - }; - } - if (!running) { - running = true; - dispatchThread.start(); - } - } - - /** - * Stops the Uart read-Thread. - */ - public static void stop() { - running = false; - } - - /** - * Check whether the read-Thread is still running. - * - * @return state of the read-Thread - */ - public static boolean isRunning() { - return running; - } - - /** - * Get the LinkedList which contains all Uart-objects. - * - * @return The LinkedList containing all Uart-objects. - */ - public static LinkedList getUartList() { - return uarts; - } - - /** - * Write a Uart data-packet to the target. The maximal number of bytes is - * specified by MAX_UART_PAYLOAD. If more data is sent in - * one packet, only MAX_UART_PAYLOAD bytes are forwarded to - * the uart. - * - * @param packetSubType - * The Subtype specified in Dispatch.h. - * @param data - * The data to be sent. - * @param len - * Length of the data to be sent. - * @throws USBException - */ - protected static void write(byte packetSubType, byte[] data, int len) - throws USBException { - byte[] usbData = new byte[len + DataPacket.PACKET_MIN_LENGTH]; - usbData[0] = DataPacket.PACKET_HEADER; - usbData[1] = Dispatch.MTYPE_UART; - usbData[2] = packetSubType; - usbData[3] = (byte) (len / 0x100); - usbData[4] = (byte) (len & 0xFF); - for (int i = 0; i < len; i++) { - usbData[DataPacket.PACKET_DATA_OFFSET + i] = data[i]; - } - usbData[DataPacket.PACKET_DATA_OFFSET + len] = DataPacket.PACKET_END; - USBDevice.write_BDI(usbData, usbData.length); - } -} diff --git a/mcdp/src/ch/ntb/mcdp/uart/UartInputStream.java b/mcdp/src/ch/ntb/mcdp/uart/UartInputStream.java deleted file mode 100644 index 8ab1851..0000000 --- a/mcdp/src/ch/ntb/mcdp/uart/UartInputStream.java +++ /dev/null @@ -1,75 +0,0 @@ -package ch.ntb.mcdp.uart; - -import java.io.IOException; -import java.io.InputStream; -import java.util.LinkedList; - -import ch.ntb.mcdp.usb.DataPacket; - -public class UartInputStream extends InputStream { - - private int bufferPos = 0; - - LinkedList bufferList = new LinkedList(); - - @Override - public int read() throws IOException { - while (!bufferList.isEmpty()) { - if (bufferPos >= bufferList.element().data.length) { - // remove element, reset bufferPos - bufferList.remove(); - bufferPos = 0; - } else { - return bufferList.element().data[bufferPos++]; - } - } - return -1; - } - - @Override - public int read(byte b[]) throws IOException { - return read(b, 0, b.length); - } - - @Override - public int read(byte b[], int off, int len) throws IOException { - if (b == null) { - throw new NullPointerException(); - } else if ((off < 0) || (off > b.length) || (len < 0) - || ((off + len) > b.length) || ((off + len) < 0)) { - throw new IndexOutOfBoundsException(); - } else if (len == 0) { - return 0; - } - - // TODO: optimize - int c = read(); - if (c == -1) { - return -1; - } - b[off] = (byte) c; - - int i = 1; - try { - for (; i < len; i++) { - c = read(); - if (c == -1) { - break; - } - if (b != null) { - b[off + i] = (byte) c; - } - } - } catch (IOException ee) { - } - return i; - } - - @Override - public int available() throws IOException { - if (bufferList.isEmpty()) - return 0; - return bufferList.element().data.length; - } - -} diff --git a/mcdp/src/ch/ntb/mcdp/uart/UartOutputStream.java b/mcdp/src/ch/ntb/mcdp/uart/UartOutputStream.java deleted file mode 100644 index a88fdba..0000000 --- a/mcdp/src/ch/ntb/mcdp/uart/UartOutputStream.java +++ /dev/null @@ -1,52 +0,0 @@ -package ch.ntb.mcdp.uart; - -import java.io.IOException; -import java.io.OutputStream; - -import ch.ntb.usb.USBException; - -public class UartOutputStream extends OutputStream { - - private byte packetSubType; - - UartOutputStream(byte packetSubType) { - this.packetSubType = packetSubType; - } - - @Override - public void write(int b) throws IOException { - byte[] data = new byte[1]; - data[0] = (byte) b; - try { - UartDispatch.write(packetSubType, data, 1); - } catch (USBException e) { - throw new IOException(e.getMessage()); - } - } - - @Override - public void write(byte b[], int off, int len) throws IOException { - if (b == null) { - throw new NullPointerException(); - } else if ((off < 0) || (off > b.length) || (len < 0) - || ((off + len) > b.length) || ((off + len) < 0)) { - throw new IndexOutOfBoundsException(); - } else if (len == 0) { - return; - } - int newLen = 0; - do { - newLen = Math.min(len, UartDispatch.UART_BUF_LEN); - byte[] data = new byte[newLen]; - for (int i = 0; i < newLen; i++) { - data[i] = b[off + i]; - } - try { - UartDispatch.write(packetSubType, data, newLen); - } catch (USBException e) { - throw new IOException(e.getMessage()); - } - len -= newLen; - } while (len > UartDispatch.UART_BUF_LEN); - } -} diff --git a/mcdp/src/ch/ntb/mcdp/uart/blackbox/Uart0.java b/mcdp/src/ch/ntb/mcdp/uart/blackbox/Uart0.java deleted file mode 100644 index 5ebb1ac..0000000 --- a/mcdp/src/ch/ntb/mcdp/uart/blackbox/Uart0.java +++ /dev/null @@ -1,72 +0,0 @@ -package ch.ntb.mcdp.uart.blackbox; - -import ch.ntb.mcdp.uart.UartDispatch; -import ch.ntb.mcdp.usb.DataPacket; -import ch.ntb.mcdp.usb.Dispatch; -import ch.ntb.mcdp.usb.USBDevice; -import ch.ntb.usb.USBException; - -public class Uart0 { - - // UART 0 Subtypes - /** - * Data to UART 0 - */ - private static final byte STYPE_UART_0_IN = 0x11; - - public static final int MAX_UART_PAYLOAD = UartDispatch.UART_BUF_LEN; - - private static void write(byte packetSubType, byte[] data, int len) - throws USBException { - byte[] usbData = new byte[len + DataPacket.PACKET_MIN_LENGTH]; - usbData[0] = DataPacket.PACKET_HEADER; - usbData[1] = Dispatch.MTYPE_UART; - usbData[2] = packetSubType; - usbData[3] = (byte) (len / 0x100); - usbData[4] = (byte) (len & 0xFF); - for (int i = 0; i < len; i++) { - usbData[DataPacket.PACKET_DATA_OFFSET + i] = data[i]; - } - usbData[DataPacket.PACKET_DATA_OFFSET + len] = DataPacket.PACKET_END; - USBDevice.write_BDI(usbData, usbData.length); - } - - /** - * Write a Uart data-packet to the target. The maximal number of bytes is - * specified by MAX_UART_PAYLOAD. If more data is sent in - * one packet, only MAX_UART_PAYLOAD bytes are forwarded to - * the uart. - * - * @param data - * The data to be sent. - * @param len - * Length of the data to be sent. - * @return true if the data has been sent successfully - */ - public static boolean write(byte[] data, int len) { - try { - write(STYPE_UART_0_IN, data, len); - } catch (USBException e) { - return false; - } - return true; - } - - /** - * Try to read uart data from the device. - * - * @return uart data or null if no data is available or an exception occured - */ - public static byte[] read() { - DataPacket packet; - try { - packet = Dispatch.readUART(); - if (packet == null) { - return null; - } - return packet.data; - } catch (Exception e) { - return null; - } - } -} diff --git a/mcdp/src/ch/ntb/mcdp/uart/blackbox/test/UartTest.java b/mcdp/src/ch/ntb/mcdp/uart/blackbox/test/UartTest.java deleted file mode 100644 index d248bc8..0000000 --- a/mcdp/src/ch/ntb/mcdp/uart/blackbox/test/UartTest.java +++ /dev/null @@ -1,100 +0,0 @@ -package ch.ntb.mcdp.uart.blackbox.test; - -import ch.ntb.mcdp.uart.UartDispatch; -import ch.ntb.mcdp.uart.blackbox.Uart0; - -public class UartTest { - - static Thread reader; - - public static void init() { - - reader = new Thread() { - public void run() { - while (true) { - try { - byte[] result = Uart0.read(); - if (result != null) { - for (int i = 0; i < result.length; i++) { - System.out.print((char) result[i]); - } - } - sleep(20); - } catch (InterruptedException e) { - e.printStackTrace(); - } - } - } - }; - reader.start(); - } - - static public void button1() { - byte[] buffer = new byte[UartDispatch.UART_BUF_LEN]; - for (int i = 0; i < buffer.length; i++) { - buffer[i] = (byte) ('0' + (i % ('z' - '0'))); - } - boolean done = Uart0.write(buffer, buffer.length); - if (done) { - System.out.println("success"); - } else { - System.out.println("failed"); - } - } - - static public void button2() { - - } - - static public void button3() { - - } - - static public void button4() { - - } - - static public void button5() { - - } - - static public void button6() { - - } - - static public void button7() { - - } - - static public void button8() { - - } - - static public void button9() { - - } - - static public void button10() { - - } - - static public void button11() { - - } - - static public void button12() { - - } - - static public void button13() { - - } - - static public void button14() { - - } - - static public void button15() { - - } -} diff --git a/mcdp/src/ch/ntb/mcdp/uart/blackbox/test/UartTestApp.java b/mcdp/src/ch/ntb/mcdp/uart/blackbox/test/UartTestApp.java deleted file mode 100644 index e084440..0000000 --- a/mcdp/src/ch/ntb/mcdp/uart/blackbox/test/UartTestApp.java +++ /dev/null @@ -1,215 +0,0 @@ -package ch.ntb.mcdp.uart.blackbox.test; - -import org.eclipse.swt.SWT; -import org.eclipse.swt.layout.RowLayout; -import org.eclipse.swt.widgets.Button; -import org.eclipse.swt.widgets.Display; -import org.eclipse.swt.widgets.Shell; - -import ch.ntb.mcdp.uart.UartDispatch; -import ch.ntb.mcdp.usb.USBDevice; -import ch.ntb.usb.USBException; - -public class UartTestApp { - - private Shell sShell = null; // @jve:decl-index=0:visual-constraint="10,10" - - private Button button1 = null; - - private Button button2 = null; - - private Button button3 = null; - - private Button button4 = null; - - private Button button5 = null; - - private Button button6 = null; - - private Button button7 = null; - - private Button button8 = null; - - private Button button9 = null; - - private Button button10 = null; - - private Button button15 = null; - - private Button button11 = null; - - private Button button12 = null; - - private Button button13 = null; - - private Button button14 = null; - - /** - * This method initializes sShell - */ - private void createSShell() { - sShell = new Shell(); - sShell.setText("Shell"); - sShell.setLayout(new RowLayout()); - sShell.setSize(new org.eclipse.swt.graphics.Point(312,110)); - button1 = new Button(sShell, SWT.NONE); - button1.setText("writeData"); - button1 - .addSelectionListener(new org.eclipse.swt.events.SelectionAdapter() { - public void widgetSelected( - org.eclipse.swt.events.SelectionEvent e) { - UartTest.button1(); - } - }); - button2 = new Button(sShell, SWT.NONE); - button2.setText("not assigned"); - button2 - .addSelectionListener(new org.eclipse.swt.events.SelectionAdapter() { - public void widgetSelected( - org.eclipse.swt.events.SelectionEvent e) { - UartTest.button2(); - } - }); - button3 = new Button(sShell, SWT.NONE); - button3.setText("not assigned"); - button3 - .addSelectionListener(new org.eclipse.swt.events.SelectionAdapter() { - public void widgetSelected( - org.eclipse.swt.events.SelectionEvent e) { - UartTest.button3(); - } - }); - button4 = new Button(sShell, SWT.NONE); - button4.setText("not assigned"); - button4 - .addSelectionListener(new org.eclipse.swt.events.SelectionAdapter() { - public void widgetSelected( - org.eclipse.swt.events.SelectionEvent e) { - UartTest.button4(); - } - }); - button5 = new Button(sShell, SWT.NONE); - button5.setText("not assigned"); - button6 = new Button(sShell, SWT.NONE); - button6.setText("not assigned"); - button6 - .addSelectionListener(new org.eclipse.swt.events.SelectionAdapter() { - public void widgetSelected( - org.eclipse.swt.events.SelectionEvent e) { - UartTest.button6(); - } - }); - button7 = new Button(sShell, SWT.NONE); - button7.setText("not assigned"); - button8 = new Button(sShell, SWT.NONE); - button8.setText("not assigned"); - button8 - .addSelectionListener(new org.eclipse.swt.events.SelectionAdapter() { - public void widgetSelected( - org.eclipse.swt.events.SelectionEvent e) { - UartTest.button8(); - } - }); - button9 = new Button(sShell, SWT.NONE); - button9.setText("not assigned"); - button10 = new Button(sShell, SWT.NONE); - button10.setText("not assigned"); - button11 = new Button(sShell, SWT.NONE); - button11.setText("not assigned"); - button11.addSelectionListener(new org.eclipse.swt.events.SelectionAdapter() { - public void widgetSelected(org.eclipse.swt.events.SelectionEvent e) { - UartTest.button11(); - } - }); - button12 = new Button(sShell, SWT.NONE); - button12.setText("not assigned"); - button12.addSelectionListener(new org.eclipse.swt.events.SelectionAdapter() { - public void widgetSelected(org.eclipse.swt.events.SelectionEvent e) { - UartTest.button12(); - } - }); - button13 = new Button(sShell, SWT.NONE); - button13.setText("not assigned"); - button13.addSelectionListener(new org.eclipse.swt.events.SelectionAdapter() { - public void widgetSelected(org.eclipse.swt.events.SelectionEvent e) { - UartTest.button13(); - } - }); - button14 = new Button(sShell, SWT.NONE); - button14.setText("not assigned"); - button14.addSelectionListener(new org.eclipse.swt.events.SelectionAdapter() { - public void widgetSelected(org.eclipse.swt.events.SelectionEvent e) { - UartTest.button14(); - } - }); - button15 = new Button(sShell, SWT.NONE); - button15.setText("not assigned"); - button15.addSelectionListener(new org.eclipse.swt.events.SelectionAdapter() { - public void widgetSelected(org.eclipse.swt.events.SelectionEvent e) { - UartTest.button15(); - } - }); - button10 - .addSelectionListener(new org.eclipse.swt.events.SelectionAdapter() { - public void widgetSelected( - org.eclipse.swt.events.SelectionEvent e) { - UartTest.button10(); - } - }); - button9 - .addSelectionListener(new org.eclipse.swt.events.SelectionAdapter() { - public void widgetSelected( - org.eclipse.swt.events.SelectionEvent e) { - UartTest.button9(); - } - }); - button7 - .addSelectionListener(new org.eclipse.swt.events.SelectionAdapter() { - public void widgetSelected( - org.eclipse.swt.events.SelectionEvent e) { - UartTest.button7(); - } - }); - button5 - .addSelectionListener(new org.eclipse.swt.events.SelectionAdapter() { - public void widgetSelected( - org.eclipse.swt.events.SelectionEvent e) { - UartTest.button5(); - } - }); - } - - public static void main(String[] args) { - UartTestApp app = new UartTestApp(); - app.createSShell(); - app.sShell.open(); - - Display display = app.sShell.getDisplay(); - - try { - USBDevice.open(); - System.out.println("open device..."); - } catch (USBException e) { - e.printStackTrace(); - return; - } - UartTest.init(); - - while (!app.sShell.isDisposed()) { - if (!display.readAndDispatch()) { - display.sleep(); - } - } - - UartDispatch.stop(); - - try { - USBDevice.close(); - System.out.println("closing device..."); - } catch (USBException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - System.exit(0); - } -} diff --git a/mcdp/src/ch/ntb/mcdp/uart/test/UartTest.java b/mcdp/src/ch/ntb/mcdp/uart/test/UartTest.java deleted file mode 100644 index 14b64c8..0000000 --- a/mcdp/src/ch/ntb/mcdp/uart/test/UartTest.java +++ /dev/null @@ -1,118 +0,0 @@ -package ch.ntb.mcdp.uart.test; - -import java.io.IOException; -import java.io.InputStream; -import java.io.OutputStream; - -import ch.ntb.mcdp.uart.Uart0; -import ch.ntb.mcdp.uart.UartDispatch; - -public class UartTest { - - static Thread reader; - - static OutputStream out; - - static InputStream in; - - static byte[] buffer = new byte[UartDispatch.UART_BUF_LEN]; - - public static void init() { - - // create an uart object - Uart0 uart = new Uart0(); - // get the streams - out = uart.getOutputStream(); - in = uart.getInputStream(); - - reader = new Thread() { - public void run() { - int readLen = 0; - while (true) { - try { - readLen = in.read(buffer); - if (readLen > 0) { - for (int i = 0; i < readLen; i++) { - System.out.print((char) buffer[i]); - } - } - Thread.sleep(50); - } catch (IOException e) { - e.printStackTrace(); - } catch (InterruptedException e) { - e.printStackTrace(); - } - } - } - }; - reader.start(); - } - - static public void button1() { - byte[] buffer = new byte[UartDispatch.UART_BUF_LEN]; - for (int i = 0; i < buffer.length; i++) { - buffer[i] = (byte) ('0' + (i % ('z' - '0'))); - } - try { - out.write(buffer); - } catch (IOException e) { - e.printStackTrace(); - } - } - - static public void button2() { - - } - - static public void button3() { - - } - - static public void button4() { - - } - - static public void button5() { - - } - - static public void button6() { - - } - - static public void button7() { - - } - - static public void button8() { - - } - - static public void button9() { - - } - - static public void button10() { - - } - - static public void button11() { - - } - - static public void button12() { - - } - - static public void button13() { - - } - - static public void button14() { - - } - - static public void button15() { - - } -} diff --git a/mcdp/src/ch/ntb/mcdp/uart/test/UartTestApp.java b/mcdp/src/ch/ntb/mcdp/uart/test/UartTestApp.java deleted file mode 100644 index c8cc744..0000000 --- a/mcdp/src/ch/ntb/mcdp/uart/test/UartTestApp.java +++ /dev/null @@ -1,216 +0,0 @@ -package ch.ntb.mcdp.uart.test; - -import org.eclipse.swt.SWT; -import org.eclipse.swt.layout.RowLayout; -import org.eclipse.swt.widgets.Button; -import org.eclipse.swt.widgets.Display; -import org.eclipse.swt.widgets.Shell; - -import ch.ntb.mcdp.uart.UartDispatch; -import ch.ntb.mcdp.usb.USBDevice; -import ch.ntb.usb.USBException; - -public class UartTestApp { - - private Shell sShell = null; // @jve:decl-index=0:visual-constraint="10,10" - - private Button button1 = null; - - private Button button2 = null; - - private Button button3 = null; - - private Button button4 = null; - - private Button button5 = null; - - private Button button6 = null; - - private Button button7 = null; - - private Button button8 = null; - - private Button button9 = null; - - private Button button10 = null; - - private Button button15 = null; - - private Button button11 = null; - - private Button button12 = null; - - private Button button13 = null; - - private Button button14 = null; - - /** - * This method initializes sShell - */ - private void createSShell() { - sShell = new Shell(); - sShell.setText("Shell"); - sShell.setLayout(new RowLayout()); - sShell.setSize(new org.eclipse.swt.graphics.Point(312,110)); - button1 = new Button(sShell, SWT.NONE); - button1.setText("writeData"); - button1 - .addSelectionListener(new org.eclipse.swt.events.SelectionAdapter() { - public void widgetSelected( - org.eclipse.swt.events.SelectionEvent e) { - UartTest.button1(); - } - }); - button2 = new Button(sShell, SWT.NONE); - button2.setText("not assigned"); - button2 - .addSelectionListener(new org.eclipse.swt.events.SelectionAdapter() { - public void widgetSelected( - org.eclipse.swt.events.SelectionEvent e) { - UartTest.button2(); - } - }); - button3 = new Button(sShell, SWT.NONE); - button3.setText("not assigned"); - button3 - .addSelectionListener(new org.eclipse.swt.events.SelectionAdapter() { - public void widgetSelected( - org.eclipse.swt.events.SelectionEvent e) { - UartTest.button3(); - } - }); - button4 = new Button(sShell, SWT.NONE); - button4.setText("not assigned"); - button4 - .addSelectionListener(new org.eclipse.swt.events.SelectionAdapter() { - public void widgetSelected( - org.eclipse.swt.events.SelectionEvent e) { - UartTest.button4(); - } - }); - button5 = new Button(sShell, SWT.NONE); - button5.setText("not assigned"); - button6 = new Button(sShell, SWT.NONE); - button6.setText("not assigned"); - button6 - .addSelectionListener(new org.eclipse.swt.events.SelectionAdapter() { - public void widgetSelected( - org.eclipse.swt.events.SelectionEvent e) { - UartTest.button6(); - } - }); - button7 = new Button(sShell, SWT.NONE); - button7.setText("not assigned"); - button8 = new Button(sShell, SWT.NONE); - button8.setText("not assigned"); - button8 - .addSelectionListener(new org.eclipse.swt.events.SelectionAdapter() { - public void widgetSelected( - org.eclipse.swt.events.SelectionEvent e) { - UartTest.button8(); - } - }); - button9 = new Button(sShell, SWT.NONE); - button9.setText("not assigned"); - button10 = new Button(sShell, SWT.NONE); - button10.setText("not assigned"); - button11 = new Button(sShell, SWT.NONE); - button11.setText("not assigned"); - button11.addSelectionListener(new org.eclipse.swt.events.SelectionAdapter() { - public void widgetSelected(org.eclipse.swt.events.SelectionEvent e) { - UartTest.button11(); - } - }); - button12 = new Button(sShell, SWT.NONE); - button12.setText("not assigned"); - button12.addSelectionListener(new org.eclipse.swt.events.SelectionAdapter() { - public void widgetSelected(org.eclipse.swt.events.SelectionEvent e) { - UartTest.button12(); - } - }); - button13 = new Button(sShell, SWT.NONE); - button13.setText("not assigned"); - button13.addSelectionListener(new org.eclipse.swt.events.SelectionAdapter() { - public void widgetSelected(org.eclipse.swt.events.SelectionEvent e) { - UartTest.button13(); - } - }); - button14 = new Button(sShell, SWT.NONE); - button14.setText("not assigned"); - button14.addSelectionListener(new org.eclipse.swt.events.SelectionAdapter() { - public void widgetSelected(org.eclipse.swt.events.SelectionEvent e) { - UartTest.button14(); - } - }); - button15 = new Button(sShell, SWT.NONE); - button15.setText("not assigned"); - button15.addSelectionListener(new org.eclipse.swt.events.SelectionAdapter() { - public void widgetSelected(org.eclipse.swt.events.SelectionEvent e) { - UartTest.button15(); - } - }); - button10 - .addSelectionListener(new org.eclipse.swt.events.SelectionAdapter() { - public void widgetSelected( - org.eclipse.swt.events.SelectionEvent e) { - UartTest.button10(); - } - }); - button9 - .addSelectionListener(new org.eclipse.swt.events.SelectionAdapter() { - public void widgetSelected( - org.eclipse.swt.events.SelectionEvent e) { - UartTest.button9(); - } - }); - button7 - .addSelectionListener(new org.eclipse.swt.events.SelectionAdapter() { - public void widgetSelected( - org.eclipse.swt.events.SelectionEvent e) { - UartTest.button7(); - } - }); - button5 - .addSelectionListener(new org.eclipse.swt.events.SelectionAdapter() { - public void widgetSelected( - org.eclipse.swt.events.SelectionEvent e) { - UartTest.button5(); - } - }); - } - - public static void main(String[] args) { - UartTestApp app = new UartTestApp(); - app.createSShell(); - app.sShell.open(); - - Display display = app.sShell.getDisplay(); - - try { - USBDevice.open(); - System.out.println("open device..."); - } catch (USBException e) { - e.printStackTrace(); - return; - } - UartDispatch.start(); - UartTest.init(); - - while (!app.sShell.isDisposed()) { - if (!display.readAndDispatch()) { - display.sleep(); - } - } - - UartDispatch.stop(); - - try { - USBDevice.close(); - System.out.println("closing device..."); - } catch (USBException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - System.exit(0); - } -} diff --git a/mcdp/src/ch/ntb/mcdp/usb/DataPacket.java b/mcdp/src/ch/ntb/mcdp/usb/DataPacket.java deleted file mode 100644 index 3a856f7..0000000 --- a/mcdp/src/ch/ntb/mcdp/usb/DataPacket.java +++ /dev/null @@ -1,45 +0,0 @@ -package ch.ntb.mcdp.usb; - -public class DataPacket { - - /** - * minimal Length of a packet (no payload) - */ - public static final int PACKET_MIN_LENGTH = 6; - - public int subtype; - - public byte[] data; - - /** - * offset to the first byte of data - */ - public static final byte PACKET_DATA_OFFSET = 5; - - /** - * last byte of packet - */ - public static final byte PACKET_END = 0x1F; - - // Packet Constants - /** - * first byte of header - */ - public static final byte PACKET_HEADER = 0x5B; - - DataPacket(int subtype, byte[] data) { - this.subtype = subtype; - this.data = data; - } - - @Override - public String toString() { - StringBuffer sb = new StringBuffer("Subtype: 0x" - + String.format("%1$02X", subtype) + "\t"); - sb.append("Data: "); - for (int i = 0; i < data.length; i++) { - sb.append("0x" + String.format("%1$02X", data[i]) + " "); - } - return sb.toString(); - } -} diff --git a/mcdp/src/ch/ntb/mcdp/usb/Dispatch.java b/mcdp/src/ch/ntb/mcdp/usb/Dispatch.java deleted file mode 100644 index 63b7c56..0000000 --- a/mcdp/src/ch/ntb/mcdp/usb/Dispatch.java +++ /dev/null @@ -1,138 +0,0 @@ -package ch.ntb.mcdp.usb; - -import java.util.LinkedList; -import java.util.logging.Logger; - -import ch.ntb.mcdp.utils.logger.LogUtil; -import ch.ntb.usb.USB; -import ch.ntb.usb.USBException; - -public class Dispatch { - - private static Logger logger = LogUtil.ch_ntb_mcdp_usb; - - // Main Types - /** - * general errors - */ - public static final byte MTYPE_ERROR = 0x01; - - /** - * BDI specific packets - */ - public static final byte MTYPE_BDI = 0x02; - - /** - * UART specific packets - */ - public static final byte MTYPE_UART = 0x03; - - // Sub Types - // ERRORS - /** - * Unknown MTYPE - */ - public static final byte STYPE_ERROR_UNKNOWN_MTYPE = 0x70; - - /** - * Header of packet wrong - */ - public static final byte STYPE_ERROR_HEADER = 0x71; - - /** - * Packet end wrong - */ - public static final byte STYPE_ERROR_PACKET_END = 0x72; - - private static byte[] usbData = new byte[USB.HIGHSPEED_MAX_BULK_PACKET_SIZE]; - - private static LinkedList bdiData, uartData; - - static { - bdiData = new LinkedList(); - uartData = new LinkedList(); - } - - public static void emptyBuffers() { - bdiData.clear(); - uartData.clear(); - } - - private static void dispatch(byte[] data, int size) - throws DispatchException { - int index = 0, mainType, subtype; - byte[] packetData; - while (index < size) { - if (data[index++] != DataPacket.PACKET_HEADER) { - throw new DispatchException("PACKET_HEADER wrong: " - + data[index - 1]); - } - mainType = data[index++]; - subtype = data[index++]; - int dataLen = (data[index++] & 0xFF) * 0x100 - + (data[index++] & 0xFF); - if (data[index + dataLen] != DataPacket.PACKET_END) { - throw new DispatchException("PACKET_END or packetLen (" - + dataLen + " bytes) wrong"); - } - - switch (mainType) { - case MTYPE_ERROR: - switch (subtype) { - case STYPE_ERROR_HEADER: - throw new DispatchException( - "MTYPE_ERROR: STYPE_ERROR_HEADER"); - case STYPE_ERROR_PACKET_END: - throw new DispatchException( - "MTYPE_ERROR: STYPE_ERROR_PACKET_END"); - case STYPE_ERROR_UNKNOWN_MTYPE: - throw new DispatchException( - "MTYPE_ERROR: STYPE_ERROR_UNKNOWN_MTYPE"); - default: - throw new DispatchException("MTYPE_ERROR: Unknown S_TYPE: " - + subtype); - } - case MTYPE_BDI: - packetData = new byte[dataLen]; - // copy data to bdiData - for (int i = 0; i < dataLen; i++) { - packetData[i] = data[index + i]; - } - bdiData.add(new DataPacket(subtype, packetData)); - break; - case MTYPE_UART: - packetData = new byte[dataLen]; - // copy data to uartData - for (int i = 0; i < dataLen; i++) { - packetData[i] = data[index + i]; - } - uartData.add(new DataPacket(subtype, packetData)); - break; - default: - throw new DispatchException("Unknown MTYPE: " + mainType); - } - index += dataLen + 1; - } - } - - public static DataPacket readBDI() throws USBException, DispatchException { - if (!bdiData.isEmpty()) { - return bdiData.poll(); - } - int dataLength = USBDevice.read_BDI(usbData, USBDevice - .getMaxPacketSize()); - dispatch(usbData, dataLength); - return bdiData.poll(); - } - - public static DataPacket readUART() throws USBException, DispatchException { - if (!uartData.isEmpty()) { - logger.info("buffer not empty"); - return uartData.poll(); - } - int dataLength = USBDevice.read_UART(usbData, USBDevice - .getMaxPacketSize()); - dispatch(usbData, dataLength); - return uartData.poll(); - } -} diff --git a/mcdp/src/ch/ntb/mcdp/usb/DispatchException.java b/mcdp/src/ch/ntb/mcdp/usb/DispatchException.java deleted file mode 100644 index 13697c7..0000000 --- a/mcdp/src/ch/ntb/mcdp/usb/DispatchException.java +++ /dev/null @@ -1,14 +0,0 @@ -package ch.ntb.mcdp.usb; - -public class DispatchException extends Exception{ - - public DispatchException(String string) { - super(string); - } - - /** - * - */ - private static final long serialVersionUID = -3507511795478700742L; - -} diff --git a/mcdp/src/ch/ntb/mcdp/usb/USBDevice.java b/mcdp/src/ch/ntb/mcdp/usb/USBDevice.java deleted file mode 100644 index 005b795..0000000 --- a/mcdp/src/ch/ntb/mcdp/usb/USBDevice.java +++ /dev/null @@ -1,73 +0,0 @@ -package ch.ntb.mcdp.usb; - -import ch.ntb.usb.Device; -import ch.ntb.usb.USB; -import ch.ntb.usb.USBException; - -public class USBDevice { - - private final static short IdVendor = (short) 0x8235; - - private final static short IdProduct = 0x0100; - - private final static int Configuration = 1; - - private final static int Interface = 0; - - private final static int Altinterface = 0; - - private static final int OUT_Endpoint_BDI = 0x02; - - private static final int IN_Endpoint_BDI = 0x86; - - private static final int OUT_Endpoint_UART = 0x04; - - private static final int IN_Endpoint_UART = 0x88; - - private static final int BDI_Timeout = 1000; - - private static final int UART_Timeout = 1; - - private static Device dev; - - static { - dev = USB.getDevice(IdVendor, IdProduct); - dev.setResetOnFirstOpen(true); - } - - public static void open() throws USBException { - dev.open(Configuration, Interface, Altinterface); - } - - public static void close() throws USBException { - dev.close(); - } - - public static void reset() throws USBException { - dev.reset(); - } - - public static void write_BDI(byte[] data, int length) throws USBException { - dev.bulkwrite(OUT_Endpoint_BDI, data, length, BDI_Timeout, true); - } - - public static int read_BDI(byte[] data, int size) throws USBException { - return dev.bulkread(IN_Endpoint_BDI, data, size, BDI_Timeout, true); - } - - public static void write_UART(byte[] data, int length) throws USBException { - dev.bulkwrite(OUT_Endpoint_UART, data, length, UART_Timeout, false); - } - - public static int read_UART(byte[] data, int size) throws USBException { - return dev.bulkread(IN_Endpoint_UART, data, size, UART_Timeout, false); - } - - public static int getMaxPacketSize() { - return dev.getMaxPacketSize(); - } - - public static Device getDevice() { - return dev; - } -} diff --git a/mcdp/src/ch/ntb/mcdp/utils/Redirect.java b/mcdp/src/ch/ntb/mcdp/utils/Redirect.java deleted file mode 100644 index c632587..0000000 --- a/mcdp/src/ch/ntb/mcdp/utils/Redirect.java +++ /dev/null @@ -1,17 +0,0 @@ -package ch.ntb.mcdp.utils; - -import java.io.FileNotFoundException; -import java.io.FileOutputStream; -import java.io.PrintStream; - -public class Redirect { - - public static void redirect(){ - try { - System.setOut(new PrintStream(new FileOutputStream("JavaOut.txt"))); - System.setErr(new PrintStream(new FileOutputStream("JavaErr.txt"))); - } catch (FileNotFoundException e) { - e.printStackTrace(); - } - } -} diff --git a/mcdp/src/ch/ntb/mcdp/utils/logger/LogLevel.java b/mcdp/src/ch/ntb/mcdp/utils/logger/LogLevel.java deleted file mode 100644 index 2dccc77..0000000 --- a/mcdp/src/ch/ntb/mcdp/utils/logger/LogLevel.java +++ /dev/null @@ -1,13 +0,0 @@ -package ch.ntb.mcdp.utils.logger; - -import java.util.logging.Level; - -public class LogLevel extends Level { - - public static final Level DEBUG = new LogLevel("DEBUG", 750); - - protected LogLevel(String name, int value) { - super(name, value); - } - -} diff --git a/mcdp/src/ch/ntb/mcdp/utils/logger/LogUtil.java b/mcdp/src/ch/ntb/mcdp/utils/logger/LogUtil.java deleted file mode 100644 index a44d9e8..0000000 --- a/mcdp/src/ch/ntb/mcdp/utils/logger/LogUtil.java +++ /dev/null @@ -1,48 +0,0 @@ -package ch.ntb.mcdp.utils.logger; - -import java.util.logging.ConsoleHandler; -import java.util.logging.Handler; -import java.util.logging.Level; - -public class LogUtil { - - public static McdpLogger ch_ntb_mcdp_bdi, ch_ntb_mcdp_bdi_test, - ch_ntb_mcdp_mc68332, ch_ntb_mcdp_usb; - - static { - // set all loglevels here - ch_ntb_mcdp_usb = getLogger("ch.ntb.mcdp.usb", LogLevel.OFF); - - ch_ntb_mcdp_bdi = getLogger("ch.ntb.mcdp.bdi", LogLevel.OFF); - - ch_ntb_mcdp_bdi_test = getLogger("ch.ntb.mcdp.bdi.test", LogLevel.ALL); - - ch_ntb_mcdp_mc68332 = getLogger("ch.ntb.mcdp.mc68332", LogLevel.OFF); - } - - public static void setLevel(McdpLogger logger, Level loglevel) { - Handler[] h = logger.getHandlers(); - for (int i = 0; i < h.length; i++) { - h[i].setLevel(loglevel); - } - logger.setLevel(loglevel); - } - - private static void initLevel(McdpLogger logger, Level loglevel) { - Handler[] h = logger.getHandlers(); - for (int i = 0; i < h.length; i++) { - logger.removeHandler(h[i]); - } - Handler console = new ConsoleHandler(); - console.setLevel(loglevel); - logger.addHandler(console); - logger.setLevel(loglevel); - logger.setUseParentHandlers(false); - } - - private static McdpLogger getLogger(String name, Level loglevel) { - McdpLogger logger = McdpLogger.getLogger(name); - initLevel(logger, loglevel); - return logger; - } -} diff --git a/mcdp/src/ch/ntb/mcdp/utils/logger/McdpLogger.java b/mcdp/src/ch/ntb/mcdp/utils/logger/McdpLogger.java deleted file mode 100644 index 219dd6a..0000000 --- a/mcdp/src/ch/ntb/mcdp/utils/logger/McdpLogger.java +++ /dev/null @@ -1,26 +0,0 @@ -package ch.ntb.mcdp.utils.logger; - -import java.util.logging.Logger; -import java.util.logging.LogManager; - -public class McdpLogger extends Logger { - - protected McdpLogger(String name, String resourceBundleName) { - super(name, resourceBundleName); - } - - public void debug(String msg) { - log(LogLevel.DEBUG, msg); - } - - public static synchronized McdpLogger getLogger(String name) { - LogManager manager = LogManager.getLogManager(); - McdpLogger result = (McdpLogger) manager.getLogger(name); - if (result == null) { - result = new McdpLogger(name, null); - manager.addLogger(result); - result = (McdpLogger) manager.getLogger(name); - } - return result; - } -}