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

 
 
 
Reply to this topicStart new topic
> HardFault на вызове vPortStartFirstTask()
inventor
сообщение Oct 5 2017, 10:04
Сообщение #1


Знающий
****

Группа: Свой
Сообщений: 524
Регистрация: 25-12-08
Из: Москва
Пользователь №: 42 748



проблема такая, есть русский контроллер миландр 1986ВЕ3
на котором я пытаюсь запустить FreeRTOS
если программа работает из внутренней Flash то все ОК
если из внешней, то вылетает на вызове vPortStartFirstTask()
при старте Scheduler
порт freertos для этого контроллера (CORTEX M1)
сделан из Cortex M0
в документации на контроллер есть errata
которая говорит что с SysTick проблемы при работе на частотах
выше 30 МГц
в качестве Systick используется TIMER4
внешняя память имеет 3 цикла ожидания
сам контроллер работает на частоте 72 МГц
подскажите, где копать!

upd
если функцию описать как __ramfucn
происходит то же самое
даже если внешнюю память не использую
Go to the top of the page
 
+Quote Post
jcxz
сообщение Oct 5 2017, 10:30
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(inventor @ Oct 5 2017, 17:04) *
подскажите, где копать!

Копать в регистрах описания причины HardFault.
Go to the top of the page
 
+Quote Post
inventor
сообщение Oct 5 2017, 11:01
Сообщение #3


Знающий
****

Группа: Свой
Сообщений: 524
Регистрация: 25-12-08
Из: Москва
Пользователь №: 42 748



Цитата(jcxz @ Oct 5 2017, 13:30) *
Копать в регистрах описания причины HardFault.

Hardware init OK
[Hard fault handler]
R0 = 0xfffffffd
R1 = 0x0
R2 = 0x18db
R3 = 0x0
R12 = 0x0
LR = 0x0
PC = 0x0
PSR = 0x200001c4

что это даст?
IAR не все регистры выводит
нет регистра настройки внешней шины
и некоторых других


В документации про регистра HardFault написано :
Более подробно данный вопрос рассмотрен в разделе «Обработка отказов».
но такого раздела нет
есть ли како нибудь подобный контролре в
сравеникоторым это можно выяснить?
Go to the top of the page
 
+Quote Post
jcxz
сообщение Oct 6 2017, 07:45
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(inventor @ Oct 5 2017, 18:01) *
что это даст?

Это не даст почти ничего. Разве что можно предположить, что возможно Вы где-то передаёте управление на адрес 0.
Ещё раз внимательнее перечитайте мой совет если не поняли.

Цитата(inventor @ Oct 5 2017, 18:01) *
В документации про регистра HardFault написано :

Откройте мануал на ядро (Cortex-M). Там есть полное описание регистров, описывающих причину и место HardFault.
http://infocenter.arm.com/help/index.jsp
Go to the top of the page
 
+Quote Post
inventor
сообщение Oct 6 2017, 23:14
Сообщение #5


Знающий
****

Группа: Свой
Сообщений: 524
Регистрация: 25-12-08
Из: Москва
Пользователь №: 42 748



да, спасибо
смотрю pdf.
к сожалению сам миландр ничего не написал ни об эьих регистрах
ни как все это вытащить, ни как использовать
тяну с помошью интринсиков которые описаны в CMSIS
Go to the top of the page
 
+Quote Post

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

 


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


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