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

 
 
> Массивы в Keil, Есть ли ограничение на размер?
-= Александр =-
сообщение Nov 17 2011, 11:34
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 123
Регистрация: 15-10-07
Из: Санкт-Петербург
Пользователь №: 31 370



Есть LPC2478 и 32 мб внешней памяти. Хочу создать массив на весь ее размер.

#define ARRAY_SIZE 0x1000000
volatile unsigned short int Array[ARRAY_SIZE] __attribute__((at(0xA0000000)));

Вроде не ругается, но в процессе работы вылазят странные глюки. Может нельзя такой размер массива делать?

Сразу вопрос в догонку - если делать так:
volatile unsigned short int * FIFO_Array=(unsigned short int *)0xA0000000;
То как застолбить следующие байты под массив, чтоб компилер туда ничего не запихнул?


--------------------
Ниндзя - круче всех. Они умеют ходить по воде, делить на ноль и угадывать шаффл в АйПоде.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
-= Александр =-
сообщение Nov 17 2011, 12:10
Сообщение #2


Частый гость
**

Группа: Свой
Сообщений: 123
Регистрация: 15-10-07
Из: Санкт-Петербург
Пользователь №: 31 370



Сразу после инициализации пишется/читается весь диапазон без проблем. А уже в процессе работы там обнаруживается всякий мусор. Вот пытаюсь понять откуда он там берется. Может там вообще какие-то переменные висят или кусок стека попадает...

Сообщение отредактировал -= Александр =- - Nov 17 2011, 12:11


--------------------
Ниндзя - круче всех. Они умеют ходить по воде, делить на ноль и угадывать шаффл в АйПоде.
Go to the top of the page
 
+Quote Post
kovigor
сообщение Nov 17 2011, 12:27
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 5 273
Регистрация: 30-03-10
Пользователь №: 56 295



Цитата(-= Александр =- @ Nov 17 2011, 16:10) *
Сразу после инициализации пишется/читается весь диапазон без проблем. А уже в процессе работы там обнаруживается всякий мусор. Вот пытаюсь понять откуда он там берется. Может там вообще какие-то переменные висят или кусок стека попадает...


Плата самодельная ? Не думаю, что дело в стеке. Откройте .map - файл и посмотрите, как распределена память и куда пишется стек. Вообще, прохождение простейшего теста вроде записи/чтения бегущего нуля - еще не показатель исправности памяти. Я лично видел множество случаев, когда динамическое ОЗУ проходило простейшие тесты, но при настоящей работе сбоило.
Про скаттер см. материалы у Кейла на сайте (www.keil.com; введите там в строке поиска слово "scatter"). Но едва ли дело в этом. Сначала нужно добиться устойчивой работы без скаттера. Благо, для не слишком сложных проектов обычно можно обойтись и без него ...

P.S. А вы в курсе, что своим массивом вы забили все 32 МБ ? Если да, то указали ли вы компилятору, что объем этого ОЗУ - 32 МБ ?
Go to the top of the page
 
+Quote Post



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

 


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


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