Пропуски зажигания при сборке GCC и новыми верс. IAR

Обсуждение прошивок SECU-3. Discussion of SECU-3 firmware.

Moderator: STC

User avatar
STC
LQFP144 - On Top Of The Game
Posts: 2420
Joined: Fri Oct 22, 2010 10:47 pm
Location: Ukraine, Kiev
Contact:

Пропуски зажигания при сборке GCC и новыми верс. IAR

Post by STC »

Если собирать прошивку при помощи GCC и IAR-ом версии > 4.21, то наблюдаются пропуски зажигания.
Я тестировал на WinAVR 20100110. Более старые версии не проверял. Если у вас есть информация по более старым версиям GCC, то будет интересно.

Цель данной темы - выяснить и исправить причину описанного поведения.
Для начала нужно попытаться локализовать проблему. Наиболее вероятно что проблема в модуле ckps.c, так как этот модуль непосредственно отвечает за зажигание.
1. Нужно попробовать увеличить размер стека. В опциях компилятора;
2. Нужно убедиться что в момент пропусков микроконтроллер не перезагружается;
2. Убедиться что опции оптимизации кода не влияют на проявление проблемы;
3. Попробовать локализовать проблему путем компиляции выбранных модулей разными версиями компиляторов с последующей линковкой. Если такое возможно.
Author of the SECU-3 project. SECU-3 Engine control unit / Ignition control system
SECU-3.org (Русский)
SECU-3.org (English)
SECU-3 Club ВКонтакте
SECU-3 EMS Project Facebook
skodafelicia
QFP80 - Contributor
Posts: 33
Joined: Thu Apr 12, 2012 5:32 am

Re: Пропуски зажигания при сборке GCC и новыми верс. IAR

Post by skodafelicia »

STC wrote:2. Нужно убедиться что в момент пропусков микроконтроллер не перезагружается;
Как?
STC wrote:2. Убедиться что опции оптимизации кода не влияют на проявление проблемы;
Это покопаю...
Мой след в истории: http://skodafelicia.ru/publ/secu_3/6-1-0-78
User avatar
STC
LQFP144 - On Top Of The Game
Posts: 2420
Joined: Fri Oct 22, 2010 10:47 pm
Location: Ukraine, Kiev
Contact:

Re: Пропуски зажигания при сборке GCC и новыми верс. IAR

Post by STC »

Проверить перезагружался ли микроконтроллер можно используя биты регистра:
MCU Control and Status Register – MCUCSR
В даташите больше информации.

В принципе, если происходит перезагрузка, то загорается СЕ на пол секунды. Так что перезагрузку будет видно.
Но я хочу сказать что микроконтроллер необязательно может перезагружаться. Может просто происходить слетание программы (например, прыжок по некорректному адресу), а потом восстановление.
Author of the SECU-3 project. SECU-3 Engine control unit / Ignition control system
SECU-3.org (Русский)
SECU-3.org (English)
SECU-3 Club ВКонтакте
SECU-3 EMS Project Facebook
nikll
LQFP144 - On Top Of The Game
Posts: 553
Joined: Sun Nov 06, 2011 9:20 pm
Location: Russia, Yekaterinburg
Contact:

Re: Пропуски зажигания при сборке GCC и новыми верс. IAR

Post by nikll »

Попробуйте отключить оптимизацию (флаг -O0), более свежие версии gcc лудьше оптимизируют код, к примеру я сталкивался с тем что банальный цикл задержки типа:
for (uint16_t i = 0; i < 10000; i++);
превращался по сути в:
uint16_t i = 10000;
чтобы такого не происходило следует использовать volatile переменные в тех местах где требуется явное отключение оптимизации.
так же оптимизатор частенько разворачивает циклы и функции.

как вариант найти ближайшую предыдущую версию которая компилирует нормально и сравнить асемблерные листинги.
User avatar
STC
LQFP144 - On Top Of The Game
Posts: 2420
Joined: Fri Oct 22, 2010 10:47 pm
Location: Ukraine, Kiev
Contact:

Re: Пропуски зажигания при сборке GCC и новыми верс. IAR

Post by STC »

Да, кстати насчет volatile nikll правильно заметил. Я мог забыть кое-где поставить его.
Author of the SECU-3 project. SECU-3 Engine control unit / Ignition control system
SECU-3.org (Русский)
SECU-3.org (English)
SECU-3 Club ВКонтакте
SECU-3 EMS Project Facebook
CrAzYMaN
LQFP112 - Up with the play
Posts: 124
Joined: Wed Jan 18, 2012 2:27 pm

Re: Пропуски зажигания при сборке GCC и новыми верс. IAR

Post by CrAzYMaN »

хм, а может у меня с датчиком проблем нет? и перегружается МК?
User avatar
STC
LQFP144 - On Top Of The Game
Posts: 2420
Joined: Fri Oct 22, 2010 10:47 pm
Location: Ukraine, Kiev
Contact:

Re: Пропуски зажигания при сборке GCC и новыми верс. IAR

Post by STC »

На тех бинарях прошивок что в релизе пропусков не должно быть.
Author of the SECU-3 project. SECU-3 Engine control unit / Ignition control system
SECU-3.org (Русский)
SECU-3.org (English)
SECU-3 Club ВКонтакте
SECU-3 EMS Project Facebook
Stranger21
LQFP144 - On Top Of The Game
Posts: 1664
Joined: Fri Jul 01, 2011 2:10 pm
Location: г Уфа

Re: Пропуски зажигания при сборке GCC и новыми верс. IAR

Post by Stranger21 »

бинарники собранные STC без пропусков , проверено .

когда у меня были пропуски от 5го ИАР , то перезагрузки процессора я не наблюдал , ни в живую , ни в протеусе .
WAZ21051 gti 1.7i SECU3Ts + mm1.2.3(1)
ВАЗ21310 1.7i Я7.2 2001г
ender11
LQFP112 - Up with the play
Posts: 197
Joined: Sat Dec 11, 2010 4:05 pm

Re: Пропуски зажигания при сборке GCC и новыми верс. IAR

Post by ender11 »

http://sourceforge.net/projects/winavr/ ... /20060421/
-- тут winavr со старым добрым gcc 3-й версии.
и он таки не компилирует проект. может, кто допилит?
skodafelicia
QFP80 - Contributor
Posts: 33
Joined: Thu Apr 12, 2012 5:32 am

Re: Пропуски зажигания при сборке GCC и новыми верс. IAR

Post by skodafelicia »

nikll wrote:как вариант найти ближайшую предыдущую версию которая компилирует нормально и сравнить асемблерные листинги.
2 листинга файла ckps на версии 4.21 и 6.10 - отличия на лице, тока я в них не разбираюсь (( - может кто умный посмотрит... Там-же и опции компилятора видны - я ничего не менял (кроме путей), все по дефолту из релиза
Собранную прошивку на 4.21 еще не тестил, завтра залью...
Attachments
ckps_421A.zip
версия 4.21А
(25.18 KiB) Downloaded 919 times
ckps_610.zip
версия 6.10
(26.19 KiB) Downloaded 890 times
Мой след в истории: http://skodafelicia.ru/publ/secu_3/6-1-0-78
Post Reply