80532
SDKコンフィグで、以下Audio再生と録音の２つを有効にすると、「Error: Out of
memory」のコンパイルエラーが発生してしまいます。うまくメモリ内に収める方法はあったりしますでしょうか？

  * EXAMPLES_AUDIO_DUAL_PLAYER
  * EXAMPLES_AUDIO_RECORDER

以下、make結果

```

    admini@ubuntu:~/work/spresense/sdk$ make
    make[1]: ディレクトリ '/home/admini/work/spresense/nuttx' に入ります
    Create .version
    Create version.h
    LN: include/arch/board to /home/admini/work/spresense/nuttx/boards/arm/cxd56xx/spresense/include
    LN: include/arch/chip to arch/arm/include/cxd56xx
    LN: arch/arm/src/chip to arch/arm/src/cxd56xx
    LN: /home/admini/work/spresense/nuttx/drivers/platform to /home/admini/work/spresense/nuttx/boards/arm/cxd56xx/drivers
    
    （中略）
    
    make[3]: 'libboard.a' は更新済みです.
    make[3]: ディレクトリ '/home/admini/work/spresense/nuttx/boards/arm/cxd56xx/common' から出ます
    LD: nuttx
    /home/admini/work/spresense/nuttx/staging/libapps.a(audio_recorder_main.o):(.rodata+0x6c): multiple definition of `MemMgrLite::FixedAreaFences'
    /home/admini/work/spresense/nuttx/staging/libapps.a(audio_dual_players_main.o):(.rodata+0x90): first defined here
    /home/admini/work/spresense/nuttx/staging/libapps.a(audio_recorder_main.o):(.rodata+0x0): multiple definition of `MemMgrLite::MemoryPoolLayouts'
    /home/admini/work/spresense/nuttx/staging/libapps.a(audio_dual_players_main.o):(.rodata+0x0): first defined here
    /home/admini/work/spresense/nuttx/staging/libapps.a(audio_recorder_main.o):(.data+0x1): multiple definition of `MemMgrLite::pool_num'
    /home/admini/work/spresense/nuttx/staging/libapps.a(audio_dual_players_main.o):(.data+0x1): first defined here
    /home/admini/work/spresense/nuttx/staging/libapps.a(audio_recorder_main.o):(.data+0x0): multiple definition of `MemMgrLite::layout_no'
    /home/admini/work/spresense/nuttx/staging/libapps.a(audio_dual_players_main.o):(.data+0x0): first defined here
    /home/admini/work/spresense/nuttx/staging/libapps.a(audio_recorder_main.o):(.data+0x4): multiple definition of `MemMgrLite::static_pools'
    /home/admini/work/spresense/nuttx/staging/libapps.a(audio_dual_players_main.o):(.data+0x4): first defined here
    /home/admini/work/spresense/nuttx/staging/libapps.a(audio_recorder_main.o):(.bss+0x5b8f8): multiple definition of `MemMgrLite::static_pools_block'
    /home/admini/work/spresense/nuttx/staging/libapps.a(audio_dual_players_main.o):(.bss+0x4ed20): first defined here
    /home/admini/work/spresense/nuttx/staging/libapps.a(audio_recorder_main.o):(.rodata+0x6c): multiple definition of `MsgqPoolDefs'
    /home/admini/work/spresense/nuttx/staging/libapps.a(audio_dual_players_main.o):(.rodata+0x90): first defined here
    arm-none-eabi-ld: Error: Out of memory
    make[2]: *** [Makefile:185: nuttx] エラー 1
    make[2]: ディレクトリ '/home/admini/work/spresense/nuttx/arch/arm/src' から出ます
    make[1]: *** [tools/Makefile.unix:464: pass2] エラー 2
    make[1]: ディレクトリ '/home/admini/work/spresense/nuttx' から出ます
    make: *** [Makefile:99: all] エラー 2
    
```
CC BY-SA 4.0
2021-08-02T01:16:31.733
80528
2021-08-02T02:33:41.493
47303
question
spresense
SDKコンフィグでAudio再生と録音の２つを有効にすると「Error: Out of memory」のコンパイルエラーが発生
<https://developer.sony.com/develop/spresense/docs/sdk_developer_guide_ja.html#_audio_player_example>

の

Audio & Logical sensor example と他の複数のサンプルは同時に選択できません。複数選択するとコンパイルエラーが出ます。

にあるように、サンプルを複数有効にすることができないようです。

録音と再生を切り替えながら動かすサンプルはないようですが、Arduinoのコードを参考にすると、memoryのLayoutを

<https://github.com/sonydevworld/spresense-arduino-
compatible/tree/master/Arduino15/packages/SPRESENSE/hardware/spresense/1.0.0/libraries/MemoryUtil/memutil>

のものに置き換えて、再生のときは、

const NumLayout layout_no = MEM_LAYOUT_PLAYER;

を、録音のときは、

const NumLayout layout_no = MEM_LAYOUT_RECORDER;

に切り替えて使うと良い気がします。

Arduinoのが参考になりそうです。

<https://github.com/sonydevworld/spresense-arduino-
compatible/tree/master/Arduino15/packages/SPRESENSE/hardware/spresense/1.0.0/libraries/Audio/examples/application/rec_play>
CC BY-SA 4.0
2021-08-02T02:33:41.493
80532
2021-08-02T02:33:41.493
32281
80528
answer