Миландр

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

Часовой пояс: UTC+03:00




Начать новую тему  Ответить на тему  [ 51 сообщение ]  На страницу « 1 2 3 4 »
Автор Сообщение
 Заголовок сообщения: Re: Проблема с модулем МКИО
СообщениеДобавлено: 2016-дек-08 12:16 
Не в сети

Зарегистрирован: 2013-май-15 11:26
Сообщения: 82
Организация: РАН
Откуда: г.Новосибирск
Поробовал в sct фалйе сделать отдельный регион и засунуть туда секцию RESET, но код падает при инциализации CLK... Можете помочь с регионами, чтобы весб код лежал в SRAM, таблица в IRAM, для участков кода в IRAM я сделал отдельную область 0х20007000 с размером 0х1000


Вынести предупреждение
Вернуться к началу
 Заголовок сообщения: Re: Проблема с модулем МКИО
СообщениеДобавлено: 2016-дек-08 13:22 
Не в сети

Зарегистрирован: 2010-сен-21 12:57
Сообщения: 722
Откуда: г. Санкт-Петербург
Ответил ЛС


Вынести предупреждение
Вернуться к началу
 Заголовок сообщения: Re: Проблема с модулем МКИО
СообщениеДобавлено: 2016-дек-19 18:07 
Не в сети

Зарегистрирован: 2010-сен-21 12:57
Сообщения: 722
Откуда: г. Санкт-Петербург
MK ревизии2.
Тактирование от внешнего генератора (HSE1) 56 МГц.
МК в режиме ОУ (отл. плата + модуль MKIO2))

MIL0_CLK = (1<<16) = MAXCLK = 56 МГц.
Если MAXCLK = FCLK = 56 МГц (CPU_CLK = 0) - обмен нормальный.

Если MAXCLK = 56 МГц, FCLK = MAXCLK/2(CPU_CLK = 1) = 28 МГц обмена нет.
Почему, ведь согласно описания MIL0_CLK не зависит от FCLK?


Вложения:
BUD_29_213.rar [174.75 КБ]
130 скачиваний
Вынести предупреждение
Вернуться к началу
 Заголовок сообщения: Re: Проблема с модулем МКИО
СообщениеДобавлено: 2016-дек-20 08:48 
Не в сети

Зарегистрирован: 2009-май-22 09:01
Сообщения: 1299
Откуда: АО "ПКК Миландр"
vasili писал(а):
MK ревизии2.
Тактирование от внешнего генератора (HSE1) 56 МГц.
МК в режиме ОУ (отл. плата + модуль MKIO2))

MIL0_CLK = (1<<16) = MAXCLK = 56 МГц.
Если MAXCLK = FCLK = 56 МГц (CPU_CLK = 0) - обмен нормальный.

Если MAXCLK = 56 МГц, FCLK = MAXCLK/2(CPU_CLK = 1) = 28 МГц обмена нет.
Почему, ведь согласно описания MIL0_CLK не зависит от FCLK?

MIL работает на CPU_CLK & MDR_MIL0_EN из PER1_CLK

Регистр MIL0_CLK настраивать не требуется.


Вынести предупреждение
Вернуться к началу
 Заголовок сообщения: Re: Проблема с модулем МКИО
СообщениеДобавлено: 2016-дек-20 09:53 
Не в сети

Зарегистрирован: 2010-сен-21 12:57
Сообщения: 722
Откуда: г. Санкт-Петербург
-=Sergei=- писал(а):
MIL работает на CPU_CLK & MDR_MIL0_EN из PER1_CLK
Регистр MIL0_CLK настраивать не требуется.
С таймерами похоже аналогичная ситуация?
Причем если FCLK = MAXCLK/2(CPU_CLK = 1) = 28 МГц, то timer0 считает, но прерывание по CNT=ARR не возникает,
если не задать TIM0_CLK = (1<<16)|(1<<0).
Когда будет новая версия спецификации с исправлениями?


Вынести предупреждение
Вернуться к началу
 Заголовок сообщения: Re: Проблема с модулем МКИО
СообщениеДобавлено: 2016-дек-20 10:10 
Не в сети

Зарегистрирован: 2009-май-22 09:01
Сообщения: 1299
Откуда: АО "ПКК Миландр"
vasili писал(а):
-=Sergei=- писал(а):
MIL работает на CPU_CLK & MDR_MIL0_EN из PER1_CLK
Регистр MIL0_CLK настраивать не требуется.
С таймерами похоже аналогичная ситуация?
Причем если FCLK = MAXCLK/2(CPU_CLK = 1) = 28 МГц, то timer0 считает, но прерывание по CNT=ARR не возникает,
если не задать TIM0_CLK = (1<<16)|(1<<0).
Когда будет новая версия спецификации с исправлениями?
Нет, с таймерами все как описано в спецификации.
Опишите подробней.
Спецификацию правлю.


Вынести предупреждение
Вернуться к началу
 Заголовок сообщения: Re: Проблема с модулем МКИО
СообщениеДобавлено: 2016-дек-20 10:54 
Не в сети

Зарегистрирован: 2010-сен-21 12:57
Сообщения: 722
Откуда: г. Санкт-Петербург
Во вложении простой пример - по прерыванию CNT = ARR моргает светодиод с частотой 1ГЦ. (включен HSI 8Мгц)
Если задать CLK_CNTR->CPU_CLK = (1<<0); то прерывание не возникает.
Если задать CLK_CNTR->CPU_CLK = (2<<0); то светодиод моргает с частотой 0,5 ГЦ.


Вложения:
TST_TIM0.rar [170.85 КБ]
113 скачиваний
Вынести предупреждение
Вернуться к началу
 Заголовок сообщения: Re: Проблема с модулем МКИО
СообщениеДобавлено: 2016-дек-20 12:18 
Не в сети

Зарегистрирован: 2009-май-22 09:01
Сообщения: 1299
Откуда: АО "ПКК Миландр"
vasili писал(а):
Во вложении простой пример - по прерыванию CNT = ARR моргает светодиод с частотой 1ГЦ. (включен HSI 8Мгц)
Если задать CLK_CNTR->CPU_CLK = (1<<0); то прерывание не возникает.
Если задать CLK_CNTR->CPU_CLK = (2<<0); то светодиод моргает с частотой 0,5 ГЦ.

Походе вы правы, происходит потеря сигналов запросов прерываний если частота процессора ниже частоты таймера.


Вынести предупреждение
Вернуться к началу
 Заголовок сообщения: Re: Проблема с модулем МКИО
СообщениеДобавлено: 2016-дек-20 13:32 
Не в сети

Зарегистрирован: 2010-сен-21 12:57
Сообщения: 722
Откуда: г. Санкт-Петербург
-=Sergei=- писал(а):
Походе вы правы, происходит потеря сигналов запросов прерываний если частота процессора ниже частоты таймера.


Чтобы снизить потребление хотим ядро запитать частотой MAXCLK/2 = 28 МГц, таймер тактировать MAXCLK = 56МГц
(нужно для формирования ШИМ с требуемым разрешением), при этом хотим запускать ADC, DMA по событиям в таймере. НЕ будет ли здесь аналогичных сюрпризов?


Вынести предупреждение
Вернуться к началу
 Заголовок сообщения: Re: Проблема с модулем МКИО
СообщениеДобавлено: 2016-дек-20 14:51 
Не в сети

Зарегистрирован: 2009-май-22 09:01
Сообщения: 1299
Откуда: АО "ПКК Миландр"
vasili писал(а):
-=Sergei=- писал(а):
Походе вы правы, происходит потеря сигналов запросов прерываний если частота процессора ниже частоты таймера.


Чтобы снизить потребление хотим ядро запитать частотой MAXCLK/2 = 28 МГц, таймер тактировать MAXCLK = 56МГц
(нужно для формирования ШИМ с требуемым разрешением), при этом хотим запускать ADC, DMA по событиям в таймере. НЕ будет ли здесь аналогичных сюрпризов?
Сложный вопрос....буду смотреть


Вынести предупреждение
Вернуться к началу
 Заголовок сообщения: Re: Проблема с модулем МКИО
СообщениеДобавлено: 2016-дек-23 12:33 
Не в сети

Зарегистрирован: 2016-ноя-23 05:50
Сообщения: 12
Организация: ООО НТК Криогенная техника
Откуда: Омск
smashrod, Вам vasili писал
vasili писал(а):
smashrod писал(а):
...
Если я правильно понял Вы выполняете код из внешней 8-ми разрядной SRAM. В этом случае могу посоветовать следующее -
таблицу векторов и обработку прерываний расположить во внутренней SRAM.
При CPUCLK = 40 МГц должны успевать, если код обработки стараться писать оптимально.
Как результаты?


Вынести предупреждение
Вернуться к началу
 Заголовок сообщения: Re: Проблема с модулем МКИО
СообщениеДобавлено: 2016-дек-24 07:41 
Не в сети

Зарегистрирован: 2016-ноя-23 05:50
Сообщения: 12
Организация: ООО НТК Криогенная техника
Откуда: Омск
Данного Вам совета может быть недостаточно. Перед входом в прерывание в стеке сохраняется текущий контекст, а это немалое время при основной Вашей работе с внешней SRAM.


Вынести предупреждение
Вернуться к началу
 Заголовок сообщения: Re: Проблема с модулем МКИО
СообщениеДобавлено: 2016-дек-26 07:01 
Не в сети

Зарегистрирован: 2016-ноя-23 05:50
Сообщения: 12
Организация: ООО НТК Криогенная техника
Откуда: Омск
Если не используете FPU, то в регистр FPCCR запишите 0. Этим Вы запретите сохранение контекста FPU и ускорите вход в прерывание


Вынести предупреждение
Вернуться к началу
 Заголовок сообщения: Re: Проблема с модулем МКИО
СообщениеДобавлено: 2017-янв-04 15:54 
Не в сети

Зарегистрирован: 2010-сен-21 12:57
Сообщения: 722
Откуда: г. Санкт-Петербург
VictorK писал(а):
Если не используете FPU, то в регистр FPCCR запишите 0. Этим Вы запретите сохранение контекста FPU и ускорите вход в прерывание
Решил проверить время реакции на прерывание. Для этого сформировал прерывание от таймера по CNT = CCR.
Первой командой в прерывании читаю содержимое CNT, вычитаю CCR, разницу вывожу через UART.
CPUCLK = TIMCLK0 = MAXCLK = 8МГц.
Весь код и таблица векторов во внутренней SRAM
Получил значение задержки 40(-3) тактов! Содержимое SCB->FPCCR на результат не влияет.
Аналогичная программа для ВЕ91 дает 27(-3) такта при работе в INRAM
и 19(-3) при работе из FLASH (eepromdelay = 0).
Почему задержка для ВЕ8 в 1,5 раз больше чем для ВЕ91?


Вложения:
TST_TIMEIRQ.rar [168.62 КБ]
114 скачиваний
Вынести предупреждение
Вернуться к началу
 Заголовок сообщения: Re: Проблема с модулем МКИО
СообщениеДобавлено: 2017-янв-05 09:37 
Не в сети

Зарегистрирован: 2009-июл-21 14:13
Сообщения: 1390
Откуда: Тула
0. Попробуйте добавить
SCB->FPCCR = 0;
SCB->CONTROL &= ~(1<<2); // clear FPCA
1. Какой размер стекового фрейма? (в обоих случаях c принудительно включенным FPU и отключенным)
2. Влияет ли включение/отключение кэшей?

В любом случае, в этом МК наверное более хитрый (подразумевающий пересинхронизацию между доменами) AHB2APB bridge и наличие ECC тоже не проходит не заметным.
Цитата:
5.7 Организация доступа к периферии
При работе с периферией на шине APB осуществляется проверка ECC, но не все
периферийные блоки ее поддерживают в полном объеме. Проверка ECC проводится для
блоков с большой внутренней памятью, таких как CAN, USB, UART, SSP. Другие блоки при
обращении формируют флаг NOECC. В мосте AHB2APB не проводится проверка ECC при
чтении, а для процессора формируется ECC по тем данным, которые считаны.
С другой стороны в 5.8.1 сказано
Цитата:
Ряд периферийных блоков (CAN,
TIMER, MIL, ARINC, ETHERNET, SpaceWire) могут быть синхронными процессорному ядру, но
при этом могут работать как на большей, так и на меньшей тактовой частоте. В этом случае не
требуется дополнительной логики по пересинхронизации.
Можно ещё пораскуривать доки или книжку по ядру. Приведу выдержку относительно FPCA:
Открыть
Цитата:
Table 4.3 Bit Fields in CONTROL Register

FPCA (bit 2) Floating Point Context Active - This bit is only available in Cortex-M4 with floating point unit implemented. The exception handling mechanism uses this bit to determine if registers in the floating point unit need to be saved when an exception has occurred.

When this bit is 0 (default), the floating point unit has not been used in the current context and therefore there is no need to save floating point registers.

When this bit is 1, the current context has used floating point instructions and therefore need to save floating point registers.

The FPCA bit is set automatically when a floating point instruction is executed. This bit is clear by hardware on exception entry.

There are several options for handling saving of floating point registers.
This will be covered in Chapter 13.
Цитата:
Таблица 4.3 Битовые поля в управляющем регистре

FPCA (бит 2) с плавающей точкой активный контекст - Этот бит доступен только в Cortex-M4 с плавучего точки реализации. Механизм обработки исключений использует этот бит, чтобы определить, есть ли регистры в блоке с плавающей точкой должны быть сохранены, когда исключение произошло.

Когда этот бит равен 0 (по умолчанию), устройство с плавающей точкой не используется в данном контексте, и, следовательно, нет необходимости сохранять регистры с плавающей запятой.

Когда этот бит равен 1, то текущий контекст использовал инструкции с плавающей запятой, и поэтому необходимо сохранить регистры с плавающей точкой.

Бит FPCA устанавливается автоматически, когда команда с плавающей точкой выполняется. Этот бит сброшен аппаратно на входе исключения.

Есть несколько вариантов обработки сохранение регистров с плавающей точкой.
Это будет рассмотрено в главе 13.
Закрыть
P.S.: Справедливости ради: что-то я не наблюдаю описания ядерной периферии ни в последней СП, не в более старой. Окей, со стандартными регистрами ещё куда ни шло, но с фирменными блоками куда сложнее...
Вложение:
Комментарий к файлу: Где описание ядерной периферии??
[ attachment ]
2017-01-05_09-18-20.png [ 77.2 КБ | 3521 просмотр ]

_________________
сочувствующий…


Вынести предупреждение
Вернуться к началу
Показать сообщения за:  Поле сортировки  
Начать новую тему  Ответить на тему  [ 51 сообщение ]  На страницу « 1 2 3 4 »

Часовой пояс: UTC+03:00


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

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


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

Перейти: 

Создано на основе phpBB® Forum Software © phpBB Limited
Русская поддержка phpBB