全志科技
直播中

万物死

8年用户 1277经验值
擅长:MEMS/传感技术
私信 关注
[问答]

请问如何通过文件管理系统调用音频文件?

XR806的文件管理系统是littlefs或spifs,不像fatfs可以直接进行文件传输,请问如何通过文件管理系统调用音频文件?

回帖(1)

贾熹

2021-12-29 14:39:46

  • 因为XR806的文件管理系统是littlefs或者spifs,所以需要在PC本地把文件打包成littlefs文件系统格式,否则无法识别。打包工具是SDK下的tools/fs_img_tools/mklittlefs。
  • 上一步打包好的文件,如果通过“section”的方式打包进img镜像会有64byte的偏移,所以需要用“raw_bin”的方式进行打包。



  • 打包音频文件
    新建一个文件夹,如data(名称随意),并把目标音频文件存放仅该目录下,值得注意的是因为audio_demo中默认播放的的是music文件夹下的音频文件,所以音频文件也必须放在music文件夹下。



    .
    ├── data
    │   └── music
    │       └── 1.mp3
    └── mklittlefs


    打包该文件夹使用如下命令



    ./mklittlefs -c data/ -d 0 -b 4096 -p 256 -s 524288 lfs.bin


    -c后接目标路径。
    -d后接debug等级,默认为0,不用修改。
    -b后接block的大小,littlefs默认为4096,一般情况下不用修改。
    -p后接page大小,默认为256,不用修改。
    -s后接littlefs镜像大小,和在make menuconfig中的配置必须一致。
    lfs.bin是生成的镜像文件名。名称随意,但一般是.bin后缀。

    make menuconfig配置
    进入图形化界面配置,并选中filesystem support后选项配置如下。推荐勾选上flash filesystem image pack support,编译代码后会自动把lfs.bin打包到镜像,否则只能在phoenixMC的调试界面中擦除flash地址1572864(0x18000)后的内容,并手动把lfs.bin写进flash。其中步骤1所说的镜像大小524288就是由2048*1024-1572864而来。



    --- filesystem support

  •    flash filesystem image pack support
    FileSystem Type Select (LittleFS)  --->
    (1572864) little filesystem start address
    (4096) little filesystem block size
    (128) little filesystem block count


    修改工程cfg文件配置
    把前面打包好的lfs.bin复制到project/demo/audio_demo/image/xr806目录下,并修改目录下的image.cfg。



    {
        "magic" : "AWIH",
        "version" : "0.5",
        "image" : {"max_size": "1532K"},
        "section" :[
        {"id": "0xa5ff5a00", "bin" :"boot_40M.bin",  "cert": "null",  "flash_offs": "0K",  "sram_offs": "0x00230000", "ep": "0x00230101", "attr":"0x1"},
        {"id": "0xa5fe5a01", "bin" :"app.bin",  "cert": "null",  "flash_offs": "71K",  "sram_offs": "0x00201000", "ep": "0x00201101", "attr":"0x1"},
        {"id": "0xa5fd5a02", "bin" :"app_xip.bin",  "cert": "null",  "flash_offs": "104K",  "sram_offs": "0xffffffff", "ep": "0xffffffff", "attr":"0x2"},
        {"id": "0xa5fa5a05", "bin" :"wlan_bl.bin",  "cert": "null",  "flash_offs": "1075K",  "sram_offs": "0xffffffff", "ep": "0xffffffff", "attr":"0x1"},
        {"id": "0xa5f95a06", "bin" :"wlan_fw.bin",  "cert": "null",  "flash_offs": "1078K",  "sram_offs": "0xffffffff", "ep": "0xffffffff", "attr":"0x1"},
        {"id": "0xa5f85a07", "bin" :"sys_sdd_40M.bin",  "cert": "null",  "flash_offs": "1103K",  "sram_offs": "0xffffffff", "ep": "0xffffffff", "attr":"0x1"},
        {}
        ],
        "raw_bin" :[
        {"bin" :"lfs.bin",  "flash_offs": "1536K"},
        {}
        ]
    }


    编译完成后编译烧录即可。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分