|
|
  |
В какой моде запускать main?, Вот в чем вопрос. |
|
|
|
Apr 17 2009, 00:51
|

Гуру
     
Группа: Участник
Сообщений: 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)
|
|
|
|
|
Apr 17 2009, 01:09
|
Гуру
     
Группа: Свой
Сообщений: 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? Ничем - нормальный привилегированный режим.
|
|
|
|
|
Apr 17 2009, 15:25
|
дятел
    
Группа: Свой
Сообщений: 1 681
Регистрация: 13-05-06
Из: Питер
Пользователь №: 17 065

|
Цитата(DpInRock @ Apr 17 2009, 15:44)  Было бы нагло начинать писать программу с PDC для DBGU. Тем более, из средств отладки - только 4 светодиода на плате. (Но попробую. По крайней мере приемник. У звука сделал большой буфер, чтобы пореже дергал (раз в 16 мс). А он больше 100 микросекунд иногда забирает. ) А DBGU именно для отладки используется ? Конечно нужно использовать PDC, правда у DBGU нет очень удобного для этого флага TIMEOUT. Но в принципе, если речь об отладке, то прерывания DBGU вобще не нужны, достаточно задать буфер приличной длины и опрашивать чего там напередавалось в каком-нить переодическом прерывании(если есть) в системе. ИМХО, это совсем не случай для вложенности прерываний...
|
|
|
|
|
Apr 17 2009, 20:00
|
дятел
    
Группа: Свой
Сообщений: 1 681
Регистрация: 13-05-06
Из: Питер
Пользователь №: 17 065

|
Цитата(aaarrr @ Apr 17 2009, 19:35)  Да, Атмелы пожмотились почему-то на такую ерунду  ага, у мня в проекте где много интерфейсов(то есть почти все какие есть в SAM7А3) из-за этого отдельные линии квитирования Если автор топика не против,то задам свой вопрос почти по теме.. помница Вы упоминали о ~2 случаях использования вложенных прерываний на АРМ очень просто интересно, я несколько раз порывался написать свои хитрые обработчики с возможностью вложенных прерываний и так их и не написал тк каждый раз был придуман алгоритм который будет лучше без всяких вложенных прерываний, ну и на обработчиках IRQ я тоже не хило при этом экономлю... Вот чисто для себя решил что IRQ только "последовательно"(но короткие обработчики), а если нужно чего-нить супербыстрое то FIQ и 1 источник... Вот и хотелось бы услышать о Ваших случаях когда вложенные прерывания понадобились...
|
|
|
|
|
Apr 17 2009, 20:38
|
Гуру
     
Группа: Свой
Сообщений: 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 байт.
|
|
|
|
|
Apr 17 2009, 21:00
|
дятел
    
Группа: Свой
Сообщений: 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. Мы это стараемся разруливать с помощью дополнительных процов...переферийных...
|
|
|
|
|
Apr 17 2009, 21:12
|
Гуру
     
Группа: Свой
Сообщений: 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)  Мы это стараемся разруливать с помощью дополнительных процов...переферийных... Дополнительный проц - дополнительные деньги. И дополнительный разноплановый геморрой - программ писать в два раза больше, кроме того, нужно еще придумывать интерфейсы взаимодействия.
|
|
|
|
|
Apr 17 2009, 21:34
|
дятел
    
Группа: Свой
Сообщений: 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 уже можно...
|
|
|
|
|
Apr 17 2009, 21:41
|
Гуру
     
Группа: Свой
Сообщений: 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, который соберет/разберет несколько прошивок в один файл (ибо делать больше одного - не уважать клиента) и т.п.
|
|
|
|
|
Apr 17 2009, 21:58
|
дятел
    
Группа: Свой
Сообщений: 1 681
Регистрация: 13-05-06
Из: Питер
Пользователь №: 17 065

|
Цитата(aaarrr @ Apr 18 2009, 01:41)  Так его на ARM'е в принципе сделать разумным затруднительно, безотносительно наличия интерфейсов. Ну тоже можно(и я над этим думаю для младших чипов как перферийных) при ограничении использования инструкций с набором регистров. Цитата Уточните, что значит "опрашивать сигнал частотой 10Кгц". Опрашивать с частотой 20Кгц+, ну и соответственно уметь "поймать" меандр с частотой 10Кгц(за 1 сек например). Цитата А, например, если прошивку обновить в периферийном контроллере надо - уже проблема. Сделать мостик в основном, да наворотить софт для PC, который соберет/разберет несколько прошивок в один файл (ибо делать больше одного - не уважать клиента) и т.п. Вот здесь Вы очень правы, то есть как бы и все инструменты есть(для ПЦ), но как только задумываешься их прикрутить для реалтаймовских вещей то сразу желание пропадает... Ну наверное для этих частей просто должны быть прошивки которые "никогда" не меняются...
|
|
|
|
|
Apr 17 2009, 22:08
|
Гуру
     
Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448

|
Цитата(singlskv @ Apr 18 2009, 01:58)  Ну тоже можно(и я над этим думаю для младших чипов как перферийных) при ограничении использования инструкций с набором регистров. Объяснить это желание компилятору только затруднительно  Да и все пересылки данных автоматически пострадают. Лучше тогда не использовать прерывания... да и ARM тоже. Цитата(singlskv @ Apr 18 2009, 01:58)  Ну наверное для этих частей просто должны быть прошивки которые "никогда" не меняются... Никогда не говори "никогда"  Если в системе что-то может меняться, то оно обязательно потребует изменений.
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|