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

 
 
> AVR IAR C flash
NickSmith
сообщение Oct 8 2012, 07:34
Сообщение #1


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

Группа: Участник
Сообщений: 84
Регистрация: 21-10-09
Пользователь №: 53 117



Добрый день!

Никак не могу одолеть задачку.
В си возможна конструкция

Код
char *pm="Words";


Т.е указатель на это слово, по которому можно ссылаться на это слово.

Попробовал реализовать это в IARavr

Код
__flash char * __flash pm="Words";

Ругается на не соответствие типов памяти. Т.е компилятор говорит, что я пытаюсь тип char скормить __flash char

Если сделать так:

Код
__flash char *pm="Words";

В таком случае все естествен пихается в озу, но такая конструкция проходит.

P.S.
Понятно, что проблему можно решить через массив, но хочется разобраться именно с такой конструкцией.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Xenia
сообщение Oct 8 2012, 08:10
Сообщение #2


Гуру
******

Группа: Модератор FTP
Сообщений: 4 479
Регистрация: 20-02-08
Из: Москва
Пользователь №: 35 237



Пишите так:
Код
__flash char pm[]="Words";

а звёздочков не надо. sm.gif
Go to the top of the page
 
+Quote Post
NickSmith
сообщение Oct 8 2012, 09:15
Сообщение #3


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

Группа: Участник
Сообщений: 84
Регистрация: 21-10-09
Пользователь №: 53 117



Цитата(Xenia @ Oct 8 2012, 12:10) *
Пишите так:
Код
__flash char pm[]="Words";

а звёздочков не надо. sm.gif

Так я же писал, что это и ежу понятно.
Хочется с описанной мной ситуацией разобраться. Как инициализировать переменную.
Как я понимаю, компилятору не нравится, что я пихаю в переменную во flash данные не из flash
как компилятору это объяснить.
Go to the top of the page
 
+Quote Post
Xenia
сообщение Oct 8 2012, 10:40
Сообщение #4


Гуру
******

Группа: Модератор FTP
Сообщений: 4 479
Регистрация: 20-02-08
Из: Москва
Пользователь №: 35 237



Цитата(NickSmith @ Oct 8 2012, 13:15) *
Как я понимаю, компилятору не нравится, что я пихаю в переменную во flash данные не из flash
как компилятору это объяснить.

Вы бы лучше людям объяснили, чего вы хотите. А то жалуетесь на компилятор, а сами толком не можете сказать, что вам от него надо.

Если конструкция
Код
__flash char pm[]="Words";

понятна не только компилятору, но и ежу, то чем она вас не устраивает? Вы бы сперва толково объяснили, где (в ОЗУ или во флеше?) вы хотите разместить строку "Words" и где (снова в ОЗУ или во флеше?) хотите разместить на нее указатель. Когда вам предлагают решение, в котором строка находится во флеше, а указатель в ОЗУ, то воротите нос. А что вам нравится?

Существуют 4 возможности:
1) Строка во флеше, указатель в ОЗУ.
2) Строка во флеше, указатель тоже во флеше.
3) Строка в ОЗУ, указатель во флеше.
4) Строка в ОЗУ, указатель тоже в ОЗУ.
Вариант № 1 вы отвергли за понятность ежу, остаются еще 3 варианта. Вас как, по частям дожимать или сами признаетесь, чего вам надо?
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 1st July 2025 - 14:04
Рейтинг@Mail.ru


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