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

 
 
> Не лезет массив во внешнюю память
ViKo
сообщение Feb 8 2011, 09:25
Сообщение #1


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



В тестовом проекте Keil создаю массив во внешней памяти
Код
uint16_t ExtDpyBuf[0x9600] __attribute__((at(0x64000000)));

и больше ничего не требуется - ни scatter файл править, ни свойства в визарде менять. Код генерируется. Хотя нигде даже не упоминается про этот регион.
В рабочем проекте задаю тот же массив, меняю свойства, и - никак! Выдает
Цитата
... Error: L6407E: Sections of aggregate size 0x6128 bytes could not fit into .ANY selector(s).

Уменьшаю массив до 0x2600 - пожалуйста! Все влазит.
Что делать? Кто съел мою память?

upd. Еще добавлю - если атрибут уберу, компилируется. Потому что не используется.
upd2. Еще. Имею 2 Project Targets - ROM и RAM. Во втором разделил ОЗУ на две части для кода и данных. Вот именно в нем и не работает. А в ROM - влазит. Как будто для инициализации массива используется память?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
sonycman
сообщение Feb 9 2011, 10:09
Сообщение #2


Любитель
*****

Группа: Свой
Сообщений: 1 864
Регистрация: 20-08-06
Из: Тольятти
Пользователь №: 19 695



Приведите скаттер файл, каким образом у вас регионы объявлены.
И список секций, генерируемых компилятором.

А для чего код в ОЗУ располагаете?
Go to the top of the page
 
+Quote Post
ViKo
сообщение Feb 9 2011, 10:28
Сообщение #3


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Цитата(sonycman @ Feb 9 2011, 12:09) *
Приведите скаттер файл, каким образом у вас регионы объявлены.
И список секций, генерируемых компилятором.
А для чего код в ОЗУ располагаете?

Обычный
Код
; *************************************************************
; *** Scatter-Loading Description File generated by uVision ***
; *************************************************************

LR_IROM1 0x20000000 0x0000D000  {; load region size_region
  ER_IROM1 0x20000000 0x0000D000  {; load address = execution address
   *.o (RESET, +First)
   *(InRoot$$Sections)
   .ANY (+RO)
  }
  RW_IRAM1 0x2000D000 0x00003000  {; RW data
   .ANY (+RW +ZI)
  }
}

Располагаю в ОЗУ, экономлю ресурс флэш.
А вот из map куски
Код
Load Region LR$$.ARM.__AT_0x64000000 (Base: 0x64000000, Size: 0x00000000, Max: 0x00006c00, ABSOLUTE)
    Execution Region ER$$.ARM.__AT_0x64000000 (Base: 0x64000000, Size: 0x00006c00, Max: 0x00006c00, ABSOLUTE, UNINIT)
    Base Addr    Size         Type   Attr      Idx    E Section Name        Object
    0x64000000   0x00006c00   Zero   RW          214    .ARM.__AT_0x64000000  sledk_main.o

     Code (inc. data)   RO Data    RW Data    ZI Data      Debug  
     18166       1432       7206        516      37700     328496   Grand Totals
     18166       1432       7206        264      37700     328496   ELF Image Totals (compressed)
     18166       1432       7206        264          0          0   ROM Totals

  Total RO  Size (Code + RO Data)                25372 (  24.78kB)
    Total RW  Size (RW Data + ZI Data)             38216 (  37.32kB)
    Total ROM Size (Code + RO Data + RW Data)      25636 (  25.04kB)

Тут какая-то декомпрессия присутствует...??
Go to the top of the page
 
+Quote Post
ar__systems
сообщение Feb 9 2011, 13:48
Сообщение #4


self made
****

Группа: Свой
Сообщений: 855
Регистрация: 7-03-09
Из: Toronto, Canada
Пользователь №: 45 795



Цитата(ViKo @ Feb 9 2011, 05:28) *
Располагаю в ОЗУ, экономлю ресурс флэш.


А в ОЗУ этот кусок откуда переписываться будет?
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- ViKo   Не лезет массив во внешнюю память   Feb 8 2011, 09:25
- - ViKo   Буду смотреть, что творится с массивом во внешней ...   Feb 8 2011, 18:45
- - sergeeff   Уважаемый ViKo! Вы нам так все рассказываете,...   Feb 8 2011, 19:07
|- - ViKo   Цитата(sergeeff @ Feb 8 2011, 21:07) Что ...   Feb 8 2011, 20:01
- - andrewlekar   Попробуйте-ка для вашего массива поставить атрибут...   Feb 9 2011, 05:12
|- - ViKo   Цитата(andrewlekar @ Feb 9 2011, 07:12) П...   Feb 9 2011, 08:47
- - sergeeff   Цитата(ViKo @ Feb 8 2011, 13:25) В тестов...   Feb 9 2011, 06:56
- - sonycman   А почему бы не задать регион для внешней памяти и ...   Feb 9 2011, 07:50
- - sergeeff   Почти уверен, что ошибка линкера. И, скорее всего,...   Feb 9 2011, 08:10
|- - ViKo   Цитата(ar__systems @ Feb 9 2011, 15:48) А...   Feb 9 2011, 14:26
- - ViKo   В тестовом примере путем урезания памяти КодLR_IRO...   Feb 9 2011, 12:08
- - ViKo   Попытался в тестовом проекте найти, обращается ли ...   Feb 9 2011, 16:51
- - ViKo   Нужно понять, инициализируется ли массив - глобаль...   Feb 10 2011, 09:54


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

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 06:50
Рейтинг@Mail.ru


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