Page 1 of 4

о смене микроконтроллера.

Posted: Sat Dec 07, 2013 7:46 pm
by XDA
я неспешно проектирую собственный ецу. в качестве базы я выбрал STM32F4. кое-что уже сделано, но волей случая, прочитав статью на ХАБРе, я попал на этот форум, где принял горячее участие в обсуждении проблем, как лицо крайне заинтересованное в создании ЕЦУ на базе STM32.

изучая проблемы, которые были озвучены в темах связанны с проектированием железной обвязки, я понял, что не получается реализовать точный тайминг, шимы, и прочий ввод-вывод без аппаратных и программных изголятельств. в основном ЕЦУ, который я изучаю, и лучший функционал которого я планирую повторить - стоит CPU32 M68332, в котором задачи ввода вывода переложены на многофункциональный модуль ввода-вывода (даташит на который раз в 10 больше, чем даташит на CPU). в STM32 этого функционала просто нет, несмотря на богатую универсальную периферию.

занимаясь поиском возможных альтернатив я наткнулся на решение, которое лежит за рамками обычных процессорных плат, но тем не менее, позволяет реализовать все возможные хотелки по части аппаратного и программного обеспечения.
это DE0 Nano http://www.altera.com/education/univ/materials/boards/de0-nano/unv-de0-nano-board.html
на борту имеется ПЛИС Cyclone IV EP4CE22F17C6N FPGA, название никому ничего не скажет, но на нём можно запросто имплементировать ядро АРМ (уже есть готовые) с частотой больше 100 мегагерц и поставить линукс. а это уже что-то говорит о возможностях. т.е. мы имеем свободнопрограммируемое АРМ ядро + куча переферии, как то:
153 Maximum FPGA I/O pins - это дохрена для любого применения
On-board USB-Blaster circuit for programming - по сути так же как и дискавери программируется через усб со встроенного программатора.
Two 40-pin Headers (GPIOs) provides 72 I/O pins
One 26-pin header provides 16 digital I/O pins and 8 analog input pins to connect to analog sensors, etc
Memory Devices
32MB SDRAM 32 мегабайта!! это много. кто-то может сказать, что столько не надо - нет, надо. держать в памяти большое число точных таблиц - это всегда здорово и перспективно.
2Kb I2C EEPROM всего 2 килобайта, но под настройки вполне хватит. потому что основная загрузочная память это
FPGA Serial Configuration Device (EPCS) которой объёмом 64 мегабита или 8 мегабайт!
кроме того, на любых 4х ногах можно реализовать SPI и подцепить какое-нибудь микроСД.
A/D Converter
NS ADC128S022, 8-Channel, 12-bit A/D Converter 8 каналов по 12 бит, есть возможность 5вольтового биаса сразу.

в комплекте идёт ПО для разработки и УСБ шнурок для программирования.

теперь о грустном: стоимость в терраэлектронике 5100 р. но я считаю что это достойная плата за решение большинства проблем с периферией.
мне очень понравились возможности этой платы. уже закупил и пробую её программировать.
о результатах буду докладывать.

Re: о смене микроконтроллера.

Posted: Sat Dec 07, 2013 8:02 pm
by AndreyB
XDA wrote:я понял, что не получается реализовать точный тайминг, шимы, и прочий ввод-вывод без аппаратных и программных изголятельств
Я дальше даже читать особо смысла не вижу. Я вижу тут только большой 500*256.

Re: о смене микроконтроллера.

Posted: Sat Dec 07, 2013 8:06 pm
by Sergey89
Может несколько неуместный вопрос, но если не стоит вопрос о цене и доставаемости, то почему не нормальный автомобильный камень, типа SPC5? Там есть отдельный блок eTPU обработки событий с точным таймингом, он 5 вольтовый и там много каналов АЦП.

Re: о смене микроконтроллера.

Posted: Sat Dec 07, 2013 8:08 pm
by AndreyB
Sergey89 wrote:Там есть отдельный блок eTPU
У eTPU нет языка С и нет бесплатного компилятора.

Re: о смене микроконтроллера.

Posted: Sat Dec 07, 2013 8:09 pm
by XDA
Sergey89 wrote:Может несколько неуместный вопрос, но если не стоит вопрос о цене и доставаемости, то почему не нормальный автомобильный камень, типа SPC5? Там есть отдельный блок eTPU обработки событий с точным таймингом, он 5 вольтовый и там много каналов АЦП.
TPU - это хорошо и здорово, но к сожалению всё остальное там убого, даже по вчерашним меркам...

Re: о смене микроконтроллера.

Posted: Sun Dec 08, 2013 1:06 am
by AndreyB
@, спускайся с небес на землю! Не ножки и не объём памяти нужно считать, а комбинацию всех факторов:
0) производительность железа
1) цена железа
2) доступность железа для покупки
3) доступность компилятора
4) доступность операционной системы реального времени

По скольки параметрам этот микроконтроллер лучше, а по скольки хуже?

Лучшее - враг хорошего. Если ты считаешь себя компетентным в программировании - ну запрограммируй хотя бы #29 dual TPS sensor. Напоминаю - мы тут пишем универсальный и портируемый код. Будет готов ЭБУ твоей мечты - возьмёшь туда же эти наработки :)

Re: о смене микроконтроллера.

Posted: Sun Dec 08, 2013 7:34 am
by XDA
russian wrote:@, спускайся с небес на землю! Не ножки и не объём памяти нужно считать, а комбинацию всех факторов:
0) производительность железа
1) цена железа
2) доступность железа для покупки
3) доступность компилятора
4) доступность операционной системы реального времени

По скольки параметрам этот микроконтроллер лучше, а по скольки хуже?

Лучшее - враг хорошего. Если ты считаешь себя компетентным в программировании - ну запрограммируй хотя бы #29 dual TPS sensor. Напоминаю - мы тут пишем универсальный и портируемый код. Будет готов ЭБУ твоей мечты - возьмёшь туда же эти наработки :)
у нас с Вами разные критерии точности и технического задания на итоговый результат, мы это уже выяснили :)
Вы хотите сделать аналог карбюратора, а мне нужен ЕЦУ, способный обеспечить максимальный перформанс.

теперь по пунктам:
0. за исключением отсутствия мат.сопроцессора (который для ЕЦУ не нужен априори) ЦПУ будет работать на частоте 100 мегагерц.
1. больше, но не критично. учитывая богатство встроенной периферии - суммарно эта плата выиграет по итогу.
2. шиппинг волд вайд на сайте производителя, к тому же во всех приличных магазинах присутствует.
3. прилагается к плате. лицензия фри. GCC свободен тоже.
4. доступно множество. (т.е. всё то, что есть на АРМ + дополнительно своё)

Re: о смене микроконтроллера.

Posted: Sun Dec 08, 2013 7:37 am
by denisvak
Проблемы по больше части надуманные. теми или иными людьми :) Функционала STM32f4 выше крыши, готов поспорить вы не упретесь в проблемы с мотором даже V10 ни по железу, ни по производительности. Конечно если вы не будите писать код через попу. Неужели не понятно, что с вашими познаниями в этой теме, а за них говорит весь текст в первом посте, вам одному не хватит и 2х жизней чтобы окучить хотя бы 1% от 32MB SDRAM :) А текст обоснования применения такого кол-ва памяти вообще взрывает мозг :))) И посыпает пеплом весь остальной пудинг. Без обид но мне иногда кажется что подобные темы создаются по пьяне, обкурке или просто от нечего делать. Но чем бы детя не тешилось-лишь бы не *************

Re: о смене микроконтроллера.

Posted: Sun Dec 08, 2013 7:45 am
by XDA
denisvak wrote:Проблемы по больше части надуманные. теми или иными людьми :) Функционала STM32f4 выше крыши, готов поспорить вы не упретесь в проблемы с мотором даже V10 ни по железу, ни по производительности. Конечно если вы не будите писать код через попу. Неужели не понятно, что с вашими познаниями в этой теме, а за них говорит весь текст в первом посте, вам одному не хватит и 2х жизней чтобы окучить хотя бы 1% от 32MB SDRAM :) А текст обоснования применения такого кол-ва памяти вообще взрывает мозг :))) И посыпает пеплом весь остальной пудинг. Без обид но мне иногда кажется что подобные темы создаются по пьяне, обкурке или просто от нечего делать. Но чем бы детя не тешилось-лишь бы не *************
отвыкаем говорить за других, привыкаем говорить только за себя.

Re: о смене микроконтроллера.

Posted: Sun Dec 08, 2013 7:52 am
by denisvak
XDA
Вам сколько лет?

Сорри за офтоп!

Re: о смене микроконтроллера.

Posted: Sun Dec 08, 2013 7:57 am
by frig
у нас с Вами разные критерии точности и технического задания на итоговый результат, мы это уже выяснили :)
Вы хотите сделать аналог карбюратора, а мне нужен ЕЦУ, способный обеспечить максимальный перформанс.
Странное заявление. Проектом как минимум занимается не один russian и у каждого участника могут быть свои цели и задачи. Более того, в какой-то момент времени участник может внезапно отдать приоритет задаче, которая интересна только ему, например, или которую russian считает не приоритетной. В итоге этот участник получит результат, а russian получит патч. Да, russian может не принять патч из идеологических соображений, его может не устроить качество кода и так далее, но участник результат получит и при некотором стечении обстоятельств патч этот будет включен в общую ветки. Все довольны, все смеются. :D
Может быть и несколько громко, но видение russian это не истина в последней инстанции. Раз уж тут opensource вообще возможно форкнуть проект и воротить вообще что хочется.

Не зря одним из основных приоритетов является прозрачный и переносимый код. Такой код проще модифицировать, он слабо завязан на железо, а значит и перенос на другие платформы возможен.

В общем заявление про электронный карбюратор понятно не до конца. Ладно бы тут была жесткая водопадная модель и уже был готов проект, но ведь все не так.

Re: о смене микроконтроллера.

Posted: Sun Dec 08, 2013 8:25 am
by XDA
frig wrote:
у нас с Вами разные критерии точности и технического задания на итоговый результат, мы это уже выяснили :)
Вы хотите сделать аналог карбюратора, а мне нужен ЕЦУ, способный обеспечить максимальный перформанс.
Странное заявление. Проектом как минимум занимается не один russian и у каждого участника могут быть свои цели и задачи. Более того, в какой-то момент времени участник может внезапно отдать приоритет задаче, которая интересна только ему, например, или которую russian считает не приоритетной. В итоге этот участник получит результат, а russian получит патч. Да, russian может не принять патч из идеологических соображений, его может не устроить качество кода и так далее, но участник результат получит и при некотором стечении обстоятельств патч этот будет включен в общую ветки. Все довольны, все смеются. :D
Может быть и несколько громко, но видение russian это не истина в последней инстанции. Раз уж тут opensource вообще возможно форкнуть проект и воротить вообще что хочется.

Не зря одним из основных приоритетов является прозрачный и переносимый код. Такой код проще модифицировать, он слабо завязан на железо, а значит и перенос на другие платформы возможен.

В общем заявление про электронный карбюратор понятно не до конца. Ладно бы тут была жесткая водопадная модель и уже был готов проект, но ведь все не так.
если бы Вы были russian, то Вы бы поняли сразу, потому что мы с ним это обсуждали войсом :)
(это я к тому, что ответ был не для Вас :), просто замечание)

дело в том, что речь идёт про разные подходы к разработке.
russian хочет сделать ЕЦУ с нуля, потому что ему это интересно именно с нуля, проходя все ошибки.
я же хочу как минимум повторить по функционалу существующий у меня ЕЦУ (все его алгоритмы и решения я уже достаточно дизассемблировал и разобрал), а затем его улучшить под современное железо.

Его мотивы понятны потому что с настройкой двигателя я уже наигрался, а он ещё нет. Это очень увлекательное занятие и я его прекрасно понимаю :)

Re: о смене микроконтроллера.

Posted: Sun Dec 08, 2013 8:33 am
by frig
если бы Вы были russian, то Вы бы поняли сразу :)
Как я говорил - мнение russian не истина в последней инстанции. Я даже более того скажу, он частенько высказывается достаточно категорично, а уже в личной беседе говорит "ну это же только мое мнение" :D .

Re: о смене микроконтроллера.

Posted: Sun Dec 08, 2013 8:57 am
by XDA
frig wrote:
если бы Вы были russian, то Вы бы поняли сразу :)
Как я говорил - мнение russian не истина в последней инстанции. Я даже более того скажу, он частенько высказывается достаточно категорично, а уже в личной беседе говорит "ну это же только мое мнение" :D .
Основной мотив появления этой темы в том, что с моей точки зрения (исходя из практики настройки двигателей) ресурсов STM32 не хватит. Не вычислительных, а переферии. Уже сейчас из-за недостатка аппаратных ресурсов приходится поступаться точностью тайминга (russian с этим не согласен, человека можно убедить, но двигатель-то не обманешь...).
ПЛИС - очень удобная штука, в плане обвязки внешней периферии - например обсчёт реперного кольца на ПЛИС делается гораздо удобнее и проще. а на выходе можно ещё и заимплементить контроллер прерывания по углу коленвала/распредвала.
Но ПЛИС всегда были дороги, а тут внезапно обнаружил дешёвую (для ПЛИС такого уровня) платку с очень подходящей периферией на борту, поэтому и вынес её на обсуждение в тему.
(тем более, что на ней реализуется ядро АРМ, а значит существующие наработки не будут потеряны, включая экспиренс по программированию АРМ)

вот чего я точно не понимаю, почему вместо конструктивного обсуждения, некоторые (не Вы) форумчане начинают выдавать фейреические по зашкаливающиему самомнению посты.

Re: о смене микроконтроллера.

Posted: Sun Dec 08, 2013 9:08 am
by XDA
по части готовой имплиментации разнообразной периферии, стоит посмотреть тут: http://opencores.org/projects

Re: о смене микроконтроллера.

Posted: Sun Dec 08, 2013 9:23 am
by frig
Хорошо видно, что цена вас не особо волнует. +-100$ погоды, видимо, не делают.
В нашем случае все несколько иначе, цена важна. Результата можно достичь разными способами - можно реализовать программно, можно заплатить за аппаратную реализацию. Аппаратная это деньги на каждой плате, программная - единоразовое вложение, которое не влияет на цену каждой отдельной платы. Тут да, вопрос в подходах и в приоритетах, и при наших приоритетах, я считаю, железо выбрано правильно. Обратите внимание, что о качестве итогового продукта говорить в этом разрезе и на данном вообще смысла нет вообще.

Re: о смене микроконтроллера.

Posted: Sun Dec 08, 2013 9:38 am
by Maxi
Не стоит кидаться из крайности в крайность.

Пределы по цене - st10f276 или infenion tricore.
это 16разрядные процессоры на которых аппаратно строится ЛЮБОЙ ECU! для любого мотора. с розницей около 1000р.

в частности 276-й
32mips.
- 24 канала ацп 10 бит 5 вольт! (покрывает 1м чипом 100% потребностей в АЦП на ближайшие 10 лет без муторной обвязки)
- 32 канала capture/compare т.е. захват 3 сенсоров с мотора 12 катушек и 12 форсунок 4 датчика колеса и 1 остается про запас...
- 8 шимов.

Естественно все аппаратное. и не надо ни с какими циклонами разбираться...
(кстати отладочная плата для него есть уже в автомобильном исполнении в корпусе с разъемом и относительно недорого - а если из нее вычесть цену процессора и текстолита - так вообще бесплатно ;))))))

Re: о смене микроконтроллера.

Posted: Sun Dec 08, 2013 10:45 am
by KOT
да этот стм просто прекрасен своей перефирией под ECU, он специально под ECU то и заточен.
а еще есть SPC560P - вроде тоже не плох))

Re: о смене микроконтроллера.

Posted: Sun Dec 08, 2013 11:42 am
by Maxi
поправлюсь - tricore 32 разряда.

Re: о смене микроконтроллера.

Posted: Sun Dec 08, 2013 12:50 pm
by AndreyB
XDA wrote:Вы хотите сделать аналог карбюратора, а мне нужен ЕЦУ, способный обеспечить максимальный перформанс.
Как всё запущенно :(

@, я вот сейчас сижу и пытаюсь понять, будешь ли ты первым забанненным на этом форуме, или не будешь. К сожалению, на каждую твою ценную мысль приходится десяток ужас-ужаса :(

Re: о смене микроконтроллера.

Posted: Sun Dec 08, 2013 1:59 pm
by Mad Max
XDA, Давай действовать! мне твоя идея нравится.
Я готов купить классный проц и спаять ему переферию, тем более что она таже что и для Дискавери.
Но тоже получить афигенный универсальный мозг.
Могу даже на Субарике его тестить.
Кинь ссылку на плату, которую будем использовать.
Ну а с тебя софт...

Re: о смене микроконтроллера.

Posted: Sun Dec 08, 2013 4:21 pm
by XDA
Maxi wrote:Не стоит кидаться из крайности в крайность.

Пределы по цене - st10f276 или infenion tricore.
это 16разрядные процессоры на которых аппаратно строится ЛЮБОЙ ECU! для любого мотора. с розницей около 1000р.

в частности 276-й
32mips.
- 24 канала ацп 10 бит 5 вольт! (покрывает 1м чипом 100% потребностей в АЦП на ближайшие 10 лет без муторной обвязки)
- 32 канала capture/compare т.е. захват 3 сенсоров с мотора 12 катушек и 12 форсунок 4 датчика колеса и 1 остается про запас...
- 8 шимов.

Естественно все аппаратное. и не надо ни с какими циклонами разбираться...
(кстати отладочная плата для него есть уже в автомобильном исполнении в корпусе с разъемом и относительно недорого - а если из нее вычесть цену процессора и текстолита - так вообще бесплатно ;))))))
спасибо за подсказку - внимательно изучу :)))

Re: о смене микроконтроллера.

Posted: Sun Dec 08, 2013 4:23 pm
by XDA
Mad Max wrote:XDA, Давай действовать! мне твоя идея нравится.
Я готов купить классный проц и спаять ему переферию, тем более что она таже что и для Дискавери.
Но тоже получить афигенный универсальный мозг.
Могу даже на Субарике его тестить.
Кинь ссылку на плату, которую будем использовать.
Ну а с тебя софт...
плату я уже приобрёл, пробую в работе.
плюс Maxi пару идей подкинул - надо рассмотреть.
по результату - извещу :)

Re: о смене микроконтроллера.

Posted: Sun Dec 08, 2013 4:26 pm
by XDA
russian wrote:
XDA wrote:Вы хотите сделать аналог карбюратора, а мне нужен ЕЦУ, способный обеспечить максимальный перформанс.
Как всё запущенно :(

@, я вот сейчас сижу и пытаюсь понять, будешь ли ты первым забанненным на этом форуме, или не будешь. К сожалению, на каждую твою ценную мысль приходится десяток ужас-ужаса :(
Можешь и забанить - твоё право.

Re: о смене микроконтроллера.

Posted: Sun Dec 08, 2013 4:29 pm
by XDA
frig wrote:Хорошо видно, что цена вас не особо волнует. +-100$ погоды, видимо, не делают.
В нашем случае все несколько иначе, цена важна. Результата можно достичь разными способами - можно реализовать программно, можно заплатить за аппаратную реализацию. Аппаратная это деньги на каждой плате, программная - единоразовое вложение, которое не влияет на цену каждой отдельной платы. Тут да, вопрос в подходах и в приоритетах, и при наших приоритетах, я считаю, железо выбрано правильно. Обратите внимание, что о качестве итогового продукта говорить в этом разрезе и на данном вообще смысла нет вообще.
на фоне стоимости разломанного двигателя из-за ошибок в софте или железе - эти +-$100 не просматриваются.
на счёт качества итогового продукта я уже высказал своё предположение

Re: о смене микроконтроллера.

Posted: Mon Dec 09, 2013 10:23 am
by mpro
К проблеме 500*256 можно свестилюбое пожелание/требование к аппаратной части.
Пока ещё проблем с быстродействием не возникло, но:

1. мы везде где только можем прикрываемся chSysLock. А каком реальном времени мы можем говорить?
2. мои предчувствия - точности таймингов может перестать хватать
3. а вот ног уже под всё что угодно не хватает. это факт.
4. скоро и для основной переферии их будет мало. здравствуй перепиновка.

Теперь проблемы плис-ов

1. какое ядро есть у нас в доступе, и какие у него есть проблемы? есть ли под него си/что-то ещё?
2. код с веооятностью 99% получится не очень совместимым. Или нужна rusEfi Os, которая даёт абстракции типа драйвера ШИМ/ дпкв и.т.д.
3. температурный режим у этой платы какой?
4. тут будет веселее в плане обвязки. фактически мы не сможем убрать ни один чип.

в данной песочнице предлагаю собраться тем кому идея плисов близка и обсудить возможности решить эти проблемы. Может быть выделить специальную ветку в которой будет на первом этапе работа с плис как с сопроцессором? p.s. плата для управления форсунками непосредственного впрыска, которая сейчас разрабатывается будет с очень большой вероятностью или содержать свой плис или управляться платой с плисом.

p.p.s.переход на другой процессор (а не плис) - вообще имхо глупость. проблем столько же сколько от плиса а профита почти нет.

Re: о смене микроконтроллера.

Posted: Mon Dec 09, 2013 10:25 am
by mpro
кстати, такую же плату с циклоном закажу на днях

Re: о смене микроконтроллера.

Posted: Mon Dec 09, 2013 12:22 pm
by AndreyB
mpro wrote:К проблеме 500*256 можно свестилюбое пожелание/требование к аппаратной части.
Нет, проблема 500*256 - это когда нет алгоритмической подготовки, и нет осознания этого факта
mpro wrote:Может быть выделить специальную ветку в которой будет на первом этапе работа с плис как с сопроцессором?
Я сильно против. Напоминаю - заголовок форума у нас "An attempt to build an Engine Control Unit based on stm32.", и ресурсов у него хватает. А вот распыляться на яркие идеи не по делу - трата времени :(

Re: о смене микроконтроллера.

Posted: Mon Dec 09, 2013 4:32 pm
by XDA
russian wrote:Нет, проблема 500*256 - это когда нет алгоритмической подготовки, и нет осознания этого факта
не надо цепляться к примеру, который я привёл именно как ПРИМЕР таймера с джиттером менее одного такта таймера.
тем более, что ты не услышал то, что тебе говорят другие программисты со знаниями в программировании ЕЦУ.

Re: о смене микроконтроллера.

Posted: Mon Dec 09, 2013 6:46 pm
by zavdimka
Взять ПЛИС, запилить туда ядро линуха, причем скорее всего uClinux, и получить хорошие тайминги.
Путь не из легких, но тут народ бьется над куда более простыми вещами. Ничего плохого в этом нету, кроме избыточности.
Я сначала сидел считал сколько тактов уйдет на вход и выход из прерывания, как приоритеты расставлять и т.п. Потом посчитал погрешность вызванную ими по сравнению с поворотом коленчитого вала...Ну они как бы смешные.
Когда запустите линуху, отпишите, самому интересно. С ос не приходилось иметь дела покачто.