Миландр

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

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




Начать новую тему Ответить на тему  [ Сообщений: 123 ]  На страницу Пред.  1 ... 4, 5, 6, 7, 8, 9  След.
Автор Сообщение
 Заголовок сообщения: Re: Проблемы с отладкой 1986BE8T
СообщениеДобавлено: 2017-ноя-30 14:23 
Не в сети
Аватара пользователя

Зарегистрирован: 2015-июн-16 11:58
Сообщения: 10
Откуда: АО "ПКК Миландр"
QuadMan писал(а):
В общем, как я понимаю, необходим файл инициализации для режима Trace для этого процессора.
Не подскажете, где его можно взять?

Для Keil необходимо иметь UlinkPro и подключить к соответствующим выводам на 20pin CortexM Debug + ETM разъёме TRACE_CLK TRACE_DATA[3:0] пины микроконтроллера. Далее, через Init файл придётся выбрать 15ю функцию для выбранных ног и настроить в Keil фазы сигналов интерфейса для корректной работы.
ETM физически может работать и через SWO, т.е 1битный режим трассировки, но в Keil данный режим не поддерживается.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Проблемы с отладкой 1986BE8T
СообщениеДобавлено: 2017-ноя-30 17:35 
Не в сети

Зарегистрирован: 2014-авг-05 17:25
Сообщения: 41
laplander писал(а):
QuadMan писал(а):
В общем, как я понимаю, необходим файл инициализации для режима Trace для этого процессора.
Не подскажете, где его можно взять?

Для Keil необходимо иметь UlinkPro и подключить к соответствующим выводам на 20pin CortexM Debug + ETM разъёме TRACE_CLK TRACE_DATA[3:0] пины микроконтроллера. Далее, через Init файл придётся выбрать 15ю функцию для выбранных ног и настроить в Keil фазы сигналов интерфейса для корректной работы.
ETM физически может работать и через SWO, т.е 1битный режим трассировки, но в Keil данный режим не поддерживается.


Init файл сделал, но не понял, какие и как настроить фазы сигналов интерфейса?

В init файл (ножки TRACE_CLK, TRACE_DATA[3:0] используются из PORTA[19..23]):
Код:
/*-------------------------------------------------------------------
** Define the function to enable the trace port
**-----------------------------------------------------------------*/
FUNC void EnableTPIU(void) {

// Enable trace port and clock signals
  _WDWORD(0x40000000, 0x8555AAA1); // KEY FOR CLK_CNTR
  _WDWORD(0x4000000C, _RDWORD(0x4000000C) | 0x00002000); // SET CLOCK FOR PORTA 
  _WDWORD(0x40080000, 0x8555AAA1);    // KEY for PORT_A
  _WDWORD(0x40080020, 0xFFFFF000);    // SFUNC[2] pin 19-23 - func 15, other - func 1
  _WDWORD(0x40080038, 0xF8000000);    // SANALOG  pin 19-23 - digital function
}

/*-------------------------------------------------------------------
** Invoke the function at debugger startup
**-----------------------------------------------------------------*/
EnableTPIU();

/*-------------------------------------------------------------------
** Execute upon software RESET
**-----------------------------------------------------------------*/
FUNC void OnResetExec(void)  {
  EnableTPIU();
}

Выбираю в настройках Trace Port: Sync Trace Port with 4-bit Data, выставляю правильную частоту.
Но при отладке Keil пишет в статус-баре No Synchronization.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Проблемы с отладкой 1986BE8T
СообщениеДобавлено: 2019-сен-11 13:32 
Не в сети

Зарегистрирован: 2019-фев-22 13:12
Сообщения: 38
Всем добрый день.

При отладке изделия на 1986ВЕ8Т стал проявляться очень странный сбой при климатических испытаниях в диапазоне 0-+55 градусов.
Изменение температуры и вверх и вниз идет со скоростью 1 гр в минуту.

Одно и тоже ПО при прохождении определенных температур (в диапазоне разные 18, 23, 36, 54), сваливается в HardFault по ошибке шины, по не коду. Хотя код в памяти корректный. И данное явление продолжается в течении примерно 10 минут(после перезапуска работа от 1 до 20 секунд), после чего начинает работать в номинальном режиме.
При этом замечено, если отключены КЭШи то сбоев не происходит совсем.

Хотелось бы уточнить есть ли какие нибудь особенности у КЭШа в данном контроллере?
Можно ли как нибудь предупредить ситуацию с попаданием в КЭШ не кода например?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Проблемы с отладкой 1986BE8T
СообщениеДобавлено: 2019-сен-12 13:17 
Не в сети

Зарегистрирован: 2017-апр-26 14:51
Сообщения: 416
Откуда: ПКК "Миландр"
Здравствуйте.

Необходимы подробности:
- Номер с крышки микросхемы для уточнения ревизии
- На какой частоте работает ядро
- Какие настройки в программе для LDO (всех)
- Из какой памяти исполняется программа, если из ОТР то какая задержка WAITCYCL.
- Не с внешней ли шины идет кэширование.
- Необходима схема включения.
- Запрограммированы ли последующие 8 слов после самой программы? Чтобы упреждающее чтение не фиксировало там ошибки.
- Какой адрес в SCB->BFAR (адрес возникновения BusError) и что в SCB->CFSR (флаги)?

Пока предположение только на питание ядра, возможно не хватает емкости конденсаторов на выводах питания.
Работа с кэшированием и без кэширования производится при отбраковке микросхем во всем диапазоне температур, поэтому не ожидаем что виновато именно кэширование. Скорее всего что-то с ним связанное, например потребление, частота, ...

Ошибка BusError может быть связана с двойной ошибкой возникшей на шине. Шине не разрешено возвращать ядру некорректные данные, а двойную ошибки исправить оно не может. В итоге идет выход в HardFault с ошибкой BusError во флагах.

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Проблемы с отладкой 1986BE8T
СообщениеДобавлено: 2019-сен-12 13:55 
Не в сети

Зарегистрирован: 2019-фев-22 13:12
Сообщения: 38
Vasiliy писал(а):
Здравствуйте.

Необходимы подробности:
- Номер с крышки микросхемы для уточнения ревизии
- На какой частоте работает ядро
- Какие настройки в программе для LDO (всех)
- Из какой памяти исполняется программа, если из ОТР то какая задержка WAITCYCL.
- Не с внешней ли шины идет кэширование.
- Необходима схема включения.
- Запрограммированы ли последующие 8 слов после самой программы? Чтобы упреждающее чтение не фиксировало там ошибки.
- Какой адрес в SCB->BFAR (адрес возникновения BusError) и что в SCB->CFSR (флаги)?

Пока предположение только на питание ядра, возможно не хватает емкости конденсаторов на выводах питания.
Работа с кэшированием и без кэширования производится при отбраковке микросхем во всем диапазоне температур, поэтому не ожидаем что виновато именно кэширование. Скорее всего что-то с ним связанное, например потребление, частота, ...

Ошибка BusError может быть связана с двойной ошибкой возникшей на шине. Шине не разрешено возвращать ядру некорректные данные, а двойную ошибки исправить оно не может. В итоге идет выход в HardFault с ошибкой BusError во флагах.


1. Ревизия четвертая, номер сказать не смогу пока не разберут изделие, а этого в планах пока что нет.
2. Ядро работает на частоте 80МГц.
3. Что такое LDO?
4. Программа исполняется из ОЗУ на внешней шине.
5. Да, кэширование инструкций и данных для внешней шины включено.
6. -
7. Код расположен по всем местам где требуется.
8. CFSR = 0x00000100, BFAR = 0xE000Ed38, но на адрес можно не смотреть, он при этом типе ошибки не заполняется.

При инициализации КЭШ инструкций добавил сброс счетчиков и флагов и разрешение фиксировать сбои.
ICACHE->ECC_CNTL = 0x000000F3;
В этом случае при падении выводятся данные что с определенного адреса возникает двойная ошибка. При этом чтение ОЗУ с этого адреса JTag'ом показывает что код верный, но в регистре ICACHE->ECC_DATA лежит явно испорченная команда.

При этом всём, на обслуживаемом регионе контроль ЕСС отключен.
EXT_BUS_CNTR->RGN1_CNTRL = 0x00000501;

Отсюда вытекают несколько вопросов:
1. Если ЕСС на шине отключено, откуда КЭШ узнает об ошибках?
2. В EXT_BUS_CNTR->RGN1_ECCS и ICACHE->ECC_CNTL есть биты SECC_IE и DECC_IE разрешающие прерывание по обнаружению одиночной и двойной ошибки соответственно. Однако прерывание INT_ECC_Handler только одно. Кто его в итоге будет генерировать и будет ли генерировать вообще? В спецификации про это нет упоминания.
3. Если Прерывание по двойной ошибке в КЭШ инструкций или от Внешней шины всё таки есть и генерируется, означает ли это что его возникновение уже привело к сбою? Или ещё есть возможность парировать?
4. Где в спецификации есть описание про работу с ЕСС, механизмы инициализации, реакции на выявление и прочее?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Проблемы с отладкой 1986BE8T
СообщениеДобавлено: 2019-сен-12 14:19 
Не в сети

Зарегистрирован: 2010-сен-21 12:57
Сообщения: 706
Откуда: г. Санкт-Петербург
EvgeniyNvs писал(а):
2. Ядро работает на частоте 80МГц.
3. Что такое LDO?

Максимально допустимая частота ядра CPUCLK согласно СП 64 МГц (не путать с MAXCLK)
Режимы работы LDO задаются в полях SRILOWx регистров REG_61_TMRx, REG_62_TMRx.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Проблемы с отладкой 1986BE8T
СообщениеДобавлено: 2019-сен-12 14:52 
Не в сети

Зарегистрирован: 2019-фев-22 13:12
Сообщения: 38
vasili писал(а):
Максимально допустимая частота ядра CPUCLK согласно СП 64 МГц (не путать с MAXCLK)

Да, но на ней МКО не заведется на целочисленных множителях, поэтому приходится использовать 80.

vasili писал(а):
Режимы работы LDO задаются в полях SRILOWx регистров REG_61_TMRx, REG_62_TMRx.

В спецификации описания LDO и схемы его работы нет. Как он может влиять на функционирование процессора?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Проблемы с отладкой 1986BE8T
СообщениеДобавлено: 2019-сен-12 15:03 
Не в сети

Зарегистрирован: 2010-сен-21 12:57
Сообщения: 706
Откуда: г. Санкт-Петербург
EvgeniyNvs писал(а):
vasili писал(а):
Максимально допустимая частота ядра CPUCLK согласно СП 64 МГц (не путать с MAXCLK)

Да, но на ней МКО не заведется на целочисленных множителях, поэтому приходится использовать 80.

vasili писал(а):
Режимы работы LDO задаются в полях SRILOWx регистров REG_61_TMRx, REG_62_TMRx.

В спецификации описания LDO и схемы его работы нет. Как он может влиять на функционирование процессора?

1. на 64 МГц МКО прекрасно заведется 64/8 = 8.
2. поля SRILOWx регистров REG_61_TMRx, REG_62_TMRx д.б. прописаны до перехода с HSI на новую частоту в соответствии с описанием регистров REG_61_TMRx, REG_62_TMRx в СП.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Проблемы с отладкой 1986BE8T
СообщениеДобавлено: 2019-сен-12 15:26 
Не в сети

Зарегистрирован: 2019-фев-22 13:12
Сообщения: 38
vasili писал(а):
2. поля SRILOWx регистров REG_61_TMRx, REG_62_TMRx д.б. прописаны до перехода с HSI на новую частоту в соответствии с описанием регистров REG_61_TMRx, REG_62_TMRx в СП.


Где там про это написано?
Смотрю в версии 2.13.
В описаниях регистров батарейного домена просто описание значений. Указаний по применению и тем более строгих правил нет.

И за что эти LDO всё таки отвечают?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Проблемы с отладкой 1986BE8T
СообщениеДобавлено: 2019-сен-12 16:24 
Не в сети

Зарегистрирован: 2017-апр-26 14:51
Сообщения: 416
Откуда: ПКК "Миландр"
В текущей версии спецификации 2.14 эти поля описаны так:

SRILOW0[2:0]
Настройка режима работы регулятора LDO0
3’b0 011 – Частота до 100 МГц (доп. ток ~650 мкА)
3’b0 010 – Частота до 50 МГц (доп. ток ~550 мкА)
3’b0 001 – Частота до 30 МГц (доп. ток ~450мкА)
3’b0 000 – Частота до 10 МГц (доп. ток ~400 мкА) (типовое значение)
3’b0 100 – Частота до 1МГц (доп. ток ~300мкА)
3’b0 101 – Частота до 500 кГц (доп. ток ~200 мкА)
3’b0 110 – Частота до 100 кГц (доп. ток ~100мкА)
3’b0 111 – Частота более 10 кГц (доп. ток ~50 мкА)

Если у Вас частота 80МГц, то все поля надо выставить в 011 - до 100МГц. От частоты меняется потребление микроконтроллера, поэтому источники питания нуждаются в подстройке.

Но правильная работа ядра гарантируется только до частоты 64МГц.

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Проблемы с отладкой 1986BE8T
СообщениеДобавлено: 2019-сен-12 16:56 
Не в сети

Зарегистрирован: 2019-фев-22 13:12
Сообщения: 38
Vasiliy писал(а):
В текущей версии спецификации 2.14 эти поля описаны так:

SRILOW0[2:0]
Настройка режима работы регулятора LDO0
3’b0 011 – Частота до 100 МГц (доп. ток ~650 мкА)
3’b0 010 – Частота до 50 МГц (доп. ток ~550 мкА)
3’b0 001 – Частота до 30 МГц (доп. ток ~450мкА)
3’b0 000 – Частота до 10 МГц (доп. ток ~400 мкА) (типовое значение)
3’b0 100 – Частота до 1МГц (доп. ток ~300мкА)
3’b0 101 – Частота до 500 кГц (доп. ток ~200 мкА)
3’b0 110 – Частота до 100 кГц (доп. ток ~100мкА)
3’b0 111 – Частота более 10 кГц (доп. ток ~50 мкА)

Если у Вас частота 80МГц, то все поля надо выставить в 011 - до 100МГц. От частоты меняется потребление микроконтроллера, поэтому источники питания нуждаются в подстройке.

Но правильная работа ядра гарантируется только до частоты 64МГц.


А остальные поля какие должны быть в таком случае?

И про ЕСС есть какое нибудь описание?

Кстати на крышке 1986ВЕ8Т 1826.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Проблемы с отладкой 1986BE8T
СообщениеДобавлено: 2019-сен-13 09:11 
Не в сети

Зарегистрирован: 2017-апр-26 14:51
Сообщения: 416
Откуда: ПКК "Миландр"
EvgeniyNvs писал(а):
А остальные поля какие должны быть в таком случае?

Если вопрос все еще про LDO, то для них в спецификации указано:
Цитата:
Аналогично SRILOW0, TRIM0, EN_DUCC0 и DUCC0_RDY для LDO1 регулятора

Или в чем вопрос?

EvgeniyNvs писал(а):
И про ЕСС есть какое нибудь описание?

* Глава 6.6 "Помехозащищенное кодирование"
* Глава 7.7 "Контроллер внешней шины."
* Пройтись поиском ЕСС по спецификации
* https://startmilandr.ru/doku.php/prog:spec:hammingcode
* Проектирование цифровых устройств Дж Уэйкерли - Том 1

Для программирования достаточно знать, что при записи в память для комбинации адрес (32бит) и данные (32 бит) аппаратно высчитывается контрольный байт ECC и все это записывается в память. При чтении из адреса все это вычитывается и проверяется на соответствие, если заново высчитанное ЕСС для адреса и данных совпадает с прочитанным ЕСС, то данные и адрес правильные. Если не совпали - данные были испорчены. Если испортился один бит, то он однозначно может быть исправлен по ECC и он исправляется, но только если ошибка не в адресе. Двойная ошибка не может быть исправлена. По обнаружению ошибок вырабатываются события.

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Проблемы с отладкой 1986BE8T
СообщениеДобавлено: 2019-сен-13 09:30 
Не в сети

Зарегистрирован: 2019-фев-22 13:12
Сообщения: 38
Vasiliy писал(а):
Если вопрос все еще про LDO, то для них в спецификации указано:
Цитата:
Аналогично SRILOW0, TRIM0, EN_DUCC0 и DUCC0_RDY для LDO1 регулятора

Или в чем вопрос?


Если для SRILOW ставлю 011 то и для TRIM также ставить 011?

Vasiliy писал(а):
* Глава 6.6 "Помехозащищенное кодирование"
* Глава 7.7 "Контроллер внешней шины."
* Пройтись поиском ЕСС по спецификации
* https://startmilandr.ru/doku.php/prog:spec:hammingcode
* Проектирование цифровых устройств Дж Уэйкерли - Том 1

Для программирования достаточно знать, что при записи в память для комбинации адрес (32бит) и данные (32 бит) аппаратно высчитывается контрольный байт ECC и все это записывается в память. При чтении из адреса все это вычитывается и проверяется на соответствие, если заново высчитанное ЕСС для адреса и данных совпадает с прочитанным ЕСС, то данные и адрес правильные. Если не совпали - данные были испорчены. Если испортился один бит, то он однозначно может быть исправлен по ECC и он исправляется, но только если ошибка не в адресе. Двойная ошибка не может быть исправлена. По обнаружению ошибок вырабатываются события.


В общих чертах то всё понятно больше интересует вот это:

EvgeniyNvs писал(а):
Отсюда вытекают несколько вопросов:
1. Если ЕСС на шине отключено, откуда КЭШ узнает об ошибках?
2. В EXT_BUS_CNTR->RGN1_ECCS и ICACHE->ECC_CNTL есть биты SECC_IE и DECC_IE разрешающие прерывание по обнаружению одиночной и двойной ошибки соответственно. Однако прерывание INT_ECC_Handler только одно. Кто его в итоге будет генерировать и будет ли генерировать вообще? В спецификации про это нет упоминания.
3. Если Прерывание по двойной ошибке в КЭШ инструкций или от Внешней шины всё таки есть и генерируется, означает ли это что его возникновение уже привело к сбою? Или ещё есть возможность парировать?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Проблемы с отладкой 1986BE8T
СообщениеДобавлено: 2019-сен-13 09:51 
Не в сети

Зарегистрирован: 2017-апр-26 14:51
Сообщения: 416
Откуда: ПКК "Миландр"
EvgeniyNvs писал(а):
Если для SRILOW ставлю 011 то и для TRIM также ставить 011?
Если для SRILOW ставлю 011 то и для TRIM также ставить 011?

Трим - это подстройка уровня, ставьте в типовое значение. Если при типовом использовании будут возникать проблемы, то можно будет проверить уровни DUcc и возможно подрегулировать уровень. Если подстройка поможет в решении проблемы, тогда можно будет использовать не типовое значение. Но необходимость этого крайне маловероятна.

EvgeniyNvs писал(а):
В общих чертах то всё понятно больше интересует вот это:

EvgeniyNvs писал(а):
Отсюда вытекают несколько вопросов:
1. Если ЕСС на шине отключено, откуда КЭШ узнает об ошибках?
2. В EXT_BUS_CNTR->RGN1_ECCS и ICACHE->ECC_CNTL есть биты SECC_IE и DECC_IE разрешающие прерывание по обнаружению одиночной и двойной ошибки соответственно. Однако прерывание INT_ECC_Handler только одно. Кто его в итоге будет генерировать и будет ли генерировать вообще? В спецификации про это нет упоминания.
3. Если Прерывание по двойной ошибке в КЭШ инструкций или от Внешней шины всё таки есть и генерируется, означает ли это что его возникновение уже привело к сбою? Или ещё есть возможность парировать?

Спецификация:
* Организация шин без контроля ЕСС
* Контроллер обработки событий отказов, сбоев и ошибок
* Контроллер внешней шины

EvgeniyNvs писал(а):
3. Если Прерывание по двойной ошибке в КЭШ инструкций или от Внешней шины всё таки есть и генерируется, означает ли это что его возникновение уже привело к сбою? Или ещё есть возможность парировать?

Только что писал, одиночная ошибка исправляется автоматически, работать дальше можно. Двойная ошибка - не исправляется, по ней в обработчике необходимо решить что делать дальше. Вопрос с этого и начался, что ПО у Вас в HardFault упало.

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Проблемы с отладкой 1986BE8T
СообщениеДобавлено: 2019-сен-13 11:21 
Не в сети

Зарегистрирован: 2019-фев-22 13:12
Сообщения: 38
Vasiliy писал(а):
Трим - это подстройка уровня, ставьте в типовое значение. Если при типовом использовании будут возникать проблемы, то можно будет проверить уровни DUcc и возможно подрегулировать уровень. Если подстройка поможет в решении проблемы, тогда можно будет использовать не типовое значение. Но необходимость этого крайне маловероятна.

Аппаратчики утверждают что у нас внешние LDO стоят чтоб не греть кристалл, поэтому эти настройки ни к чему не приведут.

Vasiliy писал(а):
Спецификация:
* Организация шин без контроля ЕСС


1. Если я правильно понял, даже без контроля ЕСС контроллер внешней шины при передаче данных в КЭШ генерирует ЕСС.
Если КЭШ выключен то тоже генерирует ЕСС, чтоб процессор правильно воспринимал?

Vasiliy писал(а):
* Контроллер обработки событий отказов, сбоев и ошибок
* Контроллер внешней шины


2. Если в настройках КЭШ задано разрешение генерации прерываний по ошибке ЕСС. В контроллере отказов это вроде как регистр EVENT2, но там нигде нет настройки разрешать прерывания или нет.
Или выход на INT_ECC_Handler по ошибке в КЭШ каким то другим образом должен производиться?


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 123 ]  На страницу Пред.  1 ... 4, 5, 6, 7, 8, 9  След.

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


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

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


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

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