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

 
 
> как поместить константу в память программ?, в 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
Karl
сообщение Sep 6 2005, 11:29
Сообщение #3


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

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



Ясно.
Go to the top of the page
 
+Quote Post



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

 


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


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