|
|
![Reply to this topic](style_images/1/t_reply.gif) ![Start new topic](style_images/1/t_new.gif) |
3xSPI в небольшом корпусе, В TQFP64 или меньше? |
|
|
|
Dec 15 2008, 21:52
|
Гуру
![*](style_images/1/pip.gif) ![*](style_images/1/pip.gif) ![*](style_images/1/pip.gif) ![*](style_images/1/pip.gif) ![*](style_images/1/pip.gif) ![*](style_images/1/pip.gif)
Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448
![](style_images/1/spacer.gif)
|
Цитата(sonycman @ Dec 15 2008, 23:51) ![*](style_images/1/post_snapback.gif) Как я понял, в нём нет встроенной возможности прервать выполнение текущего обработчика прерывания с низким приоритетом при появлении прерывания с более высоким приоритетом? Текущая 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) ![*](style_images/1/post_snapback.gif) А вот в стареньких ARM7TDMI обработчик IRQ вроде как мог быть прерван появлением FIQ? Или тоже нет* И не только FIQ при некоторых программных телодвижениях.
|
|
|
|
|
Dec 16 2008, 09:14
|
Участник
![*](style_images/1/pip.gif)
Группа: Участник
Сообщений: 28
Регистрация: 28-02-07
Пользователь №: 25 746
![](style_images/1/spacer.gif)
|
Цитата(sonycman @ Dec 16 2008, 06:20) ![*](style_images/1/post_snapback.gif) Значит, на кортексе даже не нужно прилагать особых усилий, чтобы работали вложенные прерывания? Отлично! А то, прочитав на сайте arm.com статью про NVIC, сложилось впечатление, что обработчики вызываются строго по очереди... Такое впечатление у Вас сложилось наверно из-за того, что там довольно подробно расписан механизм, позволяющий не тратить время на восстановление и сохранение контекста приложения, если обработчики перываний выполняются друг за другом. Вернее даже не только друг за другом, а ,например, если между окончанием одного обработчика и вызовом другого (случилось прерывание) прошло мало времени, тогда процессор тоже не тратит время на сохранение контекста. Вообще контроллер прерываний в кортексе очень не плох, портит его только SVC, который нельзя вызывать откуда угодно.
|
|
|
|
|
Dec 16 2008, 14:54
|
![](https://electronix.ru/forum/uploads/av-19695.jpg)
Любитель
![*](style_images/1/pip.gif) ![*](style_images/1/pip.gif) ![*](style_images/1/pip.gif) ![*](style_images/1/pip.gif) ![*](style_images/1/pip.gif)
Группа: Свой
Сообщений: 1 864
Регистрация: 20-08-06
Из: Тольятти
Пользователь №: 19 695
![](style_images/1/spacer.gif)
|
Цитата(Sanek_spb @ Dec 16 2008, 13:14) ![*](style_images/1/post_snapback.gif) Такое впечатление у Вас сложилось наверно из-за того, что там довольно подробно расписан механизм, позволяющий не тратить время на восстановление и сохранение контекста приложения, если обработчики перываний выполняются друг за другом. Вернее даже не только друг за другом, а ,например, если между окончанием одного обработчика и вызовом другого (случилось прерывание) прошло мало времени, тогда процессор тоже не тратит время на сохранение контекста.
Вообще контроллер прерываний в кортексе очень не плох, портит его только SVC, который нельзя вызывать откуда угодно. Да, да. Ударились в описание работы tail-chaining. А я всё ждал откровений про вложенные прерывания... А что подразумевается под автоматическим сохранением контекста при возникновении исключения? Сохранение всех регистров CPU (12 штук плюс флаги состояния - больше 50-ти байт!), или только регистра состояния? Если первое, то это делается с похвальной скоростью - всего за 12 тактов! SVC - это аналог SWI в ARMv4? ЗЫ: какая разница между терминами exceptions и interrupts?
|
|
|
|
|
Dec 16 2008, 15:01
|
Гуру
![*](style_images/1/pip.gif) ![*](style_images/1/pip.gif) ![*](style_images/1/pip.gif) ![*](style_images/1/pip.gif) ![*](style_images/1/pip.gif) ![*](style_images/1/pip.gif)
Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448
![](style_images/1/spacer.gif)
|
Цитата(sonycman @ Dec 16 2008, 17:54) ![*](style_images/1/post_snapback.gif) А что подразумевается под автоматическим сохранением контекста при возникновении исключения? Сохранение всех регистров 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 регистров всего.
|
|
|
|
|
Dec 16 2008, 16:38
|
Участник
![*](style_images/1/pip.gif)
Группа: Участник
Сообщений: 28
Регистрация: 28-02-07
Пользователь №: 25 746
![](style_images/1/spacer.gif)
|
Цитата(sonycman @ Dec 16 2008, 17:54) ![*](style_images/1/post_snapback.gif) SVC - это аналог SWI в ARMv4? Есть инструкция, которая пендит интеррапт под названием SerViceCall, она имеет тот же опкод что и SWI, служит примерно для того же, но есть разница в механизмах работы SWI и SVC поэтому и переименовали, чтобы люди разобрались и аккуратненько всё портанули со старых армов.
|
|
|
|
|
Dec 16 2008, 18:22
|
![](https://electronix.ru/forum/uploads/av-25744.jpg)
Местный
![*](style_images/1/pip.gif) ![*](style_images/1/pip.gif) ![*](style_images/1/pip.gif)
Группа: Свой
Сообщений: 213
Регистрация: 28-02-07
Из: Киев
Пользователь №: 25 744
![](style_images/1/spacer.gif)
|
Цитата(sonycman @ Dec 16 2008, 19:00) ![*](style_images/1/post_snapback.gif) Ясно Хм, но почему не сохранили остальные регистры? Все таки придётся дополнительно их сохранять... ![05.gif](http://electronix.ru/forum/style_emoticons/default/05.gif) Потому, что не так много фанатов пишут сейчас на асме, тем более на ARM, у которого асм - извращение редкостное. А компилятор с того же С эти особенности может использовать на пользу. Цитата(sonycman @ Dec 16 2008, 20:07) ![*](style_images/1/post_snapback.gif) когда, наконец, можно будет настраивать частоту SPI (и не только) более дискретно, а то или 18 мегабит, или сразу 9... тьфу ![cranky.gif](http://electronix.ru/forum/style_emoticons/default/cranky.gif) Интересно, как Вы это себе представляете? Отдельный PLL для SPI? Или fractional baud rate generator? Только ЗАЧЕМ?
|
|
|
|
|
Dec 16 2008, 18:46
|
![](https://electronix.ru/forum/uploads/av-19695.jpg)
Любитель
![*](style_images/1/pip.gif) ![*](style_images/1/pip.gif) ![*](style_images/1/pip.gif) ![*](style_images/1/pip.gif) ![*](style_images/1/pip.gif)
Группа: Свой
Сообщений: 1 864
Регистрация: 20-08-06
Из: Тольятти
Пользователь №: 19 695
![](style_images/1/spacer.gif)
|
Цитата(koyodza @ Dec 16 2008, 22:22) ![*](style_images/1/post_snapback.gif) Интересно, как Вы это себе представляете? Отдельный PLL для SPI? Или fractional baud rate generator? Только ЗАЧЕМ? Ну, зачем - думаю всем понятно. Чтобы получить широкий диапазон частот периферии не изменяя частоту ядра... Да ладно, не обращайте внимания, это я так, брюзжать уже начал... ![blush.gif](http://electronix.ru/forum/style_emoticons/default/blush.gif) ЗЫ: хотя PLL - штука хорошая. Вот, например, на SAM7S нельзя было устанавливать частоту ядра отличной от 48, если была необходимость пользоваться USB... а на STM32 уже два PLL ![smile.gif](http://electronix.ru/forum/style_emoticons/default/smile.gif) Прогресс, однако!
|
|
|
|
|
![Reply to this topic](style_images/1/t_reply.gif) ![Start new topic](style_images/1/t_new.gif) |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|