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.

CC3200 Gang Programming

Other Parts Discussed in Thread: CC3200, UNIFLASH, CC3200SDK

Hello,

For our application, we would like to update the CC3200 from our main processor with embedded programming through the UART.

First, I wanted to test this on the CC3200 launchpad with Uniflash. The examples run using the "Program" option in Uniflash; however,  by using the gang programming and image programming tools, I have been unable to successfully run an example program.

I have moved from our program to trying the "blinky" program form the CC3200SDK_1.1.0 for simplicity, but after the final 8 bytes are written successfully, the program never runs after a reset.

I have followed both the embedded programming tutorial from http://www.ti.com/tool/embedded-programming files and the uniflash image creation http://processors.wiki.ti.com/index.php/CC31xx_%26_CC32xx_UniFlash#Image_Creation_and_Programming .

Might I be setting up the image incorrectly or do I need to make some changes on the CC3200 launchpad to make this work? Is anyone else able to program these examples this way?

  • Hi,

    Can you please clarify if the Gang Programming itself is working from Uniflash (not the embedded programming)?

    If not, please note:

    1. a format command must be added to the image
    2. choose in the settings the correct serial flash size. If you are using LaunchPad, it should be the default 1MB
    3. Make sure you get no errors on the Console window when exporting the image. You should get the Finished Successfully message and the total amount of required blocks as shown in the figure
    4. After programming of the image is done, remove SOP2 jumper and reset the device. Upon initialization, the device extracts the binary image and executes the command, one-by-one. This procedure may take a few seconds

    Regards,

    Shlomi

  • Hi Shlomi,

    No, my problem is with the gang programming from Uniflash itself. I wrote the embedded programming code; but when it did not work when no errors were reported, I began to look more into the uniflash binary file creation. The "Operation->Program" option properly writes the project; however, I have not had any success with the "Operation->Image Programming".

    In more detail, I have followed the these steps:

    1. Open uniflash 3.4 (I have also tried with 3.2 before) and clicked New Target Configuration. The Simplelink wifi CC3200 connection and board is selected.
    2. Change the "/sys/mcuimg.bin" to the target binary program file. In this case, "blinky.bin" from the CC3200SDK examples. Erase, update, and verify boxes are checked.
    3. In the Gang Programming section, the following are done:
      1. Add: write all files in session. This adds the "/sys/mcuimg.bin" only in this case
      2. Add: format storage command (tried with and without "erase" checked)
      3. Settings: ensure settings are for 1MB flash
      4. Export: creates the binary file for gang programming, "programming.bin". "Finished successfully" and total amount of blocks are shown on console with no errors
    4. The SOP2 jumper is added and the CC3200 launchpad device is reset
    5. In the Uniflash toolbar, "Operation->Image Programming" is the selected and the "Programming.bin" created by the export is used. No errors appear in the process and the last 8 bytes are programmed
    6. The SOP2 jumper is removed and reset is pressed

    After this step, I have never had the image extract, even for this simple "blinky" program with no user files or config setting to be added.

    Can you see anything wrong with my process? If not, are you able to properly gang program any image to the CC3200 Launchpad?

    Thanks,

    Jared

  • Hi Jared,

    Sure, it should work properly.

    The procedure you described seems OK.

    Can you please do the followings:

    1. send me a Console log of the Uniflash when the image is created and when the image is programmed
    2. do the following sequence:
      1. add the "Start logger" command to the image as well
      2. create the image and program it
      3. remove SOP2 and reset the device as usual
      4. run the attached utility to read the flash and send me the FlashDump.bin. Just run it with the -p <port number>https://e2e.ti.com/cfs-file/__key/communityserver-discussions-components-files/968/ReadFlash_5F00_1MB.exe

    Shlomi

  • Hi Shlomi,

    I appreciate your support in this matter. Attached are the console outputs from Uniflash 3.4 and the binary output from the read flash utility:

    There were no errors in the creation or programming of the binary files, but I still had no success in running the example program.

    Let me know if any other information would be helpful to you.

    Thanks.

    Jared

  • Hi Jared,

    The problem in your case is that you have a pre-production device and not a production device.

    Only the ROM boot loader of the production device check for an existing image binary for extraction. This is why the image remains as is on the serial flash and doesn't get extracted.

    You need to replace the device if you want to use the image programming feature.

    Shlomi

  • Hi Shlomi,

    Thanks for the answer. I would not have considered this as I was not aware that we received these launchpad boards so early on. I'll acquire some more recent models and verify that everything works as intended as soon as I can.

    On a related note to Uniflash programming, is there any guide or method to implement the general "Program" button of Uniflash instead of using the gang image through "Image Programming"? The "Program" option, which seems to write files one at a time, appears to have fewer space limitations than programming the gang image. I would like to know if this can be an option in the case of our program and webpage expansion.

    Thanks,

    Jared
  • Hi Jared,

    You are perfectly right that gang image programming has a space limitation since the image cannot be overwritten during extraction.

    However, it is still the most recommended method as it ensures system integrity.

    I'm not sure whether you refer to "Program" so as to implement it via embedded programming. Please clarify.

    In any case, all operations that "Program" encapsulate can be achieved by the file system APIs. Only format operation cannot be implemented via the file system APIs.

    Regards,

    Shlomi

  • Hi Shlomi,

    After your suggestion and reception of a newer version of the CC3200 launchpad, I was able to program our gang image through embedded means.

    Yes, I mean to potentially implement this "Program" using embedded programming if possible. If program and file size becomes an issue, I would like to know what other options we may have. Programming the image in the same way that Uniflash normally does seems to be one possibility, though I have not found any documentation on how it works or what file system APIs would have to be used.

    For instance, when trying a few more examples, a gang image for the "Out of Box" application cannot be created because the required block size is 267, half of which seem to belong to the gang program and extraction, which is too large the 256 block flash storage.

    Let me know if you have any suggestions.

    Thanks,

    Jared
  • Hi Jared,

    As I suggested, the best option is to use Gang Programming if possible. If not possible because of space limitations, other ways are:

    1. use Uniflash and utilize the format and program options. In this case, the connection is UART and the device is in boot loader mode during this process
    2. use Uniflash for format and programming of mcuimg as a minimum. All rest of files can be programmed via the application utilizing the file system APIs. You check OTA and Host Programming add-ons for reference

    Shlomi

  • Hi Shlomi,

    Thanks for the information. For more perspective into why I am asking, we are wanting the capability to update our product in the field, both for the mcuimg and the webpage files. In this situation, PC access to use Uniflash would be unavailable, which is why we would like to use embedded programming. Our file size is already fairly close to the limit of the Uniflash gang image, but the general Uniflash "Program" procedure seems to be able to use the full 1MB without having to extract or unpack the files. This is why utilizing an embedded form of the Uniflash "Program" would be advantageous if available, but from what you said there is not a guide on implementing it. I may be wrong on understanding the operation of the "Program" button in Uniflash utilizing the full 1MB though.

    If what you listed are the only choices available, then we should be able to work around the restraints. I can also look into the OTA and host programming add on to see what else can be used.

    Thanks,

    Jared
  • Hi Jared,

    As I mentioned, there is no "Program" implementation for Embedded Programming.

    Please try to look at the other options and find a suitable fixure.

    For now, i am closing this thread.

    Please open a new one pointing to this thread as reference if you have related concerns/issues.

    Shlomi

  • Hi Shlomi,

    How do we know if we are using a pre-production device? I'm having the same problem as Jared (Gang image doesn't respond/run after power on).

    This is the chip info got from the "Get Version" button:

    [18:49:22] INFO: > Bootloader version: 2.1.4.0
    [18:49:22] INFO: > Chipset version: 16