реклама на сайте
подробности

 
 
> Проблема вывода длинных PCM-аудио фрагментов на LPC 2366
lavrik
сообщение Jan 18 2015, 19:12
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 34
Регистрация: 16-01-15
Пользователь №: 84 635



Здравствуйте форумчане! Прошу вашей помощи!

Столкнулся с проблемой при выводе звука на LPC 2366: в контроллере 32 кб оперативки, 256 флэш-памяти; звуковые фрагменты в hex-виде лежат в массиве. Если массив меньше 32 кб - все компилируется и играет, но если больше 32 кб - компилятор выдает ошибку переполнения, т.е. при работе с массивом программа помещает его полностью в оперативку. Но главная загвоздка в том, что даже если не использовать массив больше 32 кб, а просто объявить его, то компилятор все-равно ругается точно так же. Мне подсказали, что надо организовать буфер в оперативке. Однако все равно непонятно, как записать сэмпл звуковой, допустим в 64 кб, но чтобы компилятор принял его? Другими словами как ещё, кроме массива, можно записать эти самые 64 кб в код?

Работаю в KEIL, при компиляции выдает вот что:

compiling main.c...
linking...
.\1.axf: Error: L6406E: No space in execution regions with .ANY selector matching main.o(.data).
.\1.axf: Error: L6407E: Sections of aggregate size 0x10c54 bytes could not fit into .ANY selector(s).

Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Golikov A.
сообщение Jan 18 2015, 22:18
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454



сделайте С файл
создайте в нем массив
добавьте в кеил
тыкните на файл правой кнопкой мыши в кейле-прожект-визарде, и там есть пунктик options, а в нем Memory Asigned там можно выбрать куда его класть, запихайте его в ром. Объявления массива как const тоже должно помочь.

можно и ручками, но через визард удобнее... А вы далеко от правильного пути, вам файлик линкера с текстом непохожим ни на что человеческое курочить надо...
Go to the top of the page
 
+Quote Post
mantech
сообщение Jan 19 2015, 07:31
Сообщение #3


Гуру
******

Группа: Участник
Сообщений: 2 219
Регистрация: 16-08-12
Из: Киров
Пользователь №: 73 143



Цитата(Golikov A. @ Jan 19 2015, 01:18) *
сделайте С файл
кнопкой мыши в кейле-прожект-визарде


Если там есть такое дело - можно попробовать, у меня в иаре визард какой-то убогий код делал - ничего не работало, плюнул, решил ручками... Дольше, конечно, но понял, как все устроено biggrin.gif



Цитата(Golikov A. @ Jan 19 2015, 01:18) *
А вы далеко от правильного пути, вам файлик линкера с текстом непохожим ни на что человеческое курочить надо...


Там, в кейле, действительно все так запущено??

Цитата(Golikov A. @ Jan 19 2015, 01:18) *
Объявления массива как const тоже должно помочь.


Это дельная мысль, че-то я ее упустил biggrin.gif Попробуйте объявить массив, скажем 64к, в виде константного, если вменяемый компилятор, он может поместить его в ром автоматом...
Go to the top of the page
 
+Quote Post
esaulenka
сообщение Jan 19 2015, 15:24
Сообщение #4


Профессионал
*****

Группа: Свой
Сообщений: 1 032
Регистрация: 13-03-08
Из: Маськва
Пользователь №: 35 877



Цитата(mantech @ Jan 19 2015, 10:31) *
Там, в кейле, действительно все так запущено??

"там в кейле" необходимо и достаточно объявить этот несчастный массив как const и ничего больше не трогать.

А "мегоудобные визарды" ничерта не работают, если хранить во флеше настройки, загрузчик и прочие нестандартные извращения.
Впрочем, по статьям на кейл.ком конфигурация линкера пишется легко и непринуждённо, главное - понимать, чего хочется :-)


--------------------
Тут обсуждается творческий порыв, а не соответствие каким-либо стандартам ©
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 21st July 2025 - 18:00
Рейтинг@Mail.ru


Страница сгенерированна за 0.01398 секунд с 7
ELECTRONIX ©2004-2016