- if ((argc < 1) || (argc > 3))
- return JIM_ERR;
- const char *version_str = NULL;
-
- if (argc == 1)
- {
- version_str = ZYLIN_OPENOCD_VERSION;
- } else
- {
- const char *str = Jim_GetString(argv[1], NULL);
- const char *str2 = NULL;
- if (argc > 2)
- str2 = Jim_GetString(argv[2], NULL);
- if (strcmp("openocd", str) == 0)
- {
- version_str = ZYLIN_OPENOCD;
- }
- else if (strcmp("zy1000", str) == 0)
- {
- version_str = ZYLIN_VERSION;
- }
- else if (strcmp("date", str) == 0)
- {
- version_str = ZYLIN_DATE;
- }
- else if (strcmp("time", str) == 0)
- {
- version_str = ZYLIN_TIME;
- }
- else if (strcmp("pcb", str) == 0)
- {
-#ifdef CYGPKG_HAL_NIOS2
- version_str="c";
-#else
- version_str="b";
-#endif
- }
-#ifdef CYGPKG_HAL_NIOS2
- else if (strcmp("fpga", str) == 0)
- {
-
- /* return a list of 32 bit integers to describe the expected
- * and actual FPGA
- */
- static char *fpga_id = "0x12345678 0x12345678 0x12345678 0x12345678";
- uint32_t id, timestamp;
- HAL_READ_UINT32(SYSID_BASE, id);
- HAL_READ_UINT32(SYSID_BASE+4, timestamp);
- sprintf(fpga_id, "0x%08x 0x%08x 0x%08x 0x%08x", id, timestamp, SYSID_ID, SYSID_TIMESTAMP);
- version_str = fpga_id;
- if ((argc>2) && (strcmp("time", str2) == 0))
- {
- time_t last_mod = timestamp;
- char * t = ctime (&last_mod) ;
- t[strlen(t)-1] = 0;
- version_str = t;
- }
- }
-#endif
-
- else
- {
- return JIM_ERR;
- }
- }
-
- Jim_SetResult(interp, Jim_NewStringObj(interp, version_str, -1));
-
- return JIM_OK;
-}
-#endif
-
-#ifdef CYGPKG_HAL_NIOS2
-
-
-struct info_forward
-{
- void *data;
- struct cyg_upgrade_info *upgraded_file;
-};
-
-static void report_info(void *data, const char * format, va_list args)
-{
- char *s = alloc_vprintf(format, args);
- LOG_USER_N("%s", s);
- free(s);
-}
-
-struct cyg_upgrade_info firmware_info =
-{
- (uint8_t *)0x84000000,
- "/ram/firmware.phi",
- "Firmware",
- 0x0300000,
- 0x1f00000 -
- 0x0300000,
- "ZylinNiosFirmware\n",
- report_info,
-};
-
-static int jim_zy1000_writefirmware(Jim_Interp *interp, int argc, Jim_Obj *const *argv)
-{
- if (argc != 2)
- return JIM_ERR;
-
- int length;
- const char *str = Jim_GetString(argv[1], &length);
-
- /* */
- int tmpFile;
- if ((tmpFile = open(firmware_info.file, O_RDWR | O_CREAT | O_TRUNC)) <= 0)
- {
- return JIM_ERR;
- }
- bool success;
- success = write(tmpFile, str, length) == length;
- close(tmpFile);
- if (!success)
- return JIM_ERR;
-
- if (!cyg_firmware_upgrade(NULL, firmware_info))
- return JIM_ERR;
-
- return JIM_OK;
-}
-#endif
-
-static int
-zylinjtag_Jim_Command_powerstatus(Jim_Interp *interp,
- int argc,
- Jim_Obj * const *argv)
-{
- if (argc != 1)
- {