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

 
 
> Lpc2000+RTOS+sprintf (Не работает sprintf), Как может операционка повлиять на sprintf ?
mihask
сообщение Feb 6 2007, 10:12
Сообщение #1


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

Группа: Validating
Сообщений: 80
Регистрация: 7-12-05
Пользователь №: 11 905



Уважаемые сограждане подскажите пожалуйста, если кто знает smile.gif,
почему после выхода из sprintf программа переходит на вектор сбоя данных DAbt_Handler.
Так происходит только если я пытаюсь вывести в строку переменную float, если int то все нормально.
Почему такое может быть?

Процессор -LPC2103
Операционка - RTL- Keil
Компилятор-RealView

Структура программы следующая:
Есть три задачи каждая из которых активизируется периодически
при помощи конструкции:
Код
    os_itv_set (5);
        for(;;)
           {
             os_itv_wait ();
               }

это значит что каждая задача запускается каждые 50 млс (время для каждой задачи разное).
sprintf выполняется только в одной из задач.

Сообщение отредактировал mihask - Feb 6 2007, 10:15
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
AlexandrY
сообщение Feb 6 2007, 13:23
Сообщение #2


Ally
******

Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050



Хе..Хе, это грабли библиотеки RealView.
Помогает только опция: --min_array_alignment=8
Иначе в библиотеки работы с float происходит непредусмотренное смещение стека, но не всегда, а только при определенном расположении стека.
Поэтому легкая перекомпоновка кода может приводить к разному поведению sprintf.
А операционка влияет на это тем образом, что стеки задач и соответственно переменные в них распологаются юзером не так как это сделал бы компилер знай он, что там будет распологаться float.
Go to the top of the page
 
+Quote Post
mihask
сообщение Feb 6 2007, 13:50
Сообщение #3


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

Группа: Validating
Сообщений: 80
Регистрация: 7-12-05
Пользователь №: 11 905



Цитата(AlexandrY @ Feb 6 2007, 16:23) *
Хе..Хе, это грабли библиотеки RealView.
Помогает только опция: --min_array_alignment=8
Иначе в библиотеки работы с float происходит непредусмотренное смещение стека, но не всегда, а только при определенном расположении стека.
Поэтому легкая перекомпоновка кода может приводить к разному поведению sprintf.
А операционка влияет на это тем образом, что стеки задач и соответственно переменные в них распологаются юзером не так как это сделал бы компилер знай он, что там будет распологаться float.


Большое спасибо всем кто помогал , особено AlexandrY ! Похоже все дело в --min_array_alignment=8. Боюсь кричать ура smile.gif, но помоему ... smile.gif З А Р А Б О Т А Л А smile.gif. Щас попроверяю ишо. Если это обман зрения, буду плакать ишо smile.gif

2AlexandrY А вы во многих проектах использовали RTOS+ RealView+sprintf+float?

Сообщение отредактировал mihask - Feb 6 2007, 13:52
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- mihask   Lpc2000+RTOS+sprintf (Не работает sprintf)   Feb 6 2007, 10:12
- - Alex B._   а стек задачи не переполняется случайно?   Feb 6 2007, 10:15
|- - mihask   Цитата(Alex B._ @ Feb 6 2007, 13:15) а ст...   Feb 6 2007, 10:19
|- - mihask   Добавлю еще, что если я отключаю одну из задач (пр...   Feb 6 2007, 11:30
|- - zltigo   Цитата(mihask @ Feb 6 2007, 09:19) Стек з...   Feb 6 2007, 12:07
|- - mihask   Цитата(zltigo @ Feb 6 2007, 15:07) Цитата...   Feb 6 2007, 12:25
|- - zltigo   Цитата(mihask @ Feb 6 2007, 11:25) А вы и...   Feb 6 2007, 12:33
- - Alex03   Цитата(mihask @ Feb 6 2007, 12:12) ...поч...   Feb 6 2007, 12:41
|- - zltigo   Цитата(Alex03 @ Feb 6 2007, 11:41) А Вы у...   Feb 6 2007, 13:01
|- - mihask   Цитата(Alex03 @ Feb 6 2007, 15:41) Цитата...   Feb 6 2007, 13:11
|- - AlexandrY   Т.е. еще уточнение. Сказанное относится к случаю е...   Feb 6 2007, 13:32
|- - zltigo   Цитата(AlexandrY @ Feb 6 2007, 12:23) Хе....   Feb 6 2007, 13:40
||- - AlexandrY   Компилер с самого начала придерживается выравниван...   Feb 6 2007, 15:29
||- - zltigo   Цитата(AlexandrY @ Feb 6 2007, 14:29) Ясн...   Feb 6 2007, 15:48
- - Alex03   Цитата(zltigo @ Feb 6 2007, 15:01) Тем не...   Feb 6 2007, 13:23


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

 


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


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