Применение printf в stm32f4
PRE SCRIPT:
Те, для кого английский не проблема, могут прочесть статью здесь
Там все по теме принтф гораздо лучше чем у меня. Жаль, я поздно ее обнаружил.Рекомендую!
Так долго боролся с printf на stm32f4 discovery, что решил оставить заметку на память. От печки начинать не буду — предполагается что среда разработки уже функционирует.
Итак, у меня имеется плата stm32f4 discovery, воткнутая в usb, Archlinux с пакетами stlink-git,gcc-arm-none-eabi. Библиотека STM32F4xx_DSP_StdPeriph_Lib_V1.0.1 скачана, makefile взят здесь же — we.easyelectronics.ru/storm_ua/esche-odin-shablon-proekta-pod-stm32-na-gcc.html(спасибо коллеге storm_ua) и слегка подкорректирован. Для пробы написан helloword — лампочки мигают. Дальше собственно борьба с printf. Просто добавить include <stdio.h> и sprintf ( о printf пока не говорим — куда выводить? но sprintf вроде должен работать) не получилось. Масса сообщений о ненайденных функциях _sbrk_r, _exit и тому подобных. Добавляем, как рекомендуется файл syscalls.c. В нем должны быть прописаны реализации системных функций применительно к конкретному процессору. Либо просто пустые заглушки к этим фукциям.
Читать дальше
Те, для кого английский не проблема, могут прочесть статью здесь
Там все по теме принтф гораздо лучше чем у меня. Жаль, я поздно ее обнаружил.Рекомендую!
Так долго боролся с printf на stm32f4 discovery, что решил оставить заметку на память. От печки начинать не буду — предполагается что среда разработки уже функционирует.
Итак, у меня имеется плата stm32f4 discovery, воткнутая в usb, Archlinux с пакетами stlink-git,gcc-arm-none-eabi. Библиотека STM32F4xx_DSP_StdPeriph_Lib_V1.0.1 скачана, makefile взят здесь же — we.easyelectronics.ru/storm_ua/esche-odin-shablon-proekta-pod-stm32-na-gcc.html(спасибо коллеге storm_ua) и слегка подкорректирован. Для пробы написан helloword — лампочки мигают. Дальше собственно борьба с printf. Просто добавить include <stdio.h> и sprintf ( о printf пока не говорим — куда выводить? но sprintf вроде должен работать) не получилось. Масса сообщений о ненайденных функциях _sbrk_r, _exit и тому подобных. Добавляем, как рекомендуется файл syscalls.c. В нем должны быть прописаны реализации системных функций применительно к конкретному процессору. Либо просто пустые заглушки к этим фукциям.
Читать дальше
Заминированный retarget printf в CooCox/CoIDE
Стал разбираться в последнем CoIDE с semihosting (возможность делать вывод в консоль через JTAG/SWD) и обнаружил интересный баг, на разбор которого убил некоторое время. Поскольку мина уже обезврежена, то делюсь с теми, кто ещё не успел на ней подорваться.
Читать дальше
Читать дальше
Форматный вывод для МК на Си++
В предыдущей статье я писал о форматном выводе для микроконтроллеров стандартными средствами языка Си: Форматный вывод на Си для микроконтроллеров. Теперь посмотрим что интересного можно сделать на С++.
Астарожна многабукаф!
Читать дальше
Астарожна многабукаф!
Читать дальше
Форматный вывод на Си для микроконтроллеров.
Форматированный ввод-вывод применяется очень широко, в первую очередь это, конечно, взаимодействие с пользователем, а так-же отладочный вывод, логи, работа с различными текстовыми протоколами и многое другое. В этой статье рассматриваются особенности применения форматированного вывода (ввод оставим на потом) для микроконтроллеров.
Первая программа написанная для ПК традиционно называется «Hello, world» и естественно пишет в стандартный вывод эту знаменитую фразу:
Первая программа для микроконтроллера обычно зовётся «Blinky» и она просто мигает светодиодом. Дело в том, что заставить работать традиционный «Hello, world» на микроконтроллере не так уж и просто для начинающего. Во первых, нет стандартного устройства вывода и его функциональность ещё нужно реализовать. Во вторых, не всегда бывает очевидно как подружить стандартные функции вывода с целевым устройством. Ситуация усугубляется тем, что в каждом компиляторе (тулчейне) это делается каким-то своим способом.
Читать дальше
Первая программа написанная для ПК традиционно называется «Hello, world» и естественно пишет в стандартный вывод эту знаменитую фразу:
#include <stdio.h>
int main(){
printf("%s", "Hello, world");
return 0;
}
Первая программа для микроконтроллера обычно зовётся «Blinky» и она просто мигает светодиодом. Дело в том, что заставить работать традиционный «Hello, world» на микроконтроллере не так уж и просто для начинающего. Во первых, нет стандартного устройства вывода и его функциональность ещё нужно реализовать. Во вторых, не всегда бывает очевидно как подружить стандартные функции вывода с целевым устройством. Ситуация усугубляется тем, что в каждом компиляторе (тулчейне) это делается каким-то своим способом.
Читать дальше
Используем libc (newlib) для stm32
Многие тулчейны для ARM на GCC (Code Sourcery Lite в том числе) поставляются вместе с newlib — стандартной библиотекой языка C. С помощью неё можно использовать множество удобных стандартных функций (printf/scanf/malloc и т.д.).
Для того чтобы использовать эту библиотеку от нас требуется реализация некоторых системных вызовов.
Читать дальше
Для того чтобы использовать эту библиотеку от нас требуется реализация некоторых системных вызовов.
Читать дальше
Как заглянуть в мозги AVR AtMega без JTAG и гемороя
Ну нету у меня JTAG! А значения переменных посмотреть хочется!
Что делать? (с) Чернышевский. «Кто виноват?», «Кому на Руси жить хорошо?» — тьфу ты не туда.
Читать дальше
Что делать? (с) Чернышевский. «Кто виноват?», «Кому на Руси жить хорошо?» — тьфу ты не туда.
Читать дальше
- -2
- 20 апреля 2011, 21:43
- KalyakaMalyaka
- 59