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

 
 
 
Reply to this topicStart new topic
> only initialized variables can be placed into program memory area!
777777
сообщение Apr 25 2008, 07:53
Сообщение #1


Профессионал
*****

Группа: Участник
Сообщений: 1 091
Регистрация: 25-07-07
Из: Саратов
Пользователь №: 29 357



Этот варнинг выдается на такую строчку:

static const BT_PROC BtProc[] PROGMEM = { BtSetZero, BtUp, BtDown, BtRes1, BtMode, BtDigit, BtExit, BtRes2 };

причем только при наличии ключа -xc++. Нельзя ли как-нибудь от него избавиться? Код генерируется правильный.
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Apr 25 2008, 09:11
Сообщение #2


Гуру
******

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



Цитата(777777 @ Apr 25 2008, 10:53) *
причем только при наличии ключа -xc++. Нельзя ли как-нибудь от него избавиться? Код генерируется правильный.
Бага!. Там же написано, что не ругается на определенные в progmem.h типы. Думаю, надо посмотреть, как они там объявлены и объявить BT_PROC по аналогии. Не проверял.


--------------------
На любой вопрос даю любой ответ
"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
YKonstantin
сообщение Apr 25 2008, 10:19
Сообщение #3


Участник
*

Группа: Новичок
Сообщений: 28
Регистрация: 7-11-06
Пользователь №: 22 038



Цитата(777777 @ Apr 25 2008, 10:53) *
Этот варнинг выдается на такую строчку:

static const BT_PROC BtProc[] PROGMEM = { BtSetZero, BtUp, BtDown, BtRes1, BtMode, BtDigit, BtExit, BtRes2 };

причем только при наличии ключа -xc++. Нельзя ли как-нибудь от него избавиться? Код генерируется правильный.


Рабочий пример :

extern const u8 KeyboardMap[KEYBOARD_ROW_COUNT][KEYBOARD_COL_COUNT] PROGMEM;
const u8 KeyboardMap[KEYBOARD_ROW_COUNT][KEYBOARD_COL_COUNT] = {
{KEY_UNKNOWN, KEY_IDX_ENTER},
{KEY_IDX_UP, KEY_UNKNOWN},
{KEY_IDX_DOWN, KEY_UNKNOWN}
};

Как видите, лечится предварительным обьявлением как "extern".
Go to the top of the page
 
+Quote Post
koluna
сообщение Dec 6 2011, 14:38
Сообщение #4


Профессионал
*****

Группа: Участник
Сообщений: 1 040
Регистрация: 3-01-07
Пользователь №: 24 061



Вообще плохо, конечно sad.gif
Кто знает, поправили или нет в последних версиях?

С extern некрасиво получается.
Так же лечится заменой __attribute__((__progmem__)) на __attribute__((section(".progmem.data"))).


--------------------
Благодарю заранее!
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Dec 6 2011, 18:15
Сообщение #5


Гуру
******

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



QUOTE (n_bogoyavlensky @ Dec 6 2011, 17:38) *
Кто знает, поправили или нет в последних версиях?
В самой последней идет работа над адресными пространствами. Там этого шаманства с PROGMEM и pgm_read_xxx уже не будет. В предпоследней вроде бы убрали.


--------------------
На любой вопрос даю любой ответ
"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

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

 


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


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