优化开机logo显示时间,把用时较长的mount 分区延后执行。
authorSnickerSun <snickersun@163.com>
Sat, 23 Mar 2024 09:07:26 +0000 (17:07 +0800)
committerSnickerSun <snickersun@163.com>
Sat, 23 Mar 2024 09:07:26 +0000 (17:07 +0800)
code/sdk/application/wearable/ohos_startup/ohosfwk_startup.c
code/sdk/bootloader/flashboot/brandy/nandflash/include/nandflash_config.h
code/sdk/drivers/drivers/driver/nand_flash/nand/nandflash_config.c

index f0324fa..20b474e 100755 (executable)
@@ -54,10 +54,19 @@ void ohos_startup()
 #ifdef SUPPORT_POWER_MANAGER
     const power_display_svr_api_t *display_api = power_display_svr_get_api();
     display_api->turn_on_screen();
-    display_api->set_screen_set_keepon_timeout(5000);
+    display_api->set_screen_set_keepon_timeout(50000);
 #endif
+
+    
 #ifdef ENABLE_UIKIT
     ShowGraphicLogo();
+#endif
+    //为了加速启动,把最耗时的mount分区放到显示log之后
+    mount_user_res_partition();
+#ifdef SUPPORT_POWER_MANAGER
+    // const power_display_svr_api_t *display_api = power_display_svr_get_api();
+    // display_api->turn_on_screen();
+    display_api->set_screen_set_keepon_timeout(5000);
 #endif
     OHOS_SystemInit();
 }
index 13cc006..e902c38 100755 (executable)
@@ -46,6 +46,8 @@ struct nand_driver_struct *get_nand_flash(void);
 int nandflash_filesystem_init(void);\r
 void nandflash_qspi_init(void);\r
 void nandflash_qspi_resume(void);\r
+\r
+int mount_user_res_partition(void);\r
 void test_nand_flash_read_8(struct nand_driver_struct  *test_nand_flash_driver, uint32_t nand_page);\r
 void test_nand_flash_write_width8(struct nand_driver_struct *test_nand_flash_driver, uint32_t nand_page);\r
 #endif /* End of #ifndef MC_NAND_CONFIG_H */\r
index f90763d..4f674c5 100755 (executable)
@@ -61,7 +61,26 @@ struct nand_driver_struct *get_nand_flash(void)
     return &g_ds35x1g_driver;
 }
 
-static int formate_filesystem(uint32_t total_block_num)
+static int mount_partition_by_index(uint32_t index)
+{
+    int ret;
+    char dev_name[64] = { 0 };
+    ret = sprintf_s(dev_name, sizeof(dev_name), "/dev/nandblk%d", index);
+    if (ret <= 0) {
+        PRINT("formate dev %d name fail \r\n", index);
+        return -EIO;
+    }
+    ret = mount(dev_name, g_volume_names[index], "yaffs", 0, NULL);
+    if (ret != 0) {
+        return ret;
+    }
+    ret = yaffs_sync(g_volume_names[index]);
+    if (ret != 0) {
+        PRINT("[%d] yaffs_sync fail, ret = %d", index, ret);
+    }
+    return ret;
+}
+static int formate_filesystem_init(uint32_t total_block_num)
 {
     int ret;
     uint32_t index;
@@ -89,19 +108,13 @@ static int formate_filesystem(uint32_t total_block_num)
             return -EIO;
         }
 
-        ret = mount(dev_name, g_volume_names[index], "yaffs", 0, NULL);
         PRINT("formate filesystem devinfo: index = %d , dev_name = %s, folder_name = %s, \
               part_start_sector = %d, part_count_sector = %d\r\n", index, dev_name,
               g_volume_names[index], part_start_sector, part_count_sector);
-        if (ret != 0) {
-            return ret;
-        }
+        
         part_start_sector += part_count_sector;
 
-        ret = yaffs_sync(g_volume_names[index]);
-        if (ret != 0) {
-            PRINT("[%d] yaffs_sync fail, ret = %d", index, ret);
-        }
+        
     }
     return ret;
 }
@@ -224,12 +237,22 @@ int nandflash_filesystem_init(void)
         PRINT("get_mtd_info faild!\n");
     }
     PRINT("yaffs filesystem init start!\n");
-    int ret = formate_filesystem(freertos_nandflash_driver->total_block);
+    int ret = formate_filesystem_init(freertos_nandflash_driver->total_block);
+
+
+    mount_partition_by_index(0);
+    mount_partition_by_index(1);
+    mount_partition_by_index(2);
+
     PRINT("yaffs filesystem init end!\n");
     has_nandflash_init = 1;
     return ret;
 }
 
+int mount_user_res_partition(void)
+{
+   return  mount_partition_by_index(3);
+}
 void nandflash_qspi_resume(void)
 {
     nand_driver_init(SPEED_HIGH);