Beware that this post is related to an SDK in maintenance mode
More Info: Consider nRF Connect SDK for new designs

are libraries compatible between IAR and SEGGER

We are developing an algorithmic library for a suppler of ours we wish to license the library to them.

Our development System is Segger Embedded IDE 5.42a.as it is no charge to Nordic customers

They do not have access to the source code of the library nor do we have access to the code of the Main Application.
They are using IAR Embedded Workbench for ARM 9.20.1.43606

We will both be using nRF SDK 17.2

Another thing I should mention is that the processor for the Health Watch (their product) is the nRF52840.
We have developed a previous product which we are using for testing the code split up, it is an nrf52832

The basic idea of our library is that of a black box which provides entry points for call ins but which
does not make callouts. However that is not going to work with library routines.


Specifically, in building the library I see the following undefined symbols:
         U __aeabi_d2f
         U __aeabi_dadd
         U __aeabi_dcmpgt
         U __aeabi_dcmplt
         U __aeabi_ddiv
         U __aeabi_dmul
         U __aeabi_dsub
         U __aeabi_f2d
         U __aeabi_i2d
         U __aeabi_ui2d
         U __aeabi_uldivmod
         U log10
         U __aeabi_d2iz
         U __aeabi_ddiv
         U __aeabi_dmul
         U __aeabi_dsub
         U __aeabi_ui2d
         U pow
         U abs
         U memcpy
         U memset
         U sqrt


The IAR C compiler is prohibitively expensive in our experience, we have used it on other big projects, but this is a smaller development

I have four questions. 

  1. Are their differences between the nrf52832_xxxa we are using I should be careful for, such as difference
    in the floating point for the math routines, thumb mode our other issues. Our library is standalone and
    does not do any I/O or depend on hardware resources (e.g. timers). It is pure computation.
  2. For the list above are these routines provided by the nRF SDK or are they provided by the C library of the respective vendors
  3. So the big issue is: can we link a library compiled with SEGGER with libraries from IAR
  4. And if we do so won't this not be possible because of IP license and copyright restrictions (IAR wrote any library code for their customers, not others)
Parents
  • Hi Ciaran, 


    We have an example of a library that can be compiled by gcc to be used for different compilers. You can take a look at the \external\micro-ecc folder. You can find the documentation on how to compile the library here. You can find that it has different folders for Keil, gcc, IAR. I think it's a good reference that you can compare the Makefile made for armgcc vs the Makefile made for IAR in the folders. 

    To be honest, I have quite limited experience on compiling binary library. I did get some help from one of our coworkers that I summarize here: 

    - Yes it's possible as you can see in the microecc. 

    - You need to link in the libc libraries from Segger with your library. This is to avoid the issue with the library list you got. And to avoid issue number #4 as in your question. 

    - If you build for IAR 8, something need to be aware of as you can find here (Look for "Note for IAR 8 users")

    Regarding the question on the library compiled on nRF52832 to be used on nRF52840, they both have hardware FPU unit so I don't see the problem. And as you can find in the micro ecc, the same library binary file can be used on both chips so I think it should be possible in your case. 

Reply
  • Hi Ciaran, 


    We have an example of a library that can be compiled by gcc to be used for different compilers. You can take a look at the \external\micro-ecc folder. You can find the documentation on how to compile the library here. You can find that it has different folders for Keil, gcc, IAR. I think it's a good reference that you can compare the Makefile made for armgcc vs the Makefile made for IAR in the folders. 

    To be honest, I have quite limited experience on compiling binary library. I did get some help from one of our coworkers that I summarize here: 

    - Yes it's possible as you can see in the microecc. 

    - You need to link in the libc libraries from Segger with your library. This is to avoid the issue with the library list you got. And to avoid issue number #4 as in your question. 

    - If you build for IAR 8, something need to be aware of as you can find here (Look for "Note for IAR 8 users")

    Regarding the question on the library compiled on nRF52832 to be used on nRF52840, they both have hardware FPU unit so I don't see the problem. And as you can find in the micro ecc, the same library binary file can be used on both chips so I think it should be possible in your case. 

Children
No Data
Related