diff --git a/docs/ChangeLog.md b/docs/ChangeLog.md
index 5ef8775726d2277e95c8d81219e445d904bc3fbb..c37419d7f4814965d039fc836ca48565c950de39 100644
--- a/docs/ChangeLog.md
+++ b/docs/ChangeLog.md
@@ -1,3 +1,27 @@
+# Phytium FreeRTOS SDK 2025-07-16 ChangeLog
+
+Change Log since 2025-07-05
+
+## example
+
+- update media example and add common configs
+
+# Phytium FreeRTOS SDK 2025-07-16 ChangeLog
+
+Change Log since 2025-07-05
+
+## example
+
+- update configs to fix openamp_for_linux bugs
+
+# Phytium FreeRTOS SDK 2025-07-15 ChangeLog
+
+Change Log since 2025-07-15
+
+## example
+
+- update media example for sdk media driver
+
# Phytium FreeRTOS SDK 2025-07-07 ChangeLog
Change Log since 2025-07-07
diff --git a/docs/reference/usr/install_windows.md b/docs/reference/usr/install_windows.md
index 7a4fe69ed57ecef176c102c604ffc389c0ad7cd6..86df8dc699bc5347793acbb84df35549b58e06a3 100644
--- a/docs/reference/usr/install_windows.md
+++ b/docs/reference/usr/install_windows.md
@@ -18,7 +18,7 @@ python .\install.py
```
cd .\example\template
make list_kconfig
-make load_kconfig LOAD_CONFIG_NAME=e2000d_aarch64_demo_eg
+make load_kconfig LOAD_CONFIG_NAME=pe220x_aarch64_demo_eg
make menuconfig
make clean
make all
diff --git a/docs/reference/usr/usage.md b/docs/reference/usr/usage.md
index 0562aef33b6b36dc569c0ee525e2715b733696c3..c3bbd905f923ce83f67378ce49143ae8ed1f0a45 100644
--- a/docs/reference/usr/usage.md
+++ b/docs/reference/usr/usage.md
@@ -33,7 +33,7 @@ src --> 用户源文件*
- make list_kconfig 当前工程支持哪些配置文件
- make load_kconfig LOAD_CONFIG_NAME=[kconfig configuration files] 将预设配置加载至工程中
->例如:配置成E2000D,使用对应的默认配置,如E2000d 32位:
+>例如:配置成E2000D demo,使用对应的默认配置,如E2000d 32位:
```
$ make load_kconfig LOAD_CONFIG_NAME=e2000d_aarch32_demo_i2c
```
diff --git a/drivers/media/fmedia_os.c b/drivers/media/fmedia_os.c
index 5f870df5f4ce5070a64431678feae50500edebbf..16f0355834096edebb9bfb96788db14d5928abd2 100644
--- a/drivers/media/fmedia_os.c
+++ b/drivers/media/fmedia_os.c
@@ -50,20 +50,23 @@
* @msg: init the media,dc and dp
* @param {u32} channel is the dc channel
* @param {FFreeRTOSMedia*} instance is the driver instance
+ * @param {u32} index is the dp index
* @param {u32} width is the width
* @param {u32} height is the height
* @return err code information, 0 indicates success,others indicates failed
*/
-FFreeRTOSMedia *FFreeRTOSMediaHwInit(FFreeRTOSMedia *instance, u32 width, u32 height)
+FFreeRTOSMedia *FFreeRTOSMediaHwInit(FFreeRTOSMedia *instance, u32 index, u32 width, u32 height)
{
FError ret = FT_SUCCESS;
- u32 index;
- for (index = 0; index < FDCDP_INSTANCE_NUM; index ++)
+ ret = FDcDpInitial(&instance->dcdp_ctrl, index, width, height);
+ if(FT_SUCCESS != ret)
{
- ret = FDcDpInitial(&instance->dcdp_ctrl, index, width, height);
+ FMEDIA_ERROR("FDcDpInitial failed, ret = %d", ret);
+ return NULL;
}
- if((instance->dcdp_ctrl.is_initialized[0]) | (instance->dcdp_ctrl.is_initialized[1]))
+
+ if((instance->dcdp_ctrl.is_initialized[index]) == FDCDP_IS_INITIALIZED)
{
ret = FDP_SUCCESS;
}
diff --git a/drivers/media/fmedia_os.h b/drivers/media/fmedia_os.h
index 030b9f0a8fe7200f647425a48c6f1def26d3996b..8f227ec9fe7ab98923b2c463e68aa0dc223cfafc 100644
--- a/drivers/media/fmedia_os.h
+++ b/drivers/media/fmedia_os.h
@@ -51,7 +51,7 @@ typedef struct
} FFreeRTOSMedia;
/*init the media and return the meidia instance*/
-FFreeRTOSMedia *FFreeRTOSMediaHwInit(FFreeRTOSMedia *instance, u32 width, u32 height);
+FFreeRTOSMedia *FFreeRTOSMediaHwInit(FFreeRTOSMedia *instance, u32 index, u32 width, u32 height);
#ifdef __cplusplus
diff --git a/example/network/lwip_https/README.md b/example/network/lwip_https/README.md
index 26cd8c98e56f74ab152091b5a10d4128d7f32d2c..4b600af2cf2acd5b76f2a201c92e582205dd9627 100644
--- a/example/network/lwip_https/README.md
+++ b/example/network/lwip_https/README.md
@@ -77,7 +77,7 @@
- 选择目标平台
```
-make load_kconfig LOAD_CONFIG_NAME=e2000d_aarch64_demo_lwip_https
+make load_kconfig LOAD_CONFIG_NAME=pe2202_aarch64_demo_lwip_https
```
- 选择例程需要的配置
diff --git a/example/network/lwip_iperf/README.md b/example/network/lwip_iperf/README.md
index 3a30e9049d1cfb79ae1d10d55b3a7ff41cc7c635..8bb1b498fb9adaa4f2568b4e07e969db22d74009 100644
--- a/example/network/lwip_iperf/README.md
+++ b/example/network/lwip_iperf/README.md
@@ -71,7 +71,7 @@
- 选择目标平台
```
-make load_kconfig LOAD_CONFIG_NAME=e2000d_aarch64_demo_lwip_iperf
+make load_kconfig LOAD_CONFIG_NAME=pe2202_aarch64_demo_lwip_iperf
```
- 选择例程需要的配置
diff --git a/example/network/lwip_startup/README.md b/example/network/lwip_startup/README.md
index 766c4881414654366fc5f620d6e7c7bcbf270b4a..6975b304613a2bbed5599a5190111976796ae028 100644
--- a/example/network/lwip_startup/README.md
+++ b/example/network/lwip_startup/README.md
@@ -75,7 +75,7 @@
- 选择目标平台
```
-make load_kconfig LOAD_CONFIG_NAME=e2000d_aarch64_demo_lwip_startup
+make load_kconfig LOAD_CONFIG_NAME=pe2202_aarch64_demo_lwip_startup
```
- 选择例程需要的配置
diff --git a/example/network/sockets/udp_multicast/README.md b/example/network/sockets/udp_multicast/README.md
index 23faeab9ddfe90f5eab3c8a2b1d31f703c3ece1d..a30593d4dc0d35f7931d7630bd820cc39c83f204 100644
--- a/example/network/sockets/udp_multicast/README.md
+++ b/example/network/sockets/udp_multicast/README.md
@@ -66,7 +66,7 @@
- 选择目标平台
```
-make load_kconfig LOAD_CONFIG_NAME=e2000d_aarch64_demo_udp_multicast
+make load_kconfig LOAD_CONFIG_NAME=pe2202_aarch64_demo_udp_multicast
```
- 选择例程需要的配置
diff --git a/example/peripheral/dma/ddma/README.md b/example/peripheral/dma/ddma/README.md
index 5db357859120d7710fab7881a3dab1a10595f4f1..1903f3b654a06628948755e656786efe7d70902b 100755
--- a/example/peripheral/dma/ddma/README.md
+++ b/example/peripheral/dma/ddma/README.md
@@ -69,16 +69,16 @@ Phytium Pi接线方法:杜邦线连接下图所示得19号引脚和21号引脚
- 在当前目录下
- 执行以上指令
-### 2.3 构建和下载
+### 2.3 构建和下
#### 2.3.1 构建过程
- 在host侧完成配置
-> 配置成 e2000q,对于其它平台,使用对应的默认配置,如:
+> 配置成 e2000q demo,对于其它平台,使用对应的默认配置,如:
- 选择目标平台
```
-make load_kconfig LOAD_CONFIG_NAME=e2000q_aarch64_demo_ddma
+make load_kconfig LOAD_CONFIG_NAME=pe2204_aarch64_demo_ddma
```
- 选择例程需要的配置
diff --git a/example/peripheral/dma/gdma/README.md b/example/peripheral/dma/gdma/README.md
index 6a63edfdd01b540b1e2089586b97f01e0fc8a32a..7dc67ec97624dd5474c0a3511ba6f53b298ee9ab 100644
--- a/example/peripheral/dma/gdma/README.md
+++ b/example/peripheral/dma/gdma/README.md
@@ -60,11 +60,11 @@ GDMA (Generic Direct Memory Access) 用于将数据从一个内存地址复制
#### 2.3.1 构建过程
- 在host侧完成配置
-> 配置成 e2000q,对于其它平台,使用对应的的默认配置,如,
+> 配置成 e2000q demo,对于其它平台,使用对应的的默认配置,如,
- 选择目标平台
```
-make load_kconfig LOAD_CONFIG_NAME=e2000q_aarch64_demo_gdma
+make load_kconfig LOAD_CONFIG_NAME=pe2204_aarch32_demo_gdma
```
- 选择例程需要的配置
diff --git a/example/peripheral/i2s/README.md b/example/peripheral/i2s/README.md
index 63d050d7f21e625c7e2c6e8ff6c1181554521da1..79d4082328c1fde65bc57787bb0e08715f174f90 100644
--- a/example/peripheral/i2s/README.md
+++ b/example/peripheral/i2s/README.md
@@ -68,9 +68,9 @@ E2000Q对应的配置项是:
>描述构建、烧录下载镜像的过程,列出相关的命令
- 在host侧完成配置
->配置成E2000D,对于其它平台,使用对应的默认配置,如E2000d 32位:
+>配置成E2000Q demo,对于其它平台,使用对应的默认配置
```
-$ make load_kconfig = e2000d_aarch32_demo_i2s
+$ make load_kconfig = pe2204_aarch64_demo_i2s
```
- 在host侧完成构建
diff --git a/example/peripheral/media/lvgl_demo/README.md b/example/peripheral/media/lvgl_demo/README.md
index 22e6c7bd3dc29c80fc4fff69e72ba14762028aed..4364536437349c296430f4314662b442719c05fb 100644
--- a/example/peripheral/media/lvgl_demo/README.md
+++ b/example/peripheral/media/lvgl_demo/README.md
@@ -6,8 +6,8 @@
DC 是一个显示控制器,主要完成将 CPU/GPU/VPU 处理后的图像数据,按照 Display 协议处理后送给 DP PHY 接入显示器。
-本司E2000系列型号芯片采用DisplayPort1.4协议,兼容 DisplayPort1.4/Embedded DisplayPort1.3 协议。
-本例程主要展示本司E2000系列以及phytiumpi芯片DC显示驱动功能以及lvgl中benchmark, stress以及widgets例程的操作。
+本司PE220X系列型号芯片采用DisplayPort1.4协议,兼容 DisplayPort1.4/Embedded DisplayPort1.3 协议。
+本例程主要展示本司PE220X系列以及phytiumpi芯片DC显示驱动功能以及lvgl中benchmark, stress以及widgets例程的操作。
lvgl中benchmark是一个基准测试,用来测试硬件平台的性能和驱动支持buufer刷新能力,主要是测试屏幕刷新的流畅度以及帧率。
@@ -28,7 +28,7 @@ lvgl中widgets属于组件测试,将lvgl中库组件组合运行,此demo属
本例程需要用到
-- Phytium开发板(E2000开发板或phytiumpi))
+- Phytium开发板(E2000D/Q DEMO、PhytiumPi开发板)
- 显示器及连接线
- [Phytium Standalone SDK](https://gitee.com/phytium_embedded/phytium-standalone-sdk)
@@ -73,9 +73,9 @@ lvgl中widgets属于组件测试,将lvgl中库组件组合运行,此demo属
- 在host侧完成配置
->配置成E2000,对于其它平台,使用对应的默认配置
+>配置成E2000Q demo,对于其它平台,使用对应的默认配置
```
-make load_kconfig LOAD_CONFIG_NAME=e2000q_aarch64_demo_media
+make load_kconfig LOAD_CONFIG_NAME=pe2204_aarch64_demo_media
make menuconfig
make image
```
diff --git a/example/peripheral/media/lvgl_demo/configs/pe2202_aarch32_demo_media.config b/example/peripheral/media/lvgl_demo/configs/pe2202_aarch32_demo_media.config
index 28036d981fa3979d667ce2559cad12b32dd18609..edc13fdfed978ab20c8d50c24a9c0e1beef95e62 100644
--- a/example/peripheral/media/lvgl_demo/configs/pe2202_aarch32_demo_media.config
+++ b/example/peripheral/media/lvgl_demo/configs/pe2202_aarch32_demo_media.config
@@ -3,7 +3,7 @@ CONFIG_TARGET_PE2202=y
CONFIG_TARGET_NAME="media"
CONFIG_LOG_DEBUG=y
CONFIG_USE_MEDIA=y
-CONFIG_USE_FMEDIA=y
+CONFIG_USE_FMEDIA_V1=y
CONFIG_DEFAULT_LINKER_SCRIPT=y
CONFIG_IMAGE_MAX_LENGTH=0x200000000
CONFIG_FREERTOS_USE_MEDIA=y
diff --git a/example/peripheral/media/lvgl_demo/configs/pe2202_aarch64_demo_media.config b/example/peripheral/media/lvgl_demo/configs/pe2202_aarch64_demo_media.config
index ca32f75ef02256024fc2d0aa6c1f571b9c30aaaf..cbaed413e31f21d75c3772473329965b3b02ad12 100644
--- a/example/peripheral/media/lvgl_demo/configs/pe2202_aarch64_demo_media.config
+++ b/example/peripheral/media/lvgl_demo/configs/pe2202_aarch64_demo_media.config
@@ -2,7 +2,7 @@ CONFIG_TARGET_PE2202=y
CONFIG_TARGET_NAME="media"
CONFIG_LOG_DEBUG=y
CONFIG_USE_MEDIA=y
-CONFIG_USE_FMEDIA=y
+CONFIG_USE_FMEDIA_V1=y
CONFIG_DEFAULT_LINKER_SCRIPT=y
CONFIG_IMAGE_MAX_LENGTH=0x20000000
CONFIG_FREERTOS_USE_MEDIA=y
diff --git a/example/peripheral/media/lvgl_demo/configs/pe2204_aarch32_demo_media.config b/example/peripheral/media/lvgl_demo/configs/pe2204_aarch32_demo_media.config
index 10aec3c7a7832f0d720728fe0d6a2e214bdb83c2..f056a0ea8abe1d6cf7d6235877b890706b59a5d0 100644
--- a/example/peripheral/media/lvgl_demo/configs/pe2204_aarch32_demo_media.config
+++ b/example/peripheral/media/lvgl_demo/configs/pe2204_aarch32_demo_media.config
@@ -2,7 +2,7 @@ CONFIG_ARCH_ARMV8_AARCH32=y
CONFIG_TARGET_NAME="media"
CONFIG_LOG_DEBUG=y
CONFIG_USE_MEDIA=y
-CONFIG_USE_FMEDIA=y
+CONFIG_USE_FMEDIA_V1=y
CONFIG_DEFAULT_LINKER_SCRIPT=y
CONFIG_IMAGE_MAX_LENGTH=0x200000000
CONFIG_FREERTOS_USE_MEDIA=y
diff --git a/example/peripheral/media/lvgl_demo/configs/pe2204_aarch32_phytiumpi_media.config b/example/peripheral/media/lvgl_demo/configs/pe2204_aarch32_phytiumpi_media.config
index a8c675504ee59d0a6101ffd72e470e611d754efa..7072bceb87cfa128c9a81a8f1b6d45822e6e9a6b 100644
--- a/example/peripheral/media/lvgl_demo/configs/pe2204_aarch32_phytiumpi_media.config
+++ b/example/peripheral/media/lvgl_demo/configs/pe2204_aarch32_phytiumpi_media.config
@@ -3,7 +3,7 @@ CONFIG_PHYTIUMPI_FIREFLY_BOARD=y
CONFIG_TARGET_NAME="media"
CONFIG_LOG_DEBUG=y
CONFIG_USE_MEDIA=y
-CONFIG_USE_FMEDIA=y
+CONFIG_USE_FMEDIA_V1=y
CONFIG_DEFAULT_LINKER_SCRIPT=y
CONFIG_IMAGE_MAX_LENGTH=0x200000000
CONFIG_FREERTOS_USE_MEDIA=y
diff --git a/example/peripheral/media/lvgl_demo/configs/pe2204_aarch64_demo_media.config b/example/peripheral/media/lvgl_demo/configs/pe2204_aarch64_demo_media.config
index 68426af5d925b8d662e9c04da3fe8d146419aea0..1b389219ce3375c5fde78ba0b236d1f66d703cf6 100644
--- a/example/peripheral/media/lvgl_demo/configs/pe2204_aarch64_demo_media.config
+++ b/example/peripheral/media/lvgl_demo/configs/pe2204_aarch64_demo_media.config
@@ -1,7 +1,7 @@
CONFIG_TARGET_NAME="media"
CONFIG_LOG_DEBUG=y
CONFIG_USE_MEDIA=y
-CONFIG_USE_FMEDIA=y
+CONFIG_USE_FMEDIA_V1=y
CONFIG_DEFAULT_LINKER_SCRIPT=y
CONFIG_IMAGE_MAX_LENGTH=0x20000000
CONFIG_FREERTOS_USE_MEDIA=y
diff --git a/example/peripheral/media/lvgl_demo/configs/pe2204_aarch64_phytiumpi_media.config b/example/peripheral/media/lvgl_demo/configs/pe2204_aarch64_phytiumpi_media.config
index fedcf58fec294891367c57bc0be12ac76f016a6b..473238d48fd4c3cd2a49277a213f81832aabf1f8 100644
--- a/example/peripheral/media/lvgl_demo/configs/pe2204_aarch64_phytiumpi_media.config
+++ b/example/peripheral/media/lvgl_demo/configs/pe2204_aarch64_phytiumpi_media.config
@@ -3,7 +3,7 @@ CONFIG_PHYTIUMPI_FIREFLY_BOARD=y
CONFIG_TARGET_NAME="media"
CONFIG_LOG_DEBUG=y
CONFIG_USE_MEDIA=y
-CONFIG_USE_FMEDIA=y
+CONFIG_USE_FMEDIA_V1=y
CONFIG_DEFAULT_LINKER_SCRIPT=y
CONFIG_IMAGE_MAX_LENGTH=0x20000000
CONFIG_FREERTOS_USE_MEDIA=y
diff --git a/example/peripheral/media/lvgl_demo/inc/lv_demo_create.h b/example/peripheral/media/lvgl_demo/inc/lv_demo_create.h
index f7a1509e3c8526c2fe3e0bc49c04e7c32fbca716..80912e35bb0909f5d34ce4aff9fba8d092cd65e2 100644
--- a/example/peripheral/media/lvgl_demo/inc/lv_demo_create.h
+++ b/example/peripheral/media/lvgl_demo/inc/lv_demo_create.h
@@ -42,22 +42,14 @@ extern "C" {
#include "lvgl-8.3/lvgl.h"
#endif
-typedef struct
-{
- u32 channel;
- u32 width;
- u32 height;
- u32 multi_mode;
- u32 color_depth;
- u32 refresh_rate;
-} InputParm;
-
/*create the media demo init task*/
BaseType_t FFreeRTOSlVGLDemoCreate(void);
/*create the media init task*/
BaseType_t FFreeRTOSMediaInitCreate(void );
+BaseType_t FFreeRTOSMediaDeinit(void);
+
/*create the lvgl config task*/
BaseType_t FFreeRTOSlVGLConfigCreate(void);
diff --git a/example/peripheral/media/lvgl_demo/makefile b/example/peripheral/media/lvgl_demo/makefile
index 8f04c02504b44f402385fc16133134f8d111f7e2..47ad81ffb585828a34673f236adc0ededc9cf469 100644
--- a/example/peripheral/media/lvgl_demo/makefile
+++ b/example/peripheral/media/lvgl_demo/makefile
@@ -8,12 +8,14 @@ BOOT_IMG_NAME ?= freertos
USER_CSRC := main.c
USER_CSRC += $(wildcard src/*.c)
+USER_CSRC += $(wildcard ../media_common/*.c)
USER_ASRC :=
USER_CXXSRC :=
USER_INCLUDE := $(PROJECT_DIR) \
$(PROJECT_DIR)/inc \
+ $(PROJECT_DIR)/../media_common
include $(FREERTOS_SDK_DIR)/tools/makeall.mk
diff --git a/example/peripheral/media/lvgl_demo/sdkconfig b/example/peripheral/media/lvgl_demo/sdkconfig
index c14fcd6465071db59d1b1dd45934e26f4355524e..9b86ce46d63adabe8de22e5c03c20b9476344314 100644
--- a/example/peripheral/media/lvgl_demo/sdkconfig
+++ b/example/peripheral/media/lvgl_demo/sdkconfig
@@ -70,6 +70,7 @@ CONFIG_TARGET_PE220X=y
CONFIG_DEFAULT_DEBUG_PRINT_UART1=y
# CONFIG_DEFAULT_DEBUG_PRINT_UART0 is not set
# CONFIG_DEFAULT_DEBUG_PRINT_UART2 is not set
+# CONFIG_UART_INIT_NOT_CLR_INTR is not set
# end of Soc configuration
#
@@ -156,7 +157,8 @@ CONFIG_ENABLE_Pl011_UART=y
# CONFIG_USE_PWM is not set
# CONFIG_USE_IPC is not set
CONFIG_USE_MEDIA=y
-CONFIG_USE_FMEDIA=y
+CONFIG_USE_FMEDIA_V1=y
+# CONFIG_USE_FMEDIA_V2 is not set
# CONFIG_USE_SCMI_MHU is not set
# CONFIG_USE_I2S is not set
# CONFIG_USE_I3C is not set
@@ -227,6 +229,7 @@ CONFIG_STACK_SIZE=0x400
# FreeRTOS Uart Drivers
#
CONFIG_FREERTOS_USE_UART=y
+# CONFIG_FREERTOS_USE_SERIAL_V2 is not set
# end of FreeRTOS Uart Drivers
#
@@ -252,12 +255,14 @@ CONFIG_FREERTOS_USE_UART=y
#
# CONFIG_FREERTOS_USE_XMAC is not set
# CONFIG_FREERTOS_USE_GMAC is not set
+# CONFIG_FREERTOS_USE_XMAC_V2 is not set
# end of FreeRTOS Eth Drivers
#
# FreeRTOS Spim Drivers
#
# CONFIG_FREERTOS_USE_FSPIM is not set
+# CONFIG_FREERTOS_USE_FSPIM_V2 is not set
# end of FreeRTOS Spim Drivers
#
@@ -283,6 +288,7 @@ CONFIG_FREERTOS_USE_UART=y
# FreeRTOS I2c Drivers
#
# CONFIG_FREERTOS_USE_I2C is not set
+# CONFIG_FREERTOS_USE_FI2C_V2 is not set
# end of FreeRTOS I2c Drivers
#
diff --git a/example/peripheral/media/lvgl_demo/sdkconfig.h b/example/peripheral/media/lvgl_demo/sdkconfig.h
index 74acd8a931be1a62da343b4304c6bdeab18e8457..309a3fcf8d81eb5512995fa236a4d877be718e58 100644
--- a/example/peripheral/media/lvgl_demo/sdkconfig.h
+++ b/example/peripheral/media/lvgl_demo/sdkconfig.h
@@ -66,6 +66,7 @@
#define CONFIG_DEFAULT_DEBUG_PRINT_UART1
/* CONFIG_DEFAULT_DEBUG_PRINT_UART0 is not set */
/* CONFIG_DEFAULT_DEBUG_PRINT_UART2 is not set */
+/* CONFIG_UART_INIT_NOT_CLR_INTR is not set */
/* end of Soc configuration */
/* Board Configuration */
@@ -144,7 +145,8 @@
/* CONFIG_USE_PWM is not set */
/* CONFIG_USE_IPC is not set */
#define CONFIG_USE_MEDIA
-#define CONFIG_USE_FMEDIA
+#define CONFIG_USE_FMEDIA_V1
+/* CONFIG_USE_FMEDIA_V2 is not set */
/* CONFIG_USE_SCMI_MHU is not set */
/* CONFIG_USE_I2S is not set */
/* CONFIG_USE_I3C is not set */
@@ -206,6 +208,7 @@
/* FreeRTOS Uart Drivers */
#define CONFIG_FREERTOS_USE_UART
+/* CONFIG_FREERTOS_USE_SERIAL_V2 is not set */
/* end of FreeRTOS Uart Drivers */
/* FreeRTOS Pwm Drivers */
@@ -227,11 +230,13 @@
/* CONFIG_FREERTOS_USE_XMAC is not set */
/* CONFIG_FREERTOS_USE_GMAC is not set */
+/* CONFIG_FREERTOS_USE_XMAC_V2 is not set */
/* end of FreeRTOS Eth Drivers */
/* FreeRTOS Spim Drivers */
/* CONFIG_FREERTOS_USE_FSPIM is not set */
+/* CONFIG_FREERTOS_USE_FSPIM_V2 is not set */
/* end of FreeRTOS Spim Drivers */
/* FreeRTOS DMA Drivers */
@@ -253,6 +258,7 @@
/* FreeRTOS I2c Drivers */
/* CONFIG_FREERTOS_USE_I2C is not set */
+/* CONFIG_FREERTOS_USE_FI2C_V2 is not set */
/* end of FreeRTOS I2c Drivers */
/* FreeRTOS Mio Drivers */
diff --git a/example/peripheral/media/lvgl_demo/src/cmd.c b/example/peripheral/media/lvgl_demo/src/cmd.c
index c6118ab259a43cded88b396f27927731cc112509..7dfcd7f00324bfd165939edb2d4b33714b1ecd99 100644
--- a/example/peripheral/media/lvgl_demo/src/cmd.c
+++ b/example/peripheral/media/lvgl_demo/src/cmd.c
@@ -35,7 +35,6 @@
#include "shell_port.h"
#include "lv_demo_create.h"
-#include "lv_demo_test.h"
static void FFreeRTOSMediaCmdUsage(void)
{
printf("Usage:\r\n");
@@ -104,12 +103,11 @@ static int MediaCmdEntry(int argc, char *argv[])
printf("please ensure the media has been inited \r\n");
return -2;
}
- if (argc >= 3)
+ BaseType_t task_ret = FFreeRTOSMediaDeinit();
+ if (pdPASS != task_ret)
{
- id = (u32)simple_strtoul(argv[2], NULL, 10);
+ return -2;
}
- FFreeRTOSMediaChannelDeinit(id);
-
}
return 0;
diff --git a/example/peripheral/media/lvgl_demo/src/lv_demo_create.c b/example/peripheral/media/lvgl_demo/src/lv_demo_create.c
index 714f7d9436f1b637e4d8fb12c6b7d084dcfbdb70..741b66ba19713a3dedc525c777ff55bf166d2839 100644
--- a/example/peripheral/media/lvgl_demo/src/lv_demo_create.c
+++ b/example/peripheral/media/lvgl_demo/src/lv_demo_create.c
@@ -36,8 +36,8 @@
#include "fkernel.h"
#include "lv_demo_create.h"
-#include "lv_demo_test.h"
#include "lv_port_disp.h"
+#include "media_common.h"
#if LV_USE_DEMO_BENCHMARK
#include "lv_demo_benchmark.h"
@@ -50,6 +50,18 @@
#if LV_USE_DEMO_WIDGETS
#include "lv_demo_widgets.h"
#endif
+
+/*通道组合*/
+#define CHANNEL_NONE 0x0 /*不选择*/
+#define CHANNEL_DP_0 0x1 /*通道0*/
+#define CHANNEL_DP_1 0x2 /*通道1*/
+#define CHANNEL_DP_2 0x4 /*通道2*/
+#define CHANNEL_DP_0_1 (CHANNEL_DP_0 | CHANNEL_DP_1) /*通道0 1*/
+#define CHANNEL_DP_0_2 (CHANNEL_DP_0 | CHANNEL_DP_2) /*通道0 2*/
+#define CHANNEL_DP_1_2 (CHANNEL_DP_1 | CHANNEL_DP_2) /*通道1 2*/
+#define CHANNEL_DP_ALL (CHANNEL_DP_0 | CHANNEL_DP_1 | CHANNEL_DP_2) /*通道0 1 2*/
+
+static u32 channel_mask = CHANNEL_DP_0_1; /* 默认选择双通道*/
/************************** Constant Definitions *****************************/
#define LVGL_HEART_TIMER_PERIOD (pdMS_TO_TICKS(1UL))
#define LVGL_CONTINUE_TIMER 10000000
@@ -59,6 +71,7 @@ static TaskHandle_t demo_task;
static TaskHandle_t lvgl_init_task;
static TaskHandle_t init_task;
static TaskHandle_t hpd_task ;
+static FFreeRTOSMedia os_media;
extern void FFreeRTOSDispdEnableUpdate(void);
extern void FFreeRTOSDispdDisableUpdate(void);
@@ -169,7 +182,25 @@ static void FFreeRTOSLVGLDemoTask(void)
}
}
-
+/**
+ * @name: FFreeRTOSLVGLConfigTask
+ * @msg: config the lvgl
+ * @return Null
+ */
+void FFreeRTOSLVGLConfigTask(void)
+{
+ u32 index;
+ lv_init();
+ FFreeRTOSPortInit();
+ for (index = 0; index < FDP_INSTANCE_NUM; index ++)
+ {
+ if (channel_mask & BIT(index))
+ {
+ FMediaDispFramebuffer(&os_media.dcdp_ctrl);
+ }
+ }
+ vTaskDelete(NULL);
+}
/**
* @name: FFreeRTOSMediaInitCreate
@@ -182,17 +213,17 @@ BaseType_t FFreeRTOSMediaInitCreate(void)
/* enter critical region */
taskENTER_CRITICAL();
/* Media init task */
- xReturn = xTaskCreate((TaskFunction_t)FFreeRTOSMediaDeviceInit, /* 任务入口函数 */
- (const char *)"FFreeRTOSMediaDeviceInit", /* 任务名字 */
+ xReturn = xTaskCreate((TaskFunction_t)FMediaInitTask, /* 任务入口函数 */
+ (const char *)"FMediaInitTask", /* 任务名字 */
1024, /* 任务栈大小 */
- NULL, /* 任务入口函数参数 */
+ &os_media, /* 任务入口函数参数 */
(UBaseType_t)configMAX_PRIORITIES - 2, /* 任务的优先级 */
(TaskHandle_t *)&init_task); /* 任务控制 */
/* Hpd task control */
- xReturn = xTaskCreate((TaskFunction_t)FFreeRTOSMediaHpdHandle, /* 任务入口函数 */
- (const char *)"FFreeRTOSMediaHpdHandle", /* 任务名字 */
+ xReturn = xTaskCreate((TaskFunction_t)FFreeRTOSMediaHpdTask, /* 任务入口函数 */
+ (const char *)"FFreeRTOSMediaHpdTask", /* 任务名字 */
1024, /* 任务栈大小 */
- NULL, /* 任务入口函数参数 */
+ &os_media, /* 任务入口函数参数 */
(UBaseType_t)configMAX_PRIORITIES - 1, /* 任务的优先级 */
(TaskHandle_t *)&hpd_task);
/* exit critical region */
@@ -201,6 +232,25 @@ BaseType_t FFreeRTOSMediaInitCreate(void)
}
+/* create media test*/
+BaseType_t FFreeRTOSMediaDeinit(void)
+{
+
+ BaseType_t xReturn = pdPASS; /* 定义一个创建信息返回值,默认为 pdPASS */
+ /* enter critical region */
+ taskENTER_CRITICAL();
+ /* Media init task */
+ xReturn = xTaskCreate((TaskFunction_t)FFreeRTOSMediaChannelDeinit, /* 任务入口函数 */
+ (const char *)"FMediaDeInitTask", /* 任务名字 */
+ 1024, /* 任务栈大小 */
+ &os_media, /* 任务入口函数参数 */
+ (UBaseType_t)configMAX_PRIORITIES - 2, /* 任务的优先级 */
+ (TaskHandle_t *)&init_task);
+ /* exit critical region */
+ taskEXIT_CRITICAL();
+ return xReturn;
+}
+
/**
* @name: FFreeRTOSlVGLConfigCreate
* @msg: set the lvgl init task
diff --git a/example/peripheral/media/lvgl_indev/README.md b/example/peripheral/media/lvgl_indev/README.md
index 2aed5da31ffdd1e3da275775d5d32212e4611819..a0fb8cd527b0565d45a26b5de43d6bafde651697 100644
--- a/example/peripheral/media/lvgl_indev/README.md
+++ b/example/peripheral/media/lvgl_indev/README.md
@@ -6,8 +6,8 @@
DC 是一个显示控制器,主要完成将 CPU/GPU/VPU 处理后的图像数据,按照 Display 协议处理后送给 DP PHY 接入显示器。
-本司E2000系列型号芯片采用DisplayPort1.4协议,兼容 DisplayPort1.4/Embedded DisplayPort1.3 协议。
-本例程主要展示本司E2000系列以及phytiumpi芯片DC显示驱动功能以及驱动外设的能力,当前支持的设备有鼠标以及键盘
+本司PE220X系列型号芯片采用DisplayPort1.4协议,兼容 DisplayPort1.4/Embedded DisplayPort1.3 协议。
+本例程主要展示本司PE220X系列以及phytiumpi芯片DC显示驱动功能以及驱动外设的能力,当前支持的设备有鼠标以及键盘
本例程支持的cmd包括
@@ -38,7 +38,7 @@ DC 是一个显示控制器,主要完成将 CPU/GPU/VPU 处理后的图像数
本例程所需的硬件设备包括
-- 通过DP线将显示器与E2000板卡连接
+- 通过DP线将显示器与E2000D/Q DEMO、PhytiumPi开发板连接
- 利用串口调试线连接板卡和调试电脑,波特率设为 115200-8-1-N
### 2.2 SDK配置方法
@@ -67,9 +67,9 @@ DC 是一个显示控制器,主要完成将 CPU/GPU/VPU 处理后的图像数
- 在host侧完成配置
->配置成E2000,对于其它平台,使用对应的默认配置
+>配置成E2000Q demo,对于其它平台,使用对应的默认配置
```
-make load_kconfig LOAD_CONFIG_NAME=e2000q_aarch64_demo_media
+make load_kconfig LOAD_CONFIG_NAME=pe2204_aarch64_demo_media
make menuconfig
make image
```
diff --git a/example/peripheral/media/lvgl_indev/configs/pe2202_aarch32_demo_media.config b/example/peripheral/media/lvgl_indev/configs/pe2202_aarch32_demo_media.config
index f4de77ab9ca2d29fd08443f37f147a883e4fff6e..66cbd8debeff014eff6d5207b5c1aa6ccd24de22 100644
--- a/example/peripheral/media/lvgl_indev/configs/pe2202_aarch32_demo_media.config
+++ b/example/peripheral/media/lvgl_indev/configs/pe2202_aarch32_demo_media.config
@@ -3,7 +3,7 @@ CONFIG_TARGET_PE2202=y
CONFIG_TARGET_NAME="media"
CONFIG_LOG_DEBUG=y
CONFIG_USE_MEDIA=y
-CONFIG_USE_FMEDIA=y
+CONFIG_USE_FMEDIA_V1=y
CONFIG_DEFAULT_LINKER_SCRIPT=y
CONFIG_IMAGE_MAX_LENGTH=0x20000000
CONFIG_FREERTOS_USE_MEDIA=y
diff --git a/example/peripheral/media/lvgl_indev/configs/pe2202_aarch64_demo_media.config b/example/peripheral/media/lvgl_indev/configs/pe2202_aarch64_demo_media.config
index 073e80e0b21aead7df0493381db93a431ebc9a09..36ef82c2278915f636fadfbc38c4c9010beafb66 100644
--- a/example/peripheral/media/lvgl_indev/configs/pe2202_aarch64_demo_media.config
+++ b/example/peripheral/media/lvgl_indev/configs/pe2202_aarch64_demo_media.config
@@ -2,7 +2,7 @@ CONFIG_TARGET_PE2202=y
CONFIG_TARGET_NAME="media"
CONFIG_LOG_DEBUG=y
CONFIG_USE_MEDIA=y
-CONFIG_USE_FMEDIA=y
+CONFIG_USE_FMEDIA_V1=y
CONFIG_DEFAULT_LINKER_SCRIPT=y
CONFIG_IMAGE_MAX_LENGTH=0x20000000
CONFIG_FREERTOS_USE_MEDIA=y
diff --git a/example/peripheral/media/lvgl_indev/configs/pe2204_aarch32_demo_media.config b/example/peripheral/media/lvgl_indev/configs/pe2204_aarch32_demo_media.config
index 850cfa980c34c523a8250e37ceeb235d5f3ab81c..4bbd35cf3aab7b1db1fa062cfa66464e6adf67e6 100644
--- a/example/peripheral/media/lvgl_indev/configs/pe2204_aarch32_demo_media.config
+++ b/example/peripheral/media/lvgl_indev/configs/pe2204_aarch32_demo_media.config
@@ -2,7 +2,7 @@ CONFIG_ARCH_ARMV8_AARCH32=y
CONFIG_TARGET_NAME="media"
CONFIG_LOG_DEBUG=y
CONFIG_USE_MEDIA=y
-CONFIG_USE_FMEDIA=y
+CONFIG_USE_FMEDIA_V1=y
CONFIG_DEFAULT_LINKER_SCRIPT=y
CONFIG_IMAGE_MAX_LENGTH=0x20000000
CONFIG_FREERTOS_USE_MEDIA=y
diff --git a/example/peripheral/media/lvgl_indev/configs/pe2204_aarch32_phytiumpi_media.config b/example/peripheral/media/lvgl_indev/configs/pe2204_aarch32_phytiumpi_media.config
index 1389b8c268a504ba40b7059405b0d5e4953a5d9c..4255fe8b4a6ba3013e962307783395a9ca4e3f54 100644
--- a/example/peripheral/media/lvgl_indev/configs/pe2204_aarch32_phytiumpi_media.config
+++ b/example/peripheral/media/lvgl_indev/configs/pe2204_aarch32_phytiumpi_media.config
@@ -3,7 +3,7 @@ CONFIG_PHYTIUMPI_FIREFLY_BOARD=y
CONFIG_TARGET_NAME="media"
CONFIG_LOG_DEBUG=y
CONFIG_USE_MEDIA=y
-CONFIG_USE_FMEDIA=y
+CONFIG_USE_FMEDIA_V1=y
CONFIG_DEFAULT_LINKER_SCRIPT=y
CONFIG_IMAGE_MAX_LENGTH=0x20000000
CONFIG_FREERTOS_USE_MEDIA=y
diff --git a/example/peripheral/media/lvgl_indev/configs/pe2204_aarch64_demo_media.config b/example/peripheral/media/lvgl_indev/configs/pe2204_aarch64_demo_media.config
index 244c389045e7e31ad20f176187e0f7541a3b3ee7..59fa115a86da932cb26ce941b3d95c6d6c84a822 100644
--- a/example/peripheral/media/lvgl_indev/configs/pe2204_aarch64_demo_media.config
+++ b/example/peripheral/media/lvgl_indev/configs/pe2204_aarch64_demo_media.config
@@ -1,7 +1,7 @@
CONFIG_TARGET_NAME="media"
CONFIG_LOG_DEBUG=y
CONFIG_USE_MEDIA=y
-CONFIG_USE_FMEDIA=y
+CONFIG_USE_FMEDIA_V1=y
CONFIG_DEFAULT_LINKER_SCRIPT=y
CONFIG_IMAGE_MAX_LENGTH=0x20000000
CONFIG_STACK_SIZE=0x100000
diff --git a/example/peripheral/media/lvgl_indev/configs/pe2204_aarch64_phytiumpi_media.config b/example/peripheral/media/lvgl_indev/configs/pe2204_aarch64_phytiumpi_media.config
index c9a0383ff1524cd5868d7598f8697c70a8c87a07..b5a586e6a88ac1c2f17ff480ed8ee977c704a6a8 100644
--- a/example/peripheral/media/lvgl_indev/configs/pe2204_aarch64_phytiumpi_media.config
+++ b/example/peripheral/media/lvgl_indev/configs/pe2204_aarch64_phytiumpi_media.config
@@ -3,7 +3,7 @@ CONFIG_PHYTIUMPI_FIREFLY_BOARD=y
CONFIG_TARGET_NAME="media"
CONFIG_LOG_DEBUG=y
CONFIG_USE_MEDIA=y
-CONFIG_USE_FMEDIA=y
+CONFIG_USE_FMEDIA_V1=y
CONFIG_DEFAULT_LINKER_SCRIPT=y
CONFIG_IMAGE_MAX_LENGTH=0x20000000
CONFIG_FREERTOS_USE_MEDIA=y
diff --git a/example/peripheral/media/lvgl_indev/inc/lv_indev_create.h b/example/peripheral/media/lvgl_indev/inc/lv_indev_create.h
index 56aa713978357bef655075d3ea4a06a8dbd1eaad..8cb0d9aa68c025897eadec584522e1d606810279 100644
--- a/example/peripheral/media/lvgl_indev/inc/lv_indev_create.h
+++ b/example/peripheral/media/lvgl_indev/inc/lv_indev_create.h
@@ -58,6 +58,12 @@ BaseType_t FFreeRTOSListUsbDev(int argc, char *argv[]);
/*init the media*/
BaseType_t FFreeRTOSMediaInitCreate(void);
+/*deinit the media*/
+BaseType_t FFreeRTOSMediaDeinit(void);
+
+/*lvgl config*/
+void FFreeRTOSLVGLConfigTask(void);
+
/*set the lvgl init task*/
BaseType_t FFreeRTOSlVGLConfigCreate(void);
diff --git a/example/peripheral/media/lvgl_indev/inc/lv_indev_test.h b/example/peripheral/media/lvgl_indev/inc/lv_indev_test.h
deleted file mode 100644
index 133bf775b9bb0aa513e129bbf6de61af92527ebe..0000000000000000000000000000000000000000
--- a/example/peripheral/media/lvgl_indev/inc/lv_indev_test.h
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
- * Copyright (C) 2023, Phytium Technology Co., Ltd. All Rights Reserved.
- *
- * Licensed under the BSD 3-Clause License (the "License"); you may not use
- * this file except in compliance with the License. You may obtain a copy of
- * the License at
- *
- * https://opensource.org/licenses/BSD-3-Clause
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * FilePath: lv_indev_test.h
- * Date: 2023-02-05 18:27:47
- * LastEditTime: 2023-07-06 11:02:47
- * Description: This file is for providing the lvgl test config
- *
- * Modify History:
- * Ver Who Date Changes
- * ----- ------ -------- --------------------------------------
- * 1.0 Wangzq 2023//07/06 Modify the format and establish the version
- * 1.1 Wangzq 2023/07/07 change the third-party and driver relation
- */
-
-#ifndef LV_INDEV_TEST_H
-#define LV_INDEV_TEST_H
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include "lvgl.h"
-#include "ftypes.h"
-
-
-/*the lvgl demo*/
-void lv_demo_indev(void);
-
-/*deinit the media */
-void FFreeRTOSMediaChannelDeinit(u32 id);
-
-/*handle the hpd event*/
-void FFreeRTOSMediaHpdHandle(void);
-
-/*init the media */
-void FFreeRTOSMediaDeviceInit(void);
-
-/*lvgl config*/
-void FFreeRTOSLVGLConfigTask(void);
-
-#ifdef __cplusplus
-} /*extern "C"*/
-#endif
-#endif
\ No newline at end of file
diff --git a/example/peripheral/media/lvgl_indev/makefile b/example/peripheral/media/lvgl_indev/makefile
index 681587e37cb8a2adc896e36036c56f9a99321b9f..47ad81ffb585828a34673f236adc0ededc9cf469 100644
--- a/example/peripheral/media/lvgl_indev/makefile
+++ b/example/peripheral/media/lvgl_indev/makefile
@@ -8,13 +8,14 @@ BOOT_IMG_NAME ?= freertos
USER_CSRC := main.c
USER_CSRC += $(wildcard src/*.c)
-USER_CSRC += $(wildcard ../common/*.c)
+USER_CSRC += $(wildcard ../media_common/*.c)
USER_ASRC :=
USER_CXXSRC :=
USER_INCLUDE := $(PROJECT_DIR) \
$(PROJECT_DIR)/inc \
+ $(PROJECT_DIR)/../media_common
include $(FREERTOS_SDK_DIR)/tools/makeall.mk
diff --git a/example/peripheral/media/lvgl_indev/sdkconfig b/example/peripheral/media/lvgl_indev/sdkconfig
index 79b2eb17710c6450aba6561de711dbaaab08639b..9b76cd9e520a7f28631e15161b8e0b78270f14b2 100644
--- a/example/peripheral/media/lvgl_indev/sdkconfig
+++ b/example/peripheral/media/lvgl_indev/sdkconfig
@@ -70,6 +70,7 @@ CONFIG_TARGET_PE220X=y
CONFIG_DEFAULT_DEBUG_PRINT_UART1=y
# CONFIG_DEFAULT_DEBUG_PRINT_UART0 is not set
# CONFIG_DEFAULT_DEBUG_PRINT_UART2 is not set
+# CONFIG_UART_INIT_NOT_CLR_INTR is not set
# end of Soc configuration
#
@@ -156,7 +157,8 @@ CONFIG_ENABLE_Pl011_UART=y
# CONFIG_USE_PWM is not set
# CONFIG_USE_IPC is not set
CONFIG_USE_MEDIA=y
-CONFIG_USE_FMEDIA=y
+CONFIG_USE_FMEDIA_V1=y
+# CONFIG_USE_FMEDIA_V2 is not set
# CONFIG_USE_SCMI_MHU is not set
# CONFIG_USE_I2S is not set
# CONFIG_USE_I3C is not set
@@ -227,6 +229,7 @@ CONFIG_STACK_SIZE=0x400
# FreeRTOS Uart Drivers
#
CONFIG_FREERTOS_USE_UART=y
+# CONFIG_FREERTOS_USE_SERIAL_V2 is not set
# end of FreeRTOS Uart Drivers
#
@@ -252,12 +255,14 @@ CONFIG_FREERTOS_USE_UART=y
#
# CONFIG_FREERTOS_USE_XMAC is not set
# CONFIG_FREERTOS_USE_GMAC is not set
+# CONFIG_FREERTOS_USE_XMAC_V2 is not set
# end of FreeRTOS Eth Drivers
#
# FreeRTOS Spim Drivers
#
# CONFIG_FREERTOS_USE_FSPIM is not set
+# CONFIG_FREERTOS_USE_FSPIM_V2 is not set
# end of FreeRTOS Spim Drivers
#
@@ -283,6 +288,7 @@ CONFIG_FREERTOS_USE_UART=y
# FreeRTOS I2c Drivers
#
# CONFIG_FREERTOS_USE_I2C is not set
+# CONFIG_FREERTOS_USE_FI2C_V2 is not set
# end of FreeRTOS I2c Drivers
#
diff --git a/example/peripheral/media/lvgl_indev/sdkconfig.h b/example/peripheral/media/lvgl_indev/sdkconfig.h
index 8f761957221f5bfcb35bf1545be2ffeb0a1dac1b..48c0aa7f152e04cedc14f9ce2f438bb82211487d 100644
--- a/example/peripheral/media/lvgl_indev/sdkconfig.h
+++ b/example/peripheral/media/lvgl_indev/sdkconfig.h
@@ -66,6 +66,7 @@
#define CONFIG_DEFAULT_DEBUG_PRINT_UART1
/* CONFIG_DEFAULT_DEBUG_PRINT_UART0 is not set */
/* CONFIG_DEFAULT_DEBUG_PRINT_UART2 is not set */
+/* CONFIG_UART_INIT_NOT_CLR_INTR is not set */
/* end of Soc configuration */
/* Board Configuration */
@@ -144,7 +145,8 @@
/* CONFIG_USE_PWM is not set */
/* CONFIG_USE_IPC is not set */
#define CONFIG_USE_MEDIA
-#define CONFIG_USE_FMEDIA
+#define CONFIG_USE_FMEDIA_V1
+/* CONFIG_USE_FMEDIA_V2 is not set */
/* CONFIG_USE_SCMI_MHU is not set */
/* CONFIG_USE_I2S is not set */
/* CONFIG_USE_I3C is not set */
@@ -206,6 +208,7 @@
/* FreeRTOS Uart Drivers */
#define CONFIG_FREERTOS_USE_UART
+/* CONFIG_FREERTOS_USE_SERIAL_V2 is not set */
/* end of FreeRTOS Uart Drivers */
/* FreeRTOS Pwm Drivers */
@@ -227,11 +230,13 @@
/* CONFIG_FREERTOS_USE_XMAC is not set */
/* CONFIG_FREERTOS_USE_GMAC is not set */
+/* CONFIG_FREERTOS_USE_XMAC_V2 is not set */
/* end of FreeRTOS Eth Drivers */
/* FreeRTOS Spim Drivers */
/* CONFIG_FREERTOS_USE_FSPIM is not set */
+/* CONFIG_FREERTOS_USE_FSPIM_V2 is not set */
/* end of FreeRTOS Spim Drivers */
/* FreeRTOS DMA Drivers */
@@ -253,6 +258,7 @@
/* FreeRTOS I2c Drivers */
/* CONFIG_FREERTOS_USE_I2C is not set */
+/* CONFIG_FREERTOS_USE_FI2C_V2 is not set */
/* end of FreeRTOS I2c Drivers */
/* FreeRTOS Mio Drivers */
diff --git a/example/peripheral/media/lvgl_indev/src/cmd.c b/example/peripheral/media/lvgl_indev/src/cmd.c
index 2460d8561c286b0b63bda405d993883f76fa8faa..3365f692c2861cf227c027c1edf84105a2a3fb7b 100644
--- a/example/peripheral/media/lvgl_indev/src/cmd.c
+++ b/example/peripheral/media/lvgl_indev/src/cmd.c
@@ -41,7 +41,7 @@
#include "lv_obj.h"
#include "lv_conf.h"
#include "lv_indev_create.h"
-#include "lv_indev_test.h"
+#include "media_common.h"
static void FFreeRTOSMediaCmdUsage(void)
{
@@ -154,13 +154,11 @@ static int MediaCmdEntry(int argc, char *argv[])
printf("please ensure the media has been inited \r\n");
return -2;
}
- if (argc < 3)
+ BaseType_t task_ret = FFreeRTOSMediaDeinit();
+ if (pdPASS != task_ret)
{
return -2;
}
-
- channel = (uint8_t)simple_strtoul(argv[2], NULL, 10);
- FFreeRTOSMediaChannelDeinit(channel);
}
if (!strcmp(argv[1], "lsusb"))
diff --git a/example/peripheral/media/lvgl_indev/src/lv_indev_create.c b/example/peripheral/media/lvgl_indev/src/lv_indev_create.c
index 5772552f1e3495992c530fbaf2cbf9ddab4fe21a..9369efcc5eee74f51f077e5b2aeb7c6cfbc539fc 100644
--- a/example/peripheral/media/lvgl_indev/src/lv_indev_create.c
+++ b/example/peripheral/media/lvgl_indev/src/lv_indev_create.c
@@ -37,13 +37,25 @@
#include "../lvgl.h"
#include "lv_indev_create.h"
#include "lv_indev_port.h"
-#include "lv_indev_test.h"
#include "lv_port_disp.h"
#include "lv_indev_example.h"
+#include "media_common.h"
+
#include "usbh_core.h"
#include "usbh_hid.h"
+/*通道组合*/
+#define CHANNEL_NONE 0x0 /*不选择*/
+#define CHANNEL_DP_0 0x1 /*通道0*/
+#define CHANNEL_DP_1 0x2 /*通道1*/
+#define CHANNEL_DP_2 0x4 /*通道2*/
+#define CHANNEL_DP_0_1 (CHANNEL_DP_0 | CHANNEL_DP_1) /*通道0 1*/
+#define CHANNEL_DP_0_2 (CHANNEL_DP_0 | CHANNEL_DP_2) /*通道0 2*/
+#define CHANNEL_DP_1_2 (CHANNEL_DP_1 | CHANNEL_DP_2) /*通道1 2*/
+#define CHANNEL_DP_ALL (CHANNEL_DP_0 | CHANNEL_DP_1 | CHANNEL_DP_2) /*通道0 1 2*/
+
+static u32 channel_mask = CHANNEL_DP_0_1; /* 默认选择双通道*/
/************************** Variable Definitions *****************************/
#define LVGL_CONTINUE_TIMER 10000000
#define LVGL_HEART_TIMER_PERIOD (pdMS_TO_TICKS(1UL))
@@ -56,6 +68,7 @@ static TaskHandle_t init_ms_task;
static TaskHandle_t init_task;
static TaskHandle_t lvgl_init_task;
static TaskHandle_t hpd_task ;
+static FFreeRTOSMedia os_media;
/************************** functions Definitions *****************************/
static void LvglHeartTimerCallback(TimerHandle_t xTimer)
{
@@ -101,6 +114,27 @@ BaseType_t FFreeRTOSListUsbDev(int argc, char *argv[])
return lsusb(argc, argv);
}
+/**
+ * @name: FFreeRTOSLVGLConfigTask
+ * @msg: config the lvgl
+ * @param {void *} pvParameters is the parameters of demo
+ * @return Null
+ */
+void FFreeRTOSLVGLConfigTask(void)
+{
+ u32 index;
+ lv_init();
+ FFreeRTOSPortInit();
+ for (index = 0; index < FDP_INSTANCE_NUM; index ++)
+ {
+ if (channel_mask & BIT(index))
+ {
+ FMediaDispFramebuffer(&os_media.dcdp_ctrl);
+ }
+ }
+ vTaskDelete(NULL);
+}
+
BaseType_t FFreeRTOSInitKbCreate(u32 id)
{
BaseType_t xReturn = pdPASS; /* 定义一个创建信息返回值,默认为 pdPASS */
@@ -149,17 +183,17 @@ BaseType_t FFreeRTOSMediaInitCreate(void )
/* enter critical region */
taskENTER_CRITICAL();
/* Media init task */
- xReturn = xTaskCreate((TaskFunction_t)FFreeRTOSMediaDeviceInit, /* 任务入口函数 */
- (const char *)"FFreeRTOSMediaDeviceInit", /* 任务名字 */
+ xReturn = xTaskCreate((TaskFunction_t)FMediaInitTask, /* 任务入口函数 */
+ (const char *)"FMediaInitTask", /* 任务名字 */
1024, /* 任务栈大小 */
- NULL, /* 任务入口函数参数 */
+ &os_media, /* 任务入口函数参数 */
(UBaseType_t)configMAX_PRIORITIES - 2, /* 任务的优先级 */
(TaskHandle_t *)&init_task); /* 任务控制 */
/* Hpd task control */
- xReturn = xTaskCreate((TaskFunction_t)FFreeRTOSMediaHpdHandle, /* 任务入口函数 */
- (const char *)"FFreeRTOSMediaHpdHandle", /* 任务名字 */
+ xReturn = xTaskCreate((TaskFunction_t)FFreeRTOSMediaHpdTask, /* 任务入口函数 */
+ (const char *)"FFreeRTOSMediaHpdTask", /* 任务名字 */
1024, /* 任务栈大小 */
- NULL, /* 任务入口函数参数 */
+ &os_media, /* 任务入口函数参数 */
(UBaseType_t)configMAX_PRIORITIES - 1, /* 任务的优先级 */
(TaskHandle_t *)&hpd_task);
/* exit critical region */
@@ -167,6 +201,25 @@ BaseType_t FFreeRTOSMediaInitCreate(void )
return xReturn;
}
+/* create media test*/
+BaseType_t FFreeRTOSMediaDeinit(void)
+{
+
+ BaseType_t xReturn = pdPASS; /* 定义一个创建信息返回值,默认为 pdPASS */
+ /* enter critical region */
+ taskENTER_CRITICAL();
+ /* Media init task */
+ xReturn = xTaskCreate((TaskFunction_t)FFreeRTOSMediaChannelDeinit, /* 任务入口函数 */
+ (const char *)"FMediaDeInitTask", /* 任务名字 */
+ 1024, /* 任务栈大小 */
+ &os_media, /* 任务入口函数参数 */
+ (UBaseType_t)configMAX_PRIORITIES - 2, /* 任务的优先级 */
+ (TaskHandle_t *)&init_task);
+ /* exit critical region */
+ taskEXIT_CRITICAL();
+ return xReturn;
+}
+
/**
* @name: FFreeRTOSlVGLConfigCreate
* @msg: set the lvgl init task
diff --git a/example/peripheral/media/lvgl_indev/src/lv_indev_example.c b/example/peripheral/media/lvgl_indev/src/lv_indev_example.c
index b62a055323f739f1b64b5563ac0847ae9579b838..43399e10a8ddc0a519ad33bb80987b1d59400c6f 100644
--- a/example/peripheral/media/lvgl_indev/src/lv_indev_example.c
+++ b/example/peripheral/media/lvgl_indev/src/lv_indev_example.c
@@ -32,7 +32,6 @@
#include "task.h"
#include "../lvgl.h"
-#include "lv_indev_test.h"
#include "lv_indev_port.h"
#include "lv_port_disp.h"
#include "lv_spinbox.h"
diff --git a/example/peripheral/media/lvgl_indev/src/lv_indev_test.c b/example/peripheral/media/lvgl_indev/src/lv_indev_test.c
deleted file mode 100644
index 7de59d3c77b058f71ef95cb7f63b7b47bd6f36c8..0000000000000000000000000000000000000000
--- a/example/peripheral/media/lvgl_indev/src/lv_indev_test.c
+++ /dev/null
@@ -1,346 +0,0 @@
-/*
- * Copyright (C) 2023, Phytium Technology Co., Ltd. All Rights Reserved.
- *
- * Licensed under the BSD 3-Clause License (the "License"); you may not use
- * this file except in compliance with the License. You may obtain a copy of
- * the License at
- *
- * https://opensource.org/licenses/BSD-3-Clause
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- *
- * FilePath: lv_indev_test.c
- * Created Date: 2023-07-06 14:36:43
- * Last Modified: 2025-05-20 10:43:26
- * Description: This file is for config the test
- *
- * Modify History:
- * Ver Who Date Changes
- * ----- ---------- -------- ---------------------------------
- * 1.0 Wangzq 2023/07/06 Modify the format and establish the version
- */
-
-#include
-#include
-#include "FreeRTOSConfig.h"
-#include "FreeRTOS.h"
-#include "task.h"
-#include "timers.h"
-#include "fassert.h"
-#include "fcpu_info.h"
-#include "fparameters_comm.h"
-
-#include "fdcdp.h"
-#include "fdc.h"
-#include "fdp.h"
-#include "fdp_hw.h"
-#include "fdc_hw.h"
-#include "fmedia_os.h"
-#include "fdcdp_reg.h"
-#include "fdcdp_crtc.h"
-#include "lv_indev_port.h"
-#include "lv_port_disp.h"
-
-typedef struct
-{
- u32 bit_depth;
- u32 bpc;
- u32 color_depth;
- u32 clock_mode;
- u32 color_rep;
- u32 width;
- u32 height;
- u32 multi_mode;
-} FuserCfg;
-
-static const FuserCfg user_cfg = {
- .bit_depth = 8,
- .bpc = 8,
- .color_depth = 32,
- .clock_mode = 1,
- .color_rep = 0,
- .width = 800,
- .height = 600,
- .multi_mode = 0/*0:clone, 1 :horz, 2:vert*/
-};
-/************************** Variable Definitions *****************************/
-#define FMEDIA_EVT_INTR(index) BIT(index)
-#define FMEDIA_CHANNEL_0 0
-#define FMEDIA_CHANNEL_1 1
-
-static FFreeRTOSMedia os_media;
-
-static EventGroupHandle_t media_event = NULL;
-static u8 static_frame_buffer_address[1920 * 1080 * 4] __attribute__((aligned(128))) = {0};/*Framebuffer 大小 (字节) = 屏幕宽度 (像素) × 屏幕高度 (像素) × 每像素位数 (bpp) / 8*/
-/************************** functions Definitions *****************************/
-static void FFreeRTOSMediaSendEvent(u32 evt_bits)
-{
- FASSERT(media_event);
-
- BaseType_t x_result = pdFALSE;
- BaseType_t xhigher_priority_task_woken = pdFALSE;
- /*set the irq event for the task*/
- x_result = xEventGroupSetBitsFromISR(media_event, evt_bits, &xhigher_priority_task_woken);
-
-}
-
-static boolean FFreeRTOSMediaWaitEvent(u32 evt_bits, TickType_t wait_delay)
-{
- FASSERT(media_event);
-
- EventBits_t event;
- event = xEventGroupWaitBits(media_event, evt_bits,
- pdTRUE, pdFALSE, wait_delay);/*wait the irq event for the task*/
- if (event & evt_bits)
- {
- return TRUE;
- }
- return FALSE;
-}
-
-static boolean FFreeRTOSMediaClearEvent(EventGroupHandle_t pvEventGroup, const uint32_t ulBitsToClear)
-{
- FASSERT(media_event);
-
- EventBits_t event;
- event = xEventGroupClearBits(pvEventGroup, ulBitsToClear);/*clear the intr bits*/
- return TRUE;
-}
-
-/**
- * @name: FFreeRTOSMediaHpdConnectCallback
- * @msg: the hpd connect event
- * @param {void} *args is the instance of dcdp
- * @param {u32} index is the channel
- * @return Null
- */
-static void FFreeRTOSMediaHpdConnectCallback(void *args, u32 index)
-{
- FASSERT(args != NULL);
- FDcDp *instance_p = (FDcDp *)args;
- FDpChannelRegRead(instance_p->dp_instance_p[index].config.dp_channe_base_addr, PHYTIUM_DP_INTERRUPT_STATUS); /*clear interrupt*/
- FFreeRTOSMediaSendEvent(FMEDIA_EVT_INTR(index));
- instance_p->is_initialized[index] = FDCDP_IS_INITIALIZED;
- printf("Dp:%d connect\r\n", index);
-
-}
-
-/**
- * @name: FFreeRTOSMediaHpdBreakCallback
- * @msg: the hpd disconnect event
- * @param {void} *args is the instance of dcdp
- * @param {u32} index is the channel
- * @return Null
- */
-static void FFreeRTOSMediaHpdBreakCallback(void *args, u32 index)
-{
- FASSERT(args != NULL);
- FDcDp *instance_p = (FDcDp *)args;
- FDpChannelRegRead(instance_p->dp_instance_p[index].config.dp_channe_base_addr, PHYTIUM_DP_INTERRUPT_STATUS); /*clear interrupt*/
- instance_p->is_initialized[index] = FDCDP_NOT_INITIALIZED;
- FFreeRTOSMediaSendEvent(FMEDIA_EVT_INTR(index));
- printf("Dp:%d disconnect\r\n", index);
-}
-
-/**
- * @name: FFreeRTOSMediaAuxTimeoutCallback
- * @msg: the aux timeout event
- * @param {void} *args is the instance of dcdp
- * @param {u32} index is the channel
- * @return Null
- */
-static void FFreeRTOSMediaAuxTimeoutCallback(void *args, u32 index)
-{
- FASSERT(args != NULL);
- FDcDp *instance_p = (FDcDp *)args;
- FDpChannelRegRead(instance_p->dp_instance_p[index].config.dp_channe_base_addr, PHYTIUM_DP_INTERRUPT_STATUS); /*clear interrupt*/
- printf("Dp:%d aux connect timeout\r\n", index);
-}
-
-/**
- * @name: FFreeRTOSMediaAuxErrorCallback
- * @msg: the aux error event
- * @param {void} *args is the instance of dcdp
- * @param {u32} index is the channel
- * @return Null
- */
-static void FFreeRTOSMediaAuxErrorCallback(void *args, u32 index)
-{
- FASSERT(args != NULL);
- FDcDp *instance_p = (FDcDp *)args;
- FDpChannelRegRead(instance_p->dp_instance_p[index].config.dp_channe_base_addr, PHYTIUM_DP_INTERRUPT_STATUS); /*clear interrupt*/
- printf("Dp:%d aux connect error\r\n", index);
-}
-
-/**
- * @name: FFreeRTOSMediaIrqSet
- * @msg: set the irq event and instance
- * @param {FDcDp} *instance_p is the instance of dcdp
- * @return Null
- */
-static void FFreeRTOSMediaIrqSet(FDcDp *instance_p)
-{
- FASSERT(instance_p != NULL);
- u32 cpu_id;
- u32 index;
-
- GetCpuId(&cpu_id);
- InterruptSetTargetCpus(instance_p->dp_instance_p[0].config.irq_num, cpu_id);/*the dc0 and dc1 have the same num of irq_num*/
-
- FDcDpRegisterHandler(instance_p, FDCDP_HPD_IRQ_CONNECTED, FFreeRTOSMediaHpdConnectCallback, (void *)instance_p);
- FDcDpRegisterHandler(instance_p, FDCDP_HPD_IRQ_DISCONNECTED, FFreeRTOSMediaHpdBreakCallback, (void *)instance_p);
- FDcDpRegisterHandler(instance_p, FDCDP_AUX_REPLY_TIMEOUT, FFreeRTOSMediaAuxTimeoutCallback, (void *)instance_p);
- FDcDpRegisterHandler(instance_p, FDCDP_AUX_REPLY_ERROR, FFreeRTOSMediaAuxErrorCallback, (void *)instance_p);
-
- InterruptSetPriority(instance_p->dp_instance_p[0].config.irq_num, FREERTOS_MEDIA_IRQ_PRIORITY);/*dp0 and dp1 have the same irq_num*/
- InterruptInstall(instance_p->dp_instance_p[0].config.irq_num, FDcDpInterruptHandler, instance_p, "media");
- InterruptUmask(instance_p->dp_instance_p[0].config.irq_num);
-}
-
-/**
- * @name: FFreeRTOSMediaIrqAllEnable
- * @msg: enable the irq
- * @param {FDcDp} *instance_p is the instance of dcdp
- * @return Null
- */
-static void FFreeRTOSMediaIrqAllEnable(FDcDp *instance_p)
-{
- int index = 0;
- FDcDpIntrEventType event_type = FDCDP_HPD_IRQ_CONNECTED;
- for (index = 0; index < FDCDP_INSTANCE_NUM; index++)
- {
- for (event_type = 0; event_type < FDCDP_INSTANCE_NUM; event_type++)
- {
- FDcDpIrqEnable(instance_p, index, event_type);
- }
- }
-}
-
-/**
- * @name: FFreeRTOSMediaDeviceInit
- * @msg: enable the Dc and Dp
- * @return Null
- */
-void FFreeRTOSMediaDeviceInit(void)
-{
- u32 index, start_index, end_index;
-
- /*设置用户参数*/
- u32 channel = 2;/* 0 or 1 or 2*/
- if (channel == FDCDP_INSTANCE_NUM)
- {
- start_index = 0;
- end_index = FDCDP_INSTANCE_NUM;
- }
- else
- {
- start_index = channel;
- end_index = channel + 1;
- }
- os_media.dcdp_ctrl.multi_mode = user_cfg.multi_mode;
- for (index = start_index; index < end_index; index ++)
- {
- FDcDpCfgInitialize(&os_media.dcdp_ctrl,index);
-
- os_media.dcdp_ctrl.dc_instance_p[index].config = *FDcLookupConfig(index);
-
- os_media.dcdp_ctrl.dp_instance_p[index].config = *FDpLookupConfig(index);
-
- os_media.dcdp_ctrl.dp_instance_p[index].trans_config.bit_depth = user_cfg.bit_depth;
-
- os_media.dcdp_ctrl.dc_instance_p[index].crtc.bpc = user_cfg.bpc;
-
- os_media.dcdp_ctrl.dc_instance_p[index].color_depth = user_cfg.color_depth;
-
- os_media.dcdp_ctrl.dp_instance_p[index].trans_config.clock_mode = user_cfg.clock_mode;
-
- os_media.dcdp_ctrl.dp_instance_p[index].trans_config.color_rep_format = user_cfg.color_rep;
-
- os_media.dcdp_ctrl.dc_instance_p[index].channel = index;
-
- os_media.dcdp_ctrl.dc_instance_p[index].fb_addr = (uintptr)static_frame_buffer_address ;/*当前例程虚拟地址和物理地址一致,实际需要根据需要进行映射*/
-
- os_media.dcdp_ctrl.dc_instance_p[index].fb_virtual = (uintptr)static_frame_buffer_address ;/*当前例程虚拟地址和物理地址一致,实际需要根据需要进行映射*/
-
- FDcDpGeneralCfgInitial(&os_media.dcdp_ctrl, index);
- }
- FFreeRTOSMedia *os_config = FFreeRTOSMediaHwInit(&os_media,user_cfg.width, user_cfg.height);
- FASSERT_MSG(NULL == media_event, "Event group exists.");
- FASSERT_MSG((media_event = xEventGroupCreate()) != NULL, "Create event group failed.");
- FFreeRTOSMediaIrqSet(&os_config->dcdp_ctrl);
- FFreeRTOSMediaIrqAllEnable(&os_config->dcdp_ctrl);
- vTaskDelete(NULL);
-}
-
-/**
- * @name: FFreeRTOSMediaChannelDeinit
- * @msg: deinit the media
- * @param {u32} id is the channel of dcdp
- * @return Null
- */
-void FFreeRTOSMediaChannelDeinit(u32 id)
-{
- taskENTER_CRITICAL();
- vEventGroupDelete(media_event);
- media_event = NULL;
- FDcDpDeInitialize(&os_media.dcdp_ctrl, id);
- taskEXIT_CRITICAL(); /* allow schedule after deinit */
- return ;
-}
-
-/**
- * @name: FFreeRTOSMediaHpdHandle
- * @msg: handle the hpd event
- * @return Null
- */
-void FFreeRTOSMediaHpdHandle(void)
-{
- u32 index;
- u32 ret = FDP_SUCCESS;
-
- FFreeRTOSMediaWaitEvent(FMEDIA_EVT_INTR(FMEDIA_CHANNEL_0) | FMEDIA_EVT_INTR(FMEDIA_CHANNEL_1), portMAX_DELAY);
- os_media.dcdp_ctrl.multi_mode = user_cfg.multi_mode;
- for (;;)
- {
- for (index = 0; index < FDCDP_INSTANCE_NUM; index++)
- {
- if (os_media.dcdp_ctrl.is_initialized[index] == FDCDP_NOT_INITIALIZED)
- {
- FDcDpCfgInitialize(&os_media.dcdp_ctrl, index);
- ret = FDcDpInitial(&os_media.dcdp_ctrl, index, user_cfg.width, user_cfg.height);
- FFreeRTOSMediaClearEvent(media_event, FMEDIA_EVT_INTR(index));
- if (ret == FDP_SUCCESS)
- {
- printf("Hpd task finish , reinit the dp success.\r\n");
- }
- os_media.dcdp_ctrl.is_initialized[index] = FDCDP_IS_INITIALIZED;
- }
-
- }
- vTaskDelay(200);
- }
-}
-
-
-/**
- * @name: FFreeRTOSLVGLConfigTask
- * @msg: config the lvgl
- * @param {void *} pvParameters is the parameters of demo
- * @return Null
- */
-void FFreeRTOSLVGLConfigTask(void)
-{
- u32 index;
- lv_init();
- FFreeRTOSPortInit();
- for (index = 0; index < FDCDP_INSTANCE_NUM; index ++)
- {
- FMediaDispFramebuffer(&os_media.dcdp_ctrl);
- }
- vTaskDelete(NULL);
-}
diff --git a/example/peripheral/media/lvgl_ui/README.md b/example/peripheral/media/lvgl_ui/README.md
index 62a32770b04ed8cabee1fca2422e8683c088089e..575b55a2b4dd9745f6c37b504a1d128f16aeda6a 100644
--- a/example/peripheral/media/lvgl_ui/README.md
+++ b/example/peripheral/media/lvgl_ui/README.md
@@ -35,7 +35,7 @@ LVGL (Light and Versatile Graphics Library) 是最流行的免费开源嵌入式
本例程所需的硬件设备包括
-- 通过DP线将显示器与E2000板卡连接
+- 通过DP线将显示器与E2000D/Q DEMO、PhytiumPi开发板连接
- 利用串口调试线连接板卡和调试电脑,波特率设为 115200-8-1-N
### 2.2 SDK配置方法
@@ -64,9 +64,9 @@ LVGL (Light and Versatile Graphics Library) 是最流行的免费开源嵌入式
- 在host侧完成配置
->配置成E2000,对于其它平台,使用对应的默认配置
+>配置成E2000Q demo,对于其它平台,使用对应的默认配置
```
-make load_kconfig LOAD_CONFIG_NAME=e2000q_aarch64_demo_media
+make load_kconfig LOAD_CONFIG_NAME=pe2204_aarch64_demo_media
make menuconfig
make image
```
diff --git a/example/peripheral/media/lvgl_ui/configs/pe2202_aarch32_demo_media.config b/example/peripheral/media/lvgl_ui/configs/pe2202_aarch32_demo_media.config
index f4de77ab9ca2d29fd08443f37f147a883e4fff6e..66cbd8debeff014eff6d5207b5c1aa6ccd24de22 100644
--- a/example/peripheral/media/lvgl_ui/configs/pe2202_aarch32_demo_media.config
+++ b/example/peripheral/media/lvgl_ui/configs/pe2202_aarch32_demo_media.config
@@ -3,7 +3,7 @@ CONFIG_TARGET_PE2202=y
CONFIG_TARGET_NAME="media"
CONFIG_LOG_DEBUG=y
CONFIG_USE_MEDIA=y
-CONFIG_USE_FMEDIA=y
+CONFIG_USE_FMEDIA_V1=y
CONFIG_DEFAULT_LINKER_SCRIPT=y
CONFIG_IMAGE_MAX_LENGTH=0x20000000
CONFIG_FREERTOS_USE_MEDIA=y
diff --git a/example/peripheral/media/lvgl_ui/configs/pe2202_aarch64_demo_media.config b/example/peripheral/media/lvgl_ui/configs/pe2202_aarch64_demo_media.config
index 073e80e0b21aead7df0493381db93a431ebc9a09..36ef82c2278915f636fadfbc38c4c9010beafb66 100644
--- a/example/peripheral/media/lvgl_ui/configs/pe2202_aarch64_demo_media.config
+++ b/example/peripheral/media/lvgl_ui/configs/pe2202_aarch64_demo_media.config
@@ -2,7 +2,7 @@ CONFIG_TARGET_PE2202=y
CONFIG_TARGET_NAME="media"
CONFIG_LOG_DEBUG=y
CONFIG_USE_MEDIA=y
-CONFIG_USE_FMEDIA=y
+CONFIG_USE_FMEDIA_V1=y
CONFIG_DEFAULT_LINKER_SCRIPT=y
CONFIG_IMAGE_MAX_LENGTH=0x20000000
CONFIG_FREERTOS_USE_MEDIA=y
diff --git a/example/peripheral/media/lvgl_ui/configs/pe2204_aarch32_demo_media.config b/example/peripheral/media/lvgl_ui/configs/pe2204_aarch32_demo_media.config
index 850cfa980c34c523a8250e37ceeb235d5f3ab81c..4bbd35cf3aab7b1db1fa062cfa66464e6adf67e6 100644
--- a/example/peripheral/media/lvgl_ui/configs/pe2204_aarch32_demo_media.config
+++ b/example/peripheral/media/lvgl_ui/configs/pe2204_aarch32_demo_media.config
@@ -2,7 +2,7 @@ CONFIG_ARCH_ARMV8_AARCH32=y
CONFIG_TARGET_NAME="media"
CONFIG_LOG_DEBUG=y
CONFIG_USE_MEDIA=y
-CONFIG_USE_FMEDIA=y
+CONFIG_USE_FMEDIA_V1=y
CONFIG_DEFAULT_LINKER_SCRIPT=y
CONFIG_IMAGE_MAX_LENGTH=0x20000000
CONFIG_FREERTOS_USE_MEDIA=y
diff --git a/example/peripheral/media/lvgl_ui/configs/pe2204_aarch32_phytiumpi_media.config b/example/peripheral/media/lvgl_ui/configs/pe2204_aarch32_phytiumpi_media.config
index 1389b8c268a504ba40b7059405b0d5e4953a5d9c..4255fe8b4a6ba3013e962307783395a9ca4e3f54 100644
--- a/example/peripheral/media/lvgl_ui/configs/pe2204_aarch32_phytiumpi_media.config
+++ b/example/peripheral/media/lvgl_ui/configs/pe2204_aarch32_phytiumpi_media.config
@@ -3,7 +3,7 @@ CONFIG_PHYTIUMPI_FIREFLY_BOARD=y
CONFIG_TARGET_NAME="media"
CONFIG_LOG_DEBUG=y
CONFIG_USE_MEDIA=y
-CONFIG_USE_FMEDIA=y
+CONFIG_USE_FMEDIA_V1=y
CONFIG_DEFAULT_LINKER_SCRIPT=y
CONFIG_IMAGE_MAX_LENGTH=0x20000000
CONFIG_FREERTOS_USE_MEDIA=y
diff --git a/example/peripheral/media/lvgl_ui/configs/pe2204_aarch64_demo_media.config b/example/peripheral/media/lvgl_ui/configs/pe2204_aarch64_demo_media.config
index 244c389045e7e31ad20f176187e0f7541a3b3ee7..59fa115a86da932cb26ce941b3d95c6d6c84a822 100644
--- a/example/peripheral/media/lvgl_ui/configs/pe2204_aarch64_demo_media.config
+++ b/example/peripheral/media/lvgl_ui/configs/pe2204_aarch64_demo_media.config
@@ -1,7 +1,7 @@
CONFIG_TARGET_NAME="media"
CONFIG_LOG_DEBUG=y
CONFIG_USE_MEDIA=y
-CONFIG_USE_FMEDIA=y
+CONFIG_USE_FMEDIA_V1=y
CONFIG_DEFAULT_LINKER_SCRIPT=y
CONFIG_IMAGE_MAX_LENGTH=0x20000000
CONFIG_STACK_SIZE=0x100000
diff --git a/example/peripheral/media/lvgl_ui/configs/pe2204_aarch64_phytiumpi_media.config b/example/peripheral/media/lvgl_ui/configs/pe2204_aarch64_phytiumpi_media.config
index c9a0383ff1524cd5868d7598f8697c70a8c87a07..b5a586e6a88ac1c2f17ff480ed8ee977c704a6a8 100644
--- a/example/peripheral/media/lvgl_ui/configs/pe2204_aarch64_phytiumpi_media.config
+++ b/example/peripheral/media/lvgl_ui/configs/pe2204_aarch64_phytiumpi_media.config
@@ -3,7 +3,7 @@ CONFIG_PHYTIUMPI_FIREFLY_BOARD=y
CONFIG_TARGET_NAME="media"
CONFIG_LOG_DEBUG=y
CONFIG_USE_MEDIA=y
-CONFIG_USE_FMEDIA=y
+CONFIG_USE_FMEDIA_V1=y
CONFIG_DEFAULT_LINKER_SCRIPT=y
CONFIG_IMAGE_MAX_LENGTH=0x20000000
CONFIG_FREERTOS_USE_MEDIA=y
diff --git a/example/peripheral/media/lvgl_ui/inc/lv_indev_create.h b/example/peripheral/media/lvgl_ui/inc/lv_indev_create.h
index 2f900c3e6e27669d981296ca4615a343ab65feee..33341f564fc3a9c94e6de4fb058ada16f9807eb6 100644
--- a/example/peripheral/media/lvgl_ui/inc/lv_indev_create.h
+++ b/example/peripheral/media/lvgl_ui/inc/lv_indev_create.h
@@ -43,6 +43,12 @@ extern "C" {
#include "lvgl-8.3/lvgl.h"
#endif
+/*the lvgl demo*/
+void lv_demo_indev(void);
+
+/*lvgl config*/
+void FFreeRTOSLVGLConfigTask(void);
+
/*create the media demo init task*/
BaseType_t FFreeRTOSDemoCreate(void);
@@ -58,6 +64,9 @@ BaseType_t FFreeRTOSListUsbDev(int argc, char *argv[]);
/*init the media*/
BaseType_t FFreeRTOSMediaInitCreate(void);
+/*deinit the media*/
+BaseType_t FFreeRTOSMediaDeinit(void);
+
/*set the lvgl init task*/
BaseType_t FFreeRTOSlVGLConfigCreate(void);
diff --git a/example/peripheral/media/lvgl_ui/inc/lv_indev_test.h b/example/peripheral/media/lvgl_ui/inc/lv_indev_test.h
deleted file mode 100644
index 133bf775b9bb0aa513e129bbf6de61af92527ebe..0000000000000000000000000000000000000000
--- a/example/peripheral/media/lvgl_ui/inc/lv_indev_test.h
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
- * Copyright (C) 2023, Phytium Technology Co., Ltd. All Rights Reserved.
- *
- * Licensed under the BSD 3-Clause License (the "License"); you may not use
- * this file except in compliance with the License. You may obtain a copy of
- * the License at
- *
- * https://opensource.org/licenses/BSD-3-Clause
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * FilePath: lv_indev_test.h
- * Date: 2023-02-05 18:27:47
- * LastEditTime: 2023-07-06 11:02:47
- * Description: This file is for providing the lvgl test config
- *
- * Modify History:
- * Ver Who Date Changes
- * ----- ------ -------- --------------------------------------
- * 1.0 Wangzq 2023//07/06 Modify the format and establish the version
- * 1.1 Wangzq 2023/07/07 change the third-party and driver relation
- */
-
-#ifndef LV_INDEV_TEST_H
-#define LV_INDEV_TEST_H
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include "lvgl.h"
-#include "ftypes.h"
-
-
-/*the lvgl demo*/
-void lv_demo_indev(void);
-
-/*deinit the media */
-void FFreeRTOSMediaChannelDeinit(u32 id);
-
-/*handle the hpd event*/
-void FFreeRTOSMediaHpdHandle(void);
-
-/*init the media */
-void FFreeRTOSMediaDeviceInit(void);
-
-/*lvgl config*/
-void FFreeRTOSLVGLConfigTask(void);
-
-#ifdef __cplusplus
-} /*extern "C"*/
-#endif
-#endif
\ No newline at end of file
diff --git a/example/peripheral/media/lvgl_ui/makefile b/example/peripheral/media/lvgl_ui/makefile
index 19fd8ff42f59b2097918afcd78c62f26b6ec24c8..a2d96918a315fe807d0505a8689dbb45261e95d7 100644
--- a/example/peripheral/media/lvgl_ui/makefile
+++ b/example/peripheral/media/lvgl_ui/makefile
@@ -11,13 +11,14 @@ BOOT_IMG_NAME ?= freertos
USER_CSRC := main.c
USER_CSRC += $(wildcard src/*.c)
-USER_CSRC += $(wildcard ../common/*.c)
+USER_CSRC += $(wildcard ../media_common/*.c)
USER_ASRC :=
USER_CXXSRC :=
USER_INCLUDE := $(PROJECT_DIR) \
$(PROJECT_DIR)/inc \
+ $(PROJECT_DIR)/../media_common
include $(FREERTOS_SDK_DIR)/tools/makeall.mk
diff --git a/example/peripheral/media/lvgl_ui/sdkconfig b/example/peripheral/media/lvgl_ui/sdkconfig
index 79b2eb17710c6450aba6561de711dbaaab08639b..9b76cd9e520a7f28631e15161b8e0b78270f14b2 100644
--- a/example/peripheral/media/lvgl_ui/sdkconfig
+++ b/example/peripheral/media/lvgl_ui/sdkconfig
@@ -70,6 +70,7 @@ CONFIG_TARGET_PE220X=y
CONFIG_DEFAULT_DEBUG_PRINT_UART1=y
# CONFIG_DEFAULT_DEBUG_PRINT_UART0 is not set
# CONFIG_DEFAULT_DEBUG_PRINT_UART2 is not set
+# CONFIG_UART_INIT_NOT_CLR_INTR is not set
# end of Soc configuration
#
@@ -156,7 +157,8 @@ CONFIG_ENABLE_Pl011_UART=y
# CONFIG_USE_PWM is not set
# CONFIG_USE_IPC is not set
CONFIG_USE_MEDIA=y
-CONFIG_USE_FMEDIA=y
+CONFIG_USE_FMEDIA_V1=y
+# CONFIG_USE_FMEDIA_V2 is not set
# CONFIG_USE_SCMI_MHU is not set
# CONFIG_USE_I2S is not set
# CONFIG_USE_I3C is not set
@@ -227,6 +229,7 @@ CONFIG_STACK_SIZE=0x400
# FreeRTOS Uart Drivers
#
CONFIG_FREERTOS_USE_UART=y
+# CONFIG_FREERTOS_USE_SERIAL_V2 is not set
# end of FreeRTOS Uart Drivers
#
@@ -252,12 +255,14 @@ CONFIG_FREERTOS_USE_UART=y
#
# CONFIG_FREERTOS_USE_XMAC is not set
# CONFIG_FREERTOS_USE_GMAC is not set
+# CONFIG_FREERTOS_USE_XMAC_V2 is not set
# end of FreeRTOS Eth Drivers
#
# FreeRTOS Spim Drivers
#
# CONFIG_FREERTOS_USE_FSPIM is not set
+# CONFIG_FREERTOS_USE_FSPIM_V2 is not set
# end of FreeRTOS Spim Drivers
#
@@ -283,6 +288,7 @@ CONFIG_FREERTOS_USE_UART=y
# FreeRTOS I2c Drivers
#
# CONFIG_FREERTOS_USE_I2C is not set
+# CONFIG_FREERTOS_USE_FI2C_V2 is not set
# end of FreeRTOS I2c Drivers
#
diff --git a/example/peripheral/media/lvgl_ui/sdkconfig.h b/example/peripheral/media/lvgl_ui/sdkconfig.h
index 8f761957221f5bfcb35bf1545be2ffeb0a1dac1b..48c0aa7f152e04cedc14f9ce2f438bb82211487d 100644
--- a/example/peripheral/media/lvgl_ui/sdkconfig.h
+++ b/example/peripheral/media/lvgl_ui/sdkconfig.h
@@ -66,6 +66,7 @@
#define CONFIG_DEFAULT_DEBUG_PRINT_UART1
/* CONFIG_DEFAULT_DEBUG_PRINT_UART0 is not set */
/* CONFIG_DEFAULT_DEBUG_PRINT_UART2 is not set */
+/* CONFIG_UART_INIT_NOT_CLR_INTR is not set */
/* end of Soc configuration */
/* Board Configuration */
@@ -144,7 +145,8 @@
/* CONFIG_USE_PWM is not set */
/* CONFIG_USE_IPC is not set */
#define CONFIG_USE_MEDIA
-#define CONFIG_USE_FMEDIA
+#define CONFIG_USE_FMEDIA_V1
+/* CONFIG_USE_FMEDIA_V2 is not set */
/* CONFIG_USE_SCMI_MHU is not set */
/* CONFIG_USE_I2S is not set */
/* CONFIG_USE_I3C is not set */
@@ -206,6 +208,7 @@
/* FreeRTOS Uart Drivers */
#define CONFIG_FREERTOS_USE_UART
+/* CONFIG_FREERTOS_USE_SERIAL_V2 is not set */
/* end of FreeRTOS Uart Drivers */
/* FreeRTOS Pwm Drivers */
@@ -227,11 +230,13 @@
/* CONFIG_FREERTOS_USE_XMAC is not set */
/* CONFIG_FREERTOS_USE_GMAC is not set */
+/* CONFIG_FREERTOS_USE_XMAC_V2 is not set */
/* end of FreeRTOS Eth Drivers */
/* FreeRTOS Spim Drivers */
/* CONFIG_FREERTOS_USE_FSPIM is not set */
+/* CONFIG_FREERTOS_USE_FSPIM_V2 is not set */
/* end of FreeRTOS Spim Drivers */
/* FreeRTOS DMA Drivers */
@@ -253,6 +258,7 @@
/* FreeRTOS I2c Drivers */
/* CONFIG_FREERTOS_USE_I2C is not set */
+/* CONFIG_FREERTOS_USE_FI2C_V2 is not set */
/* end of FreeRTOS I2c Drivers */
/* FreeRTOS Mio Drivers */
diff --git a/example/peripheral/media/lvgl_ui/src/cmd.c b/example/peripheral/media/lvgl_ui/src/cmd.c
index 2460d8561c286b0b63bda405d993883f76fa8faa..e2efa6f941aca00a857278567469396b437e52fc 100644
--- a/example/peripheral/media/lvgl_ui/src/cmd.c
+++ b/example/peripheral/media/lvgl_ui/src/cmd.c
@@ -41,7 +41,7 @@
#include "lv_obj.h"
#include "lv_conf.h"
#include "lv_indev_create.h"
-#include "lv_indev_test.h"
+#include "media_common.h"
static void FFreeRTOSMediaCmdUsage(void)
{
@@ -64,7 +64,6 @@ static int MediaCmdEntry(int argc, char *argv[])
{
u32 id ;
u32 usb_id = 0;
- u32 channel;
static boolean inited = FALSE;
if (argc < 2)
{
@@ -74,7 +73,6 @@ static int MediaCmdEntry(int argc, char *argv[])
if (!strcmp(argv[1], "init"))
{
BaseType_t task_ret = FFreeRTOSMediaInitCreate();
-
if (pdPASS != task_ret)
{
return -2;
@@ -154,13 +152,11 @@ static int MediaCmdEntry(int argc, char *argv[])
printf("please ensure the media has been inited \r\n");
return -2;
}
- if (argc < 3)
+ BaseType_t task_ret = FFreeRTOSMediaDeinit();
+ if (pdPASS != task_ret)
{
return -2;
}
-
- channel = (uint8_t)simple_strtoul(argv[2], NULL, 10);
- FFreeRTOSMediaChannelDeinit(channel);
}
if (!strcmp(argv[1], "lsusb"))
diff --git a/example/peripheral/media/lvgl_ui/src/lv_indev_create.c b/example/peripheral/media/lvgl_ui/src/lv_indev_create.c
index b218e0bc4ca4a81661820cffb08389595a06964a..f689a5344404805ed77338393c8857a6111e78b3 100644
--- a/example/peripheral/media/lvgl_ui/src/lv_indev_create.c
+++ b/example/peripheral/media/lvgl_ui/src/lv_indev_create.c
@@ -36,13 +36,24 @@
#include "../lvgl.h"
#include "lv_indev_create.h"
#include "lv_indev_port.h"
-#include "lv_indev_test.h"
#include "lv_port_disp.h"
#include "lv_indev_example.h"
+#include "media_common.h"
#include "usbh_core.h"
#include "usbh_hid.h"
+/*通道组合*/
+#define CHANNEL_NONE 0x0 /*不选择*/
+#define CHANNEL_DP_0 0x1 /*通道0*/
+#define CHANNEL_DP_1 0x2 /*通道1*/
+#define CHANNEL_DP_2 0x4 /*通道2*/
+#define CHANNEL_DP_0_1 (CHANNEL_DP_0 | CHANNEL_DP_1) /*通道0 1*/
+#define CHANNEL_DP_0_2 (CHANNEL_DP_0 | CHANNEL_DP_2) /*通道0 2*/
+#define CHANNEL_DP_1_2 (CHANNEL_DP_1 | CHANNEL_DP_2) /*通道1 2*/
+#define CHANNEL_DP_ALL (CHANNEL_DP_0 | CHANNEL_DP_1 | CHANNEL_DP_2) /*通道0 1 2*/
+
+static u32 channel_mask = CHANNEL_DP_0_1; /* 默认选择双通道*/
/************************** Variable Definitions *****************************/
#define LVGL_CONTINUE_TIMER 10000000
#define LVGL_HEART_TIMER_PERIOD (pdMS_TO_TICKS(1UL))
@@ -55,6 +66,7 @@ static TaskHandle_t init_ms_task;
static TaskHandle_t init_task;
static TaskHandle_t lvgl_init_task;
static TaskHandle_t hpd_task ;
+static FFreeRTOSMedia os_media;
/************************** functions Definitions *****************************/
static void LvglHeartTimerCallback(TimerHandle_t xTimer)
{
@@ -100,6 +112,27 @@ BaseType_t FFreeRTOSListUsbDev(int argc, char *argv[])
return lsusb(argc, argv);
}
+/**
+ * @name: FFreeRTOSLVGLConfigTask
+ * @msg: config the lvgl
+ * @param {void *} pvParameters is the parameters of demo
+ * @return Null
+ */
+void FFreeRTOSLVGLConfigTask(void)
+{
+ u32 index;
+ lv_init();
+ FFreeRTOSPortInit();
+ for (index = 0; index < FDP_INSTANCE_NUM; index ++)
+ {
+ if (channel_mask & BIT(index))
+ {
+ FMediaDispFramebuffer(&os_media.dcdp_ctrl);
+ }
+ }
+ vTaskDelete(NULL);
+}
+
BaseType_t FFreeRTOSInitKbCreate(u32 id)
{
BaseType_t xReturn = pdPASS; /* 定义一个创建信息返回值,默认为 pdPASS */
@@ -148,17 +181,17 @@ BaseType_t FFreeRTOSMediaInitCreate(void )
/* enter critical region */
taskENTER_CRITICAL();
/* Media init task */
- xReturn = xTaskCreate((TaskFunction_t)FFreeRTOSMediaDeviceInit, /* 任务入口函数 */
+ xReturn = xTaskCreate((TaskFunction_t)FMediaInitTask, /* 任务入口函数 */
(const char *)"FFreeRTOSMediaDeviceInit", /* 任务名字 */
1024, /* 任务栈大小 */
- NULL, /* 任务入口函数参数 */
+ &os_media, /* 任务入口函数参数 */
(UBaseType_t)configMAX_PRIORITIES - 2, /* 任务的优先级 */
(TaskHandle_t *)&init_task); /* 任务控制 */
/* Hpd task control */
- xReturn = xTaskCreate((TaskFunction_t)FFreeRTOSMediaHpdHandle, /* 任务入口函数 */
- (const char *)"FFreeRTOSMediaHpdHandle", /* 任务名字 */
- 1024, /* 任务栈大小 */
- NULL, /* 任务入口函数参数 */
+ xReturn = xTaskCreate((TaskFunction_t)FFreeRTOSMediaHpdTask, /* 任务入口函数 */
+ (const char *)"FFreeRTOSMediaHpdTask", /* 任务名字 */
+ 1024, /* 任务栈大小 */
+ &os_media, /* 任务入口函数参数 */
(UBaseType_t)configMAX_PRIORITIES - 1, /* 任务的优先级 */
(TaskHandle_t *)&hpd_task);
/* exit critical region */
@@ -166,6 +199,25 @@ BaseType_t FFreeRTOSMediaInitCreate(void )
return xReturn;
}
+/* create media test*/
+BaseType_t FFreeRTOSMediaDeinit(void)
+{
+
+ BaseType_t xReturn = pdPASS; /* 定义一个创建信息返回值,默认为 pdPASS */
+ /* enter critical region */
+ taskENTER_CRITICAL();
+ /* Media init task */
+ xReturn = xTaskCreate((TaskFunction_t)FFreeRTOSMediaChannelDeinit, /* 任务入口函数 */
+ (const char *)"FMediaDeInitTask", /* 任务名字 */
+ 1024, /* 任务栈大小 */
+ &os_media, /* 任务入口函数参数 */
+ (UBaseType_t)configMAX_PRIORITIES - 2, /* 任务的优先级 */
+ (TaskHandle_t *)&init_task);
+ /* exit critical region */
+ taskEXIT_CRITICAL();
+ return xReturn;
+}
+
/**
* @name: FFreeRTOSlVGLConfigCreate
* @msg: set the lvgl init task
diff --git a/example/peripheral/media/lvgl_ui/src/lv_indev_test.c b/example/peripheral/media/lvgl_ui/src/lv_indev_test.c
deleted file mode 100644
index fc3b16882784b14f0c4cd8b9ba045c8529dcc1b1..0000000000000000000000000000000000000000
--- a/example/peripheral/media/lvgl_ui/src/lv_indev_test.c
+++ /dev/null
@@ -1,346 +0,0 @@
-/*
- * Copyright (C) 2023, Phytium Technology Co., Ltd. All Rights Reserved.
- *
- * Licensed under the BSD 3-Clause License (the "License"); you may not use
- * this file except in compliance with the License. You may obtain a copy of
- * the License at
- *
- * https://opensource.org/licenses/BSD-3-Clause
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- *
- * FilePath: lv_indev_test.c
- * Created Date: 2023-07-06 14:36:43
- * Last Modified: 2024-05-14 09:35:32
- * Description: This file is for config the test
- *
- * Modify History:
- * Ver Who Date Changes
- * ----- ---------- -------- ---------------------------------
- * 1.0 Wangzq 2023/07/06 Modify the format and establish the version
- */
-
-#include
-#include
-#include "FreeRTOSConfig.h"
-#include "FreeRTOS.h"
-#include "task.h"
-#include "timers.h"
-#include "fassert.h"
-#include "fcpu_info.h"
-#include "fparameters_comm.h"
-
-#include "fdcdp.h"
-#include "fdc.h"
-#include "fdp.h"
-#include "fdp_hw.h"
-#include "fdc_hw.h"
-#include "fmedia_os.h"
-
-#include "lv_indev_port.h"
-#include "lv_port_disp.h"
-#include "fdcdp_reg.h"
-#include "fdcdp_crtc.h"
-
-typedef struct
-{
- u32 bit_depth;
- u32 bpc;
- u32 color_depth;
- u32 clock_mode;
- u32 color_rep;
- u32 width;
- u32 height;
- u32 multi_mode;
-} FuserCfg;
-
-static const FuserCfg user_cfg = {
- .bit_depth = 8,
- .bpc = 8,
- .color_depth = 32,
- .clock_mode = 1,
- .color_rep = 0,
- .width = 800,
- .height = 600,
- .multi_mode = 0/*0:clone, 1 :horz, 2:vert*/
-};
-/************************** Variable Definitions *****************************/
-#define FMEDIA_EVT_INTR(index) BIT(index)
-#define FMEDIA_CHANNEL_0 0
-#define FMEDIA_CHANNEL_1 1
-
-static FFreeRTOSMedia os_media;
-
-static EventGroupHandle_t media_event = NULL;
-static u8 static_frame_buffer_address[1920 * 1080 * 4] __attribute__((aligned(128))) = {0};/*Framebuffer 大小 (字节) = 屏幕宽度 (像素) × 屏幕高度 (像素) × 每像素位数 (bpp) / 8*/
-/************************** functions Definitions *****************************/
-static void FFreeRTOSMediaSendEvent(u32 evt_bits)
-{
- FASSERT(media_event);
-
- BaseType_t x_result = pdFALSE;
- BaseType_t xhigher_priority_task_woken = pdFALSE;
- /*set the irq event for the task*/
- x_result = xEventGroupSetBitsFromISR(media_event, evt_bits, &xhigher_priority_task_woken);
-
-}
-
-static boolean FFreeRTOSMediaWaitEvent(u32 evt_bits, TickType_t wait_delay)
-{
- FASSERT(media_event);
-
- EventBits_t event;
- event = xEventGroupWaitBits(media_event, evt_bits,
- pdTRUE, pdFALSE, wait_delay);/*wait the irq event for the task*/
- if (event & evt_bits)
- {
- return TRUE;
- }
- return FALSE;
-}
-
-static boolean FFreeRTOSMediaClearEvent(EventGroupHandle_t pvEventGroup, const uint32_t ulBitsToClear)
-{
- FASSERT(media_event);
-
- EventBits_t event;
- event = xEventGroupClearBits(pvEventGroup, ulBitsToClear);/*clear the intr bits*/
- return TRUE;
-}
-
-/**
- * @name: FFreeRTOSMediaHpdConnectCallback
- * @msg: the hpd connect event
- * @param {void} *args is the instance of dcdp
- * @param {u32} index is the channel
- * @return Null
- */
-static void FFreeRTOSMediaHpdConnectCallback(void *args, u32 index)
-{
- FASSERT(args != NULL);
- FDcDp *instance_p = (FDcDp *)args;
- FDpChannelRegRead(instance_p->dp_instance_p[index].config.dp_channe_base_addr, PHYTIUM_DP_INTERRUPT_STATUS); /*clear interrupt*/
- FFreeRTOSMediaSendEvent(FMEDIA_EVT_INTR(index));
- instance_p->is_initialized[index] = FDCDP_IS_INITIALIZED;
- printf("Dp:%d connect\r\n", index);
-
-}
-
-/**
- * @name: FFreeRTOSMediaHpdBreakCallback
- * @msg: the hpd disconnect event
- * @param {void} *args is the instance of dcdp
- * @param {u32} index is the channel
- * @return Null
- */
-static void FFreeRTOSMediaHpdBreakCallback(void *args, u32 index)
-{
- FASSERT(args != NULL);
- FDcDp *instance_p = (FDcDp *)args;
- FDpChannelRegRead(instance_p->dp_instance_p[index].config.dp_channe_base_addr, PHYTIUM_DP_INTERRUPT_STATUS); /*clear interrupt*/
- instance_p->is_initialized[index] = FDCDP_NOT_INITIALIZED;
- FFreeRTOSMediaSendEvent(FMEDIA_EVT_INTR(index));
- printf("Dp:%d disconnect\r\n", index);
-}
-
-/**
- * @name: FFreeRTOSMediaAuxTimeoutCallback
- * @msg: the aux timeout event
- * @param {void} *args is the instance of dcdp
- * @param {u32} index is the channel
- * @return Null
- */
-static void FFreeRTOSMediaAuxTimeoutCallback(void *args, u32 index)
-{
- FASSERT(args != NULL);
- FDcDp *instance_p = (FDcDp *)args;
- FDpChannelRegRead(instance_p->dp_instance_p[index].config.dp_channe_base_addr, PHYTIUM_DP_INTERRUPT_STATUS); /*clear interrupt*/
- printf("Dp:%d aux connect timeout\r\n", index);
-}
-
-/**
- * @name: FFreeRTOSMediaAuxErrorCallback
- * @msg: the aux error event
- * @param {void} *args is the instance of dcdp
- * @param {u32} index is the channel
- * @return Null
- */
-static void FFreeRTOSMediaAuxErrorCallback(void *args, u32 index)
-{
- FASSERT(args != NULL);
- FDcDp *instance_p = (FDcDp *)args;
- FDpChannelRegRead(instance_p->dp_instance_p[index].config.dp_channe_base_addr, PHYTIUM_DP_INTERRUPT_STATUS); /*clear interrupt*/
- printf("Dp:%d aux connect error\r\n", index);
-}
-
-/**
- * @name: FFreeRTOSMediaIrqSet
- * @msg: set the irq event and instance
- * @param {FDcDp} *instance_p is the instance of dcdp
- * @return Null
- */
-static void FFreeRTOSMediaIrqSet(FDcDp *instance_p)
-{
- FASSERT(instance_p != NULL);
- u32 cpu_id;
- u32 index;
-
- GetCpuId(&cpu_id);
- InterruptSetTargetCpus(instance_p->dp_instance_p[0].config.irq_num, cpu_id);/*the dc0 and dc1 have the same num of irq_num*/
-
- FDcDpRegisterHandler(instance_p, FDCDP_HPD_IRQ_CONNECTED, FFreeRTOSMediaHpdConnectCallback, (void *)instance_p);
- FDcDpRegisterHandler(instance_p, FDCDP_HPD_IRQ_DISCONNECTED, FFreeRTOSMediaHpdBreakCallback, (void *)instance_p);
- FDcDpRegisterHandler(instance_p, FDCDP_AUX_REPLY_TIMEOUT, FFreeRTOSMediaAuxTimeoutCallback, (void *)instance_p);
- FDcDpRegisterHandler(instance_p, FDCDP_AUX_REPLY_ERROR, FFreeRTOSMediaAuxErrorCallback, (void *)instance_p);
-
- InterruptSetPriority(instance_p->dp_instance_p[0].config.irq_num, FREERTOS_MEDIA_IRQ_PRIORITY);/*dp0 and dp1 have the same irq_num*/
- InterruptInstall(instance_p->dp_instance_p[0].config.irq_num, FDcDpInterruptHandler, instance_p, "media");
- InterruptUmask(instance_p->dp_instance_p[0].config.irq_num);
-}
-
-/**
- * @name: FFreeRTOSMediaIrqAllEnable
- * @msg: enable the irq
- * @param {FDcDp} *instance_p is the instance of dcdp
- * @return Null
- */
-static void FFreeRTOSMediaIrqAllEnable(FDcDp *instance_p)
-{
- int index = 0;
- FDcDpIntrEventType event_type = FDCDP_HPD_IRQ_CONNECTED;
- for (index = 0; index < FDCDP_INSTANCE_NUM; index++)
- {
- for (event_type = 0; event_type < FDCDP_INSTANCE_NUM; event_type++)
- {
- FDcDpIrqEnable(instance_p, index, event_type);
- }
- }
-}
-
-/**
- * @name: FFreeRTOSMediaDeviceInit
- * @msg: enable the Dc and Dp
- * @return Null
- */
-void FFreeRTOSMediaDeviceInit(void)
-{
- u32 index, start_index, end_index;
-
- /*设置用户参数*/
- u32 channel = 2;/* 0 or 1 or 2*/
- if (channel == FDCDP_INSTANCE_NUM)
- {
- start_index = 0;
- end_index = FDCDP_INSTANCE_NUM;
- }
- else
- {
- start_index = channel;
- end_index = channel + 1;
- }
- os_media.dcdp_ctrl.multi_mode = user_cfg.multi_mode;
- for (index = start_index; index < end_index; index ++)
- {
- FDcDpCfgInitialize(&os_media.dcdp_ctrl,index);
-
- os_media.dcdp_ctrl.dc_instance_p[index].config = *FDcLookupConfig(index);
-
- os_media.dcdp_ctrl.dp_instance_p[index].config = *FDpLookupConfig(index);
-
- os_media.dcdp_ctrl.dp_instance_p[index].trans_config.bit_depth = user_cfg.bit_depth;
-
- os_media.dcdp_ctrl.dc_instance_p[index].crtc.bpc = user_cfg.bpc;
-
- os_media.dcdp_ctrl.dc_instance_p[index].color_depth = user_cfg.color_depth;
-
- os_media.dcdp_ctrl.dp_instance_p[index].trans_config.clock_mode = user_cfg.clock_mode;
-
- os_media.dcdp_ctrl.dp_instance_p[index].trans_config.color_rep_format = user_cfg.color_rep;
-
- os_media.dcdp_ctrl.dc_instance_p[index].channel = index;
-
- os_media.dcdp_ctrl.dc_instance_p[index].fb_addr = (uintptr)static_frame_buffer_address ;/*当前例程虚拟地址和物理地址一致,实际需要根据需要进行映射*/
-
- os_media.dcdp_ctrl.dc_instance_p[index].fb_virtual = (uintptr)static_frame_buffer_address ;/*当前例程虚拟地址和物理地址一致,实际需要根据需要进行映射*/
-
- FDcDpGeneralCfgInitial(&os_media.dcdp_ctrl, index);
- }
- FFreeRTOSMedia *os_config = FFreeRTOSMediaHwInit(&os_media,user_cfg.width, user_cfg.height);
- FASSERT_MSG(NULL == media_event, "Event group exists.");
- FASSERT_MSG((media_event = xEventGroupCreate()) != NULL, "Create event group failed.");
- FFreeRTOSMediaIrqSet(&os_config->dcdp_ctrl);
- FFreeRTOSMediaIrqAllEnable(&os_config->dcdp_ctrl);
- vTaskDelete(NULL);
-}
-
-/**
- * @name: FFreeRTOSMediaChannelDeinit
- * @msg: deinit the media
- * @param {u32} id is the channel of dcdp
- * @return Null
- */
-void FFreeRTOSMediaChannelDeinit(u32 id)
-{
- taskENTER_CRITICAL();
- vEventGroupDelete(media_event);
- media_event = NULL;
- FDcDpDeInitialize(&os_media.dcdp_ctrl, id);
- taskEXIT_CRITICAL(); /* allow schedule after deinit */
- return ;
-}
-
-/**
- * @name: FFreeRTOSMediaHpdHandle
- * @msg: handle the hpd event
- * @return Null
- */
-void FFreeRTOSMediaHpdHandle(void)
-{
- u32 index;
- u32 ret = FDP_SUCCESS;
-
- FFreeRTOSMediaWaitEvent(FMEDIA_EVT_INTR(FMEDIA_CHANNEL_0) | FMEDIA_EVT_INTR(FMEDIA_CHANNEL_1), portMAX_DELAY);
- os_media.dcdp_ctrl.multi_mode = user_cfg.multi_mode;
- for (;;)
- {
- for (index = 0; index < FDCDP_INSTANCE_NUM; index++)
- {
- if (os_media.dcdp_ctrl.is_initialized[index] == FDCDP_NOT_INITIALIZED)
- {
- FDcDpCfgInitialize(&os_media.dcdp_ctrl, index);
- ret = FDcDpInitial(&os_media.dcdp_ctrl, index, user_cfg.width, user_cfg.height);
- FFreeRTOSMediaClearEvent(media_event, FMEDIA_EVT_INTR(index));
- if (ret == FDP_SUCCESS)
- {
- printf("Hpd task finish , reinit the dp success.\r\n");
- }
- os_media.dcdp_ctrl.is_initialized[index] = FDCDP_IS_INITIALIZED;
- }
- }
- vTaskDelay(200);
- }
-}
-
-
-/**
- * @name: FFreeRTOSLVGLConfigTask
- * @msg: config the lvgl
- * @param {void *} pvParameters is the parameters of demo
- * @return Null
- */
-void FFreeRTOSLVGLConfigTask(void)
-{
- u32 index;
- lv_init();
- FFreeRTOSPortInit();
- for (index = 0; index < FDCDP_INSTANCE_NUM; index ++)
- {
- FMediaDispFramebuffer(&os_media.dcdp_ctrl);
- }
- vTaskDelete(NULL);
-}
diff --git a/example/peripheral/media/lvgl_demo/src/lv_demo_test.c b/example/peripheral/media/media_common/media_common.c
similarity index 55%
rename from example/peripheral/media/lvgl_demo/src/lv_demo_test.c
rename to example/peripheral/media/media_common/media_common.c
index 4204208df7935b8f99039d5eefb03840cdb41bdc..50d5fdfb75dd41d88b05d6ceabc5b5d7a7936b07 100644
--- a/example/peripheral/media/lvgl_demo/src/lv_demo_test.c
+++ b/example/peripheral/media/media_common/media_common.c
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2023, Phytium Technology Co., Ltd. All Rights Reserved.
+ * Copyright (C) 2025, Phytium Technology Co., Ltd. All Rights Reserved.
*
* Licensed under the BSD 3-Clause License (the "License"); you may not use
* this file except in compliance with the License. You may obtain a copy of
@@ -13,41 +13,38 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*
- * FilePath: lv_demo_test.c
- * Date: 2023-02-05 18:27:47
- * LastEditTime: 2023-07-06 11:02:47
- * Description: This file is for providing the port of test lvgl demo
*
- * Modify History:
+ * FilePath: media_common.c
+ * Date: 2025-07-11 11:32:48
+ * LastEditTime: 2025-07-11 13:25:48
+ * Description: This file is for testing light the screen
+ *
+ * Modify History:
* Ver Who Date Changes
- * ----- ------ -------- --------------------------------------
- * 1.0 Wangzq 2023/03/20 Modify the format and establish the version
- * 1.1 Wangzq 2023/07/06 adapt the sdk and change the lvgl config
+ * ----- ------ -------- --------------------------------------
+ * 1.0 Wangzq 2025/07/11 change the third-party and driver relation
*/
-
-#include
#include
-#include
-#include "FreeRTOS.h"
+#include
+#include
+#include
+#include "task.h"
+#include "ftypes.h"
#include "fassert.h"
-#include "finterrupt.h"
+#include "fdebug.h"
#include "fparameters_comm.h"
-#include "timers.h"
-#include "task.h"
-#include "fcpu_info.h"
+#include "finterrupt.h"
+#include "fkernel.h"
#include "event_groups.h"
+#include "fcpu_info.h"
#include "fmedia_os.h"
#include "fdcdp.h"
-#include "fdc.h"
-#include "fdp.h"
#include "fdp_hw.h"
-#include "fdc_hw.h"
+#include "fdp.h"
#include "fdcdp_reg.h"
#include "fdcdp_crtc.h"
-#include "lv_conf.h"
-#include "lv_port_disp.h"
-
+#include "media_common.h"
typedef struct
{
u32 bit_depth;
@@ -70,14 +67,49 @@ static const FuserCfg user_cfg = {
.height = 600,
.multi_mode = 0/*0:clone, 1 :horz, 2:vert*/
};
+/*通道组合*/
+#define CHANNEL_NONE 0x0 /*不选择*/
+#define CHANNEL_DP_0 0x1 /*通道0*/
+#define CHANNEL_DP_1 0x2 /*通道1*/
+#define CHANNEL_DP_2 0x4 /*通道2*/
+#define CHANNEL_DP_0_1 (CHANNEL_DP_0 | CHANNEL_DP_1) /*通道0 1*/
+#define CHANNEL_DP_0_2 (CHANNEL_DP_0 | CHANNEL_DP_2) /*通道0 2*/
+#define CHANNEL_DP_1_2 (CHANNEL_DP_1 | CHANNEL_DP_2) /*通道1 2*/
+#define CHANNEL_DP_ALL (CHANNEL_DP_0 | CHANNEL_DP_1 | CHANNEL_DP_2) /*通道0 1 2*/
+
+static u32 channel_mask = CHANNEL_DP_0_1; /* 默认选择双通道*/
/************************** Variable Definitions *****************************/
#define FMEDIA_EVT_INTR(index) BIT(index)
#define FMEDIA_CHANNEL_0 0
#define FMEDIA_CHANNEL_1 1
+static EventGroupHandle_t media_event = NULL;
static u8 static_frame_buffer_address[1920 * 1080 * 4] __attribute__((aligned(128))) = {0};/*Framebuffer 大小 (字节) = 屏幕宽度 (像素) × 屏幕高度 (像素) × 每像素位数 (bpp) / 8*/
-static EventGroupHandle_t media_event = NULL;
-static FFreeRTOSMedia os_media;
-/**********************Macros (Inline Functions) Definitions *********************/
+/***************** Macros (Inline Functions) Definitions *********************/
+/**
+ * @name: FMediaCtrlProbe
+ * @msg: set the media control
+ * @return
+ */
+static void FMediaCtrlProbe(FFreeRTOSMedia *os_media)
+{
+ u32 index;
+ for (index = 0; index < FDC_INSTANCE_NUM; index ++)
+ { if (channel_mask & BIT(index))
+ {
+ FDcDpCfgInitialize(&os_media->dcdp_ctrl, index);
+ os_media->dcdp_ctrl.dc_instance_p[index].config = *FDcLookupConfig(index);
+ }
+ }
+ for (index = 0; index < FDP_INSTANCE_NUM; index ++)
+ {
+ if (channel_mask & BIT(index))
+ {
+ os_media->dcdp_ctrl.dp_instance_p[index].config = *FDpLookupConfig(index);
+ }
+ }
+ return ;
+}
+
static void FFreeRTOSMediaSendEvent(u32 evt_bits)
{
FASSERT(media_event);
@@ -86,13 +118,20 @@ static void FFreeRTOSMediaSendEvent(u32 evt_bits)
BaseType_t xhigher_priority_task_woken = pdFALSE;
/*set the irq event for the task*/
x_result = xEventGroupSetBitsFromISR(media_event, evt_bits, &xhigher_priority_task_woken);
+}
+
+static boolean FFreeRTOSMediaClearEvent(EventGroupHandle_t pvEventGroup, const uint32_t ulBitsToClear)
+{
+ FASSERT(media_event);
+ EventBits_t event;
+ event = xEventGroupClearBits(pvEventGroup, ulBitsToClear);/*clear the intr bits*/
+ return TRUE;
}
static boolean FFreeRTOSMediaWaitEvent(u32 evt_bits, TickType_t wait_delay)
{
FASSERT(media_event);
-
EventBits_t event;
event = xEventGroupWaitBits(media_event, evt_bits,
pdTRUE, pdFALSE, wait_delay);/*wait the irq event for the task*/
@@ -103,13 +142,54 @@ static boolean FFreeRTOSMediaWaitEvent(u32 evt_bits, TickType_t wait_delay)
return FALSE;
}
-static boolean FFreeRTOSMediaClearEvent(EventGroupHandle_t pvEventGroup, const uint32_t ulBitsToClear)
+/* create the hpd task */
+void FFreeRTOSMediaHpdTask(FFreeRTOSMedia *os_media)
{
- FASSERT(media_event);
+ u32 index;
+ u32 ret = 0 ;
+ FFreeRTOSMediaWaitEvent(FMEDIA_EVT_INTR(FMEDIA_CHANNEL_0) | FMEDIA_EVT_INTR(FMEDIA_CHANNEL_1), portMAX_DELAY);
+ os_media->dcdp_ctrl.multi_mode = user_cfg.multi_mode;
+ for (;;)
+ {
+ for (index = 0; index < FDP_INSTANCE_NUM; index++)
+ {
+ if (channel_mask & BIT(index))
+ {
+ if (os_media->dcdp_ctrl.connect_flg[index] == FDCDP_DISCONNCET_TO_CONNECT)
+ {
+ FDcDpCfgInitialize(&os_media->dcdp_ctrl, index);
+ ret = FDcDpInitial(&os_media->dcdp_ctrl, index, user_cfg.width, user_cfg.height);
+ FFreeRTOSMediaClearEvent(media_event, FMEDIA_EVT_INTR(index));
+ if (ret == FDP_SUCCESS)
+ {
+ printf("Hpd task finish , reinit the dp success.\r\n");
+ }
+ os_media->dcdp_ctrl.connect_flg[index] = FDCDP_IS_INITIALIZED;
+ }
+ }
+ vTaskDelay(200);
+ }
+ vTaskDelete(NULL);
+}
+}
- EventBits_t event;
- event = xEventGroupClearBits(pvEventGroup, ulBitsToClear);/*clear the intr bits*/
- return TRUE;
+/**
+ * @name: FDcDpIrqAllEnable
+ * @msg: enable the irq
+ * @param {FDcDp} *instance_p is the instance of dcdp
+ * @return Null
+ */
+static void FDcDpIrqAllEnable(FDcDp *instance_p)
+{
+ int index = 0;
+ FDcDpIntrEventType event_type = FDCDP_HPD_IRQ_CONNECTED;
+ for (index = 0; index < FDP_INSTANCE_NUM; index++)
+ {
+ for (event_type = 0; event_type < FDCDP_INTR_MAX_NUM; event_type++)
+ {
+ FDcDpIrqEnable(instance_p, index, event_type);
+ }
+ }
}
/**
@@ -125,9 +205,8 @@ static void FFreeRTOSMediaHpdConnectCallback(void *args, u32 index)
FDcDp *instance_p = (FDcDp *)args;
FDpChannelRegRead(instance_p->dp_instance_p[index].config.dp_channe_base_addr, PHYTIUM_DP_INTERRUPT_STATUS); /*clear interrupt*/
FFreeRTOSMediaSendEvent(FMEDIA_EVT_INTR(index));
- instance_p->is_initialized[index] = FDCDP_IS_INITIALIZED;
+ instance_p->connect_flg[index] = FDCDP_DISCONNCET_TO_CONNECT;
printf("Dp:%d connect\r\n", index);
-
}
/**
@@ -142,7 +221,7 @@ static void FFreeRTOSMediaHpdBreakCallback(void *args, u32 index)
FASSERT(args != NULL);
FDcDp *instance_p = (FDcDp *)args;
FDpChannelRegRead(instance_p->dp_instance_p[index].config.dp_channe_base_addr, PHYTIUM_DP_INTERRUPT_STATUS); /*clear interrupt*/
- instance_p->is_initialized[index] = FDCDP_NOT_INITIALIZED;
+ instance_p->connect_flg[index] = FDCDP_CONNECT_TO_DISCONNCET;
FFreeRTOSMediaSendEvent(FMEDIA_EVT_INTR(index));
printf("Dp:%d disconnect\r\n", index);
}
@@ -190,160 +269,87 @@ static void FFreeRTOSMediaIrqSet(FDcDp *instance_p)
u32 index;
GetCpuId(&cpu_id);
- InterruptSetTargetCpus(instance_p->dp_instance_p[0].config.irq_num, cpu_id);/*the dc0 and dc1 have the same num of irq_num*/
+ for (index = 0; index < FDC_INSTANCE_NUM; index ++)
+ {
+ if (channel_mask & BIT(index))
+ {
+ InterruptSetTargetCpus(instance_p->dp_instance_p[index].config.irq_num, cpu_id);/*the dc0 and dc1 have the same num of irq_num*/
+ InterruptSetPriority(instance_p->dp_instance_p[index].config.irq_num, FREERTOS_MEDIA_IRQ_PRIORITY);/*dp0 and dp1 have the same irq_num*/
+ InterruptInstall(instance_p->dp_instance_p[index].config.irq_num, FDcDpInterruptHandler, instance_p, "");
+ InterruptUmask(instance_p->dp_instance_p[index].config.irq_num);
+ }
+ }
FDcDpRegisterHandler(instance_p, FDCDP_HPD_IRQ_CONNECTED, FFreeRTOSMediaHpdConnectCallback, (void *)instance_p);
FDcDpRegisterHandler(instance_p, FDCDP_HPD_IRQ_DISCONNECTED, FFreeRTOSMediaHpdBreakCallback, (void *)instance_p);
FDcDpRegisterHandler(instance_p, FDCDP_AUX_REPLY_TIMEOUT, FFreeRTOSMediaAuxTimeoutCallback, (void *)instance_p);
FDcDpRegisterHandler(instance_p, FDCDP_AUX_REPLY_ERROR, FFreeRTOSMediaAuxErrorCallback, (void *)instance_p);
-
- InterruptSetPriority(instance_p->dp_instance_p[0].config.irq_num, FREERTOS_MEDIA_IRQ_PRIORITY);/*dp0 and dp1 have the same irq_num*/
- InterruptInstall(instance_p->dp_instance_p[0].config.irq_num, FDcDpInterruptHandler, instance_p, "media");
- InterruptUmask(instance_p->dp_instance_p[0].config.irq_num);
}
/**
- * @name: FFreeRTOSMediaIrqAllEnable
- * @msg: enable the irq
- * @param {FDcDp} *instance_p is the instance of dcdp
- * @return Null
+ * @name: FMediaInitTask
+ * @msg: init the media control
+ * @return ret,FMEDIA_DP_SUCCESS means success
*/
-static void FFreeRTOSMediaIrqAllEnable(FDcDp *instance_p)
+FError FMediaInitTask(FFreeRTOSMedia *os_media)
{
- int index = 0;
- FDcDpIntrEventType event_type = FDCDP_HPD_IRQ_CONNECTED;
- for (index = 0; index < FDCDP_INSTANCE_NUM; index++)
- {
- for (event_type = 0; event_type < FDCDP_INSTANCE_NUM; event_type++)
- {
- FDcDpIrqEnable(instance_p, index, event_type);
- }
- }
-}
-
-/**
- * @name: FFreeRTOSMediaDeviceInit
- * @msg: enable the Dc and Dp
- * @return Null
- */
-void FFreeRTOSMediaDeviceInit(void)
-{
- u32 index, start_index, end_index;
-
+ FASSERT_MSG(NULL == media_event, "Event group exists.");
+ FASSERT_MSG((media_event = xEventGroupCreate()) != NULL, "Create event group failed.");
+ u32 index;
+ FError ret = FT_SUCCESS;
/*设置用户参数*/
- u32 channel = 2;/* 0 or 1 or 2*/
- if (channel == FDCDP_INSTANCE_NUM)
+ FMediaCtrlProbe(os_media);
+ for (index = 0; index < FDP_INSTANCE_NUM; index ++)
{
- start_index = 0;
- end_index = FDCDP_INSTANCE_NUM;
- }
- else
- {
- start_index = channel;
- end_index = channel + 1;
- }
- os_media.dcdp_ctrl.multi_mode = user_cfg.multi_mode;
- for (index = start_index; index < end_index; index ++)
- {
- FDcDpCfgInitialize(&os_media.dcdp_ctrl,index);
-
- os_media.dcdp_ctrl.dc_instance_p[index].config = *FDcLookupConfig(index);
-
- os_media.dcdp_ctrl.dp_instance_p[index].config = *FDpLookupConfig(index);
+ if (channel_mask & BIT(index))
+ {
+ os_media->dcdp_ctrl.dp_instance_p[index].trans_config.bit_depth = user_cfg.bit_depth;
- os_media.dcdp_ctrl.dp_instance_p[index].trans_config.bit_depth = user_cfg.bit_depth;
+ os_media->dcdp_ctrl.dc_instance_p[index].crtc.bpc = user_cfg.bpc;
- os_media.dcdp_ctrl.dc_instance_p[index].crtc.bpc = user_cfg.bpc;
+ os_media->dcdp_ctrl.dc_instance_p[index].color_depth = user_cfg.color_depth;
- os_media.dcdp_ctrl.dc_instance_p[index].color_depth = user_cfg.color_depth;
+ os_media->dcdp_ctrl.dp_instance_p[index].trans_config.clock_mode = user_cfg.clock_mode;
- os_media.dcdp_ctrl.dp_instance_p[index].trans_config.clock_mode = user_cfg.clock_mode;
+ os_media->dcdp_ctrl.dp_instance_p[index].trans_config.color_rep_format = user_cfg.color_rep;
- os_media.dcdp_ctrl.dp_instance_p[index].trans_config.color_rep_format = user_cfg.color_rep;
+ os_media->dcdp_ctrl.dc_instance_p[index].channel = index;
- os_media.dcdp_ctrl.dc_instance_p[index].channel = index;
+ os_media->dcdp_ctrl.dc_instance_p[index].fb_addr = (uintptr)static_frame_buffer_address ;/*当前例程虚拟地址和物理地址一致,实际需要根据需要进行映射*/
- os_media.dcdp_ctrl.dc_instance_p[index].fb_addr = (uintptr)static_frame_buffer_address ;/*当前例程虚拟地址和物理地址一致,实际需要根据需要进行映射*/
+ os_media->dcdp_ctrl.dc_instance_p[index].fb_virtual = (uintptr)static_frame_buffer_address ;/*当前例程虚拟地址和物理地址一致,实际需要根据需要进行映射*/
- os_media.dcdp_ctrl.dc_instance_p[index].fb_virtual = (uintptr)static_frame_buffer_address ;/*当前例程虚拟地址和物理地址一致,实际需要根据需要进行映射*/
+ os_media->dcdp_ctrl.dp_instance_p[index].port = index;
+
+ FDcDpGeneralCfgInitial(&os_media->dcdp_ctrl, index);
- FDcDpGeneralCfgInitial(&os_media.dcdp_ctrl, index);
+ FFreeRTOSMediaHwInit(os_media, index,user_cfg.width, user_cfg.height);
+ }
}
-
- FFreeRTOSMedia *os_config = FFreeRTOSMediaHwInit(&os_media,user_cfg.width, user_cfg.height);
- FASSERT_MSG(NULL == media_event, "Event group exists.");
- FASSERT_MSG((media_event = xEventGroupCreate()) != NULL, "Create event group failed.");
- FFreeRTOSMediaIrqSet(&os_config->dcdp_ctrl);
- FFreeRTOSMediaIrqAllEnable(&os_config->dcdp_ctrl);
+ FFreeRTOSMediaIrqSet(&os_media->dcdp_ctrl);
+ FDcDpIrqAllEnable(&os_media->dcdp_ctrl);
vTaskDelete(NULL);
+ return ret;
}
-
/**
* @name: FFreeRTOSMediaChannelDeinit
- * @msg:: deinit the media
- * @param {u32} id is the num of dcdp
+ * @msg: deinit the media
+ * @param {u32} id is the number of dcdp
* @return Null
*/
-void FFreeRTOSMediaChannelDeinit(u32 id)
+void FFreeRTOSMediaChannelDeinit(FFreeRTOSMedia *os_media)
{
taskENTER_CRITICAL();
vEventGroupDelete(media_event);
media_event = NULL;
- FDcDpDeInitialize(&os_media.dcdp_ctrl, id);
- taskEXIT_CRITICAL(); /* allow schedule after deinit */
- return ;
-}
-
-/**
- * @name: FFreeRTOSMediaHpdHandle
- * @msg: handle the hpd event
- * @return Null
- */
-void FFreeRTOSMediaHpdHandle(void)
-{
u32 index;
- u32 ret = FDP_SUCCESS;
-
- FFreeRTOSMediaWaitEvent(FMEDIA_EVT_INTR(FMEDIA_CHANNEL_0) | FMEDIA_EVT_INTR(FMEDIA_CHANNEL_1), portMAX_DELAY);
- os_media.dcdp_ctrl.multi_mode = user_cfg.multi_mode;
- for (;;)
+ for (index = 0; index < FDP_INSTANCE_NUM; index ++)
{
- for (index = 0; index < FDCDP_INSTANCE_NUM; index++)
+ if (channel_mask & BIT(index))
{
- if (os_media.dcdp_ctrl.is_initialized[index] == FDCDP_NOT_INITIALIZED)
- {
- FDcDpCfgInitialize(&os_media.dcdp_ctrl, index);
- ret = FDcDpInitial(&os_media.dcdp_ctrl, index, user_cfg.width, user_cfg.height);
- FFreeRTOSMediaClearEvent(media_event, FMEDIA_EVT_INTR(index));
- if (ret == FDP_SUCCESS)
- {
- printf("Hpd task finish , reinit the dp success.\r\n");
- }
- os_media.dcdp_ctrl.is_initialized[index] = FDCDP_IS_INITIALIZED;
- }
-
+ FDcDpDeInitialize(&os_media->dcdp_ctrl, index);/*deinit the id channel*/
}
- vTaskDelay(200);
}
+ taskEXIT_CRITICAL();
+ return;
}
-
-/**
- * @name: FFreeRTOSLVGLConfigTask
- * @msg: config the lvgl
- * @return Null
- */
-void FFreeRTOSLVGLConfigTask(void)
-{
- u32 index;
- lv_init();
- FFreeRTOSPortInit();
- for (index = 0; index < FDCDP_INSTANCE_NUM; index ++)
- {
- FMediaDispFramebuffer(&os_media.dcdp_ctrl);
- }
- vTaskDelete(NULL);
-}
-
-
-
-
diff --git a/example/peripheral/media/lvgl_demo/inc/lv_demo_test.h b/example/peripheral/media/media_common/media_common.h
similarity index 52%
rename from example/peripheral/media/lvgl_demo/inc/lv_demo_test.h
rename to example/peripheral/media/media_common/media_common.h
index fa3537f56934d456c2412ef974c6877fb1341b21..a33f0f7b91a69b87bc63ae32c73a4fcad3a3c1b2 100644
--- a/example/peripheral/media/lvgl_demo/inc/lv_demo_test.h
+++ b/example/peripheral/media/media_common/media_common.h
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2023, Phytium Technology Co., Ltd. All Rights Reserved.
+ * Copyright (C) 2025, Phytium Technology Co., Ltd. All Rights Reserved.
*
* Licensed under the BSD 3-Clause License (the "License"); you may not use
* this file except in compliance with the License. You may obtain a copy of
@@ -13,40 +13,39 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*
- * FilePath: lv_demo_test.h
- * Date: 2023-02-05 18:27:47
- * LastEditTime: 2023-07-07 11:02:47
- * Description: This file is for providing the lvgl demo config
*
- * Modify History:
+ * FilePath: media_common.h
+ * Date: 2022-08-25 16:22:40
+ * LastEditTime: 2022-07-07 15:40:40
+ * Description: This file is for defining the config and functions
+ *
+ * Modify History:
* Ver Who Date Changes
* ----- ------ -------- --------------------------------------
- * 1.0 Wangzq 2023/03/20 Modify the format and establish the version
- * 1.1 Wangzq 2023/07/07 change the third-party and driver relation
+ * 1.0 Wangzq 2022/12/20 Modify the format and establish the version
*/
-#ifndef LV_DEMO_TEST_H
-#define LV_DEMO_TEST_H
-
-#ifdef __cplusplus
-extern "C" {
-#endif
+#ifndef MEDIA_COMMON_H
+#define MEDIA_COMMON_H
#include "ftypes.h"
-#include "fparameters.h"
+#include "fdcdp.h"
#include "ferror_code.h"
+#include "fmedia_os.h"
-
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/*hpd task*/
+void FFreeRTOSMediaHpdTask(FFreeRTOSMedia *os_media);
+/*init the media*/
+FError FMediaInitTask(FFreeRTOSMedia *os_media);
/*deinit the media*/
-void FFreeRTOSMediaChannelDeinit(u32 id);
-/*lvgl config task*/
-void FFreeRTOSLVGLConfigTask(void );
-/*handle the hpd event*/
-void FFreeRTOSMediaHpdHandle(void);
-/*enable the Dc and Dp*/
-void FFreeRTOSMediaDeviceInit(void);
+void FFreeRTOSMediaChannelDeinit(FFreeRTOSMedia *os_media);
+
#ifdef __cplusplus
-} /*extern "C"*/
+}
#endif
-#endif /*LV_PORT_DISP_TEMPL_H*/
\ No newline at end of file
+#endif // !
\ No newline at end of file
diff --git a/example/peripheral/media/media_test/README.md b/example/peripheral/media/media_test/README.md
index 4554d4a34fe5a6cf2e1aaea4d264735638c0696a..372af8ad648251206561b0e7af9f8f73d73c60a1 100644
--- a/example/peripheral/media/media_test/README.md
+++ b/example/peripheral/media/media_test/README.md
@@ -6,8 +6,8 @@
DC 是一个显示控制器,主要完成将 CPU/GPU/VPU 处理后的图像数据,按照 Display 协议处理后送给 DP PHY 接入显示器。
-本司E2000系列型号芯片采用DisplayPort1.4协议,兼容 DisplayPort1.4/Embedded DisplayPort1.3 协议。
-本例程主要展示本司E2000系列以及phytiumpi芯片DC显示驱动功能。
+本司PE220X系列型号芯片采用DisplayPort1.4协议,兼容 DisplayPort1.4/Embedded DisplayPort1.3 协议。
+本例程主要展示本司PE220X系列以及phytiumpi芯片DC显示驱动功能。
本例程example主要是测试驱动能否正常点亮屏幕。
@@ -40,7 +40,7 @@ DC 是一个显示控制器,主要完成将 CPU/GPU/VPU 处理后的图像数
本例程所需的硬件设备包括
-- 通过DP线将显示器与E2000板卡连接
+- 通过DP线将显示器与E2000D/Q DEMO、PhytiumPi开发板连接
- 利用串口调试线连接板卡和调试电脑,波特率设为 115200-8-1-N
@@ -69,9 +69,9 @@ DC 是一个显示控制器,主要完成将 CPU/GPU/VPU 处理后的图像数
- 在host侧完成配置
->配置成E2000,对于其它平台,使用对应的默认配置
+>配置成E2000Q demo,对于其它平台,使用对应的默认配置
```
-make load_kconfig LOAD_CONFIG_NAME=e2000q_aarch64_demo_media
+make load_kconfig LOAD_CONFIG_NAME=pe2204_aarch64_demo_media
make menuconfig
make image
```
diff --git a/example/peripheral/media/media_test/configs/pe2202_aarch32_demo_media.config b/example/peripheral/media/media_test/configs/pe2202_aarch32_demo_media.config
index 88fa094967007716b6ed18303917ec7141328594..2058a1142fe5fd6ade1b0b7376943c2a64791ad1 100644
--- a/example/peripheral/media/media_test/configs/pe2202_aarch32_demo_media.config
+++ b/example/peripheral/media/media_test/configs/pe2202_aarch32_demo_media.config
@@ -4,7 +4,7 @@ CONFIG_TARGET_NAME="media"
CONFIG_LOG_DEBUG=y
CONFIG_LOG_EXTRA_INFO=y
CONFIG_USE_MEDIA=y
-CONFIG_USE_FMEDIA=y
+CONFIG_USE_FMEDIA_V1=y
CONFIG_DEFAULT_LINKER_SCRIPT=y
CONFIG_IMAGE_MAX_LENGTH=0x20000000
CONFIG_FREERTOS_USE_MEDIA=y
diff --git a/example/peripheral/media/media_test/configs/pe2202_aarch64_demo_media.config b/example/peripheral/media/media_test/configs/pe2202_aarch64_demo_media.config
index 6229f818b5c393d6bccc2531e473b1ae726989ba..f6e1d47d05d48528d37d2f6203b2999166395817 100644
--- a/example/peripheral/media/media_test/configs/pe2202_aarch64_demo_media.config
+++ b/example/peripheral/media/media_test/configs/pe2202_aarch64_demo_media.config
@@ -3,7 +3,7 @@ CONFIG_TARGET_NAME="media"
CONFIG_LOG_DEBUG=y
CONFIG_LOG_EXTRA_INFO=y
CONFIG_USE_MEDIA=y
-CONFIG_USE_FMEDIA=y
+CONFIG_USE_FMEDIA_V1=y
CONFIG_DEFAULT_LINKER_SCRIPT=y
CONFIG_IMAGE_MAX_LENGTH=0x20000000
CONFIG_FREERTOS_USE_MEDIA=y
diff --git a/example/peripheral/media/media_test/configs/pe2204_aarch32_demo_media.config b/example/peripheral/media/media_test/configs/pe2204_aarch32_demo_media.config
index f1148fab54272af3b44be7915a0d1fd7389af1fa..2fec2b0f53bc39b6dba88649d4a8ba69b5c50623 100644
--- a/example/peripheral/media/media_test/configs/pe2204_aarch32_demo_media.config
+++ b/example/peripheral/media/media_test/configs/pe2204_aarch32_demo_media.config
@@ -3,7 +3,7 @@ CONFIG_TARGET_NAME="media"
CONFIG_LOG_DEBUG=y
CONFIG_LOG_EXTRA_INFO=y
CONFIG_USE_MEDIA=y
-CONFIG_USE_FMEDIA=y
+CONFIG_USE_FMEDIA_V1=y
CONFIG_DEFAULT_LINKER_SCRIPT=y
CONFIG_IMAGE_MAX_LENGTH=0x20000000
CONFIG_FREERTOS_USE_MEDIA=y
diff --git a/example/peripheral/media/media_test/configs/pe2204_aarch32_phytiumpi_media.config b/example/peripheral/media/media_test/configs/pe2204_aarch32_phytiumpi_media.config
index 02c963aa09e6c51c8b29416a1edfaee6e7792665..ef268b6c3f88a1e1d1186660630ad6d602c522c8 100644
--- a/example/peripheral/media/media_test/configs/pe2204_aarch32_phytiumpi_media.config
+++ b/example/peripheral/media/media_test/configs/pe2204_aarch32_phytiumpi_media.config
@@ -4,7 +4,7 @@ CONFIG_TARGET_NAME="media"
CONFIG_LOG_DEBUG=y
CONFIG_LOG_EXTRA_INFO=y
CONFIG_USE_MEDIA=y
-CONFIG_USE_FMEDIA=y
+CONFIG_USE_FMEDIA_V1=y
CONFIG_DEFAULT_LINKER_SCRIPT=y
CONFIG_IMAGE_MAX_LENGTH=0x20000000
CONFIG_FREERTOS_USE_MEDIA=y
diff --git a/example/peripheral/media/media_test/configs/pe2204_aarch64_demo_media.config b/example/peripheral/media/media_test/configs/pe2204_aarch64_demo_media.config
index 334028137f8d8987e6efe96422204f7ef0a561e1..20cca72ea01eaa285f8679bd4c298f8cc9251eb9 100644
--- a/example/peripheral/media/media_test/configs/pe2204_aarch64_demo_media.config
+++ b/example/peripheral/media/media_test/configs/pe2204_aarch64_demo_media.config
@@ -2,7 +2,7 @@ CONFIG_TARGET_NAME="media"
CONFIG_LOG_DEBUG=y
CONFIG_LOG_EXTRA_INFO=y
CONFIG_USE_MEDIA=y
-CONFIG_USE_FMEDIA=y
+CONFIG_USE_FMEDIA_V1=y
CONFIG_DEFAULT_LINKER_SCRIPT=y
CONFIG_IMAGE_MAX_LENGTH=0x20000000
CONFIG_FREERTOS_USE_MEDIA=y
diff --git a/example/peripheral/media/media_test/configs/pe2204_aarch64_phytiumpi_media.config b/example/peripheral/media/media_test/configs/pe2204_aarch64_phytiumpi_media.config
index 8ec00082d1b4ff0de9e3c3f12faabe17b3ba4565..fe209825b287d784f42d348b1a083e57883b6e25 100644
--- a/example/peripheral/media/media_test/configs/pe2204_aarch64_phytiumpi_media.config
+++ b/example/peripheral/media/media_test/configs/pe2204_aarch64_phytiumpi_media.config
@@ -4,7 +4,7 @@ CONFIG_TARGET_NAME="media"
CONFIG_LOG_DEBUG=y
CONFIG_LOG_EXTRA_INFO=y
CONFIG_USE_MEDIA=y
-CONFIG_USE_FMEDIA=y
+CONFIG_USE_FMEDIA_V1=y
CONFIG_DEFAULT_LINKER_SCRIPT=y
CONFIG_IMAGE_MAX_LENGTH=0x20000000
CONFIG_FREERTOS_USE_MEDIA=y
diff --git a/example/peripheral/media/media_test/inc/media_example.h b/example/peripheral/media/media_test/inc/media_example.h
index 57af48b0d5dbed333a19f62c45cac3a53ce9035b..251df16c36ca659ac5e20621f220b1e346a1c95d 100644
--- a/example/peripheral/media/media_test/inc/media_example.h
+++ b/example/peripheral/media/media_test/inc/media_example.h
@@ -31,6 +31,8 @@
#include "ftypes.h"
#include "fdcdp.h"
+#include "ferror_code.h"
+
#ifdef __cplusplus
extern "C"
@@ -45,14 +47,15 @@ typedef struct
u8 reserve;
} GraphicsTest;
+/*select the channel*/
+u8 FMediaChannelIsSelected(u32 channel_index);
+
/*create the media demo*/
-FError FMediaDisplayDemo(void);
+FError FMediaDisplayDemo(index);
/*create the media init task*/
BaseType_t FFreeRTOSMediaCreate(void);
-/*deinit the media*/
-void FFreeRTOSMediaChannelDeinit(u32 id);
#ifdef __cplusplus
}
diff --git a/example/peripheral/media/media_test/makefile b/example/peripheral/media/media_test/makefile
index 681587e37cb8a2adc896e36036c56f9a99321b9f..e4628de717ec1778c54c1f814265baaae36ef803 100644
--- a/example/peripheral/media/media_test/makefile
+++ b/example/peripheral/media/media_test/makefile
@@ -8,13 +8,16 @@ BOOT_IMG_NAME ?= freertos
USER_CSRC := main.c
USER_CSRC += $(wildcard src/*.c)
-USER_CSRC += $(wildcard ../common/*.c)
+USER_CSRC += $(wildcard ../media_common/*.c)
USER_ASRC :=
USER_CXXSRC :=
+USER_INCLUDE += $(PROJECT_DIR)
+
USER_INCLUDE := $(PROJECT_DIR) \
$(PROJECT_DIR)/inc \
+ $(PROJECT_DIR)/../media_common
include $(FREERTOS_SDK_DIR)/tools/makeall.mk
diff --git a/example/peripheral/media/media_test/sdkconfig b/example/peripheral/media/media_test/sdkconfig
index 62fdbc5fb83ec684300c666b0c7e6bef2a631865..f9aba351abee00543523487f7feb68ee9ae46dc7 100644
--- a/example/peripheral/media/media_test/sdkconfig
+++ b/example/peripheral/media/media_test/sdkconfig
@@ -70,6 +70,7 @@ CONFIG_TARGET_PE220X=y
CONFIG_DEFAULT_DEBUG_PRINT_UART1=y
# CONFIG_DEFAULT_DEBUG_PRINT_UART0 is not set
# CONFIG_DEFAULT_DEBUG_PRINT_UART2 is not set
+# CONFIG_UART_INIT_NOT_CLR_INTR is not set
# end of Soc configuration
#
@@ -156,7 +157,8 @@ CONFIG_ENABLE_Pl011_UART=y
# CONFIG_USE_PWM is not set
# CONFIG_USE_IPC is not set
CONFIG_USE_MEDIA=y
-CONFIG_USE_FMEDIA=y
+CONFIG_USE_FMEDIA_V1=y
+# CONFIG_USE_FMEDIA_V2 is not set
# CONFIG_USE_SCMI_MHU is not set
# CONFIG_USE_I2S is not set
# CONFIG_USE_I3C is not set
@@ -227,6 +229,7 @@ CONFIG_STACK_SIZE=0x400
# FreeRTOS Uart Drivers
#
CONFIG_FREERTOS_USE_UART=y
+# CONFIG_FREERTOS_USE_SERIAL_V2 is not set
# end of FreeRTOS Uart Drivers
#
@@ -252,12 +255,14 @@ CONFIG_FREERTOS_USE_UART=y
#
# CONFIG_FREERTOS_USE_XMAC is not set
# CONFIG_FREERTOS_USE_GMAC is not set
+# CONFIG_FREERTOS_USE_XMAC_V2 is not set
# end of FreeRTOS Eth Drivers
#
# FreeRTOS Spim Drivers
#
# CONFIG_FREERTOS_USE_FSPIM is not set
+# CONFIG_FREERTOS_USE_FSPIM_V2 is not set
# end of FreeRTOS Spim Drivers
#
@@ -283,6 +288,7 @@ CONFIG_FREERTOS_USE_UART=y
# FreeRTOS I2c Drivers
#
# CONFIG_FREERTOS_USE_I2C is not set
+# CONFIG_FREERTOS_USE_FI2C_V2 is not set
# end of FreeRTOS I2c Drivers
#
diff --git a/example/peripheral/media/media_test/sdkconfig.h b/example/peripheral/media/media_test/sdkconfig.h
index 135f0bb91b5921fff4ca72e13fdeaab54bea45af..0e8dd28dacd5b25129d630042a8ea9ae698fc661 100644
--- a/example/peripheral/media/media_test/sdkconfig.h
+++ b/example/peripheral/media/media_test/sdkconfig.h
@@ -66,6 +66,7 @@
#define CONFIG_DEFAULT_DEBUG_PRINT_UART1
/* CONFIG_DEFAULT_DEBUG_PRINT_UART0 is not set */
/* CONFIG_DEFAULT_DEBUG_PRINT_UART2 is not set */
+/* CONFIG_UART_INIT_NOT_CLR_INTR is not set */
/* end of Soc configuration */
/* Board Configuration */
@@ -144,7 +145,8 @@
/* CONFIG_USE_PWM is not set */
/* CONFIG_USE_IPC is not set */
#define CONFIG_USE_MEDIA
-#define CONFIG_USE_FMEDIA
+#define CONFIG_USE_FMEDIA_V1
+/* CONFIG_USE_FMEDIA_V2 is not set */
/* CONFIG_USE_SCMI_MHU is not set */
/* CONFIG_USE_I2S is not set */
/* CONFIG_USE_I3C is not set */
@@ -206,6 +208,7 @@
/* FreeRTOS Uart Drivers */
#define CONFIG_FREERTOS_USE_UART
+/* CONFIG_FREERTOS_USE_SERIAL_V2 is not set */
/* end of FreeRTOS Uart Drivers */
/* FreeRTOS Pwm Drivers */
@@ -227,11 +230,13 @@
/* CONFIG_FREERTOS_USE_XMAC is not set */
/* CONFIG_FREERTOS_USE_GMAC is not set */
+/* CONFIG_FREERTOS_USE_XMAC_V2 is not set */
/* end of FreeRTOS Eth Drivers */
/* FreeRTOS Spim Drivers */
/* CONFIG_FREERTOS_USE_FSPIM is not set */
+/* CONFIG_FREERTOS_USE_FSPIM_V2 is not set */
/* end of FreeRTOS Spim Drivers */
/* FreeRTOS DMA Drivers */
@@ -253,6 +258,7 @@
/* FreeRTOS I2c Drivers */
/* CONFIG_FREERTOS_USE_I2C is not set */
+/* CONFIG_FREERTOS_USE_FI2C_V2 is not set */
/* end of FreeRTOS I2c Drivers */
/* FreeRTOS Mio Drivers */
diff --git a/example/peripheral/media/media_test/src/cmd_media.c b/example/peripheral/media/media_test/src/cmd_media.c
index 55e26d094be841cd172695cb7b2b373029f08b17..343ba12a8d3a638aa8b7ca9a5f51f2d8bbe6ab47 100644
--- a/example/peripheral/media/media_test/src/cmd_media.c
+++ b/example/peripheral/media/media_test/src/cmd_media.c
@@ -35,6 +35,7 @@
#include "shell_port.h"
#include "media_example.h"
+#include "media_common.h"
static void FFreeRTOSMediaCmdUsage(void)
@@ -59,7 +60,6 @@ static int MediaCmdEntry(int argc, char *argv[])
}
if (!strcmp(argv[1], "init"))
{
-
BaseType_t task_ret = FFreeRTOSMediaCreate();
if (pdPASS != task_ret)
@@ -68,15 +68,6 @@ static int MediaCmdEntry(int argc, char *argv[])
}
inited = TRUE;
}
- if (!strcmp(argv[1], "demo"))
- {
- if (inited != TRUE)
- {
- printf("please ensure the media has been inited \r\n");
- return -2;
- }
- FMediaDisplayDemo();
- }
if (!strcmp(argv[1], "deinit"))
{
if (inited != TRUE)
@@ -84,13 +75,19 @@ static int MediaCmdEntry(int argc, char *argv[])
printf("please ensure the media has been inited \r\n");
return -2;
}
- if (argc >= 3)
+
+ BaseType_t task_ret = FFreeRTOSMediaDeinit();
+
+ if (pdPASS != task_ret)
{
- id = (u32)simple_strtoul(argv[2], NULL, 10);
+ return -2;
}
- FFreeRTOSMediaChannelDeinit(id);
}
+ if (!strcmp(argv[1], "demo"))
+ {
+ FMediaDisplayDemo();
+ }
return 0;
}
diff --git a/example/peripheral/media/media_test/src/media_example.c b/example/peripheral/media/media_test/src/media_example.c
index 4894d49eeaee952768fcfea5e08dd8fad6408638..f4c62ff9d105d2a8c2ff303a9dbe90295728d759 100644
--- a/example/peripheral/media/media_test/src/media_example.c
+++ b/example/peripheral/media/media_test/src/media_example.c
@@ -44,256 +44,30 @@
#include "fdp_hw.h"
#include "fdp.h"
#include "fdcdp_reg.h"
-#include"media_example.h"
+#include "media_example.h"
+#include "media_example.h"
#include "fdcdp_crtc.h"
-typedef struct
-{
- u32 bit_depth;
- u32 bpc;
- u32 color_depth;
- u32 clock_mode;
- u32 color_rep;
- u32 width;
- u32 height;
- u32 multi_mode;
-} FuserCfg;
-
-static const FuserCfg user_cfg = {
- .bit_depth = 8,
- .bpc = 8,
- .color_depth = 32,
- .clock_mode = 1,
- .color_rep = 0,
- .width = 800,
- .height = 600,
- .multi_mode = 0/*0:clone, 1 :horz, 2:vert*/
-};
+#include "media_common.h"
/************************** Variable Definitions *****************************/
-#define FMEDIA_EVT_INTR(index) BIT(index)
-#define FMEDIA_CHANNEL_0 0
-#define FMEDIA_CHANNEL_1 1
+/*通道组合*/
+#define CHANNEL_NONE 0x0 /*不选择*/
+#define CHANNEL_DP_0 0x1 /*通道0*/
+#define CHANNEL_DP_1 0x2 /*通道1*/
+#define CHANNEL_DP_2 0x4 /*通道2*/
+#define CHANNEL_DP_0_1 (CHANNEL_DP_0 | CHANNEL_DP_1) /*通道0 1*/
+#define CHANNEL_DP_0_2 (CHANNEL_DP_0 | CHANNEL_DP_2) /*通道0 2*/
+#define CHANNEL_DP_1_2 (CHANNEL_DP_1 | CHANNEL_DP_2) /*通道1 2*/
+#define CHANNEL_DP_ALL (CHANNEL_DP_0 | CHANNEL_DP_1 | CHANNEL_DP_2) /*通道0 1 2*/
+
+static u32 channel_mask = CHANNEL_DP_0_1; /* 默认选择双通道*/
/***************** Macros (Inline Functions) Definitions *********************/
static TaskHandle_t init_task;
-static TaskHandle_t hpd_task ;
-
+static TaskHandle_t hpd_task;
static FFreeRTOSMedia os_media;
-static EventGroupHandle_t media_event = NULL;
static GraphicsTest blt_buffer;
-static u8 static_frame_buffer_address[1920 * 1080 * 4] __attribute__((aligned(128))) = {0};/*Framebuffer 大小 (字节) = 屏幕宽度 (像素) × 屏幕高度 (像素) × 每像素位数 (bpp) / 8*/
/************************** Function Prototypes ******************************/
-static void FFreeRTOSMediaSendEvent(u32 evt_bits)
-{
- FASSERT(media_event);
- BaseType_t x_result = pdFALSE;
- BaseType_t xhigher_priority_task_woken = pdFALSE;
- /*set the irq event for the task*/
- x_result = xEventGroupSetBitsFromISR(media_event, evt_bits, &xhigher_priority_task_woken);
-}
-
-static boolean FFreeRTOSMediaWaitEvent(u32 evt_bits, TickType_t wait_delay)
-{
- FASSERT(media_event);
- EventBits_t event;
- event = xEventGroupWaitBits(media_event, evt_bits,
- pdTRUE, pdFALSE, wait_delay);/*wait the irq event for the task*/
- if (event & evt_bits)
- {
- return TRUE;
- }
- return FALSE;
-}
-
-static boolean FFreeRTOSMediaClearEvent(EventGroupHandle_t pvEventGroup, const uint32_t ulBitsToClear)
-{
- FASSERT(media_event);
- EventBits_t event;
- event = xEventGroupClearBits(pvEventGroup, ulBitsToClear);/*clear the intr bits*/
- return TRUE;
-}
-
-/**
- * @name: FFreeRTOSMediaHpdConnectCallback
- * @msg: the hpd connect event
- * @param {void} *args is the instance of dcdp
- * @param {u32} index is the channel
- * @return Null
- */
-static void FFreeRTOSMediaHpdConnectCallback(void *args, u32 index)
-{
- FASSERT(args != NULL);
- FDcDp *instance_p = (FDcDp *)args;
- FDpChannelRegRead(instance_p->dp_instance_p[index].config.dp_channe_base_addr, PHYTIUM_DP_INTERRUPT_STATUS); /*clear interrupt*/
- FFreeRTOSMediaSendEvent(FMEDIA_EVT_INTR(index));
- instance_p->is_initialized[index] = FDCDP_IS_INITIALIZED;
- printf("Dp:%d connect\r\n", index);
-}
-
-/**
- * @name: FFreeRTOSMediaHpdBreakCallback
- *
- *
- *
- * @msg: the hpd disconnect event
- * @param {void} *args is the instance of dcdp
- * @param {u32} index is the channel
- * @return Null
- */
-static void FFreeRTOSMediaHpdBreakCallback(void *args, u32 index)
-{
- FASSERT(args != NULL);
- FDcDp *instance_p = (FDcDp *)args;
- FDpChannelRegRead(instance_p->dp_instance_p[index].config.dp_channe_base_addr, PHYTIUM_DP_INTERRUPT_STATUS); /*clear interrupt*/
- instance_p->is_initialized[index] = FDCDP_NOT_INITIALIZED;
- FFreeRTOSMediaSendEvent(FMEDIA_EVT_INTR(index));
- printf("Dp:%d disconnect\r\n", index);
-}
-
-/**
- * @name: FFreeRTOSMediaAuxTimeoutCallback
- * @msg: the aux timeout event
- * @param {void} *args is the instance of dcdp
- * @param {u32} index is the channel
- * @return Null
- */
-static void FFreeRTOSMediaAuxTimeoutCallback(void *args, u32 index)
-{
- FASSERT(args != NULL);
- FDcDp *instance_p = (FDcDp *)args;
- FDpChannelRegRead(instance_p->dp_instance_p[index].config.dp_channe_base_addr, PHYTIUM_DP_INTERRUPT_STATUS); /*clear interrupt*/
- printf("Dp:%d aux connect timeout\r\n", index);
-}
-
-/**
- * @name: FFreeRTOSMediaAuxErrorCallback
- * @msg: the aux error event
- * @param {void} *args is the instance of dcdp
- * @param {u32} index is the channel
- * @return Null
- */
-static void FFreeRTOSMediaAuxErrorCallback(void *args, u32 index)
-{
- FASSERT(args != NULL);
- FDcDp *instance_p = (FDcDp *)args;
- FDpChannelRegRead(instance_p->dp_instance_p[index].config.dp_channe_base_addr, PHYTIUM_DP_INTERRUPT_STATUS); /*clear interrupt*/
- printf("Dp:%d aux connect error\r\n", index);
-}
-
-/**
- * @name: FFreeRTOSMediaIrqSet
- * @msg: set the irq event and instance
- * @param {FDcDp} *instance_p is the instance of dcdp
- * @return Null
- */
-static void FFreeRTOSMediaIrqSet(FDcDp *instance_p)
-{
- FASSERT(instance_p != NULL);
- u32 cpu_id;
-
- GetCpuId(&cpu_id);
- InterruptSetTargetCpus(instance_p->dp_instance_p[0].config.irq_num, cpu_id);/*the dc0 and dc1 have the same num of irq_num*/
-
- FDcDpRegisterHandler(instance_p, FDCDP_HPD_IRQ_CONNECTED, FFreeRTOSMediaHpdConnectCallback, (void *)instance_p);
- FDcDpRegisterHandler(instance_p, FDCDP_HPD_IRQ_DISCONNECTED, FFreeRTOSMediaHpdBreakCallback, (void *)instance_p);
- FDcDpRegisterHandler(instance_p, FDCDP_AUX_REPLY_TIMEOUT, FFreeRTOSMediaAuxTimeoutCallback, (void *)instance_p);
- FDcDpRegisterHandler(instance_p, FDCDP_AUX_REPLY_ERROR, FFreeRTOSMediaAuxErrorCallback, (void *)instance_p);
-
- InterruptSetPriority(instance_p->dp_instance_p[0].config.irq_num, FREERTOS_MEDIA_IRQ_PRIORITY);/*dp0 and dp1 have the same irq_num*/
- InterruptInstall(instance_p->dp_instance_p[0].config.irq_num, FDcDpInterruptHandler, instance_p, "media");
- InterruptUmask(instance_p->dp_instance_p[0].config.irq_num);
-}
-
-/**
- * @name: FDcDpIrqAllEnable
- * @msg: enable the irq
- * @param {FDcDp} *instance_p is the instance of dcdp
- * @return Null
- */
-static void FDcDpIrqAllEnable(FDcDp *instance_p)
-{
- int index = 0;
- FDcDpIntrEventType event_type = FDCDP_HPD_IRQ_CONNECTED;
- for (index = 0; index < FDCDP_INSTANCE_NUM; index++)
- {
- for (event_type = 0; event_type < FDCDP_INSTANCE_NUM; event_type++)
- {
- FDcDpIrqEnable(instance_p, index, event_type);
- }
- }
-}
-
-/**
- * @name: FFreeRTOSMediaInitTask
- * @msg: a task for init the media
- * @return Null
- */
-static void FFreeRTOSMediaInitTask(void)
-{
- FError ret = FDP_SUCCESS;
- u32 index, start_index, end_index;
-
- /*设置用户参数*/
- u32 channel = 2;/* 0 or 1 or 2*/
- if (channel == FDCDP_INSTANCE_NUM)
- {
- start_index = 0;
- end_index = FDCDP_INSTANCE_NUM;
- }
- else
- {
- start_index = channel;
- end_index = channel + 1;
- }
- os_media.dcdp_ctrl.multi_mode = user_cfg.multi_mode;
- for (index = start_index; index < end_index; index ++)
- {
- FDcDpCfgInitialize(&os_media.dcdp_ctrl,index);
-
- os_media.dcdp_ctrl.dc_instance_p[index].config = *FDcLookupConfig(index);
-
- os_media.dcdp_ctrl.dp_instance_p[index].config = *FDpLookupConfig(index);
-
- os_media.dcdp_ctrl.dp_instance_p[index].trans_config.bit_depth = user_cfg.bit_depth;
-
- os_media.dcdp_ctrl.dc_instance_p[index].crtc.bpc = user_cfg.bpc;
-
- os_media.dcdp_ctrl.dc_instance_p[index].color_depth = user_cfg.color_depth;
-
- os_media.dcdp_ctrl.dp_instance_p[index].trans_config.clock_mode = user_cfg.clock_mode;
-
- os_media.dcdp_ctrl.dp_instance_p[index].trans_config.color_rep_format = user_cfg.color_rep;
-
- os_media.dcdp_ctrl.dc_instance_p[index].channel = index;
-
- os_media.dcdp_ctrl.dc_instance_p[index].fb_addr = (uintptr)static_frame_buffer_address ;/*当前例程虚拟地址和物理地址一致,实际需要根据需要进行映射*/
-
- os_media.dcdp_ctrl.dc_instance_p[index].fb_virtual = (uintptr)static_frame_buffer_address ;/*当前例程虚拟地址和物理地址一致,实际需要根据需要进行映射*/
-
- FDcDpGeneralCfgInitial(&os_media.dcdp_ctrl, index);
- }
-
- FFreeRTOSMedia *os_config = FFreeRTOSMediaHwInit(&os_media,user_cfg.width, user_cfg.height);
- FFreeRTOSMediaIrqSet(&os_config->dcdp_ctrl);
- FDcDpIrqAllEnable(&os_config->dcdp_ctrl);
- vTaskDelete(NULL);
-}
-
-/**
- * @name: FFreeRTOSMediaChannelDeinit
- * @msg: deinit the media
- * @param {u32} id is the number of dcdp
- * @return Null
- */
-void FFreeRTOSMediaChannelDeinit(u32 id)
-{
- taskENTER_CRITICAL();
- vEventGroupDelete(media_event);
- media_event = NULL;
- FDcDpDeInitialize(&os_media.dcdp_ctrl, id);/*deinit the id channel*/
- taskEXIT_CRITICAL();
- return;
-}
/**
* @name: BltVideoToFill
@@ -326,20 +100,16 @@ static void BltVideoToFill(FDcCtrl *instance_p, GraphicsTest *config, u32 width,
FASSERT(instance_p != NULL);
FASSERT(config != NULL);
- u32 ResWidth;
- u32 ResHeight;
- u32 Stride;
- u32 I;
- u32 J;
- u32 Blt;
+ u32 stride;
+ u32 blt;
- Stride = FDcWidthToStride(width, 32, 1);
- memcpy(&Blt, config, sizeof(GraphicsTest));
- for (I = 0; I < (height); I++)
+ stride = FDcWidthToStride(width, 32, 1);
+ memcpy(&blt, config, sizeof(GraphicsTest));
+ for (int i = 0; i < (height); i++)
{
- for (J = 0; J < (width * 2); J++)
+ for (int j = 0; j < (width * 2); j++)
{
- PhyFramebufferWrite(instance_p, I * Stride + J * 4, 1, &Blt);
+ PhyFramebufferWrite(instance_p, i * stride + j * 4, 1, &blt);
}
}
@@ -351,43 +121,18 @@ static void BltVideoToFill(FDcCtrl *instance_p, GraphicsTest *config, u32 width,
* @return Null
*/
FError FMediaDisplayDemo(void)
-{
- FDcDp *instance_p = &os_media.dcdp_ctrl;
- for (u32 index = 0; index < FDCDP_INSTANCE_NUM; index ++)
- {
- blt_buffer.Red = 0xff;
- blt_buffer.Green = 0xff;
- blt_buffer.Blue = 0x0;
- blt_buffer.reserve = 0;
- BltVideoToFill(&instance_p->dc_instance_p[index], &blt_buffer, user_cfg.width, user_cfg.height);
- }
-}
-
-/* create the hpd task */
-static void FFreeRTOSMediaHpdTask(void)
{
u32 index;
- u32 ret = 0 ;
- FFreeRTOSMediaWaitEvent(FMEDIA_EVT_INTR(FMEDIA_CHANNEL_0) | FMEDIA_EVT_INTR(FMEDIA_CHANNEL_1), portMAX_DELAY);
- os_media.dcdp_ctrl.multi_mode = user_cfg.multi_mode;
- for (;;)
- {
- for (index = 0; index < FDCDP_INSTANCE_NUM; index++)
+ for (index = 0; index < FDP_INSTANCE_NUM; index ++)
+ {
+ if (channel_mask & BIT(index))
{
- if (os_media.dcdp_ctrl.is_initialized[index] == FDCDP_NOT_INITIALIZED)
- {
- FDcDpCfgInitialize(&os_media.dcdp_ctrl, index);
- ret = FDcDpInitial(&os_media.dcdp_ctrl, index, user_cfg.width, user_cfg.height);
- FFreeRTOSMediaClearEvent(media_event, FMEDIA_EVT_INTR(index));
- if (ret == FDP_SUCCESS)
- {
- printf("Hpd task finish , reinit the dp success.\r\n");
- }
- os_media.dcdp_ctrl.is_initialized[index] = FDCDP_IS_INITIALIZED;
- }
-
+ blt_buffer.Red = 0x0;
+ blt_buffer.Green = 0xff;
+ blt_buffer.Blue = 0xff;
+ blt_buffer.reserve = 0;
+ BltVideoToFill(&os_media.dcdp_ctrl.dc_instance_p[index], &blt_buffer, 800, 600);
}
- vTaskDelay(200);
}
}
@@ -395,15 +140,13 @@ static void FFreeRTOSMediaHpdTask(void)
BaseType_t FFreeRTOSMediaCreate(void)
{
BaseType_t xReturn = pdPASS; /* 定义一个创建信息返回值,默认为 pdPASS */
- FASSERT_MSG(NULL == media_event, "Event group exists.");
- FASSERT_MSG((media_event = xEventGroupCreate()) != NULL, "Create event group failed.");
/* enter critical region */
taskENTER_CRITICAL();
/* Media init task */
- xReturn = xTaskCreate((TaskFunction_t)FFreeRTOSMediaInitTask, /* 任务入口函数 */
- (const char *)"FFreeRTOSMediaInitTask", /* 任务名字 */
+ xReturn = xTaskCreate((TaskFunction_t)FMediaInitTask, /* 任务入口函数 */
+ (const char *)"FMediaInitTask", /* 任务名字 */
1024, /* 任务栈大小 */
- NULL, /* 任务入口函数参数 */
+ &os_media, /* 任务入口函数参数 */
(UBaseType_t)configMAX_PRIORITIES - 2, /* 任务的优先级 */
(TaskHandle_t *)&init_task);
@@ -411,10 +154,30 @@ BaseType_t FFreeRTOSMediaCreate(void)
xReturn = xTaskCreate((TaskFunction_t)FFreeRTOSMediaHpdTask, /* 任务入口函数 */
(const char *)"FFreeRTOSMediaHpdTask", /* 任务名字 */
1024, /* 任务栈大小 */
- NULL, /* 任务入口函数参数 */
+ &os_media, /* 任务入口函数参数 */
(UBaseType_t)configMAX_PRIORITIES - 1, /* 任务的优先级 */
(TaskHandle_t *)&hpd_task);
/* exit critical region */
taskEXIT_CRITICAL();
return xReturn;
}
+
+/* create media test*/
+BaseType_t FFreeRTOSMediaDeinit()
+{
+
+ BaseType_t xReturn = pdPASS; /* 定义一个创建信息返回值,默认为 pdPASS */
+ /* enter critical region */
+ taskENTER_CRITICAL();
+ /* Media init task */
+ xReturn = xTaskCreate((TaskFunction_t)FFreeRTOSMediaChannelDeinit, /* 任务入口函数 */
+ (const char *)"FMediaDeInitTask", /* 任务名字 */
+ 1024, /* 任务栈大小 */
+ &os_media, /* 任务入口函数参数 */
+
+ (UBaseType_t)configMAX_PRIORITIES - 2, /* 任务的优先级 */
+ (TaskHandle_t *)&init_task);
+ /* exit critical region */
+ taskEXIT_CRITICAL();
+ return xReturn;
+}
\ No newline at end of file
diff --git a/example/peripheral/usb/usb_device/README.md b/example/peripheral/usb/usb_device/README.md
index 24d1cb78ede282207d807a7c7e124e3b64b2b62b..15addc82de5d5b97e7a18b5d4c09c6ba1425f1dc 100644
--- a/example/peripheral/usb/usb_device/README.md
+++ b/example/peripheral/usb/usb_device/README.md
@@ -44,10 +44,7 @@ PD2408 上提供了 USB 3.0 OTG 控制器,本例程通过 CherryUSB,支持
- make 将目录下的工程进行编译
- make clean 将目录下的工程进行清理
- make boot 将目录下的工程进行编译,并将生成的elf 复制到目标地址
-- make load_e2000d_aarch64 将预设64bit e2000d 下的配置加载至工程中
-- make load_e2000d_aarch32 将预设32bit e2000d 下的配置加载至工程中
-- make load_e2000q_aarch64 将预设64bit e2000q 下的配置加载至工程中
-- make load_e2000q_aarch32 将预设32bit e2000q 下的配置加载至工程中
+- make load_kconfig LOAD_CONFIG_NAME= 将预设配置加载至工程中
- make menuconfig 配置目录下的参数变量
- make backup_kconfig 将目录下的sdkconfig 备份到./configs下
@@ -63,7 +60,7 @@ PD2408 上提供了 USB 3.0 OTG 控制器,本例程通过 CherryUSB,支持
- 选择目标平台和例程需要的配置
```
-make load_e2000d_aarch64
+- make load_kconfig LOAD_CONFIG_NAME= 将预设配置加载至工程中
```
- 进行编译
diff --git a/example/peripheral/usb/usb_device/makefile b/example/peripheral/usb/usb_device/makefile
index 2cb75eecfe4d35105f4e4124855e08611b0113d8..b3c8b0ed6229099fdcd712c9ea2d58c3abaa038e 100644
--- a/example/peripheral/usb/usb_device/makefile
+++ b/example/peripheral/usb/usb_device/makefile
@@ -47,26 +47,12 @@ endif
mk_pusb3lib:
$(CROSS_COMPILE)ar rcs $(SDK_DIR)/third-party/cherryusb/port/pusb3/libpusb3_dc_a64.a ./build/cherryusb/fpusb3/*.o
-all_libs:
- @rm $(SDK_DIR)/third-party/cherryusb/port/pusb2/libpusb2_dc_a64.c -f
- make load_kconfig LOAD_CONFIG_NAME=e2000q_aarch64_demo_pusb2_no_log
- make clean image mk_pusb2lib
- @rm $(SDK_DIR)/third-party/cherryusb/port/pusb2/libpusb2_dc_a32_hardfp.c -f
- make load_kconfig LOAD_CONFIG_NAME=e2000q_aarch32_demo_pusb2_hardfp_no_log
- make clean image mk_pusb2lib
- @rm $(SDK_DIR)/third-party/cherryusb/port/pusb2/libpusb2_dc_a32_softfp*.c -f
- make load_kconfig LOAD_CONFIG_NAME=e2000q_aarch32_demo_pusb2_softfp_no_log
- make clean image mk_pusb2lib
- @rm $(SDK_DIR)/third-party/cherryusb/port/pusb3/libpusb3_dc_a64.c -f
- make load_kconfig LOAD_CONFIG_NAME=pd2408_aarch64_demo_pusb3_no_log
- make clean image mk_pusb3lib
-
all_images:
- make load_kconfig LOAD_CONFIG_NAME=e2000q_aarch64_demo_pusb2_lib
+ make load_kconfig LOAD_CONFIG_NAME=pe2204_aarch64_demo_pusb2_lib
make clean image
- make load_kconfig LOAD_CONFIG_NAME=e2000q_aarch32_demo_pusb2_hardfp_lib
+ make load_kconfig LOAD_CONFIG_NAME=pe2204_aarch32_demo_pusb2_hardfp_lib
make clean image
- make load_kconfig LOAD_CONFIG_NAME=e2000q_aarch32_demo_pusb2_softfp_lib
+ make load_kconfig LOAD_CONFIG_NAME=pe2204_aarch32_demo_pusb2_softfp_lib
make clean image
make load_kconfig LOAD_CONFIG_NAME=pd2408_aarch64_demo_pusb3_lib
make clean image
\ No newline at end of file
diff --git a/example/peripheral/usb/usb_host/README.md b/example/peripheral/usb/usb_host/README.md
index c7c619b2b41dc19d3d5d8af06d33d501e52a766f..8e1c3cacdc3e97e5e03cb3af7a82f89707f871e3 100644
--- a/example/peripheral/usb/usb_host/README.md
+++ b/example/peripheral/usb/usb_host/README.md
@@ -51,7 +51,7 @@ CherryUSB 是一个用于嵌入式系统 USB 协议栈,支持运行在Host模
- 选择目标平台和例程需要的配置
```
-make load_kconfig LOAD_CONFIG_NAME=e2000d_aarch64_demo_cherry_usb
+make load_kconfig LOAD_CONFIG_NAME=pe2204_aarch64_demo_pusb2
```
- 进行编译
@@ -167,7 +167,7 @@ usbh kbd 0 /dev/input1
- 加载飞腾派配置,然后编译镜像
```
-make load_kconfig LOAD_CONFIG_NAME=phytiumpi_aarch64_firefly_cherry_usb
+make load_kconfig LOAD_CONFIG_NAME=pe2204_aarch64_demo_pusb2
```
- 连接 USB 设备到 XHCI 0,注意不要连错,只有靠板子正面一侧的蓝色插槽对应的是 XHCI 控制器
diff --git a/example/peripheral/usb/usb_host/makefile b/example/peripheral/usb/usb_host/makefile
index c4c5f55cad3393efcbae319402ea65bed3d97285..d0f4fa8e19df28d6b4938f9beed6bc49500598d3 100644
--- a/example/peripheral/usb/usb_host/makefile
+++ b/example/peripheral/usb/usb_host/makefile
@@ -60,43 +60,20 @@ endif
mk_pusb3lib:
$(CROSS_COMPILE)ar rcs $(SDK_DIR)/third-party/cherryusb/port/pusb3/libpusb3_hc_a64.a ./build/cherryusb/fpusb3/*.o ./build/cherryusb/fxhci/*.o
-all_libs:
- @rm $(SDK_DIR)/third-party/cherryusb/port/xhci/phytium/libxhci_a64.a -f
- make load_kconfig LOAD_CONFIG_NAME=e2000q_aarch64_demo_xhci_no_log
- make clean image mk_xhcilib
- @rm $(SDK_DIR)/third-party/cherryusb/port/xhci/phytium/libxhci_a32_hardfp.a -f
- make load_kconfig LOAD_CONFIG_NAME=e2000q_aarch32_demo_xhci_no_log_hardfp
- make clean image mk_xhcilib
- @rm $(SDK_DIR)/third-party/cherryusb/port/xhci/phytium/libxhci_a32_softfp*.a -f
- make load_kconfig LOAD_CONFIG_NAME=e2000q_aarch32_demo_xhci_no_log_softfp
- make clean image mk_xhcilib
- @rm $(SDK_DIR)/third-party/cherryusb/port/pusb2/libpusb2_hc_a64.c -f
- make load_kconfig LOAD_CONFIG_NAME=e2000q_aarch64_demo_pusb2_no_log
- make clean image mk_pusb2lib
- @rm $(SDK_DIR)/third-party/cherryusb/port/pusb2/libpusb2_hc_a32_hardfp.c -f
- make load_kconfig LOAD_CONFIG_NAME=e2000q_aarch32_demo_pusb2_hardfp_no_log
- make clean image mk_pusb2lib
- @rm $(SDK_DIR)/third-party/cherryusb/port/pusb2/libpusb2_hc_a32_softfp*.c -f
- make load_kconfig LOAD_CONFIG_NAME=e2000q_aarch32_demo_pusb2_softfp_no_log
- make clean image mk_pusb2lib
- @rm $(SDK_DIR)/third-party/cherryusb/port/pusb3/libpusb3_hc_a64.c -f
- make load_kconfig LOAD_CONFIG_NAME=pd2408_aarch64_demo_pusb3_non_log
- make clean image mk_pusb3lib
-
all_images:
- make load_kconfig LOAD_CONFIG_NAME=e2000q_aarch64_demo_xhci_lib
+ make load_kconfig LOAD_CONFIG_NAME=pe2204_aarch64_demo_xhci
make clean image
- make load_kconfig LOAD_CONFIG_NAME=e2000q_aarch32_demo_xhci_lib_hardfp
+ make load_kconfig LOAD_CONFIG_NAME=pe2204_aarch32_demo_xhci_hardfp
make clean image
- make load_kconfig LOAD_CONFIG_NAME=e2000q_aarch32_demo_xhci_lib_softfp
+ make load_kconfig LOAD_CONFIG_NAME=pe2204_aarch32_demo_xhci_softfp
make clean image
- make load_kconfig LOAD_CONFIG_NAME=e2000q_aarch64_demo_pcie_xhci_lib
+ make load_kconfig LOAD_CONFIG_NAME=pe2204_aarch64_demo_pcie_xhci
make clean image
- make load_kconfig LOAD_CONFIG_NAME=e2000q_aarch32_demo_pcie_xhci_lib_hardfp
+ make load_kconfig LOAD_CONFIG_NAME=pe2204_aarch32_demo_pcie_xhci_hardfp
make clean image
- make load_kconfig LOAD_CONFIG_NAME=e2000q_aarch32_demo_pcie_xhci_lib_softfp
+ make load_kconfig LOAD_CONFIG_NAME=pe2204_aarch32_demo_pcie_xhci_softfp
make clean image
- make load_kconfig LOAD_CONFIG_NAME=pd2408_aarch64_demo_pcie_xhci_lib
+ make load_kconfig LOAD_CONFIG_NAME=pd2408_aarch64_test_a_pcie_xhci
make clean image
- make load_kconfig LOAD_CONFIG_NAME=pd2408_aarch64_demo_pusb3_lib
+ make load_kconfig LOAD_CONFIG_NAME=pd2408_aarch64_test_a_pusb3
make clean image
\ No newline at end of file
diff --git a/example/storage/spim_spiffs/README.md b/example/storage/spim_spiffs/README.md
index 22728e1e5cf85bf8675b19bcf472c1d06afe43ba..a3f3dd2f0f16ca70805e412b77a39dff05a2fc23 100755
--- a/example/storage/spim_spiffs/README.md
+++ b/example/storage/spim_spiffs/README.md
@@ -82,8 +82,7 @@
- make 将目录下的工程进行编译
- make clean 将目录下的工程进行清理
- make image 将目录下的工程进行编译,并将生成的elf 复制到目标地址
-- make load_e2000d_aarch64 将预设64bit e2000d 下的配置加载至工程中
-- make load_e2000d_aarch32 将预设32bit e2000d 下的配置加载至工程中
+- make load_kconfig LOAD_CONFIG_NAME= 将预设配置加载至工程中
- make menuconfig 配置目录下的参数变量
- make backup_kconfig 将目录下的sdkconfig 备份到./configs下
diff --git a/example/system/amp/openamp_for_linux/configs/pd2008_aarch32_test_openamp_for_linux.config b/example/system/amp/openamp_for_linux/configs/pd2008_aarch32_test_openamp_for_linux.config
index 510b0a105fdbc60d4ebdcc3d89d0dd5edc18da55..4e46dffaf147be3d58947805795c49540a65d672 100644
--- a/example/system/amp/openamp_for_linux/configs/pd2008_aarch32_test_openamp_for_linux.config
+++ b/example/system/amp/openamp_for_linux/configs/pd2008_aarch32_test_openamp_for_linux.config
@@ -1,6 +1,7 @@
CONFIG_ARCH_ARMV8_AARCH32=y
CONFIG_USE_L3CACHE=y
CONFIG_TARGET_PD2008=y
+CONFIG_UART_INIT_NOT_CLR_INTR=y
CONFIG_LOG_VERBOS=y
CONFIG_LOG_DISPALY_CORE_NUM=y
CONFIG_INTERRUPT_ROLE_SLAVE=y
diff --git a/example/system/amp/openamp_for_linux/configs/pd2008_aarch64_test_openamp_for_linux.config b/example/system/amp/openamp_for_linux/configs/pd2008_aarch64_test_openamp_for_linux.config
index 0a6fdbd43ea8fea0ce54f9b88f298ba536520b30..257850effbedfe5cc4f6be30be057c2b7558d596 100644
--- a/example/system/amp/openamp_for_linux/configs/pd2008_aarch64_test_openamp_for_linux.config
+++ b/example/system/amp/openamp_for_linux/configs/pd2008_aarch64_test_openamp_for_linux.config
@@ -1,5 +1,6 @@
CONFIG_USE_L3CACHE=y
CONFIG_TARGET_PD2008=y
+CONFIG_UART_INIT_NOT_CLR_INTR=y
CONFIG_LOG_VERBOS=y
CONFIG_LOG_DISPALY_CORE_NUM=y
CONFIG_INTERRUPT_ROLE_SLAVE=y
diff --git a/example/system/amp/openamp_for_linux/configs/pd2308_aarch64_demo_openamp_for_linux.config b/example/system/amp/openamp_for_linux/configs/pd2308_aarch64_demo_openamp_for_linux.config
index 172d3af1e9865722056ffa9926ded7d321a61a89..f3138fd37504074cb44b2043949e01d43c2042bf 100644
--- a/example/system/amp/openamp_for_linux/configs/pd2308_aarch64_demo_openamp_for_linux.config
+++ b/example/system/amp/openamp_for_linux/configs/pd2308_aarch64_demo_openamp_for_linux.config
@@ -1,10 +1,10 @@
# CONFIG_BOOT_WITH_FLUSH_CACHE is not set
CONFIG_TARGET_PD2308=y
+CONFIG_UART_INIT_NOT_CLR_INTR=y
CONFIG_LOG_VERBOS=y
CONFIG_LOG_DISPALY_CORE_NUM=y
CONFIG_INTERRUPT_ROLE_SLAVE=y
CONFIG_ENABLE_IOPAD=y
-CONFIG_USE_SERIAL=y
# CONFIG_OUTPUT_BINARY is not set
CONFIG_DEFAULT_LINKER_SCRIPT=y
CONFIG_IMAGE_LOAD_ADDRESS=0xb0100000
diff --git a/example/system/amp/openamp_for_linux/configs/pe2202_aarch32_demo_openamp_for_linux.config b/example/system/amp/openamp_for_linux/configs/pe2202_aarch32_demo_openamp_for_linux.config
index 2dd8fc09a05b5537e2a50e11c5c7910698bbcefe..1e7f22a0348ed1a8e3973b5d0b5556b1444ac9f2 100644
--- a/example/system/amp/openamp_for_linux/configs/pe2202_aarch32_demo_openamp_for_linux.config
+++ b/example/system/amp/openamp_for_linux/configs/pe2202_aarch32_demo_openamp_for_linux.config
@@ -1,9 +1,9 @@
CONFIG_ARCH_ARMV8_AARCH32=y
CONFIG_TARGET_PE2202=y
+CONFIG_UART_INIT_NOT_CLR_INTR=y
CONFIG_LOG_VERBOS=y
CONFIG_LOG_DISPALY_CORE_NUM=y
CONFIG_INTERRUPT_ROLE_SLAVE=y
-CONFIG_USE_SERIAL=y
# CONFIG_OUTPUT_BINARY is not set
CONFIG_DEFAULT_LINKER_SCRIPT=y
CONFIG_IMAGE_LOAD_ADDRESS=0xb0100000
diff --git a/example/system/amp/openamp_for_linux/configs/pe2202_aarch64_demo_openamp_for_linux.config b/example/system/amp/openamp_for_linux/configs/pe2202_aarch64_demo_openamp_for_linux.config
index b1a19778cbb2ac4117c9b28be795fe562ddff39a..8923c45da2fbacc93ae56782d005702d0c9aa810 100644
--- a/example/system/amp/openamp_for_linux/configs/pe2202_aarch64_demo_openamp_for_linux.config
+++ b/example/system/amp/openamp_for_linux/configs/pe2202_aarch64_demo_openamp_for_linux.config
@@ -1,9 +1,9 @@
# CONFIG_BOOT_WITH_FLUSH_CACHE is not set
CONFIG_TARGET_PE2202=y
+CONFIG_UART_INIT_NOT_CLR_INTR=y
CONFIG_LOG_VERBOS=y
CONFIG_LOG_DISPALY_CORE_NUM=y
CONFIG_INTERRUPT_ROLE_SLAVE=y
-CONFIG_USE_SERIAL=y
# CONFIG_OUTPUT_BINARY is not set
CONFIG_DEFAULT_LINKER_SCRIPT=y
CONFIG_IMAGE_LOAD_ADDRESS=0xb0100000
diff --git a/example/system/amp/openamp_for_linux/configs/pe2204_aarch32_demo_openamp_for_linux.config b/example/system/amp/openamp_for_linux/configs/pe2204_aarch32_demo_openamp_for_linux.config
index 7271cf89d41a15a159e5fb6e3120db5987689a94..06e86319eb1e66f6aabb61159d1781b4d20d2ca4 100644
--- a/example/system/amp/openamp_for_linux/configs/pe2204_aarch32_demo_openamp_for_linux.config
+++ b/example/system/amp/openamp_for_linux/configs/pe2204_aarch32_demo_openamp_for_linux.config
@@ -1,8 +1,8 @@
CONFIG_ARCH_ARMV8_AARCH32=y
+CONFIG_UART_INIT_NOT_CLR_INTR=y
CONFIG_LOG_VERBOS=y
CONFIG_LOG_DISPALY_CORE_NUM=y
CONFIG_INTERRUPT_ROLE_SLAVE=y
-CONFIG_USE_SERIAL=y
# CONFIG_OUTPUT_BINARY is not set
CONFIG_DEFAULT_LINKER_SCRIPT=y
CONFIG_IMAGE_LOAD_ADDRESS=0xb0100000
diff --git a/example/system/amp/openamp_for_linux/configs/pe2204_aarch32_phytiumpi_openamp_for_linux.config b/example/system/amp/openamp_for_linux/configs/pe2204_aarch32_phytiumpi_openamp_for_linux.config
index 7174740aa11d3b4ceb5d3cdf3886d1e0d2c4afbb..53010045064666511000c7a0380675eb5b0c27eb 100644
--- a/example/system/amp/openamp_for_linux/configs/pe2204_aarch32_phytiumpi_openamp_for_linux.config
+++ b/example/system/amp/openamp_for_linux/configs/pe2204_aarch32_phytiumpi_openamp_for_linux.config
@@ -1,9 +1,9 @@
CONFIG_ARCH_ARMV8_AARCH32=y
+CONFIG_UART_INIT_NOT_CLR_INTR=y
CONFIG_PHYTIUMPI_FIREFLY_BOARD=y
CONFIG_LOG_VERBOS=y
CONFIG_LOG_DISPALY_CORE_NUM=y
CONFIG_INTERRUPT_ROLE_SLAVE=y
-CONFIG_USE_SERIAL=y
# CONFIG_OUTPUT_BINARY is not set
CONFIG_DEFAULT_LINKER_SCRIPT=y
CONFIG_IMAGE_LOAD_ADDRESS=0xb0100000
diff --git a/example/system/amp/openamp_for_linux/configs/pe2204_aarch64_demo_openamp_for_linux.config b/example/system/amp/openamp_for_linux/configs/pe2204_aarch64_demo_openamp_for_linux.config
index 32a17e3f5aa424afc5aef3c146138f7a3285a121..a6ff0066a0e0147e59f179661765cc7fe9453512 100644
--- a/example/system/amp/openamp_for_linux/configs/pe2204_aarch64_demo_openamp_for_linux.config
+++ b/example/system/amp/openamp_for_linux/configs/pe2204_aarch64_demo_openamp_for_linux.config
@@ -1,8 +1,8 @@
# CONFIG_BOOT_WITH_FLUSH_CACHE is not set
+CONFIG_UART_INIT_NOT_CLR_INTR=y
CONFIG_LOG_VERBOS=y
CONFIG_LOG_DISPALY_CORE_NUM=y
CONFIG_INTERRUPT_ROLE_SLAVE=y
-CONFIG_USE_SERIAL=y
# CONFIG_OUTPUT_BINARY is not set
CONFIG_DEFAULT_LINKER_SCRIPT=y
CONFIG_IMAGE_LOAD_ADDRESS=0xb0100000
diff --git a/example/system/amp/openamp_for_linux/configs/pe2204_aarch64_phytiumpi_openamp_for_linux.config b/example/system/amp/openamp_for_linux/configs/pe2204_aarch64_phytiumpi_openamp_for_linux.config
index 7745d666f8e18ad77a53434d62094c4ce3e13d06..5d4e766fbc302bd41807438632ba142dd864f9d5 100644
--- a/example/system/amp/openamp_for_linux/configs/pe2204_aarch64_phytiumpi_openamp_for_linux.config
+++ b/example/system/amp/openamp_for_linux/configs/pe2204_aarch64_phytiumpi_openamp_for_linux.config
@@ -1,9 +1,9 @@
# CONFIG_BOOT_WITH_FLUSH_CACHE is not set
+CONFIG_UART_INIT_NOT_CLR_INTR=y
CONFIG_PHYTIUMPI_FIREFLY_BOARD=y
CONFIG_LOG_VERBOS=y
CONFIG_LOG_DISPALY_CORE_NUM=y
CONFIG_INTERRUPT_ROLE_SLAVE=y
-CONFIG_USE_SERIAL=y
# CONFIG_OUTPUT_BINARY is not set
CONFIG_DEFAULT_LINKER_SCRIPT=y
CONFIG_IMAGE_LOAD_ADDRESS=0xb0100000
diff --git a/example/system/amp/openamp_for_linux/sdkconfig b/example/system/amp/openamp_for_linux/sdkconfig
index 5b5be5e88036e3ffde761b2ecda337e3ff70a689..1478d246865db9d99360c49338bb2d9605548805 100644
--- a/example/system/amp/openamp_for_linux/sdkconfig
+++ b/example/system/amp/openamp_for_linux/sdkconfig
@@ -82,6 +82,7 @@ CONFIG_TARGET_PE220X=y
CONFIG_DEFAULT_DEBUG_PRINT_UART1=y
# CONFIG_DEFAULT_DEBUG_PRINT_UART0 is not set
# CONFIG_DEFAULT_DEBUG_PRINT_UART2 is not set
+CONFIG_UART_INIT_NOT_CLR_INTR=y
# end of Soc configuration
#
@@ -237,6 +238,7 @@ CONFIG_STACK_SIZE=0x400
# FreeRTOS Uart Drivers
#
CONFIG_FREERTOS_USE_UART=y
+# CONFIG_FREERTOS_USE_SERIAL_V2 is not set
# end of FreeRTOS Uart Drivers
#
@@ -262,12 +264,14 @@ CONFIG_FREERTOS_USE_UART=y
#
# CONFIG_FREERTOS_USE_XMAC is not set
# CONFIG_FREERTOS_USE_GMAC is not set
+# CONFIG_FREERTOS_USE_XMAC_V2 is not set
# end of FreeRTOS Eth Drivers
#
# FreeRTOS Spim Drivers
#
# CONFIG_FREERTOS_USE_FSPIM is not set
+# CONFIG_FREERTOS_USE_FSPIM_V2 is not set
# end of FreeRTOS Spim Drivers
#
@@ -293,6 +297,7 @@ CONFIG_FREERTOS_USE_UART=y
# FreeRTOS I2c Drivers
#
# CONFIG_FREERTOS_USE_I2C is not set
+# CONFIG_FREERTOS_USE_FI2C_V2 is not set
# end of FreeRTOS I2c Drivers
#
diff --git a/example/system/amp/openamp_for_linux/sdkconfig.h b/example/system/amp/openamp_for_linux/sdkconfig.h
index 044bddcc4807b70ed2f25b9e7be651f0ed990f70..8b9f175c8c567b7299a5399a605bc61fd452ac56 100644
--- a/example/system/amp/openamp_for_linux/sdkconfig.h
+++ b/example/system/amp/openamp_for_linux/sdkconfig.h
@@ -73,6 +73,7 @@
#define CONFIG_DEFAULT_DEBUG_PRINT_UART1
/* CONFIG_DEFAULT_DEBUG_PRINT_UART0 is not set */
/* CONFIG_DEFAULT_DEBUG_PRINT_UART2 is not set */
+#define CONFIG_UART_INIT_NOT_CLR_INTR
/* end of Soc configuration */
/* Board Configuration */
@@ -211,6 +212,7 @@
/* FreeRTOS Uart Drivers */
#define CONFIG_FREERTOS_USE_UART
+/* CONFIG_FREERTOS_USE_SERIAL_V2 is not set */
/* end of FreeRTOS Uart Drivers */
/* FreeRTOS Pwm Drivers */
@@ -232,11 +234,13 @@
/* CONFIG_FREERTOS_USE_XMAC is not set */
/* CONFIG_FREERTOS_USE_GMAC is not set */
+/* CONFIG_FREERTOS_USE_XMAC_V2 is not set */
/* end of FreeRTOS Eth Drivers */
/* FreeRTOS Spim Drivers */
/* CONFIG_FREERTOS_USE_FSPIM is not set */
+/* CONFIG_FREERTOS_USE_FSPIM_V2 is not set */
/* end of FreeRTOS Spim Drivers */
/* FreeRTOS DMA Drivers */
@@ -258,6 +262,7 @@
/* FreeRTOS I2c Drivers */
/* CONFIG_FREERTOS_USE_I2C is not set */
+/* CONFIG_FREERTOS_USE_FI2C_V2 is not set */
/* end of FreeRTOS I2c Drivers */
/* FreeRTOS Mio Drivers */
diff --git a/example/system/nested_interrupt/README.md b/example/system/nested_interrupt/README.md
index 7a606ddc8961b4f08a87a4a5049c40c99eee56fa..519451823a3abc9114b5269598c79b33106802e8 100644
--- a/example/system/nested_interrupt/README.md
+++ b/example/system/nested_interrupt/README.md
@@ -67,12 +67,12 @@
- 在host侧完成配置
-> 配置成ft2004,对于其它平台,使用对于的默认配置,如D2000 `make load_kconfig LOAD_CONFIG_NAME=d2000_aarch32_test_nested_interrupt`
+> 配置成ft2004,对于其它平台,使用对于的默认配置,如D2000 `make load_kconfig LOAD_CONFIG_NAME=pd2008_aarch64_test_nested_interrupt`
- 选择目标平台
```
-make load_kconfig LOAD_CONFIG_NAME=ft2004_aarch64_dsk_nested_interrupt
+make load_kconfig LOAD_CONFIG_NAME=pd2008_aarch64_test_nested_interrupt
```
- 选择例程需要的配置
diff --git a/example/system/posix/README.md b/example/system/posix/README.md
index cbd1a26b309d1b09e8f43cb39b2eb7ccd4754877..0b1af180cb387c0bf094a73097246530b2854913 100644
--- a/example/system/posix/README.md
+++ b/example/system/posix/README.md
@@ -73,12 +73,12 @@ posix测试用例 (posix_example.c)
- 在host侧完成配置
-> 配置成E2000D,对于其它平台,使用对于的默认配置,如E2000Q `make load_kconfig LOAD_CONFIG_NAME=e2000q_aarch64_demo_posix`
+> 配置成E2000D demo,对于其它平台,使用对于的默认配置,如E2000Q `make load_kconfig LOAD_CONFIG_NAME=pe2204_aarch64_demo_posix`
- 选择目标平台
```
-make load_kconfig LOAD_CONFIG_NAME=e2000d_aarch64_demo_posix
+make load_kconfig LOAD_CONFIG_NAME=pe2204_aarch64_demo_posix
```
- 选择例程需要的配置
diff --git a/install.py b/install.py
index 39e8c0b1a2115c5a314ade83f120dbeab97e8780..fb0b29292adf6d168a4e694603b353482bf72cf3 100755
--- a/install.py
+++ b/install.py
@@ -28,7 +28,7 @@ curr_path = os.getcwd()
freertos_sdk_path = install_path
# Add standalone sdk
-standalone_sdk_v="b7c46c8f32bc14165a3b141badf47150f62a0989"
+standalone_sdk_v="329f9046f27b3c545548ab395bcfa3c4abf4b0d6"
if (install_platform == windows_x64):
standalone_path=freertos_sdk_path + '\\standalone'
else:
diff --git a/third-party/freertos/portable/freertos_configs.c b/third-party/freertos/portable/freertos_configs.c
index dd2e1db0ce04902d037cec3da3947b180d4957ae..a61e1e26e2d84bee9e9b98b871e9adf7b9f68101 100644
--- a/third-party/freertos/portable/freertos_configs.c
+++ b/third-party/freertos/portable/freertos_configs.c
@@ -1,11 +1,3 @@
-/*
- * @Author: zhangyan 1422953826@qq.com
- * @Date: 2025-05-20 10:01:56
- * @LastEditors: zhangyan 1422953826@qq.com
- * @LastEditTime: 2025-05-20 11:03:03
- * @FilePath: \phytium-free-rtos-sdk\third-party\freertos\portable\freertos_configs.c
- * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
- */
/*
* Copyright (C) 2022, Phytium Technology Co., Ltd. All Rights Reserved.
*
diff --git a/third-party/lvgl-8.3/port/lv_port_disp.c b/third-party/lvgl-8.3/port/lv_port_disp.c
index 6f6077a2512ebe8b6495ff72a624c1de84fe79c1..1d5633b8906a466fe2e2cbad049ed3511798dcb0 100644
--- a/third-party/lvgl-8.3/port/lv_port_disp.c
+++ b/third-party/lvgl-8.3/port/lv_port_disp.c
@@ -43,7 +43,7 @@
#include "lv_conf.h"
#include "../lvgl.h"
-static lv_color_int_t *rtt_fbp[FDCDP_INSTANCE_NUM] ;
+static lv_color_int_t *rtt_fbp[FDP_INSTANCE_NUM] ;
static u32 multi_mode;