Merge #3400 into fd272 from refs/changes/3400/head 3401/target/1 3402/target/1
authoraliyun3243248791 <accounts_67aaf52ad497cd558d73ac32@mail.teambition.com>
Fri, 8 May 2026 04:11:36 +0000 (04:11 +0000)
committeraliyun3243248791 <accounts_67aaf52ad497cd558d73ac32@mail.teambition.com>
Fri, 8 May 2026 04:11:36 +0000 (04:11 +0000)
时间重置问题修改

* refs/changes/3400/head: (1 commits squashed)

  - 时间重置问题修改

Signed-off-by: 薛文强 <accounts_67aaf52ad497cd558d73ac32@mail.teambition.com>
Merged-by: 薛文强 <accounts_67aaf52ad497cd558d73ac32@mail.teambition.com>
link: https://codeup.aliyun.com/64191456b9581d62e8f81ac0/FD230/change/3400
code/sdk/bootloader/flashboot/brandy/boot_ulp/boot_ulp.c
code/sdk/drivers/chips/brandy/porting/button/button_porting.c

index 7e454b7..feb7788 100644 (file)
@@ -28,7 +28,7 @@ static uint32_t g_clock_ulp_ssb = 3276800;
 \r
 calendar_regs_t *g_calendar_reg = SSB_CALENDAR_BASE_ADDR;\r
 \r
-#if 0\r
+#if 1\r
     static uint64_t uapi_ulp_systick_get_count(void)\r
     {\r
         uint64_t count = 0;\r
@@ -59,6 +59,8 @@ calendar_regs_t *g_calendar_reg = SSB_CALENDAR_BASE_ADDR;
         count |= (uint64_t)readw(ULP_SYSTICK_VAL1) << 16U;\r
         count |= (uint64_t)readw(ULP_SYSTICK_VAL0);\r
         writew(ULP_LOCK_REG, 0x0);\r
+        PRINT("[ULP_SYSTICK] uapi_ulp_systick_get_count: count=0x%016llx dec=%llu\r\n",\r
+            (unsigned long long)count, (unsigned long long)count);\r
         osal_irq_restore(irq_sts);\r
         return count;\r
     }\r
index 98f2ae4..bdfb32f 100644 (file)
@@ -74,27 +74,25 @@ errcode_t uapi_power_set_mode(power_mode_t pdmode)
 \r
 uint64_t uapi_ulp_systick_get_count(void)\r
 {\r
+    #define ULP_SYSTICK_GET_DELAY_US 60UL\r
     uint64_t count = 0;\r
-    static uint64_t s_last_count = 0;\r
-    uint16_t v0 = readw(ULP_SYSTICK_VAL0);\r
-    uint16_t v1 = readw(ULP_SYSTICK_VAL1);\r
-    uint16_t v2 = readw(ULP_SYSTICK_VAL2);\r
-    uint16_t v3 = readw(ULP_SYSTICK_VAL3);\r
-\r
-    count = ((uint64_t)v3 << 48U) |\r
-            ((uint64_t)v2 << 32U) |\r
-            ((uint64_t)v1 << 16U) |\r
-            ((uint64_t)v0);\r
-\r
-    PRINT("[ULP_CNT][drv ] v3=0x%04x v2=0x%04x v1=0x%04x v0=0x%04x count=0x%016llx (%llu)\r\n",\r
-        v3, v2, v1, v0, (unsigned long long)count, (unsigned long long)count);\r
-\r
-    if (s_last_count != 0 && count < s_last_count) {\r
-        PRINT("[ULP_CNT][WARN][drv ] rollback! last=0x%016llx now=0x%016llx\r\n",\r
-            (unsigned long long)s_last_count, (unsigned long long)count);\r
-    }\r
-    s_last_count = count;\r
-\r
+    unsigned int irq_sts = osal_irq_lock();\r
+    \r
+    uint64_t before = readw(0x5702c510);\r
+    before = before | 0x01;\r
+    writew(0x5702c510,before); \r
+    // writew(ULP_LOCK_REG, 0x1);\r
+\r
+    uapi_tcxo_delay_us(ULP_SYSTICK_GET_DELAY_US);\r
+\r
+    count = (uint64_t)readw(ULP_SYSTICK_VAL3) << 48U;\r
+    count |= (uint64_t)readw(ULP_SYSTICK_VAL2) << 32U;\r
+    count |= (uint64_t)readw(ULP_SYSTICK_VAL1) << 16U;\r
+    count |= (uint64_t)readw(ULP_SYSTICK_VAL0);\r
+    writew(0x5702c510, 0x0);\r
+    PRINT("[ULP_SYSTICK] uapi_ulp_systick_get_count: count=0x%016llx dec=%llu\r\n",\r
+        (unsigned long long)count, (unsigned long long)count);\r
+    osal_irq_restore(irq_sts);\r
     return count;\r
 }\r
 \r