|
|
  |
Порты AVR и компиляция |
|
|
|
Oct 2 2007, 20:08
|
дятел
    
Группа: Свой
Сообщений: 1 681
Регистрация: 13-05-06
Из: Питер
Пользователь №: 17 065

|
Цитата(sensor_ua @ Oct 2 2007, 23:38)   А давайте вспомним обычную файловую операцию - сохранение файла. Чтобы записываемый файл не убил ещё целый оригинал, нужно писать в другое место. Далее возникают остальные вопросы - как разгребаться с мусоркой и т.п. Файловые системы типа JFFS и новомодная ZFS именно то же делают -записывают на свободное место, а потом разбираются с мусоркой (в JFFS - garbage collection). Но оказывается задачи подобного рода - гарантированная запись некоего блока данных - возникали и раньше, например, в бесконтактных фискальных системах (карточки Mifare). Дык там это не пальцы загибать, а денюжки хранить. Не очень понял как это касается темы спора встроенные vs собственные средства работы с EEPROM ? Если вы о том что нужно таки аппаратными средствами обеспечить запись в eeprom, Цитата ЧТо придумывать будем?  )) то придумывать ничего нового не будем, уже все придумано. Транзакция считается законченой когда записано обе копии данных в EEPROM. Если бы Вы внимательно читали мои посты, например пост №54 то Вы бы заметили что мой автомат апдейтит две копии данных и по ходу для каждой из них сохраняет/проверяет CRC.
|
|
|
|
|
Oct 2 2007, 20:32
|
Профессионал
    
Группа: Свой
Сообщений: 1 266
Регистрация: 22-04-05
Из: Киев
Пользователь №: 4 387

|
Цитата Как сохранить текущую конфигурацию прибора при пропадании питания. - я писал? а это - Цитата Обычно(чаше всего) обсуждение ведется в русле того, что нужно аппаратными средствами обеспечить работу контроллера еще какое-то время для того, чтобы успеть записать эту самую конфигурацию.
Может все-таки стоит в подобных ситуациях озаботиться возможностью "ВСЕГДА" иметь правильную конфигурацию в EEPROM ? Озаботились кроме Вас ещё много людей и я Вам написал о том, что проблема не нова. И независимо от Вашего некоего "автомата" давно успешно решаема. Если Вы не знакомы с известными решениями, то это не повод рассказывать о том, что кроме Вашего решения (крохи которого Вы попытались громко показать) ничего иного нет  )) Цитата транзакция считается законченой когда записано обе копии данных в EEPROM.
Если бы Вы внимательно читали мои посты, Простите, но не заставляйте ассоциировать себя с героем старого анекдота "чукча не читатель - чукча писатель". Лучше всё-таки расскажите, чем отличается Ваше решение от общеизвестных, кроме как авторством кода и неприятием готовых решений от авторов компиляторов и сопутствующих библиотек.
--------------------
aka Vit
|
|
|
|
|
Oct 2 2007, 20:56
|
дятел
    
Группа: Свой
Сообщений: 1 681
Регистрация: 13-05-06
Из: Питер
Пользователь №: 17 065

|
Цитата(sensor_ua @ Oct 3 2007, 00:32)  Озаботились кроме Вас ещё много людей и я Вам написал о том, что проблема не нова. И независимо от Вашего некоего "автомата" давно успешно решаема. Если Вы не знакомы с известными решениями, то это не повод рассказывать о том, что кроме Вашего решения (крохи которого Вы попытались громко показать) ничего иного нет  )) Я и не пытаюсь себе присваивать пальму первенства, более того, я уверен что те решения о которых я говорю применяются очень широко. Тока почему то на электрониксе очень многим они не нравятся  Цитата Лучше всё-таки расскажите, чем отличается Ваше решение от общеизвестных, кроме как авторством кода и неприятием готовых решений от авторов компиляторов и сопутствующих библиотек. Если Вас не убедило 33 такта против 81 на записи одного байта (да еще и в ситуации когда цейтнот и питания осталось совсем мало), то я не смогу Вам объяснить чем мое решение лучше... А если Вы действительно хотите разобраться со всеми нюансами сохранения правильной конфигурации в EEPROM, то давайте это обсуждать, тока без вариантов типа в IAR это сделано круто и ничего другого я знать не хочу, и я думаю что тоже узнаю для себя что-то новое.
|
|
|
|
|
Oct 2 2007, 21:44
|

кекс
     
Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326

|
Цитата(singlskv @ Oct 2 2007, 23:56)  Если Вас не убедило 33 такта против 81 на записи одного байта (да еще и в ситуации когда цейтнот и питания осталось совсем мало), то я не смогу Вам объяснить чем мое решение лучше... Да какая разница сколько тактов уйдет на sheduling записи одного байта. Операция записи длится 3-5ms, ответьте - сколько раз при этом будет осуществлен вызов вашего автомата и "отвал" по факту занятости eeprom, сколько тактов это сожрет? Не кажется ли вам, что разница 81-33 = 48 тактов просто мизерная и стремится к нулю на фоне постоянных накладных расходов автомата. Кстати откуда 81 такт? (eeprom char *)xxx = YY - это 14 инструкций с отключенной оптимизацией Цитата А если Вы действительно хотите разобраться со всеми нюансами сохранения правильной конфигурации в EEPROM, то давайте это обсуждать что тут обсуждать. три основных момента - залог успеха: 1. пакетная организация, 2. CRC обязательно. 3. Дублировать записи. Цитата тока без вариантов типа в IAR это сделано круто и ничего другого я знать не хочу, Вы то хоть поняли что в IAR сделано? И как то, что сделано в IAR кореллирует с тем, что выставляете вы? Уровни же разные совершенно, вы хотите сопоставить пакетный уровень, байт уровню? Типа - да начерта нам эти сигналы всякие, биты, байты, вот IE с http прекрасно работает..
|
|
|
|
|
Oct 3 2007, 04:22
|
Знающий
   
Группа: Свой
Сообщений: 771
Регистрация: 16-07-07
Из: Волгодонск
Пользователь №: 29 153

|
Цитата(singlskv @ Oct 2 2007, 22:06)  Может все-таки стоит в подобных ситуациях озаботиться возможностью "ВСЕГДА" иметь правильную конфигурацию в EEPROM ? Правда для этого(часто) придется написать свой код общения с EEPROM.  Если у меня правильная конфигурация (состояния автоматов) меняется примерно раз в минуту, то дырку я протру за 100К/60/24 = 70 дней. Если я растиражирую эту запись 10 раз - то за 700 дней. Правда, епром у меня используется впритык, и максимум, что я могу - это 3 копии. Т.е. 70*3 = 210 дней. Все равно мало. Поэтому приходится иметь парковку... Кст, насчет спора собственные функции \ встроенные средства. Сам для епрома использую собственные - с автоматическим тиражированием, CRC и работающие в фоне. А вот для доступа к флэшу использую модификатор __flash. По моему, вполне удобно.
|
|
|
|
|
Oct 3 2007, 05:16
|
Профессионал
    
Группа: Свой
Сообщений: 1 266
Регистрация: 22-04-05
Из: Киев
Пользователь №: 4 387

|
Цитата(singlskv @ Oct 2 2007, 23:56)  Я и не пытаюсь себе присваивать пальму первенства, более того, я уверен что те решения о которых я говорю применяются очень широко. Тока почему то на электрониксе очень многим они не нравятся  Если Вас не убедило 33 такта против 81 на записи одного байта (да еще и в ситуации когда цейтнот и питания осталось совсем мало), то я не смогу Вам объяснить чем мое решение лучше... А если Вы действительно хотите разобраться со всеми нюансами сохранения правильной конфигурации в EEPROM, то давайте это обсуждать, тока без вариантов типа в IAR это сделано круто и ничего другого я знать не хочу, и я думаю что тоже узнаю для себя что-то новое. 8.5 МИЛЛИСЕКУНД продолжается запись. Какие такты кого спасут? IMNHO, Вы путаете время записи адреса и данных для АППАРАТНОЙ записи с продолжительностью самой записи. И, кроме того, извините, но глядя на кусочек кода (вероятно это код Вашего автомата), не только у меня возникли сомнения в его корректности. Вопрос же о хранении и валидности данных касается более алгоритмов хранения, а не реализации их в конкретном драйвере, о котором кроме дифирамбов никакой инфы, кроме неиспользования штатных средств, толком и не было.
--------------------
aka Vit
|
|
|
|
|
Oct 3 2007, 05:38
|

Йа моск ;)
     
Группа: Модераторы
Сообщений: 4 345
Регистрация: 7-07-05
Из: Kharkiv-city
Пользователь №: 6 610

|
Цитата(sensor_ua @ Oct 2 2007, 17:18)  Пытался. Используются несуществующие регистры RAMPx. Проблема (сомневаюсь, что показалось) нерешаема. Ну я в IDA размотал этот кусок, где он генерирует комманду записи в RAMPx, ее можно там заменить, пропатчив экзешник конечно, штатными средствами не получится. Только что-то меня остановило, уже не помню что.
--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
|
|
|
|
|
Oct 3 2007, 06:58
|
Профессионал
    
Группа: Свой
Сообщений: 1 266
Регистрация: 22-04-05
Из: Киев
Пользователь №: 4 387

|
Цитата он генерирует комманду записи в RAMPx, ее можно там заменить, пропатчив экзешник Уже не помню, но кроме адресации по смещению какие-то нюансы с регистрами передачи параметров в функции были.
--------------------
aka Vit
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|