This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

CCS/TDA2PXEVM: Custom cascade board usecase development

Part Number: TDA2PXEVM
Other Parts Discussed in Thread: AWR1243, TDA2

Tool/software: Code Composer Studio

Hi, 

I'm currently developing on the TDA2PXEVM with fusion application board and a custom cascade radar board with four AWR1243 chips. I am using CCS studio version 8.1.0.00011 and Vision SDK version 3.04. 

With some modifications to the radar chip control logic, I was able to run the camera radar capture display usecase with a single radar chip on my custom board and a D3 IMX390 camera. However, when I try to run the radar capture only usecase, I get an "i2c4 transfer to slave address 0x74 failed" error, and I can't run the cascade radar capture usecase because I don't have access to the TDA2xx processing board and cascade radar board required.  

Currently, I am creating a custom usecase for interfacing with the radar chips on my custom radar board, based on the existing radar capture only, camera radar capture display, cascade radar capture usecases. However, when I try to run this usecase, I get the i2c4 transfer error for the addresses of the 4 serializers, 0x74, 0x76, 0x78, and 0x7a. The custom radar board is set up the same way as for running the camera radar capture display usecase, except with the 4 radar chips connected instead of 1 radar and 1 camera. 

How do I need to modify my usecase code and/or the underlying configuration code in order for the SDK to recognize the 4 serializers and sensors on my custom board? Attached are the files for my custom usecase. 

radar_board_capture_only.zip

Thanks,

Richard 

  • Hi Richard,

    For radar only use case, the driver will look for radar device from UB960 port 0 by default.
    For camera + radar combo use case, the driver expects camera on port 0 and radar on port 1 by default.

    I am not very clear on how you connect the custom cascade board to TDA2PEVM. Could you show a block diagram or a picture? Thanks.

    Regards,
    Stanley
  • Hi Stanley, 

    When I try to run the radar only usecase, I connect port 0 to the master AWR1243 and ports 1-3 to the slave AWR1243s on my custom board. 

    Thanks,

    Richard 

  • Hi Richard,

    How do you power the AWR1243 on the custom board? Power over cable is not enabled.
    Could you share the full log when running the use case?
    The error indicates the i2c command to the first AWR1243 has failed.

    BTW, there is a limitation on Fusion Application board and TDA2PXEVM connection.
    Only one GPIO from UB960 on Fusion board is routed to TDA2PXEVM. This means we can only control one radar device. Each radar needs a dedicated GPIO line from UB960 to TDA2P for Host IRQ.
    So, even if you are able to start the Master radar, you won't be able to control the other 3 Slave radars.

    Regards,
    Stanley
  • Hi Stanley,

    The custom board is powered by a separate 5V power supply.

    Here is the log when I run the usecase:

    For the limitation on the Fusion Application board and TDA2PXEVM connection, would it be possible to enable additional GPIO lines on the TDA2P for the HOST IRQ? If not, what would be the appropriate TDA platform to interface with a 4-chip radar board? 

    Thanks,

    Richard 

  • Hi Richard,

    I couldn't download the log for some reason. Maybe you can just copy&paste here.

    As for the GPIO issue, one way to workaround it is to XOR 4 GPIOs from UB960 to the existing GPIO line to TDA2P. Then when GPIO interrupt is triggered, read each GPIO status from UB960 to determine which radar sends the HOST interrupt. This requires modification on both HW and SW to make it work.
    Do you plan to build your own TDAx board? If you build your own TDA board, you can avoid the GPIO issue on EVM.

    However, even if you workaround the GPIO issue, you will run into the next issue which is the BW limitation of CSI2 lanes. CSI2 is 1.5 Gbps per lane and it is a 4-lane CSI2 port on TDA2P so the max BW is 6 Gbps in theory. Now, depending on your Radar Front-end configuration, you have to calculate if 6 Gbps would be enough to support the data throughput from cascade radar with 4x AWR1243 (each also has 4-lane CSI2 with max 6 Gbps throughput).
    Do you know the radar configuration you plan to use in your application? I assume it will be different than the one in SDK.

    Regards,
    Stanley
  • Hi Stanley, 

    Here is the pasted log: 

    --------------------

    [IPU1-0] 2043.324345 s: CHAINS: UB960 is configured for 4Gbps Mode
    [IPU1-0] 2043.324467 s: Using AR12xx
    [IPU1-0] 2043.324711 s: Detected UB960 !!!
    [IPU1-0] 2045.234459 s:
    [IPU1-0] 2045.234764 s: i2cMdSubmitChan: i2c4 transfer to slave address 0x74 failed
    [IPU1-0] 2045.234886 s: src/bsp_deviceI2c.c @ Line 580:
    [IPU1-0] 2045.234978 s: I2C4: DEV 0x74: WR 0x01 = 0x01 ... ERROR !!!
    [IPU1-0] 2045.235069 s: src/bsp_deviceI2c.c @ Line 602:
    [IPU1-0] 2045.235161 s: I2C4: Error timeout 1 ms!!!
    [IPU1-0] 2045.235252 s: src/bsputils_ub960.c @ Line 1535:
    [IPU1-0] 2045.235313 s: Could not configure UB913 Ser !!!
    [IPU1-0] 2045.236869 s: src/bsputils_ub960.c @ Line 1343:
    [IPU1-0] 2045.236991 s: Failed to probe serializer at alias: 74 | status: -1
    [IPU1-0] 2045.238333 s: src/bsputils_ub960.c @ Line 1352:
    [IPU1-0] 2045.238455 s: Failed to probe sensor at alias: 40 | status: -1
    [IPU1-0] 2045.238821 s:
    [IPU1-0] 2045.239095 s: i2cMdSubmitChan: i2c4 transfer to slave address 0x76 failed
    [IPU1-0] 2045.239217 s: src/bsp_deviceI2c.c @ Line 580:
    [IPU1-0] 2045.239309 s: I2C4: DEV 0x76: WR 0x01 = 0x01 ... ERROR !!!
    [IPU1-0] 2045.239431 s: src/bsp_deviceI2c.c @ Line 602:
    [IPU1-0] 2045.239522 s: I2C4: Error timeout 0 ms!!!
    [IPU1-0] 2045.239614 s: src/bsputils_ub960.c @ Line 1535:
    [IPU1-0] 2045.239675 s: Could not configure UB913 Ser !!!
    [IPU1-0] 2045.241261 s: src/bsputils_ub960.c @ Line 1343:
    [IPU1-0] 2045.241383 s: Failed to probe serializer at alias: 76 | status: -1
    [IPU1-0] 2045.242725 s: src/bsputils_ub960.c @ Line 1352:
    [IPU1-0] 2045.242817 s: Failed to probe sensor at alias: 42 | status: -1
    [IPU1-0] 2045.243000 s:
    [IPU1-0] 2045.243274 s: i2cMdSubmitChan: i2c4 transfer to slave address 0x78 failed
    [IPU1-0] 2045.243427 s: src/bsp_deviceI2c.c @ Line 580:
    [IPU1-0] 2045.243518 s: I2C4: DEV 0x78: WR 0x01 = 0x01 ... ERROR !!!
    [IPU1-0] 2045.243610 s: src/bsp_deviceI2c.c @ Line 602:
    [IPU1-0] 2045.243701 s: I2C4: Error timeout 1 ms!!!
    [IPU1-0] 2045.243793 s: src/bsputils_ub960.c @ Line 1535:
    [IPU1-0] 2045.243854 s: Could not configure UB913 Ser !!!
    [IPU1-0] 2045.245196 s: src/bsputils_ub960.c @ Line 1343:
    [IPU1-0] 2045.245531 s: Failed to probe serializer at alias: 78 | status: -1
    [IPU1-0] 2045.246904 s: src/bsputils_ub960.c @ Line 1352:
    [IPU1-0] 2045.246995 s: Failed to probe sensor at alias: 44 | status: -1
    [IPU1-0] 2045.247148 s:
    [IPU1-0] 2045.247453 s: i2cMdSubmitChan: i2c4 transfer to slave address 0x7a failed
    [IPU1-0] 2045.247575 s: src/bsp_deviceI2c.c @ Line 580:
    [IPU1-0] 2045.247666 s: I2C4: DEV 0x7a: WR 0x01 = 0x01 ... ERROR !!!
    [IPU1-0] 2045.247788 s: src/bsp_deviceI2c.c @ Line 602:
    [IPU1-0] 2045.247849 s: I2C4: Error timeout 1 ms!!!
    [IPU1-0] 2045.247941 s: src/bsputils_ub960.c @ Line 1535:
    [IPU1-0] 2045.248032 s: Could not configure UB913 Ser !!!
    [IPU1-0] 2045.249374 s: src/bsputils_ub960.c @ Line 1343:
    [IPU1-0] 2045.249466 s: Failed to probe serializer at alias: 7a | status: -1
    [IPU1-0] 2045.250991 s: src/bsputils_ub960.c @ Line 1352:
    [IPU1-0] 2045.251082 s: Failed to probe sensor at alias: 46 | status: -1
    [IPU1-0] 2045.251997 s:
    [IPU1-0] 2045.252302 s: i2cMdSubmitChan: i2c4 transfer to slave address 0x40 failed
    [IPU1-0] 2045.252424 s: src/bsp_deviceI2c.c @ Line 667:
    [IPU1-0] 2045.252516 s: I2C4: DEV 0x40: ERROR !!!
    [IPU1-0] 2045.252607 s: src/bsp_deviceI2c.c @ Line 689:
    [IPU1-0] 2045.252699 s: I2C4: Error timeout 1 ms!!!
    [IPU1-0] 2045.252790 s: radar_ar12xx/src/bspdrv_ar12xxPriv.c @ Line 121:
    [IPU1-0] 2045.252851 s: AR12XX: Radar Device Power On failed!!
    [IPU1-0] 2045.252943 s: Assertion @ Line: 273 in C:/PROCESSOR_SDK_VISION_03_04_00_00/vision_sdk/apps/src/rtos/radar/src/common/chains_common_ar12xx.c: SYSTEM_LINK_STATUS_SOK == retVal : failed !!!
    [IPU1-0] 2045.253766 s: Assertion @ Line: 273 in C:/PROCESSOR_SDK_VISION_03_04_00_00/vision_sdk/apps/src/rtos/radar/src/common/chains_common_ar12xx.c: SYSTEM_LINK_STATUS_SOK == retVal : failed !!!

    --------------------

    I will try implementing the GPIO workaround, it seems doable. 

    Currently I don't have any plans to build my own TDA board. 

    Is there a TDA platform available that would support 4x AWR1243 operating at their maximum throughput? 

    The radar configuration I plan to use is 4x AWR1243, 2 transmitters and 4 receivers on each, in CDMA mode. 

    Thanks,

    Richard 

  • Could you try 2G mode, instead of 4G mode?
    I think we will launch the Cascade radar with TDA2x EVM design in 4Q18 or 1Q19, which will support the max throughput.

    Regards,
    Stanley
  • Hi Stanley,

    I tried 2G mode, but it gives the same error.
    Is there some way I can be notified when the cascade radar with TDA2x EVM design is launched, such as a newsletter or mailing list?

    Thanks,
    Richard
  • Hi Richard,

    Could you confirm again one radar was working when running camera+radar combo use case?

    If that works, can you try 1 radar option with radar only use case first?

    The Cascade board will be launched on ti.com once it is available.

    Regards,
    Stanley

  • Hi Stanley, 

    Yes, any individual radar works when running the camera + radar combo usecase. 

    When I try the 1 radar option with the radar only usecase, I get the same i2c transfer error. 

    Thanks,

    Richard 

  • Hi Richard,

    Could you check if UB960 and UB953 registers are configured differently somehow between camera+radar combo vs radar only use cases?
    They should be set up the same way for radar.

    Regards,
    Stanley
  • Hi Stanley,

    I have verified that the UB960 and UB953 registers are configured the same between the combo and radar only usecases.

    Thanks,
    Richard
  • Hi Richard,

    The i2c errors to 0x74, 0x76, 0x78, 07A indicate UB960 is having problem to talk to UB953.
    Could you check if UB953 is powered correctly? It is possible that the link between UB960 and UB953 is unstable.
    You can refer to UB960 datasheet for registers which indicate error on back channel or lock status.

    Regards,
    Stanley
  • Hi Stanley, 

    When I run the camera and radar combo usecase, the 960 is able to talk to the 953s, set up the camera, and download firmware onto the AWR1243 no problem. In this case, I have the camera connected to port 0 of the camera bank and one of the four AWR1243s on my custom board connected to port 1 of the camera bank. 

    When I run the radar only usecase, I have the four ports of the camera bank connected to the four AWR1243s on my custom board. There are no other hardware differences between when I run the two usecases. I have also tried connecting to the radar bank instead, but there is no improvement.   

    Thanks,

    Richard 

  • Hi Richard,

    The "radar bank" is not supported in the use case.

    Have you tried connecting only one AWR1243 to port 0 of the "camera bank"? Select "1" radar and "2G" option with the radar only use case.

    Regards,
    Stanley
  • Hi Stanley, 

    When I updated to Vision SDK v.3.05, and connected one AWR1243 to port 0 of the camera bank, the radar only usecase now runs. However, when I connect two AWR1243s to port 0 and port 1, the master initializes and downloads firmware correctly, but the slave 1 fails on "Radar Slave Device Power On failed". I assumed this meant the initial reset assert and read back of interrupt wasn't happening correctly for slave 1. But when I probe the reset and IRQ signals on the slave 1, they are are being successfully asserted, the same way that the master signals behaved. Since both the master and the slave 1 interrupt are read in from GPIO7_9 on the TDA2PXEVM, is there some muxing that needs to be done for the slave 1 interrupt to be read correctly? 

    Thanks,

    Richard 

  • Hi Richard,

    Good progress. It is expected to see Port 1 failed power-on check because the HOST_IRQ/SPI_INT pin from the second AWR1243 is not routed to TDA2P.
    You need to implement the HW mod to route the pin from AWR1243 to another GPIO pin on TDA2P (can't be GPIO7_9).
    Once that's done, you should modify the code to assign the new GPIO to port1 accordingly.

    Regards,
    Stanley
  • Hi Stanley,

    For routing the pin from the second AWR1243 to the TDA2P, would this still be routed through the UB953 and UB960? Or are you talking about directly connecting the HOST_IRQ to a GPIO pin on the TDA2P?

    For assigning the new GPIO to port 1, would this just be in the "boardId == BSP_BOARD_VISION" branch of ChainsCommon_ar12xxInit()?

    How can I tell which GPIOs are open to be reassigned? For example, would GPIO7_7 work?

    Thanks,
    Richard
  • Hi Richard,

    It should go to UB953 (which, I assume, is already done) and then from GPIO pins on UB960 to TDA2P.
    You can use one of the pin on TDA2P GPMC interface and change the pinmux to GPIO.
    From TDA2P EVM schematics, you will find GPMC interface is used for NAND flash and NOR flash.
    We usually don't use either one of them since we boot from SD card.
    You can pick the GPMC pins from there and connect them to UB960 GPIO pins.

    Yes. You will need to add pinmux configuration and the GPIO assignment under "boardId == BSP_BOARD_VISION".

    Regards,
    Stanley
  • Hi Stanley, 

    I chose GPIO7_3 from the GPMC interface and added its pinmux configuration and GPIO assignment. I also added a register setting in gUb960Cfg_D3AR1243 to output the received HOST_IRQ from port 1 (AWR1243 slave 1) to GPIO5. I then wired together GPIO5 on the UB960 to GPIO7_3 on the TDA2P. However, this causes the firmware for the AWR1243 master to fail to download. When I remove the additional register setting from gUb960Cfg_D3AR1243, the master firmware downloads succeeds. My question is, how can I route the HOST_IRQ from slave 1 without modifying gUb960Cfg_D3AR1243? Or is there some other GPIO on the UB960 that already outputs the HOST_IRQ from slave 1, which I would connect to GPIO7_3 on the TDA2P? 

    Thanks,

    Richard  

  • Hi Richard,

    I expect the change to be

    ...
    #ifdef BOARD_TYPE_TDA3XX_RVP
    {0x10, 0x41, UB960_REG_DELAY_TIME}, /*GPIO 0 - Output received GPIO 2 (HST_INT) from Port 0*/
    {0x11, 0x45, UB960_REG_DELAY_TIME}, /*GPIO 1 - Output received GPIO 2 (HST_INT) from Port 1*/
    {0x12, 0x49, UB960_REG_DELAY_TIME}, /*GPIO 2 - Output received GPIO 2 (HST_INT) from Port 2*/
    {0x13, 0x4D, UB960_REG_DELAY_TIME}, /*GPIO 3 - Output received GPIO 2 (HST_INT) from Port 3*/
    #else
    {0x14, 0x41, UB960_REG_DELAY_TIME}, /*GPIO 4 - Output received GPIO 2 (HST_INT) from Port 0*/
    {0x15, 0x45, UB960_REG_DELAY_TIME}, /*GPIO 5 - Output received GPIO 2 (HST_INT) from Port 1*/
    #endif
    ...

    So, port 1 for 2nd radar will use GPIO[5] and port 0 for the master will use GPIO[4].
    0x15 is UB960 GPIO5_PIN_CTL register address. Value 0x45 means (Received GPIO2 from Port 1 | Output Enabled).
    UB960 datasheet has the register definition details.

    Regards,
    Stanley
  • Hi Stanley, 

    Your suggested change is in fact exactly the change I had implemented: 

    However, when I load and run this code, the firmware download to the master AWR1243 silently fails partway. When the 0x15 register setting is commented out, the master firmware download succeeds, and the slave 1 AWR1243 initialization fails on "Radar Slave Device Power On failed". My code for setting up GPIO7_3 on the TDA2P is attached, in case it is somehow interfering with the master firmware download? 

    7103.chains_common_ar12xx.c

    Thanks,

    Richard 

  • The code change looks good to me. Could you double check the HW mod? Maybe GPIO[4] & GPIO[5] were short on UB960 side.
  • Hi Stanley, 

    I have verified the hardware mod, turns out there was a small short. With the UB960 GPIO5 config, now the master firmware download succeeds, but the slave radar device power on still fails. So the behavior is the same as before adding the UB960 GPIO5 setup code, TDA2P GPIO7_3 setup code, and the jumper from the UB960 to the TDA2P.  

    Thanks,

    Richard 

  • Hi Stanley,

    I did an allclean and rebuild of the code, and now both the master and slave firmware download and initialization succeed. However, there is no longer any object detection when a place large metal plate in front of my radar board. For the original 1 radar case, this metal plate was readily detected.

    Thanks,
    Richard
  • Hi Richard,

    In this use case, Radar data from each device is marked with different channel number.
    You can modify the use case so only the data captured from the specific radar will be processed and displayed. This will help you to isolate the problem.
    Could you refer to another use case "multi_radar_capture_fft_display"?
    In this use case, there is a select link in the data flow which will be used to select which channel to pass the data to algorithm and output to display.

    BTW, are you using the customer cascade radar board in cascade mode? The radar processing chain you are using is meant for single radar processing, not for cascade, and each radar is processed independently as single radar. For cascade, the use case case configuration and radar data processing will be different. You have to refer to cascade radar use case.

    Regards,
    Stanley
  • Hi Stanley, 

    When I run the Vision SDK, the only radar usecase that comes up is "radar_objectdetect_display". How can I get the "multi_radar_capture_fft_display" to also show up? 

    I am using a custom cascade radar board with 4 AWR1243 and 4 UB953. Similarly, how can I get the "cascade_radar_object_detect" use case to show up in the serial terminal? 

    Thanks,

    Richard

  • Hi Richard,

    To enable any use case, you have to modify ~\vision_sdk\apps\configs\tda2px_evm_bios_all\uc_cfg.mk.
    Add "UC_multi_radar_capture_fft_display=yes" to enable the use case. The same applies to cascade use case.

    Please refer to the uc_cfg.mk under "tda2xx_cascade_bios_radar" to see what are the use case available for cascade radar.

    However, in the SDK, cascade radar support is only validated for TDA2x cascade EVM. We have not verified the TDA2P EVM with cascade radar support. There may be some changes required in the build and use case to setup cascade use case on TDA2P EVM.

    In addition, for cascade, the master is the one to provide the sync clock to all slaves. Is that how you have designed the cascade board?

    Regards,
    Stanley
  • Hi Stanley,

    I modified the uc_cfg.mk file to include the cascade_radar_object_detect usecase. However, when I try to build this configuration, I get an unresolved symbol error for "Chains_ar12xxGetSampleCascadeConfig". I have verified that the function is declared in chains_radar.h and defined in chains_common_cascade_ar12xx_config.c, so I'm not sure why there is an unresolved symbol error.

    As for our cascade board, yes, all the slaves are clocked off the master.

    Thanks,
    Richard
  • Hi Stanley, 

    I looked into the Chains_ar12xxGetSampleCascadeConfig function and found that it does setup of FPGAs. However, our custom cascade board does not have any FPGAs, it just has four AWR1243, four UB953, and the associated supporting circuitry. Is it possible to modify the cascade usecase to run on the TDA2PXEVM + fusion application board + FPGA-less cascade board? 

    Thanks,

    Richard 

  • Hi Richard,

    Please skip any FPGA related code since it is not applicable on your board. TI Cascade EVM uses FPGA to convert CSI2 signals from AWR1243 to parallel to TDA2 VIP ports.

    The radar device initialization sequence should still follow FPD-Link connection type for your HW.
    For radar configuration and data processing, that should follow cascade radar use case.

    Regards,
    Stanley
  • Hi Stanley, 

    I have replaced the call to Chains_ar12xxgetsamplecascadeconfig with Chains_ar12xxgetsampleconfig, since that is the non-FPGA version. The usecase builds now, but when I run it, the behavior is inconsistent. Sometimes, there is the "i2c4 transfer to slave address 0x76" error. Other times, the radar device is detected, but radar device power on fails. Still other times, the firmware is downloaded successfully, but there is a "core control: set max frame size failed" error. 

    Is there other FPGA code that I need to skip? If not, what might be causing this inconsistent behavior? 

    Thanks,

    Richard 

  • Hi Richard,

    For cascade radar configuration, you have to call Chains_ar12xxgetsamplecascadeconfig() or create your own configuration using this function as example. You just need to skip the FPGA part of configuration. Chains_ar12xxgetsampleconfig() is intended for single radar configuration, not for cascade.

    Just want to make sure you understand the difference.

    As for the inconsistency, it could be FPD-Link hardware related. We had problem with D3 radar module when using Power over cable so we have to use external power supply for the radar module. And, we also had problem when using 4Gbps mode on UB960 when connecting to multiple radars.

    The behavior is the UB960 sometimes loses lock on FPD-Link and GPIO line would toggle. This causes a problem on Host side since an interrupt would be triggered when GPIO toggles. When servicing interrupt, Host will try to read command from AWR1243 but AWR1243 is not sending any command to Host and it will generate I2C errors.

    Unfortunately, for FPD-Link connection issue, you will have to contact our FPD-Link team for support since this forum is for TDAx processor only. 

    Regards,
    Stanley 

  • Hi Stanley,

    I put the call to Chains_ar12xxgetsamplecascadeconfig() back, and commented out the calls to ChainsCommon_FPGAPowerUp() and ChainsCommon_FPGAStart().

    I then modified the SRC_FILES.MK file to include chains_common_cascade_ar12xx_config.c, this solved the unresolved symbol error for "chains_ar12xxgetsamplecascadeconfig".

    Next, I enabled the sections of code dependent on BSP_AR12XX_CONN_TYPE_FPDLINK in chains_common_ar12xx.c, which allowed me to choose 2 Gbps mode when running the usecase.

    At this point, I was able to successfully download firmware to the master AWR1243. However, when the usecase tries to set up the first slave AWR1243, I get "i2c4 transfer to slave address 0x00 failed" and "Radar Slave Device Power On Failed" errors. The return value from rlDeviceAddDevices() is -4, indicating that the i2c device is in use.

    Could the errors be due to the i2c address used, which should be 0x42 instead of 0x00 for slave 1? If so, where would I be able to change this address?

    Thanks,
    Richard
  • Hi Richard,

    I2C address is configured in gAr12xx_initParams.devParams[i].i2cDevAddr, where i = 0 ~ 3.

    This should be configured in ChainsCommon_ar12xxInit(). Please check if they are configured properly.

    Regards,
    Stanley

  • Hi Stanley,

    I have modified the branching logic in ChainsCommon_ar12xxInit() so that the correct i2c addresses of 0x40, 0x42, 0x44, and 0x46 are set. Previously only the first address had been set to 0x40 and the rest had been incorrectly set to 0x0.

    Now the i2c address error has been resolved, but the code never returns from rlDeviceAddDevices(). Is it possible for this function to run indefinitely trying to add the devices? Also, I have only done the HW/SW HOST_IRQ mod for slave 1, does the mod need to be done for all slaves for rlDeviceAddDevices to execute successfully?

    Thanks,
    Richard
  • Hi Richard,

    You need to have the HOST_IRQ mod for all slaves. Otherwise, it will get stuck waiting.

    Regards,
    Stanley
  • Hi Stanley, 

    After adding the HOST_IRQ mod for all the slaves, the cascade usecase gets through 2 iterations of firmware downloads, configuring the radar parameters, and booting the AWR1243s. However, it fails on checking for the EVE4 processor. 

    The TDA2Px board I am using only has EVE1 and EVE2, but it seems like the cascade usecase expects to use EVE3 and EVE4 as well (shows up as a compile warning). Is there some way to retool the usecase to run when only EVE1 and EVE2 are available? 

    Thanks,

    Richard

  • Hi Richard,

    Yes, there are only 2 EVEs on TDA2Px vs 4 on TDA2x so the use case needs to be modified again.
    The range FFT is done in EVE for each radar on TDA2 and then the output from each EVE is combined to be processed together for the rest of radar dsp processing.
    Please refer to chapter 4 in ~/vision_sdk/docs/Radar/ProcessorSDKRadar_DataSheet.pdf for the detail processing flow and data arrangement.

    You can try changing the select link to have the data from first 2 radars going to EVE1 and the data from the last 2 radars going to EVE2.

    Regards,
    Stanley
  • Hi Stanley,

    After modifying the WorkQCPUId values for the usecase, I was able to get it to successfully run.

    Now I'm trying to run the Matlab (with the instrument control toolbox) script for the cascade usecase. When I run the script after the usecase is already running, Matlab gives me an "Unsuccessful open: connection refused" error.

    When I ping the TDA2 from CMD, it responds, but I try to open a telnet connection, it fails. How might I resolve this TCP/IP error?

    Thanks,
    Richard

  • Hi Stanley, 

    I still have not been able to resolve this connection error, would it be possible to get some advice on it?

    I have tried disabling the firewall on my PC, but that didn't improve things. I have been able to save radar data over TCP/IP when running single radar usecases. 

    Thanks,

    Richard

  • Hi Richard,

    Sorry for the late response.

    When you run the script in matlab, please make sure you have the correct IP address for PC and EVM as well as the MAC address for PC. They are the input arguments provided to the function in matlab.

    Regards,
    Stanley
  • Hi Stanley, 

    Thanks for coming back to this thread, I appreciate it greatly. 

    I have verified the IP addresses for PC and EVM as well as the PC MAC address. I have also tried the Network_Rx tool instead of the Matlab script, but it also fails to open the connection. Here is the log from Wireshark when I run the Matlab script: 

    As far as I can tell, the PC is trying to open a connection, but the EVM is rejecting it? Other than that, I'm not really sure what to make of this. 

    Attached is the serial output when running the cascade usecase for reference.

    Cascade Serial.txt
    [IPU1-0]     98.424815 s:  CHAINS: UB960 is configured for 2Gbps Mode
    [IPU1-0]     98.424998 s: Using gUb960Cfg_D3AR1243 and gUB953SerCfg
    [IPU1-0]     98.425089 s: Using AR12xx
    [IPU1-0]     98.425333 s: Detected UB960 !!!
    [IPU1-0]    106.605685 s: Port 0 done
    [IPU1-0]    106.662721 s:  AR12XX: ES2.0 Device detected!!
    [IPU1-0]    106.662813 s:  AR12XX: Firmware Download Started : Ftype: MSS_BUILD
    [IPU1-0]    170.623589 s:  AR12XX: Firmware Download Successful : Ftype: MSS_BUILD
    [IPU1-0]    170.623741 s:  AR12XX: Firmware Download Started : Ftype: BSS_BUILD
    [IPU1-0]    299.182913 s:  AR12XX: Firmware Download Successful : Ftype: BSS_BUILD
    [IPU1-0]    299.183035 s:  AR12XX: Firmware Download Started : Ftype: CONFIG_INFO
    [IPU1-0]    299.279967 s:  AR12XX: Firmware Download Successful : Ftype: CONFIG_INFO
    [IPU1-0]    299.492923 s:  AR12XX: ES2.0 Device detected!!
    [IPU1-0]    299.533947 s: retVal is: 0
    [IPU1-0]    301.635942 s: Port 1 done
    [IPU1-0]    303.737997 s: Port 2 done
    [IPU1-0]    305.840145 s: Port 3 done
    [IPU1-0]    305.840236 s: retVal is: 0
    [IPU1-0]    305.840328 s: retVal is: 0
    [IPU1-0]    305.840419 s: retVal is: 0
    [IPU1-0]    305.840480 s:  AR12XX: Firmware Download Started : Ftype: MSS_BUILD
    [IPU1-0]    494.079149 s:  AR12XX: Firmware Download Successful : Ftype: MSS_BUILD
    [IPU1-0]    494.079302 s:  AR12XX: Firmware Download Started : Ftype: BSS_BUILD
    [IPU1-0]    870.590343 s:  AR12XX: Firmware Download Successful : Ftype: BSS_BUILD
    [IPU1-0]    870.590465 s:  AR12XX: Firmware Download Started : Ftype: CONFIG_INFO
    [IPU1-0]    870.881321 s:  AR12XX: Firmware Download Successful : Ftype: CONFIG_INFO
    [IPU1-0]    871.621393 s:  AWR12XX: Version Master : 1.10.0.23
    [IPU1-0]    871.621515 s:  AWR12XX: Version RF:2.0.0.15
    [IPU1-0]    871.621606 s:  AWR12XX: Version mmWaveLink:1.2.0.0
    [IPU1-0]    871.621698 s:  AWR12XX: Version Master Patch[dd.mm.yy]:78.224.4
    [IPU1-0]    871.621820 s:  AWR12XX: Version RF Patch[dd.mm.yy]:0.0.0
    [IPU1-0]    871.779357 s:  CHAINS: Config AR12xx ...
    [IPU1-0]    871.779418 s:  CHAINS: Configuring the parameters for Normal Frame for Radar Number 1
    [IPU1-0]    871.779540 s:  CHAINS: Configuring the parameters for Normal Frame for Radar Number 2
    [IPU1-0]    871.779631 s:  CHAINS: Configuring the parameters for Normal Frame for Radar Number 3
    [IPU1-0]    871.779723 s:  CHAINS: Configuring the parameters for Normal Frame for Radar Number 4
    [IPU1-0]    872.170408 s:  AWR12XX: RF Boot Status = 0xb
    [IPU1-0]    872.170469 s:  AWR12XX: RF Boot Time = 4487 us
    [IPU1-0]    873.361434 s:  AWR12XX: RF Boot Status = 0xb
    [IPU1-0]    873.361495 s:  AWR12XX: RF Boot Time = 4435 us
    [IPU1-0]    874.447599 s:  AWR12XX: RF Boot Status = 0xb
    [IPU1-0]    874.447691 s:  AWR12XX: RF Boot Time = 4436 us
    [IPU1-0]    875.545568 s:  AWR12XX: RF Boot Status = 0xb
    [IPU1-0]    875.545659 s:  AWR12XX: RF Boot Time = 4434 us
    [IPU1-0]    876.312785 s:  CHAINS: Init AR12xx ... DONE !!!
    [IPU1-0]    876.339596 s: FILE_IO: Calibration file(calib_coef.bin) is NOT present in sd card! Used built-in coefficients!
    [IPU1-0]    876.339748 s: Chains: Using TCP/IP
    [IPU1-0]    876.339840 s:  CAPTURE: Create in progress !!!
    [IPU1-0]    876.340053 s:  CAPTURE: VIP1 Slice1 PortA capture mode is [16-bit] !!!
    [IPU1-0]    876.520557 s:  CAPTURE: VIP2 Slice0 PortA capture mode is [16-bit] !!!
    [IPU1-0]    876.700939 s:  CAPTURE: VIP2 Slice1 PortA capture mode is [16-bit] !!!
    [IPU1-0]    876.881412 s:  CAPTURE: VIP1 Slice0 PortA capture mode is [16-bit] !!!
    [IPU1-0]    877.061947 s:  CAPTURE: Create Done !!!
    [IPU1-0]    877.062313 s: Create link command
    [IPU1-0]    877.062557 s: Creating output queue
    [IPU1-0]    877.062648 s:  SELECT: OUT QUE0: OUT CH0: IN CH0: 2048 x 512, pitch = (4096, 0)
    [IPU1-0]    877.062831 s: Creating output queue
    [IPU1-0]    877.062862 s:  SELECT: OUT QUE1: OUT CH0: IN CH1: 2048 x 512, pitch = (4096, 0)
    [IPU1-0]    877.063045 s: Creating output queue
    [IPU1-0]    877.063106 s:  SELECT: OUT QUE2: OUT CH0: IN CH2: 2048 x 512, pitch = (4096, 0)
    [IPU1-0]    877.063289 s: Creating output queue
    [IPU1-0]    877.063350 s:  SELECT: OUT QUE3: OUT CH0: IN CH3: 2048 x 512, pitch = (4096, 0)
    [IPU1-0]    877.063563 s:  ALGORITHM: Create in progress (algId = 8) !!!
    [IPU1-0]    877.787500 s:  ALG: ti.radar.fft: CH0 BUF0: 0x8b108c00 ( 2097152 B )
    [IPU1-0]    877.818733 s:  ALG: ti.radar.fft: CH0 BUF1: 0x8b308e00 ( 2097152 B )
    [IPU1-0]    877.849905 s:  ALG: ti.radar.fft: CH0 BUF2: 0x8b509000 ( 2097152 B )
    [IPU1-0]    877.881107 s:  ALG: ti.radar.fft: CH0 BUF3: 0x8b709200 ( 2097152 B )
    [IPU1-0]    877.881412 s:  ALGORITHM: Create Done (algId = 8) !!!
    [IPU1-0]    877.881961 s:  ALGORITHM: Create in progress (algId = 8) !!!
    [IPU1-0]    878.605532 s:  ALG: ti.radar.fft: CH0 BUF0: 0x8b90f000 ( 2097152 B )
    [IPU1-0]    878.636948 s:  ALG: ti.radar.fft: CH0 BUF1: 0x8bb0f200 ( 2097152 B )
    [IPU1-0]    878.668181 s:  ALG: ti.radar.fft: CH0 BUF2: 0x8bd0f400 ( 2097152 B )
    [IPU1-0]    878.699414 s:  ALG: ti.radar.fft: CH0 BUF3: 0x8bf0f600 ( 2097152 B )
    [IPU1-0]    878.699780 s:  ALGORITHM: Create Done (algId = 8) !!!
    [IPU1-0]    878.700115 s:  ALGORITHM: Create in progress (algId = 8) !!!
    [IPU1-0]    879.422222 s:  ALG: ti.radar.fft: CH0 BUF0: 0x8c115400 ( 2097152 B )
    [IPU1-0]    879.453547 s:  ALG: ti.radar.fft: CH0 BUF1: 0x8c315600 ( 2097152 B )
    [IPU1-0]    879.484780 s:  ALG: ti.radar.fft: CH0 BUF2: 0x8c515800 ( 2097152 B )
    [IPU1-0]    879.516043 s:  ALG: ti.radar.fft: CH0 BUF3: 0x8c715a00 ( 2097152 B )
    [IPU1-0]    879.516317 s:  ALGORITHM: Create Done (algId = 8) !!!
    [IPU1-0]    879.516897 s:  ALGORITHM: Create in progress (algId = 8) !!!
    [IPU1-0]    880.238424 s:  ALG: ti.radar.fft: CH0 BUF0: 0x8c91b800 ( 2097152 B )
    [IPU1-0]    880.269749 s:  ALG: ti.radar.fft: CH0 BUF1: 0x8cb1ba00 ( 2097152 B )
    [IPU1-0]    880.301012 s:  ALG: ti.radar.fft: CH0 BUF2: 0x8cd1bc00 ( 2097152 B )
    [IPU1-0]    880.332428 s:  ALG: ti.radar.fft: CH0 BUF3: 0x8cf1be00 ( 2097152 B )
    [IPU1-0]    880.332794 s:  ALGORITHM: Create Done (algId = 8) !!!
    [IPU1-0]    880.334167 s:  IPC_OUT_0   : Create in progress !!!
    [IPU1-0]    880.334472 s:  IPC_OUT_0   : Create Done !!!
    [IPU1-0]    880.372018 s:  SYSTEM: SW Message Box Msg Pool, Free Msg Count = 1023
    [IPU1-0]    880.372140 s:  SYSTEM: Heap = LOCAL_DDR            @ 0x00000000, Total size = 262144 B (256 KB), Free size = 156560 B (152 KB)
    [IPU1-0]    880.372293 s:  SYSTEM: Heap = SR_OCMC              @ 0x00000000, Total size = 0 B (0 KB), Free size = 0 B (0 KB)
    [IPU1-0]    880.372506 s:  SYSTEM: Heap = SR_DDR_CACHED        @ 0x88103000, Total size = 368037888 B (350 MB), Free size = 265179136 B (252 MB)
    [IPU1-0]    880.372720 s:  SYSTEM: Heap = SR_DDR_NON_CACHED    @ 0xbfc00000, Total size = 128128 B (0 MB), Free size = 112000 B (0 MB)
    [IPU1-0]    880.376715 s:  CHAINS: AR12xx Starting Radar Sensor ...
    [IPU1-1]    880.370127 s:  IPC_IN_0   : Create in progress !!!
    [IPU1-1]    880.371012 s:  IPC_IN_0   : Create Done !!!
    [IPU1-1]    880.371652 s:  NETWORK_TX: NETWORK_TX: Server listening (port=29172) !!!
    [IPU1-1]    880.373086 s:  SYSTEM: SW Message Box Msg Pool, Free Msg Count = 1023
    [IPU1-1]    880.373208 s:  SYSTEM: Heap = LOCAL_DDR            @ 0x00000000, Total size = 655360 B (640 KB), Free size = 646208 B (631 KB)
    [HOST  ]    880.373543 s:  SYSTEM: SW Message Box Msg Pool, Free Msg Count = 1023
    [HOST  ]    880.373574 s:  SYSTEM: Heap = LOCAL_DDR            @ 0x00000000, Total size = 6291456 B (6144 KB), Free size = 6250528 B (6104 KB)
    [DSP1  ]    880.334716 s:  IPC_IN_0   : Create in progress !!!
    [DSP1  ]    880.335051 s:  IPC_IN_0   : Create Done !!!
    [DSP1  ]    880.335387 s:  ALGORITHM: Create in progress (algId = 11) !!!
    [DSP1  ]    880.366619 s:  ALG: ti.radar.dspprocess: CH0 BUF0: 0x8e12c000 ( 675616 B )
    [DSP1  ]    880.368083 s:  ALG: ti.radar.dspprocess: CH0 BUF1: 0x8e1d1000 ( 675616 B )
    [DSP1  ]    880.369456 s:  ALG: ti.radar.dspprocess: CH0 BUF2: 0x8e276000 ( 675616 B )
    [DSP1  ]    880.369517 s:  ALGORITHM: Create Done (algId = 11) !!!
    [DSP1  ]    880.369883 s:  IPC_OUT_0   : Create in progress !!!
    [DSP1  ]    880.369944 s:  IPC_OUT_0   : Create Done !!!
    [DSP1  ]    880.373665 s:  SYSTEM: SW Message Box Msg Pool, Free Msg Count = 1023
    [DSP1  ]    880.373696 s:  SYSTEM: Heap = LOCAL_L2             @ 0x00800000, Total size = 227264 B (221 KB), Free size = 148928 B (145 KB)
    [DSP1  ]    880.373726 s:  SYSTEM: Heap = LOCAL_DDR            @ 0x00000000, Total size = 524288 B (512 KB), Free size = 492272 B (480 KB)
    [DSP2  ]    880.373848 s:  SYSTEM: SW Message Box Msg Pool, Free Msg Count = 1023
    [DSP2  ]    880.373879 s:  SYSTEM: Heap = LOCAL_L2             @ 0x00800000, Total size = 227264 B (221 KB), Free size = 227264 B (221 KB)
    [DSP2  ]    880.373909 s:  SYSTEM: Heap = LOCAL_DDR            @ 0x00000000, Total size = 524288 B (512 KB), Free size = 517352 B (505 KB)
    [EVE1  ]    880.374184 s:  SYSTEM: SW Message Box Msg Pool, Free Msg Count = 1023
    [EVE1  ]    880.374397 s:  SYSTEM: Heap = LOCAL_L2             @ 0x40020000, Total size = 22528 B (22 KB), Free size = 18304 B (17 KB)
    [EVE1  ]    880.374794 s:  SYSTEM: Heap = LOCAL_DDR            @ 0x00000000, Total size = 262144 B (256 KB), Free size = 254792 B (248 KB)
    [EVE2  ]    880.375465 s:  SYSTEM: SW Message Box Msg Pool, Free Msg Count = 1023
    [EVE2  ]    880.375709 s:  SYSTEM: Heap = LOCAL_L2             @ 0x40020000, Total size = 22528 B (22 KB), Free size = 18304 B (17 KB)
    [EVE2  ]    880.376105 s:  SYSTEM: Heap = LOCAL_DDR            @ 0x00000000, Total size = 262144 B (256 KB), Free size = 254792 B (248 KB)
    [IPU1-0]    880.629567 s:  CHAINS: AR12xx Starting Radar Sensor ... DONE !!!
    [IPU1-0]    881.030897 s:  CAPTURE: Start in progress !!!
    [IPU1-0]    881.038766 s:  CAPTURE: Start Done !!!
    [IPU1-0]    881.040047 s:

    Thanks,

    Richard

  • Richard,

    Do you see "run-time" menu after "CAPTURE: Start Done !!!"? Is that the last trace you see from serial output?

    Regards,
    Stanley
  • Hi Stanley, 

    Yes, the runtime menu does come up after "CAPTURE: Start Done!!!".

    Thanks,

    Richard

  • Hi Richard,

    I suggest to focus on the network_rx tool first. Once this work, you can then move to matlab.

    With network_rx tool, did you enable TFDTP option? Please add "--usetfdtp --verbose" option and share the log on PC side.

    Regards,
    Stanley

  • Hi Stanley, 

    With the network_rx tool, I had been using the TCP/IP option. 

    Below is the CMD log for the "--usetfdtp --verbose" option: 

    This was run after the serial output from the EVM reached the runtime menu. 

    Thanks,

    Richard 

  • Hi Stanley,

    After changing NDK_PROC_TO_USE to ipu1_1 in the cfg.mk file, I was able to open the network connection using the Matlab script: 

      

    However, after the connection is opened, the Matlab plots don't get updated with real-time data. I'm also able to connect with both the network_rx tool and Putty, but in either case, there is no output or data that comes back. 

    Thanks,

    Richard

  • Hi Stanley, 

    I've gotten the cascade capture only usecase to run as well, but it behaves the same as the cascade object detection usecase, i.e., I can connect to the EVM over ethernet, but no data is output. 

    Also, is there a difference between running the network link on the ipu1_1 and the a15, other than bandwidth limitations? 

    Thanks,

    Richard

  • Hi Richard,

    Sorry I just got back from vacation.

    Could you check one thing on the board?

    When the use case is running, hit 'p' from console to print performance stat.

    Please share the log from the console. We need to see if Capture Link or Network Link is outputting data at the proper frame rate.

    Regards,
    Stanley