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

 
 
2 страниц V  < 1 2  
Reply to this topicStart new topic
> Не могу понять природу исключения
Jenya7
сообщение Jun 6 2018, 14:23
Сообщение #16


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

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



странно. при вхождении в эту функцию я получаю сообщение от дебагера. в других функциях я такого сообщения не получаю.

Цитата(aaarrr @ Jun 6 2018, 18:18) *
Вот тут откройте окошко с памятью и посмотрите содержимое с адреса 0x2000ff68.

Или в окошке дизассемблера по шагам до исключения пройдите из состояния debug1.


там находяться какие то данные 14 07
Эскизы прикрепленных изображений
Прикрепленное изображение
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Jun 6 2018, 15:21
Сообщение #17


Гуру
******

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



Цитата(Jenya7 @ Jun 6 2018, 17:23) *
там находяться какие то данные 14 07

С адресом я ошибся несколько. Схема следующая:
- Ловим exception
- Смоторим SP
- Изучаем содержимое стека
- Смотрим дизассемблер, делаем выводы
Go to the top of the page
 
+Quote Post
Jenya7
сообщение Jun 6 2018, 15:30
Сообщение #18


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

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



Цитата(aaarrr @ Jun 6 2018, 20:21) *
С адресом я ошибся несколько. Схема следующая:
- Ловим exception
- Смоторим SP
- Изучаем содержимое стека
- Смотрим дизассемблер, делаем выводы


А где в IAR можно увидеть Exception stack frame?
Go to the top of the page
 
+Quote Post
k155la3
сообщение Jun 6 2018, 15:35
Сообщение #19


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

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


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

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


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

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


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

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


Гуру
******

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


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

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


Гуру
******

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


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

Группа: Участник
Сообщений: 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
k155la3
сообщение Jun 11 2018, 08:32
Сообщение #27


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

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



Цитата(Jenya7 @ Jun 10 2018, 10:48) *
. . . Вопрос кому морду бить - производителям камня или IAR?
Посмотрите еще в "родных" аппнотах, в проектах IAR, могут быть установлены
макро-переменные, Compiler - Preprocessor, predefined symb. В опциях линкера тоже могут устанавливаться. Может библиотека какая не прилинковалась /правильно/.

Go to the top of the page
 
+Quote Post
Jenya7
сообщение Jun 12 2018, 08:15
Сообщение #28


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

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



Цитата(k155la3 @ Jun 11 2018, 13:32) *
Посмотрите еще в "родных" аппнотах, в проектах IAR, могут быть установлены
макро-переменные, Compiler - Preprocessor, predefined symb. В опциях линкера тоже могут устанавливаться. Может библиотека какая не прилинковалась /правильно/.


оказывается в Кинетис FPU надо запускать. у меня был проект для К70 и там в SysInit он запускался а в SysInit для К10 нет.

так что морду надо бить мне.
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 16th April 2024 - 22:31
Рейтинг@Mail.ru


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