This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

SDK15 Invensense MPU9250

Hi, we switched from your competition to your platform. I know you wrote somewhere that you cannot provide examples for every sensor out there. But your Nordic Dev Zone is a bit messy, information cluttered everywhere. And soon, information is also outdated by your own updates.

If we would talk about motion sensors, I know there are like only two manufacturers: Invensense & Bosch.

Your competition has better community and also the owners themselves care more and provide basic examples on everything. I'm not asking you to do so. Just motion sensors, there is not many vendors and you have 50+ similar questions about motion sensors. It would be good, responsible, western EU style behavior, if your management would get some feedback from community managers. If so many people asking about issues or examples. You can have better ROI and save resources here, if you would, by all the years, provide some, even basic example. You have MPU in your documentation, but that does not stand for motion processing unit, it is some memory protection unit instead (only adds to confusion when googling).

We have met on CES at Las Vegas, you ask for some feedback, how to get better than competition. Your competition have better examples of how easy is to use their product. How good is time to market. Here I see only messy forum and customer rant about the same thing again & again and it is more than 1 year.

And before you will send here the unofficial Michael's github, I want to say that it was for SDK14. Not for SDK15. Next it does not use Invensense DMP driver.

I want to use eDMP motion driver by Invensense. Read quaternion (4D vector) and use their pipeline and configuration. Because, unlike Bosch with second ARM coprocessor, Invensense requires to load their driver in your firmware memory, in order to get these data. You can find many examples on Sparkfun, Adafruit, not to mention Arduino community itself. Also other ARM vendors provide at least one example.

I'm not asking you provide examples on every sensor out there. Just, when it comes to market share, there is only Invensense and Bosch with MPUs. That would be quite basic bluetooth beacon example in 2019.

So my question is: can I get SDK15 working with MPU9250 using DMP? On various boards including ESP, NXP, Arduino, it is really a matter of minutes and then companies, your customers, can focus on developing the product and time to market is acceptable. Here with Nordic, my experience so far, is that the community is not exchanging projects as it should and Nordic company is not doing anything to bring more customers on their platform. What took me one day on other platforms, is impossible to accomplis on SDK15.

I think it is start of 2019 and time to rethink this whole community / customer / startup / manufacturers strategy.

Parents
  • Hi,

    Thank you for your feedback, I will forward it to the relevant departments. 

    In general, we get good feedback on the support we provide, and the information available in the community. If you have specific issues with integrating a driver with the SDK, we will help you as best we can. What we normally will not do is to fully integrate any driver with the SDK on request from a customer, without the customer doing any effort to do some work himself.

    Like you say, Martin's examples on GitHub is written for SDK 14.2.0, but it should not be difficult to port these to run with SDK 15.2.0 (I have done this myself in the past).

    The DPM driver is used in the Thingy:52 firmware, but this is based on SDK 13.0.0 (again, should not be difficult to port to SDK 15.2.0).

    I would recommend that you post a new case with the specific issues you are facing by integrating the driver with SDK 15.2.0, and one of our application engineers will help you solve your issues.

    Best regards,
    Jørgen

  • Ok, code snippet inserted. Uploading image still not working. I'm on Google Chrome / Windows 10. I hit File Upload. Choose file (jpg screenshot) from my PC. It will not save it in the form and it automatically reopens Choose file window in infinite way. Looks like JavaScript issue on your website.

  • Yes, I did it. I set up root folder EHAL for Eclipse import and it found 3 projects with same name (NRF51,52 an 52840). That's why I had the problem. It would be good if the project names would be different.

    Right now I have problem with: arm-none-eabi-objcopy: BlueIOThingy.hex 64-bit address 0x4b4fa300026000 out of range for Intel Hex file.

    But I guess it is because of: http://embeddedsoftdev.blogspot.com/p/eclipse.html ...ARM.com toolchain provides only 32-bit.But I found these guys: https://gnu-mcu-eclipse.github.io/ for GNU MCU Eclipse provide also ARM compiler themselves and they have 64-bit release. So If I understand correctly, it should work with this.

    I was thinking maybe helping with updating EHAL Readme.md (it has outdated links). Maybe renaming Eclipse example projects, so they contain also MCU type. Maybe providing some automation script, that will fill /external folder with all SDKs from the internet automatically.

    I'm Invesense developer since 2014, but I cannot download their driver now. So I'm waiting for their e-mail.

  • Yes, it did help. Using GNU MCU Eclipse for Build Tools and also GCC Toolchain. Now I need to rework NRF52 BlueIothingy to NRF52840, which includes also different softdevice. I will make new project for that.

  • That should be easy.  Just copy the project to the 840 workspace.  Change require are

    - include path for the S140 instead of S132

    - preprocessor define to NRF52840_XXAA instead of NRF52832...

    - Linker script for the S140

    That's all

    PS : Video demo of the BlueIOThingy firmware connected with Nordic Thingy App. This demo was with the old board using the MPU-9250.

  • Yes, thanks for confirmation. I did it like this.

    I'm now fighting with Eclipse build again :-D

    After setting up global toolchain GNU MCU ARM I came across strange problem. Project EHAL builds itself without problem, if I build it directly. But when building BlueIOThingy with EHAL dependency, there is some undefined issue:

    In file included from C:/Users/Lukas/eclipse-workspace/SatinSensor/EHAL/ARM/Nordic/exemples/BlueIOThingy.cpp:72:
    c:\users\lukas\eclipse-workspace\satinsensor\ehal\arm\nordic\include\iopinctrl.h: In function 'void IOPinSetDir(int, int, IOPINDIR)':
    c:\users\lukas\eclipse-workspace\satinsensor\ehal\arm\nordic\include\iopinctrl.h:62:9: error: 'NRF_P1' was not declared in this scope
       reg = NRF_P1;

  • "../../../../../../external/nRF5_SDK/modules/nrfx/templates/nRF52832" ..oh just some mixed directives and includes in both projects.

Reply Children
  • Also I have to close EHAL, because it was NRF52 and reimport EHAL from NRF25840. Changing only directives is not solution:

    C:/Users/Lukas/eclipse-workspace/SatinSensor/external/nRF5_SDK/components/ble/ble_dtm/ble_dtm_hw_nrf52.c: In function 'dtm_radio_validate':
    C:/Users/Lukas/eclipse-workspace/SatinSensor/external/nRF5_SDK/components/ble/ble_dtm/ble_dtm_hw_nrf52.c:65:55: error: 'RADIO_TXPOWER_TXPOWER_Pos8dBm' undeclared (first use in this function); did you mean 'RADIO_TXPOWER_TXPOWER_Pos4dBm'?

  • "C:/Users/Lukas/eclipse-workspace/SatinSensor/EHAL/src/sensors/tphg_bme680.cpp:404:43: error: 'BSEC_OUTPUT_IAQ_ESTIMATE' was not declared in this scope"

    ...even #include "bsec_datatypes.h" not helping, looks like it was removed. Tried searching inside all files on EHAL and /external and it is found nowhere. Maybe because I got BSEC 1.4.7.1 and they removed it?

  • It works using BSEC 1.4.5: github.com/.../15

    BSEC_OUTPUT_IAQ_ESTIMATE is now renamed to BSEC_OUTPUT_IAQ

    Now EHAL should update Readme.md with version information or have some package manager script including versions.

  • I had to move BlueIOThingy project from NRF52 examples folder to NRF52840 examples as, even workspace had 52840 EHAL dependency correctly, it did not link the correct one, because instead of workspace variable there is relative path ../../../ 

    After moving it did build and NRF_P1 is defined.

    Just to have another linker error:

    c:/users/lukas/appdata/roaming/gnu mcu eclipse/arm embedded gcc/8.2.1-1.2-20190119-1237/bin/../lib/gcc/arm-none-eabi/8.2.1/../../../../arm-none-eabi/bin/ld.exe: C:/Users/Lukas/eclipse-workspace/SatinSensor/EHAL/ARM/Nordic/nRF52840/exemples/BlueIOThingy/../../EHAL/Debug\libEHAL.a(cc310_backend_init.o): in function `cc310_backend_uninit':
    C:/Users/Lukas/eclipse-workspace/SatinSensor/external/nRF5_SDK/components/libraries/crypto/backend/cc310/cc310_backend_init.c:136: undefined reference to `SaSi_LibFini'
    c:/users/lukas/appdata/roaming/gnu mcu eclipse/arm embedded gcc/8.2.1-1.2-20190119-1237/bin/../lib/gcc/arm-none-eabi/8.2.1/../../../../arm-none-eabi/bin/ld.exe: C:/Users/Lukas/eclipse-workspace/SatinSensor/EHAL/ARM/Nordic/nRF52840/exemples/BlueIOThingy/../../EHAL/Debug\libEHAL.a(cc310_backend_init.o): in function `cc310_backend_init':
    C:/Users/Lukas/eclipse-workspace/SatinSensor/external/nRF5_SDK/components/libraries/crypto/backend/cc310/cc310_backend_init.c:88: undefined reference to `SaSi_LibInit'
    c:/users/lukas/appdata/roaming/gnu mcu eclipse/arm embedded gcc/8.2.1-1.2-20190119-1237/bin/../lib/gcc/arm-none-eabi/8.2.1/../../../../arm-none-eabi/bin/ld.exe: C:/Users/Lukas/eclipse-workspace/SatinSensor/EHAL/ARM/Nordic/nRF52840/exemples/BlueIOThingy/../../EHAL/Debug\libEHAL.a(cc310_backend_rng.o): in function `nrf_crypto_rng_backend_init':
    C:/Users/Lukas/eclipse-workspace/SatinSensor/external/nRF5_SDK/components/libraries/crypto/backend/cc310/cc310_backend_rng.c:159: undefined reference to `CRYS_RndInit'
    c:/users/lukas/appdata/roaming/gnu mcu eclipse/arm embedded gcc/8.2.1-1.2-20190119-1237/bin/../lib/gcc/arm-none-eabi/8.2.1/../../../../arm-none-eabi/bin/ld.exe: C:/Users/Lukas/eclipse-workspace/SatinSensor/EHAL/ARM/Nordic/nRF52840/exemples/BlueIOThingy/../../EHAL/Debug\libEHAL.a(cc310_backend_rng.o): in function `nrf_crypto_rng_backend_vector_generate':
    C:/Users/Lukas/eclipse-workspace/SatinSensor/external/nRF5_SDK/components/libraries/crypto/backend/cc310/cc310_backend_rng.c:215: undefined reference to `CRYS_RND_GenerateVector'
    c:/users/lukas/appdata/roaming/gnu mcu eclipse/arm embedded gcc/8.2.1-1.2-20190119-1237/bin/../lib/gcc/arm-none-eabi/8.2.1/../../../../arm-none-eabi/bin/ld.exe: C:/Users/Lukas/eclipse-workspace/SatinSensor/EHAL/ARM/Nordic/nRF52840/exemples/BlueIOThingy/../../EHAL/Debug\libEHAL.a(cc310_backend_rng.o): in function `nrf_crypto_rng_backend_reseed':
    C:/Users/Lukas/eclipse-workspace/SatinSensor/external/nRF5_SDK/components/libraries/crypto/backend/cc310/cc310_backend_rng.c:252: undefined reference to `CRYS_RND_AddAdditionalInput'
    c:/users/lukas/appdata/roaming/gnu mcu eclipse/arm embedded gcc/8.2.1-1.2-20190119-1237/bin/../lib/gcc/arm-none-eabi/8.2.1/../../../../arm-none-eabi/bin/ld.exe: C:/Users/Lukas/eclipse-workspace/SatinSensor/external/nRF5_SDK/components/libraries/crypto/backend/cc310/cc310_backend_rng.c:260: undefined reference to `CRYS_RND_Reseeding'
    c:/users/lukas/appdata/roaming/gnu mcu eclipse/arm embedded gcc/8.2.1-1.2-20190119-1237/bin/../lib/gcc/arm-none-eabi/8.2.1/../../../../arm-none-eabi/bin/ld.exe: C:/Users/Lukas/eclipse-workspace/SatinSensor/EHAL/ARM/Nordic/nRF52840/exemples/BlueIOThingy/../../EHAL/Debug\libEHAL.a(cc310_backend_ecc.o): in function `get_domain':
    C:/Users/Lukas/eclipse-workspace/SatinSensor/external/nRF5_SDK/components/libraries/crypto/backend/cc310/cc310_backend_ecc.c:96: undefined reference to `CRYS_ECPKI_GetEcDomain'
    c:/users/lukas/appdata/roaming/gnu mcu eclipse/arm embedded gcc/8.2.1-1.2-20190119-1237/bin/../lib/gcc/arm-none-eabi/8.2.1/../../../../arm-none-eabi/bin/ld.exe: C:/Users/Lukas/eclipse-workspace/SatinSensor/EHAL/ARM/Nordic/nRF52840/exemples/BlueIOThingy/../../EHAL/Debug\libEHAL.a(cc310_backend_ecc.o): in function `nrf_crypto_backend_cc310_key_pair_generate':
    C:/Users/Lukas/eclipse-workspace/SatinSensor/external/nRF5_SDK/components/libraries/crypto/backend/cc310/cc310_backend_ecc.c:182: undefined reference to `CRYS_ECPKI_GenKeyPair'
    c:/users/lukas/appdata/roaming/gnu mcu eclipse/arm embedded gcc/8.2.1-1.2-20190119-1237/bin/../lib/gcc/arm-none-eabi/8.2.1/../../../../arm-none-eabi/bin/ld.exe: C:/Users/Lukas/eclipse-workspace/SatinSensor/EHAL/ARM/Nordic/nRF52840/exemples/BlueIOThingy/../../EHAL/Debug\libEHAL.a(cc310_backend_ecc.o): in function `nrf_crypto_backend_cc310_public_key_to_raw':
    C:/Users/Lukas/eclipse-workspace/SatinSensor/external/nRF5_SDK/components/libraries/crypto/backend/cc310/cc310_backend_ecc.c:306: undefined reference to `CRYS_ECPKI_ExportPublKey'
    collect2.exe: error: ld returned 1 exit status
    make: *** [makefile:62: BlueIOThingy.elf] Error 1

    BTW: Even your github BlueIOThingy project has missing EMPL_TARGET_NRF52 for MPU driver, so it is not backward compatible. I guess it works only with the new ICM now.

  • I am going to the Chợ Tết today in Montreal.  I'll make the project in the nRF52840 target when I return.

Related