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

 
 
5 страниц V   1 2 3 > »   
Reply to this topicStart new topic
> В какой моде запускать main?, Вот в чем вопрос.
DpInRock
сообщение Apr 17 2009, 00:51
Сообщение #1


Гуру
******

Группа: Участник
Сообщений: 2 254
Регистрация: 4-05-07
Из: Moscow
Пользователь №: 27 515



Почему-то я не смог обеспечить вложенные прерывания, если запускаю процессор
в SVC mode. __nested подвешивает тогда прерывания намертво. И никаких тебе приоритетных прерываний.

Таким образом только USER or System.

А без вложенных прерываний - жизнь не мила. Символы RS232 приемника теряются.

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

Возможно, если вход-выход из IRQ писать отдельно и читать руками вектор прерывания, то может и можно что-то сделать? И стоит ли?
А то уж очень не хочется ломать прямую загрузку вектора из АИК. Типа, одна команда, практически.

И чем так плоха System mode?


--------------------
On the road again (Canned Heat)
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Apr 17 2009, 01:09
Сообщение #2


Гуру
******

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



Цитата(DpInRock @ Apr 17 2009, 04:51) *
А без вложенных прерываний - жизнь не мила. Символы RS232 приемника теряются.

Для UART'ов есть PDC. Дергать процессор прерыванием на каждый байт, я бы сказал, неразумно.

Цитата(DpInRock @ Apr 17 2009, 04:51) *
Возможно, если вход-выход из IRQ писать отдельно и читать руками вектор прерывания, то может и можно что-то сделать? И стоит ли?
А то уж очень не хочется ломать прямую загрузку вектора из АИК. Типа, одна команда, практически.

Для начала нужно разобраться, а стоит ли огород городить (см. выше).
Естественно, вложенные прерывания обеспечить можно. Не знаю насчет __nested (IAR, как я понимаю?), но уж руками точно. И прямую загрузку вектора ломать для этого не понадобится.

Цитата(DpInRock @ Apr 17 2009, 04:51) *
И чем так плоха System mode?

Ничем - нормальный привилегированный режим.
Go to the top of the page
 
+Quote Post
DpInRock
сообщение Apr 17 2009, 11:44
Сообщение #3


Гуру
******

Группа: Участник
Сообщений: 2 254
Регистрация: 4-05-07
Из: Moscow
Пользователь №: 27 515



Было бы нагло начинать писать программу с PDC для DBGU. Тем более, из средств отладки - только 4 светодиода на плате.
(Но попробую. По крайней мере приемник. У звука сделал большой буфер, чтобы пореже дергал (раз в 16 мс). А он больше 100 микросекунд иногда забирает. )

Просто чукче некогда было учить матчасть. А примеров от Атмела с использованием пряиого чтения из АИС не нашел. Все норовят свой обработчик вставить и руками АИС читать. А __nested меняет IRQ на SYS. А у меня по жизни майн был в SVC. Почему? Supervisor как слово красивше. А обработчики сишные так и оставались в IRQ до конца. А все примеры норовят этот IRQ поменять на что-то другое. Видимо, стек экономят. Других причин не увидилось. А мне стека не жалко.


--------------------
On the road again (Canned Heat)
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Apr 17 2009, 11:51
Сообщение #4


Гуру
******

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



Цитата(DpInRock @ Apr 17 2009, 15:44) *
А все примеры норовят этот IRQ поменять на что-то другое. Видимо, стек экономят. Других причин не увидилось.

Если делаются вложенные прерывания, то IRQ, естественно, надо на что-то менять. SYS - единственно верный универсальный вариант.
Go to the top of the page
 
+Quote Post
DpInRock
сообщение Apr 17 2009, 13:08
Сообщение #5


Гуру
******

Группа: Участник
Сообщений: 2 254
Регистрация: 4-05-07
Из: Moscow
Пользователь №: 27 515



Вот как раз про "естественно" я еще не дочитал. Вернее фраза "The ARM core enters Interrupt mode, if it has not already done so" намекнула, что IRQ может прерываться IRQ. И я забил на дальейшее чтение.

(Просто чтобы обеспечить работу всех этих меню, wallpapers, всяких картинок, шрифтов приходится кучу программ в дельфях писать. Т.е. программированием вообще не занимаюсь. Занимаюсь расставлением неимоверной кучи данных по отсекам. Спасибо борланду.)


--------------------
On the road again (Canned Heat)
Go to the top of the page
 
+Quote Post
singlskv
сообщение Apr 17 2009, 15:25
Сообщение #6


дятел
*****

Группа: Свой
Сообщений: 1 681
Регистрация: 13-05-06
Из: Питер
Пользователь №: 17 065



Цитата(DpInRock @ Apr 17 2009, 15:44) *
Было бы нагло начинать писать программу с PDC для DBGU. Тем более, из средств отладки - только 4 светодиода на плате.
(Но попробую. По крайней мере приемник. У звука сделал большой буфер, чтобы пореже дергал (раз в 16 мс). А он больше 100 микросекунд иногда забирает. )

А DBGU именно для отладки используется ?
Конечно нужно использовать PDC, правда у DBGU нет очень удобного для этого флага TIMEOUT.
Но в принципе, если речь об отладке, то прерывания DBGU вобще не нужны,
достаточно задать буфер приличной длины и опрашивать чего там напередавалось в каком-нить
переодическом прерывании(если есть) в системе.
ИМХО, это совсем не случай для вложенности прерываний...
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Apr 17 2009, 15:35
Сообщение #7


Гуру
******

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



Цитата(singlskv @ Apr 17 2009, 19:25) *
Конечно нужно использовать PDC, правда у DBGU нет очень удобного для этого флага TIMEOUT.

Да, Атмелы пожмотились почему-то на такую ерунду sad.gif
Go to the top of the page
 
+Quote Post
singlskv
сообщение Apr 17 2009, 20:00
Сообщение #8


дятел
*****

Группа: Свой
Сообщений: 1 681
Регистрация: 13-05-06
Из: Питер
Пользователь №: 17 065



Цитата(aaarrr @ Apr 17 2009, 19:35) *
Да, Атмелы пожмотились почему-то на такую ерунду sad.gif
ага, у мня в проекте где много интерфейсов(то есть почти все какие есть в SAM7А3) из-за этого отдельные линии квитирования

Если автор топика не против,то задам свой вопрос почти по теме..
помница Вы упоминали о ~2 случаях использования вложенных прерываний на АРМ
очень просто интересно, я несколько раз порывался написать свои хитрые обработчики с
возможностью вложенных прерываний и так их и не написал тк каждый раз был
придуман алгоритм который будет лучше без всяких вложенных прерываний,
ну и на обработчиках IRQ я тоже не хило при этом экономлю...
Вот чисто для себя решил что IRQ только "последовательно"(но короткие обработчики),
а если нужно чего-нить супербыстрое то FIQ и 1 источник...

Вот и хотелось бы услышать о Ваших случаях когда вложенные прерывания понадобились...
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Apr 17 2009, 20:38
Сообщение #9


Гуру
******

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



Цитата(singlskv @ Apr 18 2009, 00:00) *
Вот и хотелось бы услышать о Ваших случаях когда вложенные прерывания понадобились...

Например, в LED экране на SAM7X:
- 3 прерывания (2 таймера и SPI) обеспечивают развертку, очень короткие, имеют высший приоритет (т.к. тайминги жесткие, развертку ломать нельзя).
- прерывание от EMAC'а имеет приоритет на единицу ниже: поток здоровый (~80Мбит/с в обе стороны), реагировать нужно быстро.
- перывание от UART'а.
- прерывание от PIT.

Еще в проекте измерительного стенда примерно со столь же тяжелым раскладом.
Короче, вложенные прерывания оказываются востребованы тогда, когда нужно разрулить большое число источников с низкой латентностью. В большинстве же случаев действительно достаточно обычных IRQ или IRQ+FIQ.

P.S. Пользуясь случаем, хочу послать луч ненависти инженерам фирмы Атмел за фиксированный размер приемного буфера EMAC в 128 байт.
Go to the top of the page
 
+Quote Post
singlskv
сообщение Apr 17 2009, 21:00
Сообщение #10


дятел
*****

Группа: Свой
Сообщений: 1 681
Регистрация: 13-05-06
Из: Питер
Пользователь №: 17 065



Цитата(aaarrr @ Apr 18 2009, 00:38) *
Например, в LED экране на SAM7X:
- 3 прерывания (2 таймера и SPI) обеспечивают развертку, очень короткие, имеют высший приоритет (т.к. тайминги жесткие, развертку ломать нельзя).
- прерывание от EMAC'а имеет приоритет на единицу ниже: поток здоровый (~80Мбит/с в обе стороны), реагировать нужно быстро.
- перывание от UART'а.
- прерывание от PIT.
рулить разверткой - понятно, там это главная реалтайм задачка...
Цитата
Еще в проекте измерительного стенда примерно со столь же тяжелым раскладом.
Измерительтный стенд говорите....
Влияние "цифрового" джиттера на измерение частоты ?
Цитата
Короче, вложенные прерывания оказываются востребованы тогда, когда нужно разрулить большое число источников с низкой латентностью. В большинстве же случаев действительно достаточно обычных IRQ или IRQ+FIQ.

Мы это стараемся разруливать с помощью дополнительных процов...переферийных...
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Apr 17 2009, 21:12
Сообщение #11


Гуру
******

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



Цитата(singlskv @ Apr 18 2009, 01:00) *
рулить разверткой - понятно, там это главная реалтайм задачка...

На самом деле, одна из самых мелких по сложности и занимаемым ресурсам. Но да, реалтайм и все тут.

Цитата(singlskv @ Apr 18 2009, 01:00) *
Измерительтный стенд говорите....
Влияние "цифрового" джиттера на измерение частоты ?

Нет, просто монстрическая система из-за большого числа источников данных.

Цитата(singlskv @ Apr 18 2009, 01:00) *
Мы это стараемся разруливать с помощью дополнительных процов...переферийных...

Дополнительный проц - дополнительные деньги. И дополнительный разноплановый геморрой - программ писать в два раза больше, кроме того, нужно еще придумывать интерфейсы взаимодействия.
Go to the top of the page
 
+Quote Post
singlskv
сообщение Apr 17 2009, 21:34
Сообщение #12


дятел
*****

Группа: Свой
Сообщений: 1 681
Регистрация: 13-05-06
Из: Питер
Пользователь №: 17 065



Цитата(aaarrr @ Apr 18 2009, 01:12) *
Дополнительный проц - дополнительные деньги. И дополнительный разноплановый геморрой - программ писать в два раза больше, кроме того, нужно еще придумывать интерфейсы взаимодействия.
А вот здесь совсем не соглашусь...
Доп проц конечно деньги, но очень небольшие по сравнению с основным(1-1,5$ +)
если нужен реальный реалтайм то других вариантов практически нет
к примеру, опрос N входов с определением частоты на них
там цифровой джиттер самое важное, сделать его разумным при наличии других интерфейсов невозможно...
Ну вот пример, можно ли на АРМ7 который подключен к ПЦ через USB(961Кбод) и 3 x RS232(115Кбод)
опрашивать 4-8 сигналов частотой 10Кгц ?
А при наличии переферийной меги8 уже можно...
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Apr 17 2009, 21:41
Сообщение #13


Гуру
******

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



Цитата(singlskv @ Apr 18 2009, 01:34) *
цифровой джиттер самое важное, сделать его разумным при наличии других интерфейсов невозможно...

Так его на ARM'е в принципе сделать разумным затруднительно, безотносительно наличия интерфейсов.

Цитата(singlskv @ Apr 18 2009, 01:34) *
Ну вот пример, можно ли на АРМ7 который подключен к ПЦ через USB(961Кбод) и 3 x RS232(115Кбод)
опрашивать 4-8 сигналов частотой 10Кгц ?
А при наличии переферийной меги8 уже можно...

Уточните, что значит "опрашивать сигнал частотой 10Кгц".

А, например, если прошивку обновить в периферийном контроллере надо - уже проблема. Сделать мостик в основном, да наворотить софт для PC, который соберет/разберет несколько прошивок в один файл (ибо делать больше одного - не уважать клиента) и т.п.
Go to the top of the page
 
+Quote Post
singlskv
сообщение Apr 17 2009, 21:58
Сообщение #14


дятел
*****

Группа: Свой
Сообщений: 1 681
Регистрация: 13-05-06
Из: Питер
Пользователь №: 17 065



Цитата(aaarrr @ Apr 18 2009, 01:41) *
Так его на ARM'е в принципе сделать разумным затруднительно, безотносительно наличия интерфейсов.
Ну тоже можно(и я над этим думаю для младших чипов как перферийных) при ограничении использования
инструкций с набором регистров.
Цитата
Уточните, что значит "опрашивать сигнал частотой 10Кгц".
Опрашивать с частотой 20Кгц+, ну и соответственно уметь "поймать" меандр с частотой 10Кгц(за 1 сек например).
Цитата
А, например, если прошивку обновить в периферийном контроллере надо - уже проблема. Сделать мостик в основном, да наворотить софт для PC, который соберет/разберет несколько прошивок в один файл (ибо делать больше одного - не уважать клиента) и т.п.
Вот здесь Вы очень правы, то есть как бы и все инструменты есть(для ПЦ), но как
только задумываешься их прикрутить для реалтаймовских вещей то сразу желание пропадает...
Ну наверное для этих частей просто должны быть прошивки которые "никогда" не меняются...
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Apr 17 2009, 22:08
Сообщение #15


Гуру
******

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



Цитата(singlskv @ Apr 18 2009, 01:58) *
Ну тоже можно(и я над этим думаю для младших чипов как перферийных) при ограничении использования
инструкций с набором регистров.

Объяснить это желание компилятору только затруднительно smile.gif Да и все пересылки данных автоматически пострадают.
Лучше тогда не использовать прерывания... да и ARM тоже.

Цитата(singlskv @ Apr 18 2009, 01:58) *
Ну наверное для этих частей просто должны быть прошивки которые "никогда" не меняются...

Никогда не говори "никогда" smile.gif Если в системе что-то может меняться, то оно обязательно потребует изменений.
Go to the top of the page
 
+Quote Post

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

 


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


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