Do you have a question? Post it now! No Registration Necessary
Subject
- Posted on
IAR for AVR vs constant strings
- 12-17-2003
- Alexey Krasnov
December 17, 2003, 12:07 pm

Привет,
Имеем IAR AVR 2.28A. Фрагмент программы:
typedef char __flash const * LPCSTR;
typedef struct {
BYTE bt;
LPCSTR str;
} SDummy;
const __flash SDummy = {
0x02,
"Просто строка"
};
Не собирается, ибо:
Error[Pe144]:a value of type "char *" cannot be used to initialize an
entity of type "CHAR const __flash *"
То есть, строка лежит во FLASH, но в стартапе копируется в SRAM. Как
этого избежать ? Необходимо, чтобы строка лежала только во FLASH и
нигде более. Что-то типа ключика --strings_in_flash_only
Всего хорошего.
Имеем IAR AVR 2.28A. Фрагмент программы:
typedef char __flash const * LPCSTR;
typedef struct {
BYTE bt;
LPCSTR str;
} SDummy;
const __flash SDummy = {
0x02,
"Просто строка"
};
Не собирается, ибо:
Error[Pe144]:a value of type "char *" cannot be used to initialize an
entity of type "CHAR const __flash *"
То есть, строка лежит во FLASH, но в стартапе копируется в SRAM. Как
этого избежать ? Необходимо, чтобы строка лежала только во FLASH и
нигде более. Что-то типа ключика --strings_in_flash_only
Всего хорошего.
--
Отправлено через сервер Форумы@mail.ru - http://talk.mail.ru
Отправлено через сервер Форумы@mail.ru - http://talk.mail.ru

IAR for AVR vs constant strings
Wed Dec 17 2003 15:07, Alexey Krasnov wrote to All:
AK> Имеем IAR AVR 2.28A. Фрагмент программы:
AK> typedef char __flash const * LPCSTR;
AK> typedef struct {
AK> BYTE bt;
AK> LPCSTR str;
AK> } SDummy;
AK> const __flash SDummy = {
AK> 0x02,
AK> "Просто строка"
AK> };
AK> Hе собирается, ибо:
AK> Error[Pe144]:a value of type "char *" cannot be used to initialize an
AK> entity of type "CHAR const __flash *"
Стандартная фича IAR.
Если хочется строки во flash, то писать надо так:
static flash u8 str[] = "This string is in the flash";
_flash SDummy { 0x12, str };
И никак иначе.
VLV
"Добрый дятел занят делом - ремонтирует дупло"
AK> Имеем IAR AVR 2.28A. Фрагмент программы:
AK> typedef char __flash const * LPCSTR;
AK> typedef struct {
AK> BYTE bt;
AK> LPCSTR str;
AK> } SDummy;
AK> const __flash SDummy = {
AK> 0x02,
AK> "Просто строка"
AK> };
AK> Hе собирается, ибо:
AK> Error[Pe144]:a value of type "char *" cannot be used to initialize an
AK> entity of type "CHAR const __flash *"
Стандартная фича IAR.
Если хочется строки во flash, то писать надо так:
static flash u8 str[] = "This string is in the flash";
_flash SDummy { 0x12, str };
И никак иначе.
VLV
"Добрый дятел занят делом - ремонтирует дупло"

Re: IAR for AVR vs constant strings
Привет, 17 декабря 2003 г., 16:40:08, ты писал(а):
AK>> Имеем IAR AVR 2.28A. Фрагмент программы:
AK>> typedef char __flash const * LPCSTR;
AK>> typedef struct {
AK>> BYTE bt;
AK>> LPCSTR str;
AK>> } SDummy;
AK>> const __flash SDummy = {
AK>> 0x02,
AK>> "Просто строка"
AK>> };
AK>> Hе собирается, ибо:
AK>> Error[Pe144]:a value of type "char *" cannot be used to initialize an
AK>> entity of type "CHAR const __flash *"
VV> Стандартная фича IAR.
VV> Если хочется строки во flash, то писать надо так:
VV> static flash u8 str[] = "This string is in the flash";
VV> _flash SDummy { 0x12, str };
VV> И никак иначе.
Так и пришлось сделать. Но жутко неудобно, когда таких строк много.
Всего хорошего.
AK>> Имеем IAR AVR 2.28A. Фрагмент программы:
AK>> typedef char __flash const * LPCSTR;
AK>> typedef struct {
AK>> BYTE bt;
AK>> LPCSTR str;
AK>> } SDummy;
AK>> const __flash SDummy = {
AK>> 0x02,
AK>> "Просто строка"
AK>> };
AK>> Hе собирается, ибо:
AK>> Error[Pe144]:a value of type "char *" cannot be used to initialize an
AK>> entity of type "CHAR const __flash *"
VV> Стандартная фича IAR.
VV> Если хочется строки во flash, то писать надо так:
VV> static flash u8 str[] = "This string is in the flash";
VV> _flash SDummy { 0x12, str };
VV> И никак иначе.
Так и пришлось сделать. Но жутко неудобно, когда таких строк много.
Всего хорошего.
--
Отправлено через сервер Форумы@mail.ru - http://talk.mail.ru
Отправлено через сервер Форумы@mail.ru - http://talk.mail.ru

Re: IAR for AVR vs constant strings
Всем привет!
Alexey Krasnov писал 17.12.2003:
AK> То есть, строка лежит во FLASH, но в стартапе копируется в SRAM. Как
AK> этого избежать ? Необходимо, чтобы строка лежала только во FLASH и
AK> нигде более. Что-то типа ключика --strings_in_flash_only
есть такой ключик: --string_literals_in_flash
Alexey Krasnov писал 17.12.2003:
AK> То есть, строка лежит во FLASH, но в стартапе копируется в SRAM. Как
AK> этого избежать ? Необходимо, чтобы строка лежала только во FLASH и
AK> нигде более. Что-то типа ключика --strings_in_flash_only
есть такой ключик: --string_literals_in_flash
--
Аскольд Волков, Новосибирск. http://www.inp.nsk.su/~volkov /
Аскольд Волков, Новосибирск. http://www.inp.nsk.su/~volkov /

Re: IAR for AVR vs constant strings
Привет, 18 декабря 2003 г., 7:50:10, ты писал(а):
AK>> То есть, строка лежит во FLASH, но в стартапе копируется в
AK>> SRAM. Как
AK>> этого избежать ? Необходимо, чтобы строка лежала только во FLASH и
AK>> нигде более. Что-то типа ключика --strings_in_flash_only
AV> есть такой ключик: --string_literals_in_flash
О! Спасибо. Только непонятно почему он кладет эти строки в farflash,
хотя в опциях выставлено:
--cpu=m128 \
--memory_model=small \
Всего хорошего.
AK>> То есть, строка лежит во FLASH, но в стартапе копируется в
AK>> SRAM. Как
AK>> этого избежать ? Необходимо, чтобы строка лежала только во FLASH и
AK>> нигде более. Что-то типа ключика --strings_in_flash_only
AV> есть такой ключик: --string_literals_in_flash
О! Спасибо. Только непонятно почему он кладет эти строки в farflash,
хотя в опциях выставлено:
--cpu=m128 \
--memory_model=small \
Всего хорошего.
--
Отправлено через сервер Форумы@mail.ru - http://talk.mail.ru
Отправлено через сервер Форумы@mail.ru - http://talk.mail.ru
Site Timeline
- » <none>
- — Next thread in » Microcontrollers (Russian)
-
- » Эта музыка будет вечной
- — Previous thread in » Microcontrollers (Russian)
-
- » По моему это гениально
- — Newest thread in » Microcontrollers (Russian)
-
- » (PDF) Essentials of Anatomy & Physiology 2nd Ed by Kenneth Saladin
- — The site's Newest Thread. Posted in » Electronics (Polish)
-