-
Постов
1 242 -
Зарегистрирован
-
Посещение
-
Победитель дней
9
Сообщения, опубликованные VladislavS
-
-
15 минут назад, gazpar сказал:
Именно поэтому и хочу найти лёгкую либу
Да не бывает лёгких и тяжёлых стандартных библиотек. Все они плюс/минус одинаковые, так как реализуют одинаковый функционал, заданный стандартом языка программирования.
15 минут назад, gazpar сказал:Т.к. я не знаю, чего там наворотили коллеги
Ну посмотрите map-файл хотя бы, что там весит столько.
15 минут назад, gazpar сказал:Мне же нужно оптимизировать внутреннюю либу сделанную коллегами.
Вот они обрадуются когда какой-нибудь класс перестанет работать из-за вашей "оптимизации". И почему вместо этого вы решили стандартную библиотеку оптимизировать? Её явно не дураки писали - там всё в порядке. Пусть ваши коллеги свой код и оптимизируют.
15 минут назад, gazpar сказал:Ключами компиляции/линковки удалось ужать до 350кБ.
Можно глянуть на ключи? Похоже?
CPP_FLAGS := -ffunction-sections -fdata-sections -fno-exceptions -fno-rtti -Wall LD_FLAGS := -Wl,--gc-sections -nostartfiles -specs=nano.specs -specs=nosys.specs
-
21 минуту назад, gazpar сказал:
А это черезчур много для имплементированого функционала.
Какой функционал из стандартной библиотеки у вас используется? Ну чтобы понять масштаб проблемы. Я вот только вчера к AVR-GCC прикрутил Libstdc++ версии 20201103. Использую по полной C++20 type_traits, concepts и т.д. Ни одного лишнего байте в прошивку не попало.
-
Под какую архитектуру хоть?
И, хоть убейте, не понимаю постановку задачи. Какая разница сколько занимает собранная библиотека? В прошивку будет включено только то что используется.
-
Что вы понимаете под размером библиотеки?
-
У него же такие же таймеры как у STM32? Как там внутри HAL-а устроено не знаю, но если вдруг где-то стоит бит preload, то перед разрешением прерываний надо сделать
TIMx->EGR = TIM_EGR_UG; TIMx->SR = 0;
-
char body[src_len+1];
-
Обязательна таблица дескрипторов (4 записи по 8 байт) и для нулевой точки буферы (минимум 2 по 8). Можно ли таблицу дескрипторов делать не полной - не пробовал, да и не сделают они погоду.
-
EEPROM простым копированием не инициализируется. Пожтому само оно никак не занулится, только ручками из программы.
-
Нахреназачем вам вообще скатер на эту область памяти? Скатер нужен, чтобы линкер размещал туда данные. Исключаете нужный вам участок из общей памяти и работаете с ним в программе как хотите. Хотите стираете, хотите заполняете. Скатер то тут причём? -
5 минут назад, cfif сказал:
тогда лучше проверять таким образом
Да, компилятор сам знает как лучше проверить бит в регистре. У тех же STM32 есть контроллеры на Cortex-M0, М0+, M3, M4, M7. Компилятор сам сделает нужную оптимизацию под конкретное ядро.
-
4 минуты назад, haker_fox сказал:
А ставить IAR 9.30 для новых проектов считает нерентабельно.
Учитывая вашу локацию и сложившуюся геополитическую ситуацию, слово "нерентабельно" вызывает диссонанс. 🙂
-
2 минуты назад, haker_fox сказал:
А IAR 8.40 не поддерживает
Если что, крайний IAR ARM на сегодня 9.30 и С++17 поддерживает полностью.
-
9 минут назад, Arlleex сказал:
Лично я жду, когда поддержку C++21 впилят в кейл.
Никогда. Есть стандарт С++20 и следующий будет, скорее всего, С++23.
10 часов назад, cfif сказал:if(0B1 & GPIOB_BASE -> IDR >> 10)
Автор зачем-то пытается помочь компилятору. Это плохая практика.
-
11 минут назад, haker_fox сказал:
Мне ещё нравится, что IAR теперь поддерживает
Вообще-то, это стандарт языка. Было бы странно, если бы IAR его не поддерживал.
-
Я бы проверил настроку питания. Может быть там не во всех конфигурациях можно шить. И тактирование, тоже могут быть ограничения. С этим чипом не работал, чисто предположения.
-
9 минут назад, razrab83 сказал:
я пробовал юзать auto - очень не удобно. Я глядя на код должен точно знать её тип. мне нужно видеть float asd;
Для простых типов auto, конечно же, не нужно. Но, когда работаешь с шаблонами, типы могут очень сложно выглядеть, это раз. Могут вообще быть разными (автоматически выведенными) в зависимости от параметров и тогда без auto вообще никак не напишешь.
-
А вот так эклипс умеет? Тут IDE показала автоматически выведенные типы.
-
3 минуты назад, razrab83 сказал:
в эклипсе все таки попродвинутей. показывает возвращяемое значение и аргументы.
VS и IAR тоже показывают
5 минут назад, razrab83 сказал:но в эклипсе они не мешают, т.к. они выскакивают только по нажатию Ctrl+пробел.
Ну так это включается/выключается в настройках редактора. В эклипсе нельзя на постоянку включить разве?
В прследних версиях IAR, кстати, с автодополнениями и подсказками уже лучше. По нескольким буквам слова выбирать не умеет, а по началу слова норм. И подсказки инфомативные
У Keil своё видение этого процесса. По одной любой букве слова фильтрует. По двум неподряд уже нет.
А вот подсказок с аргументами нет.
-
А мне все эти свистоперделки только мешают. Имея возможность писать код в VS или IAR, я выбираю аскетичный IAR.
-
-
Десятипальцевый набор текста. Какая такая мышка?
-
1
-
-
1 час назад, razrab83 сказал:
вы пишете код. руки на клавиатуре... нужно две строки поменять местами. ваши действия?
Проверил. Само как-то так сделалось : Home - Shift+End - Ctrl+X - подвести курсор на место вставки - Ctrl+V
-
Китайские клоны с алика справятся с задачай всего за $20.
-
1
-
-
2 минуты назад, dimka76 сказал:
И в обход низзя
Вы плохо осведомлены :)
Библиотеки C++ для встраиваемых систем
в Cредства разработки для МК
Опубликовано · Пожаловаться
Это точно. 350к кода это год писать не разгибаясь 🙂 Хотя, с дуру и хрен сломать можно.
Вот, например, реализация USB-CDC c "C++ на максималке". 2340 байт, из которых только таблица векторов прерываний 400 байт.