|
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 Что ни так с этим контроллером?
|
|
|
|
2 страниц
< 1 2
|
 |
Ответов
(15 - 26)
|
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
|
|
|
|
|
Dec 9 2016, 11:31
|
Частый гость
 
Группа: Свой
Сообщений: 142
Регистрация: 11-01-11
Из: Орел
Пользователь №: 62 159

|
Цитата(demiurg_spb @ Dec 9 2016, 14:24)  Ложку дай... Читайте доку! Я не страна советов. Сначала вы мне напомнили, что можно разрабатывать программы без IDE, затем посоветовали читать доку на предыдущую версию моего компилятора, а затем посоветовали поправить scatter-файл, ну я и подумал, что вы знаете, что там поправить в 14-ти строках включая комментарии.  Я вам scatter-файл, а вы "я не страна советов".
Сообщение отредактировал Pridnya - Dec 9 2016, 11:32
|
|
|
|
|
Dec 9 2016, 11:50
|
Частый гость
 
Группа: Свой
Сообщений: 142
Регистрация: 11-01-11
Из: Орел
Пользователь №: 62 159

|
Цитата(ViKo @ Dec 9 2016, 14:41)  startup.s посмотрите, там есть чего наворотить при желании. Да, в этом файле если накосячить, то в HardFaultHandler улетает. Код ; <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
|
|
|
|
|
Dec 9 2016, 13:50
|

Частый гость
 
Группа: Участник
Сообщений: 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 Хорошо там, где нет ничего...
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|