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

 
 
 
Reply to this topicStart new topic
> Fatal Error[e89]: Too much object code produced (more than 0x1000 bytes) for this package
CAHTA_1939
сообщение Sep 19 2007, 13:57
Сообщение #1


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

Группа: Участник
Сообщений: 142
Регистрация: 11-08-07
Пользователь №: 29 713



что за нафиг?
микруха msp430f149

у меня в файле находится 4 массива
Код
const char ... [8][124];

и функция для обрашения к одному из массивов...

так вот, если я компилю , когда функция обрашается к одному из первых 2ух массивов, то все ОК, а если компилю с обрашением к 3ему или дальше, то выдает ощибку...

помогите плиз
заранее спасибо!
Go to the top of the page
 
+Quote Post
rezident
сообщение Sep 19 2007, 14:43
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Может я чего-то не понимаю но 4 массива по 8*124=992 байта это уже 3968 байт. А у 149 только 2кБайт Flash.
Go to the top of the page
 
+Quote Post
CAHTA_1939
сообщение Sep 19 2007, 15:03
Сообщение #3


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

Группа: Участник
Сообщений: 142
Регистрация: 11-08-07
Пользователь №: 29 713



Цитата(rezident @ Sep 19 2007, 18:43) *
Может я чего-то не понимаю но 4 массива по 8*124=992 байта это уже 3968 байт. А у 149 только 2кБайт Flash.


но я же его сделал как const. он разве не во Флеше должен сохранять?

но тогда. почему ошибка не вываливается когда я обрашаюсь к первым 2ум массивам?

ошибчка! 8*128 массивы =)

при линковке с print_arr(krevedko); или print_arr(logomai); данной ошибки нет, а при
print_arr(baba); или print_arr(logomai2); ошибка возникает =((

_mass.h:
Код
#ifndef __MASS_H
#define __MASS_H

//128x64 pixel
const char krevedko[8][128]={};
const char logomai[8][128]={};
const char baba[8][128]={};
const char logomai2[8][128]={};
#endif


функция для работы с массивами...
Код
void print_arr(const char (*ptr)[128])
{    
   char *ptr_p;
   ptr_p=(char *) ptr;
  
   int p;                            
   int c;                            

   for(p=0; p<8; p++)                  
   {  
      for(c=0; c<64; c++)              
      {
         WriteDataL(*ptr_p++);
      }
      for(c=64; c<128; c++)            
      {
         WriteDataR(*ptr_p++);
      }
}
}


понять не пому в чем трабла?

может IAR не дает такой объем скомпилить? в About написаноо IAR Embedded Workbench IDE

Сообщение отредактировал CAHTA_1939 - Sep 19 2007, 15:05
Go to the top of the page
 
+Quote Post
rezident
сообщение Sep 19 2007, 15:08
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



У меня тоже ошибка, 2кБ не Flash, а ОЗУ.
Какая именно у вас версия?
Go to the top of the page
 
+Quote Post
CAHTA_1939
сообщение Sep 19 2007, 15:17
Сообщение #5


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

Группа: Участник
Сообщений: 142
Регистрация: 11-08-07
Пользователь №: 29 713



Цитата(rezident @ Sep 19 2007, 19:08) *
У меня тоже ошибка, 2кБ не Flash, а ОЗУ.
Какая именно у вас версия?


Код
IAR Assembler for MSP430
V3.42A/W32 (3.42.1.9)
C:\Program Files\IAR Systems\Embedded Workbench 4.0\430\bin\a430.exe
07.12.2006 10:18:04, 651264 bytes

IAR C/C++ Compiler for MSP430
V3.42A/W32 [Kickstart] (3.42.1.3)
C:\Program Files\IAR Systems\Embedded Workbench 4.0\430\bin\icc430.exe
07.12.2006 14:39:24, 6164480 bytes



если const тоже записывается в ОЗУ, тогда как массивы данных оставить во Флеше? мне их даже изменять то не надо, на то я и const поставил...
Go to the top of the page
 
+Quote Post
rezident
сообщение Sep 19 2007, 15:29
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Я не очень большой знаток Си, но у меня вызывает сомнение аргумент вызова функции print_arr
const char (*ptr)[128] это случайно не массив указателей?
Go to the top of the page
 
+Quote Post
CAHTA_1939
сообщение Sep 19 2007, 15:54
Сообщение #7


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

Группа: Участник
Сообщений: 142
Регистрация: 11-08-07
Пользователь №: 29 713



Цитата(rezident @ Sep 19 2007, 19:29) *
Я не очень большой знаток Си, но у меня вызывает сомнение аргумент вызова функции print_arr
const char (*ptr)[128] это случайно не массив указателей?


это указатель на массив. взял из книжки...

причиной ощибки была Kickstart версия IAR'а ... вот только не пойму, почему 0х1000 byte , ограничение же стоит на 4Кбайта ... странно короче, или я чтото не догоняю...

установил Evaluation версию и трабла ушла =)
Go to the top of the page
 
+Quote Post
zltigo
сообщение Sep 19 2007, 16:12
Сообщение #8


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(CAHTA_1939 @ Sep 19 2007, 18:54) *
я чтото не догоняю...

Шестандцатиричную арифметику, очевидно sad.gif


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
CAHTA_1939
сообщение Sep 19 2007, 16:31
Сообщение #9


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

Группа: Участник
Сообщений: 142
Регистрация: 11-08-07
Пользователь №: 29 713



так const хранится где? во флеше?
Go to the top of the page
 
+Quote Post
SanvaldYV
сообщение Sep 19 2007, 19:45
Сообщение #10


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

Группа: Свой
Сообщений: 125
Регистрация: 21-03-07
Из: Санкт-Петербург
Пользователь №: 26 371



Цитата(CAHTA_1939 @ Sep 19 2007, 20:31) *
так const хранится где? во флеше?


Хранится то во флэш, но ограничение компилятора в кикстарт версии IAR на размер кода 4Кб (0x1000=4096), вот он и не давал компилить.
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 16th June 2025 - 06:07
Рейтинг@Mail.ru


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