Есть ли ограничение на количество файлов wav, открытых в mbed?

#c #mbed #lpc

#c #мбед #lpc #mbed

Вопрос:

У меня есть приложение , в котором я хочу открыть до 27 различных.файлы wav на ARM MBED LPC1768 для последующего вывода на плате кодека. В настоящее время я смог открывать и воспроизводить файлы на mbed (файлы хранятся на карте micro-sd). Однако у меня возникла проблема с одновременным открытием более 11 файлов.

Вызов, который я использую для открытия любого заданного файла, выглядит следующим образом:

 FILE* mywav1 = fopen("/sd/mydir/SoundDecoder_second/01.wav","rb");
  

Я выполнил тесты, в которых, если я попытаюсь открыть, скажем, 20 файлов таким образом, я буду тестировать каждое открытие с:

         if(mywav1 == NULL){
            printf("Cannot Open mywav1nr");
        }
  

Я могу открыть только 11 файлов, остальные 9 вернут значение NULL.

Я проверил, и, насколько я вижу, это не имеет никакого отношения к соглашениям об именовании — все это связано с количеством файлов, которые физически могут быть открыты в отдельных файловых потоках.

Существует ли какое-то ограничение на количество файлов, которые могут быть открыты в файловом потоке одновременно в библиотеке mbed sdfilesystem?

Комментарии:

1. Да, есть. FILE* это очень большой объект, и он очень быстро съедает вашу оперативную память.

2. Вам действительно нужно открывать их вместе? Разве вы не можете открывать каждый файл по своему усмотрению, когда это необходимо?

3. Привет @MatteoItalia, к сожалению, мне тогда нужно было бы открывать и закрывать файлы, продолжая отправлять аудиоданные на мою плату кодека в процедуре прерывания. Открытие файла предотвратит переход кода к процедуре прерывания (насколько я помню).

Ответ №1:

При чтении кода библиотеки FATFileSystem ограничений нет, если только у вас не заканчивается память. Это может быть так.

Обратите внимание, что Mbed OS 5 имеет встроенную поддержку для монтирования SD-карт и файловой системы FAT, поэтому вам, вероятно, следует использовать это поверх библиотеки SDFileSystem. Последний не обновлялся в течение 2 лет, в то время как новые библиотеки получают регулярные обновления.

Комментарии:

1. Привет, Ян, спасибо за указатель — позволят ли мне эти новые библиотеки открывать более 11 файлов .wav одновременно?

2. Вероятно, нет, потому что я подозреваю, что у него заканчивается память. Используйте статистику кучи в Mbed OS, чтобы увидеть текущее использование памяти.

3. Привет, Ян — позволит ли мне использовать LittleFileSystem открыть больше. файлы wav сразу?