View unanswered posts | View active topics It is currently Tue May 22, 2018 10:41 pm



Reply to topic  [ 55 posts ]  Go to page 1, 2, 3, 4, 5, 6  Next
Пропуски зажигания при сборке GCC и новыми верс. IAR 
Author Message
LQFP144 - On Top Of The Game
User avatar

Joined: Fri Oct 22, 2010 10:47 pm
Posts: 2415
Location: Ukraine, Kiev
Если собирать прошивку при помощи 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


Fri May 11, 2012 1:09 pm
Profile ICQ WWW
QFP80 - Contributor

Joined: Thu Apr 12, 2012 5:32 am
Posts: 33
STC wrote:
2. Нужно убедиться что в момент пропусков микроконтроллер не перезагружается;

Как?
STC wrote:
2. Убедиться что опции оптимизации кода не влияют на проявление проблемы;

Это покопаю...

_________________
Мой след в истории: http://skodafelicia.ru/publ/secu_3/6-1-0-78


Fri May 11, 2012 1:40 pm
Profile
LQFP144 - On Top Of The Game
User avatar

Joined: Fri Oct 22, 2010 10:47 pm
Posts: 2415
Location: Ukraine, Kiev
Проверить перезагружался ли микроконтроллер можно используя биты регистра:
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


Fri May 11, 2012 2:03 pm
Profile ICQ WWW
LQFP144 - On Top Of The Game

Joined: Sun Nov 06, 2011 9:20 pm
Posts: 553
Location: Russia, Yekaterinburg
Попробуйте отключить оптимизацию (флаг -O0), более свежие версии gcc лудьше оптимизируют код, к примеру я сталкивался с тем что банальный цикл задержки типа:
for (uint16_t i = 0; i < 10000; i++);
превращался по сути в:
uint16_t i = 10000;
чтобы такого не происходило следует использовать volatile переменные в тех местах где требуется явное отключение оптимизации.
так же оптимизатор частенько разворачивает циклы и функции.

как вариант найти ближайшую предыдущую версию которая компилирует нормально и сравнить асемблерные листинги.


Fri May 11, 2012 2:51 pm
Profile ICQ WWW
LQFP144 - On Top Of The Game
User avatar

Joined: Fri Oct 22, 2010 10:47 pm
Posts: 2415
Location: Ukraine, Kiev
Да, кстати насчет 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


Fri May 11, 2012 2:57 pm
Profile ICQ WWW
LQFP112 - Up with the play

Joined: Wed Jan 18, 2012 2:27 pm
Posts: 124
хм, а может у меня с датчиком проблем нет? и перегружается МК?


Fri May 11, 2012 8:45 pm
Profile
LQFP144 - On Top Of The Game
User avatar

Joined: Fri Oct 22, 2010 10:47 pm
Posts: 2415
Location: Ukraine, Kiev
На тех бинарях прошивок что в релизе пропусков не должно быть.

_________________
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


Fri May 11, 2012 10:48 pm
Profile ICQ WWW
LQFP144 - On Top Of The Game

Joined: Fri Jul 01, 2011 2:10 pm
Posts: 1664
Location: г Уфа
бинарники собранные STC без пропусков , проверено .

когда у меня были пропуски от 5го ИАР , то перезагрузки процессора я не наблюдал , ни в живую , ни в протеусе .

_________________
WAZ21051 gti 1.7i SECU3Ts + mm1.2.3(1)
ВАЗ21310 1.7i Я7.2 2001г


Sat May 12, 2012 4:10 am
Profile
LQFP112 - Up with the play

Joined: Sat Dec 11, 2010 4:05 pm
Posts: 197
http://sourceforge.net/projects/winavr/files/WinAVR/20060421/
-- тут winavr со старым добрым gcc 3-й версии.
и он таки не компилирует проект. может, кто допилит?


Sat May 12, 2012 6:42 pm
Profile
QFP80 - Contributor

Joined: Thu Apr 12, 2012 5:32 am
Posts: 33
nikll wrote:
как вариант найти ближайшую предыдущую версию которая компилирует нормально и сравнить асемблерные листинги.

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


Attachments:
File comment: версия 4.21А
ckps_421A.zip [25.18 KiB]
Downloaded 163 times
File comment: версия 6.10
ckps_610.zip [26.19 KiB]
Downloaded 162 times

_________________
Мой след в истории: http://skodafelicia.ru/publ/secu_3/6-1-0-78
Sat May 12, 2012 9:58 pm
Profile
Display posts from previous:  Sort by  
Reply to topic   [ 55 posts ]  Go to page 1, 2, 3, 4, 5, 6  Next

Who is online

Users browsing this forum: No registered users and 2 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Powered by phpBB® Forum Software © phpBB Group
Designed by ST Software for PTF. ColorizeIt.