Автоматическая прошивка Zynq и запуск приемника — различия между версиями

Материал из SRNS
Перейти к: навигация, поиск
(В случае Импалы)
 
(не показаны 4 промежуточные версии 1 участника)
Строка 50: Строка 50:
  
 
Аналогично пишем скрипт для запуска receiver (слизано со скрипта демона rsync):
 
Аналогично пишем скрипт для запуска receiver (слизано со скрипта демона rsync):
<source lang="bash">
+
 
 +
{{Hider
 +
|title = Содержимое /etc/init.d/receiver
 +
|content = <source lang="bash">
 
#!/bin/bash
 
#!/bin/bash
 
### BEGIN INIT INFO
 
### BEGIN INIT INFO
Строка 202: Строка 205:
 
exit 0
 
exit 0
 
</source>
 
</source>
 +
|frame-style = border:1px solid Plum
 +
|title-style = color:black;background-color:lavender;font-weight:bold
 +
|content-style = color:black;background-color:ghostwhite;text-align:left
 +
|footer =
 +
|footer-style = background-color:lightgray;text-align:right
 +
|hidden =
 +
}}
  
 
Делаем исполняемым:
 
Делаем исполняемым:
Строка 227: Строка 237:
 
== В случае Импалы ==
 
== В случае Импалы ==
  
 +
В Импале есть ряд отличий:
 +
* нет некоторых скриптов SystemV;
 +
* вместо bash используется sh;
 +
* после перезагрузки стирается /tmp,
 +
поэтому скрипт иной:
 
{{Hider
 
{{Hider
 
  |title = Содержимое /etc/init.d/receiver
 
  |title = Содержимое /etc/init.d/receiver
Строка 233: Строка 248:
 
#
 
#
 
#
 
#
+
 
 
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
 
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
 
DAEMON=/tmp/receiver
 
DAEMON=/tmp/receiver
 +
DAEMON_TAG=/home/root/receiver
 
NAME=receiver
 
NAME=receiver
 
DESC="GNSS Receiver"
 
DESC="GNSS Receiver"
 
PIDFILE=/var/run/receiver.pid
 
PIDFILE=/var/run/receiver.pid
 
+
 
 
REC_EXTRA_ARGS=
 
REC_EXTRA_ARGS=
 
NO_START=0
 
NO_START=0
 +
 +
test -x "$DAEMON_TAG" || exit 0
 +
 +
test -x "$DAEMON" || cp "$DAEMON_TAG" "$DAEMON"
  
 
test ! -r /etc/default/receiver || . /etc/default/receiver
 
test ! -r /etc/default/receiver || . /etc/default/receiver
Строка 256: Строка 276:
 
   esac
 
   esac
 
done
 
done
 
  
 
case "$1" in
 
case "$1" in
 
   start)
 
   start)
 
         echo -n "Starting $DESC: "
 
         echo -n "Starting $DESC: "
         start-stop-daemon -S -p $PIDFILE \
+
         start-stop-daemon --start --quiet --background \
          -x "$DAEMON" -- $KEY_ARGS \
+
        --pidfile $PIDFILE --make-pidfile \
            $REC_EXTRA_ARGS
+
        --exec "$DAEMON" -- $KEY_ARGS \
 +
        --no-detach --daemon $REC_EXTRA_ARGS
 
         echo "$NAME."
 
         echo "$NAME."
 
         ;;
 
         ;;
Строка 291: Строка 311:
 
  |frame-style = border:1px solid Plum
 
  |frame-style = border:1px solid Plum
 
  |title-style = color:black;background-color:lavender;font-weight:bold
 
  |title-style = color:black;background-color:lavender;font-weight:bold
  |content-style = color:black;background-color:ghostwhite;text-align:center
+
  |content-style = color:black;background-color:ghostwhite;text-align:left
 
  |footer =  
 
  |footer =  
 
  |footer-style = background-color:lightgray;text-align:right
 
  |footer-style = background-color:lightgray;text-align:right
 
  |hidden = 1
 
  |hidden = 1
 
}}
 
}}
 +
 +
Перед исполнением скрипт проверяет, есть ли /tmp/receiver. Если нет - копирует туда файл /home/root/receiver.
  
 
[[Category:HOWTO]]
 
[[Category:HOWTO]]
 
[[Category:Oryx]]
 
[[Category:Oryx]]
 
[[Category:Impala]]
 
[[Category:Impala]]

Текущая версия на 11:57, 25 ноября 2020

Накопились претензии к степени автоматизации работы с ПНП.

Во-первых, ПЛИС'овская часть Zynq'а шьется через процессор командой типа:

cat /tmp/somz.bit > /dev/xdevcfg

Что приходится исполнять после каждой перезагрузки ящика.

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

В-третьих, на приемной стороне приходится вручную запускать srns_parse_all, tail и матлабовские скрипты.

[править] Автоматическая прошивка ПЛИС

На ум приходит два способа автоматически прошить ПЛИС при запуске ОС: через cron и через init.d. Т.к. далее воспользуемся init для старта службы receiver, то для единообразия и ПЛИС будем шить так.

В Debian нашего модуля по умолчанию используется второй run-level. Напишем скрипт, который будет выполняться при запуске. Для этого в /etc/init.d создаем файл burnzynq:

#!/bin/bash
### BEGIN INIT INFO
# Provides:          burnedzynq
# Required-Start:    $local_fs $remote_fs
# Required-Stop:     $local_fs $remote_fs
# Should-Start:      
# Should-Stop:      
# Default-Start:     2
# Default-Stop:      
# Short-Description: Load .bit to Zynq
### END INIT INFO
echo Zynq burning...
cat /tmp/somz.bit > /dev/xdevcfg

Файл делаем исполняемым:

chmod +x burnzynq

Далее добавляем ссылку на него в /etc/rc2.d специальной командой:

update-rc.d burnzynq defaults

Здесь defaults - воспользоваться Default-Start/Default-Stop.

В результате в /etc/rc2.d получаем файл S01burnzynq -> ../init.d/burnzynq.

Если потребуется обновить ссылки на burnzynq или вообще отказаться от его использования, то выполняем:

update-rc.d burnzynq remove

Выключаем/включаем питание приемника. После загрузки ПЛИС готова к работе.

[править] receiver аки демон

Аналогично пишем скрипт для запуска receiver (слизано со скрипта демона rsync):


Делаем исполняемым:

chmod +x receiver

Создаем конфигурационный файл (пока не используется):

echo '#GNSS Receiver configuration file' > /etc/receiver.conf

Создаем ссылки:

update-rc.d receiver defaults

Выключаем/включаем питание приемника. Убеждаемся, что приемник отсылает пакеты.

Теперь с приемником можно работать как со службой:

Usage: /etc/init.d/receiver {start|stop|reload|force-reload|restart|status}

Например:

root@plda:~# /etc/init.d/receiver status
[ ok ] receiver is running.

[править] В случае Импалы

В Импале есть ряд отличий:

  • нет некоторых скриптов SystemV;
  • вместо bash используется sh;
  • после перезагрузки стирается /tmp,

поэтому скрипт иной:


Перед исполнением скрипт проверяет, есть ли /tmp/receiver. Если нет - копирует туда файл /home/root/receiver.

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

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