|
Измеритель, как организовать программу? |
|
|
|
 |
Ответов
|
Jun 29 2012, 09:56
|
Местный
  
Группа: Свой
Сообщений: 476
Регистрация: 3-07-07
Из: Санкт-Петербург
Пользователь №: 28 866

|
Цитата(Zelepuk @ Jun 29 2012, 00:00)  Встал вопрос: как организовать программу? Если не хотите стандартную rtos, то можете сделать в виде суперлупа, в котором будут поочередно вызываться функции(конечные автоматы) из кольцевого буфера "задач". Это очень полезно, т.к. в конце пути осознаете целесообразность делать следующий проект на какой-нибудь ртос. Цитата(Zelepuk @ Jun 29 2012, 00:00)  просто я "панически" боюсь таких терминов как "синхронизация потоков", "мьютексы", "семафоры" и прочее... А все эти слова придуманы, чтобы разделять общие данные. Например в Вашем случаи история на sd-карте может запрашиваться по эзернету, когда вы в неё пишите. Кстати синхронизацию потоков Вы делаете постоянно, когда есть данные, которые используются и в прерывание, и в основной программе.
--------------------
Ковырял чукча отверткой в ухе, звук в телевизоре и пропал.
|
|
|
|
|
Jun 29 2012, 16:21
|
Знающий
   
Группа: Участник
Сообщений: 634
Регистрация: 27-10-10
Пользователь №: 60 464

|
Цитата(Lotor @ Jun 29 2012, 13:56)  Если не хотите стандартную rtos, то можете сделать в виде суперлупа, в котором будут поочередно вызываться функции(конечные автоматы) из кольцевого буфера "задач". Это очень полезно, т.к. в конце пути осознаете целесообразность делать следующий проект на какой-нибудь ртос.
А все эти слова придуманы, чтобы разделять общие данные. Например в Вашем случаи история на sd-карте может запрашиваться по эзернету, когда вы в неё пишите. Кстати синхронизацию потоков Вы делаете постоянно, когда есть данные, которые используются и в прерывание, и в основной программе. А если реализация будет в виде суперлупа, в котором будут поочерёдно вызываться функции(конечные автоматы) как вы рекомендовали, что будет когда в момент записи на SD-карту происходит запрос по Ethernet? запрос будет просто ждать своей очереди?
|
|
|
|
|
Jul 2 2012, 04:43
|
Местный
  
Группа: Свой
Сообщений: 476
Регистрация: 3-07-07
Из: Санкт-Петербург
Пользователь №: 28 866

|
Цитата(Zelepuk @ Jun 29 2012, 20:21)  А если реализация будет в виде суперлупа, в котором будут поочерёдно вызываться функции(конечные автоматы) как вы рекомендовали, что будет когда в момент записи на SD-карту происходит запрос по Ethernet? запрос будет просто ждать своей очереди? Я не рекомендовал, я лишь сказал, что можно сделать так. И что это будет даже полезно - поймете необходимость в следующей разработке использовать ртос. На счет одновременного доступа к sd-карте - тут уже Вам решать. =) Определитесь что вы хотите получать по езернету - историю нескольких последних измерений или целиком все файлы, имеющиеся на карточке. Определитесь, как именно Вы будете писать историю, учитывая, что при fat32 больше 4 Гб файлы быть не могут. Цитата(AlexandrY @ Jun 30 2012, 13:26)  Linux тут явно не конкурентное решение. Да и AT91 прошлый век. Вы читали задачи, которые требуются решить автору? Микроконтроллеры с 2мя ядрами - это, конечно, хорошо. Но надо не терять связь с реальностью. =) Цитата(AlexandrY @ Jun 30 2012, 13:26)  Кстати о RTOS, перечисленными вами вещами как: "синхронизация потоков", "мьютексы", "семафоры" практически не пользуюсь. Это знаете ли, пережитки больших осей, где каждая задача как черный ящик для программиста. В малых осях можно напрямую читать и писать переменные разных задач не применяя никаких объектов синхронизации, просто зная кто еще, как и когда к ним обращается. А сделать это в обозримых сорсах не представляет проблем. И надежность в целом повысится, так как чем меньше сервисов используете тем меньше проблем оси получаете в виде инверсии приоритетов и взаимных блокировок. Единственно что действительно понадобится это сервисы очередей и событий. И практически все! Довольно интересное суждение, Therac-25 уже привели. Но если прочитать первое и последнее предложение, то выходит несколько противоречиво. Ведь события и очереди - это объекты синхронизации потоков.
--------------------
Ковырял чукча отверткой в ухе, звук в телевизоре и пропал.
|
|
|
|
|
Jul 2 2012, 05:10
|
Местный
  
Группа: Свой
Сообщений: 476
Регистрация: 3-07-07
Из: Санкт-Петербург
Пользователь №: 28 866

|
Цитата(Zelepuk @ Jul 2 2012, 08:50)  Желательно получать все файлы. 4Гб - думаю что этого хватить для всей системы (Linux) + одна папочка (куда надо писать и откуда надо читать информацию). В папке будут короткие фалы осциллограмм(сырые отсчёты с АЦП), записываемые туда непериодичеки, а так же периодическая информация, обновляемая каждые 3 секунды. А периодическая информация будет дописываться в один большой файл? У меня, например, была задача писать видео на sd карту и одновременно его отдавать по езернету, а вот отдавать все файлы по сети мне надо было при отсутствующей записи на sd. У Вас же постоянно идет запись, но не очень интенсивно. Так что, например, просто при каждой дозаписи в файл закрывайте его, чтобы при необходимости другая задача (конечный автомат) могла выкачать часть файла в ОЗУ, из которого эзернет будет кушать. И обязательно прикиньте необходимую скорость для записи - у sd карты есть документированная задержка независящая от класса карты. Чтобы добиться высокой скорости записи приходится применять буферизацию. Тема на этом форуме поднималась часто.
--------------------
Ковырял чукча отверткой в ухе, звук в телевизоре и пропал.
|
|
|
|
Сообщений в этой теме
Zelepuk Измеритель Jun 28 2012, 20:00 _Артём_ Цитата(Zelepuk @ Jun 28 2012, 23:00) Что ... Jun 28 2012, 20:26 Zelepuk Цитата(_Артём_ @ Jun 29 2012, 00:26) Отве... Jun 28 2012, 20:40  _Артём_ Цитата(Zelepuk @ Jun 28 2012, 23:40) Но, ... Jun 28 2012, 20:59  AlexandrY Цитата(Zelepuk @ Jun 28 2012, 23:40) план... Jun 30 2012, 09:26   TigerSHARC Цитата(AlexandrY @ Jun 30 2012, 13:26) Li... Jun 30 2012, 13:29    AlexandrY Цитата(TigerSHARC @ Jun 30 2012, 16:29) Н... Jun 30 2012, 14:29     TigerSHARC Цитата(AlexandrY @ Jun 30 2012, 18:29) Фу... Jun 30 2012, 15:42      sasamy Цитата(TigerSHARC @ Jun 30 2012, 19:42) Я... Jun 30 2012, 16:00      AlexandrY Цитата(TigerSHARC @ Jun 30 2012, 18:42) Я... Jun 30 2012, 16:48       sasamy Цитата(AlexandrY @ Jun 30 2012, 20:48) Ка... Jun 30 2012, 16:56        TigerSHARC Цитата(sasamy @ Jun 30 2012, 20:56) Посмо... Jun 30 2012, 19:09         sasamy Цитата(TigerSHARC @ Jun 30 2012, 23:09) Д... Jun 30 2012, 19:45          AlexandrY Цитата(sasamy @ Jun 30 2012, 22:45) Я бол... Jun 30 2012, 20:35   XVR Цитата(AlexandrY @ Jun 30 2012, 13:26) Кс... Jul 1 2012, 15:12 MrYuran Цитата(Zelepuk @ Jun 29 2012, 00:00) прос... Jun 29 2012, 04:36 Zelepuk А сработает ли суперлуп как я писал выше?
Опыта ра... Jun 29 2012, 09:50 sasamy Цитата(Zelepuk @ Jun 29 2012, 13:50) Но в... Jun 29 2012, 16:26  TigerSHARC Цитата(sasamy @ Jun 29 2012, 20:26) можно... Jul 31 2012, 18:23   AlexandrY Цитата(Lotor @ Jul 2 2012, 07:43) Вы чита... Jul 2 2012, 06:15    Lotor Цитата(AlexandrY @ Jul 2 2012, 10:15) Что... Jul 2 2012, 10:26     AlexandrY Цитата(Lotor @ Jul 2 2012, 13:26) Я об из... Jul 2 2012, 11:11      Lotor Цитата(AlexandrY @ Jul 2 2012, 15:11) А з... Jul 2 2012, 11:29       AlexandrY Цитата(Lotor @ Jul 2 2012, 14:29) Вы явно... Jul 2 2012, 13:14 Zelepuk Посмотрел как реализуется событийная (набор конечн... Jun 30 2012, 17:10 sasamy Цитата(Zelepuk @ Jun 30 2012, 21:10) прос... Jun 30 2012, 17:22 Aner Как то с памятью у них бедно, STM32F303VC ... Jun 30 2012, 21:02 Zelepuk Но Linux для меня как-то роднее и проще. Опишу бол... Jun 30 2012, 21:17 @Ark Цитата(Zelepuk @ Jun 29 2012, 00:00) Треб... Jul 2 2012, 09:33
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|