ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Вторник
25 марта
1501668 Топик полностью
VVB (27.02.2025 07:57, просмотров: 191) ответил ЫЫyкпy на А когда это attribute в двойных скобках из GCC стали стандартом? Авторы стандартов С/С++ так и не сподобились стандартизовать расширения необходимые для embedded программирования. В результате что GCC, что IAR решают одинаковые проблемы каждый своим способом, и все эти способы одинаково не стандартные. Лично для меня преимущества IAR это наличие вменяемой документации и DLIB - аккуратно обезжиренная плюсовая библиотека.
Наиболее распространённые (armcc, clang) поддерживают расширения gcc для упаковки структур, атрибутов и прочего. iarcc выпендривается в силу тяжёлого наследия прошлого; armcc тоже выпендривался (и даже имел свой несовместимый ABI), но всё-таки решился перейти на синтаксис gcc. 

Насчёт Tasking не знаю, не пользовал.

И я нигде не говорил, что __attribute__((..)) это стандарт. Но де-факто этот синтаксис использует большое количество не-gcc инструментов.

TI отказался от поддержки своего ARM компилятора, а всю команду весьма разумно перевёл на поддержку GNU Tools ARM Embedded и Linaro. Тоже __attibute__(()).

Бизнес-код для embedded (код, реализующий логику), использующий GCC и упакованные структуры, без каких-либо телодвижений заработает на ПК.


cmsis_compiler.h

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

Ничего хорошего в этом нет. "Мы сами создаём себе трудности, чтобы затем их мужественно преодолевать".