-
- Embedded String Functions Ozelot(83 знак., 12.12.2014 10:16)
- Давно и успешно пользую, равно как и FatFs. Chan рулит, дай бог ему здоровьичка! - MBedder(25.11.2019 11:43)
- Свою printf хер ты напишешь. Её и в библиотеках нормальной часто нет. По крайней мере так вот сходу. Если очень неймётся --> см. ссылку. - fk0(11.12.2014 12:04, ссылка)
- Обновление, новый URL --> - fk0(22.11.2019 21:27, ссылка)
- Спасибо! Ценная штука! - Evgeny_CD(11.12.2014 13:44)
- fflush(stdout) вызови или "\n" в конец строки добавь. Чё ты хотел. Чорная магия с абортами, клонированиями и убийствами детей. То ли дело православный ассемблер. - fk0(11.12.2014 12:02)
- Да! Забыл напомнить. Чувствуются там благородные юниксовые корни :-) - SciFi(11.12.2014 13:05)
- можно сделать свой принтф с использованием библиотечной функции форматирования строки. Nikolay801_(305 знак., 11.12.2014 11:19)
- Спасибо! Хорошая подсказка! - Dingo(11.12.2014 11:24)
- делал вывод в SWO (EmBlocks) Vit(1266 знак., 11.12.2014 10:44)
- Ну не знаю... Я устанавливал GCC ARM Embedded, там нужно было только добавить _write(). Ну и, наверное, нужно --specs=nano.specs -lnosys. - SciFi(11.12.2014 10:20, ссылка)
- Сейчас попробую! - Dingo(11.12.2014 10:27)
- А я использую sprintf() из старенькой самбы. Он не вызывает malloc(), весит на порядок меньше и при желании легко превращается в printf(). - SciFi(11.12.2014 10:48, ссылка)
- malloc никакой sprintf не вызывает. Он вообще только переполнение буфера вызывает. malloc нужен скорей для fopen() и для setvbuf(). Подозреваю, что в библиотеке у автора где-то поздняя инициализация, оттого и malloc. - fk0(11.12.2014 12:09)
- Извольте ознакомиться --> - SciFi(11.12.2014 13:07, ссылка)
- malloc никакой sprintf не вызывает. Он вообще только переполнение буфера вызывает. malloc нужен скорей для fopen() и для setvbuf(). Подозреваю, что в библиотеке у автора где-то поздняя инициализация, оттого и malloc. - fk0(11.12.2014 12:09)
- А я использую sprintf() из старенькой самбы. Он не вызывает malloc(), весит на порядок меньше и при желании легко превращается в printf(). - SciFi(11.12.2014 10:48, ссылка)
- Сейчас попробую! - Dingo(11.12.2014 10:27)
- абсолютно не в курсе про Ваш GCC, но по моему нужно только fputc написать. - Nikolay801_(11.12.2014 10:14)
- Написано. Не помогло. - Dingo(11.12.2014 10:18)
- Ты вначале хоть озвучь, какая у тебя libc. А то может и колёс-то нет, по которым стучать. В общем случае -- нужны интерфейсные с ОС функции вроде open, read, write, close, несколько ещё. Так newlib, например, работает. В более тяжёлых случаях fk0(886 знак., 11.12.2014 12:15)
- Фуф. Запустил. Оптимизатор выкинул вызов printf перед основным циклом. перетащил в цикл - тут уже не посмел оптимизировать. - Dingo(11.12.2014 13:42)
- man setvbuf flush puts и \n в конце - fk0(11.12.2014 13:57)
- Гы-гы. Танцы с бубном. Продолжайте, пожалуйста, это так увлекательно :-) SciFi(48 знак., 11.12.2014 13:45)
- Ну как... вот так. Dingo(187 знак., 11.12.2014 15:13 - 15:19)
- Чукча не читатель. fk0 уже 2 раза написал, что нужно делать flush. Оптимизатор к этому имеет приблизительно такое же отношение, как и фаза Луны. - SciFi(11.12.2014 15:25, ссылка)
- Не думал, что так критично. Теперь знать буду. А равны ли fflush и \n по действию? - Dingo(11.12.2014 15:36)
- Нет, конечно. fflush() не делает перенос строки. - SciFi(11.12.2014 15:39)
- Я в контексте "вывести на устройство сейчас же". - Dingo(11.12.2014 15:40)
- В этом контексте да. - SciFi(11.12.2014 15:47)
- Некоторые libc, в частности микрософтовская, но и некоторые из мира embedded, не умеют _IOLBF... - fk0(12.12.2014 00:14)
- В этом контексте да. - SciFi(11.12.2014 15:47)
- Я в контексте "вывести на устройство сейчас же". - Dingo(11.12.2014 15:40)
- Нет, конечно. fflush() не делает перенос строки. - SciFi(11.12.2014 15:39)
- Не думал, что так критично. Теперь знать буду. А равны ли fflush и \n по действию? - Dingo(11.12.2014 15:36)
- Чукча не читатель. fk0 уже 2 раза написал, что нужно делать flush. Оптимизатор к этому имеет приблизительно такое же отношение, как и фаза Луны. - SciFi(11.12.2014 15:25, ссылка)
- Ну как... вот так. Dingo(187 знак., 11.12.2014 15:13 - 15:19)
- Нашёл пример, с которым работает (но скорость уарта не могу угадать. А сообщения - да, пытается печатать.). а со своим проектом не могу сростить. Собирается, но не работает. - Dingo(11.12.2014 13:04 - 13:09)
- STM32F4xx_DSP_StdPeriph_Lib_V1.4.0 и цельнотянутая GCC Dingo(2203 знак., 11.12.2014 13:02)
- Фуф. Запустил. Оптимизатор выкинул вызов printf перед основным циклом. перетащил в цикл - тут уже не посмел оптимизировать. - Dingo(11.12.2014 13:42)
- extern "C" ? анекдот: "По колесам стучал? Стекло протирал?" - Nikolay801_(11.12.2014 10:21)
- Так. Вдумчивый анализ ключей подсказал заменить -std=c99 на -std=gnu99 и asm стал перевариваться. Работать пока не заставил. - Dingo(11.12.2014 12:58)
- Нашел рабочий пример. Копирую к себе syscalls.c Одним и тем же компилятором он собирается, в составе моего - нет. Ругается на register char * stack_ptr asm ("sp"); До этого просто переправлял в __asm__ Видимо, тут что-то другое... Dingo(3315 знак., 11.12.2014 11:29)
- Ну таки оно их цепляет, раз некоторым из вызовов управление передаётся. То есть - синтаксически нормально всё. - Dingo(11.12.2014 10:26)
- Ты вначале хоть озвучь, какая у тебя libc. А то может и колёс-то нет, по которым стучать. В общем случае -- нужны интерфейсные с ОС функции вроде open, read, write, close, несколько ещё. Так newlib, например, работает. В более тяжёлых случаях fk0(886 знак., 11.12.2014 12:15)
- Написано. Не помогло. - Dingo(11.12.2014 10:18)
- Embedded String Functions Ozelot(83 знак., 12.12.2014 10:16)