Миландр

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

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




Начать новую тему  Ответить на тему  [ 182 сообщения ]  На страницу « 19 10 11 12 13 »
Автор Сообщение
 Заголовок сообщения: Re: 1967ВН028
СообщениеДобавлено: 2021-сен-23 16:09 
Не в сети

Зарегистрирован: 2014-авг-15 11:04
Сообщения: 223
Организация: Миландр
Откуда: Миландр
mikri писал(а): *
Указанный раздел спецификации содержит только таблицу приоритетов прерываний. Нужна информация по адресам векторов прерываний.
применительно к ВН28, нет понятия "адрес вектора прерывания". Есть понятие "регистр вектора прерывания".
Поэтому чтобы установить какой-то вектор прерывания, его значение нужно записать в соответствующий регистр,
а не по какому-то конкретному адресу. Т.е. не base_int_vect_ptr[Dma7_n] = Dma7_address_vector; а так
k0 = Dma7_address_vector;; сохраняем адрес во временном регистре ядра
IVDMA7 = k0;; записываем адрес в регистр вектора прерывания
Есть случай когда можно говорить и об адресе вектора прерывания. Это случай когда мы работаем в многопроцессорной системе
и хотим из одного процессора обратиться к регистру вектора прерывания другого процесора.
В этом случае нам придется узнать базовый адрес процессора в карте памяти, затем узнать базовый адрес таблицы прерываний
внутри адресного пространства процессора. Например, к тому же регистру IVDMA7 , который находится в процессоре с ID1,
можно обратится из процессора ID0 таким образом
[J31+(0x14000000+0x1F0300+0x19)] = k0;; // (база_процессора + база_таблицы_векторов + номер вектора)
Но по такому адресу самому к себе не обратиться. Будет ошибка.
В документации часто присутствует слово "адрес" , но иногда это номер регистра , а иногда смещение в
многопроцессорном адресном пространстве. Не сложно и запутаться :)


Последний раз редактировалось BY_man 2021-сен-23 17:17, всего редактировалось 4 раза.

Вернуться к началу
 Заголовок сообщения: Re: 1967ВН028
СообщениеДобавлено: 2021-сен-23 16:32 
Не в сети
Support
Аватара пользователя

Зарегистрирован: 2018-авг-10 23:14
Сообщения: 448
Организация: АО «ПКК Миландр»
Откуда: Зеленоград
mikri писал(а): *
Указанный раздел спецификации содержит только таблицу приоритетов прерываний. Нужна информация по адресам векторов прерываний.
Обратите, пожалуйста, внимание на ответ сотрудника компании с ником на форуме BY_man, при этом адреса регистров всех векторов прерываний можно посмотреть в таблицах 42-43 актуальной версии спецификации, входящих в состав подраздела 7.3.11.1 "Группы регистров векторов прерываний".

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


Вернуться к началу
 Заголовок сообщения: Re: 1967ВН028
СообщениеДобавлено: 2021-сен-23 17:05 
Не в сети

Зарегистрирован: 2021-сен-16 10:52
Сообщения: 16
Организация: НИИДАР
Теперь стало понятнее. Спасибо!


Вернуться к началу
 Заголовок сообщения: Re: 1967ВН028
СообщениеДобавлено: 2021-сен-29 16:28 
Не в сети

Зарегистрирован: 2021-сен-16 10:52
Сообщения: 16
Организация: НИИДАР
Здравствуйте!
Подскажите пожалуйста почему не происходит корректного выхода из обработчика прерывания? Проваливается в прерывание исправно а на выходе теряется.
dma10_interrupt:
j1=retib;;
/*действия выполняемые обработчиком*/
retib=j1;;
RTI(np);;
dma10_interrupt.end:


Вернуться к началу
 Заголовок сообщения: Re: 1967ВН028
СообщениеДобавлено: 2021-сен-29 20:06 
Не в сети

Зарегистрирован: 2014-авг-15 11:04
Сообщения: 223
Организация: Миландр
Откуда: Миландр
Где-то в спецификации должно быть ограничение на первые команды обработчика.
Позже найду. Суть в том, что команда dest=retib;; не должна быть первой.
Можете сначала сохранить J1 на стеке или сделать что-то другое полезное, а затем уже j1 = retib;;
У аналога это звучит так:
Interrupt routine restrictions:
• An interrupt routine may not refer to the RETI or RETS registers on the first instruction line.
• An interrupt routine may not use the RTI, RETI, or RDS instructions on the first instruction line.
аналогично где-то такое должно быть и в нашей спецификации.


Вернуться к началу
 Заголовок сообщения: Re: 1967ВН028
СообщениеДобавлено: 2021-сен-30 10:04 
Не в сети

Зарегистрирован: 2021-сен-16 10:52
Сообщения: 16
Организация: НИИДАР
Помогло, спасибо!


Вернуться к началу
СообщениеДобавлено: 2021-окт-06 12:01 
Не в сети

Зарегистрирован: 2021-сен-16 10:52
Сообщения: 16
Организация: НИИДАР
Добрый день! Подскажите пожалуйста в чем проблема. Принимаю первым от второго процессора по линку поток данных. В приемной части по очереди гружу данные из дма в два буфера, смену буферов произвожу по прерыванию завершения работы дма. Данные закачиваются в буферы корректно, но почему то возвращение из прерывания нормально не происходит. При том если содержимое прерывания закомментировать, оставив только работу с моим импровизированным стеком, то возврат происходит корректно, точнее происходил... потом по непонятой мной причине и он перестал радовать глаз.


Вложения:
123.zip [2.28 КБ]
16 скачиваний
Вернуться к началу
СообщениеДобавлено: 2021-окт-06 13:44 
Не в сети

Зарегистрирован: 2014-авг-15 11:04
Сообщения: 223
Организация: Миландр
Откуда: Миландр
_main:
SQCTL = 0x1204;;//переход в режим супервизора + глобальное разрешение прерываний
j0=j0-100;;//инициализируем стек на 100 мест

а чему равен при старте программы J0? В какой памяти у вас импровизированный стек?


Последний раз редактировалось BY_man 2021-окт-07 08:14, всего редактировалось 2 раза.

Вернуться к началу
СообщениеДобавлено: 2021-окт-06 15:15 
Не в сети

Зарегистрирован: 2021-сен-16 10:52
Сообщения: 16
Организация: НИИДАР
BY_man писал(а): *
_main:
SQCTL = 0x1204;;//переход в режим супервизора + глобальное разрешение прерываний
j0=j0-100;;//инициализируем стек на 100 мест

а чему равен при старте программы J0? В какой памяти у вас импровизированный стек?
Этим вопросом я не задавался, спасибо что заметили. Создал для стека отдельный буфер. Но все равно, из прерывания увы корректного выхода не происходит.


Вложения:
asm_interrupt_dma.zip [1.42 КБ]
10 скачиваний
Вернуться к началу
СообщениеДобавлено: 2021-окт-06 15:29 
Не в сети

Зарегистрирован: 2021-сен-16 10:52
Сообщения: 16
Организация: НИИДАР
Там настройки цепочки от прошлых вариантов остались просто. А вообще в настройке tcb следующий прием я не разрешаю.


Вернуться к началу
СообщениеДобавлено: 2021-окт-06 17:05 
Не в сети

Зарегистрирован: 2014-авг-15 11:04
Сообщения: 223
Организация: Миландр
Откуда: Миландр
да, действительно вы включение цепочки сделали комментарием.
да и весь перезапуск ДМА вы тоже удалили.


Последний раз редактировалось BY_man 2021-окт-07 08:14, всего редактировалось 1 раз.

Вернуться к началу
СообщениеДобавлено: 2021-окт-06 17:39 
Не в сети

Зарегистрирован: 2021-сен-16 10:52
Сообщения: 16
Организация: НИИДАР
Так тоже делал, была мысль что прерывания вызываются поверх и адрес возврата теряется, но даже при не сброшенном в начале прерывания флаге EXE_ISR оно нормально не возвращается из обработчика.


Вернуться к началу
СообщениеДобавлено: 2021-окт-06 18:25 
Не в сети

Зарегистрирован: 2014-авг-15 11:04
Сообщения: 223
Организация: Миландр
Откуда: Миландр
попробовал я вашу программу на своей плате и все у меня работает.
Единственный момент, при передаче с одного процессора на другой, вначале я запускаю код приемной части, а потом передающей.
В противном случае вместо 4-х остановок в обработчике (там я ставил брейк на xr0=[j0 + 0];;) у меня получается 3.
В приложении мой вариант кода. Для удобства отладки я обьединил код в один файл, но каждый из процессоров
исполняет только свою часть кода. ID0 - передатчик, ID1 - приемник. Кабель XS8-XS5.


Вложения:
asm_link_tr.zip [1.29 КБ]
7 скачиваний
Вернуться к началу
СообщениеДобавлено: 2021-окт-07 12:03 
Не в сети

Зарегистрирован: 2021-сен-16 10:52
Сообщения: 16
Организация: НИИДАР
Пожалуй попробую обновить версию CM-LYNX, быть может в этом проблема, она у меня все таки довольно старенькая.


Вернуться к началу
СообщениеДобавлено: 2021-окт-07 12:36 
Не в сети
Support
Аватара пользователя

Зарегистрирован: 2018-авг-10 23:14
Сообщения: 448
Организация: АО «ПКК Миландр»
Откуда: Зеленоград
mikri писал(а): *
Пожалуй попробую обновить версию CM-LYNX, быть может в этом проблема, она у меня все таки довольно старенькая.
Здравствуйте!

Подскажите, пожалуйста, у Вас имеется инструкция по загрузке актуальной версии 2.02.00 дистрибутива CM-LYNX с FTP-сервера? Если нет, то Вами может быть направлено письмо на почту support@milandr.ru с целью получения данной инструкции.

Обратите, пожалуйста, внимание, что возможность загрузки актуальной версии дистрибутива CM-LYNX также доступна в личном кабинете на сайте информационного портала отдела технической поддержки компании Миландр, необходимо только предварительно зарегистрироваться на нём. Информационный портал доступен по ссылке: https://support.milandr.ru/.

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


Вернуться к началу
Показать сообщения за:  Поле сортировки  
Начать новую тему  Ответить на тему  [ 182 сообщения ]  На страницу « 19 10 11 12 13 »

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


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

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


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

Перейти: 

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