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

 
 
> Не могу понять природу исключения
Jenya7
сообщение Jun 5 2018, 13:39
Сообщение #1


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

Группа: Участник
Сообщений: 1 778
Регистрация: 29-03-12
Пользователь №: 71 075



Есть функция в которой вызывается другая функция
Код
d_RangeToTarget = round_int16(s1553_AH64A_Conv.Range_AID, 1.0);
при попадании на эту строчку контролер уходит в исключение и я не могу отследить причину так как я не могу даже сделать Step Into.сама функция ничего особобенного не представляет
Код
double round_int16(double num2rnd, double scale)
{
    double l_temp_mod = 0, l_num_after_rnd = 0, l_temp_mod2 = 0, temp_scale =0;
    
    //int32_t num_int =0;
    //num_int = (uint32_t)num2rnd;

    //l_temp_mod = fmod(num2rnd, scale);

    if(l_temp_mod < 0.0)
    {
        l_temp_mod2 = l_temp_mod * (-1.0);
        temp_scale  = scale * (-1.0);
    }
    else
    {
        l_temp_mod2 = l_temp_mod;
        temp_scale = scale;
    }

    if ((l_temp_mod2)>= (scale/2))
        l_num_after_rnd = num2rnd- (l_temp_mod) + temp_scale;
    else
        l_num_after_rnd = num2rnd- l_temp_mod;

    return l_num_after_rnd;
}
как можно отследить проблему?

Сообщение отредактировал Jenya7 - Jun 5 2018, 13:40
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
k155la3
сообщение Jun 6 2018, 15:35
Сообщение #2


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

Группа: Свой
Сообщений: 1 123
Регистрация: 8-03-09
Из: Днепр
Пользователь №: 45 848



Посмотрите в опциях проекта Linker - Advanced, нижняя птичка. Stack usage.
Я отсадил бы вылетающий код в отдельный проект и попробовал его под симулятором.
На кол-во "активных" BP есть ограничение. Если вылазит ругательство - убирайте ненужные BP.
Go to the top of the page
 
+Quote Post
Jenya7
сообщение Jun 7 2018, 04:37
Сообщение #3


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

Группа: Участник
Сообщений: 1 778
Регистрация: 29-03-12
Пользователь №: 71 075



Цитата(k155la3 @ Jun 6 2018, 20:35) *
Посмотрите в опциях проекта Linker - Advanced, нижняя птичка. Stack usage.
Я отсадил бы вылетающий код в отдельный проект и попробовал его под симулятором.
На кол-во "активных" BP есть ограничение. Если вылазит ругательство - убирайте ненужные BP.

брэкпоинт один а он видит целую кучу.

когда я кликаю на Exception Frame компайлер посылает меня в какойто адрес вообще за границами програмной памяти 0xffffffff8


Сообщение отредактировал Jenya7 - Jun 7 2018, 04:59
Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
k155la3
сообщение Jun 7 2018, 05:07
Сообщение #4


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

Группа: Свой
Сообщений: 1 123
Регистрация: 8-03-09
Из: Днепр
Пользователь №: 45 848



Цитата(Jenya7 @ Jun 7 2018, 07:37) *
брэкпоинт один а он видит целую кучу.

Посмотрите опции настройки J-link, там и исключения поминаются. Уменьшите скорость интерфейса, если это возможно.
Оптимизацию, я думаю, Вы отключили. А с количеством BP это как-то странно.
Для установки BP используйте __no_operation();
В проблемной ф-ии закомментируйте весь код, оставьте __no_operation() и return.
Go to the top of the page
 
+Quote Post
Jenya7
сообщение Jun 10 2018, 05:39
Сообщение #5


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

Группа: Участник
Сообщений: 1 778
Регистрация: 29-03-12
Пользователь №: 71 075



Цитата(k155la3 @ Jun 7 2018, 10:07) *
Посмотрите опции настройки J-link, там и исключения поминаются. Уменьшите скорость интерфейса, если это возможно.
Оптимизацию, я думаю, Вы отключили. А с количеством BP это как-то странно.
Для установки BP используйте __no_operation();
В проблемной ф-ии закомментируйте весь код, оставьте __no_operation() и return.


С пустой функцией все нормально. Но если вставляю строчку в нее - вылетает в эксепшен на0x32da 0xed2d 0x8b02 VPUSH {D8}.
Я вообще в шоке. Работаю с IAR несколько лет не помню чтоб когда то такое было.

я все время попадаю в
Код
void default_isr(void)
{
   #define VECTORNUM  (*(volatile uint8_t*)(0xE000ED04))

   printf("\n****default_isr entered on vector %d*****\r\n\n",VECTORNUM);
   return;
}

в терминале смотрю что printf написал
Цитата
****default_isr entered on vector 3*****

полная хренотень

Сообщение отредактировал Jenya7 - Jun 10 2018, 05:58
Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Jun 10 2018, 07:06
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(Jenya7 @ Jun 10 2018, 08:39) *
полная хренотень

А FPU-то включен? Что в CPACR пишется?
Go to the top of the page
 
+Quote Post
Jenya7
сообщение Jun 10 2018, 07:48
Сообщение #7


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

Группа: Участник
Сообщений: 1 778
Регистрация: 29-03-12
Пользователь №: 71 075



Цитата(aaarrr @ Jun 10 2018, 12:06) *
А FPU-то включен? Что в CPACR пишется?


блиииин. спасибо. отключил FPU - все бежит. но как? у камня есть аппаратный FPU и при создании проекта IAR честно включает его в настройках - General Options -> Floating point settings -> VFPv4 single precision.

Вопрос кому морду бить - производителям камня или IAR?

Сообщение отредактировал Jenya7 - Jun 10 2018, 07:51
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Jun 10 2018, 08:06
Сообщение #8


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(Jenya7 @ Jun 10 2018, 10:48) *
Вопрос кому морду бить - производителям камня или IAR?

Не знаю, как принято у IAR'а, но по-моему, инициализация железа - это таки дело пользователя.
Go to the top of the page
 
+Quote Post
Jenya7
сообщение Jun 10 2018, 08:21
Сообщение #9


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

Группа: Участник
Сообщений: 1 778
Регистрация: 29-03-12
Пользователь №: 71 075



Цитата(aaarrr @ Jun 10 2018, 13:06) *
Не знаю, как принято у IAR'а, но по-моему, инициализация железа - это таки дело пользователя.


а что есть инициализация FPU? я нигде в примерах для Kinetis не встречал.

мда. порылся в драйверах и там есть fpu.h - __intrinsic void __enable_FPU(void); я думал модуль работает сразу, без лишних телодвижений.

есть более универсальный код
Код
#define CORTEX_M4_BLOCK  0xe000e000
#define CPACR *(unsigned long *)(CORTEX_M4_BLOCK + 0xd88)  // Co-processor Access Control

CPACR |= (0xf << 20);   // enable access to FPU


Сообщение отредактировал Jenya7 - Jun 10 2018, 08:49
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Jenya7   Не могу понять природу исключения   Jun 5 2018, 13:39
- - aaarrr   Цитата(Jenya7 @ Jun 5 2018, 16:39) как мо...   Jun 5 2018, 13:49
|- - Jenya7   Цитата(aaarrr @ Jun 5 2018, 19:49) После ...   Jun 5 2018, 14:34
|- - aaarrr   Цитата(Jenya7 @ Jun 5 2018, 17:34) View -...   Jun 5 2018, 15:02
|- - Jenya7   Цитата(aaarrr @ Jun 5 2018, 21:02) Не то,...   Jun 5 2018, 15:16
|- - aaarrr   Цитата(Jenya7 @ Jun 5 2018, 18:16) SP = 0...   Jun 5 2018, 15:26
|- - Jenya7   Цитата(aaarrr @ Jun 5 2018, 21:26) А если...   Jun 5 2018, 15:41
|- - aaarrr   Цитата(Jenya7 @ Jun 5 2018, 18:41) извиня...   Jun 5 2018, 16:05
- - k155la3   Вынесите функцию из параметра. Вместо функции ...   Jun 6 2018, 08:09
|- - Jenya7   Цитата(k155la3 @ Jun 6 2018, 14:09) Вынес...   Jun 6 2018, 08:41
|- - Сергей Борщ   QUOTE (Jenya7 @ Jun 6 2018, 11:41) на стр...   Jun 6 2018, 11:08
|- - Jenya7   Цитата(Сергей Борщ @ Jun 6 2018, 16:08) О...   Jun 6 2018, 11:33
|- - aaarrr   Цитата(Jenya7 @ Jun 6 2018, 14:33) debug2...   Jun 6 2018, 13:18
- - k155la3   Если обычный стек - может "зашкал" ? Ил...   Jun 6 2018, 10:17
- - k155la3   По map-файлу проверьте еще где (адреса) размещена ...   Jun 6 2018, 12:10
- - Jenya7   странно. при вхождении в эту функцию я получаю соо...   Jun 6 2018, 14:23
|- - aaarrr   Цитата(Jenya7 @ Jun 6 2018, 17:23) там на...   Jun 6 2018, 15:21
|- - Jenya7   Цитата(aaarrr @ Jun 6 2018, 20:21) С адре...   Jun 6 2018, 15:30
- - k155la3   Цитата(Jenya7 @ Jun 10 2018, 10:48) . . ....   Jun 11 2018, 08:32
- - Jenya7   Цитата(k155la3 @ Jun 11 2018, 13:32) Посм...   Jun 12 2018, 08:15


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

 


RSS Текстовая версия Сейчас: 2nd July 2025 - 00:52
Рейтинг@Mail.ru


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