跳转至

开机声音使用指南

前言

概述

本文为实现开机声音,提供了基本的功能函数和boot命令行,用户可以根据具体应用进行配置。

产品版本

与本文档相对应的产品版本如下。

产品名称

产品版本

Hi3519D

V500

Hi3516D

V500

Hi3516C

V608

Hi3516C

V610

读者对象

本文档(本指南)主要适用于以下工程师:

  • 技术支持工程师
  • 软件开发工程师

符号约定

在本文中可能出现下列标志,它们所代表的含义如下。

符号

说明

表示如不避免则将会导致死亡或严重伤害的具有高等级风险的危害。

表示如不避免则可能导致死亡或严重伤害的具有中等级风险的危害。

表示如不避免则可能导致轻微或中度伤害的具有低等级风险的危害。

用于传递设备或环境安全警示信息。如不避免则可能会导致设备损坏、数据丢失、设备性能降低或其它不可预知的结果。

“须知”不涉及人身伤害。

对正文中重点信息的补充说明。

“说明”不是安全警示信息,不涉及人身、设备及环境伤害信息。

修改记录

修订记录累积了每次文档更新的说明。最新版本的文档包含以前所有文档版本的更新内容。

文档版本

发布日期

修改说明

00B01

2026-06-30

第1次临时版本发布。

开机声音使用指南

概述

开机声音实现boot启动之后加载kernel之前将音频Raw数据推送到音频输出设备的功能。开机声音功能提供boot命令行和boot函数调用两种使用方式。

boot命令行

  • startao:启动AO设备

    参数:数据地址、数据大小、采样率、声道个数、音量。

    # help startao
    startao - startao   - open interface of ao device.
        - startao [addr size sample_rate channel_num volume]
    Usage:
    startao
    args: [addr size sample_rate channel_num volume]
        -<addr> : address of raw audio data, align by 32Byte
        -<size>: size of raw audio data, align by 32Byte
        -<sample_rate>: sample rate of raw audio data
        -<channel_num>: channel number of raw audio data
        -<volume>: audio output volume, default:0dB, range:0 ~ 6dB
    
    • <addr>:音频数据所存放在内存的地址;

      注意:音频数据存放地址,建议选择OS和MMZ之外的内存。或者根据实际的业务场景选择MMZ中某一段开机时未使用的地址。

    • <size>:音频数据大小。

    • <sample_rate>:音频数据采样率。
    • <channel_num>:声道个数。
    • <volume>:输出音量大小。
  • stopao:关闭AO设备

    参数:无

    # help stopao
    stopao - stopao   - close interface of ao device.
    

boot函数

以下函数可供用户在boot下编码调用:

  • startao

    int start_ao(unsigned int addr, unsigned int size, audio_sample_rate sample_rate, unsigned int chn_cnt, unsigned int vol)
    
  • stopao

    int stop_ao(void)
    

相关代码

该开机声音只提供了基本的功能函数,用户可以根据具体应用进行配置(以Hi3519DV500为例)。

├── cmd
│   ├── cmd_ao.c
│   └── Makefile-otproduct
├── include
│   ├── configs
│   │   └── hi3519dv500.h
│   └──audio_ao.h
├── Makefile-otproduct
├── product
│   ├── audio
│   │   ├── acodec
│   │   │   └── v751
│   │   │       ├── acodec.c
│   │   │       ├── acodec_def.h
│   │   │       ├── acodec.h
│   │   │       └── Makefile
│   │   └── ao
│   │       ├── ao.c
│   │       ├── arch
│   │       │   ├── common
│   │       │   │   ├── aiao_hal_common.c
│   │       │   ├── hi3519dv500
│   │       │   │   ├── aiao_hal.c
│   │       │   │   ├── amp.c
│   │       │   │   └── include
│   │       │   │       ├── aiao_hal.h
│   │       │   │       └── mpp_board.h
│   │       │   └── include
│   │       │       ├── aiao_hal_common.h
│   │       │       └── aiao_reg.h
│   │       ├── include
│   │       │   ├── amp.h
│   │       │   ├── ao.h
│   │       │   ├── audio_common_aio.h
│   │       │   └── type.h
│   │       └── Makefile

说明:

对于芯片Hi3516DV500,上述hi3519dv500.h文件使用hi3516dv500.h文件代替。

命令行示例

下面举例进行介绍。

  • 启动并配置AO设备

    startao 0x82000000 0x18000 48000 2 0

  • 关闭AO设备

    stopao

注意事项

  • 开机声音功能默认不开启,如需要该功能,请将boot源码目录下的include/configs/hi35xx.h文件中的定义CONFIG_AUDIO_ENABLE打开(默认是关闭状态/* Open it as you need #define CONFIG_AUDIO_ENABLE */),然后重新编译boot。
  • 开机声音只支持从芯片内置acodec的DAC输出,如果开启了开机声音功能,则代码中配置将I2S连接到芯片内置的acodec。如果有外部静音电路,需要将静音电路禁掉。
  • 开机声音仅支持16bit精度的音频Raw数据,支持单声道和双声道数据,如果是双声道数据必须是左右声道交织的数据。
  • 仅支持对音频Raw数据进行单次播放,不支持循环播放。
  • 采样率支持8kHz、11.025kHz、12kHz、16kHz、22.05kHz、24kHz、32kHz、44.1kHz、48kHz。
  • 建议烧写音频数据到OS以外,MMZ靠后的DDR地址。
  • 音量范围[0, 6]dB可调。
  • startao传入的数据地址及长度须是32Byte对齐。
  • boot默认开启了dcache,在调用startao之前建议增加刷新dcache的操作,命令为dcache flush,否则可能会导致播放杂音。