01.10.2011 Программный приёмник выложен в SVN

Материал из SRNS
Перейти к: навигация, поиск
(Где взять исходники)
 
(не показаны 13 промежуточных версий 2 участников)
Строка 1: Строка 1:
 
<summary [ hidden ]>Решено оживить проект программного приёмника
 
<summary [ hidden ]>Решено оживить проект программного приёмника
[[Файл:Logo.jpg|thumb|Работа программного приемника SR31]]</summary>
+
[[Файл:20111003 SR31 Logo.jpg|thumb|Logo SR31]]</summary>
 +
 
 +
[[Файл:20111003 SR31 Logo.jpg|thumb|Logo SR31 - вот он так примерно и работает...]]
  
 
{{TOCright}}
 
{{TOCright}}
Строка 18: Строка 20:
 
Я подчистил исходники, выкинул всё, что не нужно. Удалил все бинарные файлы. Вычистил всё, что взязано с Plx (RIP PlxPci - не думаю, что кто-то будет жалеть...).  
 
Я подчистил исходники, выкинул всё, что не нужно. Удалил все бинарные файлы. Вычистил всё, что взязано с Plx (RIP PlxPci - не думаю, что кто-то будет жалеть...).  
  
Результат выложил в SVN. Пока проект называется SR31. Посмотреть его содержимое, при наличии пары логин/пароль, можно тут: [http://server.srns.ru/websvn/listing.php?repname=SR31&path=%2Ftrunk%2F&#a0b40758157c8f16fa703ca3be466fa8a  SR31]
+
Результат выложил в SVN. Пока проект называется SR31. Посмотреть его содержимое, при наличии пары логин/пароль, можно тут: [http://srns.ru:802/websvn/listing.php?repname=SR31&path=%2Ftrunk%2F&#a0b40758157c8f16fa703ca3be466fa8a  SR31]
  
 
Так как же получить исходники? Во-первых, вам нужен Linux. Это первое и главное. Дальше всё просто.
 
Так как же получить исходники? Во-первых, вам нужен Linux. Это первое и главное. Дальше всё просто.
Строка 24: Строка 26:
 
1. Создать рабочий каталог (допустим, SR31):
 
1. Создать рабочий каталог (допустим, SR31):
  
<code>
+
<syntaxhighlight lang="bash">
mkdir SR31
+
mkdir SR31
</code>
+
</syntaxhighlight>
  
2. Создать каталог для исходных файлов:
+
2. Получить текущую ревизию из репозитория:
  
<code>
+
<syntaxhighlight lang="bash">
 
cd SR31
 
cd SR31
svn co svn://193.233.71.244:4000/SR31/trunk/ .
+
svn co svn://193.233.71.244:4000/SR31/trunk/ .
</code>
+
</syntaxhighlight>
  
При выполнении данной команды будет запрошен логин и пароль. Пароли и явки каждому будут
+
[[File:20111011_SR31_1.png|400px|center]]
выдаваться отдельно.
+
[[File:20111011_SR31_2.png|400px|center]]
 +
[[File:20111011_SR31_3.png|400px|center]]
  
 
Если нужно работать с записанными выборками данных (а не с платой USB), то надо:
 
Если нужно работать с записанными выборками данных (а не с платой USB), то надо:
Строка 42: Строка 45:
 
3. Создать каталог для данных
 
3. Создать каталог для данных
  
<code>
+
<syntaxhighlight lang="bash">
mkdir data
+
mkdir data
</code>
+
</syntaxhighlight>
  
 
4. Скопировать в каталог с данными выборку сигнала. На данный момент в программу задано,
 
4. Скопировать в каталог с данными выборку сигнала. На данный момент в программу задано,
 
что файлы называются data/sigs.bin и data/mags.bin
 
что файлы называются data/sigs.bin и data/mags.bin
 +
[[File:20111011_SR31_4.png|400px|center]]
 +
[[File:20111011_SR31_5.png|center]]
 +
[[File:20111011_SR31_6.png|center]]
  
5. Скачать, скомпилировать библиотеку [http://www.fftw.org fftw] и положить результат (файлы fftw3.h и libfftw3.a) в каталог <code>./lib/fftw3</code>.
+
5. Необходимо поставить библиотеку FFTW. Есть два варианта:
 +
 
 +
:* Поставить библиотеку fftw3-dev в систему из репозитория (пример для Ubuntu):
 +
:<syntaxhighlight lang="bash">
 +
sudo apt-get install fftw3-dev
 +
</syntaxhighlight>
 +
 
 +
:* Резервный вариант: Скачать, скомпилировать библиотеку [http://www.fftw.org fftw] и положить файл fftw3.h в <code>/usr/include</code>, а libfftw3.a в каталог <code>/usr/lib</code>. Делается это так:<code> cd fftw; ./configure --prefix=/usr; make; make install</code>
  
 
6. Дальше нужно зайти в каталог work и дать команду:
 
6. Дальше нужно зайти в каталог work и дать команду:
  
<code>
+
<syntaxhighlight lang="bash">
make
+
make
</code>
+
</syntaxhighlight>
  
 
Данная команда скомпилирует программу и создаст в каталоге bin исполняемые файлы. Дальше нужно получить права root. Обычно это делается командой:
 
Данная команда скомпилирует программу и создаст в каталоге bin исполняемые файлы. Дальше нужно получить права root. Обычно это делается командой:
  
<code>
+
<syntaxhighlight lang="bash">
su
+
su
</code>
+
</syntaxhighlight>
  
 
В системе Ubuntu работа с правами root не разрешается, тогда нужно сделать так:
 
В системе Ubuntu работа с правами root не разрешается, тогда нужно сделать так:
  
<code>
+
<syntaxhighlight lang="bash">
sudo bash
+
sudo bash
</code>
+
</syntaxhighlight>
  
 
или запускать саму программу через <code>sudo</code>:
 
или запускать саму программу через <code>sudo</code>:
  
<code>
+
<source lang="bash">
name@host:path/bin$  sudo ./emu_receiver
+
name@host:path/bin$  sudo ./emu_receiver
</code>
+
</source>
  
 
В каталоге bin находятся необходимые программы: usb_receiver, emu_receiver и прочее.
 
В каталоге bin находятся необходимые программы: usb_receiver, emu_receiver и прочее.
Строка 110: Строка 123:
 
* совершенствование самого софта программного приёмника (особенно в части стабильности);
 
* совершенствование самого софта программного приёмника (особенно в части стабильности);
 
* графический интерфейс на qt;
 
* графический интерфейс на qt;
 +
* перенести функцию оценивания отношения сигнал/шум;
 
* плата ввода данных;
 
* плата ввода данных;
 
* загрузочный диск Linux с необходимым софтом;
 
* загрузочный диск Linux с необходимым софтом;
Строка 117: Строка 131:
  
 
== Название ==
 
== Название ==
Кстати. Затеяв данное мероприятие, мы столкнулись с серьёзной проблеммой. Нынешний
+
Кстати. Затеяв данное мероприятие, мы столкнулись с серьёзной проблемой. Нынешний
 
программный приёмник был создан ещё в 2007 году, но до сих пор не получил нормального
 
программный приёмник был создан ещё в 2007 году, но до сих пор не получил нормального
 
названия. У меня, например, все эти годы проект лежал в каталоге "Receiver_pure". Звучного
 
названия. У меня, например, все эти годы проект лежал в каталоге "Receiver_pure". Звучного
Строка 124: Строка 138:
  
 
Так что объявляется конкурс на название программного приёмника ;)
 
Так что объявляется конкурс на название программного приёмника ;)
 +
 +
UPDATE. 10.10.2011 Поздно, название уже определено - SR31.
  
  

Текущая версия на 14:03, 4 июня 2013

Logo SR31 - вот он так примерно и работает...

Содержание

Решено оживить проект программного приёмника. Теперь цель - обучение студентов и выполнение научных исследований.

[править] Состояние приёмника на сегодня

На данный момент программный приёмник работает и выполняет свою основную функцию - решает навигационную задачу. Входной сигнал, принятый радиочастотным блоком, передаётся в ЭВМ по шине USB. Приёмник работает в режиме реального времени. Работа осуществляется по сигналам GPS C/A.

Возможен второй вариант использования приёмника. Выборка сигнала записывается на жёсткий диск, а потом возможна работа программного приёмника по записанной в файл выборке (также в реальном времени).

[править] Где взять исходники

Я подчистил исходники, выкинул всё, что не нужно. Удалил все бинарные файлы. Вычистил всё, что взязано с Plx (RIP PlxPci - не думаю, что кто-то будет жалеть...).

Результат выложил в SVN. Пока проект называется SR31. Посмотреть его содержимое, при наличии пары логин/пароль, можно тут: SR31

Так как же получить исходники? Во-первых, вам нужен Linux. Это первое и главное. Дальше всё просто.

1. Создать рабочий каталог (допустим, SR31):

mkdir SR31

2. Получить текущую ревизию из репозитория:

cd SR31
svn co svn://193.233.71.244:4000/SR31/trunk/ .
20111011 SR31 1.png
20111011 SR31 2.png
20111011 SR31 3.png

Если нужно работать с записанными выборками данных (а не с платой USB), то надо:

3. Создать каталог для данных

mkdir data

4. Скопировать в каталог с данными выборку сигнала. На данный момент в программу задано, что файлы называются data/sigs.bin и data/mags.bin

20111011 SR31 4.png
20111011 SR31 5.png
20111011 SR31 6.png

5. Необходимо поставить библиотеку FFTW. Есть два варианта:

  • Поставить библиотеку fftw3-dev в систему из репозитория (пример для Ubuntu):
sudo apt-get install fftw3-dev
  • Резервный вариант: Скачать, скомпилировать библиотеку fftw и положить файл fftw3.h в /usr/include, а libfftw3.a в каталог /usr/lib. Делается это так: cd fftw; ./configure --prefix=/usr; make; make install

6. Дальше нужно зайти в каталог work и дать команду:

make

Данная команда скомпилирует программу и создаст в каталоге bin исполняемые файлы. Дальше нужно получить права root. Обычно это делается командой:

su

В системе Ubuntu работа с правами root не разрешается, тогда нужно сделать так:

sudo bash

или запускать саму программу через sudo:

name@host:path/bin$ sudo ./emu_receiver

В каталоге bin находятся необходимые программы: usb_receiver, emu_receiver и прочее.

[править] Работа с приёмником

Работа программного приемника

Предполагается два варианта работы - по реальному сигналу с платой USB и по записанному в файл сигналу.

[править] Работа по реальному сигналу

Для работы по реальному сигналу необходима плата ввода данных USB. Сейчас эти платы изготавливаются, ответственный и разработчик - Иван Липа. Платы должны быть готовы примерно через месяц.

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

Для работы с этой платой необходимо:

  1. загрузить модуль ядра usb40;
  2. настроить udev;
  3. подключить плату к USB;
  4. запустить приёмник usb_receiver.

Первые два пункта, естественно, нужно делать только один раз при настройке. Исходники модуля ядра я пока не выложил в SVN, предполагаю включить их в проект.

Проект надо запускать из-под root, иначе работать нормально не будет. Тут дело в том, что приёмник устанавливает себе повышенный приоритет, а это позволяется только программам с правами root. (Интересно, поможет ли тут SUID? Надо попробовать...)

[править] Работа по выборке данных из файла

Выборки данных храняться в каталоге data. Выборка данных состоит из двух файлов. Один файл содержит отсчёты знака входного сигнала (sigs), второй файл - отсчёты амплитуды (mags). Странно, но так уж повелось...

Как можно получить выборку сигнала? Тут есть два варианта.

Первый вариант - записать из эфира. Для этого нужна плата ввода данных и программа download, входящая в проект приёмника. Можно записать выборку такой длины, на которую хватит места на диске. Ранее было сделано несколько выборок данных, их можно использовать в работе.

Второй вариант - сформировать выборку в модели. В состав программного приёмника входит программа для формирования такой выборки - sim.c.

[править] Задачи по развитию проекта

Актуальные задачи:

  • совершенствование самого софта программного приёмника (особенно в части стабильности);
  • графический интерфейс на qt;
  • перенести функцию оценивания отношения сигнал/шум;
  • плата ввода данных;
  • загрузочный диск Linux с необходимым софтом;
  • написание документации.

На первом этапе нужно снять характеристики приёмника - TTFF, чувствительность, точность и составить сравнительную таблицу с другими приёмниками, чтобы ни у кого не было иллюзий.

[править] Название

Кстати. Затеяв данное мероприятие, мы столкнулись с серьёзной проблемой. Нынешний программный приёмник был создан ещё в 2007 году, но до сих пор не получил нормального названия. У меня, например, все эти годы проект лежал в каталоге "Receiver_pure". Звучного названия, вроде "Альпака", до сих пор нет. Пока я назвал проект SR31. SR - "Software receiver". 31 - это просто цифра для солидности.

Так что объявляется конкурс на название программного приёмника ;)

UPDATE. 10.10.2011 Поздно, название уже определено - SR31.

[ Хронологический вид ]Комментарии

Тут небольшая проблема - у студентов нет доступа к WebSVN

Надо им раздать пароли - только индивидуальные! И не на все проекты.

На WebSVN пароль реализован средствами Апача. Он просто не дает запустить сам WebSVN. Пока не вижу пути, как запаролить в WebSVN отдельные проекты.

А можно ли, допустим, запустить два WebSVN с разными паролями? Или при таком подходе вообще два Апача понадобиться?

А вот это не подойдёт? http://stackoverflow.com/questions/939119/how-do-i-restrict-repository-access-via-websvn Там ведь указыватся путь к хранилищу SVN и файл с паролями. Может быть, сделать такие конфиги отдельные для каждого проекта?

Примерно так:

<Location /svn1>

...

AuthUserFile "/svn1/secret"

</Location>

<Location /svn2>

...

AuthUserFile "/svn2/secret"

</Location>

Идея понятна, нужно пробовать и разбираться.

Войдите, чтобы комментировать.

Персональные инструменты
Пространства имён

Варианты
Действия
SRNS Wiki
Рабочие журналы
Приватный файлсервер
QNAP Сервер
Инструменты