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.

LAUNCHXL-CC1352P: Needing an OAD Example

Part Number: LAUNCHXL-CC1352P
Other Parts Discussed in Thread: UNIFLASH

Dear Support:

I am trying to build a .hex file that is an OAD image of an already existing CCS project.  I am using CCSv9.1 and SDKv3.20 for the CC1352 and taking an existing example from the SDK (i.e., uart_echo) and adding the following to the post build steps:

${CG_TOOL_HEX} -order MS --memwidth=8 --romwidth=8 --intel -o ${ProjName}.hex ${ProjName}


${COM_TI_SIMPLELINK_CC13X2_26X2_SDK_INSTALL_DIR}/tools/common/oad/bin/win32/oad_image_tool --verbose ccs ${PROJECT_LOC} 0 -hex1 ${ConfigName}/${ProjName}.hex -o ${ConfigName}/${ProjName}

and upon building I am getting an error of the following:

C:/TI/ccs910/ccs/tools/compiler/ti-cgt-arm_18.12.3.LTS/bin/armhex -order MS --memwidth=8 --romwidth=8 --intel -o pwmled2_CC1352P1_LAUNCHXL_tirtos_ccs.hex pwmled2_CC1352P1_LAUNCHXL_tirtos_ccs
Translating to Intel format...
"pwmled2_CC1352P1_LAUNCHXL_tirtos_ccs.out" .resetVecs ==> .resetVecs
"pwmled2_CC1352P1_LAUNCHXL_tirtos_ccs.out" .text ==> .text
"pwmled2_CC1352P1_LAUNCHXL_tirtos_ccs.out" .const ==> .const
"pwmled2_CC1352P1_LAUNCHXL_tirtos_ccs.out" .cinit ==> .cinit
"pwmled2_CC1352P1_LAUNCHXL_tirtos_ccs.out" .ccfg ==> .ccfg
C:/TI/simplelink_cc13x2_26x2_sdk_3_20_00_68/tools/common/oad/bin/win32/oad_image_tool --verbose ccs C:/Projects/ccsv9/cc1352_sdk3_20/pwmled2_CC1352P1_LAUNCHXL_tirtos_ccs 0 -hex1 Debug/pwmled2_CC1352P1_LAUNCHXL_tirtos_ccs.hex -o Debug/pwmled2_CC1352P1_LAUNCHXL_tirtos_ccs
makefile:181: recipe for target 'post-build' failed
[112692] Failed to execute script oad_image_tool
Traceback (most recent call last):
File "oad_image_tool.py", line 539, in <module>
File "oad_image_tool.py", line 335, in main
Exception: Boundary file path and file name required!
gmake[2]: [post-build] Error -1 (ignored)

I don't have an application + stack file.  I assume I am selecting the right option of "0" for the binary file type, but not sure.  I am just needing to add all the OAD header stuff to an existing CCS project so I can burn it into on-chip FLASH or external SPI FLASH so I can use the bim example to successfully find the OAD image in FLASH and run the desired image.  I am planning on putting multiple OAD images into on-chip FLASH or external FLASH and just need  to understand how to create an OAD image using the OAD image tool. 

I have gone through the OAD documentation in the SDK Thread User's Guide and Proprietary RF User's Guide which is quite extensive in explaining the OAD process, but very limited on how to take an existing application and run the right tools with the right syntax to create an OAD image that I can use to build and run with the BIM.   Can you provide some more details and explain what I am doing wrong?

I've tried using the hexmerge.py utility by taking the uart_echo example and merging it with the on-chip and off-chip BIM, like using the following:

python c:\Python27\Scripts\hexmerge.py -o all.hex "--overlap=error" cc13x2r1lp_bim_onchip.hex uart_echo.hex

but I don't see an output of all.hex anywhere. Just a message of:

Merging: uart_echo.hex
Data overlapped at address 0x57FA8

Do you know what I may be doing wrong here?

Thanks,
Tim

  • Hi Tim,

    My suggestion would be to take the EasyLink OAD examples as a starting point. (Choose between internal flash (on-chip OAD) or external flash (off-chip).)

  • Hey Marie:

    That is not what I need.  I have been through the documentation and associated examples in the SDK.  They are helpful, but they are not what I need.  Too much stuff in those examples and too complicated to do such a simple task.  I just need to create an OAD image from an already existing CCS project (i.e., take a driver example like uart_echo, pwmled2, etc).  I can create a hex file, but I need to create an OAD image that I can burn into FLASH using FLASH Programmer 2 or Uniflash.  I have my own CCS projects that I will eventually want to use, but I tried to take something simple like the uart_echo example and create an OAD image from that using the directions provided in the documentation by adding the following:

    ${CG_TOOL_HEX} -order MS --memwidth=8 --romwidth=8 --intel -o ${ProjName}.hex ${ProjName}


    ${COM_TI_SIMPLELINK_CC13X2_26X2_SDK_INSTALL_DIR}/tools/common/oad/bin/win32/oad_image_tool --verbose ccs ${PROJECT_LOC} 0 -hex1 ${ConfigName}/${ProjName}.hex -o ${ConfigName}/${ProjName}

    to the post build steps and it generates errors.  I have played around with the processor types (above uses type 0) and am getting errors.  I also tried using the hexmerge utility and it doesn't work either.  Would you look at the errors that I am getting and let me know what I am doing wrong?  Or provide some simple steps that will work to do what I am trying to do?  Please advise.

    BTW - the examples aren't very helpful when you are trying to do such a simple operation.  There needs to be something in the documentation that starts you out from ground zero and walks you through the steps to create an OAD example for internal and external FLASH.  Not take an existing complicated example and go figure it out.

    Thanks,
    Tim

  • Hey Tim,

    Sorry for the trouble you're having. To level set a bit: adding OAD to an existing project is definitely not trivial.

    Also fully understand that the User's Guides do not cover this topic. In general, we tend to leave hands on training like this for SimpleLink academy to ensure it is updated to the latest SDKs and is accurate. For BLE we have a SimpleLink academy module dedicated to this task:

    http://dev.ti.com/tirex/explore/node?node=AIixxGE2y6tnPJ7cm65SFQ__pTTHBmu__LATEST

    Have you looked at this training? I ask because its not in the content you mentioned you have already covered.

    If you do not wish to use BLE as the transport protocol for the images, most of the steps related to the BIM and linker files will still apply.

    To address your error specifically, it seems that you're not specifying an image type to the OAD Image Tool and that it is assuming the wrong image type.

    I would recommend copying this post build step from an existing project, I took the following from the Simple Peripheral OAD project in SDK 3.30 for example:

    ${COM_TI_SIMPLELINK_CC13X2_26X2_SDK_INSTALL_DIR}/tools/common/oad/oad_image_tool --verbose ccs ${PROJECT_LOC} 7 -hex1 ${ConfigName}/${ProjName}.hex -k ${COM_TI_SIMPLELINK_CC13X2_26X2_SDK_INSTALL_DIR}/tools/common/oad/private.pem -o ${ConfigName}/${ProjName}_oad

    In summary the image type you are looking for is type 7 which means app + stack merged as opposed to as split images.

  • Hey Sean:

    Thanks for responding.  Yes I did see that in the Simple Link Academy and it was helpful in explaining how an OAD image is constructed, but did not explain what was needed in the code to construct it - again it starts with a complicated example (i.e. BLE with all the BLE code base) and adds OAD.  I need something that starts with a simple example (i.e. driver example like UART, PWM, etc) and shows me how to create an OAD image so I can use the BIM - preferably without security since that just adds complexity which I don't need.  In the end, I am not doing this to perform an OAD - I just want to store several images in either internal FLASH or external FLASH and use the BIM on these images to run the different applications that I have stored in memory.  I see no examples in the SDK that help me figure this out - the closest I could find was "sensor_oad_offchip_secure_CC1352P1LAUNCHXL_tirtos_ccs" which had this in the build steps:

    ${COM_TI_SIMPLELINK_CC13X2_26X2_SDK_INSTALL_DIR}/tools/common/oad/bin/${OsType}/oad_image_tool --verbose ccs ${PROJECT_LOC} 7 -hex1           ${ConfigName}/${ProjName}.hex -k ${COM_TI_SIMPLELINK_CC13X2_26X2_SDK_INSTALL_DIR}/tools/common/oad/private.pem -o ${ConfigName}/${ProjName}

    and since I was using win32 and did not need security, I used this:

    ${COM_TI_SIMPLELINK_CC13X2_26X2_SDK_INSTALL_DIR}/tools/common/oad/bin/win32/oad_image_tool --verbose ccs ${PROJECT_LOC} 7 -hex1 ${ConfigName}/${ProjName}.hex -o ${ConfigName}/${ProjName}

    which is what I provided earlier, except it uses an image type of 7.  When I did, I got this error:

    C:/TI/simplelink_cc13x2_26x2_sdk_3_20_00_68/tools/common/oad/bin/win32/oad_image_tool --verbose ccs C:/Projects/ccsv9/cc1352_sdk3_20/uartecho_CC1352P1_LAUNCHXL_tirtos_ccs 7 -hex1 Debug/uartecho_CC1352P1_LAUNCHXL_tirtos_ccs.hex -o Debug/uartecho_CC1352P1_LAUNCHXL_tirtos_ccs
    makefile:181: recipe for target 'post-build' failed
    [22564] Failed to execute script oad_image_tool
    Traceback (most recent call last):
      File "oad_image_tool.py", line 539, in <module>
      File "oad_image_tool.py", line 349, in main
      File "oad_image_tool.py", line 184, in createAppStackBinfile
      File "imgBinUtil.py", line 251, in updateImgLen
      File "imgBinUtil.py", line 104, in writeBytes
    OverflowError: can't convert negative int to unsigned
    gmake[2]: [post-build] Error -1 (ignored)

    so then I started playing around with the different image types to see if perhaps I was using the wrong image type of "7" since it wasn't an "app + stack" and could never get anything to work - I was assuming that perhaps I needed to use an image type of "1" which is what I last used when I posted this on the forum.  Upon going back and using the text that you provided:

    ${COM_TI_SIMPLELINK_CC13X2_26X2_SDK_INSTALL_DIR}/tools/common/oad/oad_image_tool --verbose ccs ${PROJECT_LOC} 7 -hex1 ${ConfigName}/${ProjName}.hex -k ${COM_TI_SIMPLELINK_CC13X2_26X2_SDK_INSTALL_DIR}/tools/common/oad/private.pem -o ${ConfigName}/${ProjName}_oad

    I get the same error I was getting originally, namely:

    C:/TI/simplelink_cc13x2_26x2_sdk_3_20_00_68/tools/common/oad/oad_image_tool --verbose ccs C:/Projects/ccsv9/cc1352_sdk3_20/uartecho_CC1352P1_LAUNCHXL_tirtos_ccs 7 -hex1 Debug/uartecho_CC1352P1_LAUNCHXL_tirtos_ccs.hex -k C:/TI/simplelink_cc13x2_26x2_sdk_3_20_00_68/tools/common/oad/private.pem -o Debug/uartecho_CC1352P1_LAUNCHXL_tirtos_ccs_oad
    makefile:181: recipe for target 'post-build' failed
    [23024] Failed to execute script oad_image_tool
    Traceback (most recent call last):
      File "oad_image_tool.py", line 539, in <module>
      File "oad_image_tool.py", line 349, in main
      File "oad_image_tool.py", line 184, in createAppStackBinfile
      File "imgBinUtil.py", line 251, in updateImgLen
      File "imgBinUtil.py", line 104, in writeBytes
    OverflowError: can't convert negative int to unsigned
    gmake[2]: [post-build] Error -1 (ignored)

    So I can't find anything to work when trying to create an OAD image on a simple example like uart_echo out of the SDK.  Do you know what I am doing wrong here?

    And yes I agree that Simplelink Academy is the best place to learn this, but the OAD examples in the SDK start with projects with a lot of code (i.e. BLE, 802.15.4, etc) and assume I am doing OAD, which I am not, when all I want to do is just create an OAD image so I can use the BIM. It would be nice to have a Simplelink Academy for this and my problem would be resolved.  For now, I just need to get to something that works and am wasting a lot of time trying to do something simple that is not so "simple to do" with the examples that are in the SDK.  The documentation in the SDK is good at explaining the big picture of OAD and how it all works, but is very limited in explaining the mechanics of how to construct an OAD image from ground zero - it assumes one will have to reverse engineer it all from these more complicated projects to figure it out.  Really needing a KISS example that it easy to follow so I can use on my own projects and without all the complicated code that I don't need.

    Thanks,
    Tim

  • Tim,

    Thanks for the background and I understand your issue. Agree that what you're looking for really doesn't exist in its current form.

    Based on my reading, it seems you're looking for the minimum steps required to get BIM up and running with ANY project.

    Unfortunately, as I mentioned above, we don't really have a guide for this because its not exactly the intended use, but I definitely see the value in your point, so I'll attempt to help.

    The minimum required APP changes to use BIM is:

    1. Linker file changes to reserve last sector for BIM
    2. Linker file changes to place program entry point, end address and start address into C variable
    3. Linker file changes to reserve space for OAD image header
    4. Remove CCFG from app image (belongs to BIM now), exclude it form build
    5. File that defines the OAD image header structure, and places it at the specified location (see oad_image_header_app.c in the SDK-note there are many, use whatever stack you want as a reference)
    6. TI-RTOS .cfg file changes to relocate the vector table to after the OAD image header
    7. Add OAD image tool to the project in order to generate a full binary

    As for the issue you have: OverflowError: can't convert negative int to unsigned

    I would guess that likely the image you are passing into the tool doesn't have a valid image header attached to it, or the image header isn't placed at the very beginning of the image, thus the tool is just reading random memory (e.g. interrupt vector table) and is treating it as a header which eventually leads to some invalid arithmetic. If you do have a image header placed in the beginning of the image, you might not have the start, end and entrypoint address populated correctly.

    Can you do the following:

    1. Inspect the first ~200 or so bytes of your candidate hex file and see if you find an image in there, might start with ASCII string: {'C', 'C', '1', '3', 'x', '2', 'R', '1'}
    2. If yes to above, are the start, end, and entrypoint valid (cross check with map file).
      1. If no, then try to add oad_image_header_app.c to your project and get it up and running
    3. If yes to above, have you checked that you relocated the TI RTOS vector table (look for m3Hwi.resetVectorAddress = ... in your .cfg file)

    Agree with you that security is not needed, this will only complicate things. Be sure that you're pulling in the unsecure configuration of BIM.

  • Hey Sean:

    Thanks for responding and the details.  I got it to work - the key part I was missing was to add the file "oad_image_header_app.c" and associated .h file to the project. Of course I had to make changes to the .cmd file to organize the code in the proper sections, and pretty much just following the steps you outlined and got it to work - so thanks again for making this clear and getting me over this hurdle.  As you indicated, the build error I was having was a result of me not having the "oad_image_header_app.c" file added to the project.

    One issue I have noticed that I cannot explain.  After creating the .hex and .bin file images, if I try to use FLASH Programmer 2 to burn the image into on-chip FLASH, I get the following error:

    >Initiate access to target: XDS-L42001XD using 2-pin cJTAG.

    >Reading file: C:/Projects/ccsv9/cc1352_sdk3_20/uartecho_bim/Debug/uartecho_bim_oad.bin.

    >File size: 20372 bytes.

    >Number of assigned pages: 3.

    >About 83 percent of the file contain assigned code.

    >Start flash erase ...

    >Erase finished successfully.

    >Start flash programming ...

    >Failed to read last page.

    >Reset target ...

    >Reset of target successful.

    However if I use Uniflash to do the same, it successfully writes to FLASH with no issues.  I have noticed this with other images that are directly from the SDK.  However some other images in the example do successfully burn into FLASH ok.  Do you know what may be causing this problem with using FLASH Programmer 2?

    Also one more question about using the BIM with external FLASH which is my next step.  If I create several OAD images, what is the easiest way to burn these into on-board SPI FLASH that is on the launchpad?  And if you do a complete erase of the on-board SPI FLASH such that I fill up the FLASH with OAD images, is there anything in the examples of the SDK that use this SPI FLASH such that the launchpad would be compromised in doing this and preventing these examples from running anymore?

    Thanks,
    Tim

  • Hi Tim,

    I have notified a colleague that is a Flash Programmer 2 expert of this thread.

    Just from a quick glance, it is a bit surprising that FP2 is attempting to access the last page since that should be owned by BIM anyway.

    Can you check your hex and binary files of your application to be sure there isn't anything placed in the last page?

    Regarding the external flash, the apps team made a tool to burn the images in to the external flash here:

    https://github.com/ti-simplelink/flash-rover

    It is also useful for inspecting the contents of external flash and its metadata table. 

    There is nothing that would be bricked by messing with the contents of external flash. Worst case you can reprogram the device itself and use flash rover to erase the external flash. (so long as you have JTAG access to the board, you should be fine).

    A couple potential gotchas (would cause a headache, not a bricked device):

    1. BLE OAD enabled projects will check for a factory image after boot, if there is none, they will copy themselves into the factory image region..be aware of this. If you don't use BLE, still be aware that metadata sector 0 and the end of the EXT FL is reserved for factory image and is treated special by BIM

    2. The BIM will attempt to load images in external flash that have all checks passing and have status indicated that they're ready to run, if you wish to have many images in external flash and want to switch between them ala-carte from your application, you will need to develop a mechanism for marking them as enabled from the application (before doing the rebooting)

    3. Make sure that you maintain both the metadata table and the images when loading them, note that BIM will initially search for images using the metadata table. See External Flash Layout chapter of the OAD User's Guide.

  • Hi Tim,

    I believe that the problem you are experiencing in Flash Programmer 2 is because there isn't a valid CCFG section of the last page of the file. Unfortunately, this check will be performed if you have checked the "Keep CCFG" box, too, but I have made a ticket to get this fixed.

    There are a couple of ways you can bypass this problem.

    1. You can use v1.7.5 of Flash Programmer 2 which doesn't include this check

    2. If you have the file loaded onto a device (and haven't locked the debug interface), you can create a new image in the Edit tab by:
    2.1 Reading all flash
    2.2 Press "Read Flash to File" and save the content of flash into a new file

    Since this file contains a valid CCFG section, it can be used to flash devices in v1.8.1.

    Thanks, 
    Elin

  • Hey Sean:

    Thanks for your reply.  Yes, I have checked and there is nothing in the last page, just the content and it is storing it from FLASH address 0 to then length of the image of 0x4F90 bytes.  Per the directions, I removed the .ccfg section from the application so it would not conflict with the BIM.

    Thanks for the reference to flash-rover - I will check this out.  And thanks for the background and advice on using the external FLASH - that was what I was looking for.

    Tim

  • Hey Elin:

    Per the directions of creating a vaild OAD image, I am not supposed to use a .ccfg section since that is defined in the BIM.  I am using v1.8.1 of the FLASH Programmer 2 tool and I don't see a "Keep CCFG" box.  Your proposed method 2 is a problem since I am not supposed to have a CCFG section, per this needing to be a valid OAD image.  So are you saying that in order to create an OAD image, I need to remove v1.8.1 and revert back to v1.7.5 to use this tool now?

    Thanks,
    Tim

  • Hey Sean:

    I downloaded the flash-rover tool and tried to import it into my CCS workspace and am getting the error:

    See details below...
     flash_rover_fw_cc13x2_cc26x2_gcc
      Product 'com.ti.SIMPLELINK_CC13XX_CC26XX_SDK' v0.0 is not currently installed and no compatible version is available. Please install this product or a compatible version.

    and I can't seem to get beyond this point.  Am I supposed to import this into CCS in order to use it?  I read the README.md file, but it's not clear if I need to build this or not and if so, how to do this on a Windows PC and/or using CCS.  Am I missing something here?

    Thanks,
    Tim

  • Hey Tim,

    I am not the author of the flash rover tool, but I have notified him of this thread.

    Here is my best guess advice without being the expert:

    Can you go into the product view right project -> properties -> project and select whatever version of the CC13x2_26x2 SDK you wish to use?

  • Hey Sean:

    Ok, thanks - hopefully he will jump in here and provide some guidance.

    The error I am getting is a direct result of just trying to import it into CCS.  As soon as I hit the button to Finish and import it into my workspace, I get this error and I can't go any further.  It is asking for v0.0 of the SDK to be installed which is obviously screwed up.   Just need some guidance here on what I am supposed to do to run this tool. 

    Thanks,
    Tim

  • Hi Tim,

    I am the author of the flash-rover tool.

    flash-rover is a standalone CLI, not a CCS project to compile and run on the device directly. Hence, you are not supposed to import the CCS project as you've described, as that is only the FW portion of the CLI tool.

    Try to download one of the pre-compiled executables from the release page here: https://github.com/ti-simplelink/flash-rover/releases

    Run the tool as any normal CLI tool from a terminal.

  • Hey Severin:

    Thanks for responding.  I have downloaded the tool, but I don't see an executable I can run on Windows.  Where would the executable be such that I can run it from a command line?   And once running from the command line, doesn't something need to be running on the LP?  And if so, what would that be?  I was assuming that I would have to have something running on the target processor on the LP that is interfacing to the SPI FLASH.  Please advise.

    Thanks,
    Tim

  • Have you unzipped the zip file? The executable is in the zip.

    No need to flash the LP with any FW, the CLI will do this automatically.

  • Hey Severin:

    Yes I unzipped the file and see no executable.  I see a ci, cli and fw directory.  I read the README.md file that is at the root directory, but it is not very informative on what I need to do to use it and where is the executable that I am supposed to use.  Please advise.

    Thanks,
    Tim

  • It sounds like you downloaded the source code, not one of the pre-compiled binaries.

    You need to download one of these according to your architecture:

  • Hey Severin:

    Yes, you are right.  Thanks for making that clear - I was obviously selecting the wrong highlighted icon.  I have unzipped the Windows release and from looking at the help menu, if I wanted to write an OAD image to FLASH, which I assume would have a .bin extension, then I would type the following on the command line:

    flash-rover -c C:\TI\ccs920\ccs\ccs_base -d cc13x2_cc26x2 -x L42001LV erase

    followed by:

    flash-rover -c C:\TI\ccs920\ccs\ccs_base -d cc13x2_cc26x2 -x L42001LV write name_of_my_OAD_image_file.bin

    Is this correct?

    And if correct, I assume you are using the boot loader to do this and if so, how do you write to the external SPI FLASH using the boot loader?   You using some kind of magic?  :-)

    Thanks,
    Tim

  • Hey Elin:

    Your thoughts and/or recommendation?

    Thanks,
    Tim

  • Hey Severin:

    Just a few more thoughts after giving this some more thought:

    1.) So using this flash-rover tool, how am I supposed to write the OAD images into different locations in the SPI FLASH?

    2.)  If using the BIM, don't I need to keep the metadata and the images separate?  And if so, how do I do that using this tool?

    Please advise.

    Thanks,
    Tim

  • Hey Elin:

    Not sure what is going on with this E2E forum post, but looks like it is getting merged with posts I have ongoing with Severin.  Wrt my post to you, I am referencing a previous post I made below:

    "Per the directions of creating a vaild OAD image, I am not supposed to use a .ccfg section since that is defined in the BIM.  I am using v1.8.1 of the FLASH Programmer 2 tool and I don't see a "Keep CCFG" box.  Your proposed method 2 is a problem since I am not supposed to have a CCFG section, per this needing to be a valid OAD image.  So are you saying that in order to create an OAD image, I need to remove v1.8.1 and revert back to v1.7.5 to use this tool now?"

    Your thoughts and/or recommendation?

    Thanks,
    Tim

  • 1) The flash-rover tool does not help you to generate the necessary memory layout for OAD images on the external flash; it will read and write arbitrary streams of bytes to wherever you want on the external flash, and nothing more. Hence, you will need to generate the necessary binary information for both the EFL Image Header data and OAD image data, and write that information to the correct place in the external flash. You should take a look at the documentation for the external flash memory layout: http://dev.ti.com/tirex/explore/content/simplelink_cc13x2_26x2_sdk_3_40_00_02/docs/ble5stack/ble_user_guide/html/oad-secure/flash-layout-off-chip.html#external-flash-memory-layout

    2) Yes. That is not something the flash-rover tool does, and neither is it the purpose of this tool either. As I said, the purpose is to read and write arbitrary bytes to the external flash.

  • Hey Severin:

    Yes, I understand how to create OAD images and associate them to a specific address that I would put in internal FLASH.  But with external FLASH, that is not the case.  When writing to the external FLASH, I need to write the OAD image to an address in SPI FLASH which has nothing to do with the where the OAD image will reside in on-chip FLASH.  And I know how to create the metadata -  I don't need flash-rover to help me do that. So if I have 4 different OAD images with associated metadata that is separate from the OAD image, how do I use this tool to write to 4 different banks of metadata and 4 different banks of OAD images in external SPI FLASH so that the CPU will know where to get them and place them into internal memory so it can run from these images?

    Thanks,
    Tim

  • Hi Tim,

    "Keep CCFG" is a part of the Image overrides window in the main tab. 

    But I would recommend you to use UNIFLASH instead since it doesn't perform this check. 

    Thanks,
    Elin

  • Hey Tim,

    The flash-rover tool can read and write any binary blob to external flash given a starting address. So for the OAD use case, you would need two writes for each image 1 of the metadata and one of the image itself. You'll be responsible for arranging the start addresses yourself and passing them to the tool.

    So first you'll need to create metadata for your images. note that the external flash meta differs slightly from standard image metadata), namely that it has a pointer to where the image starts in external flash. See ext_flash_layout.h::ExtImageInfo_t for the precise structure definition. 

    Then you can write the metadata (in order starting at pg 0), each meta must be page aligned. Then your images themselves, and note that they must be placed at the location specified by extFlAddr in their metadata entry.

    The tool is generic, so it just takes a binary blob and an offset. So you'll need to make binary files for the metadata (must be done manually) and the images themselves (done by OAD image tool). Let's say you made a binary file containing your metadata and called it metadata.bin, you'd use flash rover like this

    flash-rover --ccs /path/to/ccs/install/folder \
        --device cc13x0 \
        --xds L200005Z \
        write <OFFSET> --erase < metadata.bin

    where <OFFSET> needs to be replaced with the actual offset to the address you wish to place the file at.

  • Got it!  Thanks Sean.

    Tim

  • Hey Elin:

    Ok, thanks.  I was clicking in the wrong area and this wasn't coming up - understand now.

    Thanks,
    Tim