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

 
 
> Прошивка Flash и EEPROM одним файлом hex или elf
Twin_by
сообщение May 25 2015, 05:26
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 32
Регистрация: 3-09-11
Из: Минск
Пользователь №: 66 982



Здравствуйте!
У меня такая вот ситуация. Подключаю библиотеку eeprom.h. Инициализирую переменную в eeprom памяти строчкой uint8_t var EEMEM = 15; . После сборки создается файл с расширением eep который заливается в МК отдельно. Интересен такой вопрос можно ли прошить flash и eeprom память avr используя только один файл hex или elf? Как это сделать: что добавить, что убрать? От библиотеки eeprom.h не хотелось бы отказываться (хорошая библиотека, удобная)

Сообщение отредактировал Twin_by - May 25 2015, 09:41
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
alexeyv
сообщение Jun 1 2015, 03:53
Сообщение #2


Местный
***

Группа: Участник
Сообщений: 298
Регистрация: 26-01-09
Из: Пермь
Пользователь №: 43 940



to demiurg_spb
Цитата
1. Во всех ваших примерах надо добавить &eeprom_var1...

Не во всех, а только в последнем - там действительно да, очепятка, сори.

Цитата
2. Лет 10 как никаких проблем с EEPROM нет, да и те, что были, вами лично надуманы. Единственное, что было это:
http://www.nongnu.org/avr-libc/user-manual...prom_corruption

Я и не уточнял возраст этой проблемы. Да, это было давно. Но в свое время я много времени думал почему CPU иногда косячит.
у меня было такое: адрес в EEPROM какой-то из диапазона 0x06...0x0А (не помню), и если по этому адресу записать то ли 0x27, то ли 0x2А (не помню), CPU вставал в ступор. причем зависал только на одном значении.

За исключением создания структуры, моя логика работы с EEPROM не отличается от логики других форумчан. Я не понимаю зачем создавать структуру?

Кстати, у ТС был вопрос как избавиться от второго файла, а не как работать с EEPROM.
Go to the top of the page
 
+Quote Post
demiurg_spb
сообщение Jun 1 2015, 07:06
Сообщение #3


неотягощённый злом
******

Группа: Свой
Сообщений: 2 746
Регистрация: 31-01-08
Из: Санкт-Петербург
Пользователь №: 34 643



Цитата(alexeyv @ Jun 1 2015, 06:53) *
Но в свое время я много времени думал почему CPU иногда косячит.
у меня было такое: адрес в EEPROM какой-то из диапазона 0x06...0x0А (не помню), и если по этому адресу записать то ли 0x27, то ли 0x2А (не помню), CPU вставал в ступор. причем зависал только на одном значении.
Приведите пожалуйста ссылку на ERRATA, где говорится о вашей ситуации.
Удивительно, но я начинал использование AVR с at90s2233 и с тех пор ничего подобного не встречал.

Цитата
За исключением создания структуры, моя логика работы с EEPROM не отличается от логики других форумчан. Я не понимаю зачем создавать структуру?
Я уже об этом писал и объяснил зачем это нужно делать ВСЕГДА. Хотите я вам скину ссылку на avg-gcc 4.X.X, который вдруг стал располагать данные в EEPROM в обратном порядке (формально это не бага, т.к. стандарт ничего против такого поведения не имеет)?
Если же данные поместить в упакованную структуру, то уже ничто не в праве её изменить.
Конечно, если вы не предоставляете доступа к EEPROM данным наружу и не считаете КС содержимого EEPROM можно обойтись и без структуры, только зачем?
Ведь вы и так делаете префикс для имени переменной из EEPROM, так почему бы не использовать специально созданный для таких случаев механизм?
Ещё один большой плюс структуры - это очень лаконичное её объявление как EXTERN - всего одной строчкой.

Цитата
Кстати, у ТС был вопрос как избавиться от второго файла, а не как работать с EEPROM.
Не зная алфавита сложно начать составлять слова...


--------------------
“Будьте внимательны к своим мыслям - они начало поступков” (Лао-Цзы)
Go to the top of the page
 
+Quote Post
Twin_by
сообщение Jun 1 2015, 07:57
Сообщение #4


Участник
*

Группа: Участник
Сообщений: 32
Регистрация: 3-09-11
Из: Минск
Пользователь №: 66 982



Цитата(demiurg_spb @ May 29 2015, 11:07) *
Задаёте значения своим переменным:
Код
EEMEM eeprom_data_t eeprom =
{
    .var1 = 33U,
    .var2 = 333.0f
};
Работаете с ними:

В этом случае будет создан файл *.eep. Я так подозреваю

Цитата(demiurg_spb @ Jun 1 2015, 10:06) *
Я уже об этом писал и объяснил зачем это нужно делать ВСЕГДА. Хотите я вам скину ссылку на avg-gcc 4.X.X, который вдруг стал располагать данные в EEPROM в обратном порядке (формально это не бага, т.к. стандарт ничего против такого поведения не имеет)?

Да есть, такое. Когда первый раз с этим столкнулся долго не мог понять что у меня где в eeprom

Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Twin_by   Прошивка Flash и EEPROM одним файлом hex или elf   May 25 2015, 05:26
- - demiurg_spb   Цитата(Twin_by @ May 25 2015, 08:26) Неп...   May 25 2015, 13:54
- - Twin_by   Цитата(demiurg_spb @ May 25 2015, 16:54) ...   May 25 2015, 14:50
- - alexeyv   1. На производстве используют программатор ASISP и...   May 26 2015, 03:51
- - Twin_by   Цитата(alexeyv @ May 26 2015, 06:51) 2. П...   May 26 2015, 04:44
- - qwerty1023   Тут наверное имеется в виду что-то типа Код//_e_d...   May 26 2015, 07:00
- - alexeyv   Выбираешь один из неиспользуемых адресов в EEPROM ...   May 26 2015, 08:05
|- - Twin_by   Цитата(alexeyv @ May 26 2015, 11:05) Напр...   May 28 2015, 11:09
- - alexeyv   ЦитатаЕсли я правильно понял ваш код, то вы в нем ...   May 29 2015, 02:19
|- - demiurg_spb   Цитата(alexeyv @ May 29 2015, 05:19) Кодv...   May 29 2015, 08:07
|- - qwerty1023   Цитата(demiurg_spb @ May 29 2015, 11:07) ...   May 29 2015, 08:47
|- - demiurg_spb   Цитата(qwerty1023 @ May 29 2015, 11:47) А...   May 29 2015, 08:52
|- - Twin_by   Цитата(demiurg_spb @ May 29 2015, 11:52) ...   May 29 2015, 09:09
- - zltigo   1) Все данные ЕЕPROМ в структуру, это святое и не ...   May 29 2015, 09:10
|- - VladislavS   Цитата(zltigo @ May 29 2015, 12:10) Все. ...   May 31 2015, 11:31
- - alexeyv   ЦитатаЯ уже об этом писал и объяснил зачем это нуж...   Jun 3 2015, 02:39
- - Сергей Борщ   Цитата(alexeyv @ Jun 3 2015, 05:39) У мен...   Jun 3 2015, 04:47


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

 


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


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