Doorbell_4M

[English]

1. 简介

本工程是USB摄像头门锁的一个demo,支持端(BK7258设备)到端(手机APP端)的演示。默认支持尚云进行网络传输。

1.1 规格

  • 硬件配置:
    • 核心板,BK7258_QFN88_9X9_V3.2

    • 显示转接板,BK7258_LCD_Interface_V3.0

    • 喇叭小板,BK_Module_Speaker_V1.1

    • PSRAM 4M

  • 支持,UVC
    • 参考外设,最大支持**864 * 480** 分辨率的UVC

  • 支持,UAC

  • 支持,TCP局域网图传

  • 支持,UDP局域网图传

  • 支持,尚云,P2P图传

  • 支持,LCD RGB/MCU I8080显示
    • 参考外设,ST7701SN,480 * 854 RGB LCD

    • RGB565/RGB888

  • 支持,硬件/软件旋转
    • 0°,90°,180°,270°

  • 支持,板载喇叭

  • 支持,MJPEG硬件解码
    • YUV422

  • 支持,MJPEG软件解码
    • YUV420

  • 支持,H264硬件解码

  • 支持,OSD显示
    • ARGB888[PNG]

    • 自定义字体

1.2 路径

<bk_avdk源代码路径>/projects/media/doorbell_4M

2. 框架图

请参考 框架图

3. 配置

请参考 配置

3.1 区别

doorbell_4M与doorbell_8M的区别在于,前一个不支持DVP摄像头,还不支持板载mic。 从8M的PSRAM大小修改为4M(非ab)的PSRAM大小,需要针对config文件进行修改,文件路径为:

media/doorbell_4M/config/bk7258/config

media/doorbell_4M/config/bk7258_cp1/config

media/doorbell_4M/config/bk7258_cp2/config

以下是 doorbell_8M 与doorbell_4M 的CONFIG参数区别:

project

doorbell_8M

doorbell_4M

CONFIG_PSRAM_MEM_SLAB_USER_SIZE

102400

0

CONFIG_PSRAM_MEM_SLAB_AUDIO_SIZE

102400

51200

CONFIG_PSRAM_MEM_SLAB_ENCODE_SIZE

1433600

946176

CONFIG_PSRAM_MEM_SLAB_DISPLAY_SIZE

5701632

2490368

CONFIG_MEDIA_PSRAM_SIZE_4M

N

Y

CONFIG_BUCK_ANALOG_DISABLE

N

Y

CONFIG_PSRAM_W955D8MKY_5J

N

Y

CONFIG_PSRAM_APS6408L_O

N

N

CONFIG_CPU0_SPE_RAM_SIZE

0X56000

0X5E000

CONFIG_CPU1_APP_RAM_SIZE

0X3F000

0X38000

CONFIG_CPU2_APP_RAM_SIZE

0XB000

0XA000

CONFIG_PSRAM_HEAP_BASE

0x60700000

0x60354000

CONFIG_PSRAM_HEAP_SIZE

0x80000

0x7D000

CONFIG_PSRAM_HEAP_CPU0_BASE_ADDER

0x60700000

0x60354000

CONFIG_H264_P_FRAME_CNT

5

3

流程如下图所示:

relationship diagram Overview

Figure 1. doorbell_4M解码流程

relationship diagram Overview

Figure 2. doorbell_8M解码流程

流程上主要区别如下表:

project

解码流程

doorbell_4M

先尝试获取YUV图像,申请成功后才继续进行解码, lcd显示完直接触发下一次获取图像流程

doorbell_8M

直接解码,获取YUV图像失败后直接将JPEG释放,等待下一帧JPEG

4. 演示说明

请访问 APP使用文档 查看。 演示结果:运行时会启动UVC,LCD和AUDIO,LCD显示UVC输出JPEG(864X480)图像经过解码和旋转90°后显示到LCD(480X854)上, 解码后的YUV经过H264编码后,经CS2云到手机上显示(864X480)。

提示

如果您没有云账号权限,可以使用debug模式,设置局域网TCP图传方式。

5. 代码讲解

请参考 代码讲解

6. 移植说明

对于media模块而言,4M和8M最大的区别在于PSRAM大小配置缩小,因此内部缓冲图像数量减少,如下表所示;

project

YUV图像(张)

JPEG图像(张)

H264图像(张)

doorbell_4M

3

4

4

doorbell_ab_4M

3

4

4

doorbell_8M

5

4

8

将8M FLASH + 8M PSRAM 修改为4M FLASH + 4M PSRAM工程按照以下步骤进行:

步骤1:

将平台代码合入; 根据patch将修改同步,patch的提交标题为”adapter for new 4+4 psram of W955D8MKY”, 共三笔提交,注意:不包括doorbell_ab_4M工程代码的patch,代码目录核涉及文件如下表所示:

代码目录

涉及文件

middleware

driver/pwr_clk/Kconfig

soc/bk7258/hal/sys_pm_hal.c

soc/common/hal/include/psram_hal.h

soc/common/hal/psram_hal.c

tools/build_tools

part_table_tools/otherScript/special_project_deal.py

bk_idk/components/part_table

CMakeLists.txt

part_table.mk

主要修改点如下表所示:

涉及文件

主要修改点

driver/pwr_clk/Kconfig

增加BUCK_ANALOG_DISABLE 关闭模拟域BUCK的宏控

soc/bk7258/hal/sys_pm_hal.c

配置关闭模拟域BUCK的实际代码

soc/common/hal/include/psram_hal.h

增加4M PSRAM的新配置MODE以及ID信息

soc/common/hal/psram_hal.c

增加4M PSRAM的初始化流程

part_table_tools/otherScript/special_project_deal.py

增加针对doorbell_cs2_ab_4M分区工程的编译处理

CMakeLists.txt

part_table.mk

增加doorbell_cs2_ab_4M工程

增加doorbell_cs2_ab_4M编译信息

步骤2:

根据patch将修改同步,patch的提交标题为”PSRAM configuration for image transmission-related buffers when the size is 4M”,

共三笔提交,代码目录核涉及文件如下表所示:

代码目录

涉及文件

components

display_service/src/lcd_display_service.c

media_utils/src/psram_mem_slab.c

multimedia/comm/frame_buffer.c

multimedia/Kconfig

multimedia/pipeline/h264_encode_pipeline.c

multimedia/pipeline/jpeg_decode_pipeline.c

multimedia/pipeline/jpeg_get_pipeline.c

bk_idk/components/part_table

CMakeLists.txt

part_table.mk

projects

media/doorbell_4M/config/bk7258_cp1/config

media/doorbell_4M/config/bk7258_cp2/config

media/doorbell_4M/config/bk7258/config

media/doorbell_4M/config/bk7258/bk7258_partitions.csv

主要修改点如下表所示:

涉及文件

主要修改点

display_service/src/lcd_display_service.c

显示完成后立马获取JPEG图像

media_utils/src/psram_mem_slab.c

避免buffer循环查找

multimedia/comm/frame_buffer.c

减少内部图像缓冲数量

multimedia/Kconfig

增加CONFIG_MEDIA_PSRAM_SIZE_4M的宏控

multimedia/pipeline/h264_encode_pipeline.c

multimedia/pipeline/jpeg_decode_pipeline.c

multimedia/pipeline/jpeg_get_pipeline.c

修改pipeline流程

降低YUV图像缩减对软解码帧率的影响

CMakeLists.txt

part_table.mk

增加doorbell_4M工程

media/doorbell_4M/config/bk7258_cp1/config

media/doorbell_4M/config/bk7258_cp2/config

media/doorbell_4M/config/bk7258/config

使用CONFIG_MEDIA_PSRAM_SIZE_4M宏控

修改PSRAM分配,将USB移到CP1上运行

PSRAM具体修改见上面的表格

media/doorbell_4M/config/bk7258/bk7258_partitions.csv

修改FLASH空间分配为4M