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

 
 
 
Reply to this topicStart new topic
> Как хранить временные постоянные значения не в eeprom, а во flash?
Simok
сообщение Jan 29 2009, 20:50
Сообщение #1


Участник
*

Группа: Новичок
Сообщений: 16
Регистрация: 29-01-09
Из: Moscow
Пользователь №: 44 153



Привет, проблема такова: Я храню некоторые нужные мне настройки в eeprom, естественно я знаю с какими адресами мне работать, чтобы считать,записать нужные мне данные, а можно ли нужные мне данные записывать во flash и в нужный мне момент считать их или изменить? Если я знаю объем свободного места и нужные мне адреса в eeprom, то как работать с Flash? Ведь я когда пишу программу и компилирую ее, то объем прошивки естественно каждый раз разный, а это ведь место программы во flash. Как можно использовать флеш и под основную программу и под временные данные, но которые не стираются при сбросе процессора. Может не все так сложно, как кажется?

Камень AT90CAN128, флеш там приличная, а потому нет смысла использовать eeprom, да и запись в еепром очень медленная. 4кб за 50 сек. Работаю в CodeVision.
Go to the top of the page
 
+Quote Post
Aesthete Animus
сообщение Jan 29 2009, 21:14
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 222
Регистрация: 9-06-07
Пользователь №: 28 317



Если вообще стоит делать так, как говорите... первое что приходит в голову, это разместить основной код в boot-секции (она там, afair, довольно большая, afair 8кб). А все остально место таким образом оставить под данные.
Go to the top of the page
 
+Quote Post
Simok
сообщение Jan 29 2009, 21:36
Сообщение #3


Участник
*

Группа: Новичок
Сообщений: 16
Регистрация: 29-01-09
Из: Moscow
Пользователь №: 44 153



Цитата(Aesthete Animus @ Jan 30 2009, 00:14) *
Если вообще стоит делать так, как говорите... первое что приходит в голову, это разместить основной код в boot-секции (она там, afair, довольно большая, afair 8кб). А все остально место таким образом оставить под данные.


Не прокатит, у меня в формате hex 33кб файл, и это еще не все, текст для дисплея отнимает много места, потому мне нужно то, что выше я написал. Внешняя память также отметается по понятным причинам.
Go to the top of the page
 
+Quote Post
ddiimmaa
сообщение Jan 29 2009, 22:38
Сообщение #4


Участник
*

Группа: Validating
Сообщений: 27
Регистрация: 12-12-08
Из: Ижевск
Пользователь №: 42 419



Цитата(Simok @ Jan 30 2009, 00:50) *
Как можно использовать флеш и под основную программу и под временные данные, но которые не стираются при сбросе процессора. Может не все так сложно, как кажется?

Камень AT90CAN128, флеш там приличная, а потому нет смысла использовать eeprom, да и запись в еепром очень медленная. 4кб за 50 сек. Работаю в CodeVision.


Значит так у меня такой же камень! Так вот во влэш там писать из программы нельзя, вот. Разве что из загрузчика после ребута.


А так читайте батенька pgmspace. И всё. RTFM как говорится.
Go to the top of the page
 
+Quote Post
Simok
сообщение Jan 29 2009, 23:05
Сообщение #5


Участник
*

Группа: Новичок
Сообщений: 16
Регистрация: 29-01-09
Из: Moscow
Пользователь №: 44 153



Цитата(ddiimmaa @ Jan 30 2009, 01:38) *
Значит так у меня такой же камень! Так вот во влэш там писать из программы нельзя, вот. Разве что из загрузчика после ребута.


А так читайте батенька pgmspace. И всё. RTFM как говорится.


Это как так? Почему же нельзя то )) Значит зря пишут в литературе, типа "копируем строку из еепром во флеш"....? Просто в литературе нет адресов расположения свободной емкости и как узнать эти адреса к конкретному камню, а копировать можно и еще как, а вот перезаписать сама себя основная программа не может, согласен, для это и есть область загрузчика под эти нужды.

Сообщение отредактировал Simok - Jan 29 2009, 23:06
Go to the top of the page
 
+Quote Post
singlskv
сообщение Jan 29 2009, 23:08
Сообщение #6


дятел
*****

Группа: Свой
Сообщений: 1 681
Регистрация: 13-05-06
Из: Питер
Пользователь №: 17 065



Цитата(ddiimmaa @ Jan 30 2009, 01:38) *
Значит так у меня такой же камень! Так вот во влэш там писать из программы нельзя, вот. Разве что из загрузчика после ребута.
А разместить процедуры записи содержащие инструкции SPM в памяти бутлодыря и вызывать их нельзя?
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Jan 30 2009, 06:56
Сообщение #7


Гуру
******

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



Цитата(Simok @ Jan 30 2009, 01:05) *
Просто в литературе нет адресов расположения свободной емкости и как узнать эти адреса к конкретному камню,
А зачем вам произвольные адреса и вся доступная емкость? Вам нужно 8К? Вот и отсчитайте эти 8К от конца памяти. А вот как указать CV конкретные получившиеся адреса или область памяти - поздравляю! Вы прошли игру "CV" до конца. Нет линкера - нет возможности управления размещением. Точнее есть, но через такой зад... Может в 2.хх что-то и поменялость, но в 1.хх это было нетривиальной задачей


--------------------
На любой вопрос даю любой ответ
"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
Simok
сообщение Jan 30 2009, 09:42
Сообщение #8


Участник
*

Группа: Новичок
Сообщений: 16
Регистрация: 29-01-09
Из: Moscow
Пользователь №: 44 153



Цитата(Сергей Борщ @ Jan 30 2009, 09:56) *
А зачем вам произвольные адреса и вся доступная емкость? Вам нужно 8К? Вот и отсчитайте эти 8К от конца памяти.


А это вариант. В голову не пришло. Тогда можно и указывать конкретные адреса, и работать с участком Flash, как с eeprom, верно?

Цитата(Сергей Борщ @ Jan 30 2009, 09:56) *
А вот как указать CV конкретные получившиеся адреса или область памяти - поздравляю! Вы прошли игру "CV" до конца. Нет линкера - нет возможности управления размещением. Точнее есть, но через такой зад... Может в 2.хх что-то и поменялость, но в 1.хх это было нетривиальной задачей


К сожалению CodeVision хоть и второй версии, и конечно есть новшества от версии 1.25, но этого не достаточно, а перевести проект в AVR-GCC не вариант.
Go to the top of the page
 
+Quote Post
Simok
сообщение Jan 30 2009, 13:44
Сообщение #9


Участник
*

Группа: Новичок
Сообщений: 16
Регистрация: 29-01-09
Из: Moscow
Пользователь №: 44 153



Тем не менее есть у кого пример записи и чтения во Flash хотя бы на ассемблерной вставке?
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Jan 30 2009, 18:47
Сообщение #10


Гуру
******

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



Цитата(Simok @ Jan 30 2009, 15:44) *
Тем не менее есть у кого пример записи и чтения во Flash хотя бы на ассемблерной вставке?
Чтение - обращение по указателю (указатель на данные с модификатором __flash). Описание указателей - в любой книжке по С (напрмер, K&R "язык программирования Си", второе издание). Пример записи на асме - в даташите.


--------------------
На любой вопрос даю любой ответ
"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
Simok
сообщение Jan 30 2009, 21:23
Сообщение #11


Участник
*

Группа: Новичок
Сообщений: 16
Регистрация: 29-01-09
Из: Moscow
Пользователь №: 44 153



Цитата(Сергей Борщ @ Jan 30 2009, 21:47) *
Чтение - обращение по указателю (указатель на данные с модификатором __flash). Описание указателей - в любой книжке по С (напрмер, K&R "язык программирования Си", второе издание). Пример записи на асме - в даташите.


Все понял, по указателю нет проблем, решается легко. Спасибо!
Go to the top of the page
 
+Quote Post

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

 


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


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