RTKlib/постпроцессинг

Важно не нарваться на китайский клон Nikon EG-CP14: у него нет AUDIO_R красного
разъема, т.е. выхода сигнала GPS :wink: А UC-E6 вообще никуда не годится, у него пинов совсем мало,
и пины не те, и не там.

В России продается под названим “NAVIXY A7”.

teqc отказался работать с RINEX OBS больше 2 ГБ
Откуда столько, за месяц что ли?
rtkplot было бы вообще сказкой, но там нетривиальные виджеты.
Насколько я смог представить, показывать бары для сигналов и небесный свод для спутников тоже не понятно с какой стороны зайти.

За неделю, базовая станция на крыше.

Рисовать самому, такое было уже на qt в qlandkarte M, но правда
без цветных баров как у гармина.

Edit
У меня еще где-то завалялся старый добрый sharp zaurus с qpeGPS :sunglasses:
http://qpegps.sourceforge.net/images/qpegps_shots/0.9.2.1/shots_640x480_0.9.2.1.html

gpsstatus.cpp http://sourceforge.net/p/qpegps/code/HEAD/tree/trunk/qpegps/gpsstatus.cpp

Edit2
qpeGPS напомнил мне как все в те годы плевались при мысли об обработке сырых данных:
и говорили ни в коем случае не покупать вот такой приемник:
http://www.pocketgpsworld.com/preteclpreview.php
Royaltek RFG-1000 http://www.mikrocontroller.net/attachment/60971/RFG-1000.pdf
с чипсетом Trimble FirstGPS (?)
http://www.trimble.com/news/release.aspx?id=062200a

Родной протокол/скорость на HTC Artemis все-таки NMEA/57600. Это можно было косвенно
предположить по команде SPL “GPSRouting 57600”, которая перенаправляет GPS на USB
(без wince, только в SPL), но теперь я сумел доказать это напрямую.
Берется пакет с http://sourceforge.net/projects/wing-linux и запускается
при включенном GPS (так как инициализация GPS UART и CPLD GPIO в Linux для Artemis сделана там
абсолютно неправильно).


root@localhost:~# stty -F /dev/ttyS1 clocal raw speed 57600

root@localhost:~# cat /dev/ttyS1
тут NMEA

root@localhost:~# echo -ne '$PSRF100',0,38400,8,1,0*3C\\r\\n > /dev/ttyS1

root@localhost:~# od -x /dev/ttyS1 
0000000     a2a0    5b00    0029    ...

MID148 работает, и переключает (внутри) порт на 38400, поэтому перепрошивка через
SPL “GPSRouting 57600” не получается.
Остается собрать sirfmemdump для arm-linux и сделать для начала дамп прошивки.

Для эхолота Lowrance Mark-4 (Elite тоже должен работать) https://wiki.openstreetmap.org/wiki/Chart_plotters
берется для тестирования файл SDK core-image-sato-sdk-imx28evk.ext3 отсюда
http://downloads.yoctoproject.org/releases/yocto/yocto-1.8/machines/imx28evk
кладется на SD карту, делается


mount -o loop /dev/mmcblk0p1/core-image-sato-sdk-imx28evk.ext3 /mnt

и потом возможен chroot /mnt
В SDK есть gcc и qt4. Правда у эхолота нет тачскрина, поэтому GUI должен
будет работать только с кнопками.
Встроенный GPS приемник STA5058 работает c частотой 5 Hz, и я его даже
убедил командой $PSTMDUMPEPHEMS выдать эфемериды, но в непонятном и
недокументированном формате :slight_smile: Внешний u-blox будет работать лучше и быстрее.
Единственная проблема пока это X11 из этого SDK, он погибает по непонятной причине
со старомодной ошибкой (типа http://www.friendlyarm.net/forum/topic/1541 )


EE) FBDEV(0): FBIOPUT_VSCREENINFO: Invalid argument

Стандартный mxsfb.c вроде как не запрещает самому устанавливать Modelines,
но 480x272 это не VESA мода и возможно я что-то недопонимаю.
Без исходников разобраться непросто, но можно.

Edit
220 Hz это что-то очень много,
а параметр pclk у navico какой-то нестандартный…
fbmode=x:480,y:272,le:2,ri:2,up:2,lo:2,hs:41,vs:10,pclk:110,depth:16,clkp:0


bash-4.3# ./myfbset -x

Mode "480x272"
    # D: 50.000 MHz, H: 74.405 kHz, V: 220.132 Hz
    DotClock 50.001
    HTimings 480 544 608 672
    VTimings 272 304 306 338
    Flags    "-HSync" "-VSync"
EndMode

bash-4.3# ./myfbset -i

mode "480x272-220"
    # D: 50.000 MHz, H: 74.405 kHz, V: 220.132 Hz
    geometry 480 272 480 816 16
    timings 20000 64 64 32 32 64 2
    rgba 5/11,6/5,5/0,0/0
endmode

Frame buffer device information:
    Name        : mxsfb
    Address     : 0x47000000
    Size        : 261120
    Type        : PACKED PIXELS
    Visual      : TRUECOLOR
    XPanStep    : 0
    YPanStep    : 1
    YWrapStep   : 0
    LineLength  : 960
    Accelerator : No 

С HTC Artemis у меня ничего путного не получилось.
После переключения в internal boot mode и в Линуксе - полная тишина.
Перепрошивать через BOOTSEL/D0 на этом телефоне теоретически можно, но технически
слишком сложно.
Перехожу на HTC Athena, там перепрошивка официально поддерживается,
пусть даже и придется поломать голову над проблемой RSA ключей :sunglasses:


root@localhost:~# stty -F /dev/ttyS1 clocal raw speed 57600
38400
root@localhost:~# cat /dev/ttyS1 
$GPGGA,000154.070,,,,,0,00,,,M,0.0,M,,0000*51
^C
root@localhost:~# echo -ne '$PSRF100',0,38400,8,1,0*3C\\r\\n > /dev/ttyS1
root@localhost:~# stty -F /dev/ttyS1 clocal raw speed 38400
57600
root@localhost:~# od -x /dev/ttyS1
0000000     a2a0    5b00    0029
^C
root@localhost:~# echo -ne "\xa0\xa2\x00\x01\x94\x00\x94\xb0\xb3" > /dev/ttyS1 
root@localhost:~# od -x /dev/ttyS1
^C
root@localhost:~# strace -ff ./sirfmemdump.arm -p /dev/ttyS1 -v 6  -i ping
execve("./sirfmemdump.arm", ["./sirfmemdump.arm", "-p", "/dev/ttyS1", "-v", "6", "-i", "ping"], [/* 11 vars */]) = 0
uname({sys="Linux", node="localhost", ...}) = 0
brk(0)                                  = 0xac000
brk(0xacd00)                            = 0xacd00
readlink("/proc/self/exe", "/home/root/sirfmemdump.arm", 4096) = 26
brk(0xcdd00)                            = 0xcdd00
brk(0xce000)                            = 0xce000
open("/dev/ttyS1", O_RDWR|O_NOCTTY)     = 3
ioctl(3, SNDCTL_TMR_TIMEBASE or TCGETS, {B38400 -opost -isig -icanon echo ...}) = 0
ioctl(3, SNDCTL_TMR_CONTINUE or TCSETSF, {B38400 -opost -isig -icanon -echo ...}) = 0
ioctl(3, SNDCTL_TMR_TIMEBASE or TCGETS, {B38400 -opost -isig -icanon -echo ...}) = 0
ioctl(3, SNDCTL_TMR_CONTINUE or TCSETSF, {B38400 -opost -isig -icanon -echo ...}) = 0
ioctl(3, SNDCTL_TMR_TIMEBASE or TCGETS, {B38400 -opost -isig -icanon -echo ...}) = 0
ioctl(3, SNDCTL_TMR_CONTINUE or TCSETSF, {B38400 -opost -isig -icanon -echo ...}) = 0
ioctl(3, TCFLSH, 0x2)                   = 0
write(2, "./sirfmemdump.arm: port set up.."..., 34./sirfmemdump.arm: port set up...
) = 34
open("sirfmemdump.bin", O_RDONLY)       = 4
fstat64(4, {st_mode=S_IFREG|0755, st_size=3057, ...}) = 0
write(2, "./sirfmemdump.arm: passed sanity"..., 43./sirfmemdump.arm: passed sanity checks...
) = 43
read(4, "\0\0\240\343X\20\237\345X \237\345\370\7\260\350\370\7"..., 3057) = 3057
close(4)                                = 0
write(2, "./sirfmemdump.arm: loader read i"..., 37./sirfmemdump.arm: loader read in...
) = 37
write(2, "./sirfmemdump.arm: blocking sign"..., 39./sirfmemdump.arm: blocking signals...
) = 39
rt_sigprocmask(SIG_BLOCK, [HUP INT QUIT KILL STOP TSTP], NULL, 8) = 0
write(2, "./sirfmemdump.arm: Sending loade"..., 37./sirfmemdump.arm: Sending loader...
) = 37
ioctl(3, TCSBRK, 0x1)                   = 0
nanosleep({0, 1000000}, NULL)           = 0
ioctl(3, SNDCTL_TMR_TIMEBASE or TCGETS, {B38400 -opost -isig -icanon -echo ...}) = 0
ioctl(3, SNDCTL_TMR_CONTINUE or TCSETSF, {B38400 -opost -isig -icanon -echo ...}) = 0
timer_delete(0x2)                       = 0
write(2, "gpsflash: transferring binary..."..., 34gpsflash: transferring binary...) = 34
write(3, "S\0\0\0\v\361\0\0\240\343X\20\237\345X \237\345\370\7\260"..., 512) = 512
write(2, "-", 1-)                        = 1
write(2, "\10", )                      = 1
write(3, "\32x0*\6\321\244J\243K\32\200\1\"\243K\32\200/\340\32x"..., 512) = 512
write(2, "-", 1-)                        = 1
write(2, "\10", )                      = 1
write(3, "\234FbF\1\233\363\30\1\231\333y\213T\v\0\0013\1\223\20"..., 512) = 512
write(2, "-", 1-)                        = 1
write(2, "\10", )                      = 1
write(3, "\365\321\367\347\10\0p\274\2\274\10G\300F\324/\0\0\360"..., 512) = 512
write(2, "-", 1-)                        = 1
write(2, "\10", )                      = 1
write(3, "\377\377\252\252\0\0\30G\300F\200#p\265%M\333\5+`\20#$"..., 512) = 512
write(2, "-", 1-)                        = 1
write(2, "\10", )                      = 1
write(3, "\32\0\30\0N2\21\210\t\6\t\16\341v\0022\22\210R0\0\210*"..., 507) = 507
write(2, "-", 1-)                        = 1
write(2, "\10", )                      = 1
timer_delete(0x2)                       = 0
write(2, "...done (0.02 sec).\n", 20...done (0.02 sec).
)   = 20
brk(0xcd000)                            = 0xcd000
write(2, "./sirfmemdump.arm: Unblocking si"..., 41./sirfmemdump.arm: Unblocking signals...
) = 41
rt_sigprocmask(SIG_UNBLOCK, [HUP INT QUIT KILL STOP TSTP], NULL, 8) = 0
write(2, "./sirfmemdump.arm: Finished.\n", 29./sirfmemdump.arm: Finished.
) = 29
timer_delete(0x2)                       = 0
read(3,

Политбюро ЦК ОСМФ заблокировало анонимное редактирование в вики,
поэтому пара комментариев по эхолоту тут.
Самописная специфика похоже ограничивается двумя вкомпилированными модулями


navico_sku driver module loaded / navico_hal driver module loaded
i.MX28 sonar driver, (c) 2012 Navico
navicosonar navicosonar: Clock rate = 240000000
navicosonar: rxfifosize=16384, dmalen=256

их в распакованном виде проще задампить прямо через /dev/mem.
На Mark-4 можно прицепить USB флешку (только непонятно куда на плате)


ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver
fsl-ehci fsl-ehci: Freescale On-Chip EHCI Host Controller
fsl-ehci fsl-ehci: new USB bus registered, assigned bus number 1
fsl-ehci fsl-ehci: irq 93, io base 0x80080000
fsl-ehci fsl-ehci: USB 2.0 started, EHCI 1.00
hub 1-0:1.0: USB hub found
hub 1-0:1.0: 1 port detected
Initializing USB Mass Storage driver...
usbcore: registered new interface driver usb-storage
USB Mass Storage support registered.

Благодаря SLIP драйверу можно использовать slattach из busybox для IP туннеля
через NMEA кабель:


SLIP: version 0.8.4-NET3.019-NEWTTY (dynamic channels, max=256) (6 bit encapsulation enabled).
CSLIP: code copyright 1989 Regents of the University of California.
SLIP linefill/keepalive option.

У большого брата Elite-7 fbmode=x:800,y:480,le:50,ri:50,up:0,lo:15,hs:100,vs:2,pclk:28,depth:16


mode "800x480-92"
        # D: 50.000 MHz, H: 50.403 kHz, V: 92.314 Hz
        geometry 800 480 800 1440 16  
        timings 20000 64 64 32 32 64 2
        accel false
        rgba 5/11,6/5,5/0,0/0
endmode

и данные по процессору и прерываниям:


root@(none):/etc/rc.d# cat /proc/cpuinfo
Processor       : ARM926EJ-S rev 5 (v5l)
BogoMIPS        : 226.09
Features        : swp half thumb fastmult edsp java
CPU implementer : 0x41 
CPU architecture: 5TEJ 
CPU variant     : 0x0  
CPU part        : 0x926
CPU revision    : 5

Hardware        : Navico MX28 board 
Revision        : 28011
Serial          : 0000000000000000

root@(none):/etc/rc.d# cat /proc/interrupts
           CPU0
  6:          0           -  pswitch
  8:      13100           -  can0   
 38:      14122           -  fb_irq 
 39:          0           -  mxs-pxp
 41:      34361           -  GPMI NFC BCH Interrupt
 47:      38593           -  DebugUART
 48:     392470           -  i.MX/mxs Timer Tick
 70:          0           -  auart dma rx
 71:          0           -  auart dma tx
 72:          0           -  auart dma rx
 73:          0           -  auart dma tx
 78:          0           -  auart dma rx
 79:          0           -  auart dma tx
 82:      15431           -  mxs-mmc dma
 84:     113525           -  navicosonar
 88:     165697           -  GPMI NFC DMA Interrupt
 96:      14235           -  mxs-mmc error 
 98:          0           -  navicosonar   
112:      34464           -  auart internal
113:      65507           -  auart internal
116:      10373           -  auart internal
177:         94           -  right-key
178:       2809           -  left-key 
197:          0           -  zout-key 
198:        135           -  enter-key
199:          0           -  zin-key  
212:         68           -  power-key
244:          0           -  up-key   
245:         69           -  down-key 
248:          4           -  menu-key 
251:          0           -  pages-key
Err:          0

Несмотря на клятвенные заверения производителя, что на Lowrance Mark-4 HDI стоит
чернобелый экран (“Эксклюзивная модель монохромного экрана Mark-4 Super Twist Display наделена высоким разрешением”),
LCD у меня там все-таки цветной, который кормится чернобелыми картинками (!).
Framebuffer повернут на 90° против часовой стрелки
(строки в fbcon таким образом идут “снизу вверх”) и за счет увеличенного виртуального
разрешения виден только “правый нижний”, т.е. эффективно визуально “правый верхний”
квадрант.

Извиняюсь, что вопрос немного не в тему, но не знаю где ещё спросить.
Пошерстил инет, но так и не нашел ответа на очень простой вопрос:
А работают ли уже дифф.поправки для ГЛОНАСС, в частности на Урале?
А то вроде как и СДКМ есть, и пара спутников Луч-5А и Луч-5Б запущены, которые должны вещать поправки… А инфы что всё работает нет.

Заказал тут 11.11.2015 для экспериментов High Quality Ublox NEO-M8N Flight Controller GPS with Protective Shell for PIX PX4 Pixhawk за ~18$.
Пока руки не дошли подключить его к компу.
Для начала интерес только в автономному использованию.
А вообще хочу его к эхолоту Humminbird 798 подцепить. Внутренний GPS что-то по точности не устраивает, носимые GPS+ГЛОНАСС заметно лучше. Плюс из-за того что координаты внутренний GPS выдаёт 5 раз в сек, ошибка по скорости у него в 5 раз больше чем у 1Гц внешнего древнего модуля, а постоянно скучущая скорость и особенно направление, когда стоишь на месте бесит. Ну а если руки дойдут, то еще б сваять промежуточный контроллер, который бы по SPI компас опрашивал, и добавлял соответствующие NMEA сообщения.

Ну а в далёкой перспективе было бы сдорово иметь например на авто “базовую станцию”, а в лодке модулёк с ней связывающийся в рилтайме. Хотя для рыбалки наверняка достаточно было бы просто поправок SBASS.

usm78-gis, а какие вопросы по Qt, мож я чем помогу?

Замутить интерфейс rtknavi

Не работает ещё система и х.з когда запустят.

http://geodesist.ru/forum/threads/vopros-po-differencialnym-popravkam.26070/page-3#post-551277
Q:

A:

Самое паршивое что для поддержки новых PRN потребуются новые прошивки для приёмников, а это значит практически всё, что сейчас есть на руках, останется не у дел.

Так вроде как уже давненько определены PRN для Луч-ей в ИКД СДКМ.
Или про что речь?

Как вы думаете, каковы шансы что все иностранные компании, как только был опубликован ИКД СДКМ, кинулись добавлять его поддержку в свои прошивки ? Я ставлю на 0%.

Ну а я то по своей наивности думаю, что иностранные компании получают инфу от первоисточника по договорённости, и не скачивают с инета. :slight_smile:
Поэтому наивно полагаю, что шансы есть.
Хотя как разработчик понимаю, что пока нет сигнала с Луч-ей, то отладить буржуям софт свой крайне сложно.
Впрочем ранее я полагал, что СДКМ - полностью совместим со всякими там WAAS-ами, поэтому типа и отлаживать не надо. Но бегло почитав ИКД СДКМ сильно в этом усомнился. :slight_smile:

Alexander74
В своё время спутники SBAS/EGNOS добавлялись в прошивки по мере ввода в эксплуатацию. Нет ни одной внятной причины для них действовать иначе с нашими спутниками ЛУЧ. Так что от вашей веры или надежды поддержка лучей в сегодняшних чипах не появится )) Она есть в каких-то российских приёмниках, где-то в теме я выкладывал отчет.

(added)
Alexander74 на всех форумах есть общая проблема, у нас не принято представляться. Народ бодается годами, постепенно выясняя весомость слова того или иного участника. Если вы напишите профессиональным разработчиком чего вы являетесь, всем будет легче разговаривать.

Вы посмотрите на их положение на экваторе. Кроме как на индуистов на Урале надеяться
не на кого.

А что у него в нутрях ?

HTC Athena тоже работает по умолчанию на NMEA/57600, и тоже после переключения
в internal boot mode после MID148 или же с помощью соответствующего GPIO
на sirfmemdump не реагирует. Тут что-то не так, видимо какой-то нетривиальный баг
в sirfmemdump. Я еще раз посмотрел на перепрошивку GPS из SPL, о котором писал ранее.
Проблема с SHA1+RSA (по-блочная цифровая подпись) пропала после перепрошивки на SPL-1.20Olipro, но
остается проблема с “security level”. По какой-то причине он равен 0x32 (48)


Level = 32

а должен быть =0.
Эта проблема гораздо проще RSA, и была решена на других телефонах HTC
с помощью т.н. goldcard, т.е. шифрованного блока из 128 байт в начале SD карты
создаваемого из SD CID с помощью DES. Сам ключ для DES находится в SPL,
и для многих моделей присутствуют в знаменитом файле typhoonnbfdecode.pl
Но Athena там нет, и я что-то пока не понял как их найти.

Упс… Мож я как-то не так выразился. Ничего относящегося к GPS/ГЛОНАСС и т.д. я не разрабатывал. :slight_smile:
А так программист и в некоторой степени железячник.

GPS модуль Telit JN3 с ПАТЧ-антенной 15х15мм параллельной плоскости экрана.

А софт эхолота судя по всему поддерживает и SIRF и U-blox модули, ибо на разъём к которому можно подцепить внешний ЖПС модуль эхолот порой посылает строки инициализации типа
$PUBX,41,1,0007,0003,38400,0*20
для U-blox-модуля

и
$PSRF100,1,38400,8,1,0*3D
для SIRF-модуля

Т.е. sirf4 с 5Hz. А какой там процессор ? OMAP ?

Я скачал наугад 3 прошивки (786, 798 и ONIX) с сайта Humminbird.
786 поддерживает только ublox, 798 и ublox и sirf, а на ONIX вообще песня:
полный дистрибутив Linux для TI814x, с xserver-kdrive и qt-4.7 :sunglasses:
http://arago-project.org/wiki/index.php/Main_Page

Edit

У 898/998/1098/1198 тоже Linux на OMAP3530 с 512MB RAM и 24MB VRAM и


root:41YEYwkWSNZXE:0:0:root:/home/root:/bin/sh