Если у кого-то в компиляторе этого флага нет - его проблемы! Мне вообще наплевать на компиляторы кроме gcc!
Я на гитхабе, в ЖЖ
Код: Выделить всё
SCB->CPACR = 0x0f << 20 ; /* set CP10 and CP11 Full Access */Код: Выделить всё
*((volatile uint8_t*)&SCB->CPACR+2) = 0xF0;Код: Выделить всё
rtt.println(1234.56768f); // 1234.5676; 1338t
rtt.println(1234.56768f * 55555); // 6.8586408E+07; 1674t
rtt.println(std::numeric_limits<float>::min()); // 1.1754943E-38; 1768t
rtt.println(float_char(buff, 1234.56768f)); // 1.234567626e3; 1429t
rtt.println(float_char(buff, 1234.56768f * 55555)); // 6.8586408e7; 1302t
rtt.println(float_char(buff, std::numeric_limits<float>::min())); // 1.175494352e-38; 1603tКхм, откуда в три раза больше накапало M0 что-ли?Reflector писал(а):Разница есть, но вовсе не катастрофическая
Код: Выделить всё
char * GetStrByIxZ(char const *s, int ix)
{
_Z11GetStrByIxZPKci: (+1)
0xB538 PUSH {R3-R5,LR}
0x4604 MOV R4,R0
0x460D MOV R5,R1
0xE003 B.N ??GetStrByIxZ_0
for (; --ix >= 0; s += strlen(s) + 1);
??GetStrByIxZ_1: (+1)
0x.... 0x.... BL strlen
0x4420 ADD R0,R4,R0
0x1C44 ADDS R4,R0,#+1
??GetStrByIxZ_0: (+1)
0x1E6D SUBS R5,R5,#+1
0x4620 MOV R0,R4
0xD5F8 BPL.N ??GetStrByIxZ_1
return (char *)s;
0xBD32 POP {R1,R4,R5,PC}
}Ну я-же описал условия проверки быстродействия - функция заглушка, которая просто перебирает байты на фиксированный адрес. То-есть минимальная задержка с линейной зависимостью от размера сообщения.Reflector писал(а):Можно сделать write() виртуальной и это значительно ускорит работу RTT, при этом немного замедлит работу всего остального...
Reflector писал(а):А плеваться потом не будешь? Там USB только с кварцем работает, только при тактировании от 48/72 MHz и на USB нет встроенной подтяжки![]()
Добавлено after 7 minutes 58 seconds:Eddy_Em писал(а):Зато там есть флоаты и всякие ништяки по работе с аналоговой периферией.