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

 
 
> avr-gcc, строка символов во FLASH, Как заставить компилятор строки символов размещать во FLASH?
impatt
сообщение Nov 8 2006, 06:14
Сообщение #1


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

Группа: Validating
Сообщений: 169
Регистрация: 10-11-04
Из: Челябинск
Пользователь №: 1 088



Насколько я понимаю, gcc строки символов помещает в ОЗУ.Например:
Код
puts ("test\n");

превращается в примерно следующее:
Код
unsigned char name[] = "test\n";
puts(name);

где name во второй строке есть указатель на область ОЗУ, где находится строка.
Теперь вопрос: как сделать так, чтобы gcc в местах, подобных первому примеру, помещал строки во FLASH и брал указатели соответственно.
Вариант, когда все строки перечисляются в начале программы с атрибутом __attribute__((section(".flash"))), не годятся, ибо неудобно. Точнее, годятся, но неудобно и потому не годятся.

Есть мнения ?
Спасибо.

Сообщение отредактировал impatt - Nov 8 2006, 06:15
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
PaulS
сообщение Nov 8 2006, 20:24
Сообщение #2





Группа: Новичок
Сообщений: 9
Регистрация: 28-01-05
Пользователь №: 2 265



А что, в GCC модификаторы __flash и __eeprom не работают?
Ужас какой sad.gif

Может так попробовать:
__no_init __eeprom unsigned int count_SMSinput;

или даже лучше так:
typedef unsigned char __flash FDATA;
typedef unsigned char __eeprom EDATA;
чтобы потом вот так:
FDATA AT_prefix[] = "AT";

И с указателями должно быть все ОК. Наверное так надо:
FDATA power_on[] = "POWER ON";
FDATA *ptrF;
а потом что-то типа:
while(*ptrF) *ptrA++ = *ptrF++;

В ИАРе все работает.
Завтра на работу прийду если не забуту, проверю в GCC

Сообщение отредактировал PaulS - Nov 8 2006, 20:28
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- impatt   avr-gcc, строка символов во FLASH   Nov 8 2006, 06:14
- - prottoss   Цитата(impatt @ Nov 8 2006, 13:14) ...Теп...   Nov 8 2006, 06:57
- - jorikdima   Это совсем недавно обсуждалось. На самом деле вы п...   Nov 8 2006, 06:58
|- - haker_fox   Цитата(jorikdima @ Nov 8 2006, 14:58) Это...   Nov 8 2006, 07:17
||- - impatt   Цитата(haker_fox @ Nov 8 2006, 10:17) imp...   Nov 8 2006, 08:09
||- - aesok   Цитата(impatt @ Nov 8 2006, 12:09) Боюсь,...   Nov 8 2006, 18:22
|||- - impatt   Цитата(aesok @ Nov 8 2006, 21:22) GCC это...   Nov 9 2006, 03:48
|||- - aesok   Цитата(impatt @ Nov 9 2006, 07:48) Вероят...   Nov 9 2006, 16:32
|||- - prottoss   Цитата(aesok @ Nov 9 2006, 23:32) Цитата(...   Nov 9 2006, 16:44
||||- - aesok   Цитата(prottoss @ Nov 9 2006, 20:44) Почи...   Nov 9 2006, 17:26
||||- - prottoss   Цитата(aesok @ Nov 10 2006, 00:26) Религи...   Nov 9 2006, 17:37
|||- - impatt   Цитата(aesok @ Nov 9 2006, 19:32) Я писал...   Nov 10 2006, 03:04
|||- - prottoss   Цитата(impatt @ Nov 10 2006, 10:04) Может...   Nov 10 2006, 12:24
||- - haker_fox   Цитата(impatt @ Nov 8 2006, 16:09) Цитата...   Nov 9 2006, 07:17
|- - impatt   Цитата(jorikdima @ Nov 8 2006, 09:58) На ...   Nov 8 2006, 07:53
- - klen   Назовите хотябы 3 фишек в которых avr-gcc уступает...   Nov 10 2006, 16:29
- - prottoss   Цитата(klen @ Nov 10 2006, 23:29) Назовит...   Nov 10 2006, 16:48


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

 


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


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