流控相关控制
authorhcj <1224667075@qq.com>
Sat, 25 Apr 2026 03:49:50 +0000 (11:49 +0800)
committerhcj <1224667075@qq.com>
Sat, 25 Apr 2026 03:49:50 +0000 (11:49 +0800)
code/sdk/drivers/boards/brandy_evb/board_config/board_leiniao.h
code/sdk/drivers/chips/brandy/porting/uart/uart_porting.c
code/sdk/zhihui/4g/cat1Service/Service/cat1_ctl.c
code/sdk/zhihui/4gTest/cat1_porting.c

index 8775643..36342fe 100644 (file)
  * Author: @CompanyNameTag
  * Create: 2020-02-19
  */
-#ifndef BOARD_LEINIAO_CONFIG_H
-#define BOARD_LEINIAO_CONFIG_H
-
-#include "pinctrl_porting.h"
-#include "gpio_porting.h"
-#include "platform_types.h"
-
-/**
- * @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_MAX, 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_MAX, 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_I2C2_M3, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_UP, HAL_PIO_IE_ENBALE },  // S_MGPIO1 I2C2 SCL Sensor 6轴 指南针 心率
-    { HAL_PIO_FUNC_I2C2_M3, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_UP, HAL_PIO_IE_ENBALE },  // S_MGPIO2 I2C2 SDA Sensor
-    { 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_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE },  // S_MGPIO15 I2C2 SCL Sensor 6轴 指南针 心率
-    { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE },  // 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_UP, 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_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE },     // S_MGPIO21 uart1 rts
-    { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_UP, HAL_PIO_IE_ENBALE },     // S_MGPIO22 uart1 cts
-    { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_UP, HAL_PIO_IE_DISABLE },   // S_MGPIO23 NC
-    { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, 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_I2S1_M1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE },   // S_AGPIO_L1 i2s1
-    { HAL_PIO_FUNC_I2S1_M1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE },   // S_AGPIO_L2
-    { HAL_PIO_FUNC_I2S1_M1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE },   // S_AGPIO_L3
-    { HAL_PIO_FUNC_I2S1_M1, 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_UP, HAL_PIO_IE_ENBALE },    // S_AGPIO_L12 i2c data HX3507_SDIO
+ #ifndef BOARD_LEINIAO_CONFIG_H
+ #define BOARD_LEINIAO_CONFIG_H
+ 
+ #include "pinctrl_porting.h"
+ #include "gpio_porting.h"
+ #include "platform_types.h"
+ 
+ /**
+  * @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_MAX, 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_MAX, 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_I2C2_M3, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_UP, HAL_PIO_IE_ENBALE },  // S_MGPIO1 I2C2 SCL Sensor 6轴 指南针 心率
+     { HAL_PIO_FUNC_I2C2_M3, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_UP, HAL_PIO_IE_ENBALE },  // S_MGPIO2 I2C2 SDA Sensor
+     { 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_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE },  // S_MGPIO15 I2C2 SCL Sensor 6轴 指南针 心率
+     { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE },  // 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_UP, 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
+     #ifdef SIO_UART_DISABLE_FLOW_CTRL
+      { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE },     // S_MGPIO21 uart1 rts
+     { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_UP, HAL_PIO_IE_ENBALE },     // S_MGPIO22 uart1 cts
+     #else
+     { HAL_PIO_FUNC_UART1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE },     // S_MGPIO21 uart1 rts
+     { HAL_PIO_FUNC_UART1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_ENBALE },     // S_MGPIO22 uart1 cts
+     #endif
+     { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_UP, HAL_PIO_IE_DISABLE },   // S_MGPIO23 NC
+     { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, 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_I2S1_M1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE },   // S_AGPIO_L1 i2s1
+     { HAL_PIO_FUNC_I2S1_M1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE },   // S_AGPIO_L2
+     { HAL_PIO_FUNC_I2S1_M1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE },   // S_AGPIO_L3
+     { HAL_PIO_FUNC_I2S1_M1, 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_UP, 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_UP, 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_MAX, 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_UP, HAL_PIO_IE_ENBALE },   // S_AGPIO_L28    CAT_1复位 CAT1_RESET_N  拉低有效 key4
-    { 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_MAX, 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_DISABLE  },   // 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_UP, 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 1
-
-//需要配置默认输出的,以及需要配置默认输入中断函数的。
-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_L24, 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_L24, 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_L16, HAL_GPIO_DIRECTION_OUTPUT, HAL_GPIO_LEVEL_HIGH, 0, NULL },
-//默认关闭马达
-    {   S_AGPIO_L32, HAL_GPIO_DIRECTION_OUTPUT, HAL_GPIO_LEVEL_LOW, 0, NULL },
-    {   S_AGPIO_R0, HAL_GPIO_DIRECTION_OUTPUT, HAL_GPIO_LEVEL_LOW, 0, NULL },
-    {   S_HGPIO4, HAL_GPIO_DIRECTION_OUTPUT, HAL_GPIO_LEVEL_LOW, 0, NULL },
-    {   S_HGPIO0, 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_HIGH, 0, NULL },
-    {   S_AGPIO_L14, HAL_GPIO_DIRECTION_OUTPUT, HAL_GPIO_LEVEL_HIGH, 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
-};
-/**
- * @}
- */
-#endif
+ 
+     { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_UP, 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_MAX, 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_UP, HAL_PIO_IE_ENBALE },   // S_AGPIO_L28    CAT_1复位 CAT1_RESET_N  拉低有效 key4
+     { 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_MAX, 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_DISABLE  },   // 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_UP, 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 1
+ 
+ //需要配置默认输出的,以及需要配置默认输入中断函数的。
+ 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_L24, 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_L24, 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
+    #ifdef SIO_UART_DISABLE_FLOW_CTRL
+     {   S_AGPIO_L13, HAL_GPIO_DIRECTION_OUTPUT, HAL_GPIO_LEVEL_HIGH, 0, NULL },
+    #else
+     {   S_AGPIO_L13, HAL_GPIO_DIRECTION_OUTPUT, HAL_GPIO_LEVEL_LOW, 0, NULL },
+    #endif
+     // {   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_L16, HAL_GPIO_DIRECTION_OUTPUT, HAL_GPIO_LEVEL_HIGH, 0, NULL },
+ //默认关闭马达
+     {   S_AGPIO_L32, HAL_GPIO_DIRECTION_OUTPUT, HAL_GPIO_LEVEL_LOW, 0, NULL },
+     {   S_AGPIO_R0, HAL_GPIO_DIRECTION_OUTPUT, HAL_GPIO_LEVEL_LOW, 0, NULL },
+     {   S_HGPIO4, HAL_GPIO_DIRECTION_OUTPUT, HAL_GPIO_LEVEL_LOW, 0, NULL },
+     {   S_HGPIO0, 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_HIGH, 0, NULL },
+     {   S_AGPIO_L14, HAL_GPIO_DIRECTION_OUTPUT, HAL_GPIO_LEVEL_HIGH, 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
+ };
+ /**
+  * @}
+  */
+ #endif
+ 
\ No newline at end of file
index de05aee..43abcdd 100644 (file)
  * History: \n
  * 2022-06-06, Create file. \n
  */
-#include <stdio.h>
-#include "dma_porting.h"
-#include "debug_print.h"
-#include "hal_uart_v120.h"
-#include "uart_porting.h"
-#ifdef SUPPORT_HAL_PINCTRL
-#include "pinctrl_porting.h"
-#include "pinctrl.h"
-#endif
-#include "uart.h"
-#include "oal_interface.h"
-#include "platform_core.h"
-#include "securec.h"
-#include "soc_osal.h"
-#ifdef SUPPORT_CLOCKS_CORE
-#include "clocks_core_common.h"
-#endif
-#if defined(SUPPORT_TEST_COMMON)
-#include "test_suite_uart.h"
-#endif
-#if defined(SUPPORT_AT_CMD)
-#include "at_cmd_api.h"
-#endif
-#ifndef BUILD_APPLICATION_SSB
-#include "log_uart.h"
-#include "cmsis_os.h"
-#endif
-#if defined(SW_RTT_DEBUG)
-#include "SEGGER_RTT.h"
-#endif
-
-#ifdef BUILD_APPLICATION_SSB
-#define UART_RX_BUFFER_SIZE 1
-#else
-
-/**
- * UART_RX_BUFFER SIZE  似乎只能是 56 更多没用
+ #include <stdio.h>
+ #include "dma_porting.h"
+ #include "debug_print.h"
+ #include "hal_uart_v120.h"
+ #include "uart_porting.h"
+ #ifdef SUPPORT_HAL_PINCTRL
+ #include "pinctrl_porting.h"
+ #include "pinctrl.h"
+ #endif
+ #include "uart.h"
+ #include "oal_interface.h"
+ #include "platform_core.h"
+ #include "securec.h"
+ #include "soc_osal.h"
+ #ifdef SUPPORT_CLOCKS_CORE
+ #include "clocks_core_common.h"
+ #endif
+ #if defined(SUPPORT_TEST_COMMON)
+ #include "test_suite_uart.h"
+ #endif
+ #if defined(SUPPORT_AT_CMD)
+ #include "at_cmd_api.h"
+ #endif
+ #ifndef BUILD_APPLICATION_SSB
+ #include "log_uart.h"
+ #include "cmsis_os.h"
+ #endif
+ #if defined(SW_RTT_DEBUG)
+ #include "SEGGER_RTT.h"
+ #endif
+ 
+ #ifdef BUILD_APPLICATION_SSB
+ #define UART_RX_BUFFER_SIZE 1
+ #else
+ 
+ 
+//  #include "lwipopts_default.h"
+ /**
+  * UART_RX_BUFFER SIZE  似乎只能是 56 更多没用
+  */
+ #define UART_RX_BUFFER_SIZE 56 
+ 
+ #endif
+ 
+ #define AT_BLE_HEADER_LENGTH 49
+ #define AT_CMD_BUFSIZE_MAX   256
+ #define UARTILPR        0x20
+ #define UARTIBRD        0x24
+ #define UARTFBRD        0x28
+ #define UARTLCRH        0x2c
+ #define UARTCR          0x30
+ #define UARTIFLS        0x34
+ #define UARTIMSC        0x38
+ #define UARTDMACR       0x48
+ #define UARTRESET       (M_CTL_RB_BASE + 0x0168)
+ #define UARTBUS0        0x1
+ #define UARTBUS1        0x0
+ 
+ /** 
+  * CUSTOM_UART_RATE = 500000 可以看蓝牙日志
+  *                    2000000 可以加快下载文件速度
  */
-#define UART_RX_BUFFER_SIZE 56 
-
-#endif
-
-#define AT_BLE_HEADER_LENGTH 49
-#define AT_CMD_BUFSIZE_MAX   256
-#define UARTILPR        0x20
-#define UARTIBRD        0x24
-#define UARTFBRD        0x28
-#define UARTLCRH        0x2c
-#define UARTCR          0x30
-#define UARTIFLS        0x34
-#define UARTIMSC        0x38
-#define UARTDMACR       0x48
-#define UARTRESET       (M_CTL_RB_BASE + 0x0168)
-#define UARTBUS0        0x1
-#define UARTBUS1        0x0
-
-/** 
- * CUSTOM_UART_RATE = 500000 可以看蓝牙日志
- *                    2000000 可以加快下载文件速度
-*/
-#define CUSTOM_UART_RATE 500000
-typedef struct {
-    pin_mode_t tx_pin_mode;
-    pin_mode_t rx_pin_mode;
-    pin_mode_t cts_pin_mode;
-    pin_mode_t rts_pin_mode;
-} uart_pin_mode_t;
-
-typedef struct uart_config {
-    uart_pin_config_t pin;
-    uart_pin_mode_t pin_mode;
-    core_irq_t irq_num;
-    osal_irq_handler irq_func;
-    uart_rx_callback_t rx_callback;
-    uart_attr_t line_config;
-    uart_buffer_config_t buffer_config;
-#ifndef BUILD_APPLICATION_SSB
-    osal_mutex uart_mutex;
-    bool support_mutex;
-#endif
-} uart_config_t;
-
-const uintptr_t g_uart_base_addrs[UART_BUS_MAX_NUM] = {
-    (uintptr_t)UART0_BASE,
-    (uintptr_t)UART1_BASE,
-};
-
-uintptr_t uart_porting_base_addr_get(uart_bus_t bus)
-{
-    return g_uart_base_addrs[bus];
-}
-
-static bool g_sw_debug_uart_enabled = false;
-uint8_t g_uart0_rx_buffer[UART_RX_BUFFER_SIZE];
-uint8_t g_uart1_rx_buffer[UART_RX_BUFFER_SIZE];
-// #ifdef DISABLE_UART_LOG
-uint8_t g_uart2_rx_buffer[UART_RX_BUFFER_SIZE];
-// #endif
-#if defined(SUPPORT_AT_CMD)
-static void at_cmd_uart_rx_callback(const void *buf, uint16_t buf_len, bool remaining);
-#endif
-
-void log_factory_at_callback(const void *buffer, uint16_t length, bool remaining);
-
-static uart_config_t g_uart_config[UART_BUS_MAX_NUMBER] = {
-#ifdef BUILD_APPLICATION_SSB
-    /* UART_BUS_0 for debug print */
-    {
-        {
-            .tx_pin = S_MGPIO19,
-            .rx_pin = S_MGPIO20,
-            .cts_pin = PIN_NONE,
-            .rts_pin = PIN_NONE
-        },
-        {
-            .tx_pin_mode = (pin_mode_t)HAL_PIO_FUNC_UART1,
-            .rx_pin_mode = (pin_mode_t)HAL_PIO_FUNC_UART1,
-            .cts_pin_mode = (pin_mode_t)HAL_PIO_FUNC_MAX,
-            .rts_pin_mode = (pin_mode_t)HAL_PIO_FUNC_MAX
-        },
-        UART_0_IRQN,
-        (osal_irq_handler)irq_uart0_handler,
-        NULL,
-        {
-            .baud_rate = 115200,
-            .data_bits = UART_DATA_BIT_8,
-            .parity = UART_PARITY_NONE,
-            .stop_bits = UART_STOP_BIT_1,
-        },
-        {
-            .rx_buffer_size = UART_RX_BUFFER_SIZE,
-            .rx_buffer = g_uart0_rx_buffer,
-        }
-    },
-    /* UART_BUS_1 for codeloader */
-    {
-        {
-            .tx_pin     = S_MGPIO33,
-            .rx_pin     = S_MGPIO34,
-            .cts_pin    = PIN_NONE,
-            .rts_pin    = PIN_NONE
-        },
-        {
-            .tx_pin_mode     = (pin_mode_t)HAL_PIO_FUNC_UART_HS_UART,
-            .rx_pin_mode     = (pin_mode_t)HAL_PIO_FUNC_UART_HS_UART,
-            .cts_pin_mode    = (pin_mode_t)HAL_PIO_FUNC_MAX,
-            .rts_pin_mode    = (pin_mode_t)HAL_PIO_FUNC_MAX,
-        },
-        UART_1_IRQN,
-        (osal_irq_handler)irq_uart1_handler,
-        NULL,
-        {
-            .baud_rate = 115200,
-            .data_bits = UART_DATA_BIT_8,
-            .parity = UART_PARITY_NONE,
-            .stop_bits = UART_STOP_BIT_1,
-        },
-        {
-            .rx_buffer_size = UART_RX_BUFFER_SIZE,
-            .rx_buffer = g_uart1_rx_buffer,
-        }
-    }
-#else
-    /** UART_BUS_0, which is used to at cmd and debug print in wstp version,
-     * and which is used to testustie and debug print in testsuite version
-     */
-    #if defined(SUPPORT_PPP_SERVICE_POLLING)
-    {
-        {
-            .tx_pin = PIN_NONE,
-            .rx_pin = PIN_NONE,
-            .cts_pin = PIN_NONE,
-            .rts_pin = PIN_NONE
-        },//pin
-        {
-            .tx_pin_mode = (pin_mode_t)HAL_PIO_FUNC_MAX,
-            .rx_pin_mode = (pin_mode_t)HAL_PIO_FUNC_MAX,
-            .cts_pin_mode = (pin_mode_t)HAL_PIO_FUNC_MAX,
-            .rts_pin_mode = (pin_mode_t)HAL_PIO_FUNC_MAX
-        },//pin_mode
-        UART_0_IRQN,//irq_num
-        (osal_irq_handler)irq_uart0_handler,//irq_func
-        NULL,//rx_callback
-        {
-            .baud_rate = 115200,
-            .data_bits = UART_DATA_BIT_8,
-            .parity = UART_PARITY_NONE,
-            .stop_bits = UART_STOP_BIT_1,
-        },//line_config
-        {
-            .rx_buffer_size = UART_RX_BUFFER_SIZE,
-            .rx_buffer = g_uart0_rx_buffer,
-        },
-        NULL, //uart_mutex
-        false, //support_mutex
-    },
-    #elif defined(SUPPORT_PPP_SERVICE_INTERRUPT) || defined(SUPPORT_CAT1_SERVICE) 
-    {
-        {
-            .tx_pin = S_MGPIO19,
-            .rx_pin = S_MGPIO20,
-            .cts_pin = PIN_NONE,
-            .rts_pin = PIN_NONE
-        },
-        {
-            .tx_pin_mode = (pin_mode_t)HAL_PIO_FUNC_UART1,
-            .rx_pin_mode = (pin_mode_t)HAL_PIO_FUNC_UART1,
-            .cts_pin_mode = (pin_mode_t)HAL_PIO_FUNC_MAX,
-            .rts_pin_mode = (pin_mode_t)HAL_PIO_FUNC_MAX
-        },
-        UART_0_IRQN,
-        (osal_irq_handler)irq_uart0_handler,
-        NULL,
-        {
-            .baud_rate = 921600,
-            .data_bits = UART_DATA_BIT_8,
-            .parity = UART_PARITY_NONE,
-            .stop_bits = UART_STOP_BIT_1,
-        },
-        {
-            .rx_buffer_size = UART_RX_BUFFER_SIZE,
-            .rx_buffer = g_uart0_rx_buffer,
-        },
-        NULL,
-        false,
-    },
-    #else // SUPPORT_CAT1_SERVICE
-    {
-        {
-            .tx_pin = S_MGPIO19,
-            .rx_pin = S_MGPIO20,
-            .cts_pin = PIN_NONE,
-            .rts_pin = PIN_NONE
-        },
-        {
-            .tx_pin_mode = (pin_mode_t)HAL_PIO_FUNC_UART1,
-            .rx_pin_mode = (pin_mode_t)HAL_PIO_FUNC_UART1,
-            .cts_pin_mode = (pin_mode_t)HAL_PIO_FUNC_MAX,
-            .rts_pin_mode = (pin_mode_t)HAL_PIO_FUNC_MAX
-        },
-        UART_0_IRQN,
-        (osal_irq_handler)irq_uart0_handler,
-#if defined(SUPPORT_TEST_COMMON)
-        test_suite_uart_rx_callback,
-#elif defined(SUPPORT_AT_CMD)
-        at_cmd_uart_rx_callback,
-#else
-        NULL,
-#endif
-        {
-            .baud_rate = CUSTOM_UART_RATE,
-            .data_bits = UART_DATA_BIT_8,
-            .parity = UART_PARITY_NONE,
-            .stop_bits = UART_STOP_BIT_1,
-        },
-        {
-            .rx_buffer_size = UART_RX_BUFFER_SIZE,
-            .rx_buffer = g_uart0_rx_buffer,
-        },
-        NULL,
-#if defined(SUPPORT_TEST_COMMON)
-        false,
-#else
-        true,
-#endif
-    },
-
-#endif // SUPPORT_CAT1_SERVICE
-    /* UART_BUS_1 is used to hso uart */
-    {
-        {
-            .tx_pin = S_MGPIO33,
-            .rx_pin = S_MGPIO34,
-            .cts_pin = PIN_NONE,
-            .rts_pin = PIN_NONE
-        },
-        {
-            .tx_pin_mode = (pin_mode_t)HAL_PIO_FUNC_UART_HS_UART,
-            .rx_pin_mode = (pin_mode_t)HAL_PIO_FUNC_UART_HS_UART,
-            .cts_pin_mode = (pin_mode_t)HAL_PIO_FUNC_MAX,
-            .rts_pin_mode = (pin_mode_t)HAL_PIO_FUNC_MAX
-        },
-        UART_1_IRQN,
-        (osal_irq_handler)irq_uart1_handler,
-#ifndef FT_SINGLE_UART
-#if SYS_DEBUG_MODE_ENABLE == YES
-        log_uart_rx_callback,
-#else
-        NULL,
-#endif
-#else
-        log_factory_at_callback,
-#endif
-        {
-            .baud_rate = CUSTOM_UART_RATE,
-            .data_bits = UART_DATA_BIT_8,
-            .parity = UART_PARITY_NONE,
-            .stop_bits = UART_STOP_BIT_1,
-        },
-        {
-            .rx_buffer_size = UART_RX_BUFFER_SIZE,
-            .rx_buffer = g_uart1_rx_buffer,
-        },
-        NULL,
-        false
-    }
-// #ifdef DISABLE_UART_LOG
-    ,
-    /* UART_BUS_2 is used to hso uart */
-    {
-       
-        {
-            .tx_pin = PIN_NONE,
-            .rx_pin = PIN_NONE,
-            .cts_pin = PIN_NONE,
-            .rts_pin = PIN_NONE
-        },
-        {
-            .tx_pin_mode = (pin_mode_t)HAL_PIO_FUNC_MAX,
-            .rx_pin_mode = (pin_mode_t)HAL_PIO_FUNC_MAX,
-            .cts_pin_mode = (pin_mode_t)HAL_PIO_FUNC_MAX,
-            .rts_pin_mode = (pin_mode_t)HAL_PIO_FUNC_MAX
-        },
-        RESERVED_80_IRQn,
-        NULL,
-        NULL,
-        {
-            .baud_rate = CUSTOM_UART_RATE,
-            .data_bits = UART_DATA_BIT_8,
-            .parity = UART_PARITY_NONE,
-            .stop_bits = UART_STOP_BIT_1,
-        },
-        {
-            .rx_buffer_size = UART_RX_BUFFER_SIZE,
-            .rx_buffer = g_uart2_rx_buffer,
-        },
-        NULL,
-        false
-    }
-
-// #endif
-#endif
-};
-static uart_recovery_regs_t g_uart_recovery_reg[UART_BUS_MAX_NUMBER] = { 0 };
-
-#ifdef FT_SINGLE_UART
-void log_factory_at_callback(const void *buffer, uint16_t length, bool remaining)
-{
-#ifdef XTS_SUPPORT
-    #if SYS_DEBUG_MODE_ENABLE == YES
-        log_uart_rx_callback(buffer, length, remaining);
-    #endif
-    if (zdiag_is_enable() == false) {
-    #ifdef SUPPORT_AT_CMD
-        at_cmd_msg_receive_handler((uint8_t *)buffer, length);
-    #endif
-        hal_uart_clear_pending(UART_BUS_1);
-    }
-    return;
-#endif
-
-#ifndef SUPPORT_RECOVERY_DISPLAY //判定是否是在编译RECOVERY image,本参数不支持RECOVERY
-#ifdef CUSTOM_UTILS
-    if (uapi_custom_uart_rx_enable_flag() == false)
-#endif
-    {
-        if (buffer != NULL && ((uint8_t*)buffer)[0]=='A' && ((uint8_t*)buffer)[1]=='T') 
-        {
-            if (zdiag_is_enable() == false) {
-                at_cmd_msg_receive_handler((uint8_t *)buffer, length);
-                hal_uart_clear_pending(UART_BUS_1);
-            }
-        }else{
-            hal_uart_clear_pending(UART_BUS_1);
-        }
-        return ;
-    }
-#endif
-#if SYS_DEBUG_MODE_ENABLE == YES
-    log_uart_rx_callback(buffer, length, remaining);
-#endif
-    if (zdiag_is_enable() == false) {
-        at_cmd_msg_receive_handler((uint8_t *)buffer, length);
-        hal_uart_clear_pending(UART_BUS_1);
-    }
-}
-#endif
-
-void uart_port_register_hal_funcs(uart_bus_t bus)
-{
-    hal_uart_register_funcs(bus, hal_uart_v120_funcs_get());
-}
-
-void uart_port_unregister_hal_funcs(uart_bus_t bus)
-{
-    hal_uart_unregister_funcs(bus);
-}
-
-uint32_t uart_port_get_clock_value(uart_bus_t bus)
-{
-    return uart_get_clock_value(bus);
-}
-
-void uart_port_config_pinmux(uart_bus_t bus)
-{
-    if (bus == UART_BUS_1) {
-        uapi_pin_set_mode(g_uart_config[UART_BUS_1].pin.tx_pin, g_uart_config[UART_BUS_1].pin_mode.tx_pin_mode);
-        uapi_pin_set_mode(g_uart_config[UART_BUS_1].pin.rx_pin, g_uart_config[UART_BUS_1].pin_mode.rx_pin_mode);
-    } else if (bus == UART_BUS_0) {
-        uapi_pin_set_mode(g_uart_config[UART_BUS_0].pin.tx_pin, g_uart_config[UART_BUS_0].pin_mode.tx_pin_mode);
-        uapi_pin_set_mode(g_uart_config[UART_BUS_0].pin.rx_pin, g_uart_config[UART_BUS_0].pin_mode.rx_pin_mode);
-    }
-}
-
-void uart_port_register_irq(uart_bus_t bus)
-{
-    osal_irq_request(g_uart_config[bus].irq_num, g_uart_config[bus].irq_func, NULL, NULL, NULL);
-    osal_irq_set_priority(g_uart_config[bus].irq_num, irq_prio(g_uart_config[bus].irq_num));
-    osal_irq_enable(g_uart_config[bus].irq_num);
-}
-
-void uart_port_unregister_irq(uart_bus_t bus)
-{
-    osal_irq_disable(g_uart_config[bus].irq_num);
-}
-
-void irq_uart0_handler(void)
-{
-    hal_uart_irq_handler(UART_BUS_0);
-}
-
-void irq_uart1_handler(void)
-{
-    hal_uart_irq_handler(UART_BUS_1);
-}
-
-#ifdef SUPPORT_AT_CMD
-static void at_cmd_uart_rx_callback(const void *buf, uint16_t buf_len, bool remaining)
-{
-    unused(remaining);
-    #ifndef FT_SINGLE_UART
-    at_cmd_msg_receive_handler((uint8_t *)buf, buf_len);
-    #endif
-    // #ifdef SUPPORT_CAT1_SERVICE
-    // cat1_uart_receive_handler((uint8_t *)buf, buf_len);
-    // #endif
-    hal_uart_clear_pending(SW_DEBUG_UART_BUS);
-}
-#endif
-
-void uart_config_init(void)
-{
-    for (uint8_t i = 0; i < UART_BUS_MAX_NUM; i++) {
-        if ((g_uart_config[i].pin.tx_pin != PIN_NONE) || (g_uart_config[i].pin.rx_pin != PIN_NONE)) {
-            uapi_uart_init(i, &(g_uart_config[i].pin), &(g_uart_config[i].line_config), NULL,
-                           &(g_uart_config[i].buffer_config));
-        }
-        if (g_uart_config[i].rx_callback != NULL) {
-            uapi_uart_register_rx_callback(i, UART_RX_CONDITION_FULL_OR_SUFFICIENT_DATA_OR_IDLE,
-                                           (uint32_t)(g_uart_config[i].buffer_config.rx_buffer_size),
-                                           g_uart_config[i].rx_callback);
-        }
-
-#ifndef BUILD_APPLICATION_SSB
-        if (g_uart_config[i].support_mutex == true) {
-            osal_mutex_init(&(g_uart_config[i].uart_mutex));
-        }
-#endif
-    }
-}
-
-#if (defined SW_UART_DEBUG)||(defined FT_SINGLE_UART)
-void sw_debug_uart_deinit(void)
-{
-    uapi_uart_deinit(SW_DEBUG_UART_BUS);
-}
-
-void sw_debug_uart_init(uint32_t baud_rate)
-{
-    g_uart_config[SW_DEBUG_UART_BUS].line_config.baud_rate = baud_rate;
-    uapi_uart_init(SW_DEBUG_UART_BUS, &(g_uart_config[SW_DEBUG_UART_BUS].pin),
-                   &(g_uart_config[SW_DEBUG_UART_BUS].line_config), NULL,
-                   &(g_uart_config[SW_DEBUG_UART_BUS].buffer_config));
-}
-
-void sw_debug_uart_reset_baund(void)
-{
-    while (uapi_uart_has_pending_transmissions(SW_DEBUG_UART_BUS)) { }
-    uapi_uart_set_attr(SW_DEBUG_UART_BUS, &g_uart_config[SW_DEBUG_UART_BUS].line_config);
-}
-#endif
-
-void print_str(const char *str, ...)
-{
-    static uint8_t s[1024];  // 1024 means string max length.
-    va_list args;
-    int32_t str_len;
-
-    if ((str == NULL) || (strlen(str) == 0)) {
-        return;
-    }
-
-    va_start(args, str);
-    str_len = vsprintf_s((char *)s, sizeof(s), str, args);
-    va_end(args);
-
-    if (str_len < 0) {
-        return;
-    }
-#if defined(SW_RTT_DEBUG)
-    SEGGER_RTT_Write(0, (const char *)s, str_len);
-#elif defined(SW_UART_DEBUG)
-    if (hal_uart_get_funcs(SW_DEBUG_UART_BUS) == NULL) {
-        return;
-    }
-    uapi_uart_write(SW_DEBUG_UART_BUS, (const void *)s, (uint32_t)str_len, 0);
-#else
-#endif
-}
-
-void hal_uart_clear_pending(uart_bus_t uart)
-{
-    switch (uart) {
-        case UART_BUS_0:
-            int_clear_pending_irq(UART_0_IRQN);
-            break;
-        case UART_BUS_1:
-            int_clear_pending_irq(UART_1_IRQN);
-            break;
-        default:
-            break;
-    }
-}
-
-#if defined(CONFIG_UART_SUPPORT_DMA)
-uint8_t uart_port_get_dma_trans_dest_handshaking(uart_bus_t bus)
-{
-    switch (bus) {
-        case UART_BUS_0:
-            return (uint8_t)HAL_DMA_HANDSHAKING_UART_L_TX;
-        case UART_BUS_1:
-            return (uint8_t)HAL_DMA_HANDSHAKING_UART_H0_TX;
-        default:
-            return (uint8_t)HAL_DMA_HANDSHAKING_MAX_NUM;
-    }
-}
-
-uint8_t uart_port_get_dma_trans_src_handshaking(uart_bus_t bus)
-{
-    switch (bus) {
-        case UART_BUS_0:
-            return (uint8_t)HAL_DMA_HANDSHAKING_UART_L_RX;
-        case UART_BUS_1:
-            return (uint8_t)HAL_DMA_HANDSHAKING_UART_H0_RX;
-        default:
-            return (uint8_t)HAL_DMA_HANDSHAKING_MAX_NUM;
-    }
-}
-#endif  /* CONFIG_UART_SUPPORT_DMA */
-
-uint32_t uart_porting_lock(uart_bus_t bus)
-{
-#ifndef BUILD_APPLICATION_SSB
-    if ((g_uart_config[bus].support_mutex == true) && (osKernelGetState() == osKernelRunning) &&
-        (osal_in_interrupt() == 0)) {
-        return (uint32_t)osal_mutex_lock_timeout(&(g_uart_config[bus].uart_mutex), OSAL_MUTEX_WAIT_FOREVER);
-    }
-#else
-    UNUSED(bus);
-#endif
-    return ERRCODE_SUCC;
-}
-
-void uart_porting_unlock(uart_bus_t bus, uint32_t irq_sts)
-{
-#ifndef BUILD_APPLICATION_SSB
-    unused(irq_sts);
-    if ((g_uart_config[bus].support_mutex == true) && (osKernelGetState() == osKernelRunning) &&
-        (osal_in_interrupt() == 0)) {
-        osal_mutex_unlock(&(g_uart_config[bus].uart_mutex));
-    }
-#else
-    UNUSED(bus);
-    UNUSED(irq_sts);
-#endif
-}
-
-void uart_save_reg(uart_bus_t bus)
-{
-    uint32_t base = uart_porting_base_addr_get(bus);
-    g_uart_recovery_reg[bus].uartilpr = readw(base + UARTILPR);
-    g_uart_recovery_reg[bus].uartibrd = readw(base + UARTIBRD);
-    g_uart_recovery_reg[bus].uartfbrd = readw(base + UARTFBRD);
-    g_uart_recovery_reg[bus].uartlcr_h = readw(base + UARTLCRH);
-    g_uart_recovery_reg[bus].uartcr = readw(base + UARTCR);
-    g_uart_recovery_reg[bus].uartifls = readw(base + UARTIFLS);
-    g_uart_recovery_reg[bus].uartimsc = readw(base + UARTIMSC);
-    g_uart_recovery_reg[bus].uartdmacr = readw(base + UARTDMACR);
-}
-
-void uart_recovery_reg(uart_bus_t bus)
-{
-    uint16_t uart_bit = UARTBUS0;
-    if (bus == UART_BUS_0) {
-        uart_bit = UARTBUS0;
-    } else if (bus == UART_BUS_1) {
-        uart_bit = UARTBUS1;
-    }
-    reg16_clrbit(UARTRESET, uart_bit);
-    reg16_setbit(UARTRESET, uart_bit);
-    uint32_t base = uart_porting_base_addr_get(bus);
-    writew(base + UARTILPR, g_uart_recovery_reg[bus].uartilpr);
-    writew(base + UARTIBRD, g_uart_recovery_reg[bus].uartibrd);
-    writew(base + UARTFBRD, g_uart_recovery_reg[bus].uartfbrd);
-    writew(base + UARTLCRH, g_uart_recovery_reg[bus].uartlcr_h);
-    writew(base + UARTCR, g_uart_recovery_reg[bus].uartcr);
-    writew(base + UARTIFLS, g_uart_recovery_reg[bus].uartifls);
-    writew(base + UARTIMSC, g_uart_recovery_reg[bus].uartimsc);
-    writew(base + UARTDMACR, g_uart_recovery_reg[bus].uartdmacr);
-}
-
-void uart_h0_suspend(void)
-{
-    uart_save_reg(UART_BUS_0);
-}
-
-void uart_h0_resume(void)
-{
-    uart_recovery_reg(UART_BUS_0);
-}
-
-void uart_h1_suspend(void)
-{
-    uart_save_reg(UART_BUS_1);
-}
-
-void uart_h1_resume(void)
-{
-    uart_recovery_reg(UART_BUS_1);
-}
\ No newline at end of file
+ #define CUSTOM_UART_RATE 500000
+ typedef struct {
+     pin_mode_t tx_pin_mode;
+     pin_mode_t rx_pin_mode;
+     pin_mode_t cts_pin_mode;
+     pin_mode_t rts_pin_mode;
+ } uart_pin_mode_t;
+ 
+ typedef struct uart_config {
+     uart_pin_config_t pin;
+     uart_pin_mode_t pin_mode;
+     core_irq_t irq_num;
+     osal_irq_handler irq_func;
+     uart_rx_callback_t rx_callback;
+     uart_attr_t line_config;
+     uart_buffer_config_t buffer_config;
+ #ifndef BUILD_APPLICATION_SSB
+     osal_mutex uart_mutex;
+     bool support_mutex;
+ #endif
+ } uart_config_t;
+ 
+ const uintptr_t g_uart_base_addrs[UART_BUS_MAX_NUM] = {
+     (uintptr_t)UART0_BASE,
+     (uintptr_t)UART1_BASE,
+ };
+ 
+ uintptr_t uart_porting_base_addr_get(uart_bus_t bus)
+ {
+     return g_uart_base_addrs[bus];
+ }
+ 
+ static bool g_sw_debug_uart_enabled = false;
+ uint8_t g_uart0_rx_buffer[UART_RX_BUFFER_SIZE];
+ uint8_t g_uart1_rx_buffer[UART_RX_BUFFER_SIZE];
+ // #ifdef DISABLE_UART_LOG
+ uint8_t g_uart2_rx_buffer[UART_RX_BUFFER_SIZE];
+ // #endif
+ #if defined(SUPPORT_AT_CMD)
+ static void at_cmd_uart_rx_callback(const void *buf, uint16_t buf_len, bool remaining);
+ #endif
+ 
+ void log_factory_at_callback(const void *buffer, uint16_t length, bool remaining);
+ 
+ static uart_config_t g_uart_config[UART_BUS_MAX_NUMBER] = {
+ #ifdef BUILD_APPLICATION_SSB
+     /* UART_BUS_0 for debug print */
+     {
+         {
+             .tx_pin = S_MGPIO19,
+             .rx_pin = S_MGPIO20,
+             .cts_pin = PIN_NONE,
+             .rts_pin = PIN_NONE
+         },
+         {
+             .tx_pin_mode = (pin_mode_t)HAL_PIO_FUNC_UART1,
+             .rx_pin_mode = (pin_mode_t)HAL_PIO_FUNC_UART1,
+             .cts_pin_mode = (pin_mode_t)HAL_PIO_FUNC_MAX,
+             .rts_pin_mode = (pin_mode_t)HAL_PIO_FUNC_MAX
+         },
+         UART_0_IRQN,
+         (osal_irq_handler)irq_uart0_handler,
+         NULL,
+         {
+             .baud_rate = 115200,
+             .data_bits = UART_DATA_BIT_8,
+             .parity = UART_PARITY_NONE,
+             .stop_bits = UART_STOP_BIT_1,
+         },
+         {
+             .rx_buffer_size = UART_RX_BUFFER_SIZE,
+             .rx_buffer = g_uart0_rx_buffer,
+         }
+     },
+     /* UART_BUS_1 for codeloader */
+     {
+         {
+             .tx_pin     = S_MGPIO33,
+             .rx_pin     = S_MGPIO34,
+             .cts_pin    = PIN_NONE,
+             .rts_pin    = PIN_NONE
+         },
+         {
+             .tx_pin_mode     = (pin_mode_t)HAL_PIO_FUNC_UART_HS_UART,
+             .rx_pin_mode     = (pin_mode_t)HAL_PIO_FUNC_UART_HS_UART,
+             .cts_pin_mode    = (pin_mode_t)HAL_PIO_FUNC_MAX,
+             .rts_pin_mode    = (pin_mode_t)HAL_PIO_FUNC_MAX,
+         },
+         UART_1_IRQN,
+         (osal_irq_handler)irq_uart1_handler,
+         NULL,
+         {
+             .baud_rate = 115200,
+             .data_bits = UART_DATA_BIT_8,
+             .parity = UART_PARITY_NONE,
+             .stop_bits = UART_STOP_BIT_1,
+         },
+         {
+             .rx_buffer_size = UART_RX_BUFFER_SIZE,
+             .rx_buffer = g_uart1_rx_buffer,
+         }
+     }
+ #else
+     /** UART_BUS_0, which is used to at cmd and debug print in wstp version,
+      * and which is used to testustie and debug print in testsuite version
+      */
+     #if defined(SUPPORT_PPP_SERVICE_POLLING)
+     {
+         {
+             .tx_pin = PIN_NONE,
+             .rx_pin = PIN_NONE,
+             .cts_pin = PIN_NONE,
+             .rts_pin = PIN_NONE
+         },//pin
+         {
+             .tx_pin_mode = (pin_mode_t)HAL_PIO_FUNC_MAX,
+             .rx_pin_mode = (pin_mode_t)HAL_PIO_FUNC_MAX,
+             .cts_pin_mode = (pin_mode_t)HAL_PIO_FUNC_MAX,
+             .rts_pin_mode = (pin_mode_t)HAL_PIO_FUNC_MAX
+         },//pin_mode
+         UART_0_IRQN,//irq_num
+         (osal_irq_handler)irq_uart0_handler,//irq_func
+         NULL,//rx_callback
+         {
+             .baud_rate = 115200,
+             .data_bits = UART_DATA_BIT_8,
+             .parity = UART_PARITY_NONE,
+             .stop_bits = UART_STOP_BIT_1,
+         },//line_config
+         {
+             .rx_buffer_size = UART_RX_BUFFER_SIZE,
+             .rx_buffer = g_uart0_rx_buffer,
+         },
+         NULL, //uart_mutex
+         false, //support_mutex
+     },
+     #elif defined(SUPPORT_PPP_SERVICE_INTERRUPT) || defined(SUPPORT_CAT1_SERVICE)
+     /* UART_BUS_0 for SIO/CAT1:流控引脚与 lwipopts SIO_UART_CTS_PIN/RTS_PIN 一致;若定义 SIO_UART_DISABLE_FLOW_CTRL 则关闭流控避免 CTS 拉高导致无法发送 */
+     {
+         {
+             .tx_pin = S_MGPIO19,
+             .rx_pin = S_MGPIO20,
+ #if defined(SIO_UART_DISABLE_FLOW_CTRL)
+             .cts_pin = PIN_NONE,
+             .rts_pin = PIN_NONE
+ #else
+             .cts_pin = S_MGPIO22,
+             .rts_pin = S_MGPIO21
+ #endif
+         },
+         {
+             .tx_pin_mode = (pin_mode_t)HAL_PIO_FUNC_UART1,
+             .rx_pin_mode = (pin_mode_t)HAL_PIO_FUNC_UART1,
+ #if defined(SIO_UART_DISABLE_FLOW_CTRL)
+             .cts_pin_mode = (pin_mode_t)HAL_PIO_FUNC_MAX,
+             .rts_pin_mode = (pin_mode_t)HAL_PIO_FUNC_MAX
+ #else
+             .cts_pin_mode = (pin_mode_t)HAL_PIO_FUNC_UART1,
+             .rts_pin_mode = (pin_mode_t)HAL_PIO_FUNC_UART1
+ #endif
+         },
+         UART_0_IRQN,
+         (osal_irq_handler)irq_uart0_handler,
+         NULL,
+         {
+             .baud_rate = 921600,
+             .data_bits = UART_DATA_BIT_8,
+             .parity = UART_PARITY_NONE,
+             .stop_bits = UART_STOP_BIT_1,
+         },
+         {
+             .rx_buffer_size = UART_RX_BUFFER_SIZE,
+             .rx_buffer = g_uart0_rx_buffer,
+         },
+         NULL,
+         false,
+     },
+     #else // SUPPORT_CAT1_SERVICE
+     {
+         {
+             .tx_pin = S_MGPIO19,
+             .rx_pin = S_MGPIO20,
+ #if defined(SIO_UART_DISABLE_FLOW_CTRL)
+             .cts_pin = PIN_NONE,
+             .rts_pin = PIN_NONE
+ #else
+             .cts_pin = S_MGPIO22,
+             .rts_pin = S_MGPIO21
+ #endif
+         },
+         {
+             .tx_pin_mode = (pin_mode_t)HAL_PIO_FUNC_UART1,
+             .rx_pin_mode = (pin_mode_t)HAL_PIO_FUNC_UART1,
+ #if defined(SIO_UART_DISABLE_FLOW_CTRL)
+             .cts_pin_mode = (pin_mode_t)HAL_PIO_FUNC_MAX,
+             .rts_pin_mode = (pin_mode_t)HAL_PIO_FUNC_MAX
+ #else
+             .cts_pin_mode = (pin_mode_t)HAL_PIO_FUNC_UART1,
+             .rts_pin_mode = (pin_mode_t)HAL_PIO_FUNC_UART1
+ #endif
+         },
+         UART_0_IRQN,
+         (osal_irq_handler)irq_uart0_handler,
+ #if defined(SUPPORT_TEST_COMMON)
+         test_suite_uart_rx_callback,
+ #elif defined(SUPPORT_AT_CMD)
+         at_cmd_uart_rx_callback,
+ #else
+         NULL,
+ #endif
+         {
+             .baud_rate = CUSTOM_UART_RATE,
+             .data_bits = UART_DATA_BIT_8,
+             .parity = UART_PARITY_NONE,
+             .stop_bits = UART_STOP_BIT_1,
+         },
+         {
+             .rx_buffer_size = UART_RX_BUFFER_SIZE,
+             .rx_buffer = g_uart0_rx_buffer,
+         },
+         NULL,
+ #if defined(SUPPORT_TEST_COMMON)
+         false,
+ #else
+         true,
+ #endif
+     },
+ 
+ #endif // SUPPORT_CAT1_SERVICE
+     /* UART_BUS_1 is used to hso uart */
+     {
+         {
+             .tx_pin = S_MGPIO33,
+             .rx_pin = S_MGPIO34,
+             .cts_pin = PIN_NONE,
+             .rts_pin = PIN_NONE
+         },
+         {
+             .tx_pin_mode = (pin_mode_t)HAL_PIO_FUNC_UART_HS_UART,
+             .rx_pin_mode = (pin_mode_t)HAL_PIO_FUNC_UART_HS_UART,
+             .cts_pin_mode = (pin_mode_t)HAL_PIO_FUNC_MAX,
+             .rts_pin_mode = (pin_mode_t)HAL_PIO_FUNC_MAX
+         },
+         UART_1_IRQN,
+         (osal_irq_handler)irq_uart1_handler,
+ #ifndef FT_SINGLE_UART
+ #if SYS_DEBUG_MODE_ENABLE == YES
+         log_uart_rx_callback,
+ #else
+         NULL,
+ #endif
+ #else
+         log_factory_at_callback,
+ #endif
+         {
+             .baud_rate = CUSTOM_UART_RATE,
+             .data_bits = UART_DATA_BIT_8,
+             .parity = UART_PARITY_NONE,
+             .stop_bits = UART_STOP_BIT_1,
+         },
+         {
+             .rx_buffer_size = UART_RX_BUFFER_SIZE,
+             .rx_buffer = g_uart1_rx_buffer,
+         },
+         NULL,
+         false
+     }
+ // #ifdef DISABLE_UART_LOG
+     ,
+     /* UART_BUS_2 is used to hso uart */
+     {
+        
+         {
+             .tx_pin = PIN_NONE,
+             .rx_pin = PIN_NONE,
+             .cts_pin = PIN_NONE,
+             .rts_pin = PIN_NONE
+         },
+         {
+             .tx_pin_mode = (pin_mode_t)HAL_PIO_FUNC_MAX,
+             .rx_pin_mode = (pin_mode_t)HAL_PIO_FUNC_MAX,
+             .cts_pin_mode = (pin_mode_t)HAL_PIO_FUNC_MAX,
+             .rts_pin_mode = (pin_mode_t)HAL_PIO_FUNC_MAX
+         },
+         RESERVED_80_IRQn,
+         NULL,
+         NULL,
+         {
+             .baud_rate = CUSTOM_UART_RATE,
+             .data_bits = UART_DATA_BIT_8,
+             .parity = UART_PARITY_NONE,
+             .stop_bits = UART_STOP_BIT_1,
+         },
+         {
+             .rx_buffer_size = UART_RX_BUFFER_SIZE,
+             .rx_buffer = g_uart2_rx_buffer,
+         },
+         NULL,
+         false
+     }
+ 
+ // #endif
+ #endif
+ };
+ static uart_recovery_regs_t g_uart_recovery_reg[UART_BUS_MAX_NUMBER] = { 0 };
+ 
+ #ifdef FT_SINGLE_UART
+ void log_factory_at_callback(const void *buffer, uint16_t length, bool remaining)
+ {
+ #ifdef XTS_SUPPORT
+     #if SYS_DEBUG_MODE_ENABLE == YES
+         log_uart_rx_callback(buffer, length, remaining);
+     #endif
+     if (zdiag_is_enable() == false) {
+     #ifdef SUPPORT_AT_CMD
+         at_cmd_msg_receive_handler((uint8_t *)buffer, length);
+     #endif
+         hal_uart_clear_pending(UART_BUS_1);
+     }
+     return;
+ #endif
+ 
+ #ifndef SUPPORT_RECOVERY_DISPLAY //判定是否是在编译RECOVERY image,本参数不支持RECOVERY
+ #ifdef CUSTOM_UTILS
+     if (uapi_custom_uart_rx_enable_flag() == false)
+ #endif
+     {
+         if (buffer != NULL && ((uint8_t*)buffer)[0]=='A' && ((uint8_t*)buffer)[1]=='T') 
+         {
+             if (zdiag_is_enable() == false) {
+                 at_cmd_msg_receive_handler((uint8_t *)buffer, length);
+                 hal_uart_clear_pending(UART_BUS_1);
+             }
+         }else{
+             hal_uart_clear_pending(UART_BUS_1);
+         }
+         return ;
+     }
+ #endif
+ #if SYS_DEBUG_MODE_ENABLE == YES
+     log_uart_rx_callback(buffer, length, remaining);
+ #endif
+     if (zdiag_is_enable() == false) {
+         at_cmd_msg_receive_handler((uint8_t *)buffer, length);
+         hal_uart_clear_pending(UART_BUS_1);
+     }
+ }
+ #endif
+ 
+ void uart_port_register_hal_funcs(uart_bus_t bus)
+ {
+     hal_uart_register_funcs(bus, hal_uart_v120_funcs_get());
+ }
+ 
+ void uart_port_unregister_hal_funcs(uart_bus_t bus)
+ {
+     hal_uart_unregister_funcs(bus);
+ }
+ 
+ uint32_t uart_port_get_clock_value(uart_bus_t bus)
+ {
+     return uart_get_clock_value(bus);
+ }
+ 
+ void uart_port_config_pinmux(uart_bus_t bus)
+ {
+     if (bus == UART_BUS_1) {
+         uapi_pin_set_mode(g_uart_config[UART_BUS_1].pin.tx_pin, g_uart_config[UART_BUS_1].pin_mode.tx_pin_mode);
+         uapi_pin_set_mode(g_uart_config[UART_BUS_1].pin.rx_pin, g_uart_config[UART_BUS_1].pin_mode.rx_pin_mode);
+     } else if (bus == UART_BUS_0) {
+         uapi_pin_set_mode(g_uart_config[UART_BUS_0].pin.tx_pin, g_uart_config[UART_BUS_0].pin_mode.tx_pin_mode);
+         uapi_pin_set_mode(g_uart_config[UART_BUS_0].pin.rx_pin, g_uart_config[UART_BUS_0].pin_mode.rx_pin_mode);
+         if (g_uart_config[UART_BUS_0].pin.cts_pin != PIN_NONE) {
+             uapi_pin_set_mode(g_uart_config[UART_BUS_0].pin.cts_pin, g_uart_config[UART_BUS_0].pin_mode.cts_pin_mode);
+             
+         }
+         if (g_uart_config[UART_BUS_0].pin.rts_pin != PIN_NONE) {
+             uapi_pin_set_mode(g_uart_config[UART_BUS_0].pin.rts_pin, g_uart_config[UART_BUS_0].pin_mode.rts_pin_mode);
+         }
+     }
+ }
+ 
+ void uart_port_register_irq(uart_bus_t bus)
+ {
+     osal_irq_request(g_uart_config[bus].irq_num, g_uart_config[bus].irq_func, NULL, NULL, NULL);
+     osal_irq_set_priority(g_uart_config[bus].irq_num, irq_prio(g_uart_config[bus].irq_num));
+     osal_irq_enable(g_uart_config[bus].irq_num);
+ }
+ 
+ void uart_port_unregister_irq(uart_bus_t bus)
+ {
+     osal_irq_disable(g_uart_config[bus].irq_num);
+ }
+ 
+ void irq_uart0_handler(void)
+ {
+     hal_uart_irq_handler(UART_BUS_0);
+ }
+ 
+ void irq_uart1_handler(void)
+ {
+     hal_uart_irq_handler(UART_BUS_1);
+ }
+ 
+ #ifdef SUPPORT_AT_CMD
+ static void at_cmd_uart_rx_callback(const void *buf, uint16_t buf_len, bool remaining)
+ {
+     unused(remaining);
+     #ifndef FT_SINGLE_UART
+     at_cmd_msg_receive_handler((uint8_t *)buf, buf_len);
+     #endif
+     // #ifdef SUPPORT_CAT1_SERVICE
+     // cat1_uart_receive_handler((uint8_t *)buf, buf_len);
+     // #endif
+     hal_uart_clear_pending(SW_DEBUG_UART_BUS);
+ }
+ #endif
+ 
+ void uart_config_init(void)
+ {
+     for (uint8_t i = 0; i < UART_BUS_MAX_NUM; i++) {
+         if ((g_uart_config[i].pin.tx_pin != PIN_NONE) || (g_uart_config[i].pin.rx_pin != PIN_NONE)) {
+             uapi_uart_init(i, &(g_uart_config[i].pin), &(g_uart_config[i].line_config), NULL,
+                            &(g_uart_config[i].buffer_config));
+         }
+         if (g_uart_config[i].rx_callback != NULL) {
+             uapi_uart_register_rx_callback(i, UART_RX_CONDITION_FULL_OR_SUFFICIENT_DATA_OR_IDLE,
+                                            (uint32_t)(g_uart_config[i].buffer_config.rx_buffer_size),
+                                            g_uart_config[i].rx_callback);
+         }
+ 
+ #ifndef BUILD_APPLICATION_SSB
+         if (g_uart_config[i].support_mutex == true) {
+             osal_mutex_init(&(g_uart_config[i].uart_mutex));
+         }
+ #endif
+     }
+ }
+ 
+ #if (defined SW_UART_DEBUG)||(defined FT_SINGLE_UART)
+ void sw_debug_uart_deinit(void)
+ {
+     uapi_uart_deinit(SW_DEBUG_UART_BUS);
+ }
+ 
+ void sw_debug_uart_init(uint32_t baud_rate)
+ {
+     g_uart_config[SW_DEBUG_UART_BUS].line_config.baud_rate = baud_rate;
+     uapi_uart_init(SW_DEBUG_UART_BUS, &(g_uart_config[SW_DEBUG_UART_BUS].pin),
+                    &(g_uart_config[SW_DEBUG_UART_BUS].line_config), NULL,
+                    &(g_uart_config[SW_DEBUG_UART_BUS].buffer_config));
+ }
+ 
+ void sw_debug_uart_reset_baund(void)
+ {
+     while (uapi_uart_has_pending_transmissions(SW_DEBUG_UART_BUS)) { }
+     uapi_uart_set_attr(SW_DEBUG_UART_BUS, &g_uart_config[SW_DEBUG_UART_BUS].line_config);
+ }
+ #endif
+ 
+ void print_str(const char *str, ...)
+ {
+     static uint8_t s[1024];  // 1024 means string max length.
+     va_list args;
+     int32_t str_len;
+ 
+     if ((str == NULL) || (strlen(str) == 0)) {
+         return;
+     }
+ 
+     va_start(args, str);
+     str_len = vsprintf_s((char *)s, sizeof(s), str, args);
+     va_end(args);
+ 
+     if (str_len < 0) {
+         return;
+     }
+ #if defined(SW_RTT_DEBUG)
+     SEGGER_RTT_Write(0, (const char *)s, str_len);
+ #elif defined(SW_UART_DEBUG)
+     if (hal_uart_get_funcs(SW_DEBUG_UART_BUS) == NULL) {
+         return;
+     }
+     uapi_uart_write(SW_DEBUG_UART_BUS, (const void *)s, (uint32_t)str_len, 0);
+ #else
+ #endif
+ }
+ 
+ void hal_uart_clear_pending(uart_bus_t uart)
+ {
+     switch (uart) {
+         case UART_BUS_0:
+             int_clear_pending_irq(UART_0_IRQN);
+             break;
+         case UART_BUS_1:
+             int_clear_pending_irq(UART_1_IRQN);
+             break;
+         default:
+             break;
+     }
+ }
+ 
+ #if defined(CONFIG_UART_SUPPORT_DMA)
+ uint8_t uart_port_get_dma_trans_dest_handshaking(uart_bus_t bus)
+ {
+     switch (bus) {
+         case UART_BUS_0:
+             return (uint8_t)HAL_DMA_HANDSHAKING_UART_L_TX;
+         case UART_BUS_1:
+             return (uint8_t)HAL_DMA_HANDSHAKING_UART_H0_TX;
+         default:
+             return (uint8_t)HAL_DMA_HANDSHAKING_MAX_NUM;
+     }
+ }
+ 
+ uint8_t uart_port_get_dma_trans_src_handshaking(uart_bus_t bus)
+ {
+     switch (bus) {
+         case UART_BUS_0:
+             return (uint8_t)HAL_DMA_HANDSHAKING_UART_L_RX;
+         case UART_BUS_1:
+             return (uint8_t)HAL_DMA_HANDSHAKING_UART_H0_RX;
+         default:
+             return (uint8_t)HAL_DMA_HANDSHAKING_MAX_NUM;
+     }
+ }
+ #endif  /* CONFIG_UART_SUPPORT_DMA */
+ 
+ uint32_t uart_porting_lock(uart_bus_t bus)
+ {
+ #ifndef BUILD_APPLICATION_SSB
+     if ((g_uart_config[bus].support_mutex == true) && (osKernelGetState() == osKernelRunning) &&
+         (osal_in_interrupt() == 0)) {
+         return (uint32_t)osal_mutex_lock_timeout(&(g_uart_config[bus].uart_mutex), OSAL_MUTEX_WAIT_FOREVER);
+     }
+ #else
+     UNUSED(bus);
+ #endif
+     return ERRCODE_SUCC;
+ }
+ 
+ void uart_porting_unlock(uart_bus_t bus, uint32_t irq_sts)
+ {
+ #ifndef BUILD_APPLICATION_SSB
+     unused(irq_sts);
+     if ((g_uart_config[bus].support_mutex == true) && (osKernelGetState() == osKernelRunning) &&
+         (osal_in_interrupt() == 0)) {
+         osal_mutex_unlock(&(g_uart_config[bus].uart_mutex));
+     }
+ #else
+     UNUSED(bus);
+     UNUSED(irq_sts);
+ #endif
+ }
+ 
+ void uart_save_reg(uart_bus_t bus)
+ {
+     uint32_t base = uart_porting_base_addr_get(bus);
+     g_uart_recovery_reg[bus].uartilpr = readw(base + UARTILPR);
+     g_uart_recovery_reg[bus].uartibrd = readw(base + UARTIBRD);
+     g_uart_recovery_reg[bus].uartfbrd = readw(base + UARTFBRD);
+     g_uart_recovery_reg[bus].uartlcr_h = readw(base + UARTLCRH);
+     g_uart_recovery_reg[bus].uartcr = readw(base + UARTCR);
+     g_uart_recovery_reg[bus].uartifls = readw(base + UARTIFLS);
+     g_uart_recovery_reg[bus].uartimsc = readw(base + UARTIMSC);
+     g_uart_recovery_reg[bus].uartdmacr = readw(base + UARTDMACR);
+ }
+ 
+ void uart_recovery_reg(uart_bus_t bus)
+ {
+     uint16_t uart_bit = UARTBUS0;
+     if (bus == UART_BUS_0) {
+         uart_bit = UARTBUS0;
+     } else if (bus == UART_BUS_1) {
+         uart_bit = UARTBUS1;
+     }
+     reg16_clrbit(UARTRESET, uart_bit);
+     reg16_setbit(UARTRESET, uart_bit);
+     uint32_t base = uart_porting_base_addr_get(bus);
+     writew(base + UARTILPR, g_uart_recovery_reg[bus].uartilpr);
+     writew(base + UARTIBRD, g_uart_recovery_reg[bus].uartibrd);
+     writew(base + UARTFBRD, g_uart_recovery_reg[bus].uartfbrd);
+     writew(base + UARTLCRH, g_uart_recovery_reg[bus].uartlcr_h);
+     writew(base + UARTCR, g_uart_recovery_reg[bus].uartcr);
+     writew(base + UARTIFLS, g_uart_recovery_reg[bus].uartifls);
+     writew(base + UARTIMSC, g_uart_recovery_reg[bus].uartimsc);
+     writew(base + UARTDMACR, g_uart_recovery_reg[bus].uartdmacr);
+ }
+ 
+ void uart_h0_suspend(void)
+ {
+     uart_save_reg(UART_BUS_0);
+ }
+ 
+ void uart_h0_resume(void)
+ {
+     uart_recovery_reg(UART_BUS_0);
+ }
+ 
+ void uart_h1_suspend(void)
+ {
+     uart_save_reg(UART_BUS_1);
+ }
+ 
+ void uart_h1_resume(void)
+ {
+     uart_recovery_reg(UART_BUS_1);
+ }
\ No newline at end of file
index c18db4c..be6c5a6 100644 (file)
@@ -75,9 +75,9 @@ static ctl_pin_4g_t g_cat1_ctl_pins={
     1,
     S_AGPIO_L24,//reset_pin
     1, //电路中 控制gpio拉高,reset才拉低
-    S_MGPIO22,//ring_pin
+    PIN_NONE,//ring_pin
     0,
-    S_MGPIO21,//wakemodem_pin
+    PIN_NONE,//wakemodem_pin
     0,
     #else
     PIN_NONE, //bat_pin
@@ -298,12 +298,18 @@ static uint8_t cat1_keepon_wakeup = 0;
 extern void set_skip_cat1_service_udp_transfer(uint8_t skip);
 void cat1_api_keep_wakeup(uint8_t keep_wakeup)
 {
+#ifndef SIO_UART_DISABLE_FLOW_CTRL
+    return;
+#endif
     cat1_keepon_wakeup = keep_wakeup;
     // set_skip_cat1_service_udp_transfer(keep_wakeup);
     cat1_api_wakeup_cat1(cat1_keepon_wakeup);
 }
 void cat1_api_wakeup_cat1(uint8_t wakeup)
 {
+#ifndef SIO_UART_DISABLE_FLOW_CTRL
+    return;
+#endif
     pin_t en_pin =  g_cat1_ctl_pins.wakemodem_pin;
     uint8_t en_value = g_cat1_ctl_pins.wakemodem_pin_en_value;
     uint8_t wake=wakeup;
index 2c814a1..e0840c7 100644 (file)
@@ -384,9 +384,9 @@ errcode_t cat1_api_porting_init(void)
         1,
         S_AGPIO_L24,//reset_pin
         1,
-        PIN_NONE,//S_MGPIO22,//ring_pin
+        PIN_NONE,//S_MGPIO22,//ring_pinb
         0,
-        S_MGPIO21,//wakemodem_pin
+        PIN_NONE,//wakemodem_pin
         0,
         #else
         PIN_NONE, //bat_pin