01.10.2011 Программный приёмник выложен в SVN
Korogodin (обсуждение | вклад) (→Название) |
Boldenkov (обсуждение | вклад) (→Где взять исходники) |
||
(не показаны 30 промежуточных версий 2 участников) | |||
Строка 1: | Строка 1: | ||
− | <summary [ hidden ]>Решено оживить проект программного приёмника</summary> | + | <summary [ hidden ]>Решено оживить проект программного приёмника |
+ | [[Файл:20111003 SR31 Logo.jpg|thumb|Logo SR31]]</summary> | ||
+ | |||
+ | [[Файл:20111003 SR31 Logo.jpg|thumb|Logo SR31 - вот он так примерно и работает...]] | ||
{{TOCright}} | {{TOCright}} | ||
Строка 17: | Строка 20: | ||
Я подчистил исходники, выкинул всё, что не нужно. Удалил все бинарные файлы. Вычистил всё, что взязано с Plx (RIP PlxPci - не думаю, что кто-то будет жалеть...). | Я подчистил исходники, выкинул всё, что не нужно. Удалил все бинарные файлы. Вычистил всё, что взязано с Plx (RIP PlxPci - не думаю, что кто-то будет жалеть...). | ||
− | Результат выложил в SVN. Пока проект называется SR31. Посмотреть его содержимое можно тут: [http:// | + | Результат выложил в SVN. Пока проект называется SR31. Посмотреть его содержимое, при наличии пары логин/пароль, можно тут: [http://srns.ru:802/websvn/listing.php?repname=SR31&path=%2Ftrunk%2F&#a0b40758157c8f16fa703ca3be466fa8a SR31] |
Так как же получить исходники? Во-первых, вам нужен Linux. Это первое и главное. Дальше всё просто. | Так как же получить исходники? Во-первых, вам нужен Linux. Это первое и главное. Дальше всё просто. | ||
Строка 23: | Строка 26: | ||
1. Создать рабочий каталог (допустим, SR31): | 1. Создать рабочий каталог (допустим, SR31): | ||
− | < | + | <syntaxhighlight lang="bash"> |
mkdir SR31 | mkdir SR31 | ||
− | </ | + | </syntaxhighlight> |
− | 2. | + | 2. Получить текущую ревизию из репозитория: |
− | < | + | <syntaxhighlight lang="bash"> |
cd SR31 | cd SR31 | ||
− | svn co svn://193.233.71.244:4000/SR31/ | + | svn co svn://193.233.71.244:4000/SR31/trunk/ . |
− | </ | + | </syntaxhighlight> |
− | + | [[File:20111011_SR31_1.png|400px|center]] | |
− | + | [[File:20111011_SR31_2.png|400px|center]] | |
+ | [[File:20111011_SR31_3.png|400px|center]] | ||
Если нужно работать с записанными выборками данных (а не с платой USB), то надо: | Если нужно работать с записанными выборками данных (а не с платой USB), то надо: | ||
Строка 41: | Строка 45: | ||
3. Создать каталог для данных | 3. Создать каталог для данных | ||
− | < | + | <syntaxhighlight lang="bash"> |
mkdir data | mkdir data | ||
− | </ | + | </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. Необходимо поставить библиотеку 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 и дать команду: | ||
+ | |||
+ | <syntaxhighlight lang="bash"> | ||
+ | make | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | Данная команда скомпилирует программу и создаст в каталоге bin исполняемые файлы. Дальше нужно получить права root. Обычно это делается командой: | ||
+ | |||
+ | <syntaxhighlight lang="bash"> | ||
+ | su | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | В системе Ubuntu работа с правами root не разрешается, тогда нужно сделать так: | ||
+ | |||
+ | <syntaxhighlight lang="bash"> | ||
+ | sudo bash | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | или запускать саму программу через <code>sudo</code>: | ||
+ | |||
+ | <source lang="bash"> | ||
+ | name@host:path/bin$ sudo ./emu_receiver | ||
+ | </source> | ||
+ | |||
+ | В каталоге bin находятся необходимые программы: usb_receiver, emu_receiver и прочее. | ||
== Работа с приёмником == | == Работа с приёмником == | ||
Строка 75: | Строка 117: | ||
Второй вариант - сформировать выборку в модели. В состав программного приёмника входит программа для формирования такой выборки - sim.c. | Второй вариант - сформировать выборку в модели. В состав программного приёмника входит программа для формирования такой выборки - sim.c. | ||
+ | |||
+ | == Задачи по развитию проекта == | ||
+ | |||
+ | Актуальные задачи: | ||
+ | * совершенствование самого софта программного приёмника (особенно в части стабильности); | ||
+ | * графический интерфейс на qt; | ||
+ | * перенести функцию оценивания отношения сигнал/шум; | ||
+ | * плата ввода данных; | ||
+ | * загрузочный диск Linux с необходимым софтом; | ||
+ | * написание документации. | ||
+ | |||
+ | На первом этапе нужно снять характеристики приёмника - TTFF, чувствительность, точность и составить сравнительную таблицу с другими приёмниками, чтобы ни у кого не было иллюзий. | ||
== Название == | == Название == | ||
− | Кстати. Затеяв данное мероприятие, мы столкнулись с серьёзной | + | Кстати. Затеяв данное мероприятие, мы столкнулись с серьёзной проблемой. Нынешний |
программный приёмник был создан ещё в 2007 году, но до сих пор не получил нормального | программный приёмник был создан ещё в 2007 году, но до сих пор не получил нормального | ||
названия. У меня, например, все эти годы проект лежал в каталоге "Receiver_pure". Звучного | названия. У меня, например, все эти годы проект лежал в каталоге "Receiver_pure". Звучного | ||
Строка 85: | Строка 139: | ||
Так что объявляется конкурс на название программного приёмника ;) | Так что объявляется конкурс на название программного приёмника ;) | ||
− | + | UPDATE. 10.10.2011 Поздно, название уже определено - SR31. | |
+ | |||
− | [[Категория: | + | [[Категория:FirmWare]] |
[[Категория:SR31]] | [[Категория:SR31]] | ||
{{wl-publish: 2011-10-02 01:29:46 +0400 | Boldenkov }} | {{wl-publish: 2011-10-02 01:29:46 +0400 | Boldenkov }} |
Текущая версия на 14:03, 4 июня 2013
|
Решено оживить проект программного приёмника. Теперь цель - обучение студентов и выполнение научных исследований.
[править] Состояние приёмника на сегодня
На данный момент программный приёмник работает и выполняет свою основную функцию - решает навигационную задачу. Входной сигнал, принятый радиочастотным блоком, передаётся в ЭВМ по шине USB. Приёмник работает в режиме реального времени. Работа осуществляется по сигналам GPS C/A.
Возможен второй вариант использования приёмника. Выборка сигнала записывается на жёсткий диск, а потом возможна работа программного приёмника по записанной в файл выборке (также в реальном времени).
[править] Где взять исходники
Я подчистил исходники, выкинул всё, что не нужно. Удалил все бинарные файлы. Вычистил всё, что взязано с Plx (RIP PlxPci - не думаю, что кто-то будет жалеть...).
Результат выложил в SVN. Пока проект называется SR31. Посмотреть его содержимое, при наличии пары логин/пароль, можно тут: SR31
Так как же получить исходники? Во-первых, вам нужен Linux. Это первое и главное. Дальше всё просто.
1. Создать рабочий каталог (допустим, SR31):
2. Получить текущую ревизию из репозитория:
svn co svn://193.233.71.244:4000/SR31/trunk/ .
Если нужно работать с записанными выборками данных (а не с платой USB), то надо:
3. Создать каталог для данных
4. Скопировать в каталог с данными выборку сигнала. На данный момент в программу задано, что файлы называются data/sigs.bin и data/mags.bin
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
- Резервный вариант: Скачать, скомпилировать библиотеку fftw и положить файл fftw3.h в
6. Дальше нужно зайти в каталог work и дать команду:
Данная команда скомпилирует программу и создаст в каталоге bin исполняемые файлы. Дальше нужно получить права root. Обычно это делается командой:
В системе Ubuntu работа с правами root не разрешается, тогда нужно сделать так:
или запускать саму программу через sudo
:
В каталоге bin находятся необходимые программы: usb_receiver, emu_receiver и прочее.
[править] Работа с приёмником
Предполагается два варианта работы - по реальному сигналу с платой USB и по записанному в файл сигналу.
[править] Работа по реальному сигналу
Для работы по реальному сигналу необходима плата ввода данных USB. Сейчас эти платы изготавливаются, ответственный и разработчик - Иван Липа. Платы должны быть готовы примерно через месяц.
Плата ввода данных по-крупному состоит из двух частей (кстати, она даже реально состоит из двух частей ;). Первая часть - радиочастотный блок приёмника со всеми его функциями - усиление сигнала, перенос по частоте, фильтрация, АЦП... Вторая часть - интерфейс ввода данных, передающий оцифрованный поток в компьютер.
Для работы с этой платой необходимо:
- загрузить модуль ядра usb40;
- настроить udev;
- подключить плату к USB;
- запустить приёмник 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>
Идея понятна, нужно пробовать и разбираться.
Войдите, чтобы комментировать.