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

 
 
> 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
2 страниц V  < 1 2  
Start new topic
Ответов (15 - 26)
Pridnya
сообщение Dec 9 2016, 09:43
Сообщение #16


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

Группа: Свой
Сообщений: 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
k000858
сообщение Dec 9 2016, 09:52
Сообщение #17


Местный
***

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



Цитата(Pridnya @ Dec 9 2016, 09:53) *
Разрешите поинтересоваться, а как у вас получилось, что адрес стека оказался не выровнен? И в какой IDE вы работаете? У меня такого ни разу не было, ни в одном проекте.

Eclipse + GCC, адрес стека был 0x2001FFFF, стал 0x20020000
Go to the top of the page
 
+Quote Post
demiurg_spb
сообщение Dec 9 2016, 10:51
Сообщение #18


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

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


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

Группа: Свой
Сообщений: 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
demiurg_spb
сообщение Dec 9 2016, 11:24
Сообщение #20


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

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



Ложку дай...
Читайте доку! Я не страна советов.


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


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

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



Цитата(demiurg_spb @ Dec 9 2016, 14:24) *
Ложку дай...
Читайте доку! Я не страна советов.

Сначала вы мне напомнили, что можно разрабатывать программы без IDE, затем посоветовали читать доку на предыдущую версию моего компилятора, а затем посоветовали поправить scatter-файл, ну я и подумал, что вы знаете, что там поправить в 14-ти строках включая комментарии. rolleyes.gif
Я вам scatter-файл, а вы "я не страна советов".

Сообщение отредактировал Pridnya - Dec 9 2016, 11:32
Go to the top of the page
 
+Quote Post
demiurg_spb
сообщение Dec 9 2016, 11:37
Сообщение #22


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

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



Я бы подcказал, но пользуюсь gcc...


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


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Цитата(Pridnya @ Dec 9 2016, 14:31) *
Я вам scatter-файл, а вы "я не страна советов".

startup.s посмотрите, там есть чего наворотить при желании.
Go to the top of the page
 
+Quote Post
Pridnya
сообщение Dec 9 2016, 11:50
Сообщение #24


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

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



Цитата(ViKo @ Dec 9 2016, 14:41) *
startup.s посмотрите, там есть чего наворотить при желании.

Да, в этом файле если накосячить, то в HardFaultHandler улетает. rolleyes.gif
Код
;  
<o> Stack Size (in Bytes) <0x0-0xFFFFFFFF:8>
; </h>

Stack_Size      EQU     0x000003FF; 0x00000400 да хоть вот так

                AREA    STACK, NOINIT, READWRITE, ALIGN=3
Stack_Mem       SPACE   Stack_Size
__initial_sp

Понятно, откуда у товарища ошибка появилась.
Вообще и startup и scatter файл создаются IDE при создании проекта и ошибок с выравниванием нет.

Сообщение отредактировал Pridnya - Dec 9 2016, 11:51
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Dec 9 2016, 12:46
Сообщение #25


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



QUOTE (Pridnya @ Dec 9 2016, 14:50) *
Вообще и startup и scatter файл создаются IDE при создании проекта и ошибок с выравниванием нет.
Пока вам не понадобится сделать что-то, под что создатели вашей IDE не предусмотрели соответствующей галочки.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
Mister_DSP
сообщение Dec 9 2016, 13:50
Сообщение #26


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

Группа: Участник
Сообщений: 133
Регистрация: 5-11-16
Пользователь №: 94 050



Вот начало моего стартапа с измененными базами/размерами стека и кучи:
Код
;------------------------------------ 4kB STACK
Stack_Mem         EQU     0x1000F000
Stack_Size        EQU     0x00001000
__initial_sp      EQU     Stack_Mem+Stack_Size
;------------------------------------

;------------------------------------ 60kB HEAP
Heap_Mem      EQU     0x10000000
Heap_Size     EQU     0x0000F000
__heap_base   EQU     Heap_Mem
__heap_limit  EQU     Heap_Mem+Heap_Size
;------------------------------------

                PRESERVE8
                THUMB.......................


Думаю что вершину стека указать здесь не проблема.


--------------------
SPY vs. SPY
Хорошо там, где нет ничего...
Go to the top of the page
 
+Quote Post
esaulenka
сообщение Dec 9 2016, 16:03
Сообщение #27


Профессионал
*****

Группа: Свой
Сообщений: 1 032
Регистрация: 13-03-08
Из: Маськва
Пользователь №: 35 877



Цитата(scifi @ Dec 8 2016, 10:40) *
Как куда? В регистры.

Да, действительно.
Почему-то был уверен, что у printf работает только через стек (из-за переменного числа аргументов). Ан нет, всё отлично в регистры лезет, если аргументов немного. Век живи...


--------------------
Тут обсуждается творческий порыв, а не соответствие каким-либо стандартам ©
Go to the top of the page
 
+Quote Post

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

 


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


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