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/AWR1642: Programming .bin files to flash without CCSv7?

Part Number: AWR1642
Other Parts Discussed in Thread: UNIFLASH, SYSBIOS

Tool/software: Code Composer Studio

We are using the AWR1642 development platform and have been able to compile and run the MMWave demo source under Debug Mode (per the document "xWR16xx_mmw_user_guide.pdf" that came with the SDK).  We are running that source on the board through CCSv7 on a PC.

For reference, I am looking at section 4.1 "Preparing the EVM".

However, we would also like to run things in "Deployment Mode" by flashing the binaries to the board so that we can run without CCS or the PC.

But when we use the Uniflash tool to program the .bin that has been created by CCS onto our development board so that it can run standalone from the PC, we are unable to establish communication with the development board, as though the board had not been programmed properly.

What is the proper procedure for Deployment Mode, to program the QSPI with a .bin that has been built in CCS?

Thanks in advance,

Joe Shidle

  • For convenience, the document that I was referring to is here.

    5758.xWR16xx_mmw_user_guide.pdf

  • Hello Joe,

    For Deployment mode the bin file created via the compile steps would be flashed to onboard flash-memory.

    In case of AWR1642 device there would be one .bin file created during compile which goes the flash. On the pdf you referred to Page 13 shows that bin file.

    To make sure the flashing steps are working correctly can you please try the .bin file which is available as part of the mmWave demo under mmWave SDK installation.

    Typical path would be:

    "C:\ti\mmwave_sdk_01_00_00_05\packages\ti\demo\xwr16xx\mmw\xwr16xx_mmw_demo.bin"

    Once you confirm the above bin file allows you to run the demo gui then we can look into why the bin file created by you locally is not working.

    Thank you,

    Vaibhav

  • Vaibhav;

    Thank you for the response.

    Using Uniflash tool v4.1.2.1329, I was able to flash the .bin found in
    C:\ti\mmwave_sdk_01_00_00_05\packages\ti\demo\xwr16xx\mmw\xwr16xx_mmw_demo.bin

    The mmWave Demo GUI worked as expected with this binary.

    I then programmed the .bin which I compiled, located at
    <workspace_dir>\mmw\Debug\xwr16xx_mmw.bin>

    After successfully programming the .bin and switching jumpers to deployment mode, the development board is non-reponsive over UART. This same code functions normally when downloading and debugging with CCS v7.1.0.00016

    One difference we noticed was the size of the binaries.

    The working .bin that came with the MMWave SDK, "xwr16xx_mmw_demo.bin" is 403KB

    The non-working .bin which I compiled, "xwr16xx_mmw.bin" is 236KB when I would expect them to contain similar amounts of code. Maybe not the exact size, but somewhere close. This makes me think that either some library or code is missing, or the two binaries were compiled using different compile options (such as optimization options).

    Thanks in advance for your help,
    Joe Shidle
  • Hi Joe,

    The final flash-able .bin image for the 16xx mmw Demo CCS Project is xwr16xx_mmw_demo.bin which is mentioned on Page 14 of the user guide. Let me try to clarify the build flow for the 16xx mmW Demo CCS project below:

    1. You import two projectspecs, mmw.projectspec and mmw_dss.projectspec.
    2. First build the dss project. This generates the .xe674 and .bin for the DSS subsystem.
      1. The instructions on this page list the two files, .xe674 and .bin as outputs of a successful dss project build (since this .bin is needed later by the mss build to generate the multicore image) .
    3. Then build the mmw project.
      1. This generates the .xer4f and .bin for the mss subsystem.
      2. Then it combines the .bin for dss and .bin for mss into one multicore image. The final output file is xwr16xx_mmw.bin which is listed on page 14.

    Looking at your last response, I can see that you used the correct .bin file i.e. <workspace_dir>\mmw\Debug\xwr16xx_mmw.bin>. However, I'm not sure why the size of xwr16xx_mmw.bin from your build is 236 KB. Did you make any changes to the code or compilation options etc?

    I would request you to try the following:

    1. Delete the existing mmw and mmw_dss projects from your workspace (make sure you have the "delete contents on disk" option checked to physically delete the projects).

    2. Please ensure that you have downloaded the latest version of mmWave training i.e. mmWave Training v:1.2.1. and have the correct versions of the dependencies (SDK, SYSBIOS, Compiler toolchains, perl etc) as listed in the Pre-requisites section of xWR16xx_mmw_user_guide.pdf.

    3. Re-import the two projects i.e. mmw and mmw_dss and build per the order given above (which matches the order given in the user guide).

    For reference, I've provided the sizes of the intermediate and final .bin files and the final part of the build log (mmw project) from my bench.

    /mmw_dss/Debug/xwr16xx_mmw_dss.bin : 172,808 bytes
    /mmw/Debug/xwr16xx_mmw_mss.bin : 102,864 bytes
    /mmw/Debug/xwr16xx_mmw.bin : 412,100 bytes (402.44 KB)

    Trailing build log for mmw.projectspec

    ' '
    'Building target: xwr16xx_mmw_mss.xer4f'
    'Invoking: ARM Linker'
    "C:/ti/ccsv7/tools/compiler/ti-cgt-arm_16.9.3.LTS/bin/armcl" -mv7R4 --code_state=32 --float_support=VFPv3D16 -me -O3 --define=SOC_XWR16XX --define=SUBSYS_MSS --define=DOWNLOAD_FROM_CCS --define=DebugP_ASSERT_ENABLED -g --diag_warning=225 --diag_wrap=off --display_error_number --gen_func_subsections=on --enum_type=packed --abi=eabi -z -m"xwr16xx_mmw_mss.map" --heap_size=0x800 --stack_size=0x800 -i"C:/ti/mmwave_sdk_01_00_00_05/packages/ti/control/mmwave/lib" -i"C:/ti/mmwave_sdk_01_00_00_05/packages/ti/control/mmwavelink/lib" -i"C:/ti/mmwave_sdk_01_00_00_05/packages/ti/drivers/crc/lib" -i"C:/ti/mmwave_sdk_01_00_00_05/packages/ti/drivers/esm/lib" -i"C:/ti/mmwave_sdk_01_00_00_05/packages/ti/drivers/gpio/lib" -i"C:/ti/mmwave_sdk_01_00_00_05/packages/ti/drivers/mailbox/lib" -i"C:/ti/mmwave_sdk_01_00_00_05/packages/ti/drivers/osal/lib" -i"C:/ti/mmwave_sdk_01_00_00_05/packages/ti/drivers/pinmux/lib" -i"C:/ti/mmwave_sdk_01_00_00_05/packages/ti/drivers/soc/lib" -i"C:/ti/mmwave_sdk_01_00_00_05/packages/ti/drivers/uart/lib" -i"C:/ti/mmwave_sdk_01_00_00_05/packages/ti/utils/cli/lib" -i"C:/ti/ccsv7/tools/compiler/ti-cgt-arm_16.9.3.LTS/lib" -i"C:/ti/ccsv7/tools/compiler/ti-cgt-arm_16.9.3.LTS/include" --reread_libs --disable_auto_rts --diag_warning=225 --diag_wrap=off --display_error_number --warn_sections --xml_link_info="xwr16xx_mmw_mss_linkInfo.xml" --rom_model --unused_section_elimination=on -o "xwr16xx_mmw_mss.xer4f" "./cli.obj" "./mss_main.obj" "../mss_mmw_linker.cmd" "../r4f_linker.cmd" -l"configPkg/linker.cmd" -llibosal_xwr16xx.aer4f -llibesm_xwr16xx.aer4f -llibgpio_xwr16xx.aer4f -llibsoc_xwr16xx.aer4f -llibpinmux_xwr16xx.aer4f -llibcrc_xwr16xx.aer4f -llibuart_xwr16xx.aer4f -llibmailbox_xwr16xx.aer4f -llibmmwavelink_xwr16xx.aer4f -llibmmwave_xwr16xx.aer4f -llibcli_xwr16xx.aer4f -lrtsv7R4_T_le_v3D16_eabi.lib -llibc.a
    <Linking>
    'Finished building target: xwr16xx_mmw_mss.xer4f'
    ' '
    C:/ti/mmwave_sdk_01_00_00_05/packages/scripts/ImageCreator/xwr16xx/out2rprc/out2rprc.exe xwr16xx_mmw_mss.xer4f xwr16xx_mmw_mss.bin
    Parsing the input object file, xwr16xx_mmw_mss.xer4f.
    Appending zeros 0
    Appending zeros 256
    File conversion complete!
    C:/ti/mmwave_sdk_01_00_00_05/packages/scripts/ImageCreator/xwr16xx/multicore_image_generator/MulticoreImageGen.exe LE 37 0x01000005 xwr16xx_mmw.bin 0x35510000 xwr16xx_mmw_mss.bin 0xb5510000 C:/ti/mmwave_sdk_01_00_00_05/firmware/radarss/xwr16xx_radarss_rprc.bin 0xd5510000 C:/Users/nsakhuja/workspace_v7/mmw_dss/Debug/xwr16xx_mmw_dss.bin
    Number of Input Files 3
    Number of zeros 48
    Number of zeros 8
    Number of zeros 56

    C:/ti/mmwave_sdk_01_00_00_05/packages/scripts/ImageCreator/xwr16xx/crc_multicore_image/crc_multicore_image.exe xwr16xx_mmw.bin xwr16xx_mmw.bin.tmp
    size of App Image is 412096 bytes
    cur_crc_read_addr 128
    cur_crc_read_addr 103040
    cur_crc_read_addr 239232
    Failed to remove CRC temp file

    perl.exe C:/ti/mmwave_sdk_01_00_00_05/packages/scripts/ImageCreator/xwr16xx/append_bin_crc/gen_bincrc32.pl xwr16xx_mmw.bin
    >>>> Binary CRC32 = 33440762 <<<<
    >>>> Total bytes in binary file 412100 <<<<
    ' '

    Regards
    -Nitin

  • Nitin;

    Thanks for the response.

    Looking at your build script output, we have been able to find our issue. It appears that our xwr16xx_mmw_dss.bin is not being included because of an incorrect usage of WORKSPACE_LOC directing to the location of the .bin.

    The build output script does mention "unable to find" the xwr16xx_mmw_dss.bin, but there was not a warning or error that showed up in the "Problems" tab / window, so we did not realize that anything was wrong.

    With this change to our properties (Build -> Steps -> Post-build steps) we are able to build our binaries, they are of comparable size to the pre-build .bin that comes with the release from TI, and we are able to flash to the target device.

    Thank you very much for your help in working through this issue. Sometimes the smallest typos cause the largest problems!

    Regards,
    Joe Shidle
  • Joe,

    Glad to be of help. Post-build step errors are not captured and reflected in the Problem tab because these are "technically" not CCS or build errors. Post build steps are basically command line steps and are executed exactly how you would execute them on the OS shell.

    Any particular reason you had to modify the post build steps (unless you are adapting the project for your custom directory structure and build requirements)? Basically, we are interested in finding out if there is something we need to feed back to our user guide to improve it.

    Regards
    -Nitin
  • Nitin;

    Thank you for the response.

    In general we are interested in version control for our projects, so we had taken out various parts of the MMW source from the usual C:/ti/xxxx install locations to put them into a common location for more efficient use of version control for our pending projects. In moving around the source paths, we had made a small error.

    Thanks,
    Joe
  • Thanks Joe,

    I'm closing this thread. Please create a new post if you have further questions.

    Regards
    -Nitin