1892ВМ10Я: различия между версиями
Smurygina (обсуждение | вклад) Нет описания правки |
Pivanovv (обсуждение | вклад) Нет описания правки |
||
(не показаны 3 промежуточные версии 2 участников) | |||
Строка 7: | Строка 7: | ||
</blockquote> | </blockquote> | ||
'''Как сбросить бит EXL регистра CP0 Status? ''' | '''Как сбросить бит EXL регистра CP0 Status? ''' | ||
<blockquote>Сброс бита EXL происходит при переключении из привилегированного режима процессора в обычный режим. Такое переключение осуществляется только командой "eret".</blockquote> | <blockquote>Сброс бита EXL происходит при переключении из привилегированного режима процессора в обычный режим. Такое переключение осуществляется только командой "eret".</blockquote>'''Есть ли пример для работы с DSP на C?'''<blockquote>В примерах проектов MCStudio 4 для NVCom-02T существует пример dsp_library_main. При его запуске добавляется папка с примером dsplib. Для работы с ним необходимо сначала собрать проект dsplib, после чего собрать проект dsp_library_main. Отладка производится из проекта dsp_library_main.</blockquote> | ||
= Вопросы по аппаратной части = | = Вопросы по аппаратной части = | ||
Строка 14: | Строка 14: | ||
'''Возможно ли настроить SPI c автоматическим выставлением сигнала SS[0] (SS_DO = 0), но с заданием задержки выставления сигнала SS[0] относительно MOSI?''' | '''Возможно ли настроить SPI c автоматическим выставлением сигнала SS[0] (SS_DO = 0), но с заданием задержки выставления сигнала SS[0] относительно MOSI?''' | ||
<blockquote>Величиной задержки между падением SS в 0 и началом передачи слова можно управлять через регистр TSS_RATE. <br>Сам по себе этот регистр предназначен для управления задержкой между передачей двух слов (т.е. длительностью пребывания SS в 1). Однако вместе с этой величиной пропорционально изменяются ещё и задержки перед установкой SS в 1 и после его падения в 0.</blockquote> | <blockquote>Величиной задержки между падением SS в 0 и началом передачи слова можно управлять через регистр TSS_RATE. <br>Сам по себе этот регистр предназначен для управления задержкой между передачей двух слов (т.е. длительностью пребывания SS в 1). Однако вместе с этой величиной пропорционально изменяются ещё и задержки перед установкой SS в 1 и после его падения в 0.</blockquote> | ||
'''Как разместить программу в кэш-памяти?''' | |||
<blockquote>Расположить программу в кэш-памяти нельзя. Можно расположить ее в кэшируемом сегменте виртуальных адресов и включить кэширование. Кэширование сегмента включается записью нужного значения в соответствующее поле регистра CP0.Config (или CP0.Config1, в зависимости от сегмента). Часть сегментов виртуальных адресов является некэшируемой. Таким образом, в одном и том же диапазоне физических адресов могут быть расположены как кэшируемые данные/код, так и некэшируемые.<br>Подробнее о преобразовании адресов и кэшировании можно прочитать в одноименном документе https://elvees.ru/mc/data_sheets/mc_start_memory.pdf.</blockquote> | |||
= Нестандартные вопросы = | = Нестандартные вопросы = | ||
[[Category:Процессоры]] | |||
[[Category:Процессоры]] | |||
[[Категория:Микропроцессоры|*]] |
Текущая версия от 15:53, 28 июня 2023
Вопросы по программному обеспечению
Как считать/запись значения регистров СР0 в программе на С?
Для работы с регистрами CP0 в языке Си необходимо использовать ассемблерные вставки.
Компилятор GCC предусматривает специальные конструкции, упрощающие работу с такими вставками. Они описаны в документации на компилятор, в частности здесь: https://gcc.gnu.org/onlinedocs/gcc-4.8.5/gcc/Extended-Asm.html#Extended-Asm
Как сбросить бит EXL регистра CP0 Status?
Сброс бита EXL происходит при переключении из привилегированного режима процессора в обычный режим. Такое переключение осуществляется только командой "eret".
Есть ли пример для работы с DSP на C?
В примерах проектов MCStudio 4 для NVCom-02T существует пример dsp_library_main. При его запуске добавляется папка с примером dsplib. Для работы с ним необходимо сначала собрать проект dsplib, после чего собрать проект dsp_library_main. Отладка производится из проекта dsp_library_main.
Вопросы по аппаратной части
В руководстве пользователя на микросхему в разделе 8.4 "Каналы DMA для портов" указано допустимое число слов данных WN от 8 до 16 слов. Можно ли передавать меньше 8 слов?
Да, меньше 8 слов передать можно.
Реальное число слов данных, которое надо передать, задаётся через поле WCX.WN – это длина пачки слов, передаваемой по внутренней шине. Посредством этого параметра можно плавно изменять приоритет каналов DMA относительно других устройств и относительно друг друга.
Возможно ли настроить SPI c автоматическим выставлением сигнала SS[0] (SS_DO = 0), но с заданием задержки выставления сигнала SS[0] относительно MOSI?
Величиной задержки между падением SS в 0 и началом передачи слова можно управлять через регистр TSS_RATE.
Сам по себе этот регистр предназначен для управления задержкой между передачей двух слов (т.е. длительностью пребывания SS в 1). Однако вместе с этой величиной пропорционально изменяются ещё и задержки перед установкой SS в 1 и после его падения в 0.
Как разместить программу в кэш-памяти?
Расположить программу в кэш-памяти нельзя. Можно расположить ее в кэшируемом сегменте виртуальных адресов и включить кэширование. Кэширование сегмента включается записью нужного значения в соответствующее поле регистра CP0.Config (или CP0.Config1, в зависимости от сегмента). Часть сегментов виртуальных адресов является некэшируемой. Таким образом, в одном и том же диапазоне физических адресов могут быть расположены как кэшируемые данные/код, так и некэшируемые.
Подробнее о преобразовании адресов и кэшировании можно прочитать в одноименном документе https://elvees.ru/mc/data_sheets/mc_start_memory.pdf.