Миландр

Ключевым подразделением нашей компании
является Центр Проектирования интегральных микросхем
Текущее время: 2019-окт-14 16:13

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 225 ]  На страницу Пред.  1 ... 11, 12, 13, 14, 15
Автор Сообщение
 Заголовок сообщения: Re: Техническое описание 1986ВЕ8Т
СообщениеДобавлено: 2019-июн-20 09:36 
Не в сети

Зарегистрирован: 2019-фев-14 12:54
Сообщения: 12
Добрый день!
Спасибо за ответ.
В разработанной плате опора подается на две пары пинов, здесь проблем нет.
Проблема с проверкой на отладочной плате, точнее с удобством работы с ней. На плате только один разъем для подключения опоры, поэтому придется подпаиваться напрямую к контактам разъемов, соединенных с пинами второй опоры.
Частично проблему решает подача на опору напряжения питания АЦП. Но на отладочной плате оно 3,3 в, а нужно 5 в.
Отладочная плата с платой-адаптером контроллера. Схема и описание на плату-адаптер не поставили (а может и не поставляется).

Вопрос: можно ли на плате-адаптере, вставленную в отладочную плату, установить напряжение питание АЦП = 5 в?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Техническое описание 1986ВЕ8Т
СообщениеДобавлено: 2019-июн-20 14:02 
Не в сети

Зарегистрирован: 2017-фев-14 11:21
Сообщения: 120
Здравствуйте!

5В, которые подаются от источника питания преобразуются на плате в 3,3В. МК запитан этим напряжением.
Согласно примечанию к таблице 153 в спецификации ("Предельно-допустимые режимы эксплуатации и предельные режимы микросхем") ** Напряжения питания на выводах ADC_UCC, DAC_UCC, SPW_UCC, ETH_UCC должны отличаться от напряжения питания на выводах UCC не более, чем на |±0,2| В. Если МК питается от 3,3В, то питать АЦП 5В нельзя.

Схему платы-адаптера прислать можем. Напишите, пожалуйста, на support@milandr.ru

_________________
Отдел технической поддержки support@milandr.ru


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Техническое описание 1986ВЕ8Т
СообщениеДобавлено: 2019-июн-20 15:16 
Не в сети

Зарегистрирован: 2017-фев-14 11:21
Сообщения: 120
Здравствуйте!

Да, согласна, выбор напряжения питания обеспечивается перемычками XP17, XP18. Спасибо.
Уточню тогда первый вопрос.

_________________
Отдел технической поддержки support@milandr.ru


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Техническое описание 1986ВЕ8Т
СообщениеДобавлено: 2019-июн-20 15:42 
Не в сети

Зарегистрирован: 2017-фев-14 11:21
Сообщения: 120
Когда питание всей платы 5В, то питание ADC_Ucc тоже 5В. Можно проверить, измерив на ADC_Ucc на адаптере.

_________________
Отдел технической поддержки support@milandr.ru


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Техническое описание 1986ВЕ8Т
СообщениеДобавлено: 2019-авг-29 10:58 
Не в сети

Зарегистрирован: 2019-фев-14 12:54
Сообщения: 12
Здравствуйте!

Для отработки программы перед записью в ПЗУ на основе Вашей программы "PRG_OTP_UART" был сделан вариант для загрузки её в ОЗУ вместо "Uart_loader_otp.hex". Запись в ОЗУ и верификация записанных данных проходят нормально, после подачи команды 'R' с адресом на reset из таблицы векторов программа выполняется непродолжительное время и зависает.
Настройки проекта для выполнения из ОЗУ были сделаны и в отладчике она запускается.
В чём может быть ошибка?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Техническое описание 1986ВЕ8Т
СообщениеДобавлено: 2019-авг-30 10:53 
Не в сети

Зарегистрирован: 2017-апр-26 14:51
Сообщения: 440
Откуда: ПКК "Миландр"
За программу "PRG_OTP_UART" спасибо товарищу Vasili с этого форума, она не наша.
1 - Если ПО в МК перестает работать, то скорее всего оно попадает в HardFault или другой обработчик исключения. Пропишите в обработчики вывод отладочной информации - стека, регистров "4.3.11 HardFault Status Register" и подобных, чтобы понять причину исключения (ядро Cortex-M4 - http://infocenter.arm.com/help/topic/co ... UI0553.pdf).
Если будет флаг BusFault то вероятно в ПО есть обращение к неинициализированной памяти - т.е. в область для которой не совпадает ECC. После включения память в хаотичном состоянии, если из нее читать, то данные не будут согласованы с ЕСС и шина не вернет значение при двойной ошибке и более - отсюда BusFault. Память ОЗУ необходимо прописать 0-ми, при этом данные станут согласованы с ЕСС.
2 - Проверьте Errata на 1986ВЕ8Т

Без отладочной информации угадать что происходит нельзя. Но чаще всего это не учет особенностей ЕСС.

_________________
Отдел технической поддержки support@milandr.ru


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Техническое описание 1986ВЕ8Т
СообщениеДобавлено: 2019-авг-30 12:57 
Не в сети

Зарегистрирован: 2017-апр-26 14:51
Сообщения: 440
Откуда: ПКК "Миландр"
Voshod, видимо у Вас выключен прием личных сообщений, поэтому отвечу сюда:

Посмотрел код начального загрузчика, он в этой же ветке - viewtopic.php?p=22623#p22623
Для режима запуска по UART не выставляется регистр VTOR, поэтому ядро не находит новую таблицу прерываний. Полагаю это сделано преднамеренно, поскольку по UART должен грузиться какой-то пользовательский загрузчик, который уже сам сделает необходимое, а прерывания загрузчику ни к чему.

Пропишите в начале своего кода выставление регистра SCB->VTOR на начальный адрес своей программы.

Бинарник начинается с 32-разрядного адреса стека, следующее 32-разрядное слово это адрес Reset_Handle и следующие вектора. Поэтому при переходе по команде 'R' необходимо указать адрес со смещением на Reset_Handle. Но это зависит от того делает +4 бутлоадер при приеме команды R или нет. В 1986ВЕ8Т текущей ревизии бутлоадер переходит напрямую на указанный адрес, без валидации и проверок. Раньше возможно было по другому, поэтому спецификацию необходимо будет нам уточнить.

_________________
Отдел технической поддержки support@milandr.ru


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Техническое описание 1986ВЕ8Т
СообщениеДобавлено: 2019-авг-30 14:32 
Не в сети

Зарегистрирован: 2019-фев-14 12:54
Сообщения: 12
Спасибо!
Совет с регистром VTOR решил проблему.

Vasiliy писал(а):
Voshod, видимо у Вас выключен прием личных сообщений, поэтому отвечу сюда:

Посмотрел код начального загрузчика, он в этой же ветке - viewtopic.php?p=22623#p22623
Для режима запуска по UART не выставляется регистр VTOR, поэтому ядро не находит новую таблицу прерываний. Полагаю это сделано преднамеренно, поскольку по UART должен грузиться какой-то пользовательский загрузчик, который уже сам сделает необходимое, а прерывания загрузчику ни к чему.

Пропишите в начале своего кода выставление регистра SCB->VTOR на начальный адрес своей программы.

Бинарник начинается с 32-разрядного адреса стека, следующее 32-разрядное слово это адрес Reset_Handle и следующие вектора. Поэтому при переходе по команде 'R' необходимо указать адрес со смещением на Reset_Handle. Но это зависит от того делает +4 бутлоадер при приеме команды R или нет. В 1986ВЕ8Т текущей ревизии бутлоадер переходит напрямую на указанный адрес, без валидации и проверок. Раньше возможно было по другому, поэтому спецификацию необходимо будет нам уточнить.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Техническое описание 1986ВЕ8Т
СообщениеДобавлено: 2019-сен-16 17:24 
Не в сети

Зарегистрирован: 2019-фев-14 12:54
Сообщения: 12
Здравствуйте!
Совет с регистром VTOR решил проблему. Но.... Возникла новая:
"Грузим программу в ОЗУ(RAMD), запускаем - все работает, туже программу грузим в ОТР - не работает."
Режим UART0+JA.
Используем допрограммирование ОТР.
Адрес таблицы векторов правильный (значение SCB/VTOR то что нужно, да и таймерные прерывания срабатывают как надо), адрес перехода на основную программу - актуальный.
В укороченном виде (оставив минимум функций) отличий в работе из ОТР и из ОЗУ нет. Но полную программу, с использованием расширенных функций (работа с контроллерами таймеров, АЦП, мультиплексного канала, прямого доступа к памяти и т.д), выполнить из ОТР не получается, хотя из ОЗУ все прекрасно работает.

Подскажите в чем может быть проблема и в каком направлении копать?

Есть ли принципиальная разница (требующая дополнительных действий) между выполнением кода из RAMD и ОТР?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Техническое описание 1986ВЕ8Т
СообщениеДобавлено: 2019-сен-17 08:36 
Не в сети

Зарегистрирован: 2010-сен-21 12:57
Сообщения: 712
Откуда: г. Санкт-Петербург
Voshod писал(а):
Есть ли принципиальная разница (требующая дополнительных действий) между выполнением кода из RAMD и ОТР?

1. При выполнении кода из ОТР перед изменением частоты ядра необходимо настраивать задержку WAITCYCL[3:0] в регистре OTP_CNTR->CNTR. При этом код, модифицирующий OTP_CNTR->CNTR, должен выполняться из RAMD.
2. Один и тот же код из OTP выполняется быстрее чем из RAMD (при правильных настройках WAITCYCL).
3. При использовании OTP возможно задействовать CACHE, что еще больше увеличивает производительность по сравнению с RAMD.

P.S. Если есть возможность, попробуйте прогнать свой код на 1986ВЕ81Т из OTPRAM.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Техническое описание 1986ВЕ8Т
СообщениеДобавлено: 2019-сен-20 10:51 
Не в сети

Зарегистрирован: 2019-фев-14 12:54
Сообщения: 12
vasili писал(а):
Voshod писал(а):
Есть ли принципиальная разница (требующая дополнительных действий) между выполнением кода из RAMD и ОТР?

1. При выполнении кода из ОТР перед изменением частоты ядра необходимо настраивать задержку WAITCYCL[3:0] в регистре OTP_CNTR->CNTR. При этом код, модифицирующий OTP_CNTR->CNTR, должен выполняться из RAMD.
2. Один и тот же код из OTP выполняется быстрее чем из RAMD (при правильных настройках WAITCYCL).
3. При использовании OTP возможно задействовать CACHE, что еще больше увеличивает производительность по сравнению с RAMD.

P.S. Если есть возможность, попробуйте прогнать свой код на 1986ВЕ81Т из OTPRAM.


1986ВЕ81Т у нас отсутствует. Поэтому, работаем с тем что есть.
Дополнительная информация по проблеме:
В режиме отладки (через JTAG) программа вылетает по HardFault. Это видно по значению регистра IPSR = 0x00400003, да и если поставить останов на обработчик исключения HardFault, то там программа и останавливается.
Регистры ECCCS контроллера OTP памяти (MDR_OTP) и контроллера ОЗУ в области DATA (MDR_RAMD) чисты = 0х00000.
Состояние основных регистров, после останова на обработчики HardFault:
xPSR 0x2100_0003
R15(PC) 0x0101xxxxxx (адрес точки останова (HardFault))
R14(LR) 0xFFFFFFF1
R13(SP) 0x200020D8 (изначально стек назначен на 20002118).
Судя по стеку, до вываливания в HardFault возникает еще одно исключение/прерывание ( в момент обработки таймерного прерывания), отображаемое в IPSR как 0x0040086D. Судя по таблице векторов это UART1_Handler. Но откуда он взялся не понятно.

На что следует обратить внимание, какие регистры проанализировать чтобы определить источник HardFault?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Техническое описание 1986ВЕ8Т
СообщениеДобавлено: 2019-сен-20 13:45 
Не в сети

Зарегистрирован: 2010-сен-21 12:57
Сообщения: 712
Откуда: г. Санкт-Петербург
В CortexM4 прерывания memory management fault, bus fault, usage fault по умолчанию вызывают обработчик hard fault. Поэтому в Вашем случае причина м.б. и не hard fault. Чтобы отделить memory management fault, bus fault, usage fault от hard fault нужно разрешить их вызов в соответствующем регистре ядра.
(к сожалению нет возможности указать конкретный регистр - нет под рукой описания ядра и времени.)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Техническое описание 1986ВЕ8Т
СообщениеДобавлено: 2019-сен-20 15:38 
Не в сети

Зарегистрирован: 2019-фев-14 12:54
Сообщения: 12
vasili писал(а):
В CortexM4 прерывания memory management fault, bus fault, usage fault по умолчанию вызывают обработчик hard fault. Поэтому в Вашем случае причина м.б. и не hard fault. Чтобы отделить memory management fault, bus fault, usage fault от hard fault нужно разрешить их вызов в соответствующем регистре ядра.
(к сожалению нет возможности указать конкретный регистр - нет под рукой описания ядра и времени.)

Если кто знает как разрешить вызов memory management fault, bus fault и usage fault, сообщите пожалуйста. В описании ядра мы этого не нашли.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Техническое описание 1986ВЕ8Т
СообщениеДобавлено: 2019-сен-20 18:35 
Не в сети

Зарегистрирован: 2010-сен-21 12:57
Сообщения: 712
Откуда: г. Санкт-Петербург
http://badembed.ru/hard-fault-memmanage ... cortex-m3/


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Техническое описание 1986ВЕ8Т
СообщениеДобавлено: 2019-сен-20 18:51 
Не в сети

Зарегистрирован: 2019-фев-14 12:54
Сообщения: 12
vasili писал(а):
http://badembed.ru/hard-fault-memmanage-fault-usage-fault-bus-fault-cortex-m3/

СПАСИБО!
Очень полезная информация.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 225 ]  На страницу Пред.  1 ... 11, 12, 13, 14, 15

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB