реклама на сайте
подробности

 
 
> STM32F2: printf (float)
k000858
сообщение Dec 8 2016, 04:53
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 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


Что ни так с этим контроллером?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
k000858
сообщение Dec 8 2016, 07:53
Сообщение #2


Местный
***

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



спасибо. проблема решена.

причина озвучена выше: адрес стека не был выровнен

вопрос в тему: выравнивание адреса указателя стека к 8 должно быть обязательно на всех типах ядер (конкретно STM32L0, STM32F4) ?
во любых типах проектов или только в тех, что используют newlib для print/sprint ?
Go to the top of the page
 
+Quote Post
Pridnya
сообщение Dec 9 2016, 06:53
Сообщение #3


Частый гость
**

Группа: Свой
Сообщений: 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
Go to the top of the page
 
+Quote Post
demiurg_spb
сообщение Dec 9 2016, 09:23
Сообщение #4


неотягощённый злом
******

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



Цитата(Pridnya @ Dec 9 2016, 09:53) *

В знаете, что можно и без IDE вовсе работать. Всё с командной строки и правки править руками и исходники и файл линкера и правила сборки и стартап файл.
Основная масса открытого софта именно так и реализована.


--------------------
“Будьте внимательны к своим мыслям - они начало поступков” (Лао-Цзы)
Go to the top of the page
 
+Quote Post
Pridnya
сообщение Dec 9 2016, 09:29
Сообщение #5


Частый гость
**

Группа: Свой
Сообщений: 142
Регистрация: 11-01-11
Из: Орел
Пользователь №: 62 159



Цитата(demiurg_spb @ Dec 9 2016, 12:23) *
В знаете, что можно и без IDE вовсе работать. Всё с командной строки и правки править руками и исходники и файл линкера и правила сборки и стартап файл.
Основная масса открытого софта именно так и реализована.

Я знаю, что можно в простейшем текстовом редакторе работать...с exe-шниками для командной строки, и браузер самому можно написать, но я об этом не спрашивал. Если вы хотели сказать, что из-за такого "открытого" софта (частично открытого для лица его использующего) и появилась ошибка "невыровненный адрес стека", то я с вами соглашусь.
Go to the top of the page
 
+Quote Post
demiurg_spb
сообщение Dec 9 2016, 09:37
Сообщение #6


неотягощённый злом
******

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



Цитата(Pridnya @ Dec 9 2016, 12:29) *
Дальнейшее обсуждение считаю бессмысленным.
Чего не знаю, того не существует - этот лозунг не для меня.


--------------------
“Будьте внимательны к своим мыслям - они начало поступков” (Лао-Цзы)
Go to the top of the page
 
+Quote Post
Pridnya
сообщение Dec 9 2016, 09:43
Сообщение #7


Частый гость
**

Группа: Свой
Сообщений: 142
Регистрация: 11-01-11
Из: Орел
Пользователь №: 62 159



Цитата(demiurg_spb @ Dec 9 2016, 12:37) *
Дальнейшее обсуждение считаю бессмысленным.
Чего не знаю, того не существует - этот лозунг не для меня.

Хорошо! Как мне (и другим желающим) смоделировать такую же ошибку при работе с ARMCC! Подскажите.

Сообщение отредактировал Pridnya - Dec 9 2016, 09:44
Go to the top of the page
 
+Quote Post
demiurg_spb
сообщение Dec 9 2016, 10:51
Сообщение #8


неотягощённый злом
******

Группа: Свой
Сообщений: 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.


--------------------
“Будьте внимательны к своим мыслям - они начало поступков” (Лао-Цзы)
Go to the top of the page
 
+Quote Post
Pridnya
сообщение Dec 9 2016, 11:22
Сообщение #9


Частый гость
**

Группа: Свой
Сообщений: 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)? Только что-то описания не нашел и в таблице про синхронизацию времени ни слова. rolleyes.gif
Вот мой 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
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- 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


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 19th July 2025 - 21:49
Рейтинг@Mail.ru


Страница сгенерированна за 0.0147 секунд с 7
ELECTRONIX ©2004-2016