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

У меня на одном из смартфонов не работала программа сбора бинарных данных, ни напрямую, ни через GPS Intermediate Driver, не видела приёмник, словно нет его. Но заработала через GPS Gate !
Может в некоторых устройствах Win Mobile намудрили GPS с RTS/CTS (например приёмник включается по этому сигналу).

На HTC Athena исключено, так как для GPS используются только RX и TX,
а для BT и RTS/CTS
http://web.archive.org/web/20101218004701/http://htc-linux.org/wiki/index.php?title=AthenaGPIO
Я поменял COM8 на COM5 в htcgpsupdate.exe и она перестала работать.
Цифровая подпись. Грохнул и ее, но все равно “error (3)”:
http://forum.xda-developers.com/showthread.php?t=336328&page=41

Edit
gps_firmware_check_tool.exe (который отлично сработал на Mio168)
прошивает на скорости 38400 $PSRF100,0,38400,8,1,0*3C
но в нем забит порт COM2.
К тому же встает вопрос о совместимости dlgsp2(SST_AMD_Fujitsu_115200).bin с sirf3 и sirf4
(аналогичный код вкомпилирован в sirfflashcl.exe, и не поставляется отдельно,
поэтому его еще надо идентифицировать и экстрагировать: detect.bin, generic.bin, generica.bin и macronix.bin).

Корень зла заключается в программе QuickGPS, и ее взаимодействием с GPSID,
которое не дает использовать “железный” порт.
Как ее убрать простыми способами (не полной перепрошивкой
без QuickGPS.cab) я пока не понял.

Разборка HTC Artemis на выходных показала несколько интересных результатов:
плата работает в режиме трекера и без блока LCD. При желании можно отпаять
антенный разъем MS-147 и припаять что-то другое, размеры там не SMD.
Прошивки бывают 2 версий: 3.2.4 как в вики и 3.2.1 как здесь ранее в теме.
Обе (де-факто) залочены на 57600 (при этом виртуальный порт GPSID настаивает на 9600).
Это вообще совместимо с перепрошивкой,
там вроде как на первом этапе необходимо 38400 ?
Где вообще можно в прошивке поправить начальную скорость (и протокол) ?
Я уже видел sirf3 прошивки с 9600, 38400 и 57600.
Также меня смущает отсутствие исходников для sirfmemdump.bin
(не совпадает с generic.bin), но при размере программы в 3K это не очень
критично.

Нашел их, но после замены arm-rtems на современный toolchain имею такую ошибку


$ PATH=/opt/gcc-arm-none-eabi-5_2-2015q4/bin:$PATH make
cd arm && make
-------- begin  --------
arm-none-eabi-gcc (GNU Tools for ARM Embedded Processors) 5.2.1 20151202 (release) [ARM/embedded-5-branch revision 231848]
Copyright (C) 2015 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.


Compiling C: src/sirfmemdump.c
arm-none-eabi-gcc -c -mthumb -mcpu=arm7tdmi -mthumb-interwork -I. -gdwarf-2   -Os -ffunction-sections -fdata-sections -W -Wall -Wcast-align -Wimplicit -Wpointer-arith -Wswitch -Wredundant-decls -Wreturn-type -Wshadow -Wunused -Wa,-adhlns=src/sirfmemdump.lst -I./include -Wcast-qual -MD -MP -MF .dep/sirfmemdump.o.d -Wnested-externs -std=gnu99 -Wmissing-prototypes -Wstrict-prototypes -Wmissing-declarations src/sirfmemdump.c -o src/sirfmemdump.o
/tmp/cc4BLFEB.s: Assembler messages:
/tmp/cc4BLFEB.s:769: Error: lo register required -- `ldmia ip!,{R0-R3}'
Makefile:327: recipe for target 'src/sirfmemdump.o' failed

Edit
Хмм, поменялись какие-то правила для inline asm :wink:


                  asm volatile(
                        "LDMIA %[src]!, {R0-R3} \n\t"
                        "MOV LR, PC \n\t"
                        "BX %[f_p] \n\t"
                        "STMIA %[dst]!, {R0-R3} \n\t"
                        :
                        : [f_p]"r"(f_p), [src]"r"(&src.u8), [dst]"r"(&dst[0])
                        : "memory", "r0", "r1", "r2", "r3", "lr"
                        );

.s


        .syntax divided
@ 183 "src/sirfmemdump.c" 1
        LDMIA ip!, {R0-R3}
        MOV LR, PC
        BX r5
        STMIA r6!, {R0-R3}

Edit2
Rn must be in the range r0-r7 http://infocenter.arm.com/help/topic/com.arm.doc.dui0068b/BABEFCIB.html
ip=r12 http://infocenter.arm.com/help/topic/com.arm.doc.dui0040d/ch06s02s01.html

Edit3
“r” нельзя применять в thumb моде http://www.ethernut.de/en/documents/arm-inline-asm.html
“l”

С небольшими модификациями удалось собрать версии sirfdump и sirfmemdump для
wince с помощью компилятора mingw32ce http://cegcc.sourceforge.net
Наблюдаются (непонятные мне) некоторые глюки с SHMENU, но все остальное работает отлично.
rtklib для wince я уже как-то собирал, т.е. можно и мини-логгер sirf&ublox сделать,
в том числе для совсем старомодных девайсов типа Mio168 или Acer n35.
rtknavi для wince я бы предпочел написать на qt, а не native.

Каких только интересных китайских устройств не бывает.
В трекере Coban TK-103B
(Coban CB900, CPU MTK MT6260DA https://github.com/sutajiokousagi/fernvale-nuttx/tree/master/nuttx/arch/arm/src/mt6260
, mainboard Coban 103-141014)
используется не только несертифицированый (и несертифицируемый в ITU Region 1)
ПДУ на частоте 315 MHz (хотя все сертификаты якобы имеются),
но и GPS приемник Coban NS-1315 (по пинам аналог Royaltek REB-1315 с sirf3)
с китайским клоном sirf3 HX8222/HX8211


$PHXMTXT,Version: HXGSW2_008BNX_A1_S5_2.6.2R.012213_N4800_HX8211O*7C
$PHXMTXT,TOW:  409870*0D
$PHXMTXT,WK:   1877*76
$PHXMTXT,POS: 6378137 0 0*30
$PHXMTXT,CLK:  96308*33
$PHXMTXT,CHNL: 12*69

Нечто похожее используется в dashcam 0805 mini


$PHXMTXT,g_ChipVersion = 3005*15
$PHXMTXT,Version: HXGSW2_ROM_2.8.2R.021914_N9600_HX8211C*5B
$PHXMTXT,TOW: 175433*08
$PHXMTXT,WK: 1864*74
$PHXMTXT,POS: 6378137 0 0*30
$PHXMTXT,CLK: 96250*3F
$PHXMTXT,CHNL: 12*69

Насколько это хороший клон, и есть ли там raw data et al. пока непонятно,
так как внешнее питание управляется чипом MTK и он включает GPS только периодически.


Parameter Description Performance
 Chip HX8222 / HX8211 HX GPS chipset
The baud rate is programmed before the factory fixed baud rate 4800/9600 
 Conventional frequency GPS L1 (1575.42MHz) C / A Code signal
Software adjustable output frequency 1Hz (default) / 10Hz
  Channel 24
Dynamic conditions highly <18km
  Precision level <10m
Velocity <515m / s
  Height <10m
Acceleration ≤3g
  Speed 0.2m / s
Full speed TTL serial interface port (2.8V)
  Time 0.1s
Other 2UARTS (VK1613HX)
TTFF Hot start 1s
Protocol NMEA0183 / SiRF Binary
  Warm start 36s
Supply voltage 2.75V-3.6V
  Cold start 6s
WGS-84 coordinate system default

Командой (документированной, если очень внимательно гуглить) $PHXM100,0,115200,8,1,0*1E
приемник переводится в некий пакетный режим HX_Binary, но с sirf binary он не имеет ничего общего.
Единственное, что можно еще попробовать, это в режиме BOOTSEL=1 с
помощью sirfmemdump сделать дамп адресного пространства (например как у sirf
ROM@0x20000000 и FLASH@0x40000000). CPU core у китайцев как и у sirf ARM7TDMI
http://www.design-reuse.com/news/16524/xi-huaxun-licenses-arm7tdmi-processor.html
Пример успешного дампа первых 4K+1b ROM на sirf3 свежескомпилированным sirfmemdump:


$ ./sirfmemdump -p /dev/ttyUSB39 -i -v 6 dump 0x20000000 0x20001000 > 0x20000000_0x20001000
./sirfmemdump: port set up...
./sirfmemdump: passed sanity checks...
./sirfmemdump: loader read in...
./sirfmemdump: blocking signals...
./sirfmemdump: Sending loader...
gpsflash: transferring binary......done (0.00 sec).
./sirfmemdump: Unblocking signals...
./sirfmemdump: Finished.
./sirfmemdump: I see 0: 2b
./sirfmemdump: I see 1: 2b
./sirfmemdump: I see 2: 2b
./sirfmemdump: Loader successfully launched
./sirfmemdump: MEM_READ...
./sirfmemdump: 0x20000000...
./sirfmemdump: 0x200001f4...
./sirfmemdump: 0x200003e8...
./sirfmemdump: 0x200005dc...
./sirfmemdump: 0x200007d0...
./sirfmemdump: 0x200009c4...
./sirfmemdump: 0x20000bb8...
./sirfmemdump: 0x20000dac...
./sirfmemdump: 0x20000fa0...
./sirfmemdump: DONE

Edit
Еще у трекера Coban есть разъем, к которому можно подключиться кабелем
Nikon EG-CP16 : вроде как на AUDIO_R(RED) будет GPS_TX,
AUDIO_L(WHITE) USB_D-, и VIDEO(YELLOW) USB_D+.
Тут возможно есть шанс сделать дамп прошивки MTK MT6260DA с ее
дальнейшей модификацией, но к GPS это отношения не имеет, его в худшем случае
надо заменять на REB-1315. Тут видимо проще взять более адекватный трекер,
например уже есть китайские девайсы с ublox-m8: http://www.queclink.com/GV65 ,
правда с неизвестным микроконтроллером. Хорошо если STM32.

В вики добавили несколько другие калибровочные данные для глонасса в ublox-m8.
Не исключено, что они хранятся в OTP (самое разумное место для них, но места там
мало и это может объяснить почему используются только “целые” метры).
Так что любители глонасс, good luck разбираться с этой нанотехнологией.
Впрочем, автор rtklib писал, что собирается для вас написать калибровочную программу
для версии 2.4.3.
Я написал мини-логгер для wince с приемниками u-blox. В помещении работает,
надо проверить его на свежем воздухе.

На устройстве с ublox7@9600 все заработало, а вот с ublox5 какие-то странности.
При (родной стандартной) скорости 4800 он работает, но потом не справляется
с объемом данных TRK-TRKD5, а если скорость повысить, то TRK-TRKD5 пропадает…
Вообще работа с baud rates в wince это просто PITA, особенно с GPSMID
от производителя.

Edit
rtklib на эхолоте Lowrance Elite http://www.lowrance.com/en-US/Products/Elite , вот это будет
действительно достойный хак. Но для этого опять же нужна qt версия rtknavi,
с железом и линуксом я наконец разобрался :sunglasses:

А на wince он пишет логи на флешку?
И смотрю про qt тут уже мантры пишешь :slight_smile: Попробую на праздниках воссоздать интерфейс. А вот с подключением к rtklib возможно возникнут трудности.

Да. Легкая модификация “NMEA logging” вот отсюда http://mycartrek600.blogspot.com .
Собирается простой командой
arm-mingw32ce-gcc logit.c -o logit.exe
без всяких .vcproj и прочей жути :wink:
Я добавил только “b” к fopen (иначе получались очень неприятные вещи)


    if ((LOG_stream=fopen(LOG_fname, "ab+")) == NULL)

и инициализацию ublox сырых данных в NMEA_init (также можно будет проделать и с sirf)



    SetupComm(NMEA_handle, 0x1000, 0x1000); /* in , out */

#if 0
  unsigned char w2[]={0xB5,0x62,0x06,0x00,0x14,0x00,0x01,0x00,0x00,0x00,0xD0,0x08,0x00,0x00,0x00,0xE1,0x00,0x00,0x07,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0xDE,0xC9};

  sendUBX(w2,sizeof(w2));

  GetCommState (NMEA_handle, &portState);
   
  // Change the DCB structure settings.
  portState.BaudRate = 57600;              // Current baud
  portState.fBinary = TRUE;               // Binary mode; no EOF check

  SetCommState (NMEA_handle, &portState);
    PurgeComm(NMEA_handle, PURGE_RXCLEAR); /* Baud rate wouldn't change without this ! (?) */
#endif

  // TRK-TRKD5
  unsigned char w3[]={0xb5,0x62,0x06,0x01,0x08,0x00,0x03,0x0a,0x00,0x01,0x00,0x00,0x00,0x00,0x1d,0x06};
  sendUBX(w3,sizeof(w3));

  Sleep(2000); // ms NAV-TIMEGPS
  unsigned char w1[]={0xb5,0x62,0x06,0x01,0x08,0x00,0x01,0x20,0x00,0x01,0x00,0x00,0x00,0x00,0x31,0x90};
  sendUBX(w1,sizeof(w1));

  Sleep(2000); // ms TRK-SFRBX
  unsigned char w2[]={0xb5,0x62,0x06,0x01,0x08,0x00,0x03,0x0f,0x00,0x01,0x00,0x00,0x00,0x00,0x22,0x29};
  sendUBX(w2,sizeof(w2));

  Sleep(2000); // ms TRK-SFRB
  unsigned char w4[]={0xb5,0x62,0x06,0x01,0x08,0x00,0x03,0x02,0x00,0x01,0x00,0x00,0x00,0x00,0x15,0xce};
  sendUBX(w4,sizeof(w4));

sendUBX это просто WriteFile (NMEA_handle,…), подойдет и для sirf.

+5. Смотрю я на цифирки ‘Viewed’ и думаю: хоть бы кто-нибудь помог :sunglasses:

Думаю это будет самая простая часть.
rtkplot было бы вообще сказкой, но там нетривиальные виджеты.
Я тут натолкнулся с ним на интересную вещ:
teqc отказался работать с RINEX OBS больше 2 ГБ :slight_smile:

Важно не нарваться на китайский клон 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.