11.08.2010, 23:56
|
#1
|
Прописка
Регистрация: 21.12.2005
Сообщений: 247
Сказал спасибо: 10
Сказали Спасибо 18 раз(а) в 12 сообщении(ях)
|
Proteus не сохраняет изменённый EEPROM
Моя программа записывает данные в EEPROM. Очень надо что бы они остались при последующих симуляциях - т.е. эти данные должны записаться в файл eep.bin Так и должно работать eeprom. Как это сделать!
Спасибо.
__________________
Если хочешь вбить гвоздь, не ищи обходных путей, просто бери молоток и бей, по этому чёртовому гвоздю!
|
|
|
|
15.08.2010, 20:27
|
#2
|
Частый гость
Регистрация: 10.10.2009
Сообщений: 10
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Proteu не сохраняет изменённый EEPROM
Он обязан сохранять. У меня сохраняет все данные последней симуляции.
А чтобы сбросить на начальные, надо выбрать в меню пункт.
|
|
|
|
15.08.2010, 21:29
|
#3
|
Гражданин KAZUS.RU
Регистрация: 29.06.2006
Сообщений: 638
Сказал спасибо: 37
Сказали Спасибо 56 раз(а) в 41 сообщении(ях)
|
Re: Proteu не сохраняет изменённый EEPROM
Сообщение от Developer_
|
эти данные должны записаться в файл eep.bin
|
А где написано что он должен там сохранять?
Initial Contents Of Data EEPROM - как вы думаете что означает?
данные сохраняются, только не в eep.bin, а в другом файле вместе с остальными данными о симуляции
Последний раз редактировалось AndreiVV; 15.08.2010 в 21:41.
|
|
|
|
16.08.2010, 09:49
|
#4
|
Супер-модератор
Регистрация: 03.05.2007
Сообщений: 2,695
Сказал спасибо: 28
Сказали Спасибо 4,508 раз(а) в 956 сообщении(ях)
|
Re: Proteu не сохраняет изменённый EEPROM
Сообщение от Developer_
|
Очень надо что бы они остались при последующих симуляциях - т.е. эти данные должны записаться в файл eep.bin
|
Это было бы нахальным вмешательством в исходные данные со стороны программы.
Но если хотите сохранять, то что мешает???
В окне CPU EEPROM Memory по правой кнопке есть опция Copy All. Затем вставляете в любой текстовый редактор и сохраняете как текст. Таким образом можно наделать сколько угодно копий на разных этапах симуляции. Сравнить два текстовых файла - тоже не проблема. Есть масса программ, например CompareIt. Я так и вообще работаю с текстами в редакторе ConText, там есть встроенная функция сравнения. Выявили отличия, подредактировали в любом Hex-редакторе исходный бинарник и сохранили под другим именем. Ну а затем его туды - в Initial Contents Of Data EEPROM.
Сообщение от Developer_
|
Так и должно работать
|
... эмбеддер.
Не думаю, чтоб у Вас программа переписывала весь EEPROM, а поменять десяток ячеек - разминка для рук, а то пальчики атрофируются и отсохнут.
|
|
|
|
16.08.2010, 10:26
|
#5
|
Почётный гражданин KAZUS.RU
Регистрация: 13.05.2006
Адрес: Москва
Сообщений: 3,559
Сказал спасибо: 76
Сказали Спасибо 326 раз(а) в 230 сообщении(ях)
|
Re: Proteu не сохраняет изменённый EEPROM
Сообщение от Halex07
|
Это было бы нахальным вмешательством в исходные данные со стороны программы.
|
Я считаю что это было бы достоверной симуляцией работы МК.
А сохранять измененное прогой сождержимое eeprom PROTEUS могбы в специальный файл с тем же названием как у оргинала, но со спец. расширением и в название влепить момент создания для хронологии изменений. Или наоборот бэкапить оригинал.
__________________
Обучалка AVR PIC ARM начинающим программирование курс самоучитель шаг за шагом с нуля, CVAVR, PROTEUS, MPLAB, WinAVR, IAR, KEIL электроника - http://proavr.narod.ru
|
|
|
|
19.10.2010, 17:05
|
#6
|
Вид на жительство
Регистрация: 21.10.2009
Сообщений: 343
Сказал спасибо: 180
Сказали Спасибо 64 раз(а) в 56 сообщении(ях)
|
Re: Proteus не сохраняет изменённый EEPROM
Цитата:
|
Моя программа записывает данные в EEPROM. Очень надо что бы они остались при последующих симуляциях
|
Протеус сохраняет еепром при последующих симуляциях, но не в тот файл что вы хотите.
|
|
|
|
17.02.2012, 16:29
|
#7
|
Прописка
Регистрация: 16.02.2008
Адрес: Donbass
Сообщений: 218
Сказал спасибо: 68
Сказали Спасибо 112 раз(а) в 58 сообщении(ях)
|
Re: Proteu не сохраняет изменённый EEPROM
Сообщение от Halex07
|
Это было бы нахальным вмешательством в исходные данные со стороны программы.
|
Извините. Вы, конечно, специалист, но с таким согласиться невозможно. Это бы как раз было абсолютно естественно, и в максимальной степени соответствовало бы реальной работе устройства в железе!
Если в железе у меня какие-то данные в процессе работы устройства сохраняются в EEPROM, то они там и остаются! Аж пока не изменятся снова или пока я не перешью контроллер!
Сообщение от Halex07
|
Не думаю, чтоб у Вас программа переписывала весь EEPROM, а поменять десяток ячеек - разминка для рук, а то пальчики атрофируются и отсохнут.
|
У меня сейчас вся логика проекта завязана на то, что в процессе работы устройства различные данные периодически сохраняются в EEPROM. Отладка математики (не самой примитивной) займет не один день. И мне надо, чтобы завтра, включив комп и запустив симуляцию в PROTEUS, мое устройство начало работать с теми данными в EEPROM, которые последний раз были туда записаны вчера при симуляции! А не с исходных в HEXе! Без танцов с бубнами и прочего, максимально приближенно к реальному железу!
Неужели такой примитивной функции в столь наворочанной программе вообще нет???
|
|
|
|
17.02.2012, 20:03
|
#8
|
Супер-модератор
Регистрация: 03.05.2007
Сообщений: 2,695
Сказал спасибо: 28
Сказали Спасибо 4,508 раз(а) в 956 сообщении(ях)
|
Re: Proteus не сохраняет изменённый EEPROM
Сообщение от KGN
|
И мне надо, чтобы завтра, включив комп и запустив симуляцию в PROTEUS, мое устройство начало работать с теми данными в EEPROM, которые последний раз были туда записаны вчера при симуляции!
|
Неужто не въехали, что именно с ними и начнет... Можете хоть год ковырять отладку. И будет начинать до тех пор пока не нажмете в меню Debug опцию Reset Persistent Model Data. В этом случае данные в EEPROM вновь загрузятся из бинарного файла, который назначен в свойстве Initial contents of EEPROM или станет все FF, т.е. непрошитым, если его там не назначено. Чего вой подымать не разобравшись...
Другая сторона вопроса, что они не сохраняются в отдельный ФАЙЛ. Но это уже камень в огород разработчиков. Все дело в том, что если сделать так, чтобы перезаписывался исходный бинарник, то это нафиг никому не нужно. Представьте - я подготовил бинарник в котором, например, офигенная таблица для термопары или терморезистора, в программе накосячил и при отладке у меня перепишется исходный бинарник - все, привет родителям... и коту под хвост моя работа. А на "очень умный совет" - "а че, резервную копию сделать заранее в лом?" - могу ответить, а кто вам запрещает сделать тоже в Протеусе? В любой момент встали в паузу, засветили окно EEPROM, только отрубите там опцию Display Characters, чтоб не схватить лишнее. Теперь по правой лапке Copy All и вставляем в нормальный HEX-editor, поволяющий сохранять бинарник. Можно даже в такой раритет, как этот:
b2hedit - халявный, простой, как автомат Калашникова и работает без установки, но свое дело делает. Все, сохранили как бинарник и в любой момент можете подгрузить именно его НО, опять же через Reset Persistent Model Data. Иначе при запуске симуляции будут подгружены данные, сохраненные от предыдущего запуска (чего вы и желали). Таких копий можно наваять столько, что хотите "вчера, но по пять", или "сегодня по три, но мелкие".
А насчет претензии, что в реальном железе МК сохраняет содержимое ПЗУ в файл -??? это как, "моя нихт понимайт". МК сохраняет содержимое ПЗУ в ПЗУ и если не организовать вывод этого содержимого через периферию в файл, то хрен вы этот файл получите без подключенного дебагера/программатора, т.е. тоже лишних "телодвижений". Так что не надо выдавать желаемое за действительное.
Во всей этой полемике есть единственное дельное пожелание от avr123-nm-ru разработчикам, но насколько оно реально реализуемо, это вопрос уже к ним в лице Тени.
ЗЫ. Поскольку ваш вопрос в другом топике дублирует этот, я думаю, там его можно удалить.
|
|
|
Сказали "Спасибо" Halex07
|
|
|
18.02.2012, 04:22
|
#9
|
Почётный гражданин KAZUS.RU
Регистрация: 27.06.2005
Сообщений: 1,389
Сказал спасибо: 19
Сказали Спасибо 210 раз(а) в 156 сообщении(ях)
|
Re: Proteus не сохраняет изменённый EEPROM
Давайте разберёмся, о какой именно EEPROM идёт речь. Это память программ или именно EEPROM, которую используют для хранения настроек и прочего?
Если первое - то скажите пожалуйста, что делать с данными после перекомпиляции проекта? Варианта в принципе два - сохранять данные с прошлой симуляции, что может нарушить работу программы (код то съехал), или удалять их - на что опять таки пользователи будут жаловаться. Хотя конечно некоторые функции только так и можно протестировать. Например, бутлоадер, или сериализатор MAC-адресов.
Если второе - то это у нас в списке доработок на будущее, правда не могу сказать когда это будет сделано.
|
|
|
|
18.02.2012, 14:50
|
#10
|
Прописка
Регистрация: 16.02.2008
Адрес: Donbass
Сообщений: 218
Сказал спасибо: 68
Сказали Спасибо 112 раз(а) в 58 сообщении(ях)
|
Re: Proteus не сохраняет изменённый EEPROM
Сообщение от Halex07
|
Неужто не въехали, что именно с ними и начнет... Можете хоть год ковырять отладку. И будет начинать до тех пор пока не нажмете в меню Debug опцию Reset Persistent Model Data. В этом случае данные в EEPROM вновь загрузятся из бинарного файла, который назначен в свойстве Initial contents of EEPROM или станет все FF, т.е. непрошитым, если его там не назначено.
|
Не въехал, к сожалению. Да, с Протеусом я еще далеко не на "ты". В железе не один десяток устройств сделано, а с протеусом только начинаю работать. Наверно, туплю. Буду признателен и бесконечно благодарен за тыкание в то место, где именно я туплю.
Итак, начнем сначала
У меня есть текущий результат компиляции проекта в среде программирования (в данном случае в MPLAB) - это HEX, в котором содержится код EEPROM программ и инфа с начальными значениями EEPROM данных. Т.е. все необходимое для прошивки реального контроллера устройства. И я "прошиваю" контроллер, т.е. подключаю HEX к протеусу. Начинаю симуляцию. Данные в EEPROM периодически меняются, какие часто, какие реже, какие при моем участии, какие- самостоятельно, согласно логике ПО. И даже в EEPROM программ тоже иногда кой-чего пишется, но об этом позже.
Если я останавливаю симуляцию, а потом запускаю ее снова - привет родителям, как Вы выразились. Все изменения в EEPROM, которые были получены при прошлой симуляции, пропали. Симуляция снова стартует с начальными значениями в EEPROM!
Что я делаю не так? И как все-таки сделать, чтобы данные в EEPROM реально сохранялись, тютелька в тютельку так, как это происходит в железе? Без каких-то дополнительных бинарников, которые мне надо не забывать каждый раз сохранять?
Просто объясните на пальцах, если не сложно
Сообщение от Halex07
|
Все дело в том, что если сделать так, чтобы перезаписывался исходный бинарник, то это нафиг никому не нужно.
|
Вот только за всех расписываться ни к чему. Мне как раз именно это и нужно! Потому что именно это и происходит в железе. А как иначе я смогу отладить устройство, в котором, например, какие-то переменные хранятся даже не в EEPROM данных, а в памяти программ? Хватает контроллеров, в которых вообще нет EEPROM данных, а настройки хранятся в программной памяти. Или отладка обновления ПО устройства будущим пользователем, когда приличные куски кода перезаписываются средствами самопрограммирования?
Сообщение от Halex07
|
Представьте - я подготовил бинарник в котором, например, офигенная таблица для термопары или терморезистора, в программе накосячил и при отладке у меня перепишется исходный бинарник - все, привет родителям... и коту под хвост моя работа.
|
Улыбнуло. Вы чего, свой бинарник с офгенной таблицей прямо так готовите? Исходников и бекапов нету, совсем?
Про копирование EEPROM, HEX-editor'ы, подгрузки копий и прочее - так не надо мне оно сейчас. Мне нужно максимальное приближение к "железному" варианту изделия. Или Ваша мобила каждый раз при включении забывает сделанные ранее настройки?? И требует их подгрузки с какого-то там бинарника?
Сообщение от Halex07
|
А насчет претензии, что в реальном железе МК сохраняет содержимое ПЗУ в файл -??? это как, "моя нихт понимайт". МК сохраняет содержимое ПЗУ в ПЗУ и если не организовать вывод этого содержимого через периферию в файл, то хрен вы этот файл получите без подключенного дебагера/программатора, т.е. тоже лишних "телодвижений".
|
Вы таки не понимаете сути вопроса. Не нужно мне на данном этапе пялиться на содержимое EEPROM в каком-то там файле! Мне просто нужно, чтобы устройство работало с последними сохраненными данными. И вообще, имеющийся в устройстве дисплей и соответствующие встроенные функции при необходимости прекрасно покажут мне текущее содержимое нужных ячеек EEPROM, если будет такая необходимость. Без дебагеров и программаторов, да не в абстрактном коде, а в том формате и в той размерности, в которых они реально используются. Такие "скрытые" возможности, недоступные пользователю, я всегда закладываю во все свои устройства - очень полезно потом при диагностике и ремонте бывает, если изделие идет в серию.
Я железячник, сударь. Меня теоретические извраты мало интересуют. У меня на выходе должно получиться реальное изделие. С содержиммым EEPROM которого оно само и будет работать. И мне бы хотелось, чтобы хотя бы его программная часть в Протеусе работала именно так, как будет работать в железе. Именно в таком, пользовательском виде, мне его и надо тестировать. Только и всего.
Так как добиться нужного мне результата? Это возможно?
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 13:51.
|
|