Bladeren bron

Correct BS2 Platform

Alex Perez 2 jaren geleden
bovenliggende
commit
09a59c5ff8

+ 59 - 59
lib/ZuluSCSI_platform_BS2/ZuluSCSI_platform.cpp

@@ -18,7 +18,7 @@ extern "C" {
 #include <hardware/flash.h>
 #include "rp2040_flash_do_cmd.h"
 
-const char *g_azplatform_name = PLATFORM_NAME;
+const char *g_platform_name = PLATFORM_NAME;
 static bool g_scsi_initiator = false;
 static uint32_t g_flash_chip_size = 0;
 static bool g_uart_initialized = false;
@@ -43,7 +43,7 @@ static void gpio_conf(uint gpio, enum gpio_function fn, bool pullup, bool pulldo
     }
 }
 
-void azplatform_init()
+void platform_init()
 {
     // Make sure second core is stopped
     multicore_reset_core1();
@@ -66,19 +66,19 @@ void azplatform_init()
     g_uart_initialized = true;
     mbed_set_error_hook(mbed_error_hook);
 
-    azlog("Platform: ", g_azplatform_name);
-    azlog("FW Version: ", g_azlog_firmwareversion);
+    log("Platform: ", g_platform_name);
+    log("FW Version: ", g_log_firmwareversion);
 
-    g_azlog_debug = false;
+    g_log_debug = false;
     
-    azlog("SCSI termination is handled by a hardware jumper");
+    log("SCSI termination is handled by a hardware jumper");
 
     // Get flash chip size
     uint8_t cmd_read_jedec_id[4] = {0x9f, 0, 0, 0};
     uint8_t response_jedec[4] = {0};
     flash_do_cmd(cmd_read_jedec_id, response_jedec, 4);
     g_flash_chip_size = (1 << response_jedec[3]);
-    azlog("Flash chip size: ", (int)(g_flash_chip_size / 1024), " kB");
+    log("Flash chip size: ", (int)(g_flash_chip_size / 1024), " kB");
 
     // SD card pins
     // Card is used in SDIO mode for main program, and in SPI mode for crash handler & bootloader.
@@ -96,11 +96,11 @@ void azplatform_init()
 }
 
 // late_init() only runs in main application, SCSI not needed in bootloader
-void azplatform_late_init()
+void platform_late_init()
 {
 
     g_scsi_initiator = false;
-    azlog("SCSI target/disk mode, acting as a SCSI disk");
+    log("SCSI target/disk mode, acting as a SCSI disk");
 
     /* Initialize SCSI pins to required modes.
      * SCSI pins should be inactive / input at this point.
@@ -150,16 +150,16 @@ void azplatform_late_init()
     gpio_conf(SCSI_IN_RST,    GPIO_FUNC_SIO, true, false, false, true, false);
 }
 
-bool azplatform_is_initiator_mode_enabled()
+bool platform_is_initiator_mode_enabled()
 {
     return g_scsi_initiator;
 }
 
-void azplatform_disable_led(void)
+void platform_disable_led(void)
 {   
     //        pin      function       pup   pdown  out    state fast
     gpio_conf(LED_PIN, GPIO_FUNC_SIO, false,false, false, false, false);
-    azlog("Disabling status LED");
+    log("Disabling status LED");
 }
 
 /*****************************************/
@@ -169,9 +169,9 @@ void azplatform_disable_led(void)
 extern SdFs SD;
 extern uint32_t __StackTop;
 
-void azplatform_emergency_log_save()
+void platform_emergency_log_save()
 {
-    azplatform_set_sd_callback(NULL, NULL);
+    platform_set_sd_callback(NULL, NULL);
 
     SD.begin(SD_CONFIG_CRASH);
     FsFile crashfile = SD.open(CRASHFILE, O_WRONLY | O_CREAT | O_TRUNC);
@@ -186,32 +186,32 @@ void azplatform_emergency_log_save()
     }
 
     uint32_t startpos = 0;
-    crashfile.write(azlog_get_buffer(&startpos));
-    crashfile.write(azlog_get_buffer(&startpos));
+    crashfile.write(log_get_buffer(&startpos));
+    crashfile.write(log_get_buffer(&startpos));
     crashfile.flush();
     crashfile.close();
 }
 
 void mbed_error_hook(const mbed_error_ctx * error_context)
 {
-    azlog("--------------");
-    azlog("CRASH!");
-    azlog("Platform: ", g_azplatform_name);
-    azlog("FW Version: ", g_azlog_firmwareversion);
-    azlog("error_status: ", (uint32_t)error_context->error_status);
-    azlog("error_address: ", error_context->error_address);
-    azlog("error_value: ", error_context->error_value);
+    log("--------------");
+    log("CRASH!");
+    log("Platform: ", g_platform_name);
+    log("FW Version: ", g_log_firmwareversion);
+    log("error_status: ", (uint32_t)error_context->error_status);
+    log("error_address: ", error_context->error_address);
+    log("error_value: ", error_context->error_value);
 
     uint32_t *p = (uint32_t*)((uint32_t)error_context->thread_current_sp & ~3);
     for (int i = 0; i < 8; i++)
     {
         if (p == &__StackTop) break; // End of stack
 
-        azlog("STACK ", (uint32_t)p, ":    ", p[0], " ", p[1], " ", p[2], " ", p[3]);
+        log("STACK ", (uint32_t)p, ":    ", p[0], " ", p[1], " ", p[2], " ", p[3]);
         p += 4;
     }
 
-    azplatform_emergency_log_save();
+    platform_emergency_log_save();
 
     while (1)
     {
@@ -238,7 +238,7 @@ void mbed_error_hook(const mbed_error_ctx * error_context)
 /*****************************************/
 
 // This function is called for every log message.
-void azplatform_log(const char *s)
+voidplatform_log(const char *s)
 {
     if (g_uart_initialized)
     {
@@ -257,16 +257,16 @@ static void watchdog_callback(unsigned alarm_num)
     {
         if (!scsiDev.resetFlag)
         {
-            azlog("--------------");
-            azlog("WATCHDOG TIMEOUT, attempting bus reset");
-            azlog("GPIO states: out ", sio_hw->gpio_out, " oe ", sio_hw->gpio_oe, " in ", sio_hw->gpio_in);
+            log("--------------");
+            log("WATCHDOG TIMEOUT, attempting bus reset");
+            log("GPIO states: out ", sio_hw->gpio_out, " oe ", sio_hw->gpio_oe, " in ", sio_hw->gpio_in);
 
             uint32_t *p = (uint32_t*)__get_PSP();
             for (int i = 0; i < 8; i++)
             {
                 if (p == &__StackTop) break; // End of stack
 
-                azlog("STACK ", (uint32_t)p, ":    ", p[0], " ", p[1], " ", p[2], " ", p[3]);
+                log("STACK ", (uint32_t)p, ":    ", p[0], " ", p[1], " ", p[2], " ", p[3]);
                 p += 4;
             }
 
@@ -275,24 +275,24 @@ static void watchdog_callback(unsigned alarm_num)
 
         if (g_watchdog_timeout <= 0)
         {
-            azlog("--------------");
-            azlog("WATCHDOG TIMEOUT!");
-            azlog("Platform: ", g_azplatform_name);
-            azlog("FW Version: ", g_azlog_firmwareversion);
-            azlog("GPIO states: out ", sio_hw->gpio_out, " oe ", sio_hw->gpio_oe, " in ", sio_hw->gpio_in);
+            log("--------------");
+            log("WATCHDOG TIMEOUT!");
+            log("Platform: ", g_platform_name);
+            log("FW Version: ", g_log_firmwareversion);
+            log("GPIO states: out ", sio_hw->gpio_out, " oe ", sio_hw->gpio_oe, " in ", sio_hw->gpio_in);
 
             uint32_t *p = (uint32_t*)__get_PSP();
             for (int i = 0; i < 8; i++)
             {
                 if (p == &__StackTop) break; // End of stack
 
-                azlog("STACK ", (uint32_t)p, ":    ", p[0], " ", p[1], " ", p[2], " ", p[3]);
+                log("STACK ", (uint32_t)p, ":    ", p[0], " ", p[1], " ", p[2], " ", p[3]);
                 p += 4;
             }
 
-            azplatform_emergency_log_save();
+            platform_emergency_log_save();
 
-            azplatform_boot_to_main_firmware();
+            platform_boot_to_main_firmware();
         }
     }
 
@@ -301,7 +301,7 @@ static void watchdog_callback(unsigned alarm_num)
 
 // This function can be used to periodically reset watchdog timer for crash handling.
 // It can also be left empty if the platform does not use a watchdog timer.
-void azplatform_reset_watchdog()
+void platform_reset_watchdog()
 {
     g_watchdog_timeout = WATCHDOG_CRASH_TIMEOUT;
 
@@ -318,26 +318,26 @@ void azplatform_reset_watchdog()
 /* Flash reprogramming from bootloader   */
 /*****************************************/
 
-#ifdef AZPLATFORM_BOOTLOADER_SIZE
+#ifdef PLATFORM_BOOTLOADER_SIZE
 
 extern uint32_t __real_vectors_start;
 extern uint32_t __StackTop;
 static volatile void *g_bootloader_exit_req;
 
-bool azplatform_rewrite_flash_page(uint32_t offset, uint8_t buffer[AZPLATFORM_FLASH_PAGE_SIZE])
+bool platform_rewrite_flash_page(uint32_t offset, uint8_t buffer[PLATFORM_FLASH_PAGE_SIZE])
 {
-    if (offset == AZPLATFORM_BOOTLOADER_SIZE)
+    if (offset == PLATFORM_BOOTLOADER_SIZE)
     {
         if (buffer[3] != 0x20 || buffer[7] != 0x10)
         {
-            azlog("Invalid firmware file, starts with: ", bytearray(buffer, 16));
+            log("Invalid firmware file, starts with: ", bytearray(buffer, 16));
             return false;
         }
     }
 
-    azdbg("Writing flash at offset ", offset, " data ", bytearray(buffer, 4));
-    assert(offset % AZPLATFORM_FLASH_PAGE_SIZE == 0);
-    assert(offset >= AZPLATFORM_BOOTLOADER_SIZE);
+    dbg("Writing flash at offset ", offset, " data ", bytearray(buffer, 4));
+    assert(offset % PLATFORM_FLASH_PAGE_SIZE == 0);
+    assert(offset >= PLATFORM_BOOTLOADER_SIZE);
 
     // Avoid any mbed timer interrupts triggering during the flashing.
     __disable_irq();
@@ -350,11 +350,11 @@ bool azplatform_rewrite_flash_page(uint32_t offset, uint8_t buffer[AZPLATFORM_FL
     // flashing, and again after reset to main firmware.
     xip_ctrl_hw->ctrl = 0;
 
-    flash_range_erase(offset, AZPLATFORM_FLASH_PAGE_SIZE);
-    flash_range_program(offset, buffer, AZPLATFORM_FLASH_PAGE_SIZE);
+    flash_range_erase(offset, PLATFORM_FLASH_PAGE_SIZE);
+    flash_range_program(offset, buffer, PLATFORM_FLASH_PAGE_SIZE);
 
     uint32_t *buf32 = (uint32_t*)buffer;
-    uint32_t num_words = AZPLATFORM_FLASH_PAGE_SIZE / 4;
+    uint32_t num_words = PLATFORM_FLASH_PAGE_SIZE / 4;
     for (int i = 0; i < num_words; i++)
     {
         uint32_t expected = buf32[i];
@@ -362,7 +362,7 @@ bool azplatform_rewrite_flash_page(uint32_t offset, uint8_t buffer[AZPLATFORM_FL
 
         if (actual != expected)
         {
-            azlog("Flash verify failed at offset ", offset + i * 4, " got ", actual, " expected ", expected);
+            log("Flash verify failed at offset ", offset + i * 4, " got ", actual, " expected ", expected);
             return false;
         }
     }
@@ -372,7 +372,7 @@ bool azplatform_rewrite_flash_page(uint32_t offset, uint8_t buffer[AZPLATFORM_FL
     return true;
 }
 
-void azplatform_boot_to_main_firmware()
+void platform_boot_to_main_firmware()
 {
     // To ensure that the system state is reset properly, we perform
     // a SYSRESETREQ and jump straight from the reset vector to main application.
@@ -387,7 +387,7 @@ void btldr_reset_handler()
     if (g_bootloader_exit_req == &g_bootloader_exit_req)
     {
         // Boot to main application
-        application_base = (uint32_t*)(XIP_BASE + AZPLATFORM_BOOTLOADER_SIZE);
+        application_base = (uint32_t*)(XIP_BASE + PLATFORM_BOOTLOADER_SIZE);
     }
 
     SCB->VTOR = (uint32_t)application_base;
@@ -413,7 +413,7 @@ const void * btldr_vectors[2] = {&__StackTop, (void*)&btldr_reset_handler};
 // Reserve up to 352 kB for firmware.
 #define ROMDRIVE_OFFSET (352 * 1024)
 
-uint32_t azplatform_get_romdrive_maxsize()
+uint32_t platform_get_romdrive_maxsize()
 {
     if (g_flash_chip_size >= ROMDRIVE_OFFSET)
     {
@@ -426,7 +426,7 @@ uint32_t azplatform_get_romdrive_maxsize()
     }
 }
 
-bool azplatform_read_romdrive(uint8_t *dest, uint32_t start, uint32_t count)
+bool platform_read_romdrive(uint8_t *dest, uint32_t start, uint32_t count)
 {
     xip_ctrl_hw->stream_ctr = 0;
 
@@ -439,7 +439,7 @@ bool azplatform_read_romdrive(uint8_t *dest, uint32_t start, uint32_t count)
     xip_ctrl_hw->stream_ctr = count / 4;
 
     // Transfer happens in multiples of 4 bytes
-    assert(start < azplatform_get_romdrive_maxsize());
+    assert(start < platform_get_romdrive_maxsize());
     assert((count & 3) == 0);
     assert((((uint32_t)dest) & 3) == 0);
 
@@ -457,10 +457,10 @@ bool azplatform_read_romdrive(uint8_t *dest, uint32_t start, uint32_t count)
     return true;
 }
 
-bool azplatform_write_romdrive(const uint8_t *data, uint32_t start, uint32_t count)
+bool platform_write_romdrive(const uint8_t *data, uint32_t start, uint32_t count)
 {
-    assert(start < azplatform_get_romdrive_maxsize());
-    assert((count % AZPLATFORM_ROMDRIVE_PAGE_SIZE) == 0);
+    assert(start < platform_get_romdrive_maxsize());
+    assert((count % PLATFORM_ROMDRIVE_PAGE_SIZE) == 0);
 
     __disable_irq();
     flash_range_erase(start + ROMDRIVE_OFFSET, count);
@@ -577,7 +577,7 @@ public:
         for (int i = 0; i < size; i++)
         {
             char buf[2] = {((const char*)buffer)[i], 0};
-            azlog_raw(buf);
+            log_raw(buf);
         }
         return size;
     }

+ 18 - 18
lib/ZuluSCSI_platform_BS2/ZuluSCSI_platform.h

@@ -11,7 +11,7 @@ extern "C" {
 #endif
 
 /* These are used in debug output and default SCSI strings */
-extern const char *g_azplatform_name;
+extern const char *g_platform_name;
 #define PLATFORM_NAME "ZuluSCSI BS2"
 #define PLATFORM_REVISION "3.0"
 #define PLATFORM_MAX_SCSI_SPEED S2S_CFG_SPEED_SYNC_10
@@ -27,8 +27,8 @@ extern const char *g_azplatform_name;
 
 // Debug logging function, can be used to print to e.g. serial port.
 // May get called from interrupt handlers.
-void azplatform_log(const char *s);
-void azplatform_emergency_log_save();
+void platform_log(const char *s);
+void platform_emergency_log_save();
 
 // Timing and delay functions.
 // Arduino platform already provides these
@@ -48,46 +48,46 @@ static inline void delay_100ns()
 }
 
 // Initialize SD card and GPIO configuration
-void azplatform_init();
+void platform_init();
 
 // Initialization for main application, not used for bootloader
-void azplatform_late_init();
+void platform_late_init();
 
 // Disable the status LED
-void azplatform_disable_led(void);
+void platform_disable_led(void);
 
 // Query whether initiator mode is enabled on targets with PLATFORM_HAS_INITIATOR_MODE
-bool azplatform_is_initiator_mode_enabled();
+bool platform_is_initiator_mode_enabled();
 
 // Setup soft watchdog if supported
-void azplatform_reset_watchdog();
+void platform_reset_watchdog();
 
 // Set callback that will be called during data transfer to/from SD card.
 // This can be used to implement simultaneous transfer to SCSI bus.
 typedef void (*sd_callback_t)(uint32_t bytes_complete);
-void azplatform_set_sd_callback(sd_callback_t func, const uint8_t *buffer);
+void platform_set_sd_callback(sd_callback_t func, const uint8_t *buffer);
 
 // Reprogram firmware in main program area.
 #ifndef RP2040_DISABLE_BOOTLOADER
-#define AZPLATFORM_BOOTLOADER_SIZE (128 * 1024)
-#define AZPLATFORM_FLASH_TOTAL_SIZE (1024 * 1024)
-#define AZPLATFORM_FLASH_PAGE_SIZE 4096
-bool azplatform_rewrite_flash_page(uint32_t offset, uint8_t buffer[AZPLATFORM_FLASH_PAGE_SIZE]);
-void azplatform_boot_to_main_firmware();
+#define platform_BOOTLOADER_SIZE (128 * 1024)
+#define platform_FLASH_TOTAL_SIZE (1024 * 1024)
+#define platform_FLASH_PAGE_SIZE 4096
+bool platform_rewrite_flash_page(uint32_t offset, uint8_t buffer[platform_FLASH_PAGE_SIZE]);
+void platform_boot_to_main_firmware();
 #endif
 
 // ROM drive in the unused external flash area
 #ifndef RP2040_DISABLE_ROMDRIVE
 #define PLATFORM_HAS_ROM_DRIVE 1
 // Check maximum available space for ROM drive in bytes
-uint32_t azplatform_get_romdrive_maxsize();
+uint32_t platform_get_romdrive_maxsize();
 
 // Read ROM drive area
-bool azplatform_read_romdrive(uint8_t *dest, uint32_t start, uint32_t count);
+bool platform_read_romdrive(uint8_t *dest, uint32_t start, uint32_t count);
 
 // Reprogram ROM drive area
-#define AZPLATFORM_ROMDRIVE_PAGE_SIZE 4096
-bool azplatform_write_romdrive(const uint8_t *data, uint32_t start, uint32_t count);
+#define platform_ROMDRIVE_PAGE_SIZE 4096
+bool platform_write_romdrive(const uint8_t *data, uint32_t start, uint32_t count);
 #endif
 
 // Parity lookup tables for write and read from SCSI bus.

+ 1 - 1
lib/ZuluSCSI_platform_BS2/sd_card_spi.cpp

@@ -75,7 +75,7 @@ void sdCsWrite(SdCsPin_t pin, bool level)
 RP2040SPIDriver g_sd_spi_port;
 SdSpiConfig g_sd_spi_config(0, DEDICATED_SPI, SD_SCK_MHZ(25), &g_sd_spi_port);
 
-void azplatform_set_sd_callback(sd_callback_t func, const uint8_t *buffer)
+void platform_set_sd_callback(sd_callback_t func, const uint8_t *buffer)
 {
 }