OpenStreetMap Forum

The Free Wiki World Map

You are not logged in.

Announcement

A fix has been applied to the login system for the forums - if you have trouble logging in please contact support@openstreetmap.org with both your forum username and your OpenStreetMap username so we can make sure your accounts are properly linked.

#2076 2017-01-25 22:50:10

usm78-gis
Member
Registered: 2008-04-21
Posts: 2,383

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

Navilock собирается "в ближайшее время" выпустить приемники серии NL-82022MP
http://www.navilock.com/produkte/N_6275 … anguage=en
на базе NEO-M8U (урезанный DeadReckoning без внешних данных wheeltick, но с акселерометром+гироскопом Bosch BMI160).
Доступа к сырым GPS данным и прошивке там конечно нет cool

Offline

#2077 2017-02-26 17:28:22

andru8
Member
Registered: 2013-12-02
Posts: 21

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

Вот нашел в китайских просторах доки по ubx-m8030.https://yadi.sk/d/zK7QM0oW3EeNhq

Last edited by andru8 (2017-02-26 17:29:03)

Offline

#2078 2017-03-02 06:06:44

freeExec
Moderator
From: Ульяновск
Registered: 2012-07-31
Posts: 6,414

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

Неплохой вебинар про метод РРР.

Offline

#2079 2017-03-12 22:26:32

usm78-gis
Member
Registered: 2008-04-21
Posts: 2,383

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

parukhin wrote:

в drivers ещё есть gps_bcm_common.c  - MODULE_DESCRIPTION("GPS Boardcom gps common driver");

Обнаружились исходники для Huawei Mate 8
https://github.com/RaindropOS/android_k … uawei_next
а в них drivers/huawei_platform/connectivity/bcm/gps
https://github.com/RaindropOS/android_k … ty/bcm/gps
Это уже теплее.

Offline

#2080 2017-03-15 22:17:35

usm78-gis
Member
Registered: 2008-04-21
Posts: 2,383

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

usm78-gis wrote:

Обнаружились исходники для Huawei Mate 8

ВСMGPS на этих устройствах на последовательном порту /dev/ttyAMA3

Offline

#2081 2017-03-16 20:54:58

usm78-gis
Member
Registered: 2008-04-21
Posts: 2,383

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

Хотел написать про железо и GPS на mate 9, но придется отложить на неделю. превед вертухаям.

Offline

#2082 2017-03-23 23:54:40

usm78-gis
Member
Registered: 2008-04-21
Posts: 2,383

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

Вопрос по языку программирования, известному как "write once, debug everywhere".
андроид полностью падает вот с таким сообщением при использовании программы gnsslogger.apk ( https://github.com/google/gps-measureme … GNSSLogger  ) :

 art/runtime/indirect_reference_table.cc:138] JNI ERROR (app bug): local reference table overflow (max=512)
 art/runtime/indirect_reference_table.cc:138] local reference table dump:
 art/runtime/indirect_reference_table.cc:138]   Last 10 entries (of 512):
 art/runtime/indirect_reference_table.cc:138]       511: 0x13ecf000 java.lang.Class<android.location.GnssMeasurement>
 art/runtime/indirect_reference_table.cc:138]       510: 0x136808a8 android.location.GnssMeasurement[] (7 elements)
 art/runtime/indirect_reference_table.cc:138]       509: 0x13bd1400 byte[] (11 elements)
 art/runtime/indirect_reference_table.cc:138]       508: 0x13bd1478 byte[] (11 elements)
 art/runtime/indirect_reference_table.cc:138]       507: 0x13d1b900 byte[] (40 elements)
 art/runtime/indirect_reference_table.cc:138]       506: 0x13d1b938 byte[] (40 elements)
 art/runtime/indirect_reference_table.cc:138]       505: 0x13bd1670 byte[] (11 elements)
 art/runtime/indirect_reference_table.cc:138]       504: 0x13bd1d78 byte[] (11 elements)
 art/runtime/indirect_reference_table.cc:138]       503: 0x13bcb148 byte[] (11 elements)
 art/runtime/indirect_reference_table.cc:138]       502: 0x13bcb1c0 byte[] (11 elements)
 art/runtime/indirect_reference_table.cc:138]   Summary:
 art/runtime/indirect_reference_table.cc:138]         1 of android.location.GnssMeasurement[] (7 elements)
 art/runtime/indirect_reference_table.cc:138]         1 of android.location.GnssClock
 art/runtime/indirect_reference_table.cc:138]         2 of java.lang.Class (1 unique instances)
 art/runtime/indirect_reference_table.cc:138]       390 of byte[] (11 elements) (390 unique instances)
 art/runtime/indirect_reference_table.cc:138]       118 of byte[] (40 elements) (118 unique instances)

Вот эти "висячие" byte[40] и byte[11] это предыдущие навигационые subframes для GPS и глонаса соответственно,
которые и забили local reference table.
Может я чего недопонимаю в этом языке, но разве DeleteLocalRef в
https://android.googlesource.com/platfo … ovider.cpp

    JNIEnv* env = AndroidRuntime::getJNIEnv();
    jobject navigationMessage = translate_gnss_navigation_message(env, message);
    env->CallVoidMethod(mCallbacksObj,
                        method_reportNavigationMessages,
                        navigationMessage);
    env->DeleteLocalRef(navigationMessage);

должен "освободить" память под массивом, являющийся частью navigationMessage ?
На Mate 9 Galileo raw data работает, но как-то не очень здорово. Вот пример сырых данных для E14

Raw,2352904,92654000000,,,-1174133401345816604,0.0,6.3731318907790016,,,0,14,0.0,1074,2657120,7,37.32952117919922,-594.4398950144232,0.07155628388788515,1,-5963.906697538496,0.0010088905692100525,,,,,0,,6

I/NAV не видел, и это видимо связано с проблемой navigationMessage.
EGNOS тоже почему-то не дает никаких сырых данных, а Beidou я пока не пробовал:
для этого надо редактировать конфигурационный XML gps4774config.xml на readonly диске ( EnableBeidou="true")

  <gll_features
        EnableLowPowerPmm="true"
        EnableOnChipMiCtrl="true"
        EnableInternalBlanking="false" 
        EnableGalileo="true"
  />

Также было бы интересно отключить глонас, но совершенно непонятно как, и можно ли вообще это сделать.

Offline

#2083 2017-03-24 01:02:52

Sergey Astakhov
Member
From: St.Petersburg, Russia
Registered: 2009-11-13
Posts: 5,266

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

usm78-gis wrote:

Вопрос по языку программирования, известному как "write once, debug everywhere".

Про C++ что ли?
Использование JNI требует аккуратности, как и всё остальное в мире C/C++.

usm78-gis wrote:

Вот эти "висячие" byte[40] и byte[11] это предыдущие навигационые subframes для GPS и глонаса соответственно,которые и забили local reference table.Может я чего недопонимаю в этом языке, но разве DeleteLocalRef в ... должен "освободить" память под массивом, являющийся частью navigationMessage ?

Должен удалить локальную ссылку, сделав доступным объект для garbage collection. Проблема не в нём, а в методе JavaObject::callSetter:

template<>
void JavaObject::callSetter(const char* method_name, uint8_t* value, size_t size) {
    jbyteArray array = env_->NewByteArray(size);
    env_->SetByteArrayRegion(array, 0, size, (jbyte*) value);
    jmethodID method = env_->GetMethodID(
            clazz_,
            method_name,
            "([B)V");
    env_->CallVoidMethod(object_, method, array);
}

При вызове NewByteArray создаётся локальная ссылка (array), но потом нигде не удаляется. При вызове из Java это не страшно, т.к. таблица локальных ссылок при возврате в Java очищается, а вот во всяких callback-механизмах это порождает утечки памяти.

Last edited by Sergey Astakhov (2017-03-24 01:05:58)

Offline

#2084 2017-03-24 10:25:14

usm78-gis
Member
Registered: 2008-04-21
Posts: 2,383

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

OK, что делать (tm) ? Написать логгер на c++ тоже будет непросто, хотя и по другим причинам.
Интересно, что все гуглопримеры по доступным ссылкам относятся к Qualcomm, а не к BCM477*, и везде показывают только "Raw" и нигде
"Nav":

Nav,24,257,1,0,5,34,-61,-107,27,17,-128,-83,-69,20,-44,-30,86,19,-123,-117,81,63,81,0,24,40,67,54,-57,41,92,-54,-23,9,-126,103,-66,15,110,122,-104,47,64,2,-85
Nav,28,257,1,0,5,34,-61,-107,27,17,-128,-83,-69,20,-44,-30,-13,24,-59,-116,52,63,79,-64,55,40,67,54,49,41,90,-11,92,9,-125,-103,42,15,56,-29,-116,47,64,2,-85
Nav,30,257,1,0,5,34,-61,-107,27,17,-128,-83,-69,20,-44,-30,86,19,-123,-117,81,63,81,0,24,40,67,54,-57,41,92,-54,-23,9,-126,103,-66,15,110,122,-104,47,64,2,-85

глонасс тоже какой-то кривой (не редуцированный из FCN в SVN), поэтому у меня очень
глубокие сомнения, что он вообще используется в решении

Nav,93,769,1,0,7,56,116,56,121,30,52,-65,-11,-77,-13,120
Nav,96,769,1,0,7,56,116,56,121,30,52,-65,-11,-77,-13,120
Nav,98,769,1,0,7,56,116,56,121,30,52,-65,-11,-77,-13,120
Nav,105,769,1,0,7,56,116,56,121,30,52,-65,-11,-77,-13,120
Nav,106,769,1,0,7,56,116,56,121,30,52,-65,-11,-77,-13,120

Last edited by usm78-gis (2017-03-24 10:39:51)

Offline

#2085 2017-03-24 21:42:51

Sergey Astakhov
Member
From: St.Petersburg, Russia
Registered: 2009-11-13
Posts: 5,266

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

usm78-gis wrote:

OK, что делать (tm) ?

Наверное юзать более свежие версии андроида.
В октябре прошлого года это поправили:

https://android.googlesource.com/platfo … %5E%21/#F0

Судя по тегам это исправление попало в релиз начиная с версии 7.1.1

Last edited by Sergey Astakhov (2017-03-24 21:51:09)

Offline

#2086 2017-03-25 00:10:42

usm78-gis
Member
Registered: 2008-04-21
Posts: 2,383

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

Sergey Astakhov wrote:
usm78-gis wrote:

OK, что делать (tm) ?

Наверное юзать более свежие версии андроида.

Это к сожалению во многих случаях (в большинстве ?) невозможно.
Функция сия находится в библиотеке libandroid_servers.so

readelf -Ws /system/lib64/libandroid_servers.so | c++filt | grep Setter

416: 0000000000021f38   164 FUNC    GLOBAL DEFAULT   12 void android::JavaObject::callSetter<unsigned char>(char const*, unsigned char*, unsigned long)

Ее конечно можно и для 7.0.0 попытаться пересобрать с патчем, или же пытаться пропатчить сам бинарник.
В любом случае надо еще разблокировать 'readonly' для /system (методы предлагаемые на xda-developers.com у меня не работают)

/dev/block/dm-0 /system ext4 ro,seclabel,relatime,data=ordered 0 0

В октябре прошлого года это поправили:

+5

Offline

#2087 2017-03-25 06:47:04

freeExec
Moderator
From: Ульяновск
Registered: 2012-07-31
Posts: 6,414

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

А финт, если либу положить в сборку APK и она загрузиться первой. А то и вовсе может быть возможно переназначить этот вызов на свой JavaObject::callSetterFix. По крайней мере при сборке на обычном С++ бывает ругается, что существуют две реализации и он выбирает какую-то одну.
Вообще андроид странный, я 4 месяца пытался собрать rtkgps+, чтобы он не падал на моём телефоне. И вот недавно я выяснил причину, что в java и в нативном коде массивы которые копировались друг в друга были разной длинный. Но на моём андроиде копирование молча падало в дебрях системы, на на более новых нет, и как бы работало О_о
Так же спасибо Sergey Astakhov, твои unix сокеты пригодились.
П.С. Так же я узнал секрет, как на андроиде записывать логи с приёмника с timetag-ом, что бы потом их можно было повторять в rtknavi - надо в конце имени файла добавить ::T

Offline

#2088 2017-03-25 22:20:39

usm78-gis
Member
Registered: 2008-04-21
Posts: 2,383

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

Sergey Astakhov wrote:

Наверное юзать более свежие версии андроида.
...
Судя по тегам это исправление попало в релиз начиная с версии 7.1.1

Единственный телефон с BCM4774 (AFAIK http://www.myfixguide.com/manual/huawei … 8-teardown ), для которого есть LineageOS 14.1 это Huawei Honor 8
https://forum.xda-developers.com/showpo … p=71279818
В нем "GPS fixed" (whatever that means) и Galileo официально не поддерживается (хотя само железо умеет ).
Для Mate 9 есть самопальный ROM https://forum.xda-developers.com/mate-9 … 9-t3560304 и для него пишуть

Bugs:
- GPS doens't work if you aren't on B156 base

B156 я устанавливать не хочу, т.к. в нем пофиксили Vulnerability ID: HWPSIRT-2017-01060
http://www.huawei.com/en/psirt/security … rtphone-en
которую я естественно фиксить не хочу smile
Я дизассемблировал libandroid_servers.so из него (objdump отсюда https://releases.linaro.org/components/ … -linux-gnu , IDApro для arm64 у меня нет, а demo для него не работает), и там конечно никакие кетайцы memory leak в navmessage
править и не думали.
При этом для Kirin960

- Huawei NOT RELEASING Kernel source code

Так что ситуация на данный момент довольно запутанная.
Если у кого есть телефон с 7.1.1 (и Qualcomm ?), то интересно узнать о вашем experience.

Last edited by usm78-gis (2017-03-26 00:26:29)

Offline

#2089 2017-03-27 00:12:16

usm78-gis
Member
Registered: 2008-04-21
Posts: 2,383

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

Я все-таки снес стандартную прошивку, и заменил ее на самопал cool
Теперь все read-write. GPS не работает по следующей причине

[   16.240081s][pid:1,cpu4,init]init: (Parsing /init.connectivity.gps.rc took 0.00s.)
[   18.029235s][pid:1,cpu7,init]init: Starting service 'gpsdaemon'...
[   19.310211s][pid:1,cpu4,init]init: Service gpsd_4774 does not have a SELinux domain defined.
[   19.696044s][pid:1,cpu6,init]init: Service 'gpsdaemon' (pid 459) exited with status 0

В /sepolicy gpsd_4774 действительно нет, в /property_contexts есть

ctl.gpsd_4774                   u:object_r:gpsd_prop:s0

а добавить контекст в init.connectivity.gps.rc

    service gpsd_4774  /vendor/bin/glgps4774 -c /data/gps/gpsconfig.xml
    socket gps seqpacket 660 gps system
    class late_start
    user gps
    group system inet sdcard_rw wakelock
    disabled

не удается, так как при перезапуске он заменяется на версию из какого-то ramdisk.
При этом в ramdisk из boot.img такого файла нет (???)
В телефоне до хрена partitions, везде бекапы, резервные копии, логи.
Никакого ЦРУ не надо, китайцы какие только данные по дискам не распихали roll
Этот glgps4774 еще через  AtCmdTransportPort="/dev/appvcom9"
посылает телефону магические команды.
В  SuplTlsCertPath="/data/cust/xml/server.pem" никакого сертификата нет.
При этом есть запароленная пара
/vendor/etc/gnss/config/gnss_lss_slp_thirdparty.p12
и запароленный ключъ
/vendor/etc/gnss/config/gnss_lss_rfg_key_thirdparty.pem roll
Интересно кто и для чего ими пользуется. Пароль же тоже должен где-то
лежать.
cacert_location.pem и xtra_root_cert.pem отсутствуют.

Disk /dev/block/sda: 4 MB, 4194304 bytes, 8192 sectors
Disk /dev/block/sdb: 4 MB, 4194304 bytes, 8192 sectors
Disk /dev/block/sdc: 16384 sectors, 64.0M

Number  Start (sector)    End (sector)  Size Name
     1             128             255  512K frp
     2             256             767 2048K persist
     3             768            2047 5120K reserved1

Disk /dev/block/sdd: 124928000 sectors,  576M
Number  Start (sector)    End (sector)  Size Name
     1             128             255  512K vrl
     2             256             383  512K vrl_backup
     3             384            2559 8704K modem_secure
     4            2560            4095 6144K nvme
     5            4096           20479 64.0M oeminfo
     6           20480           28671 32.0M secure_storage
     7           28672           36863 32.0M modem_om
     8           36864           37887 4096K modemnvm_factory
     9           37888           38911 4096K modemnvm_backup
    10           38912           41983 12.0M modemnvm_img
    11           41984           43007 4096K modemnvm_system
    12           43008           63487 80.0M splash2
    13           63488          129023  256M cache
    14          129024          129535 2048K bootfail_info
    15          129536          130047 2048K misc
    16          130048          138239 32.0M reserved2
    17          138240          139263 4096K reserved10
    18          139264          141311 8192K hisee_fs
    19          141312          145407 16.0M dfx
    20          145408          149503 16.0M rrecord
    21          149504          149567  256K fw_lpm3_a
    22          149568          150527 3840K reserved3_a
    23          150528          151551 4096K hisee_img_a
    24          151552          154623 12.0M fastboot_a
    25          154624          155647 4096K vector_a
    26          155648          156159 2048K isp_boot_a
    27          156160          159743 14.0M isp_firmware_a
    28          159744          162815 12.0M fw_hifi_a
    29          162816          164863 8192K teeos_a
    30          164864          181247 64.0M recovery2_a
    31          181248          185343 16.0M sensorhub_a
    32          185344          193535 32.0M boot_a
    33          193536          209919 64.0M recovery_a
    34          209920          214015 16.0M dts_a
    35          214016          214527 2048K trustfirmware_a
    36          214528          228863 56.0M modem_fw_a
    37          228864          241663 50.0M reserved4_a
    38          241664          262143 80.0M modemnvm_update_a
    39          262144          270335 32.0M patch_a
    40          270336          278527 32.0M version_a
    41          278528          479231  784M vendor_a
    42          479232          528383  192M product_a
    43          528384          577535  192M cust_a
    44          577536         1777663 4688M system_a
    45         1777664         1810431  128M reserved5
    46         1810432        15615999 52.6G userdata

Offline

#2090 2017-03-27 21:08:31

usm78-gis
Member
Registered: 2008-04-21
Posts: 2,383

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

Нашел, где находится используемый ramdisk.cpio.gz,
он в сборке .img на /dev/block/sdd32 с характерным названием boot_a
Также полностью пересобрал AOSP (7.0.0_r30) для generic_arm64 из исходников.

Offline

Board footer

Powered by FluxBB