Doorbell_ab_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_ab_4M

2. 框架图

请参考 框架图

3. 配置

请参考 配置

3.1 区别

doorbell_ab_4M与doorbell_8M的区别在于,前一个不支持DVP摄像头,还不支持板载mic。psram大小和型号也不一致。

doorbell_ab_4M_8M_different

Figure 1. 4M & 8M的主要分区差异图

从8M的PSRAM大小修改为4M_ab的PSRAM大小,需要针对config文件进行修改,文件路径为:

doorbell_ab_4M/config/bk7258/config

doorbell_ab_4M/config/bk7258_cp1/config

doorbell_ab_4M/config/bk7258_cp2/config

以下是 doorbell_8M 与doorbell_ab_4M 主要的 config 参数区别(关键config但没有差异的,也会列出):

project

doorbell_8M

doorbell_ab_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

CONFIG_ALI_MQTT

N

N

流程如下图所示:

4M decode diagram Overview

Figure 2. doorbell_ab_4M解码流程

8M decode diagram Overview

Figure 3. doorbell_8M解码流程

流程上主要区别如下表:

project

解码流程

doorbell_ab_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/UDP图传方式。

5. 代码讲解

请参考 代码讲解

6. 移植说明

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

project

YUV图像(张) | JPEG图像(张) | H264图像(张)

doorbell_ab_4M

3

4

4

doorbell_8M

5

4

6

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

步骤1:

将平台代码合入;

根据patch将修改同步,patch的提交标题为”adapter for new 4+4 psram of W955D8MKY”,

共四笔提交,包括doorbell_ab_4M的工程代码,代码目录核涉及文件如下表所示:

代码目录

涉及文件

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

projects

media/doorbell_ab_4M/CMakeLists.txt

media/doorbell_ab_4M/config/bk7258_cp1/config

media/doorbell_ab_4M/config/bk7258_cp2/config

media/doorbell_ab_4M/config/bk7258/ab_position_independent.csv

media/doorbell_ab_4M/config/bk7258/bk7258_partitions.csv

media/doorbell_ab_4M/config/bk7258/config

media/doorbell_ab_4M/config/bk7258/configuration.json

media/doorbell_ab_4M/config/bk7258/configurationab.json

media/doorbell_ab_4M/config/bk7258/partitions.csv

media/doorbell_ab_4M/config/ota_rbl.config

media/doorbell_ab_4M/main/app_main.c

media/doorbell_ab_4M/main/CMakeLists.txt

media/doorbell_ab_4M/main/Kconfig.projbuild

media/doorbell_ab_4M/main/vendor_flash.c

media/doorbell_ab_4M/main/vendor_flash_partition.h

media/doorbell_ab_4M/pj_config.mk

media/doorbell_ab_4M/README.md

主要修改点如下表所示:

涉及文件

主要修改点

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_ab_4M分区工程的编译处理

CMakeLists.txt

part_table.mk

增加doorbell_ab_4M工程

增加doorbell_ab_4M编译信息

media/doorbell_ab_4M/config/bk7258_cp1/config

tmedia/doorbell_ab_4M/config/bk7258_cp2/config

media/doorbell_ab_4M/config/bk7258/config

增加doorbell_ab_4M工程CPU1使用的宏控

增加doorbell_ab_4M工程CPU2使用的宏控

增加doorbell_ab_4M工程CPU0使用的宏控

media/doorbell_ab_4M/config/bk7258/bk7258_partitions.csv

修改FLASH空间分配为4M