- Vote on answer
- posted
20 years ago
AVR GCC&IAR
- Vote on answer
- posted
20 years ago
- Vote on answer
- posted
20 years ago
- Vote on answer
- posted
20 years ago
- Vote on answer
- posted
20 years ago
- Vote on answer
- posted
20 years ago
- Vote on answer
- posted
20 years ago
- Vote on answer
- posted
20 years ago
- Vote on answer
- posted
20 years ago
- Vote on answer
- posted
20 years ago
- Vote on answer
- posted
20 years ago
- Vote on answer
- posted
20 years ago
- Vote on answer
- posted
20 years ago
- Vote on answer
- posted
20 years ago
Всем привет!
Alexey Krasnov писал к Unrau Alexander Wed, 14 Jan 2004 14:36:19 +0000 (UTC):
AK> IAR кстати тоже не безгрешен. Пару раз вызов функции пропустил (полдня AK> искал ошибку).
Можно примерчик, когда проявляется такая ошибка?
AK> С оптимизацией тоже не все гладко - компилятор очень любит выносить AK> одинаковые куски кода (порой, состоящие из пары команд и ret) в AK> подпрограммы даже на самом высоком уровне оптимизации _по_ _скорости_, AK> что выглядит, мягко говоря нелогично. Версия 2.28A.
Галка у "Always do cross call optimization" стоит? Ну и чего ты от него хочешь, если сам его попросил это делать?
- Vote on answer
- posted
20 years ago
- Vote on answer
- posted
20 years ago
- Vote on answer
- posted
20 years ago
Hello Igor,
IU> А в целом я хочy сказать, что твои опасения по-поводy овеpхеда пpиyвеличины. IU> Для меня этот аpгyмент являлся так же самым веским. Hо опасения были pазвеяны IU> после начала писания на Си и pазбоpа полyченного кода. Комниляция весьма IU> "yмная". Безyсловно не во всех слyчаях, но идеала не бывает. Мне пеpеход на Си IU> дался весьма сложно, во многом из-за опыта писания на ассемблеpе и знания IU> Паскаля. Hо где-то недели чеpез тpи-четыpе я понял, что этот шаг, пеpеход на IU> Си, был сделан совеpшенно пpавильно.
Следующий шаг - освоение RTOS :) Тоже много чего облегчает.
- Vote on answer
- posted
20 years ago
Привет, 15 января 2004 г., 7:44:37, ты писал(а):
AK>> IAR кстати тоже не безгрешен. Пару раз вызов функции AK>> пропустил (полдня AK>> искал ошибку). AV> Можно примерчик, когда проявляется такая ошибка?
Если б я смог воспроизвести ее в простом примере. Исправил и забыл.
AK>> С оптимизацией тоже не все гладко - компилятор очень любит AK>> выносить AK>> одинаковые куски кода (порой, состоящие из пары команд и AK>> ret) в AK>> подпрограммы даже на самом высоком уровне оптимизации _по_ AK>> _скорости_, AK>> что выглядит, мягко говоря нелогично. Версия 2.28A. AV> Галка у "Always do cross call optimization" стоит? Ну и чего ты от него AV> хочешь, если сам его попросил это делать
О! Помогло, большое спасибо!
Всего хорошего.
- Vote on answer
- posted
20 years ago
DO> Значит этот кусок пишется на встроенном или внешнем асме, какие проблемы? DO> Я как DO> раз и предостерегаю от крайностей - или все асм или все 100% портабельный DO> С.
Так отож. Работа непосредственно с периферией (тут уже умное слово HAL пролетало :-) может быть и на асме выписана, если очень надо. А остальное.... Тут я компиляторы гонял - размер кода интересовал. Так из-под Keil-овый исходник путём добавления в начале всего лишь
#define idata #define code flash // или другое нужное по вкусу typedef unsigned char bit;
скомпилировался без ошибок и предупреждений
IAR 1.40 для mega103 avr-gcc для mega128 mspgcc для msp430f147 mcc18 для pic18fxx20
При этом исходник не планировался быть портабельным, если бы планировался, то у него в compatib.h было бы typedef bit bool; дабы на MCS51 не завязываться и везде по исходнику было бы bool вместо bit.
Просто это "верхний" уровень, логика работы устройства, подсчёт чего надо, обмен через радиомодем, печать... Вот оно и писалось на С (а не на C51, AVR-C и т.д.).
Да, объём скомпилированного кода в зависимости от кристалла и опций болтался от 9.7 до 14K, в исходнике под 2700 "плотных" строк. "плотных" - имеются ввиду мои предпочтения писать if () { // ... ... // ... } else { ... // ... }
а не // ... if () { // ... ... } else { // ... ... }
wbr,
- Vote on answer
- posted
20 years ago