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

 
 
> STM32F4, Объявление массива байт, Как сделать правильнее?
BlackOps
сообщение Jul 29 2013, 07:16
Сообщение #1


Знающий
****

Группа: Свой
Сообщений: 618
Регистрация: 7-06-08
Из: USSR
Пользователь №: 38 121



Мне нужен например массив ис 65 536 байт, когда я объявляю массив из более чем 256 байт, при его инициализации байты которые идут после 256-го равны нулю.
Переполнен я так понял стэк. В линкер скрипте пробовал увеличить размер стека (кстати там размер не 256 был), не помогло.

Пробовал объявить как:
static uint8_t iobuf[65536];

вне функции main(), тоже не помогло.

подскажите как правильнее поступить?

кстати, прикрепил линкер скрипт который использую если что.
Прикрепленные файлы
Прикрепленный файл  STM32F4xxxG_rom.zip ( 2.11 килобайт ) Кол-во скачиваний: 25
 


--------------------
Нажми на кнопку - получишь результат, и твоя мечта осуществится
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Сергей Борщ
сообщение Jul 29 2013, 08:56
Сообщение #2


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



QUOTE (BlackOps @ Jul 29 2013, 09:16) *
Мне нужен например массив ис 65 536 байт, когда я объявляю массив из более чем 256 байт, при его инициализации байты которые идут после 256-го равны нулю.
Покажите инициализацию.
QUOTE (BlackOps @ Jul 29 2013, 09:16) *
Переполнен я так понял стэк. В линкер скрипте пробовал увеличить размер стека (кстати там размер не 256 был), не помогло.
По каким признакам вы так поняли? Я предпочитаю стек размещать в конце ОЗУ чтобы стек можг расти до тех пор, пока не займет все свободное ОЗУ.
QUOTE (BlackOps @ Jul 29 2013, 09:16) *
кстати, прикрепил линкер скрипт который использую если что.

Конструкция "} > ram AT > ram" бессмысленна. Типа "масло масляное", "эпопическая эпопея", "сенсорный датчик" и т.п. Достаточно просто "} > ram", но причина явно не здесь, а в инициализации.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
BlackOps
сообщение Jul 29 2013, 09:02
Сообщение #3


Знающий
****

Группа: Свой
Сообщений: 618
Регистрация: 7-06-08
Из: USSR
Пользователь №: 38 121



устройство: stm32f407vgt6

Цитата(Сергей Борщ @ Jul 29 2013, 13:56) *
Покажите инициализацию.


Код
for(j=0;j<=255;j++)
{
    iobuf[j]=0xcc;
}


только вместо 255 если например другое число побольше то все элементы заполняются только до индекса 255, остальные элементы массива 0.


Цитата(Сергей Борщ @ Jul 29 2013, 13:56) *
По каким признакам вы так поняли? Я предпочитаю стек размещать в конце ОЗУ чтобы стек можг расти до тех пор, пока не займет все свободное ОЗУ.

а не могли бы подсказать где найти нормальный стандартный линкер скрипт? Или если можно поделится?


--------------------
Нажми на кнопку - получишь результат, и твоя мечта осуществится
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 19th July 2025 - 12:08
Рейтинг@Mail.ru


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