增加272 nand驱动,去除4G代码
authorpenglei <1624952103@qq.com>
Sun, 2 Nov 2025 03:39:43 +0000 (11:39 +0800)
committerpenglei <1624952103@qq.com>
Sun, 2 Nov 2025 03:39:43 +0000 (11:39 +0800)
31 files changed:
code/sdk/application/wearable/fd272/nativeapp/nativeui/main/src/PullUpDownView.cpp
code/sdk/application/wearable/fd272/nativeapp/nativeui/makephone/src/MainCallingPresenter.cpp
code/sdk/application/wearable/fd272/nativeapp/nativeui/phone/src/DialingMethodPresenter.cpp
code/sdk/application/wearable/fd272/nativeapp/nativeui/phone/src/PhoneCallPresenter.cpp
code/sdk/application/wearable/fd272/nativeapp/nativeui/phoneservice/src/PhoneAGService.cpp
code/sdk/application/wearable/fd272/service/msg_center/src/msg_center_customer.cpp
code/sdk/application/wearable/fd272/service/msg_center/src/notify/debug_output_notification/debug_output_notification.cpp
code/sdk/application/wearable/fd272/service/msg_center/src/notify/phone_crt.cpp
code/sdk/application/wearable/ln/nativeapp/nativeui/ota/src/OtaModel.cpp
code/sdk/bootloader/flashboot/brandy/main.c
code/sdk/bootloader/flashboot/brandy/nandflash/CMakeLists.txt
code/sdk/bootloader/flashboot/brandy/nandflash/include/nandflash_xt26q01d.h [new file with mode: 0644]
code/sdk/bootloader/flashboot/brandy/nandflash/nandflash_config.c
code/sdk/bootloader/flashboot/brandy/nandflash/nandflash_xt26q01d.c [new file with mode: 0644]
code/sdk/build/config/target_config/brandy/config.py
code/sdk/drivers/boards/brandy_evb/board_config/board_fd272.h [new file with mode: 0644]
code/sdk/drivers/boards/brandy_evb/product/product_evb4_standard.h
code/sdk/drivers/chips/brandy/porting/pinctrl/pinctrl_porting_brandy.c
code/sdk/drivers/drivers/driver/nand_flash/CMakeLists.txt
code/sdk/drivers/drivers/driver/nand_flash/nand/include/nandflash_xt26q01d.h [new file with mode: 0644]
code/sdk/drivers/drivers/driver/nand_flash/nand/nandflash_config.c
code/sdk/drivers/drivers/driver/nand_flash/nand/nandflash_xt26q01d.c [new file with mode: 0644]
code/sdk/zhihui/UI/producttest/src/testPresenter.cpp
code/sdk/zhihui/UI/producttest/src/testQRCode.cpp
code/sdk/zhihui/services/battery/service/battery_service.cpp
code/sdk/zhihui/services/factorytest_service/factorytest_protocol.c
code/sdk/zhihui/utils/custom_fileoperate_service.c
code/sdk/zhihui/utils/custom_runtime.c
code/sdk/zhihui/utils/custom_runtime.h
code/sdk/zhihui/utils/custom_utils.c
code/sdk/zhihui/utils/custom_utils_at_cmd.c

index a9af217..f23f704 100644 (file)
@@ -1,8 +1,8 @@
 /*
  * @Author: luozheng 1732036298@qq.com
  * @Date: 2024-06-26 18:14:24
- * @LastEditors: luozheng 1732036298@qq.com
- * @LastEditTime: 2025-02-06 09:59:53
+ * @LastEditors: penglei 1624952103@qq.com
+ * @LastEditTime: 2025-10-31 21:25:27
  * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/main/src/PullUpDownView.cpp
  */
 
@@ -593,7 +593,12 @@ namespace OHOS
     int PullUpDownView::GetSignalStrength(void)
     {
         WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "PullUpDownView::GetSignalStrength");
-        int SignalStrength = uapi_dev_runtime_get_cat1_signal(); // 信号强度
+        
+        int SignalStrength = 0;
+        #ifdef SUPPORT_CAT1_SERVICE
+        SignalStrength = uapi_dev_runtime_get_cat1_signal(); // 信号强度
+        #endif
+        
         return CalculateSignalBars(SignalStrength);
     }
 
@@ -640,6 +645,7 @@ namespace OHOS
     // 函数用于更新信号显示的UI
     void PullUpDownView::updateSignalDisplay()
     {
+        #ifdef SUPPORT_CAT1_SERVICE
         int sim = uapi_dev_runtime_get_cat1_simstat();
         int cat1_powerOn = uapi_dev_runtime_get_cat1_powerstat();
         int signal = uapi_dev_runtime_get_cat1_signal();
@@ -721,6 +727,7 @@ namespace OHOS
         {
             DropDownCardPage1::GetInstance()->Refresh4GState();
         }
+        #endif
     }
     // 更新信号强度显示
     void PullUpDownView::UpdateSignalBarDisplay(int signalBars, bool state)
index 9a4ca9f..654e5d4 100644 (file)
@@ -191,6 +191,7 @@ bool MainCallingPresenter::HintsHandupClick()
 
 bool MainCallingPresenter::OnClick(UIView& view, const ClickEvent& event)
 {
+#ifdef SUPPORT_CAT1_SERVICE
     UNUSED(event);
      WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "%s",view.GetViewId());
     if (!InitPointerValue()) {
@@ -442,7 +443,7 @@ bool MainCallingPresenter::OnClick(UIView& view, const ClickEvent& event)
        NativeAbility::GetInstance().EnterSlice(VIEW_BLUETOOTH_EARPHONE);
     }
 
-// #endif
+#endif
     return true;
 }
 
index 5a26a48..a20992c 100644 (file)
@@ -57,7 +57,7 @@ namespace OHOS
         if (curViewId == USINGWATCHSIMBUTTON_VIEWID)
         {
             TelephonyInitInterface::DIALINGMETHOD = DIALINGMETHOD_USINGWATCHSIM; // 手表SIM卡拨号
-
+            #ifdef SUPPORT_CAT1_SERVICE
             if(get_address_number())
             {
                 // if(uapi_cat1_get_power_stat()==0 || 
@@ -84,7 +84,7 @@ namespace OHOS
                 }
               
             }
-            
+            #endif
         }
         else if (curViewId == USINGPHONEBUTTON_VIEWID)
         {
index 7426a10..3f7d003 100644 (file)
@@ -140,8 +140,10 @@ namespace OHOS
 \r
             if(TelephonyInitInterface::DIALINGMETHOD == DIALINGMETHOD_USINGWATCHSIM)\r
             {\r
+            #ifdef SUPPORT_CAT1_SERVICE\r
                 WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "DIALINGMETHOD_USINGWATCHSIM");\r
                 cat1_UI_call_dial((char *)phoneNumber.c_str());\r
+            #endif\r
 \r
             }\r
             else if(TelephonyInitInterface::DIALINGMETHOD == DIALINGMETHOD_USINGPHONE)\r
index 389b929..395d418 100644 (file)
@@ -101,7 +101,9 @@ static void sample_hfp_ag_conn_state_changed_callback(const bd_addr_t *bd_addr,
 
 void cat1_start_SCO_audio_(void)
 {
+#ifdef SUPPORT_CAT1_SERVICE
     cat1_cat1_start_SCO_volte_voice();
+#endif
 }
 
 
index a1a56e2..fbda45d 100644 (file)
@@ -97,7 +97,9 @@
  #include "cywee_service.h"
  #endif
  
+ #ifdef SUPPORT_CAT1_SERVICE
  #include "cat1_pub_api.h"
+ #endif
  #include "uiservice/include/ui_service.h"
  
  #include "goal_notification.h"
          return;
      }
      
+    #ifdef SUPPORT_CAT1_SERVICE
      cat1_cmd_send(CMD_4G_MAKE_CALL,call_data,strlen(call_data));
- 
+    #endif
      CallerLogModel::GetInstance()->SetoperateNumber(call_data,req->len);
+
+    #ifdef SUPPORT_CAT1_SERVICE
      cat1_phone_state_change_cb(OPERATE_DIALING);
- 
+    #endif
+    
      #ifdef SUPPORT_CAT1_HFP_AG_SERV
      if(uapi_dev_runtime_get_earphone_connect_stat())
      {
index 6185732..476361f 100644 (file)
@@ -274,6 +274,7 @@ namespace OHOS
 
     std::string DebugOutputViewEventListener::get_cat1_runtime_status_t(void)
     {
+        #ifdef SUPPORT_CAT1_SERVICE
         WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "DebugOutputViewEventListener::get_cat1_runtime_status_t");
         std::string cat1_powerOn = std::to_string(uapi_dev_runtime_get_cat1_powerstat());
         std::string volte;
@@ -285,8 +286,9 @@ namespace OHOS
         std::string pyVer = uapi_dev_runtime_get_cat1_pyver();
         std::string modemVer = uapi_dev_runtime_get_cat1_modemver();
         std::string result = "cat1_powerOn:" + cat1_powerOn + " " + "volte: " + "network_on:" + network_on + " " + "cat1_network_type:" + cat1_network_type + " " + "sim:" + sim + " " + "signal:" + signal + " " + "opera:" + opera + " " + "pyVer:" + pyVer + " " + "modemVer:" + modemVer + " ";
-
         return result;
+        #endif
+        return NULL;
     }
 
     std::string DebugOutputViewEventListener::get_runtime_status_t()
index ada010a..ce93cf5 100644 (file)
 #include "cat1_server.h"
 #include "cat1_ctl.h"
 #include "cat1_porting.h"
+#include "cat1_UI_hal.h"
 #endif
 #include "custom_runtime.h"
 
-#include "cat1_UI_hal.h"
+
 #include "custom_utils.h"
 #include "phone/include/phoneaddressmodel.h"
 #include "components/ui_label_button.h"
@@ -70,13 +71,12 @@ uint8_t get_falg_SOS(void)
 //结束通话运行
 void sos_falg_add(void)
 {
+    #ifdef SUPPORT_CAT1_SERVICE
     if(sos_dail_falg)
     {
         if(OHOS::get_sos_number_count()<=0)
         {
-#ifdef SUPPORT_CAT1_SERVICE
             cat1_UI_call_dial("SOS");
-#endif
             return;
         }
 
@@ -87,9 +87,8 @@ void sos_falg_add(void)
         if( uapi_dev_runtime_get_cat1_simstat())
         #endif
         {
-#ifdef SUPPORT_CAT1_SERVICE
+
             cat1_UI_call_dial(OHOS:: get_sos_number(sos_dail_falg));
-#endif
         }
         #if SOS_HFP_FALG
         else if(uapi_hfp_connect_state())
@@ -99,9 +98,8 @@ void sos_falg_add(void)
         #endif
         else
         {
-#ifdef SUPPORT_CAT1_SERVICE
              cat1_UI_call_dial("SOS");
-#endif
+
         }
         sos_dail_falg++;
         if(sos_dail_falg>=OHOS::get_sos_number_count()*3)
@@ -109,6 +107,7 @@ void sos_falg_add(void)
             sos_dail_falg=0;
         }
     }
+    #endif
 }
 
 void sos_falg_clean(void)
@@ -118,11 +117,11 @@ void sos_falg_clean(void)
 
 void start_SOS_phone_dail(void)
 {
+    #ifdef SUPPORT_CAT1_SERVICE
     if(OHOS::get_sos_number_count()<=0)
     {
-#ifdef SUPPORT_CAT1_SERVICE
+
         cat1_UI_call_dial("SOS");
-#endif
         return;
     }
     #if SOS_TEST_FLAG
@@ -131,9 +130,7 @@ void start_SOS_phone_dail(void)
     if(uapi_dev_runtime_get_cat1_simstat())
     #endif
     {
-#ifdef SUPPORT_CAT1_SERVICE
         cat1_UI_call_dial(OHOS::get_sos_number(0));
-#endif
          sos_dail_falg=1;
     }
     #if SOS_HFP_FALG
@@ -145,12 +142,9 @@ void start_SOS_phone_dail(void)
     #endif
     else
     {
-#ifdef SUPPORT_CAT1_SERVICE
         cat1_UI_call_dial("SOS");
-#endif
     }
-    
-   
+   #endif 
 }
 
 
index 8a62942..fb58bf1 100644 (file)
@@ -134,8 +134,11 @@ namespace OHOS
     }
     bool OtaModel::HasNetwork() const
     {
+        int networkStatus = 0;
+#ifdef SUPPORT_CAT1_SERVICE
         // 检查网络连接状态
-        int networkStatus = uapi_dev_runtime_get_cat1_networkstat();
+        networkStatus = uapi_dev_runtime_get_cat1_networkstat();
+#endif
         return (networkStatus == 1);
     }
 
@@ -403,8 +406,11 @@ namespace OHOS
 
     int OtaModel::GetSignalStrength()
     {
-        
-        return  uapi_dev_runtime_get_cat1_signal(); 
+        int sig = 0;
+#ifdef SUPPORT_CAT1_SERVICE
+        sig = uapi_dev_runtime_get_cat1_signal()
+#endif
+        return sig; 
     }
 
     //下载成功通知
index 9d0b4a9..c6487c2 100644 (file)
@@ -786,6 +786,9 @@ static void fs_init(void)
 #ifdef BOARD_LEINIAO
     uapi_gpio_set_dir(S_AGPIO_L14,GPIO_DIRECTION_OUTPUT);
     uapi_gpio_set_val(S_AGPIO_L14,GPIO_LEVEL_HIGH);
+#elif defined BOARD_FD272
+    uapi_gpio_set_dir(S_AGPIO_L2,GPIO_DIRECTION_OUTPUT);
+    uapi_gpio_set_val(S_AGPIO_L2,GPIO_LEVEL_HIGH);
 #else
     uapi_gpio_set_dir(S_AGPIO_L18,GPIO_DIRECTION_OUTPUT);
     uapi_gpio_set_val(S_AGPIO_L18,GPIO_LEVEL_HIGH);
index b911ac5..9cba93c 100644 (file)
@@ -9,6 +9,7 @@ set(SOURCES
     ${CMAKE_CURRENT_SOURCE_DIR}/nandflash_f35uqa001g.c
     ${CMAKE_CURRENT_SOURCE_DIR}/nandflash_gd5f2gm7re.c
     ${CMAKE_CURRENT_SOURCE_DIR}/nandflash_xt26q02d.c
+    ${CMAKE_CURRENT_SOURCE_DIR}/nandflash_xt26q01d.c
     ${CMAKE_CURRENT_SOURCE_DIR}/nandflash_w25n01g.c
     ${CMAKE_CURRENT_SOURCE_DIR}/nandflash_config.c
     ${CMAKE_CURRENT_SOURCE_DIR}/hal_nandflash.c
diff --git a/code/sdk/bootloader/flashboot/brandy/nandflash/include/nandflash_xt26q01d.h b/code/sdk/bootloader/flashboot/brandy/nandflash/include/nandflash_xt26q01d.h
new file mode 100644 (file)
index 0000000..b29205f
--- /dev/null
@@ -0,0 +1,33 @@
+/*
+ * @Author: penglei 1624952103@qq.com
+ * @Date: 2025-09-04 10:28:47
+ * @LastEditors: penglei 1624952103@qq.com
+ * @LastEditTime: 2025-10-31 10:12:42
+ * @FilePath: /FD230/code/sdk/bootloader/flashboot/brandy/nandflash/include/nandflash_xt26q01d.h
+ * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
+ */
+/*
+ * Copyright (c) @CompanyNameMagicTag 2018-2020. All rights reserved.
+ * Description:  NON-OS NANDFLASH DRIVER
+ * Author: @CompanyNameTag
+ * Create:  2020-10-15
+ */
+
+#ifndef NANDFLASH_XT26Q01D_H
+#define NANDFLASH_XT26Q01D_H
+
+#define XT26Q01D_BYTES_PER_PAGE  2048
+#define XT26Q01D_BYTES_PER_OOB   64
+#define XT26Q01D_PAGES_PER_BLOCK 64
+#define XT26Q01D_TOTAL_BLOCKS    1024
+#define XT26Q01D_CHIP_ID         0x0B51
+#define XT26Q01D_OOB_TOTAL_LEN   4
+#define XT26Q01D_OOB_PER_SIZE    8
+#define XT26Q01D_OOB_1_OFFSET    0
+#define XT26Q01D_OOB_2_OFFSET    16
+#define XT26Q01D_OOB_3_OFFSET    32
+#define XT26Q01D_OOB_4_OFFSET    48
+
+extern struct nand_driver_struct g_xt26q01d_driver;
+
+#endif /* End of #ifndef MC_NAND_XT26Q01D_H */
index 64cfccd..1c99cd3 100644 (file)
@@ -18,6 +18,7 @@
 #include "nandflash_f35uqa001g.h"\r
 #include "nandflash_gd5f2gm7re.h"\r
 #include "nandflash_xt26q02d.h"\r
+#include "nandflash_xt26q01d.h"\r
 #include "nandflash_inner.h"\r
 #include "nandflash.h"\r
 #include "hal_nandflash.h"\r
@@ -41,6 +42,7 @@ static const nand_chip_mapping_t nand_chip_mappings[] = {
     {F35UQA001G_CHIP_ID, &g_f35uqa001g_driver, "F35UQA001G"},\r
     {GD5F2GM7RE_CHIP_ID, &g_gd5f2gm7re_driver, "GD5F2GM7RE"},\r
     {XT26Q02D_CHIP_ID,   &g_xt26q02d_driver,   "XT26Q02D"},\r
+    {XT26Q01D_CHIP_ID,   &g_xt26q01d_driver,   "XT26Q01D"},\r
 };\r
 \r
 #define NAND_CHIP_MAPPINGS_COUNT (sizeof(nand_chip_mappings) / sizeof(nand_chip_mappings[0]))\r
diff --git a/code/sdk/bootloader/flashboot/brandy/nandflash/nandflash_xt26q01d.c b/code/sdk/bootloader/flashboot/brandy/nandflash/nandflash_xt26q01d.c
new file mode 100644 (file)
index 0000000..bdfef5e
--- /dev/null
@@ -0,0 +1,111 @@
+/*
+ * Copyright (c) @CompanyNameMagicTag 2018-2020. All rights reserved.
+ * Description:  NON-OS NANDFLASH DRIVER
+ * Author: @CompanyNameTag
+ * Create:  2020-10-15
+ */
+
+#include <stdint.h>
+#include "debug_print.h"
+#include "nandflash_inner.h"
+#include "nandflash.h"
+#include "hal_nandflash.h"
+#include "nandflash_config.h"
+#include "nandflash_xt26q01d.h"
+
+#define XT26Q01D_GET_ECC_STATUS(x) ((0x30 & (x)) >> 4)
+#define XT26Q01D_ECC_CORRECTION 0x00
+#define XT26Q01D_ECC_1BIT_CORRET 0x01
+#define XT26Q01D_ECC_4BIT_CORRET 0x02
+#define XT26Q01D_ECC_ERROR 0x03
+#define NAND_ID_DATA_SIZE 0x2
+
+static qspi_data_type_def g_qspi_data = {0};
+
+static uint32_t mc_xt26q01d_read_page(
+    uint32_t nand_page, uint8_t *data, uint32_t data_len, uint8_t *oob, uint32_t oob_len, const uint32_t *ecc_result)
+{
+    uint32_t ret;
+    uint8_t status_reg;
+
+    UNUSED(ecc_result);
+    ret = mc_flash_read_page(nand_page, data, data_len, oob, oob_len, &status_reg);
+    if (get_nand_flash()->enable_ecc == true) {
+        if (XT26Q01D_GET_ECC_STATUS(status_reg) >= XT26Q01D_ECC_ERROR) {
+            return MC_FAILURE;
+        } else {
+            return MC_SUCCESS;
+        }
+    }
+    return ret;
+}
+
+static uint32_t mc_xt26q01d_init(void)
+{
+    nand_driver_init(SPEED_MID);
+    PRINT("xt26q01d_init \r\n");
+    uint32_t ret;
+    mc_flash_write_cmd(CMD_FLASH_RESET); /* tRST 5us,no command will be accepted */
+    mc_flash_busy_wait();
+    write_cmd(CMD_FLASH_WREN);
+    ret = mc_flash_write_sr(CMD_FLASH_SR1_ADDR, 0x0); /* set SR1 0,Clear block protect bits */
+    if (get_nand_flash()->enable_ecc == true) {
+        ret = mc_flash_write_sr(CMD_FLASH_SR2_ADDR, 0x11); /* set SR1 0,Clear block protect bits */
+    } else {
+        ret = mc_flash_write_sr(CMD_FLASH_SR2_ADDR, 0x01); /* set SR1 0,Clear block protect bits */
+    }
+    PRINT("nandflash mc_flash_write_sr ret %d \r\n", ret);
+    uint8_t status_reg;
+    mc_flash_read_sr(CMD_FLASH_SR1_ADDR, (uint8_t *)&status_reg);
+    PRINT("nandflash A0 Reg:0x%x \r\n", status_reg);
+    mc_flash_read_sr(CMD_FLASH_SR2_ADDR, (uint8_t *)&status_reg);
+    PRINT("nandflash B0 Reg:0x%x \r\n", status_reg);
+    mc_flash_read_sr(CMD_FLASH_SR3_ADDR, (uint8_t *)&status_reg);
+    PRINT("nandflash C0 Reg:0x%x \r\n", status_reg);
+    if (ret != MC_SUCCESS || status_reg != 0x2) {
+        return MC_FAILURE;
+    }
+    return MC_SUCCESS;
+}
+
+static uint16_t mc_xt26q01d_check_id(void)
+{
+    g_qspi_data.instruction = CMD_FLASH_ID;
+    g_qspi_data.address_mode = MC_OSPI_ADDRESS_NONE;
+    g_qspi_data.address = 0;
+    g_qspi_data.address_size = 0;
+    g_qspi_data.dummy_cycles = MC_OSPI_CYCLES_8_BITS;
+    g_qspi_data.data_mode = MC_OSPI_DATA_1_LINE;
+    g_qspi_data.data_size = NAND_ID_DATA_SIZE;
+    uint16_t nand_flash_id = read_id(&g_qspi_data);
+    PRINT("nandflash id 0x%04X \r\n",nand_flash_id);
+    return nand_flash_id;
+}
+
+struct nand_driver_struct g_xt26q01d_driver = {mc_xt26q01d_init,
+    mc_xt26q01d_check_id,
+    mc_xt26q01d_read_page,
+    mc_flash_write_page,
+    mc_flash_erase_block,
+    mc_flash_mark_bad_block,
+    mc_flash_check_bad_block,
+    XT26Q01D_BYTES_PER_PAGE,
+    XT26Q01D_BYTES_PER_OOB,
+    XT26Q01D_PAGES_PER_BLOCK,
+    XT26Q01D_TOTAL_BLOCKS,
+    XT26Q01D_CHIP_ID,
+    XT26Q01D_OOB_TOTAL_LEN,
+    XT26Q01D_OOB_PER_SIZE,
+    XT26Q01D_OOB_PER_SIZE,
+    XT26Q01D_OOB_PER_SIZE,
+    XT26Q01D_OOB_PER_SIZE,
+    XT26Q01D_OOB_1_OFFSET,
+    XT26Q01D_OOB_2_OFFSET,
+    XT26Q01D_OOB_3_OFFSET,
+    XT26Q01D_OOB_4_OFFSET,
+#ifdef ENABLE_ECC
+    true
+#else
+    false
+#endif
+    };
index 28c9282..6509d8c 100644 (file)
@@ -1106,7 +1106,7 @@ target = {
             'BOARD_FD272',
             # cat1 相关配置
             'FT_SINGLE_UART',
-            'SUPPORT_CAT1_SERVICE',
+            # 'SUPPORT_CAT1_SERVICE',
             
             'CONFIG_EFUSE_READ_TO_RAM',
              'CUSTOM_UTILS',
@@ -1143,13 +1143,15 @@ target = {
             'CONFIG_NORFLASH_SIZE=16',
             'SINGLE_USER_PARTITION',
             'TPTYPE_FT6X46',
-            'ROTARYENCODER_HX3507',
+            # 'ROTARYENCODER_HX3507',
             'NANDFLASH_DS35X',
             'BLE_INSTRUCT',
             # 'AILPAY_SUPPORT',
             'SUPPORT_FACTORY_SERVICE',
             # 'MEMORY_CORRUPTION',
-            
+            'SAP_EFFECT_SWS_SUPPORT',
+            'AUDIO_SMARTPA_AW88082',
+            "-:SUPPORT_LWIP",
         ],
         #添加自定义应用
        'ram_component': [
@@ -1162,9 +1164,9 @@ target = {
                           "vibrator",
                           "vibrator_service",
                         #   "-:lwip",
-                          "cat1Service",
-                          "cat1Test",
-                          "4gTestcpp",
+                        #   "cat1Service",
+                        #   "cat1Test",
+                        #   "4gTestcpp",
                           "audio_manager",
                           "CustomUIcomponentTool",
                           "nativeabilityfwk",
@@ -1225,7 +1227,8 @@ target = {
             'CFG_FLASH_SIZE=16',
             'CONFIG_NORFLASH_SIZE=16',
             'CUSTOM_ZHIHUI',
-            'NANDFLASH_DS35X'
+            'NANDFLASH_F35UQA',
+            'GPIO_POWERON_FLASH',
         ]
     },
 
@@ -1465,6 +1468,17 @@ target = {
             # ppp interrupt 读取串口 与polling只能开启一个
             'SUPPORT_PPP_SERVICE_INTERRUPT',
             'SUPPORT_CAT1_UART_WAKEUP',
+            #离线日志
+            # '-:SW_UART_DEBUG', 
+            # '-:DUMP_MEM_SUPPORT', 
+            # '-:DUMP_REG_SUPPORT', 
+            # '-:SUPPORT_DFX_EXCEPTION',
+            # '-:CONFIG_DFX_SUPPORT_OFFLINE_LOG_FILE=1',
+            # 'VOICE_CALL_VOLTE_BLUETOOTH_WRAPPER_CPP',
+            # 'AUDIO_STREAM_PLAYER_CPP',
+            # 'AI_MEDIA_SERVICE_EXT_CPP',
+            # 'AI_MEDIA_SERVICE_CPP',
+            # 'THUNDERBIRDMAINVIEW_CPP',
         ],
         #添加自定义应用
        'ram_component': [
diff --git a/code/sdk/drivers/boards/brandy_evb/board_config/board_fd272.h b/code/sdk/drivers/boards/brandy_evb/board_config/board_fd272.h
new file mode 100644 (file)
index 0000000..313f400
--- /dev/null
@@ -0,0 +1,352 @@
+/*
+ * Copyright (c) @CompanyNameMagicTag 2018-2021. All rights reserved.
+ * Description:   brandy evb board config
+ * Author: @CompanyNameTag
+ * Create: 2020-02-19
+ */
+#ifndef BOARD_FD272_CONFIG_H
+#define BOARD_FD272_CONFIG_H
+
+#include "pinctrl_porting.h"
+#include "gpio_porting.h"
+#include "platform_types.h"
+
+#ifdef ENABLE_BN02
+extern void bp_int_callback(pin_t pin, uintptr_t param);
+#endif
+
+#ifdef SUPPORT_PPG_SERVICE
+extern void ppg_int_callback(pin_t pin, uintptr_t param);
+#endif
+
+#ifdef SUPPORT_GYRO_SERVICE
+extern void gyro_int_callback(pin_t pin, uintptr_t param);
+#endif
+
+#ifdef ROTARYENCODER_MIXO
+extern void mixo_int_callback(pin_t pin, uintptr_t param);
+#endif
+
+#ifdef SUPPORT_CYWEE_SERVICE
+extern void cywee_int_callback(pin_t pin, uintptr_t param);
+#endif
+
+/**
+ * @addtogroup connectivity_config_boards
+ * @{
+ */
+/**
+ * @brief  Global evb pio functions.
+ */
+const hal_pio_config_t g_pio_function_config[PIN_MAX_NUMBER] = {
+    { HAL_PIO_FUNC_QSPI0, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE },   // S_EGPIO0
+    { HAL_PIO_FUNC_QSPI0, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_ENBALE },  // S_EGPIO1
+    { HAL_PIO_FUNC_QSPI0, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE },   // S_EGPIO2
+    { HAL_PIO_FUNC_QSPI0, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE },   // S_EGPIO3
+    { HAL_PIO_FUNC_QSPI0, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE },  // S_EGPIO4 clk
+    { HAL_PIO_FUNC_QSPI0, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE },  // S_EGPIO5 cs
+    { HAL_PIO_FUNC_OPI, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE },     // S_EGPIO6
+    { HAL_PIO_FUNC_OPI, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_ENBALE },   // S_EGPIO7
+    { HAL_PIO_FUNC_OPI, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_ENBALE },   // S_EGPIO8
+    { HAL_PIO_FUNC_OPI, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_ENBALE },   // S_EGPIO9
+    { HAL_PIO_FUNC_OPI, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_ENBALE },   // S_EGPIO10
+    { HAL_PIO_FUNC_OPI, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_ENBALE },   // S_EGPIO11
+    { HAL_PIO_FUNC_OPI, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_ENBALE },   // S_EGPIO12
+    { HAL_PIO_FUNC_OPI, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_ENBALE },   // S_EGPIO13
+    { HAL_PIO_FUNC_OPI, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_ENBALE },   // S_EGPIO14
+    { HAL_PIO_FUNC_OPI, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_ENBALE },   // S_EGPIO15
+    { HAL_PIO_FUNC_OPI, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_ENBALE },   // S_EGPIO16
+    { HAL_PIO_FUNC_OPI, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_ENBALE },   // S_EGPIO17
+    { HAL_PIO_FUNC_OPI, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_ENBALE },   // S_EGPIO18
+    { HAL_PIO_FUNC_OPI, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_ENBALE },   // S_EGPIO19
+    { HAL_PIO_FUNC_OPI, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_ENBALE },   // S_EGPIO20
+    { HAL_PIO_FUNC_OPI, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN,  HAL_PIO_IE_ENBALE },   // S_EGPIO21
+    { HAL_PIO_FUNC_OPI, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX,  HAL_PIO_IE_DISABLE },   // S_EGPIO22 clk
+    { HAL_PIO_FUNC_OPI, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX,  HAL_PIO_IE_DISABLE },   // S_EGPIO23 ce
+    { HAL_PIO_FUNC_OPI, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN,  HAL_PIO_IE_ENBALE },    // S_EGPIO24
+    { HAL_PIO_FUNC_OPI, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN,  HAL_PIO_IE_ENBALE },    // S_EGPIO25
+
+    { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE },    // S_HGPIO0 NC
+    { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE },    // S_HGPIO1 NC
+    { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE },    // S_HGPIO2 NC
+    { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE },    // S_HGPIO3 NC
+    { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE },    // S_HGPIO4 NC
+    { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE },    // S_HGPIO5 NC
+#if (defined CFG_DRIVERS_NANDFLASH)
+    { HAL_PIO_FUNC_QSPI1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_UP, HAL_PIO_IE_ENBALE },   // S_HGPIO6
+    { HAL_PIO_FUNC_QSPI1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_UP, HAL_PIO_IE_ENBALE },   // S_HGPIO7
+    { HAL_PIO_FUNC_QSPI1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_UP, HAL_PIO_IE_ENBALE },   // S_HGPIO8
+    { HAL_PIO_FUNC_QSPI1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_UP, HAL_PIO_IE_ENBALE },   // S_HGPIO9
+    { HAL_PIO_FUNC_GPIO,  HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_UP, HAL_PIO_IE_DISABLE },  // S_HGPIO10
+    { HAL_PIO_FUNC_QSPI1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_UP, HAL_PIO_IE_DISABLE },  // S_HGPIO11 cs0
+    { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_UP, HAL_PIO_IE_DISABLE },   // S_HGPIO12 cs1
+    { HAL_PIO_FUNC_GPIO,  HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_UP, HAL_PIO_IE_DISABLE },  // S_HGPIO13
+    { HAL_PIO_FUNC_GPIO,  HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_UP, HAL_PIO_IE_DISABLE },  // S_HGPIO14
+    { HAL_PIO_FUNC_QSPI1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_UP, HAL_PIO_IE_DISABLE },  // S_HGPIO15 clk
+#else
+    { HAL_PIO_FUNC_EMMC, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_UP, HAL_PIO_IE_ENBALE },     // S_HGPIO6
+    { HAL_PIO_FUNC_EMMC, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_UP, HAL_PIO_IE_ENBALE },     // S_HGPIO7
+    { HAL_PIO_FUNC_EMMC, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_UP, HAL_PIO_IE_ENBALE },     // S_HGPIO8
+    { HAL_PIO_FUNC_EMMC, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_UP, HAL_PIO_IE_ENBALE },     // S_HGPIO9
+    { HAL_PIO_FUNC_EMMC, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_UP, HAL_PIO_IE_ENBALE },     // S_HGPIO10  
+    { HAL_PIO_FUNC_EMMC, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_UP, HAL_PIO_IE_ENBALE },     // S_HGPIO11
+    { HAL_PIO_FUNC_EMMC, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_UP, HAL_PIO_IE_ENBALE },     // S_HGPIO12  
+    { HAL_PIO_FUNC_EMMC, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_UP, HAL_PIO_IE_ENBALE },     // S_HGPIO13  
+    { HAL_PIO_FUNC_EMMC, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_UP, HAL_PIO_IE_ENBALE },     // S_HGPIO14  
+    { HAL_PIO_FUNC_EMMC, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE },   // S_HGPIO15 emmc clk
+#endif
+    { HAL_PIO_FUNC_SPI0, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE },    // S_MGPIO0   NC
+    { HAL_PIO_FUNC_SPI0, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE },    // S_MGPIO1   NC
+    { HAL_PIO_FUNC_SPI0, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE },    // S_MGPIO2   NC
+    { HAL_PIO_FUNC_SPI0, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE },    // S_MGPIO3   NC
+
+// #if (defined BRANDY_PRODUCT_EVB4)
+    { HAL_PIO_FUNC_SPI0, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE },    // S_MGPIO4   NC
+// #else
+    // { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE },    // S_MGPIO4   NC
+// #endif
+
+    { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE },     // S_MGPIO5  NC
+    { HAL_PIO_FUNC_SPI1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_ENBALE },  // S_MGPIO6  SPI1 DI
+    { HAL_PIO_FUNC_SPI1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_ENBALE },  // S_MGPIO7 SPI1 DO
+    { HAL_PIO_FUNC_SPI1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_ENBALE },  // S_MGPIO8 SPI1 CLK
+    { HAL_PIO_FUNC_SPI1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_ENBALE },   // S_MGPIO9 SPI1 CS0
+    { HAL_PIO_FUNC_SPI1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE },   // S_MGPIO10 SPI1 CS1 NC
+
+    { HAL_PIO_FUNC_I2C0_M1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_UP, HAL_PIO_IE_ENBALE }, // S_MGPIO11 i2c0 SCL NC
+    { HAL_PIO_FUNC_I2C0_M1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_UP, HAL_PIO_IE_ENBALE }, // S_MGPIO12 I2C0 SDA
+    { HAL_PIO_FUNC_I2C1_M1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_MGPIO13 I2C1 SCL touch i2c
+    { HAL_PIO_FUNC_I2C1_M1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_MGPIO14  I2C1 SDA
+    { HAL_PIO_FUNC_I2C2_M1, HAL_PIO_DRIVE_MAX, HAL_PIO_DRIVE_MAX, HAL_PIO_IE_ENBALE },  // S_MGPIO15 I2C2 SCL Sensor 6轴 指南针 心率
+    { HAL_PIO_FUNC_I2C2_M1, HAL_PIO_DRIVE_MAX, HAL_PIO_DRIVE_MAX, HAL_PIO_IE_ENBALE },  // S_MGPIO16 I2C2 SDA Sensor
+    { HAL_PIO_FUNC_I2C3_M1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE },   // S_MGPIO17 i2c3 SCL    smart pa\ 预留马达控制 \安全芯片
+    { HAL_PIO_FUNC_I2C3_M1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE },   // S_MGPIO18  I2C3 SDA
+    { HAL_PIO_FUNC_UART1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE },    // S_MGPIO19 uart1 tx
+    { HAL_PIO_FUNC_UART1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_UP, HAL_PIO_IE_ENBALE },      // S_MGPIO20 uart1 rx
+    { HAL_PIO_FUNC_UART1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE },     // S_MGPIO21 uart1 rts
+    { HAL_PIO_FUNC_UART1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE },     // S_MGPIO22 uart1 cts
+    { HAL_PIO_FUNC_SPI2_M1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE },   // S_MGPIO23 NC
+    { HAL_PIO_FUNC_SPI2_M1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE },   // S_MGPIO24 NC
+    { HAL_PIO_FUNC_SPI2_M1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE },   // S_MGPIO25 NC
+    { HAL_PIO_FUNC_SPI2_M1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE },   // S_MGPIO26 NC
+#if (defined QSPI_DISPLAY)
+    { HAL_PIO_FUNC_QSPI2, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE },   // S_MGPIO27
+    { HAL_PIO_FUNC_QSPI2, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE },   // S_MGPIO28
+    { HAL_PIO_FUNC_QSPI2, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE },   // S_MGPIO29
+    { HAL_PIO_FUNC_QSPI2, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE },   // S_MGPIO30
+    { HAL_PIO_FUNC_QSPI2, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE },   // S_MGPIO31
+    { HAL_PIO_FUNC_QSPI2, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE },   // S_MGPIO32
+#else
+    { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE },   // S_MGPIO27
+    { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE },   // S_MGPIO28
+    { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE },   // S_MGPIO29
+    { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE },   // S_MGPIO30
+    { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE },   // S_MGPIO31
+    { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE },   // S_MGPIO32
+#endif
+    { HAL_PIO_FUNC_UART_HS_UART, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_MGPIO33 huart tx
+    { HAL_PIO_FUNC_UART_HS_UART, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_UP, HAL_PIO_IE_ENBALE },   // S_MGPIO34 huart rx
+    { HAL_PIO_FUNC_UART_HS_UART, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE },  // S_MGPIO35
+    { HAL_PIO_FUNC_UART_HS_UART, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE },  // S_MGPIO36
+#if 0
+    { HAL_PIO_FUNC_UART2_M2, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE },     // S_MGPIO37 uart tx
+    { HAL_PIO_FUNC_UART2_M2, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_UP, HAL_PIO_IE_ENBALE },       // S_MGPIO38 uart rx
+#else
+    { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE },     // S_MGPIO37 uart tx  NC
+    { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE },       // S_MGPIO38 uart rx  NC
+#endif
+
+    { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE },     // S_AGPIO_L0  NC
+
+    { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE },   // S_AGPIO_L1 i2s1
+    { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE },   // S_AGPIO_L2
+    { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE },   // S_AGPIO_L3
+    { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE },   // S_AGPIO_L4
+
+    { HAL_PIO_FUNC_I2S0_M1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE },   // S_AGPIO_L5
+    { HAL_PIO_FUNC_I2S0_M1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_AGPIO_L6 i2s0
+    { HAL_PIO_FUNC_I2S0_M1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_AGPIO_L7
+    { HAL_PIO_FUNC_I2S0_M1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_AGPIO_L8
+
+#if (defined FT_BT_UART)
+    { HAL_PIO_FUNC_UART2_M1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE },  // S_AGPIO_L9 uart2 txd
+    { HAL_PIO_FUNC_UART2_M1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_UP, HAL_PIO_IE_ENBALE },    // S_AGPIO_L10 uart2 rxd
+#else
+    { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE },    // S_AGPIO_L9 dsp uart   TP35
+    { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE },    // S_AGPIO_L10 dsp uart   TP36
+#endif
+    { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_UP, HAL_PIO_IE_ENBALE },    // S_AGPIO_L11 G_INT1
+
+    { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE },    // S_AGPIO_L12 i2c data HX3507_SDIO
+    { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE },   // S_AGPIO_L13 i2c CLK HX3507_SCLK
+
+    { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE }, // S_AGPIO_L14   NC
+    { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE }, // S_AGPIO_L15   NC
+    { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE }, // S_AGPIO_L16   NC
+    
+    { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE },    // S_AGPIO_L17 HX3507_INT   not use
+    { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE },   // S_AGPIO_L18  VDDEN  //暂时无用,采用VDDIO 默认开启 EXt V3.0 EXt V1.8
+    { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_UP, HAL_PIO_IE_DISABLE },  // S_AGPIO_L19  G_INT2  //暂时不用 
+
+
+    { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_UP, HAL_PIO_IE_DISABLE }, // S_AGPIO_L20  0.2C_CHRG
+    { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE },    // S_AGPIO_L21  NTC_VDD_ON给低打开 NTC上拉电源
+#ifdef QSPI_DISPLAY
+    { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE },    // S_AGPIO_L22 QSPI TE
+#else
+    { HAL_PIO_FUNC_TE, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE },      // S_AGPIO_L22 MIPI TE
+#endif
+    { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE },   // S_AGPIO_L23 CAT_1_PWR_ON 控制CAT_1开机脚,或者控制 CAT1电源   拉高有效
+    { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE },   // S_AGPIO_L24 LCM_EN
+    { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE },   // S_AGPIO_L25  //////////// audio pa reset
+    { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE },   // S_AGPIO_L26 心率复位 PPG reset
+    { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE },   // S_AGPIO_L27    LCM reset
+    { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE },   // S_AGPIO_L28    CAT_1复位 CAT1_RESET_N  拉低有效
+    { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE },   // S_AGPIO_L29    charge done info 检测是否充满电
+    { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE },   // S_AGPIO_L30   KP_MKIN1 唤醒 CAT1 ,输出
+    { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE },   // S_AGPIO_L31    KP_MKOUIT1 唤醒 蓝牙 ,输入
+    { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE },   // S_AGPIO_L32    NC
+
+    { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE },   // S_AGPIO_R0   PRG_LED_POWER ON  心率等电源控制脚
+    { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE },   // S_AGPIO_R1   SE_REST 安全芯片复位唤醒脚
+//   #if VIB_USE_PWM
+    // { HAL_PIO_FUNC_PWMP1_M2, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE },   // S_AGPIO_R2     VIBR_PWM 马达控制脚 兼容预留马达驱动复位脚
+    // { HAL_PIO_FUNC_PWMN1_M3, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE },   // S_AGPIO_R2     VIBR_PWM 马达控制脚 兼容预留马达驱动复位脚
+//   #else
+    { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE },   // S_AGPIO_R2     VIBR_PWM 马达控制脚 兼容预留马达驱动复位脚
+//   #endif
+#ifdef BOARD_N9
+    { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_UP, HAL_PIO_IE_ENBALE  },   // S_AGPIO_R3     NC   
+#else
+    { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_UP, HAL_PIO_IE_DISABLE  }, 
+#endif
+    { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_UP, HAL_PIO_IE_DISABLE  },    // S_AGPIO_R4     tp reset
+    { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE  },   // S_AGPIO_R5     touch int
+    { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE },    // S_AGPIO_R6     PRG_INT 心率中断
+    { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE },   // S_AGPIO_R7     GYRO_INT2
+#ifdef SUPPORT_GYRO_SERVICE
+    { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE },   // S_AGPIO_R8     GYRO_INT1
+#else
+    { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE },   // S_AGPIO_R8     GYRO_INT1
+#endif
+
+    { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE },   // S_AGPIO_R9     BAT_CHARGE_OFF 关掉充电 温度高的时候
+    { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE },   // S_AGPIO_R10   Key2 ///////////////////HAL_PIO_IE_ENBALE input enable
+
+#if CORE == APPS
+    { HAL_PIO_FUNC_INVALID, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE }, // ULP_GPIO0 mode not config
+    { HAL_PIO_FUNC_INVALID, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE }, // ULP_GPIO1 mode not config
+    { HAL_PIO_FUNC_INVALID, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE }, // ULP_GPIO2 mode not config
+    { HAL_PIO_FUNC_INVALID, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE }, // ULP_GPIO3 mode not config
+    { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE },    // ULP_GPIO4
+    { HAL_PIO_FUNC_SWD, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE },       // ULP_GPIO5
+    { HAL_PIO_FUNC_SWD, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE },       // ULP_GPIO6
+#endif
+};
+/**
+ * @}
+ */
+
+
+/**
+ * @addtogroup connectivity_config_boards
+ * @{
+ */
+/**
+ * @brief  Global evb gpio functions.
+ * 
+ * 
+ * typedef struct {
+    pin_t gpio;
+    hal_gpio_direction_t direction;
+    hal_gpio_level_t level;
+    uint32_t triger;
+    hal_gpio_callback_t callback;
+} hal_gpio_config_t;
+ */
+
+
+//默认开启Cat1 然后再根据配置决定是否关闭. 
+//默认不开启 ppg checkid失败,原因未知,暂时开机开启cat1
+#define DEFAULT_POWERON_CAT1 0
+
+//需要配置默认输出的,以及需要配置默认输入中断函数的。
+const hal_gpio_config_t g_gpio_function_config[PIN_MAX_NUMBER] = {
+
+#if DEFAULT_POWERON_CAT1
+    //    S_AGPIO_L23 CAT_1_PWR_ON ----- high power on
+    {   S_AGPIO_L23, HAL_GPIO_DIRECTION_OUTPUT, HAL_GPIO_LEVEL_HIGH, 0, NULL },
+   // S_AGPIO_L28   Cat1 reset  ---- low reset
+    {   S_AGPIO_L28, HAL_GPIO_DIRECTION_OUTPUT, HAL_GPIO_LEVEL_HIGH, 0, NULL },
+#else
+  //    S_AGPIO_L23 CAT_1_PWR_ON ----- high power on
+    {   S_AGPIO_L23, HAL_GPIO_DIRECTION_OUTPUT, HAL_GPIO_LEVEL_LOW, 0, NULL },
+   // S_AGPIO_L28   Cat1 reset  ---- low reset
+    {   S_AGPIO_L28, HAL_GPIO_DIRECTION_OUTPUT, HAL_GPIO_LEVEL_LOW, 0, NULL },
+#endif
+    // S_AGPIO_L17   HX3507_INT 
+    // {   S_AGPIO_L17, HAL_GPIO_DIRECTION_INPUT, HAL_GPIO_LEVEL_LOW, 0, NULL },
+    // S_AGPIO_L12  SDIO_BT
+    {   S_AGPIO_L12, HAL_GPIO_DIRECTION_OUTPUT, HAL_GPIO_LEVEL_LOW, 0, NULL },
+    // S_AGPIO_L13   SCLK_BT
+    {   S_AGPIO_L13, HAL_GPIO_DIRECTION_OUTPUT, HAL_GPIO_LEVEL_LOW, 0, NULL },
+
+     // S_AGPIO_L26 心率复位 PPG reset
+    {   S_AGPIO_L26, HAL_GPIO_DIRECTION_OUTPUT, HAL_GPIO_LEVEL_LOW, 0, NULL },
+    // S_AGPIO_R0 PRG_LED_POWER ON  心率等电源控制脚
+    {   S_AGPIO_R0, HAL_GPIO_DIRECTION_OUTPUT, HAL_GPIO_LEVEL_LOW, 0, NULL },
+
+    //S_AGPIO_L21 NTC_VDD_ON 给低打开 NTC上拉电源 ,默认关闭
+    {   S_AGPIO_L21, HAL_GPIO_DIRECTION_OUTPUT, HAL_GPIO_LEVEL_HIGH, 0, NULL },
+#if 0  //默认正常充电 
+//    #define GPIO_PIN_ENABLE_CHARGE S_AGPIO_R9  //low enable
+// #define GPIO_PIN_ENABLE_CHARGE_0_2C S_AGPIO_L20   //low 0.2c 低电流充电
+    {   S_AGPIO_R9, HAL_GPIO_DIRECTION_OUTPUT, HAL_GPIO_LEVEL_LOW, 0, NULL },
+    {   S_AGPIO_L20, HAL_GPIO_DIRECTION_OUTPUT, HAL_GPIO_LEVEL_LOW, 0, NULL },
+#else
+    {   S_AGPIO_R9, HAL_GPIO_DIRECTION_OUTPUT, HAL_GPIO_LEVEL_LOW, 0, NULL },
+    {   S_AGPIO_L20, HAL_GPIO_DIRECTION_OUTPUT, HAL_GPIO_LEVEL_HIGH, 0, NULL },
+#endif
+
+//默认关闭马达
+    {   S_AGPIO_R2, HAL_GPIO_DIRECTION_OUTPUT, HAL_GPIO_LEVEL_LOW, 0, NULL },
+//默认开启 EXT LDO V3.0 V1.8
+    // {   S_AGPIO_L18, HAL_GPIO_DIRECTION_OUTPUT, HAL_GPIO_LEVEL_LOW, 0, NULL },
+
+#ifdef SUPPORT_CYWEE_SERVICE
+    /**G sensor G_INT1 S_AGPIO_L11 G_INT2 S_AGPIO_L19   采用timer 时这些中断要屏蔽*/
+    {   S_AGPIO_L11, HAL_GPIO_DIRECTION_INPUT, NULL, GPIO_INTERRUPT_RISING_EDGE, cywee_int_callback },
+    //{   S_AGPIO_L19, HAL_GPIO_DIRECTION_INPUT, NULL, GPIO_INTERRUPT_DEDGE, cywee_int_callback },
+#endif    
+    /**S_AGPIO_R1 GPO alipay默认resetpin*/
+    {   S_AGPIO_R1, HAL_GPIO_DIRECTION_OUTPUT, HAL_GPIO_LEVEL_HIGH, 0, NULL },
+#ifdef SUPPORT_CAT1_SERVICE
+    /**cat1 ring input key*/
+    // {   S_AGPIO_L31, HAL_GPIO_DIRECTION_INPUT, NULL, GPIO_INTERRUPT_DEDGE,  cat1_ring_isr_callback},
+    // {   S_AGPIO_L31, HAL_GPIO_DIRECTION_INPUT, NULL, GPIO_INTERRUPT_RISING_EDGE,  cat1_ring_isr_callback},
+
+#endif
+#ifdef SUPPORT_GYRO_SERVICE
+     {   S_AGPIO_R8, HAL_GPIO_DIRECTION_INPUT, NULL, GPIO_INTERRUPT_RISING_EDGE, gyro_int_callback },
+#else
+  /**S_AGPIO_L32 GPO gps reset*/
+    // {   S_AGPIO_L32, HAL_GPIO_DIRECTION_OUTPUT, HAL_GPIO_LEVEL_LOW, 0, NULL },
+#endif
+#ifdef ENABLE_BN02
+     {   S_AGPIO_R3, HAL_GPIO_DIRECTION_INPUT, NULL, GPIO_INTERRUPT_RISING_EDGE, bp_int_callback },
+#endif
+#ifdef SUPPORT_PPG_SERVICE
+#ifdef PPG_GH3X2X
+    {   S_AGPIO_R6, HAL_GPIO_DIRECTION_INPUT, NULL, GPIO_INTERRUPT_RISING_EDGE,  ppg_int_callback},
+#elif defined PPG_PAH8009
+    // {   S_AGPIO_R6, HAL_GPIO_DIRECTION_INPUT, NULL, GPIO_INTERRUPT_FALLING_EDGE,  ppg_int_callback},
+#endif
+#endif
+#ifdef ROTARYENCODER_MIXO
+    {   S_AGPIO_L0, HAL_GPIO_DIRECTION_INPUT, NULL, GPIO_INTERRUPT_FALLING_EDGE,  mixo_int_callback},
+#endif
+};
+/**
+ * @}
+ */
+#endif
index 590897f..f753c29 100644 (file)
 #define CONFIG_SUPPORT_BUTTON_DOUBLE_CLICK  YES
 
 // LCD VCI_EN
-#ifdef BOARD_LEINIAO
+#if defined(BOARD_LEINIAO) || defined(BOARD_FD272)
 #define VCI_LCD_GPIO                        S_AGPIO_L25
 #else
 #define VCI_LCD_GPIO                        S_AGPIO_L24
index 1d75489..baa5d61 100644 (file)
@@ -22,6 +22,8 @@
 #include "board_w9.h"
 #elif defined(BOARD_L22)
 #include "board_lt22.h"
+#elif defined(BOARD_FD272)
+#include "board_fd272.h"
 #else
 #include "board_evb.h"
 #endif
index e9cefe3..b4cb7fd 100644 (file)
@@ -8,6 +8,7 @@ set(SOURCES
     ${CMAKE_CURRENT_SOURCE_DIR}/nand/nandflash_f35uqa001g.c
     ${CMAKE_CURRENT_SOURCE_DIR}/nand/nandflash_gd5f2gm7re.c
     ${CMAKE_CURRENT_SOURCE_DIR}/nand/nandflash_xt26q02d.c
+    ${CMAKE_CURRENT_SOURCE_DIR}/nand/nandflash_xt26q01d.c
     ${CMAKE_CURRENT_SOURCE_DIR}/nand/nandflash_tc58cyg.c
     ${CMAKE_CURRENT_SOURCE_DIR}/nand/nandflash_w25n01g.c
     ${CMAKE_CURRENT_SOURCE_DIR}/nand/nandflash_config.c
diff --git a/code/sdk/drivers/drivers/driver/nand_flash/nand/include/nandflash_xt26q01d.h b/code/sdk/drivers/drivers/driver/nand_flash/nand/include/nandflash_xt26q01d.h
new file mode 100644 (file)
index 0000000..2ad2147
--- /dev/null
@@ -0,0 +1,33 @@
+/*
+ * @Author: penglei 1624952103@qq.com
+ * @Date: 2025-09-04 10:28:47
+ * @LastEditors: penglei 1624952103@qq.com
+ * @LastEditTime: 2025-10-31 15:28:36
+ * @FilePath: /FD230/code/sdk/bootloader/flashboot/brandy/nandflash/include/nandflash_xt26q01d.h
+ * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
+ */
+/*
+ * Copyright (c) @CompanyNameMagicTag 2018-2020. All rights reserved.
+ * Description:  NON-OS NANDFLASH DRIVER
+ * Author: @CompanyNameTag
+ * Create:  2020-10-15
+ */
+
+#ifndef NANDFLASH_XT26Q01D_H
+#define NANDFLASH_XT26Q01D_H
+
+#define XT26Q01D_BYTES_PER_PAGE  2048
+#define XT26Q01D_BYTES_PER_OOB   64
+#define XT26Q01D_PAGES_PER_BLOCK 64
+#define XT26Q01D_TOTAL_BLOCKS    1024
+#define XT26Q01D_CHIP_ID         0x0B51
+#define XT26Q01D_OOB_TOTAL_LEN   4
+#define XT26Q01D_OOB_PER_SIZE    8
+#define XT26Q01D_OOB_1_OFFSET    0
+#define XT26Q01D_OOB_2_OFFSET    16
+#define XT26Q01D_OOB_3_OFFSET    32
+#define XT26Q01D_OOB_4_OFFSET    48
+
+extern struct nand_driver_struct g_xt26q01d_driver;
+
+#endif /* End of #ifndef MC_NAND_XT26Q01D_H */
index 910629d..2529575 100644 (file)
@@ -27,6 +27,7 @@
 #include "nandflash_f35uqa001g.h"\r
 #include "nandflash_gd5f2gm7re.h"\r
 #include "nandflash_xt26q02d.h"\r
+#include "nandflash_xt26q01d.h"\r
 #include "nandflash_w25n01g.h"\r
 #include "nandflash_to_os.h"\r
 #include "nandflash_inner.h"\r
@@ -71,6 +72,7 @@ static const nand_chip_mapping_t nand_chip_mappings[] = {
     {F35UQA001G_CHIP_ID, &g_f35uqa001g_driver, "F35UQA001G"},\r
     {GD5F2GM7RE_CHIP_ID, &g_gd5f2gm7re_driver, "GD5F2GM7RE"},\r
     {XT26Q02D_CHIP_ID,   &g_xt26q02d_driver,   "XT26Q02D"},\r
+    {XT26Q01D_CHIP_ID,   &g_xt26q01d_driver,   "XT26Q01D"},\r
 };\r
 \r
 #define NAND_CHIP_MAPPINGS_COUNT (sizeof(nand_chip_mappings) / sizeof(nand_chip_mappings[0]))\r
diff --git a/code/sdk/drivers/drivers/driver/nand_flash/nand/nandflash_xt26q01d.c b/code/sdk/drivers/drivers/driver/nand_flash/nand/nandflash_xt26q01d.c
new file mode 100644 (file)
index 0000000..deca37d
--- /dev/null
@@ -0,0 +1,109 @@
+/*
+ * Copyright (c) @CompanyNameMagicTag 2018-2020. All rights reserved.
+ * Description:  NON-OS NANDFLASH DRIVER
+ * Author: @CompanyNameTag
+ * Create:  2020-10-15
+ */
+
+#include <stdint.h>
+#include <stddef.h>
+#include "debug_print.h"
+#include "nandflash_inner.h"
+#include "nandflash.h"
+#include "hal_nandflash.h"
+#include "nandflash_config.h"
+#include "nandflash_xt26q01d.h"
+
+#define XT26Q01D_GET_ECC_STATUS(x) ((0x30 & (x)) >> 4)
+#define XT26Q01D_ECC_CORRECTION 0x00
+#define XT26Q01D_ECC_1BIT_CORRET 0x01
+#define XT26Q01D_ECC_4BIT_CORRET 0x02
+#define XT26Q01D_ECC_ERROR 0x03
+#define NAND_ID_DATA_SIZE 0x2
+
+static qspi_data_type_def g_qspi_data = {0};
+
+static uint32_t mc_xt26q01d_read_page(uint32_t nand_page, uint8_t *data, uint32_t data_len, uint8_t *oob,
+    uint32_t oob_len, const uint32_t *ecc_result, enum nandflash_trans_type type)
+{
+    unused(ecc_result);
+    uint32_t ret;
+    uint8_t status_reg;
+    ret = mc_flash_read_page(nand_page, data, data_len, oob, oob_len, &status_reg, type);
+    if (get_nand_flash()->enable_ecc == true) {
+        if (XT26Q01D_GET_ECC_STATUS(status_reg) >= XT26Q01D_ECC_ERROR) {
+            return MC_FAILURE;
+        } else {
+            return MC_SUCCESS;
+        }
+    }
+    return ret;
+}
+
+static uint32_t mc_xt26q01d_init(void)
+{
+    nand_driver_init(SPEED_MID);
+    nand_driver_sem_init();
+    PRINT("xt26q01d_init \r\n");
+    uint32_t ret;
+    mc_flash_write_cmd(CMD_FLASH_RESET); /* tRST 5us,no command will be accepted */
+    mc_flash_busy_wait();
+    write_cmd(CMD_FLASH_WREN);
+    ret = mc_flash_write_sr(CMD_FLASH_SR1_ADDR, 0x0); /* set SR1 0,Clear block protect bits */
+    if (get_nand_flash()->enable_ecc == true) {
+        ret = mc_flash_write_sr(CMD_FLASH_SR2_ADDR, 0x11); /* set SR1 0,Clear block protect bits */
+    } else {
+        ret = mc_flash_write_sr(CMD_FLASH_SR2_ADDR, 0x01); /* set SR1 0,Clear block protect bits */
+    }
+    uint8_t status_reg;
+    mc_flash_read_sr(CMD_FLASH_SR1_ADDR, (uint8_t *)&status_reg);
+    PRINT("nandflash A0 Reg:0x%x \r\n", status_reg);
+    mc_flash_read_sr(CMD_FLASH_SR2_ADDR, (uint8_t *)&status_reg);
+    PRINT("nandflash B0 Reg:0x%x \r\n", status_reg);
+    mc_flash_read_sr(CMD_FLASH_SR3_ADDR, (uint8_t *)&status_reg);
+    PRINT("nandflash C0 Reg:0x%x \r\n", status_reg);
+    if (ret != MC_SUCCESS || status_reg != 0x2) {
+        return MC_FAILURE;
+    }
+    return MC_SUCCESS;
+}
+
+static uint16_t mc_xt26q01d_check_id(void)
+{
+    g_qspi_data.instruction = CMD_FLASH_ID;
+    g_qspi_data.address_mode = MC_OSPI_ADDRESS_NONE;
+    g_qspi_data.address = 0;
+    g_qspi_data.address_size = 0;
+    g_qspi_data.dummy_cycles = MC_OSPI_CYCLES_8_BITS;
+    g_qspi_data.data_mode = MC_OSPI_DATA_1_LINE;
+    g_qspi_data.data_size = NAND_ID_DATA_SIZE;
+    return read_id(&g_qspi_data);
+}
+
+struct nand_driver_struct g_xt26q01d_driver = {mc_xt26q01d_init,
+    mc_xt26q01d_check_id,
+    mc_xt26q01d_read_page,
+    mc_flash_write_page,
+    mc_flash_erase_block,
+    mc_flash_mark_bad_block,
+    mc_flash_check_bad_block,
+    XT26Q01D_BYTES_PER_PAGE,
+    XT26Q01D_BYTES_PER_OOB,
+    XT26Q01D_PAGES_PER_BLOCK,
+    XT26Q01D_TOTAL_BLOCKS,
+    XT26Q01D_CHIP_ID,
+    XT26Q01D_OOB_TOTAL_LEN,
+    XT26Q01D_OOB_PER_SIZE,
+    XT26Q01D_OOB_PER_SIZE,
+    XT26Q01D_OOB_PER_SIZE,
+    XT26Q01D_OOB_PER_SIZE,
+    XT26Q01D_OOB_1_OFFSET,
+    XT26Q01D_OOB_2_OFFSET,
+    XT26Q01D_OOB_3_OFFSET,
+    XT26Q01D_OOB_4_OFFSET,
+#ifdef ENABLE_ECC
+    true
+#else
+    false
+#endif
+    };
index 0171864..dca3ba7 100644 (file)
@@ -354,8 +354,10 @@ namespace OHOS
         }
         if(strcmp(view.GetViewId(),"start") == 0)
         { 
+#ifdef SUPPORT_CAT1_SERVICE
             if(uapi_dev_runtime_get_cat1_powerstat())
                 uapi_set4GCapability(false);
+#endif
             #ifdef SUPPORT_FACTORY_SERVICE
                 factorytest_start_aging_test();
             #endif
index c462bd6..832f36e 100644 (file)
@@ -2,7 +2,7 @@
  * @Author: penglei 1624952103@qq.com
  * @Date: 2025-01-27 10:00:00
  * @LastEditors: penglei 1624952103@qq.com
- * @LastEditTime: 2025-10-10 14:50:58
+ * @LastEditTime: 2025-11-02 11:28:29
  * @FilePath: /FD230/code/sdk/zhihui/UI/producttest/src/testQRCode.cpp
  * @Description: 产测二维码视图实现文件
  */
@@ -42,14 +42,19 @@ namespace OHOS
     // 定时器回调函数
     static void qrcodeRefreshTimerCallback(int data)
     {
+        
         // 检查4G电源状态,如果关闭则自动打开
-        uint8_t cat1_power_status = uapi_dev_runtime_get_cat1_powerstat();
+        uint8_t cat1_power_status = 0;
+        #ifdef SUPPORT_CAT1_SERVICE
+        cat1_power_status = uapi_dev_runtime_get_cat1_powerstat();
+
         if (cat1_power_status == 0) {
             WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "4G power is OFF, turning ON...");
             uapi_set4GCapability(true);
             // 重置IMEI超时计数器
             g_imei_timeout_counter = 0;
         } else {
+            
             // 4G已开启,检查IMEI获取情况
             char* cat1_imei = uapi_dev_runtime_get_cat1_imei();
             bool imei_available = (cat1_imei != nullptr && strlen(cat1_imei) > 0);
@@ -81,6 +86,8 @@ namespace OHOS
                 }
             }
         }
+
+        #endif
         
         // 刷新二维码内容
         testQRCodeView *pview = testQRCodeView::GetInstance();
@@ -344,6 +351,8 @@ namespace OHOS
         content += "MAC: ";
         content += GetBluetoothAddress();
         content += "\n";
+
+        #ifdef SUPPORT_CAT1_SERVICE       
         
         // IMEI号
         content += "IMEI: ";
@@ -360,7 +369,10 @@ namespace OHOS
         } else {
             content += "fail";
         }
+
         content += "\n";
+
+        #endif
         
         // // 固件版本号
         // content += "VER: ";
@@ -469,6 +481,7 @@ namespace OHOS
     // 刷新二维码内容
     void testQRCodeView::RefreshQRCodeContent()
     {
+        #ifdef SUPPORT_CAT1_SERVICE
         if (QRCodeView != nullptr) {
             // 获取当前4G状态用于调试
             uint8_t cat1_power = uapi_dev_runtime_get_cat1_powerstat();
@@ -488,5 +501,6 @@ namespace OHOS
                          cat1_power, (cat1_imei && strlen(cat1_imei) > 0) ? cat1_imei : "N/A",
                          g_imei_timeout_counter, IMEI_TIMEOUT_LIMIT);
         }
+        #endif
     }
 }
index 37722db..331fccd 100644 (file)
@@ -47,7 +47,7 @@ extern "C" {
 
 #define BAT_FILE_COUNT 180
 
-#define BAT_FILE_PATH "user/log/bat_data.bin"
+#define BAT_FILE_PATH "user/userdata/bat_data.bin"
 
 bool batteryservice_get_voltage_by_channel(float *voltage, uint8_t channel);
 battery_info_t *get_current_battery_info(void);
index 30c8cc0..46e4c29 100644 (file)
@@ -2,7 +2,7 @@
  * @Author: penglei 1624952103@qq.com\r
  * @Date: 2024-06-17 14:31:08\r
  * @LastEditors: penglei 1624952103@qq.com\r
- * @LastEditTime: 2025-10-24 17:25:15\r
+ * @LastEditTime: 2025-11-02 10:40:05\r
  * @FilePath: /FD230/code/sdk/application/wearable/service/factorytest_service/factorytest_protocol.c\r
  * @Description: \r
  * \r
@@ -2015,12 +2015,14 @@ void factorytest_protocol_soft_test_decode(uint8_t submode,uint8_t testitem,uint
             {\r
                 //查看sim卡插入状态\r
                 uint8_t send_data = 0;\r
+#ifdef SUPPORT_CAT1_SERVICE\r
                 send_data = uapi_dev_runtime_get_cat1_simstat();\r
                 if(!send_data)\r
                 {\r
                     LOS_Msleep(1000);\r
                     send_data = uapi_dev_runtime_get_cat1_simstat();\r
                 }\r
+#endif\r
                 factorytest_protocol_replymsg(BLE_TEST_CMD_MODE_SOFT_TEST,\r
                         BLE_TEST_CMD_SOFT_TEST_SUB_MODE_CAT1,\r
                         0x03,\r
@@ -2030,9 +2032,9 @@ void factorytest_protocol_soft_test_decode(uint8_t submode,uint8_t testitem,uint
             {\r
                 //查看信号强度\r
                 uint8_t send_data = 0;\r
-\r
+#ifdef SUPPORT_CAT1_SERVICE\r
                 send_data = uapi_dev_runtime_get_cat1_signal();\r
-\r
+#endif\r
                 factorytest_protocol_replymsg(BLE_TEST_CMD_MODE_SOFT_TEST,\r
                         BLE_TEST_CMD_SOFT_TEST_SUB_MODE_CAT1,\r
                         0x04,\r
@@ -2042,8 +2044,9 @@ void factorytest_protocol_soft_test_decode(uint8_t submode,uint8_t testitem,uint
             {\r
                 //查看网络类型\r
                 uint8_t send_data = 0;\r
+            #ifdef SUPPORT_CAT1_SERVICE\r
                 send_data = uapi_dev_runtime_get_cat1_networtype();\r
-                 \r
+            #endif\r
                 factorytest_protocol_replymsg(BLE_TEST_CMD_MODE_SOFT_TEST,\r
                         BLE_TEST_CMD_SOFT_TEST_SUB_MODE_CAT1,\r
                         0x05,\r
@@ -2052,6 +2055,7 @@ void factorytest_protocol_soft_test_decode(uint8_t submode,uint8_t testitem,uint
             } else if(testitem == 0x06)\r
             {\r
                 //查看iMei号\r
+                #ifdef SUPPORT_CAT1_SERVICE\r
                 char* imei = uapi_dev_runtime_get_cat1_imei();\r
                 uint8_t retry = 0;\r
                 while(strlen(imei) == 0 && retry < 3)\r
@@ -2067,6 +2071,7 @@ void factorytest_protocol_soft_test_decode(uint8_t submode,uint8_t testitem,uint
                         0x06,\r
                         (uint8_t *)imei,\r
                         strlen(imei));\r
+                #endif\r
             }else if(testitem == 0x07)\r
             {\r
                 //拨打电话\r
index fcff556..094beea 100644 (file)
@@ -250,7 +250,9 @@ static void custom_fileoperate_service_check_task(void const *arg)
             break;
 
         case CUSTOM_FILEOPERATE_MSG_TYPE_BATTERY_DATA_SAVE:
-            // battery_save_data();
+#ifdef SUPPORT_BATTERY_SERVICE
+            battery_save_data();
+#endif
             break;
 
         case CUSTOM_FILEOPERATE_MSG_TYPE_MESSAGE_DATA_NOTIFY:
index f06299f..231d82d 100644 (file)
@@ -138,6 +138,8 @@ uint8_t uapi_dev_runtime_get_transmitting_status(void)
     return g_runtime.transmitting_status;
 }
 
+#ifdef SUPPORT_CAT1_SERVICE
+
 void uapi_dev_runtime_set_cat1_powerstat(uint8_t cat1_powerOn)
 {
     cat1_api_runtime_set_cat1_powerstat(cat1_powerOn);
@@ -225,6 +227,7 @@ char* uapi_dev_runtime_get_cat1_modemver(void)
     return cat1_api_runtime_get_cat1_modemver();
 }
 
+#endif
 
 /**
  * 设置 dialname
index a352589..f6d5893 100644 (file)
 #include <stdio.h>
 #include "errcode.h"
 #include "soc_osal.h"
+
+#ifdef SUPPORT_CAT1_SERVICE
 #include "cat1_runtime.h"
+#endif
 
 #ifdef __cplusplus
 #if __cplusplus
@@ -176,6 +179,9 @@ uint8_t uapi_dev_runtime_get_screen_always_on_status(void);
 //关机状态
 void uapi_dev_runtime_set_shutting_down_status(uint8_t status);
 uint8_t uapi_dev_runtime_get_shutting_down_status(void);
+
+
+#ifdef SUPPORT_CAT1_SERVICE
 /***************************************cat1 runtime 变量设置获取函数**************************************************/
 
 
@@ -207,6 +213,7 @@ char* uapi_dev_runtime_get_cat1_pyver(void);
 void uapi_dev_runtime_set_cat1_modemver(char* cat1_operator);
 char* uapi_dev_runtime_get_cat1_modemver(void);    
 
+#endif
 
 /***************************************蓝牙runtime 变量设置获取函数**************************************************/
 /**
index a906111..18e15af 100644 (file)
@@ -1723,11 +1723,18 @@ int32_t uapi_callVolumeGet(void)
 {
     return AudioServiceGetVolume(AUDIO_STREAM_VOICE_CALL_VOLTE);
 }
+
+#ifdef SUPPORT_CAT1_SERVICE
+
 extern void cat1_api_enable_cat1(bool isopen);
 
+
+#endif
+
 //设置4G能力开关是否开启
 void uapi_set4GCapability(bool isopen)
 {
+#ifdef SUPPORT_CAT1_SERVICE
     if(isopen)
     {
         cat1_api_enable_cat1(true);
@@ -1738,8 +1745,10 @@ void uapi_set4GCapability(bool isopen)
         cat1_api_enable_cat1(false);
 
     }
+#endif
 }
 
+
 #include "bts_le_gap.h"
 
 
@@ -2922,7 +2931,7 @@ void uapi_enter_power_saving_mode(void)
     cm_set_HFP_switch(false);
 
     cm_set_A2DP_switch(false);
-
+#ifdef SUPPORT_CAT1_SERVICE
     //关闭cat1
     if(uapi_dev_runtime_get_cat1_powerstat())
     {
@@ -2930,7 +2939,7 @@ void uapi_enter_power_saving_mode(void)
         uapi_set4GCapability(false);
         #endif
     }
-        
+#endif
     //停止心率周期检测
     
     //进入normal模式
index b7863f4..f3e676f 100644 (file)
@@ -989,9 +989,10 @@ static uint32_t custom_get_imei(uint8_t *para, uint32_t paraLen, char *strCommon
 {
 
     UNUSED(strCommonCmd);
-
+#ifdef SUPPORT_CAT1_SERVICE
     char* imei = uapi_dev_runtime_get_cat1_imei();
     wstp_print("imei:%s\n",imei);
+#endif
     return ERRCODE_SUCC;
 }