MDK-ARM dw_drivers requirements

Hi, I’m trying to use the DW3xxx_XR6.0C_24Feb2022 in MDK-ARM project.

Error: L6218E: Undefined symbol __dw_drivers_start (referred from deca_compat.c.obj).

It seems the library needs a symbol dw_drivers to be defined, can you explain how this is supposed to be set up?

Can you share the path to the “MDK-ARM” project that you are referencing? Which OS and version of GNU ARM Toolchain are you using?

I am not using the GNU ARM toolchain. I try to port DW3xxx Device Driver to MDK Microcontroller Development Kit. It use Arm Compiler Version 6.

So as per your error, you have to modify your linker file in MDK to introduce the section for the uwb chip driver.
Look to the “.ld” file in Qorvo code or in SES project xml linker file.
Because the libraries in Qorvo compiled with EABI, they are compatible across all ARM Cortex M compilers, which supports EABI.
I remember someone on the forum did this exercise for IAR complier

I’m currently stuck on the same thing, so if anyone could offer assistance I’d appreciate it.

Honestly can’t understand why they don’t just release the source code for these drivers. Feels like they’re deliberately putting barriers in the way of adoption. Do they want me to buy their product or not? I have a perfectly working code base with the DW1000 but moving to the DW3000 (which should be trivial) is proving to be a nightmare.

I have already given up on using DW3xxx_XR6.0C_24Feb2022 on MDK-ARM. Because MDK-ARM does not use GNU ARM toolchain, but Arm Compiler, which will make the compiled lib unusable.

I am using ZepherRTOS now, and now there is subsys that can drive dw3000, but he actually uses DW3xxx_XR6.0C_24Feb2022.

If you must use MDK-ARM, dw3000 has an old libary that is open source.

For the DW1000 I wrote my own drivers.
I went to update them for the DW3000 only to find the user manual had big holes in and told you to look at the driver source for how to perform certain operations.
The available driver source was setting register bits that were listed as reserved and registers that weren’t even listed.

At that point I used the old drivers that I had source for and added a wrapper around them to match my existing structure. A performance hit but it at least worked.