Перейти к содержанию

Выбор Микроконтроллера Для Разработки Эбу


Рекомендуемые сообщения

Итак предисловие:

В последнее время всё чаще и чаще народ начинает задумываться о реализации самодельного ЭБУ. Идеи реализаций бывают схожими, а бывают в корне различными. Например мой первый самодельный ЭБУ работал на PIC18f4550. Пользователь Evgen75mk рассматривает вариант реализации ЭБУ на аналоговом таймере 555, пользователь rusefi создаёт ЭБУ на базе stm32f4 ну а участники проекта VUNGUL реализовали свой отладочный блок для разработки ЭБУ на базе микроконтроллера семейства HCS12. Хотелось бы отметить, что самодельный ЭБУ VEMS реализован на atmega128 (16Mhz), Megasquirt 1 - MC68hc908gp32 (8Mhz), Megasquirt 2 -mc9s12c64 (24Mhz), Megasquirt 3 MC9s12XEP100 + сопроцессор XGATE (50Mhz)

из стоковых SAAB TRIONIC MC332 (motorola 32bit), Motronic 1.3 2xMCS51.как видно вариантов и очевидно, что за каждым выбором кроются некоторые идеи.

Причины выбора того или иного мк бывают разные поэтому в в этой теме предлагаю обсуждать вопрос о выборе МК для разработки ЭБУ.

Желательно свой выбор достойно аргументировать ("просто его должно хватить" это не ответ предоставляйте по возможности реальные факты, осциллограммы, вырезки из даташитов и т.д.)

Хорошо бы если по каждому предлагаемому процу описание было бы в виде

- Название МК, тактовая частота производительность.

- Периферийные устройства

- Доступность компилятора (платный\бесплатный\ условно бесплатный)

- Доступность интерфейса для отладки

- Другие аргументы (цена, надёжность и тд)

Итак,

проект VUNGUL на данный момент работает

- mc9s12c128 (24MHz) производительность до 24МИПС

- 1х 16бит таймер 8 каналов (модулей захвата-сравнения)

- 1х 10бит АЦП 8 каналов - 5В

- 1x USART

-1x CAN

- Возможность выводв внешней шины, для внешней памяти и периферийных устройств.

- Компилятор GCC - бесплатный (даже для коммерческих проектов) интегрируется с ide Eclipse

- бесплатный (open source) отладчик TBDML - стыкуется с gdb

- цена 8$ -

Обсуждение перенесено из другой темы


Ошипке поправьте

спс сделано.

Cortex M4F для этих (полиномов) целей не хватает.

Смотря как подходить.

Месяца 2 назад проводил benchmark и сравнения HCS12 и Cortex M4F (в этом тесте также участвовали Valjokk, Vungul, v0stap)

Cortex M4F - заместо заявленных 210 МИПС на нелинейном коде разгонялся только до реальных 85-90. (flash-wait state =5, Fosc=8 Core Clk-168Mhz, динамическое предсказание - ВКЛ. компилятор GCC, математика с целыми числами без знака, оптимизация -0, прога исполнялась из флеша )

Но это ещё не всё, при дизассембле кода на Cortex M4F было выявлено, что предоставленные периферийные библиотеки написаны далеко от оптимального и обычная запись в порт происходит за 3-5 инструкций итого 85-90\4 и получаем реальные 20 МИПС (worst-case scenario)

HSC12 выдавал свои заявленные 24 МИПС при 24 МГц с целыми числами без знака на нелинейном коде, оптимизация -0.

Для сравнения при дизассембле кода на HSC12 было выявлено что прямая запись в регистры (в том числе и в порт) длятся 1-2 инструкции и получаем производительность вполне соизмеримую с Cortex M4F.

Безусловно на прямолинейном коде Cortex M4F намного быстрее HSC12, но его скорость очень падает при первом if, switch или jmp из-за сброса конвейера команд при переходе и медленного флеша, который работает всего на 168\5=33.6 Мгц

Так-что вывод - Cortex M4F мощный только при исполнении из RAM. или на линейном коде.

Для расчёта полиномов не обязательно "задрачивать" проц инструкциями с плавающей точкой, все коэфициенты можно масштабировать в char или short integer.

так, как делают в КИХ и БИХ фильтрах при реализации на ПЛИС.

в этом случае даже HSC12 может справиться с поставленой задачей.

Ссылка на комментарий
Поделиться на другие сайты

Реклама: ООО ТД Промэлектроника, ИНН: 6659197470, Тел: 8 (800) 1000-321

Но это ещё не всё, при дизассембле кода на Cortex M4F было выявлено, что предоставленные периферийные библиотеки написаны далеко от оптимального и обычная запись в порт происходит за 3-5 инструкций итого 85-90\4 и получаем реальные 20 МИПС (worst-case scenario)

Вот это место не понял. Мы собираемся порт дёргать в каждой атомарной операции вычислений? Вероятно нет. Мне кажется, что это деление на 4 - методологически не верно. Время записи в порт конечно же играет роль, но не деление на 4.

Ссылка на комментарий
Поделиться на другие сайты

20% скидка на весь каталог электронных компонентов в ТМ Электроникс!

Акция "Лето ближе - цены ниже", успей сделать выгодные покупки!

Плюс весь апрель действует скидка 10% по промокоду APREL24 + 15% кэшбэк и бесплатная доставка!

Перейти на страницу акции

Реклама: ООО ТМ ЭЛЕКТРОНИКС, ИНН: 7806548420, info@tmelectronics.ru, +7(812)4094849

24	 GPIO_Write(GPIOD, 0x0000);
0800030c: mov.w r0, #3072 ; 0xc00
08000310: movt r0, #16386 ; 0x4002
08000314: mov.w r1, #0
08000318: bl 0x8000480 <GPIO_Write>
25	 for(int i=0; i<1000000; i++ );
......

	 GPIO_Write:
08000480: push {r7}
08000482: sub sp, #12
08000484: add r7, sp, #0
08000486: str r0, [r7, #4]
08000488: mov r3, r1
0800048a: strh r3, [r7, #2]
485		 GPIOx->ODR = PortVal;
0800048c: ldrh r2, [r7, #2]
0800048e: ldr r3, [r7, #4]
08000490: str r2, [r3, #20]
486	 }
08000492: add.w r7, r7, #12
08000496: mov sp, r7
08000498: pop {r7}
0800049a: bx lr

rusefi, я понимаю твоё беспокойство, но как сам предлагал мне когда то взгляни сам на дизассембл обычной функции GPIO_Write(); с аккадемической точки зрения. Когда вызываешь функцию она загружает передаваемые параметры (в этом случае регистры общего назначения r0, r1)

затем вызывается сама функция GPIO_Write(); которая в моём случае находится по адресу 0x8000480, итого уже 4 инструкции

Сколько инструкций заимёт выполнение GPIO_Write() думаю, что сам можешь посчитать.

Итого при тестах опытным путём была получена цифра 4 и 20МИПС подразумевает то, что если писать код таким стилем

GPIO_Write();
Timer1_Write();
Timer2_Write();
USART_Write();
CAN_Write();
<something>_Write();

то невдаваясь в подробности каждая строчка будет исполняться со скоростью примерно 20 МИПС

Чтобы небыть голословным привожу дизассембл кода под HCS12 в котором вызывается функция, которая начинает "заряжать" катушку Б

0000c07a <.LM8>:
Ignition(COIL_B,DWELL);
c07a: f6 02 50 ldab 0x250 <.Ldebug_info0+0x3>
c07d: ca 10	 orab #0x10
c07f: 7b 02 50 stab 0x250 <.Ldebug_info0+0x3>

После этого думаю не сложно сделать выбор что будет работать быстрее 3 инструкции при 24МИПС или около 15-18 инструкций которые испольнятся со скоростью 80-90 МИПС

Мы собираемся порт дёргать в каждой атомарной операции вычислений? Вероятно нет

безусловно запись в порт это лишь пример. Но представь ситуацию вызывается прерывание модуля сравнения в котором

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

При вычислении количества топлива безусловно СТМ будет намного быстрее. Но нет смысла в точных расчётах, если нет железа, которое это точно исполнит. к томуже на расчёт топлива у нас есть "целая вечность" по сравнению с такими критическими процессами как зажигание, где задержка на 16 мкС приводит к задержке зажигания на целый градус при 10000об\мин. А у тебя ещё и RTOS c планировщиком задач и приоритетами.

Забегая вперёд отмечу, что у мотороллы есть ещё несколько существеных плюсов

1. внешняя шина, к которой можно подключать внешнюю память и внешние периферийные устройства (их несложно реализовать на ПЛИС)

2. Более лучшая помехозащащённость (питание 5 В, АЦП 5В)

Можно безконечно рассеждать об этом, но эта тема отдельного топика.

Ссылка на комментарий
Поделиться на другие сайты

Выбираем схему BMS для заряда литий-железофосфатных (LiFePO4) аккумуляторов

Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ очень важен контроль процесса заряда и разряда для избегания воздействия внешнего зарядного напряжения после достижения 100% заряда. Инженеры КОМПЭЛ подготовили список таких решений от разных производителей. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

[1. внешняя шина, к которой можно подключать внешнюю память и внешние периферийные устройства (их несложно реализовать на ПЛИС)

stm32 не остановился на 168Mhz stm32f4407 - у них уже есть 180Mhz STM32F427 как раз с контроллером памяти. Но 5в они конечно от этого не стали :(

Ссылка на комментарий
Поделиться на другие сайты

К тому же контроллер памяти это не внешняя шина.

http://www.chibios.org/dokuwiki/doku.php?id=chibios:community:plans:external_ram

Или мегагерцы неправильные, и шина-контроллер-память тоже не правильные?

Ссылка на комментарий
Поделиться на другие сайты

не понял что ты хотел сказать этим сказать ты хочешь чтобы тебе помогли сконфигурировать FSMC???

Или мегагерцы неправильные

Опять не понял поясни.

и шина-контроллер-память тоже не правильные?

FSMC - это интерфейс памяти и кроме памяти туда ничего не повесить.

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

Ссылка на комментарий
Поделиться на другие сайты

ты хочешь чтобы тебе помогли сконфигурировать FSMC???

Мда, как всё запущено... Даже не знаю, где ты такое прочитал.

Опять не понял поясни.

Это был сарказм

Для того чтобы повесить внешнее периферийное устройство нужна полная шина ...

А CAN/SPI/I2C - тоже неправильные шины? Как-то выходит, что куда не кинь - stm32 неправильный процессор? А ARM и не знает :(

Ссылка на комментарий
Поделиться на другие сайты

HSC12 выдавал свои заявленые 24 МИПС при 24 МГц с целыми числами без знака на нелинейном коде, оптимизация -0.

Для сравнения при дизассембле кода на HSC12 было выявлено что прямая запись в регистры (в том числе и в порт) длятся 1-2 инструкции и получаем производительность вполне соизмеримую с Cortex M4F.

Безусловно на прямолинейном коде Cortex M4F намного быстрее HSC12, но его скорость очень падает при первом if, switch или jmp из-за сброса конвейера команд при переходе и медленного флеша, который работает всего на 168\5=33.6 Мгц

Так-что вывод - Cortex M4F мощный только при исполнении из RAM. или на линейном коде.

Да, именно поэтому я от него скорее всего откажусь в своем проекте, хотя алгоритм без ветвений, можно чисто на плис/логике решить.

Было интересно несколько проектов перекинуть на Cortex, ради интереса.

Без флоатов и на AVR8 все пашет и успевает. Буду более интересный процессор искать.

Видел сегодня систему на ат89S51 и ведь успевает всё - 20 тысяч оборотов, разумеется, без флоатов. И ту же самую систему видел на 68-й серии в 97 году.

Во как!

Ссылка на комментарий
Поделиться на другие сайты

процессор искать

будущее процов это однозначно ARM + FPGA на одном кристале посмотри на

http://www.xilinx.com/products/silicon-devices/soc/index.htm

У ST есть серия stm32Rxxxxx - для решения реал-таимовских задач.

Главное какойбы проц не взял советую проводить бенчмарк (мне когда-то советовали ну а теперь сам убедился в этом)

Ссылка на комментарий
Поделиться на другие сайты

Если делать правильно, то нужно использовать процессор из современного ЭБУ - например Power Architecture например MPC5634M или SPC56x семейство.

Там и 150+Mhz, и 5вольт, и автомобильное исполнение, и FPU. Вот только что-то я не вижу их в продаже отдельно без отладочных плат.

Изменено пользователем rusefi
Ссылка на комментарий
Поделиться на другие сайты

процессор искать

будущее процов это однозначно ARM + FPGA на одном кристале посмотри на

http://www.xilinx.co...s/soc/index.htm

Вот ещё fpslic = AVR+FPGA, на процессор можно чисто сервисные задачи выкинуть: обороты, расход топлива, температура движка и передача всего этого дела на БК или панель.

Очень интересная задача ECU/EDC на плис.

Ссылка на комментарий
Поделиться на другие сайты

Чудесатость fpslic не ищется, наверное пороект прибили.

http://www.xilinx.co...s/soc/index.htm - пробежал вдоль, не подступиться с наскока.

Вот:

www.haoyuelectronics.com/ebay/icore/Schematic.pdf

www.ebay.com/itm/FPGA-ARM-core-board-STM32-Cyclone-IV-4-Development-board-stm32f103VC-EP4CE6E144-/180933898787

Изменено пользователем Alex1958
Ссылка на комментарий
Поделиться на другие сайты

www.haoyuelectronics.com/ebay/icore/Schematic.pdf

блин 1:1 как я думал vungul II делать, только работа с периферией через FSMC это маньячить не по детски нужно

из 4Gb адресного пространства выделить 1кб под периферию .....

К стате сам с какими ПЛИС работаешь и какой софт, кабеля используешь. (если не секрет)

Я сам сижу на Альтеровских MAX. (пока хватает) Quartus web edition из под linux ну и кабель USB Blaster

Ссылка на комментарий
Поделиться на другие сайты

Я сам не работаю с плис, хотя в комманде есть плисовод.

Последний раз был мах вроде, это так давно было.

только работа с периферией через FSMC это маньячить не по детски нужно

из 4Gb адресного пространства выделить 1кб под периферию .....

Надо платку заказать.

Есть DSO203, а в нём также STM+плис :)

Ссылка на комментарий
Поделиться на другие сайты

Cortex M4F - заместо заявленных 210 МИПС на нелинейном коде разгонялся только до реальных 85-90. (flash-wait state =5...

Есть мнение, что было важно не забыть про ART accelerator у STM32F4: с ним 0 wait state будет, который и даст 210 DMIPS

Примерно вот так - http://electronicdes...g-0-wait-memory

Изменено пользователем rusefi
Ссылка на комментарий
Поделиться на другие сайты

ART Accelerator only caches the first 128-bit word of a sequential code

что тут не понятно?

любой if, switch, while, jmp bsr, и тому подобные сбрасывают конвеер команд. тк не возможно до выполнения инструкции пердсказать условие будет true или false

поэтому 210 DMIPS это больше смахивает на коммерческий ход.

210 мипс можно реально получить только но п р я м о л и н е й н о м коде а ещё и с DMA.

Ссылка на комментарий
Поделиться на другие сайты

  • 1 месяц спустя...

Хорошая связка получилась CPLD+STM32F4.

Но пока без жесткой реалтайм ОС (алгоритм линейный).

Нужно выбрать ОСьку для Cortex'а. Предложения?

Вообще можно всё в CPLD запихнуть, а карты распологать, как в старые добрые времена, в 27С512.

Ссылка на комментарий
Поделиться на другие сайты

Фантазеры! Похвастались поверхностными знаниями о новых сериях МК, а о задачах ЭБУ, временных интервалах процессов - ни слова. Давайте, хватайте "сильнейший" МК и грузите его эмуляцией низкоуровневых процессов высокоуровневым языком. Потом удивляйтесь, почему тормозит. Кстати, функции зажигания не обязательно должны входить в функции блока управления двигателем (ЭБУ). На мой взгляд, рассуждения без конкретики - пустая болтовня. Без обид.

Ссылка на комментарий
Поделиться на другие сайты

Фантазеры! Похвастались поверхностными знаниями о новых сериях МК, а о задачах ЭБУ, временных интервалах процессов - ни слова. Давайте, хватайте "сильнейший" МК и грузите его эмуляцией низкоуровневых процессов высокоуровневым языком. Потом удивляйтесь, почему тормозит. Кстати, функции зажигания не обязательно должны входить в функции блока управления двигателем (ЭБУ).

Это к какому посту относится?

/*тут был текст, обойдётесь*/

Изменено пользователем Alex1958
Ссылка на комментарий
Поделиться на другие сайты

Это ко всей теме относится. Проскочило замечание, что еще и функции зажигания требуются, где малейшее отклонение от заданных величин опережения чревато плохими последствиями. Весь ваш разговор - "беседа на отвлеченные темы", т.к. никакой конкретики не несет. В таком контексте разговора можете сразу останавливаться на Intel-е. И берите сразу Core7. Не промахнетесь. :)

Это я к чему. Сначала надо бы... а впрочем обойдетесь.

Ссылка на комментарий
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить в этой теме...

×   Вставлено с форматированием.   Восстановить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...