Пропуски зажигания при сборке GCC и новыми верс. IAR
Moderator: STC
-
- LQFP144 - On Top Of The Game
- Posts: 553
- Joined: Sun Nov 06, 2011 9:20 pm
- Location: Russia, Yekaterinburg
- Contact:
Re: Пропуски зажигания при сборке GCC и новыми верс. IAR
по адресу 0000002A и ниже (текстовый поиск в обоих листингах) явно заметны различия в работе оптимизатора, к примеру разворачивание функций.
Кстати вопрос для тех кто знает авр-ассемблер, что означают записи типа:
\ 0000001A REQUIRE _A_PORTD
\ 0000001A REQUIRE _A_PORTC
\ 0000001A REQUIRE _A_DDRD
\ 0000001A REQUIRE _A_DDRC
в листинге четвертой версии их нету....
Так же нашел существенные отличия в распределении и использовании стека, копмилятор версии 610 заметно хуже отработал.
Вообще чисто субьективно четвертая версия компилятора выдает более чистый и более оптимизированный код
Еще вопрос по GCC, вы пробовали собирать с опцией -O0 ?
Кстати вопрос для тех кто знает авр-ассемблер, что означают записи типа:
\ 0000001A REQUIRE _A_PORTD
\ 0000001A REQUIRE _A_PORTC
\ 0000001A REQUIRE _A_DDRD
\ 0000001A REQUIRE _A_DDRC
в листинге четвертой версии их нету....
Так же нашел существенные отличия в распределении и использовании стека, копмилятор версии 610 заметно хуже отработал.
Вообще чисто субьективно четвертая версия компилятора выдает более чистый и более оптимизированный код
Еще вопрос по GCC, вы пробовали собирать с опцией -O0 ?
-
- LQFP144 - On Top Of The Game
- Posts: 1664
- Joined: Fri Jul 01, 2011 2:10 pm
- Location: г Уфа
Re: Пропуски зажигания при сборке GCC и новыми верс. IAR
а можно ли , в исходный тест , засунуть какойнибуть , макрос или что то , чтобы компилировалось только на 4.21 версии ИАР , ну и под вин авр также ? ну чтобы пользователи , пока не найдется в чем проблема, не мучались в неведении ?
WAZ21051 gti 1.7i SECU3Ts + mm1.2.3(1)
ВАЗ21310 1.7i Я7.2 2001г
ВАЗ21310 1.7i Я7.2 2001г
-
- LQFP144 - On Top Of The Game
- Posts: 553
- Joined: Sun Nov 06, 2011 9:20 pm
- Location: Russia, Yekaterinburg
- Contact:
Re: Пропуски зажигания при сборке GCC и новыми верс. IAR
хм, гугль и документация к компилятору в помощь.
с gcc подобное делается в make файле через определение версии gcc
с gcc подобное делается в make файле через определение версии gcc
-
- QFP80 - Contributor
- Posts: 33
- Joined: Thu Apr 12, 2012 5:32 am
Re: Пропуски зажигания при сборке GCC и новыми верс. IAR
У меня GCC под М16 не собирает - памяти контроллера не хватает.nikll wrote:Еще вопрос по GCC, вы пробовали собирать с опцией -O0 ?
Кстати, пошивка с IAR 4.21 работает без пропусков...
Мой след в истории: http://skodafelicia.ru/publ/secu_3/6-1-0-78
-
- LQFP144 - On Top Of The Game
- Posts: 1664
- Joined: Fri Jul 01, 2011 2:10 pm
- Location: г Уфа
Re: Пропуски зажигания при сборке GCC и новыми верс. IAR
ну вот еще один победивший призраков )) удачи на дороге ! )))
WAZ21051 gti 1.7i SECU3Ts + mm1.2.3(1)
ВАЗ21310 1.7i Я7.2 2001г
ВАЗ21310 1.7i Я7.2 2001г
- STC
- LQFP144 - On Top Of The Game
- Posts: 2420
- Joined: Fri Oct 22, 2010 10:47 pm
- Location: Ukraine, Kiev
- Contact:
Re: Пропуски зажигания при сборке GCC и новыми верс. IAR
Это скорее всего перечисление внешних связей - переменных используемых в данной функции. В данном случае это ячейки памяти в ОЗУ соответствующие регистрам портов.\ 0000001A REQUIRE _A_PORTD
\ 0000001A REQUIRE _A_PORTC
\ 0000001A REQUIRE _A_DDRD
\ 0000001A REQUIRE _A_DDRC
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
SECU-3.org (Русский)
SECU-3.org (English)
SECU-3 Club ВКонтакте
SECU-3 EMS Project Facebook
- STC
- LQFP144 - On Top Of The Game
- Posts: 2420
- Joined: Fri Oct 22, 2010 10:47 pm
- Location: Ukraine, Kiev
- Contact:
Re: Пропуски зажигания при сборке GCC и новыми верс. IAR
Мне удалось скомпилировать прошивку с GCC 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
SECU-3.org (Русский)
SECU-3.org (English)
SECU-3 Club ВКонтакте
SECU-3 EMS Project Facebook
- STC
- LQFP144 - On Top Of The Game
- Posts: 2420
- Joined: Fri Oct 22, 2010 10:47 pm
- Location: Ukraine, Kiev
- Contact:
Re: Пропуски зажигания при сборке GCC и новыми верс. IAR
Прошивка в репозитории подрихтована для сборки с использованием более старых версий AVR-GCC (WinAVR).
Проверено на той версии WinAVR, на которую давал сслыку ender11.
Есть пара нюансов.
1. Если будет ругаться на опцию -fno-inline-small-functions, то соответствующую строчку в Makefile нужно закомментировать:
#CFLAGS += -fno-inline-small-functions
2. Я еще не разобрался со строчкой кода в bootldr.h:
Компилятор ругается на нечетный адрес, возникающий если не убрать /2. Или в новой версии компилятора GCC поведение отличается от более старых (в более новых нужно использовать адрес слова), или отличий нет (везде байтовый адрес), а просто /2 нужно убрать (тогда непонятно как оно работает с последней версией WinAVR).
Проверил что при использовании версии: gcc version 4.1.1 (WinAVR 20070122) компилятор уже не ругается.
Все. Разобрался и исправил проблему с boot_loader_start(). Проблема заключалась в разном поведении компиляторов GCC разных версий.
Страя версия использовала команду CALL, а новая ICALL. Использовал ассемблерную вставку чтобы навсегда отбить охоту компилятору заниматься творчеством.
Теперь код полностью пригоден для компиляции более старыми версиями GCC.
Проверено на той версии WinAVR, на которую давал сслыку ender11.
Есть пара нюансов.
1. Если будет ругаться на опцию -fno-inline-small-functions, то соответствующую строчку в Makefile нужно закомментировать:
#CFLAGS += -fno-inline-small-functions
2. Я еще не разобрался со строчкой кода в bootldr.h:
Code: Select all
#define boot_loader_start() ((void (*)())((SECU3BOOTSTART+0xA)/2))()
Проверил что при использовании версии: gcc version 4.1.1 (WinAVR 20070122) компилятор уже не ругается.
Все. Разобрался и исправил проблему с boot_loader_start(). Проблема заключалась в разном поведении компиляторов GCC разных версий.
Страя версия использовала команду CALL, а новая ICALL. Использовал ассемблерную вставку чтобы навсегда отбить охоту компилятору заниматься творчеством.
Теперь код полностью пригоден для компиляции более старыми версиями GCC.
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
SECU-3.org (Русский)
SECU-3.org (English)
SECU-3 Club ВКонтакте
SECU-3 EMS Project Facebook
-
- LQFP144 - On Top Of The Game
- Posts: 1664
- Joined: Fri Jul 01, 2011 2:10 pm
- Location: г Уфа
Re: Пропуски зажигания при сборке GCC и новыми верс. IAR
пропусков нет ?
WAZ21051 gti 1.7i SECU3Ts + mm1.2.3(1)
ВАЗ21310 1.7i Я7.2 2001г
ВАЗ21310 1.7i Я7.2 2001г
- STC
- LQFP144 - On Top Of The Game
- Posts: 2420
- Joined: Fri Oct 22, 2010 10:47 pm
- Location: Ukraine, Kiev
- Contact:
Re: Пропуски зажигания при сборке GCC и новыми верс. IAR
Я не проверял на железе.пропусков нет ?
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
SECU-3.org (Русский)
SECU-3.org (English)
SECU-3 Club ВКонтакте
SECU-3 EMS Project Facebook