I 'm facing compilation error on M33-FreeRTOS code for communicating a IR sensor on RZ/V2L board.
After integrating Sensor driver code(mlx90632 driver files)
I am getting a error in a completely different file rm_comms_i2c_driver_rz.c.
undefined reference to `xSemaphoreTakeRecursive
Building target: rzv2l_cm33_rpmsg_demo.elf
c:/program files (x86)/gnu tools arm embedded/9 2019-q4-major/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/bin/ld.exe: ./rzv/fsp/src/rm_comms_i2c/rm_comms_i2c_driver_rz.o: in function `rm_comms_i2c_os_recursive_mutex_acquire':
C:\Users\Abhinav\OneDrive\Documents\Rzv2l\r01an6238ej0111-rzv2l-cm33-multi-os-pkg\rzv2l_cm33_rpmsg_demo\Debug/../rzv/fsp/src/rm_comms_i2c/rm_comms_i2c_driver_rz.c:355: undefined reference to `xSemaphoreTakeRecursive'
c:/program files (x86)/gnu tools arm embedded/9 2019-q4-major/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/bin/ld.exe: ./rzv/fsp/src/rm_comms_i2c/rm_comms_i2c_driver_rz.o: in function `rm_comms_i2c_os_recursive_mutex_release':
C:\Users\Abhinav\OneDrive\Documents\Rzv2l\r01an6238ej0111-rzv2l-cm33-multi-os-pkg\rzv2l_cm33_rpmsg_demo\Debug/../rzv/fsp/src/rm_comms_i2c/rm_comms_i2c_driver_rz.c:376: undefined reference to `xSemaphoreGiveRecursive'
collect2.exe: error: ld returned 1 exit status
make: *** [makefile:111: rzv2l_cm33_rpmsg_demo.elf] Error 1
"make -r -j8 all" terminated with exit code 2. Build might be incomplete.
Below is my configuration.xml
Also dtsi file has 3 i2c interfaces marked as "disabled". Do I need to remove these dtsi entries completely.
Hi abpreen14,Please go to your project's workspace directory, in file ./rzv_cfg/aws/FreeRTOSConfig.h and change the line: #define configUSE_RECURSIVE_MUTEXES (0) to#define configUSE_RECURSIVE_MUTEXES (1)Kind Regards.
Better to use the Smart Configurator because the FreeRTOS configuration file can be overwritten at compile time.
michael kosinski Thanks, solved my compile issue.
Earlier I tried modifying the FreeRTOSConfig.h But it was getting over written. After doing changes via the Smart Configurator it has compiled successfully.
Below are the changes that I have done.
Now the code is compiling.
However I am facing error while doing a i2c_read operation.
While executing this line :
uint32_t iic_clk = p0_clk / (1U << p_ctrl->p_reg->ICMR1_b.CKS);
This gives error and goes into
upon further investigating it seems the p_ctrl->p_reg->ICMR1_b.CKS is NULL/not defined below is the screen shot.
Any clue in this direction will be helpful!!!.
Thanks
Abhinav