AT29C256 и atmega. Или эмулятор ПЗУ на Atmeg-а
AT29C256 и atmega. Или эмулятор ПЗУ на Atmeg-а
Всем котам - Привет!
Прежде всего извиняюсь если залез не в тот раздел.
Сразу объясню - программированием МК занялся недавно (очень недавно) и толком еще не разобрался. А тут еще очень и очень захотелось сделать чип тюнинг ECU своего автомобиля. Полез на профильные форумы, нашел что нужно с одним но - невозможность "онлайн" прошивки. На дочерней плате, что ставится в ECU имеются две flash-ки AT29C256 и чтоб залить в них прогу, естественно нужно их вытащить с постелек и воткнуть в программатор.
А теперь к сути - идея реализации "онлайности" (т.е при работающем движке корректировать параметры работы) состоит в том, чтоб разработать схему с памятью подключаемой через буфера, которые блокируются при перешивке, все это под управлением например атмеги 128. Или же сделать эмулятор этой самой памяти на какой нибудь атмеге.
Не прошу делать за меня работу, а покидаться ссылками по тому или другому варианту. Хотя, если есть готовые примеры, буду только рад)))
Ну или сказать что это не стоит свеч и послать меня гулять)))
Заранее благодарю Вас за терпение и ответы)
Принципиалка дочерней платы:
Прежде всего извиняюсь если залез не в тот раздел.
Сразу объясню - программированием МК занялся недавно (очень недавно) и толком еще не разобрался. А тут еще очень и очень захотелось сделать чип тюнинг ECU своего автомобиля. Полез на профильные форумы, нашел что нужно с одним но - невозможность "онлайн" прошивки. На дочерней плате, что ставится в ECU имеются две flash-ки AT29C256 и чтоб залить в них прогу, естественно нужно их вытащить с постелек и воткнуть в программатор.
А теперь к сути - идея реализации "онлайности" (т.е при работающем движке корректировать параметры работы) состоит в том, чтоб разработать схему с памятью подключаемой через буфера, которые блокируются при перешивке, все это под управлением например атмеги 128. Или же сделать эмулятор этой самой памяти на какой нибудь атмеге.
Не прошу делать за меня работу, а покидаться ссылками по тому или другому варианту. Хотя, если есть готовые примеры, буду только рад)))
Ну или сказать что это не стоит свеч и послать меня гулять)))
Заранее благодарю Вас за терпение и ответы)
Принципиалка дочерней платы:
- Реклама
Re: AT29C256 и atmega. Или эмулятор ПЗУ на Atmeg-а
Т.е. прошивка занимает 64 Кб.ScRp писал(а):две flash-ки AT29C256 и чтоб залить в них прогу
У 128-й Атмеги FLASH-памяти 128 Кб - в теории, можно половину отдать под "прошивку" и половину под имитацию FLASH. Ножек тоже хватает - в принципе, есть шанс такое сделать.
Остаются вопросы:
- на какой частоте работает контроллер ECU, в смысле какое время считывания из FLASH он требует? Справится ли "эмулятор" по скорости?
- где в "эмуляторе" хранить прошивку? Если во внутренней FLASH - то какая же тут "онлайновость"? Можно, конечно, на лету менять содержимое FLASH, но успеет ли и шить и работать как FLASH?
Хранить "прошивку" в SDRAM - никак, у Атмеги всего 4 КБ. Там можно, разве что, хранить одну-две "таблицы" и выдавать из при запросе с определённого адреса.
Хотя, как вариант использовать Атмегу как FLASH - можно. И перепрошивать можно без вынимания её - через внутрисхемное программирование (ессно, выключив ECU вначале)
Возникают сильные сомнения. Если ты будешь "на лету" менять саму программу выполнения - получишь зависание контроллера с вероятностью 146%.ScRp писал(а):при работающем движке корректировать параметры работы
Исправлять некие "таблицы" - в теории можно. На практике - есть немалая вероятность, что ECU при запуске копирует эти таблицы себе в SDRAM и работает оттуда.
Re: AT29C256 и atmega. Или эмулятор ПЗУ на Atmeg-а
Mas123. Благодарю за столь быстрый ответ!
Скорость считывания - на пределе At29c256 - 70нс. Частота получается 14.7 МГц.
Нет, в ECU при запуске не копирует ничего, он командует работой движка опираясь на данные считываемые с flash дочерки. В ECU ставится перемычка, и все, он работает только от внешней памяти.
На счет зависаний МК во время прошивки на раб. движке, согласен, думаю что загнул я) Ну по крайней мере, хотелось бы организовать почти онлайность))Т.е. заглушились, зашились, завелись и поехали проверяться)
Кстати, забыл сказать что две флешки стоят что бы была возможность реализации двухрежимности (овощь-городская прошивка и аля спорт режим).
Что-бы было понятно зачем мне это. У нас в Казахстане паршивый бензин, а двигатель у меня со степенью сжатия 10.3:1. Из-за этого на 95-98 бензине детонация такая, что аж за движок страшно. Движок чистокровный япошка 190 поней. Он очень быстро придет в негодность из-за такого детона. Хочется залить прош для ECU с так называемой "низкооктановой" топливной картой, познакомить движок с говенным бензином. И вторая прош - для отжига на хорошем Российском бензине (он реально лучше нашего)
И это объем программы не 64кб, может быть и больше, зависит от кол-ва новых параметров которые мы прописываем ECU. Может и впритык к памяти флешки - 256кб. Хотя и могу ошибаться. Новичек жеш)
Скорость считывания - на пределе At29c256 - 70нс. Частота получается 14.7 МГц.
Нет, в ECU при запуске не копирует ничего, он командует работой движка опираясь на данные считываемые с flash дочерки. В ECU ставится перемычка, и все, он работает только от внешней памяти.
На счет зависаний МК во время прошивки на раб. движке, согласен, думаю что загнул я) Ну по крайней мере, хотелось бы организовать почти онлайность))Т.е. заглушились, зашились, завелись и поехали проверяться)
Кстати, забыл сказать что две флешки стоят что бы была возможность реализации двухрежимности (овощь-городская прошивка и аля спорт режим).
Что-бы было понятно зачем мне это. У нас в Казахстане паршивый бензин, а двигатель у меня со степенью сжатия 10.3:1. Из-за этого на 95-98 бензине детонация такая, что аж за движок страшно. Движок чистокровный япошка 190 поней. Он очень быстро придет в негодность из-за такого детона. Хочется залить прош для ECU с так называемой "низкооктановой" топливной картой, познакомить движок с говенным бензином. И вторая прош - для отжига на хорошем Российском бензине (он реально лучше нашего)
И это объем программы не 64кб, может быть и больше, зависит от кол-ва новых параметров которые мы прописываем ECU. Может и впритык к памяти флешки - 256кб. Хотя и могу ошибаться. Новичек жеш)
Re: AT29C256 и atmega. Или эмулятор ПЗУ на Atmeg-а
Атмега-128 - максимально 16 МГц. Может быть она на 20 заведётся, и то не факт. Не потянет она "эмулятор" на таких скоростях.ScRp писал(а):Частота получается 14.7 МГц.
А с фигали частота такая получается? Какая тактовая в контроллера ECU?
Отнюдь не факт! Скорость чтения из SDRAM выше , чем из FLASH "на порядок, т.е. в два раза"ScRp писал(а):Нет, в ECU при запуске не копирует ничего,
Многие движки умеют адаптироваться к стилю езды - это тоже оптимально в SDRAM хранить.
AT29C256 - 32 КилоБайт! Или 256 килоБит, что тоже самое.ScRp писал(а):Может и впритык к памяти флешки - 256кб.
Это можно придумать. Собрать схему такого плана:ScRp писал(а):Т.е. заглушились, зашились, завелись и поехали проверяться
Атмега плюс FLASH'ки (хоть одна, хоть три) и буфер между платой и ECU.
С возможностью подавать питание только на эту платку. В атмегу зашить программку, которая умеет принимать извне прошивку (например - UART) и программировать FLASH.
Т.е. у тебя "из-под капота" будут "торчать" 2 провода. К ним подключаешь ноут через COM-порт, заливаешь прошивку, и едешь на заправку.
Re: AT29C256 и atmega. Или эмулятор ПЗУ на Atmeg-а
Что тут, попытка собрать клон Hondata?
- Реклама
Re: AT29C256 и atmega. Или эмулятор ПЗУ на Atmeg-а
Ох как пауза у меня затянулась) Нет, не хондата. Нистюноподобную платку. Хотя в принципе одно и тоже. только с хондатой проще.radteh писал(а):Что тут, попытка собрать клон Hondata?
Re: AT29C256 и atmega. Или эмулятор ПЗУ на Atmeg-а
АВР микроконтроллеры под управлением программ, считываемых из внешней памяти напрямую не работают.
Для них существует только внешняя память данных.
Как вариант или в самом МК должна стоять какая-либо операционная система симулятора МК с выполнением команд, считываемых из внешнего ОЗУ, либо применение другого вида МК - к примеру банальну MCS51...
Другое дело загрузчик имитационного кристалла - так для того любой МК с достаточным количеством ног и возможностью перевода выводов в Z-состояние пройдет.
Другое дело что в качестве имитационного носителя применить... Весьма полезны вот такие: Вариант "на поиграться"
http://img.radiokot.ru/files/20529/kfszm0vku.gif собственно схемка основы
и дополнение для "полного фаршу"
http://img.radiokot.ru/files/20529/kfszmruku.gif
Сейчас можно и понавороченнее соорудить...

Для них существует только внешняя память данных.
Как вариант или в самом МК должна стоять какая-либо операционная система симулятора МК с выполнением команд, считываемых из внешнего ОЗУ, либо применение другого вида МК - к примеру банальну MCS51...
Другое дело загрузчик имитационного кристалла - так для того любой МК с достаточным количеством ног и возможностью перевода выводов в Z-состояние пройдет.
Другое дело что в качестве имитационного носителя применить... Весьма полезны вот такие: Вариант "на поиграться"
http://img.radiokot.ru/files/20529/kfszm0vku.gif собственно схемка основы
и дополнение для "полного фаршу"
http://img.radiokot.ru/files/20529/kfszmruku.gif
Сейчас можно и понавороченнее соорудить...
-
uk8amk
- Поставщик валерьянки для Кота
- Сообщения: 2222
- Зарегистрирован: Вт ноя 27, 2007 11:32:06
- Откуда: Tashkent
Re: AT29C256 и atmega. Или эмулятор ПЗУ на Atmeg-а
Судя по схеме платы процессор может только читать из флеш.
Так как шина параллельная, то либо сам контроллер старый без своей флеш, либо программа тоже сидит в этих чипах. Скорее второе поскольку шина похожа на 16-разрядную.
Смена программы налету чревата зависанием процессора поскольку на перепрограммирование требуется значительное время.
Для онлайнового варианта лучше использовать микросхемы памяти SRAM типа 62256. Организуем 2 банка по 2 микросхемы. Перед запуском блока загружаем первый банк памяти. Потом имеем неограниченно много времени для загрузки второго банка. Когда второй банк готов переключаем их буферами. Так имеем некоторую вероятность что процессор не повиснет. Чтобы далее снизить вероятность зависания переключание банков следует выполнять только при нахождении процессора в определённом диапазоне адресов где всегда находятся константные данные. Это зависит от программы.
Впрочем сотворить систему можно и на ваших 29С256. Я думаю что ресурса в 10000 перезаписей хватит чтоб как-то настроить мотор под ваш бензин.
Так как шина параллельная, то либо сам контроллер старый без своей флеш, либо программа тоже сидит в этих чипах. Скорее второе поскольку шина похожа на 16-разрядную.
Смена программы налету чревата зависанием процессора поскольку на перепрограммирование требуется значительное время.
Для онлайнового варианта лучше использовать микросхемы памяти SRAM типа 62256. Организуем 2 банка по 2 микросхемы. Перед запуском блока загружаем первый банк памяти. Потом имеем неограниченно много времени для загрузки второго банка. Когда второй банк готов переключаем их буферами. Так имеем некоторую вероятность что процессор не повиснет. Чтобы далее снизить вероятность зависания переключание банков следует выполнять только при нахождении процессора в определённом диапазоне адресов где всегда находятся константные данные. Это зависит от программы.
Впрочем сотворить систему можно и на ваших 29С256. Я думаю что ресурса в 10000 перезаписей хватит чтоб как-то настроить мотор под ваш бензин.
Re: AT29C256 и atmega. Или эмулятор ПЗУ на Atmeg-а
В старой практике симуляторов/имитаторов применялась генерация сигнала сброса и/или останова для целевой схемы во время обмена/загрузки имитационного массива.

Re: AT29C256 и atmega. Или эмулятор ПЗУ на Atmeg-а
Для этого надо влезать в схему самого процессорного блока.BOB51 писал(а):применялась генерация сигнала сброса и/или останова
Re: AT29C256 и atmega. Или эмулятор ПЗУ на Atmeg-а
А иначе "на лету" данные не обновить без возможного риска их ошибочного чтения основным (тестируемым) блоком.

Re: AT29C256 и atmega. Или эмулятор ПЗУ на Atmeg-а
Просто что-бы показать что дело не столь просто покажу проект от одного хорошего разработчика, это эмулятор памяти 27C и 29C построенный на микросхемах энергозависимой памяти http://www.ej9.ru/art/sofrom-1v15-emulator/ Иначе скорости обмена не хватало.
Re: AT29C256 и atmega. Или эмулятор ПЗУ на Atmeg-а
Принцип абсолютно одинаков - наличие микросхемы ОЗУ при каком-либо устройстве загрузки имитационного массива (из ПК и/или из базы данных накопителя в самом имитаторе).
Плюс, при необходимости, драйвера дополнительного барьера управления.
Отличие в оболочках управления и качестве изготовления печатной платки.
Ежли уж вести речь о логгере с вариацией начальной настройки, то и ПК может быть излишним - достаточно иметь хороший интерфейс пользователя (экран, клавиатура) на базе МК самого модуля имитации.
Возможные тонкости в быстродействии подавляются подбором соответствующей элементной базы (и уж никак не еепромками).

Плюс, при необходимости, драйвера дополнительного барьера управления.
Отличие в оболочках управления и качестве изготовления печатной платки.
Ежли уж вести речь о логгере с вариацией начальной настройки, то и ПК может быть излишним - достаточно иметь хороший интерфейс пользователя (экран, клавиатура) на базе МК самого модуля имитации.
Возможные тонкости в быстродействии подавляются подбором соответствующей элементной базы (и уж никак не еепромками).


