Size: a a a

2021 March 08

DB

Denis Barinov in STM32
Valeriy Osipov
утро вечера мудреннее, пойду, у нас тут строймагазы наконец открыли, может там на стеллажи посмотрю и меня озарит
Может опции компилятора разные? Ну там оптимизация или ещё что?
источник

VO

Valeriy Osipov in STM32
Denis Barinov
Может опции компилятора разные? Ну там оптимизация или ещё что?
в последней попытке исполнялись оба варианта в одном проекте одной дебаг сессией
источник

DB

Denis Barinov in STM32
HAL победил, ура
источник

DB

Denis Barinov in STM32
Valeriy Osipov
в последней попытке исполнялись оба варианта в одном проекте одной дебаг сессией
А ещё в HAL есть __IO атрибут
источник

VO

Valeriy Osipov in STM32
И? Ну volatile, который говорит "не оптимизировать переменную". Что это даёт в дебаг компиляции с нулевой оптимизацией?
источник

S

Sergey in STM32
Alex Lotuhov
По умолчанию в среде стоит использование reduce c/c++ что означает использование кастрированной nano-lib. Поставь использование standard c/c++. Если не поможет, тогда при включённых опциях standard c/c++ вывод printf измени на
#include <inttypes.h>
int64_t t;
printf("%" PRId64 "\n", t);
Где эти настройки?
источник

DB

Denis Barinov in STM32
Valeriy Osipov
И? Ну volatile, который говорит "не оптимизировать переменную". Что это даёт в дебаг компиляции с нулевой оптимизацией?
Наверное ни чего. Просто в глаза бросилось
источник

AL

Alex Lotuhov in STM32
Sergey
Где эти настройки?
источник

S

Sergey in STM32
Все это время не видел, раз 10 там ползал. Спасибо. Заработало, только флешь добавилось с 14 до 34 % ) Буду разбираться.
источник

AL

Alex Lotuhov in STM32
Sergey
Все это время не видел, раз 10 там ползал. Спасибо. Заработало, только флешь добавилось с 14 до 34 % ) Буду разбираться.
Ничего не поделать. Это плата за использование полноценной библиотеки. Либо отказаться от вывода 64 битных значений
источник

S

Sergey in STM32
У меня загрузчик, уйду на 32 битные числа, вспять )
источник

D

Dr Zlo in STM32
Sergey
printf("%llu\r\n",18446744073709551615);
#define PRI_UINT64_C_Val(value) ((unsigned long) (value>>32)), ((unsigned long)value)
#define PRI_UINT64 "%lx%lx"

printf("My Text" PRI_UINT64 "MyText - Text", PRI_UINT64_C_Val (tmp.Address));
источник

D

Dr Zlo in STM32
все решается сильно проще
источник

DB

Denis Barinov in STM32
Dr Zlo
все решается сильно проще
👌
источник

D

Dr Zlo in STM32
ну и настолько просто оно решается только в hex ах)
источник

D

Dr Zlo in STM32
но я бы несколько раз подумал про аналог этогого же, но для десятичной системы, перед тем как полноценный стдлиб затаскивать
источник

DB

Denis Barinov in STM32
Dr Zlo
ну и настолько просто оно решается только в hex ах)
Ну да, с dec сложнее. С другой стороны отлаживать можно и с полноценным стдлиб, а потом в релизе оставить урезанный
источник

DB

Denis Barinov in STM32
Каждый сам выбирает наименьшее зло для себя
источник
2021 March 09

VO

Valeriy Osipov in STM32
stD
И это всё очень странно.
короче мысль пока такая. непонятно в случае с регистрами сколько раз процессор успевает опросить регистр TXE и как долго это длится. Так же непонятно, сколько раз в хале if (TXE) успевает выдать фалс и происходит подсчет таймаута. Если в ХАЛЕ if, else timeout и потом вторая проверка TXE выдает true, и всё это заняло 800 нс, а while(not TXE) занимает по опросу ну например 1мс, или первый опрос while и заход на круг пустого цикла до второго опроса занимает больше по времени, то может быть так оно и выходит, что в хале быстрее. короче надо асм посмотреть, сколько команд процессор шурует на while
источник

VO

Valeriy Osipov in STM32
stD
И это всё очень странно.
Короче оптимизацию включать надо и не смотреть на результаты в Debug build без оптимизации.
источник