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

IAR vs KEIL


ART_ME

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

Нет, это это вовсе не провокация спора любителей этих IDE , а чисто практический вопрос.

Есть некий древний проект под CMSIS,  написанный в KEIL. И в этом самом KEIL он работает. А вот после перевода этого проекта в IAR ни в какую. При этом все ошибки  компиляции успешно устранены. Проект касается  I2C.

В чем состоит принципиальное отличие этих IDE, которое сказалось в данном случае?

 

Никогда не спорьте с дураками. Они опустят Вас до своего уровня и победят за счет опыта.

 

 

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

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

21 минуту назад, ART_ME сказал:

В чем состоит принципиальное отличие этих IDE, которое сказалось в данном случае?

Ваш вопрос очень ограничивает возможности ответа, поэтому он не корректный.

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

Можно сделать все! Но чем больше можно, тем больше нельзя!

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

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

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

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

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

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

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

Нужно делать то, что нужно. А то, что не нужно, делать не нужно. (С) Винни Пух

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

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

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

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

11 минут назад, ruhi сказал:

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

Из специфики я увидел только то, что IAR не пожелал понимать __enable_fiq(); , и пришлось написать ему void __enable_fiq();

Ну и еще то, что KEIL просит указать в настройках частоту кварца, в то время как, насколько я понял, мои 8 МГц по умолчанию ставятся при раскомментировании

#define STM32F10X_MD  в  stm32f10x.h

По мелочи много чего попробовал, но докатившись до отказа МК принимать загрузку прошивки  (чем перепугал изрядно), бросил это занятие.

Хотелось бы как-то поосмыссленнее искать причину проблемы.  

Изменено пользователем ART_ME

Никогда не спорьте с дураками. Они опустят Вас до своего уровня и победят за счет опыта.

 

 

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

8 часов назад, MasterElectric сказал:

__enable_fiq(); это из CMSIS он не может его не понимать

IAR без void не понимает, пишет implicit declaration. А в мануале на IAR это  __enable_fiq исключительно как void __enable_fiq  упоминается.

Т.к. проблема наблюдается еще до старта прерываний, на этапе инициализации,  понятно, что искать проблему надо в таймингах I2C, но в KEIL то имеющиеся тайминги работают! 

8 часов назад, MasterElectric сказал:

 посмотрите специфические для данной среды настройки проекта

Ставить\снимать по-очереди все галки в настройках проекта и смотреть что будет?  

Изменено пользователем ART_ME

Никогда не спорьте с дураками. Они опустят Вас до своего уровня и победят за счет опыта.

 

 

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

16 часов назад, ART_ME сказал:

Хотелось бы как-то поосмыссленнее искать причину проблемы.  

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

Можно сделать все! Но чем больше можно, тем больше нельзя!

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

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

Т.к. и I2C, и ногодрыг имеют прямое отношение к CMSIS, то возникло подозрение, что в IAR наблюдается конфликт версий CMSIS.

В исходнике CMSIS представлен тремя файлами:  core_cm3.h      core_cmFunc.h      core_cmInstr.h

При этом видимо предполагается, что  core_cm3.c      core_cmFunc.c      core_cmInstr.c       IDE выискивает сам, по крайней мере в исходнике этих файлов нет.

Отсюда появилась версия, что у KEIL и IAR эти файлы разные. 

Попытка использовать галку "Use CMSIS" в настройках IAR приводит к несистематическому отказу STM32 от загрузки, которая устраняется только чисткой его памяти через утилиту ST-LINK.

Получается, что мне надо где-то найти  core_cmFunc.c   и  core_cmInstr.c  ?

Или я уже бред несу?  :wub:

ЗЫ. Кстати  stm32f10x.c  и  system_stm32f10x.c , соответствующие приложенным к проекту  stm32f10x.h  и  system_stm32f10x.h тоже ведь должны откуда-то взяться?

 

Кто в курсе таких тонкостей?  

 

 

 

Изменено пользователем ART_ME

Никогда не спорьте с дураками. Они опустят Вас до своего уровня и победят за счет опыта.

 

 

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

В общем получается так.

У меня есть скачанный с ST CMSIS для STM32F103C8, файл core_cm3.h имеет версию 1.3 

В исходнике лежит файл core_cm3.h версии 2.1.

Попытка замены в проекте core_cm3.h версии 2.1 на версию 1.3 приводит к букету ошибок.

Содержимое файлов core_cm3.h версии 2.1 и версии 1.3  заметно разное.

Кроме того, что в 2.1 core_cm3.h сходу рассказывается про MISRA, он содержит еще и перечень прилагаемых к нему файлов, а именно: 

#include <stdint.h>                      /*!< standard types definitions                      
#include "core_cmInstr.h"                /*!< Core Instruction Access                    
#include "core_cmFunc.h"                 /*!< Core Function Access                      

что соответствует проекту.

Буду благодарен подсказке где найти CMSIS версии 2.1

ЗЫ. Файл core_cm3.h версии 2.1 приложен.

 

core_cm3.h

Изменено пользователем ART_ME

Никогда не спорьте с дураками. Они опустят Вас до своего уровня и победят за счет опыта.

 

 

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

9 часов назад, snn_krs сказал:

версии 2.1

Спасибо, но там нет файлов с расширением .с.

Может я чего не понимаю, но по идее: 

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

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

Тем не менее, если не секрет,  где Вы взяли 2.1? Я находил такие в CubeFW. Видимо файлы .с запакованы в самом Cube.

Еще такие же можно увидеть в самом KEIL в каталоге PACK. Но там тоже похоже, что файлы .с KEIL их как-то сам находит.

В IAR эти .h  кстати тоже есть, но уже другие по содержанию. 

Изменено пользователем ART_ME

Никогда не спорьте с дураками. Они опустят Вас до своего уровня и победят за счет опыта.

 

 

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

Нашел у себя древнюю библиотеку - STM32F10XFWLIB. Так в ней аккурат все те же core_cmInstr.h и core_cmFunc.h, но версии 3.00

ИМХО это означает, что автор программы создавал её в те времена, когда SPL еще не существовала.

Поэтому буду искать самый древний IAR и ставить его на XP под варю. :rolleyes:

Никогда не спорьте с дураками. Они опустят Вас до своего уровня и победят за счет опыта.

 

 

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

5 hours ago, ART_ME said:

где Вы взяли 2.1?

В файле STM32F4xx_DSP_StdPeriph_Lib_V1.0.1.zip. Скирдую все старье. Файла .с может не быть. CMSIS пишет фирма ARM, все остальные их используют. Не знаю как у IAR, а у Keil на сайте есть все старые версии.

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

EWARM-550.1-full под варей XP SP2  - заработало!!!!  :dance2:

Изменено пользователем ART_ME

Никогда не спорьте с дураками. Они опустят Вас до своего уровня и победят за счет опыта.

 

 

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

Вкратце.

IAR 5.50 потребовал файл cmis_iar.h

Судя по инету, это последствие перехода на новую версию IAR, т.е. автор писал свою программу на еще более древнем cmsis.

Перенос со старого IAR на свежий не составил особых проблем,  разве что понадобилось упростить настройку HSE, которая в оригинале работала через раз на третий.

То бишь я вписал всего лишь:

RCC->CR |= RCC_CR_HSEON;                // Enable HSE
while((RCC->CR & RCC_CR_HSERDY) == 0);  // Wait till HSE is ready
        

Кстати, если кому не в лом, объясните плиз, зачем автор вместо вышепоказанных двух строчек натворил код ниже? 

Как оно работает рассказывать не обязательно, только: а нафига это ему было надо собственно?

//____________________Вклчение HSE_______________________//
  			#if d_CR_HSEON != 0
			RCC->CR |= RCC_CR_HSEON;			//__HSE - вкл.
			#if d_CR_HSEBYP != 0
				RCC->CR |= RCC_CR_HSEBYP;		//__Внешний ГЕНЕРАТОР - вкл.
			#endif
			i = 0;
			while(!(RCC->CR & RCC_CR_HSERDY))
			{
				i++;
				if(i >= 400)
				{	return (Error_1);
				}
			}
		#endif

 

Изменено пользователем ART_ME

Никогда не спорьте с дураками. Они опустят Вас до своего уровня и победят за счет опыта.

 

 

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

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

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

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

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

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

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

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

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

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

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