IAR for AVR vs constant strings

Привет,

Имеем 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

Всего хорошего.

Reply to
Alexey Krasnov
Loading thread data ...
Reply to
Vladimir Vassilevsky

Привет, 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> И никак иначе.

Так и пришлось сделать. Но жутко неудобно, когда таких строк много.

Всего хорошего.

Reply to
Alexey Krasnov

Всем привет!

Alexey Krasnov писал 17.12.2003:

AK> То есть, строка лежит во FLASH, но в стартапе копируется в SRAM. Как AK> этого избежать ? Необходимо, чтобы строка лежала только во FLASH и AK> нигде более. Что-то типа ключика --strings_in_flash_only

есть такой ключик: --string_literals_in_flash

Reply to
Askold Volkov

Привет, 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 \

Всего хорошего.

Reply to
Alexey Krasnov

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.