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

 
 
> как поместить константу в память программ?, в IAR
Karl
сообщение Sep 6 2005, 10:57
Сообщение #1


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

Группа: Свой
Сообщений: 179
Регистрация: 4-02-05
Пользователь №: 2 429



Как сделать так, чтобы при инициализации константа не переписывалась в ОЗУ, а когда надо, сразу читалась из флэшь?
В Options/ C/C++ compiler / Code убрал гарочку "Place stringliterals and cjnstants in initialized RAM" - компилятор стал выдавать ошибку

Error[e16]: Segment NEAR_C (size: 0x4 align: 0) is too long for segment definition. At least 0x4 more bytes needed. The
problem occurred while processing the segment placement command
"-Z(DATA)NEAR_C=_..X_EXT_ROM_BASE:+_..X_EXT_ROM_SIZE", where at the moment of placement the available
memory ranges were "DATA:10ff--1"
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
MALLOY2
сообщение Sep 6 2005, 11:26
Сообщение #2


Знающий
****

Группа: Validating
Сообщений: 838
Регистрация: 31-01-05
Пользователь №: 2 317



Никак. Но можно это обмануть и зделать такую вот запись

__flash static unsigned char strLOGO[] = "Hello Word"

а скажем PutChar обьявить :

unsigned int PutChar (__flash unsigned char * data , unsigned int len );

а вызывать

PutChar (strLOGO,sizeof(strLOGO));

далее можно немного упростить создав такой вот макрос

#define MPutChar(data) PutChar (data,sizeof(data));

и в итоге имеем в программе

MputChar(strLOGO);

Одyим словом нельзя в ИАРе зделать так PutChar("Hell word") строки ВСЕГДА распологаются в RAM
Go to the top of the page
 
+Quote Post
BVU
сообщение Sep 6 2005, 13:53
Сообщение #3


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

Группа: Свой
Сообщений: 1 301
Регистрация: 30-11-04
Из: Россия, Н.Новгород
Пользователь №: 1 264



Цитата(MALLOY2 @ Sep 6 2005, 15:26)
Никак. Но можно это обмануть и зделать такую вот запись

__flash static unsigned char strLOGO[]  = "Hello Word"

а скажем PutChar  обьявить :

unsigned int PutChar (__flash unsigned char * data , unsigned int len );

а вызывать

PutChar (strLOGO,sizeof(strLOGO));

далее можно немного упростить создав такой вот макрос

#define MPutChar(data)  PutChar (data,sizeof(data));

и в итоге имеем в программе

MputChar(strLOGO);

Одyим словом нельзя в ИАРе зделать так PutChar("Hell word") строки ВСЕГДА распологаются в RAM
*


Вопрос к MALLOY2 :
а если написать модуль вывода строки на ASM и объявить строку, тоже на ASM, как IAR отреагирует на такой подход?


--------------------
Не корысти ради, не в целях наживы, а во исполнение велений души!
Go to the top of the page
 
+Quote Post



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

 


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


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