реклама на сайте
подробности

 
 
4 страниц V  < 1 2 3 4 >  
Reply to this topicStart new topic
> 3xSPI в небольшом корпусе, В TQFP64 или меньше?
koyodza
сообщение Dec 15 2008, 21:51
Сообщение #16


Местный
***

Группа: Свой
Сообщений: 213
Регистрация: 28-02-07
Из: Киев
Пользователь №: 25 744



Цитата(sonycman @ Dec 15 2008, 22:51) *
Ещё хотел спросить про контроллер прерываний в кортекс - м3.

Как я понял, в нём нет встроенной возможности прервать выполнение текущего обработчика прерывания с низким приоритетом при появлении прерывания с более высоким приоритетом?
Текущая ISR процедура по-любому будет выполнена до конца и только затем начнёт работать ISR более приоритетного прерывания?

А вот в стареньких ARM7TDMI обработчик IRQ вроде как мог быть прерван появлением FIQ? Или тоже нет*

Докладываю: в STM32 (Cortex-M3) рвётся, только что специально проверил 08.gif
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Dec 15 2008, 21:52
Сообщение #17


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(sonycman @ Dec 15 2008, 23:51) *
Как я понял, в нём нет встроенной возможности прервать выполнение текущего обработчика прерывания с низким приоритетом при появлении прерывания с более высоким приоритетом?
Текущая ISR процедура по-любому будет выполнена до конца и только затем начнёт работать ISR более приоритетного прерывания?


Тогда почему он называется Nested Vectored Interrupt Controller?
Цитата
On the Cortex-M3, exception prioritization, nesting of exceptions, and saving of corruptible
registers is handled entirely by the core to permit efficient handling. This means that interrupts
remain enabled by the core on entry to every exception handler.


Цитата(sonycman @ Dec 15 2008, 23:51) *
А вот в стареньких ARM7TDMI обработчик IRQ вроде как мог быть прерван появлением FIQ? Или тоже нет*

И не только FIQ при некоторых программных телодвижениях.
Go to the top of the page
 
+Quote Post
sonycman
сообщение Dec 16 2008, 03:20
Сообщение #18


Любитель
*****

Группа: Свой
Сообщений: 1 864
Регистрация: 20-08-06
Из: Тольятти
Пользователь №: 19 695



Значит, на кортексе даже не нужно прилагать особых усилий, чтобы работали вложенные прерывания? Отлично!
А то, прочитав на сайте arm.com статью про NVIC, сложилось впечатление, что обработчики вызываются строго по очереди...
Go to the top of the page
 
+Quote Post
Sanek_spb
сообщение Dec 16 2008, 09:14
Сообщение #19


Участник
*

Группа: Участник
Сообщений: 28
Регистрация: 28-02-07
Пользователь №: 25 746



Цитата(sonycman @ Dec 16 2008, 06:20) *
Значит, на кортексе даже не нужно прилагать особых усилий, чтобы работали вложенные прерывания? Отлично!
А то, прочитав на сайте arm.com статью про NVIC, сложилось впечатление, что обработчики вызываются строго по очереди...


Такое впечатление у Вас сложилось наверно из-за того, что там довольно подробно расписан механизм, позволяющий не тратить время на восстановление и сохранение контекста приложения, если обработчики перываний выполняются друг за другом. Вернее даже не только друг за другом, а ,например, если между окончанием одного обработчика и вызовом другого (случилось прерывание) прошло мало времени, тогда процессор тоже не тратит время на сохранение контекста.

Вообще контроллер прерываний в кортексе очень не плох, портит его только SVC, который нельзя вызывать откуда угодно.
Go to the top of the page
 
+Quote Post
sonycman
сообщение Dec 16 2008, 14:54
Сообщение #20


Любитель
*****

Группа: Свой
Сообщений: 1 864
Регистрация: 20-08-06
Из: Тольятти
Пользователь №: 19 695



Цитата(Sanek_spb @ Dec 16 2008, 13:14) *
Такое впечатление у Вас сложилось наверно из-за того, что там довольно подробно расписан механизм, позволяющий не тратить время на восстановление и сохранение контекста приложения, если обработчики перываний выполняются друг за другом. Вернее даже не только друг за другом, а ,например, если между окончанием одного обработчика и вызовом другого (случилось прерывание) прошло мало времени, тогда процессор тоже не тратит время на сохранение контекста.

Вообще контроллер прерываний в кортексе очень не плох, портит его только SVC, который нельзя вызывать откуда угодно.

Да, да. Ударились в описание работы tail-chaining. А я всё ждал откровений про вложенные прерывания... smile.gif

А что подразумевается под автоматическим сохранением контекста при возникновении исключения? Сохранение всех регистров CPU (12 штук плюс флаги состояния - больше 50-ти байт!), или только регистра состояния? Если первое, то это делается с похвальной скоростью - всего за 12 тактов!

SVC - это аналог SWI в ARMv4?

ЗЫ: какая разница между терминами exceptions и interrupts?
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Dec 16 2008, 15:01
Сообщение #21


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(sonycman @ Dec 16 2008, 17:54) *
А что подразумевается под автоматическим сохранением контекста при возникновении исключения? Сохранение всех регистров CPU (12 штук плюс флаги состояния - больше 50-ти байт!), или только регистра состояния? Если первое, то это делается с похвальной скоростью - всего за 12 тактов!

Написано же:
Цитата
When an exception takes place, the Program Counter, Program Status Register, Link Register and the R0-R3,R12 general purpose registers are pushed on to the stack.

Т.е. 8 регистров всего.
Go to the top of the page
 
+Quote Post
Sanek_spb
сообщение Dec 16 2008, 16:38
Сообщение #22


Участник
*

Группа: Участник
Сообщений: 28
Регистрация: 28-02-07
Пользователь №: 25 746



Цитата(sonycman @ Dec 16 2008, 17:54) *
SVC - это аналог SWI в ARMv4?


Есть инструкция, которая пендит интеррапт под названием SerViceCall, она имеет тот же опкод что и SWI, служит примерно для того же, но есть разница в механизмах работы SWI и SVC поэтому и переименовали, чтобы люди разобрались и аккуратненько всё портанули со старых армов.
Go to the top of the page
 
+Quote Post
sonycman
сообщение Dec 16 2008, 17:00
Сообщение #23


Любитель
*****

Группа: Свой
Сообщений: 1 864
Регистрация: 20-08-06
Из: Тольятти
Пользователь №: 19 695



Цитата(Sanek_spb @ Dec 16 2008, 20:38) *
Есть инструкция, которая пендит интеррапт под названием SerViceCall, она имеет тот же опкод что и SWI, служит примерно для того же, но есть разница в механизмах работы SWI и SVC поэтому и переименовали, чтобы люди разобрались и аккуратненько всё портанули со старых армов.

Ясно smile.gif

Цитата(aaarrr @ Dec 16 2008, 19:01) *
Написано же:

Т.е. 8 регистров всего.

Хм, но почему не сохранили остальные регистры? Все таки придётся дополнительно их сохранять... 05.gif
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Dec 16 2008, 17:05
Сообщение #24


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(sonycman @ Dec 16 2008, 20:00) *
Хм, но почему не сохранили остальные регистры? Все таки придётся дополнительно их сохранять... 05.gif

Потому что написанная в соответствии со стандартом процедура не имеет права их портить. Не придется ничего сохранять.
Go to the top of the page
 
+Quote Post
sonycman
сообщение Dec 16 2008, 18:07
Сообщение #25


Любитель
*****

Группа: Свой
Сообщений: 1 864
Регистрация: 20-08-06
Из: Тольятти
Пользователь №: 19 695



Цитата(aaarrr @ Dec 16 2008, 21:05) *
Потому что написанная в соответствии со стандартом процедура не имеет права их портить. Не придется ничего сохранять.

Это вы про Calling Convention?
А, понятно. Если потребуется большее кол-во регистров, то процедура должна будет их сохранить...
smile.gif

ЗЫ: всё вроде хорошо, но когда, наконец, можно будет настраивать частоту SPI (и не только) более дискретно, а то или 18 мегабит, или сразу 9... тьфу cranky.gif
Go to the top of the page
 
+Quote Post
koyodza
сообщение Dec 16 2008, 18:22
Сообщение #26


Местный
***

Группа: Свой
Сообщений: 213
Регистрация: 28-02-07
Из: Киев
Пользователь №: 25 744



Цитата(sonycman @ Dec 16 2008, 19:00) *
Ясно smile.gif
Хм, но почему не сохранили остальные регистры? Все таки придётся дополнительно их сохранять... 05.gif

Потому, что не так много фанатов пишут сейчас на асме, тем более на ARM, у которого асм - извращение редкостное. А компилятор с того же С эти особенности может использовать на пользу.

Цитата(sonycman @ Dec 16 2008, 20:07) *
когда, наконец, можно будет настраивать частоту SPI (и не только) более дискретно, а то или 18 мегабит, или сразу 9... тьфу cranky.gif

Интересно, как Вы это себе представляете? Отдельный PLL для SPI? Или fractional baud rate generator? Только ЗАЧЕМ?
Go to the top of the page
 
+Quote Post
sonycman
сообщение Dec 16 2008, 18:46
Сообщение #27


Любитель
*****

Группа: Свой
Сообщений: 1 864
Регистрация: 20-08-06
Из: Тольятти
Пользователь №: 19 695



Цитата(koyodza @ Dec 16 2008, 22:22) *
Интересно, как Вы это себе представляете? Отдельный PLL для SPI? Или fractional baud rate generator? Только ЗАЧЕМ?

Ну, зачем - думаю всем понятно. Чтобы получить широкий диапазон частот периферии не изменяя частоту ядра...
Да ладно, не обращайте внимания, это я так, брюзжать уже начал... blush.gif

ЗЫ: хотя PLL - штука хорошая. Вот, например, на SAM7S нельзя было устанавливать частоту ядра отличной от 48, если была необходимость пользоваться USB... а на STM32 уже два PLL smile.gif
Прогресс, однако!
Go to the top of the page
 
+Quote Post
koyodza
сообщение Dec 16 2008, 18:59
Сообщение #28


Местный
***

Группа: Свой
Сообщений: 213
Регистрация: 28-02-07
Из: Киев
Пользователь №: 25 744



Цитата(sonycman @ Dec 16 2008, 20:46) *
Ну, зачем - думаю всем понятно. Чтобы получить любую желаемую частоту периферии не снижая частоту ядра. Да ладно, не обращайте внимания, это я так, брюзжать уже начал... blush.gif

ЗАЧЕМ иметь на SPI любую частоту? Что, 9МГц или 6МГц не устраивают, непременно надо 7МГц? Это же синхронный интерфейс, в отличие от UART здесь нет необходимости получать точное значение частоты.
Go to the top of the page
 
+Quote Post
sonycman
сообщение Dec 16 2008, 19:02
Сообщение #29


Любитель
*****

Группа: Свой
Сообщений: 1 864
Регистрация: 20-08-06
Из: Тольятти
Пользователь №: 19 695



Цитата(koyodza @ Dec 16 2008, 22:59) *
ЗАЧЕМ иметь на SPI любую частоту? Что, 9МГц или 6МГц не устраивают, непременно надо 7МГц? Это же синхронный интерфейс, в отличие от UART здесь нет необходимости получать точное значение частоты.

Да, 9 МГц маловато. Надо 14. Зачем лишние тормоза? А 18 - уже многовато. biggrin.gif
Go to the top of the page
 
+Quote Post
koyodza
сообщение Dec 16 2008, 19:12
Сообщение #30


Местный
***

Группа: Свой
Сообщений: 213
Регистрация: 28-02-07
Из: Киев
Пользователь №: 25 744



Цитата(sonycman @ Dec 16 2008, 21:02) *
Да, 9 МГц маловато. Надо 14. Зачем лишние тормоза? А 18 - уже многовато. biggrin.gif

Имхо, к вопросу оптимизации нужно подходить более системно, а не пытаться из отдельно взятого узла получить что вздумается. Может, окажется что другой МК нужен, или вообще задачу не на МК нужно делать.
Go to the top of the page
 
+Quote Post

4 страниц V  < 1 2 3 4 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 25th June 2024 - 22:46
Рейтинг@Mail.ru


Страница сгенерированна за 0.01518 секунд с 7
ELECTRONIX ©2004-2016