Автоматическая прошивка Zynq и запуск приемника — различия между версиями
Korogodin (обсуждение | вклад) (→Автоматическая прошивка ПЛИС) |
Korogodin (обсуждение | вклад) (→Автоматическая прошивка ПЛИС) |
||
Строка 44: | Строка 44: | ||
Если потребуется обновить ссылки на burnzynq или вообще отказаться от его использования, то выполняем: | Если потребуется обновить ссылки на burnzynq или вообще отказаться от его использования, то выполняем: | ||
<source lang="bash">update-rc.d burnzynq remove</source> | <source lang="bash">update-rc.d burnzynq remove</source> | ||
+ | |||
+ | Выключаем/включаем питание приемника. После загрузки ПЛИС готова к работе. | ||
+ | |||
+ | == receiver аки демон == | ||
+ | |||
+ | Аналогично пишем скрипт для запуска receiver: | ||
+ | <source lang="bash"> | ||
+ | #!/bin/bash | ||
+ | ### BEGIN INIT INFO | ||
+ | # Provides: receiver | ||
+ | # Required-Start: burnedzynq $local_fs $remote_fs | ||
+ | # Required-Stop: $local_fs $remote_fs | ||
+ | # Should-Start: | ||
+ | # Should-Stop: | ||
+ | # Default-Start: 2 3 4 5 | ||
+ | # Default-Stop: 0 1 6 | ||
+ | # Short-Description: GNSS receiver firmware | ||
+ | ### END INIT INFO | ||
+ | |||
+ | /tmp/receiver | ||
+ | </source> | ||
+ | |||
+ | Делаем исполняемым: | ||
+ | <source lang="bash">chmod +x receiver</source> | ||
+ | |||
+ | Создаем ссылки: | ||
+ | <source lang="bash"> | ||
+ | update-rc.d receiver defaults | ||
+ | </source> | ||
+ | |||
+ | Выключаем/включаем питание приемника. Убеждаемся, что приемник отсылает пакеты. | ||
[[Category:HOWTO]] | [[Category:HOWTO]] |
Версия 14:14, 16 января 2015
Накопились претензии к степени автоматизации работы с ПНП.
Во-первых, ПЛИС'овская часть Zynq'а шьется через процессор командой типа:
Что приходится исполнять после каждой перезагрузки ящика.
Во-вторых, хотелось бы, чтобы ПНП сразу мог начать работать после подачи питания.
В-третьих, на приемной стороне приходится вручную запускать srns_parse_all, tail и матлабовские скрипты.
Автоматическая прошивка ПЛИС
На ум приходит два способа автоматически прошить ПЛИС при запуске ОС: через cron и через init.d. Т.к. далее воспользуемся init для старта службы receiver, то для единообразия и ПЛИС будем шить так.
В Debian нашего модуля по умолчанию используется второй run-level. Напишем скрипт, который будет выполняться при запуске. Для этого в /etc/init.d создаем файл burnzynq:
### 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
Файл делаем исполняемым:
Далее добавляем ссылку на него в /etc/rc2.d специальной командой:
Здесь defaults - воспользоваться Default-Start/Default-Stop.
В результате в /etc/rc2.d получаем файл S01burnzynq -> ../init.d/burnzynq.
Если потребуется обновить ссылки на burnzynq или вообще отказаться от его использования, то выполняем:
Выключаем/включаем питание приемника. После загрузки ПЛИС готова к работе.
receiver аки демон
Аналогично пишем скрипт для запуска receiver:
### BEGIN INIT INFO
# Provides: receiver
# Required-Start: burnedzynq $local_fs $remote_fs
# Required-Stop: $local_fs $remote_fs
# Should-Start:
# Should-Stop:
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: GNSS receiver firmware
### END INIT INFO
/tmp/receiver
Делаем исполняемым:
Создаем ссылки:
Выключаем/включаем питание приемника. Убеждаемся, что приемник отсылает пакеты.