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

 
 
 
Reply to this topicStart new topic
> Обрашение к массиву лежащему во флеши
igorenja
сообщение Jul 17 2009, 07:04
Сообщение #1


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

Группа: Свой
Сообщений: 130
Регистрация: 8-08-08
Из: Новосибирск
Пользователь №: 39 488



Доброе время суток, господа форумчане.
Есть массив во флеши, объявленный как:

CODE
#define Temp_Tab_Size 22
#pragma location="FLASH"
const signed int temper_tab[Temp_Tab_Size][2]={ {-5 ,456490 },
{0 ,347080 },
{5 ,266250 },
{10 ,205990 },
{15 ,160690 },
{20 ,126310 },
{25 ,100000 },
{30 , 79593 },
{35 , 63796 },
{40 , 51467 },
{45 , 41887 },
{50 , 34272 },
{55 , 28081 },
{60 , 23141 },
{65 , 19211 },
{70 , 16027 },
{75 , 13421 },
{80 , 11288 },
{85 , 9532 },
{90 , 8082 },
{95 , 6891 },
{100 , 5898 } };


Далее в программе встречается код:

CODE
for(i=0;i<Temp_Tab_Size-1;i++)
{

if(T<(temper_tab[i][1]))
{
T=temper_tab[i][0];
return;
}
}


на который компилятор матерится: Fatal Error[e72]: Segment FLASH must be defined in a segment definition option (-Z, -b or -P)

причём экспериментально установлено что не нравится ему именно сравнение переменных T и temper_tab[x][y]
В чём может быть причина?
Go to the top of the page
 
+Quote Post
Dog Pawlowa
сообщение Jul 17 2009, 07:11
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 702
Регистрация: 14-07-06
Пользователь №: 18 823



Цитата(igorenja @ Jul 17 2009, 10:04) *
на который компилятор матерится: Fatal Error[e72]: Segment FLASH must be defined in a segment definition option (-Z, -b or -P)
...
В чём может быть причина?

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


--------------------
Уходя, оставьте свет...
Go to the top of the page
 
+Quote Post
igorenja
сообщение Jul 17 2009, 07:28
Сообщение #3


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

Группа: Свой
Сообщений: 130
Регистрация: 8-08-08
Из: Новосибирск
Пользователь №: 39 488



Цитата(Dog Pawlowa @ Jul 17 2009, 14:11) *
Причину Вам назвал компилятор, у Вас сложности с переводом?
Сегмент, в который Вы хотите положить таблицу, не определен.


То что он мне написал я понимаю. Еще раз обращаю внимание на то что компилятору не нравится сравнение... Если его заремировать, и просто обратиться к переменной то компилятор не ругается!!!!!

Вот так работает
CODE
for(i=0;i<Temp_Tab_Size-1;i++)
{

if(1)
{
T=temper_tab[i][0];
return;
}
}
Go to the top of the page
 
+Quote Post
Dog Pawlowa
сообщение Jul 17 2009, 07:37
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 2 702
Регистрация: 14-07-06
Пользователь №: 18 823



Цитата(igorenja @ Jul 17 2009, 10:28) *
То что он мне написал я понимаю. Еще раз обращаю внимание на то что компилятору не нравится сравнение...

У Вас какая-то странная логика человека, которому нечего делать.


--------------------
Уходя, оставьте свет...
Go to the top of the page
 
+Quote Post
Непомнящий Евген...
сообщение Jul 17 2009, 08:02
Сообщение #5


Знающий
****

Группа: Свой
Сообщений: 771
Регистрация: 16-07-07
Из: Волгодонск
Пользователь №: 29 153



Цитата(igorenja @ Jul 17 2009, 11:28) *
То что он мне написал я понимаю. Еще раз обращаю внимание на то что компилятору не нравится сравнение... Если его заремировать, и просто обратиться к переменной то компилятор не ругается!!!!!


Это статическая переменная. Если вы ее не используете, она выкидывается компилятором и линкер ее не получает (соответственно, не ругается на FLASH)

Кстати, вот так не пробовали: __flash int a[] = {1, 2, 3}; ?

Или вам надо в конкретное место разместить этот массив?
Go to the top of the page
 
+Quote Post
igorenja
сообщение Jul 17 2009, 08:04
Сообщение #6


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

Группа: Свой
Сообщений: 130
Регистрация: 8-08-08
Из: Новосибирск
Пользователь №: 39 488



2 Dog Pawlowa Можно вас попросить об одолжении, не вставлять свои бестолковые посты в этом топике.

Сообщение отредактировал igorenja - Jul 17 2009, 08:05
Go to the top of the page
 
+Quote Post
Dog Pawlowa
сообщение Jul 17 2009, 08:09
Сообщение #7


Гуру
******

Группа: Свой
Сообщений: 2 702
Регистрация: 14-07-06
Пользователь №: 18 823



Цитата(igorenja @ Jul 17 2009, 11:04) *
2 Dog Pawlowa Можно вас попросить об одолжении, не вставлять свои бестолковые посты в этом топике.

Можете. Только если удалите слово "бестолковые" из своего сообщения.

Кстати, а для какого контроллера творите? А судя по
Код
signed int ....{-5, 456490 }

Вы еще долго будете свой температурный датчик запускать с такими подходами.


--------------------
Уходя, оставьте свет...
Go to the top of the page
 
+Quote Post
igorenja
сообщение Jul 17 2009, 08:20
Сообщение #8


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

Группа: Свой
Сообщений: 130
Регистрация: 8-08-08
Из: Новосибирск
Пользователь №: 39 488



Цитата(Непомнящий Евгений @ Jul 17 2009, 15:02) *
Это статическая переменная. Если вы ее не используете, она выкидывается компилятором и линкер ее не получает (соответственно, не ругается на FLASH)

Кстати, вот так не пробовали: __flash int a[] = {1, 2, 3}; ?

Или вам надо в конкретное место разместить этот массив?


Мне не важно в каком месте будет лежать массив.
На предложенную Вами запись появляется ошибка:
Error[Pe077]: this declaration has no storage class or type specifier

Цитата(Dog Pawlowa @ Jul 17 2009, 15:09) *
Можете. Только если удалите слово "бестолковые" из своего сообщения.

Кстати, а для какого контроллера творите? А судя по
Код
signed int ....{-5, 456490 }

Вы еще долго будете свой температурный датчик запускать с такими подходами.


2Dog Pawlowa

Неповерите..... уже дапустил....

цитата из IAR C-C++ Development Guide for ARM.pdf

signed int 32 bits -2^31 to 2^(31-1)

SAM7X

Сообщение отредактировал igorenja - Jul 17 2009, 08:21
Go to the top of the page
 
+Quote Post
Непомнящий Евген...
сообщение Jul 17 2009, 08:27
Сообщение #9


Знающий
****

Группа: Свой
Сообщений: 771
Регистрация: 16-07-07
Из: Волгодонск
Пользователь №: 29 153



Цитата(igorenja @ Jul 17 2009, 12:20) *
На предложенную Вами запись появляется ошибка:


Сорри, почему то решил, что код для АВР. Возможно ли так написать для ARM я не знаю.
Go to the top of the page
 
+Quote Post

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

 


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


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