|
STM32F2: printf (float) |
|
|
|
Dec 8 2016, 04:53
|

Местный
  
Группа: Участник
Сообщений: 319
Регистрация: 31-01-12
Пользователь №: 69 978

|
Во всех своих проектах пользуюсь выводом отладочных сообщений, в том числе выводом значений переменных. Float переменные обычно вывожу printf("%.2f\n", val); - таким методом пользуюсь и на L0, и на F4 контроллерах, и через UART и через SWO интерфейс. Однако на STM32F205 контроллере не работает, как надо, например printf("%.2f\n", 1.0f); выводит 0.00, при этом в настройках линкера включено Код -specs=nano.specs -u _printf_float Что ни так с этим контроллером?
|
|
|
|
|
 |
Ответов
|
Dec 9 2016, 06:53
|
Частый гость
 
Группа: Свой
Сообщений: 142
Регистрация: 11-01-11
Из: Орел
Пользователь №: 62 159

|
Цитата(k000858 @ Dec 8 2016, 10:53)  спасибо. проблема решена.
причина озвучена выше: адрес стека не был выровнен
вопрос в тему: выравнивание адреса указателя стека к 8 должно быть обязательно на всех типах ядер (конкретно STM32L0, STM32F4) ? во любых типах проектов или только в тех, что используют newlib для print/sprint ? Разрешите поинтересоваться, а как у вас получилось, что адрес стека оказался не выровнен? И в какой IDE вы работаете? У меня такого ни разу не было, ни в одном проекте.
Сообщение отредактировал Pridnya - Dec 9 2016, 06:53
|
|
|
|
|
Dec 9 2016, 09:29
|
Частый гость
 
Группа: Свой
Сообщений: 142
Регистрация: 11-01-11
Из: Орел
Пользователь №: 62 159

|
Цитата(demiurg_spb @ Dec 9 2016, 12:23)  В знаете, что можно и без IDE вовсе работать. Всё с командной строки и правки править руками и исходники и файл линкера и правила сборки и стартап файл. Основная масса открытого софта именно так и реализована. Я знаю, что можно в простейшем текстовом редакторе работать...с exe-шниками для командной строки, и браузер самому можно написать, но я об этом не спрашивал. Если вы хотели сказать, что из-за такого "открытого" софта (частично открытого для лица его использующего) и появилась ошибка "невыровненный адрес стека", то я с вами соглашусь.
|
|
|
|
|
Dec 9 2016, 09:43
|
Частый гость
 
Группа: Свой
Сообщений: 142
Регистрация: 11-01-11
Из: Орел
Пользователь №: 62 159

|
Цитата(demiurg_spb @ Dec 9 2016, 12:37)  Дальнейшее обсуждение считаю бессмысленным. Чего не знаю, того не существует - этот лозунг не для меня. Хорошо! Как мне (и другим желающим) смоделировать такую же ошибку при работе с ARMCC! Подскажите.
Сообщение отредактировал Pridnya - Dec 9 2016, 09:44
|
|
|
|
|
Dec 9 2016, 10:51
|

неотягощённый злом
     
Группа: Свой
Сообщений: 2 746
Регистрация: 31-01-08
Из: Санкт-Петербург
Пользователь №: 34 643

|
Цитата(Pridnya @ Dec 9 2016, 12:43)  Хорошо! Как мне (и другим желающим) смоделировать такую же ошибку при работе с ARMCC! Подскажите. Читайте доки на свой компилятор и линкер. http://infocenter.arm.com/help/index.jsp?t...474e/index.htmlВ gcc - это элементарно. Для вас тоже это не должно составить труда - поправьте scatter files.
--------------------
“Будьте внимательны к своим мыслям - они начало поступков” (Лао-Цзы)
|
|
|
|
|
Dec 9 2016, 11:22
|
Частый гость
 
Группа: Свой
Сообщений: 142
Регистрация: 11-01-11
Из: Орел
Пользователь №: 62 159

|
Цитата(demiurg_spb @ Dec 9 2016, 13:51)  Читайте доки на свой компилятор и линкер. http://infocenter.arm.com/help/index.jsp?t...474e/index.htmlВ gcc - это элементарно. Для вас тоже это не должно составить труда - поправьте scatter files. Пока ждал вашего ответа. Уже успел по вашей ссылке сходить, понравились регистраторы. Cortex A8 MCU, на Linux что ли (судя по объему ОЗУ на Linux)? Только что-то описания не нашел и в таблице про синхронизацию времени ни слова. Вот мой scatter-файл (создается IDE при создании проекта) для проекта с симулятором, я в этом проекте всякие мелочи: Цитата ; ************************************************************* ; *** Scatter-Loading Description File generated by uVision *** ; *************************************************************
LR_IROM1 0x08000000 0x00100000 { ; load region size_region ER_IROM1 0x08000000 0x00100000 { ; load address = execution address *.o (RESET, +First) *(InRoot$$Sections) .ANY (+RO) } RW_IRAM1 0x20000000 0x00020000 { ; RW data .ANY (+RW +ZI) } } Что в нем поправить?
Сообщение отредактировал Pridnya - Dec 9 2016, 11:28
|
|
|
|
Сообщений в этой теме
k000858 STM32F2: printf (float) Dec 8 2016, 04:53 Сергей Борщ С выводом чисел с плавающей точкой была только одн... Dec 8 2016, 07:01 k000858 Цитата(Сергей Борщ @ Dec 8 2016, 10:01) С... Dec 8 2016, 07:17 esaulenka А куда ж эти цифирки-то кладутся, если не в стек?... Dec 8 2016, 07:35 scifi Цитата(esaulenka @ Dec 8 2016, 10:35) А к... Dec 8 2016, 07:40  esaulenka Цитата(scifi @ Dec 8 2016, 10:40) Как куд... Dec 9 2016, 16:03 scifi Цитата(k000858 @ Dec 8 2016, 10:53) вопро... Dec 8 2016, 07:57  k000858 Цитата(scifi @ Dec 8 2016, 10:57) Это тре... Dec 8 2016, 07:58        demiurg_spb Ложку дай...
Читайте доку! Я не страна советов... Dec 9 2016, 11:24         Pridnya Цитата(demiurg_spb @ Dec 9 2016, 14:24) Л... Dec 9 2016, 11:31          demiurg_spb Я бы подcказал, но пользуюсь gcc... Dec 9 2016, 11:37          ViKo Цитата(Pridnya @ Dec 9 2016, 14:31) Я вам... Dec 9 2016, 11:41           Pridnya Цитата(ViKo @ Dec 9 2016, 14:41) startup.... Dec 9 2016, 11:50            Сергей Борщ QUOTE (Pridnya @ Dec 9 2016, 14:50) Вообщ... Dec 9 2016, 12:46  k000858 Цитата(Pridnya @ Dec 9 2016, 09:53) Разре... Dec 9 2016, 09:52 scifi Кажется, я буковки напутал
Это называется AAPCS.... Dec 8 2016, 08:02 demiurg_spb Цитата(scifi @ Dec 8 2016, 11:02)
Это на... Dec 8 2016, 10:11  scifi Цитата(demiurg_spb @ Dec 8 2016, 13:11) Э... Dec 8 2016, 10:34 Mister_DSP Вот начало моего стартапа с измененными базами/раз... Dec 9 2016, 13:50
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|