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

 
 
3 страниц V  < 1 2 3  
Reply to this topicStart new topic
> STM32 Обработка hard fault exception, Как правильно с ним работать
Атмег
сообщение Apr 8 2011, 10:57
Сообщение #31


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

Группа: Участник
Сообщений: 149
Регистрация: 17-05-07
Пользователь №: 27 787



Цитата(aaarrr @ Apr 8 2011, 14:28) *
В том-то и дело, что читает не ядро непосредственно, а контроллер флеш в свои внутренние буферы. И узнать, чем он занимается в данный момент, не представляется возможным.


Ну да, верно. Строка-то, по сути, бессмысленная. Код исполняется из флеши, значит EEFC уже инициализирован загрузчиком.
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Apr 8 2011, 11:06
Сообщение #32


Гуру
******

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



Если программа стартует из флеш, то загрузчик не задействуется.
Go to the top of the page
 
+Quote Post
Атмег
сообщение Apr 8 2011, 15:39
Сообщение #33


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

Группа: Участник
Сообщений: 149
Регистрация: 17-05-07
Пользователь №: 27 787



Цитата(aaarrr @ Apr 8 2011, 15:06) *
Если программа стартует из флеш, то загрузчик не задействуется.


Имел в виду rom boot. А что инициализирует этот регистр? При загрузке из флеши он проинициализирован.
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Apr 8 2011, 16:13
Сообщение #34


Гуру
******

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



Цитата(Атмег @ Apr 8 2011, 19:39) *
Имел в виду rom boot.

Процессор всегда стартует с нулевого адреса. Там может быть отмаплена флеш, если GNPVM 1 установлен, или ROM, если сброшен. В первом случае никакого лишнего кода не выполняется.

Цитата(Атмег @ Apr 8 2011, 19:39) *
А что инициализирует этот регистр? При загрузке из флеши он проинициализирован.

В документации прописано значение по сбросу - 0x0. У вас оно отличается? Если да, то как смотрите?
Go to the top of the page
 
+Quote Post
Атмег
сообщение Apr 8 2011, 17:28
Сообщение #35


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

Группа: Участник
Сообщений: 149
Регистрация: 17-05-07
Пользователь №: 27 787



Цитата(aaarrr @ Apr 8 2011, 20:13) *
Процессор всегда стартует с нулевого адреса. Там может быть отмаплена флеш, если GNPVM 1 установлен, или ROM, если сброшен. В первом случае никакого лишнего кода не выполняется.


В документации прописано значение по сбросу - 0x0. У вас оно отличается? Если да, то как смотрите?


Да, правда, загрузчик то непричем.

Отличается, смотрю отладчиком, хотите сказать, он и инициализирует?
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Apr 8 2011, 20:29
Сообщение #36


Гуру
******

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



Цитата(Атмег @ Apr 8 2011, 21:28) *
Отличается, смотрю отладчиком, хотите сказать, он и инициализирует?

Скорее всего так и есть, посмотрите его скрипты. Я, конечно, не смотрел дефолтное значение, но оснований не доверять даташиту нет.
Go to the top of the page
 
+Quote Post
Атмег
сообщение Apr 12 2011, 22:02
Сообщение #37


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

Группа: Участник
Сообщений: 149
Регистрация: 17-05-07
Пользователь №: 27 787



Да, вы были правы, действительно дело оказалось EEFC_FMR, но не в самом факте записи в регистр*, а в том что писалось туда 2 цикла, а при заданной частоте должно быть 3. Вроде пока сбоев не наблюдаю, видимо, в этом и было дело. Но Атмел реабилитирован лишь частично, это все из их стартапа пошло, второй раз уже с этим сталкиваюсь именно у Атмела (в прошлый раз была ошибка примере инициализации SDRAM).
Именно так было в стартапе, частота выставлена 48 МГц, а в EEFC_FMR - 0х1, то есть два цикла.

*Изначально в регистре 0х0, то есть 1 цикл на чтение.
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Apr 12 2011, 22:05
Сообщение #38


Гуру
******

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



Цитата(Атмег @ Apr 13 2011, 02:02) *
Но Атмел реабилитирован лишь частично, это все из их стартапа пошло, второй раз уже с этим сталкиваюсь именно у Атмела (в прошлый раз была ошибка примере инициализации SDRAM).

Я их код перестал смотреть со времен M40800, ибо просто мусор. Поэтому и претензий не имею sm.gif
Go to the top of the page
 
+Quote Post
Haamu
сообщение Apr 11 2014, 02:30
Сообщение #39


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

Группа: Участник
Сообщений: 90
Регистрация: 12-12-13
Пользователь №: 79 587



Цитата(pan_oleg @ Jan 5 2011, 15:31) *
Код для STM32F101BT6 написаный на Си под IAR через определеное время работы по непонятным причинам вылетает в HardFaultException(void). Из флагов выставелся FORCED в HFSR регистре, и IBUSERR в регистре CFSR. Все что в доке нашел, что проблема с шиной. Но какая? Подскажите, как найти где в коде я накосячил. Какие регистры смотреть, что анализировать?

Аналогичная ситуация, разве что контроллер STM32F407. Подскажите, в чем проблемма?
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Apr 11 2014, 03:09
Сообщение #40


Гуру
******

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



Цитата(Haamu @ Apr 11 2014, 04:30) *
Подскажите, в чем проблемма?
Поднимите глаза и перечитайте сообщение 37. У Атмег проблема была в недостаточном количестве тактов ожидания в контроллере флеша. Ваш же код на отладочной плате работает, значит 100% проблема в вашей аппаратной части - разводке и схеме.


--------------------
На любой вопрос даю любой ответ
"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

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

 


RSS Текстовая версия Сейчас: 21st July 2025 - 18:22
Рейтинг@Mail.ru


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