Explorar o código

Include current SCSI command in crash messages.

Petteri Aimonen %!s(int64=2) %!d(string=hai) anos
pai
achega
fce1c4371d

+ 4 - 0
lib/ZuluSCSI_platform_GD32F205/ZuluSCSI_platform.cpp

@@ -319,6 +319,8 @@ void show_hardfault(uint32_t *sp)
     logmsg("CRASH!");
     logmsg("Platform: ", g_platform_name);
     logmsg("FW Version: ", g_log_firmwareversion);
+    logmsg("scsiDev.cdb: ", bytearray(scsiDev.cdb, 12));
+    logmsg("scsiDev.phase: ", (int)scsiDev.phase);
     logmsg("CFSR: ", cfsr);
     logmsg("SP: ", (uint32_t)sp);
     logmsg("PC: ", pc);
@@ -396,6 +398,8 @@ void __assert_func(const char *file, int line, const char *func, const char *exp
     logmsg("ASSERT FAILED!");
     logmsg("Platform: ", g_platform_name);
     logmsg("FW Version: ", g_log_firmwareversion);
+    logmsg("scsiDev.cdb: ", bytearray(scsiDev.cdb, 12));
+    logmsg("scsiDev.phase: ", (int)scsiDev.phase);
     logmsg("Assert failed: ", file , ":", line, " in ", func, ":", expr);
 
     uint32_t *p = (uint32_t*)((uint32_t)&dummy & ~3);

+ 8 - 0
lib/ZuluSCSI_platform_RP2040/ZuluSCSI_platform.cpp

@@ -324,6 +324,8 @@ void mbed_error_hook(const mbed_error_ctx * error_context)
     logmsg("error_status: ", (uint32_t)error_context->error_status);
     logmsg("error_address: ", error_context->error_address);
     logmsg("error_value: ", error_context->error_value);
+    logmsg("scsiDev.cdb: ", bytearray(scsiDev.cdb, 12));
+    logmsg("scsiDev.phase: ", (int)scsiDev.phase);
 
     uint32_t *p = (uint32_t*)((uint32_t)error_context->thread_current_sp & ~3);
     for (int i = 0; i < 8; i++)
@@ -420,7 +422,11 @@ static void watchdog_callback(unsigned alarm_num)
         {
             logmsg("--------------");
             logmsg("WATCHDOG TIMEOUT, attempting bus reset");
+            logmsg("Platform: ", g_platform_name);
+            logmsg("FW Version: ", g_log_firmwareversion);
             logmsg("GPIO states: out ", sio_hw->gpio_out, " oe ", sio_hw->gpio_oe, " in ", sio_hw->gpio_in);
+            logmsg("scsiDev.cdb: ", bytearray(scsiDev.cdb, 12));
+            logmsg("scsiDev.phase: ", (int)scsiDev.phase);
 
             uint32_t *p = (uint32_t*)__get_PSP();
             for (int i = 0; i < 8; i++)
@@ -442,6 +448,8 @@ static void watchdog_callback(unsigned alarm_num)
             logmsg("Platform: ", g_platform_name);
             logmsg("FW Version: ", g_log_firmwareversion);
             logmsg("GPIO states: out ", sio_hw->gpio_out, " oe ", sio_hw->gpio_oe, " in ", sio_hw->gpio_in);
+            logmsg("scsiDev.cdb: ", bytearray(scsiDev.cdb, 12));
+            logmsg("scsiDev.phase: ", (int)scsiDev.phase);
 
             uint32_t *p = (uint32_t*)__get_PSP();
             for (int i = 0; i < 8; i++)