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

 
 
 
Reply to this topicStart new topic
> использование __eeprom
Eugen79
сообщение Jul 23 2007, 15:24
Сообщение #1





Группа: Новичок
Сообщений: 9
Регистрация: 23-07-07
Пользователь №: 29 316



Доброго времени суток.

Значит так, понадобилось мне хранить настройки девайса в EEPROMе, для этого, значит, объявил переменную

Код
__eeprom struct storage_data TDataStreamArch;


однако, при компиляции мой IAR говорит, шо типа не знаю я, что это за __eeprom такой.

Порылся в статьях, там сказано, что данная фишка (keyword __eeprom) есть только во второй версии компилятора.

У меня IAR 4.40A.

Что я еще не донастроил в проекте или чего не хватает в консерватории smile.gif ?

Заранее благодарен за ответы...
Go to the top of the page
 
+Quote Post
IgorKossak
сообщение Jul 23 2007, 21:46
Сообщение #2


Шаман
******

Группа: Модераторы
Сообщений: 3 064
Регистрация: 30-06-04
Из: Киев, Украина
Пользователь №: 221



1. Для AVR это обычно Project->Options...->C/C++ Compiler->Language->Allow IAR extensions
2. Если это компилятор для ARM, то где Вы там нашли eeprom?
Go to the top of the page
 
+Quote Post
Eugen79
сообщение Jul 24 2007, 05:26
Сообщение #3





Группа: Новичок
Сообщений: 9
Регистрация: 23-07-07
Пользователь №: 29 316



Упс, так это значит, что таким образом я не смогу использовать внешнюю EEPROM для сохранения настроек?

Камень у меня Sharp LH79524...

Чего-то я не допонял наверно...

Или надо по-другому искать решение?

Заранее благодарен за ответЫ!
Go to the top of the page
 
+Quote Post
IgorKossak
сообщение Jul 24 2007, 06:56
Сообщение #4


Шаман
******

Группа: Модераторы
Сообщений: 3 064
Регистрация: 30-06-04
Из: Киев, Украина
Пользователь №: 221



Для записи во внешнюю еепром (в зависимости от производителя и типа интерфейса) существует специальная процедура, как, например, и для флеш.
ИАР не может знать этих тонкостей. Для него работа только с ОЗУ является очевидной. Случай с AVR совсем другой, там еепром встроенная и одинаковая по принципу работы во всём семействе. Отсюда для удобства и возникло расширение и поддержка библиотекой.
Драйвер для конкретной внешней памяти придётся Вам самому писать либо где-то найти готовый.
Go to the top of the page
 
+Quote Post
Eugen79
сообщение Jul 24 2007, 07:00
Сообщение #5





Группа: Новичок
Сообщений: 9
Регистрация: 23-07-07
Пользователь №: 29 316



Спасибо за информацию.

В моем случае флеш-память будет располагаться в одном адресном пространстве с оперативкой (за счет применения флеш-контроллера), так что для работы с ней мне просто будет необходимо указать адрес памяти и работать с ним, как с обычной переменной.

Вроде так.
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Jul 24 2007, 11:00
Сообщение #6


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(Eugen79 @ Jul 24 2007, 10:00) *
В моем случае флеш-память будет располагаться в одном адресном пространстве с оперативкой (за счет применения флеш-контроллера), так что для работы с ней мне просто будет необходимо указать адрес памяти и работать с ним, как с обычной переменной.
на чтение - да. Вы можете объявить свой сегмент в этих адресах и разместить в этом сегменте переменные (не забыв квалиффикатор __no_init()). Но для записи во внешнюю флеш необходимы некоторые телодвижения, поэтому запись придется делать вручную. И чтобы компилятор отлавливал ошибочные "прямые" обращения на запись, переменные в этой внешней памяти надо объявлять с модификатором const.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post

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

 


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


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