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

Снизу вставлен стилус

OK. То есть устройств с внешней антенной не так и много.
Покет лох T830 это совсем экзотика.

Еще есть такой класс дешевых современных устройств, как GPS трекеры с чипом sirf3 и внешней антенной
( например TK103* ) http://www.aliexpress.com/store/product/GPS-tracker-TK103B/910608_32342126415.html

Исправил ошибки на wiki странице про C027-U20 и C027-G35
https://wiki.openstreetmap.org/wiki/C027-U20
Вот где GPS/GSM/UMTS трекер и логгер и базовая станция и CAN и dead reckoning.
При этом без программирования на ассемблере и использования JTAG.
Думаю, в связке с raspberry pi zero и rtklib потянет.

Где-то можно почитать на русском о чём вообще тема? В соседней теме отсюда бросили что по обычному GPS можно чуть ли не с сантиметровой точностью определять и на этом всё. Ни подробностей, ни реализации…

у меня есть холукс-1000, прослуживший верой и правдой на дело осм несколько лет))
такой не пойдет? mtk.
еще есть xperia x2, на винмо 6.5, но она немного вещь-в-себе.

пс: а еще есть xperia ray 2009 года выпуска, на квалкоме, он умеет принимать глонасс. он на ведре.
(мой основной тел, смайлик стыдно))

ничего из этого выжать нельзя?

Не подойдёт. Вики с совместимыми чипами по ссылке выше http://forum.openstreetmap.org/viewtopic.php?pid=566749#p566749

Тема вроде бы на 99% русскоезычными символами написана.
При определенных условиях можно используя определенные бытовые приемники
определить координаты антенны приемника с сантиметровой точностью
в геоцентрических координатах. При каких условиях, какими приемниками,
обработкой какими программными пакетами и в каких координатных системах и
обсуждалось здесь на 73 страницах.

Пятерка современных топ-производителей GPS приемников выглядит так: qualcomm, broadcom, u-blox, mediatek и stmicro.
Первые два можно сразу забыть. u-blox описан в теме подробнее чем где-либо то ни было.
Из stmicro можно при определенных усилиях выжать эфемериды и псевдодальности
(но не фазовые измерения afaik). Про mediatek даже и этого сказать нельзя,
хотя если сильно поднапрячься, думаю эфемериды можно выковырять.
Так что остаются на выбор: бывший гигант sirf (PITA если это не sirf4, и не совсем старые sirf2 и sirf1)
и u-blox.

Я просил описание принципа, а не 90% воды размазанной по более чем полусотне страниц.

Сам нагуглил: http://habrahabr.ru/post/244475/
Может кому ещё поможет.

Оно так, но это как работа пилота со стороны - тумблер на взлёт, штурвал на себя и всё летишь на автопилоте. А то что там потолок весь в кнопках, так это так для красоты.

По большей части да - “потолок” используется в основном в нештатных ситуациях.

Наконец удалось успешно перепрошить sirf3 (arduino GPS shield с модулем globalsat EB-365) на новую
прошивку с включенной фазой. Теперь можно будет сравнить пары sirf2, sirf3, sirf4 и neo-m8t
подключенные через сплиттер.
А вот HTC Artemis хотя и принимает команду MID148, дальше ни на что не реагирует,
и это плохой знак…
Остается последняя надежда на HTC Athena.

COM8@115200 вкомпилирован в текст программы, и его там легко пропатчить, но есть и другие проблемы:
на WM5/6 надо предварительно 1) отключать GPS Intermediate Driver https://msdn.microsoft.com/de-de/library/bb202088.aspx / https://msdn.microsoft.com/de-de/library/bb202097.aspx
и 2) знать на каком COM находится “настоящий” порт.
Тут мелкомягкие так намудрили, что сами лучшего совета чем


Well, if your device has a built-in GPS, then it is on a fixed port, 
and you need to figure out what that port number is.  
There are any number of ways to do this; I usually just do 
a web search on live.com for the model name, "port", and "GPS".

предложить не могут: http://blogs.msdn.com/b/windowsmobile/archive/2006/06/07/620387.aspx
На HTC Artemis это вроде как COM4, но пока у меня ничего не работает.
На HTC Athena порт COM5, там я более оптимистичен.

HTC был настоящим производителем и iPAQ и Loox и еще много чего.

У меня на одном из смартфонов не работала программа сбора бинарных данных, ни напрямую, ни через 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.