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.

CC3235MODSF: Embedded Programming errors with error nunmber = 10246, extended error =3131

Part Number: CC3235MODSF
Other Parts Discussed in Thread: CC3200, CC3120, UNIFLASH, CC3235SF, LAUNCHCC3235MOD, CC3220SF, CC3100, CC3235MODS

Tool/software:

We are trying to upgrade the our binary (*.ucf format) onto CC3235MODSF  module through UART interface.

So, put the module onto UARTLOAD mode with correct SOP2 setting.

Then downloaded the latest embedded programming utility for CC3120 & CC3200, and then run it as below.

It seems it is working properly, however at the end we are observing Received error : error number = -10246, extended error = 3137.

After this error, the module is not working at all, unless re-programming the module with UniFlash utility.

So, I am wondering if the embedded programming utility for CC3120 & CC3200  can be used for CC3235SF without any changes?

If there is any changes required for CC3235SF, please let me know,

In addition, please take a look the below log when executing ImageProgramming.exe and advise me what else I need to take a look to solve this problem?

D:\work\DScan2.5\ti_wifi\CC3235\CC3x20_Embedded_Programming_2_0_0\executables>ImageProgramming.exe -v -p 44 -i LAUNCHCC3235MOD_DEBUG_Programming.ucf
Image Programming v2.0.0
-----------------------------
This utility programs a binary image to a serial flash connected to CC3120/CC3220 device
Only production devices are supported (i.e. no pre-production devices)
The binary image needs to be prepared in advance using Uniflash utility

Step #1 --> connect to target device
port opened
wait and clear uart rx buffer
set break signal
--- please restart the device ---
wait for ack
receive ack
connection succeeded
get storage list
wait for ack
receive ack
receive storage list

exit bootldr connect
Step #2 --> Reading version info
port opened
wait for ack
receive ack
Reading version info completed

Bootloader version is (4, 0, 0, 1)
It's a CC3220SF device
Step #3 (CC3220 only) --> Switch UART to NWP core
port opened
wait for ack
receive ack
Setting Break Signal
wait for ack
receive ack
Switch to NWP bootloader completed
RawStorageWrite
port already opened
Step #4/8 --> Get SRAM/SFLASH storage info
wait for ack
receive ack
Step #5/9 --> Erasing 3 blocks from SRAM/SFLASH starting from block #0
The process of erasing blocks takes several seconds
wait for ack
receive ack
Status request
wait for ack
receive ack
Erasing completed

Step #6/10 --> Program image[0:10531] to SRAM/SFLASH
wait for ack
receive ack
Status request
wait for ack
receive ack
wait for ack 38%
receive ack
Status request
wait for ack
receive ack
wait for ack 77%
receive ack
Status request
wait for ack
receive ack
Image programming completed

Step #7 --> Execute bootloader patches from SRAM
port opened
wait for ack
receive ack
wait for ack
--- COM Port timeout on ACK read
enter get storage info
port opened
wait for ack
receive ack
RawStorageWrite
port opened
Step #4/8 --> Get SRAM/SFLASH storage info
wait for ack
receive ack
Step #5/9 --> Erasing 2 blocks from SRAM/SFLASH starting from block #33
The process of erasing blocks takes several seconds
wait for ack
receive ack
Status request
wait for ack
receive ack
Erasing completed

Step #6/10 --> Program image[135176:141157] to SRAM/SFLASH
wait for ack
receive ack
Status request
wait for ack
receive ack
wait for ack 68%
receive ack
Status request
wait for ack
receive ack
Image programming completed

Step #11 --> Image programming
port opened
Programming chunk ,offset = 0, ChunkSize= 4096
wait for ack
receive ack
Data received
Number of bytes send = 4096
Programming progress = 2 %
Programming chunk ,offset = 4096, ChunkSize= 4096
wait for ack
receive ack
Data received
Number of bytes send = 8192
Programming progress = 4 %
Programming chunk ,offset = 8192, ChunkSize= 4096
wait for ack
receive ack
Data received
Number of bytes send = 12288
Programming progress = 6 %
Programming chunk ,offset = 12288, ChunkSize= 4096
wait for ack
receive ack
Data received
Number of bytes send = 16384
Programming progress = 8 %
Programming chunk ,offset = 16384, ChunkSize= 4096
wait for ack
receive ack
Data received
Number of bytes send = 20480
Programming progress = 10 %
Programming chunk ,offset = 20480, ChunkSize= 4096
wait for ack
receive ack
Data received
Number of bytes send = 24576
Programming progress = 12 %
Programming chunk ,offset = 24576, ChunkSize= 4096
wait for ack
receive ack
Data received
Number of bytes send = 28672
Programming progress = 15 %
Programming chunk ,offset = 28672, ChunkSize= 4096
wait for ack
receive ack
Data received
Number of bytes send = 32768
Programming progress = 17 %
Programming chunk ,offset = 32768, ChunkSize= 4096
wait for ack
receive ack
Data received
Number of bytes send = 36864
Programming progress = 19 %
Programming chunk ,offset = 36864, ChunkSize= 4096
wait for ack
receive ack
Data received
Number of bytes send = 40960
Programming progress = 21 %
Programming chunk ,offset = 40960, ChunkSize= 4096
wait for ack
receive ack
Data received
Number of bytes send = 45056
Programming progress = 23 %
Programming chunk ,offset = 45056, ChunkSize= 4096
wait for ack
receive ack
Data received
Number of bytes send = 49152
Programming progress = 25 %
Programming chunk ,offset = 49152, ChunkSize= 4096
wait for ack
receive ack
Data received
Number of bytes send = 53248
Programming progress = 28 %
Programming chunk ,offset = 53248, ChunkSize= 4096
wait for ack
receive ack
Data received
Number of bytes send = 57344
Programming progress = 30 %
Programming chunk ,offset = 57344, ChunkSize= 4096
wait for ack
receive ack
Data received
Number of bytes send = 61440
Programming progress = 32 %
Programming chunk ,offset = 61440, ChunkSize= 4096
wait for ack
receive ack
Data received
Number of bytes send = 65536
Programming progress = 34 %
Programming chunk ,offset = 65536, ChunkSize= 4096
wait for ack
receive ack
Data received
Number of bytes send = 69632
Programming progress = 36 %
Programming chunk ,offset = 69632, ChunkSize= 4096
wait for ack
receive ack
Data received
Number of bytes send = 73728
Programming progress = 38 %
Programming chunk ,offset = 73728, ChunkSize= 4096
wait for ack
receive ack
Data received
Number of bytes send = 77824
Programming progress = 41 %
Programming chunk ,offset = 77824, ChunkSize= 4096
wait for ack
receive ack
Data received
Number of bytes send = 81920
Programming progress = 43 %
Programming chunk ,offset = 81920, ChunkSize= 4096
wait for ack
receive ack
Data received
Number of bytes send = 86016
Programming progress = 45 %
Programming chunk ,offset = 86016, ChunkSize= 4096
wait for ack
receive ack
Data received
Number of bytes send = 90112
Programming progress = 47 %
Programming chunk ,offset = 90112, ChunkSize= 4096
wait for ack
receive ack
Data received
Number of bytes send = 94208
Programming progress = 49 %
Programming chunk ,offset = 94208, ChunkSize= 4096
wait for ack
receive ack
Data received
Number of bytes send = 98304
Programming progress = 51 %
Programming chunk ,offset = 98304, ChunkSize= 4096
wait for ack
receive ack
Data received
Number of bytes send = 102400
Programming progress = 54 %
Programming chunk ,offset = 102400, ChunkSize= 4096
wait for ack
receive ack
Data received
Number of bytes send = 106496
Programming progress = 56 %
Programming chunk ,offset = 106496, ChunkSize= 4096
wait for ack
receive ack
Data received
Number of bytes send = 110592
Programming progress = 58 %
Programming chunk ,offset = 110592, ChunkSize= 4096
wait for ack
receive ack
Data received
Number of bytes send = 114688
Programming progress = 60 %
Programming chunk ,offset = 114688, ChunkSize= 4096
wait for ack
receive ack
Data received
Number of bytes send = 118784
Programming progress = 62 %
Programming chunk ,offset = 118784, ChunkSize= 4096
wait for ack
receive ack
Data received
Number of bytes send = 122880
Programming progress = 64 %
Programming chunk ,offset = 122880, ChunkSize= 4096
wait for ack
receive ack
Data received
Number of bytes send = 126976
Programming progress = 67 %
Programming chunk ,offset = 126976, ChunkSize= 4096
wait for ack
receive ack
Data received
Number of bytes send = 131072
Programming progress = 69 %
Programming chunk ,offset = 131072, ChunkSize= 4096
wait for ack
receive ack
Data received
Number of bytes send = 135168
Programming progress = 71 %
Programming chunk ,offset = 135168, ChunkSize= 4096
wait for ack
receive ack
Data received
Number of bytes send = 139264
Programming progress = 73 %
Programming chunk ,offset = 139264, ChunkSize= 4096
wait for ack
receive ack
Data received
Number of bytes send = 143360
Programming progress = 75 %
Programming chunk ,offset = 143360, ChunkSize= 4096
wait for ack
receive ack
Data received
Number of bytes send = 147456
Programming progress = 77 %
Programming chunk ,offset = 147456, ChunkSize= 4096
wait for ack
receive ack
Data received
Number of bytes send = 151552
Programming progress = 80 %
Programming chunk ,offset = 151552, ChunkSize= 4096
wait for ack
receive ack
Data received
Number of bytes send = 155648
Programming progress = 82 %
Programming chunk ,offset = 155648, ChunkSize= 4096
wait for ack
receive ack
Data received
Number of bytes send = 159744
Programming progress = 84 %
Programming chunk ,offset = 159744, ChunkSize= 4096
wait for ack
receive ack
Data received
Number of bytes send = 163840
Programming progress = 86 %
Programming chunk ,offset = 163840, ChunkSize= 4096
wait for ack
receive ack
Data received
Number of bytes send = 167936
Programming progress = 88 %
Programming chunk ,offset = 167936, ChunkSize= 4096
wait for ack
receive ack
Data received
Number of bytes send = 172032
Programming progress = 90 %
Programming chunk ,offset = 172032, ChunkSize= 4096
wait for ack
receive ack
Data received
Number of bytes send = 176128
Programming progress = 93 %
Programming chunk ,offset = 176128, ChunkSize= 4096
wait for ack
receive ack
Data received
Number of bytes send = 180224
Programming progress = 95 %
Programming chunk ,offset = 180224, ChunkSize= 4096
wait for ack
receive ack
Data received
Number of bytes send = 184320
Programming progress = 97 %
Programming chunk ,offset = 184320, ChunkSize= 4096
wait for ack
receive ack
Data received
Number of bytes send = 188416
Programming progress = 99 %
Programming chunk ,offset = 188416, ChunkSize= 800
Programming done. Starting image extraction. Please wait...
wait for ack
receive ack
Data received
Received error : error number = -10246 , extended error = 3137
Programming progress = 100 %
Total programming duration = 9 seconds
Step #12 --> Reset the target device

  • Hi Mark. 

    Thank you for your question. Error -10246 represents SL_ERROR_FS_DEVELOPMENT_BOARD_WRONG_MAC. This error code (may vary depending on your SDK) can be found in SDK_INSTALL_DIR/source/ti/drivers/net/wifi/errors.h.

    Meanwhile, when you receive error -10246, the MAC address you are programming your image with does not match the one found on your chip. I am currently unaware of what your project and physical configurations are, but a different thread where the author encountered the same error code as seen here may help you.

    As for embedded programming utility compatibility, please allow me a few days to get back to you on that topic. I will provide you with an update by Monday. 

    Best,

    Brandon Liu

  • Hi Brandon,

    With the image generated with correct MAC address in the development mode, we are now able to run the embedded programming utility without problem.

    However, with the image generated in production mode,  we are now observing the errors in Step 7 as below.

    We are not sure what went wrong, and why it work well with the image in development mode and not working with the image created in production mode.

    is the bootloader behavior in development mode different from the one in production mode?

    So, could you please advise what else I need to check for making it work in the production mode??

    Here is the logs of embedded programming utility in production mode and development mode for your reference.

    1. the log when flashing the image created in production mode

    D:\work\DScan2.5\ti_wifi\CC3235\CC3x20_Embedded_Programming_2_0_0\executables>ImageProgramming.exe -v -p 44 -i LAUNCHCC3235MOD_Programming.ucf

    Image Programming v2.0.0

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

    This utility programs a binary image to a serial flash connected to CC3120/CC3220 device

    Only production devices are supported (i.e. no pre-production devices)

    The binary image needs to be prepared in advance using Uniflash utility

     

    Step #1 --> connect to target device

    port opened

    wait and clear uart rx buffer

    set break signal

    --- please restart the device ---

    wait for ack

    receive ack

    connection succeeded

    get storage list

    wait for ack

    receive ack

    receive storage list

     

    exit bootldr connect

    Step #2 --> Reading version info

    port opened

    wait for ack

    receive ack

    Reading version info completed

     

    Bootloader version is (4, 0, 0, 1)

    It's a CC3220SF device

    Step #3 (CC3220 only) --> Switch UART to NWP core

    port opened

    wait for ack

    receive ack

    Setting Break Signal

    wait for ack

    receive ack

    Switch to NWP bootloader completed

    RawStorageWrite

    port already opened

    Step #4/8 --> Get SRAM/SFLASH storage info

    wait for ack

    receive ack

    Step #5/9 --> Erasing 3 blocks from SRAM/SFLASH starting from block #0

    The process of erasing blocks takes several seconds

    wait for ack

    receive ack

    Status request

    wait for ack

    receive ack

    Erasing completed

     

    Step #6/10 --> Program image[0:10531] to SRAM/SFLASH

    wait for ack

    receive ack

    Status request

    wait for ack

    receive ack

    wait for ack 38%

    receive ack

    Status request

    wait for ack

    receive ack

    wait for ack 77%

    receive ack

    Status request

    wait for ack

    receive ack

    Image programming completed

     

    Step #7 --> Execute bootloader patches from SRAM

    port opened

    wait for ack

    receive ack

    wait for ack

    --- COM Port timeout on ACK read

    enter get storage info

    port opened

    wait for ack

    receive ack

    RawStorageWrite

    port opened

    Step #4/8 --> Get SRAM/SFLASH storage info

    wait for ack

    receive ack

    Step #5/9 --> Erasing 2 blocks from SRAM/SFLASH starting from block #33

    The process of erasing blocks takes several seconds

    wait for ack

    --- error during raw write

     

     

    ***** Please reset the board and try again *****

    ---Call Trace:---

      File "ImageProgramming.py", line 119, in <module>

     

      File "ImageProgramming.py", line 89, in main

     

      File "ImageProgramming.py", line 76, in BurnImage

     

    ---Error Line:---

    Traceback (most recent call last):

      File "bootldr.pyc", line 455, in RawWrite

      File "bootldr.pyc", line 227, in _EraseBlocks

      File "bootldr.pyc", line 181, in _read_ack

    BootloaderException: Got NACK

    2. log when flashing the Image created in development mode

    D:\work\DScan2.5\ti_wifi\CC3235\CC3x20_Embedded_Programming_2_0_0\executables>ImageProgramming.exe -v -p 44 -i LAUNCHCC3235MOD_Programming.ucf

    Image Programming v2.0.0

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

    This utility programs a binary image to a serial flash connected to CC3120/CC3220 device

    Only production devices are supported (i.e. no pre-production devices)

    The binary image needs to be prepared in advance using Uniflash utility

     

    Step #1 --> connect to target device

    port opened

    wait and clear uart rx buffer

    set break signal

    --- please restart the device ---

    wait for ack

    receive ack

    connection succeeded

    get storage list

    wait for ack

    receive ack

    receive storage list

     

    exit bootldr connect

    Step #2 --> Reading version info

    port opened

    wait for ack

    receive ack

    Reading version info completed

     

    Bootloader version is (4, 0, 0, 1)

    It's a CC3220SF device

    Step #3 (CC3220 only) --> Switch UART to NWP core

    port opened

    wait for ack

    receive ack

    Setting Break Signal

    wait for ack

    receive ack

    Switch to NWP bootloader completed

    RawStorageWrite

    port already opened

    Step #4/8 --> Get SRAM/SFLASH storage info

    wait for ack

    receive ack

    Step #5/9 --> Erasing 3 blocks from SRAM/SFLASH starting from block #0

    The process of erasing blocks takes several seconds

    wait for ack

    receive ack

    Status request

    wait for ack

    receive ack

    Erasing completed

     

    Step #6/10 --> Program image[0:10531] to SRAM/SFLASH

    wait for ack

    receive ack

    Status request

    wait for ack

    receive ack

    wait for ack 38%

    receive ack

    Status request

    wait for ack

    receive ack

    wait for ack 77%

    receive ack

    Status request

    wait for ack

    receive ack

    Image programming completed

     

    Step #7 --> Execute bootloader patches from SRAM

    port opened

    wait for ack

    receive ack

    wait for ack

    --- COM Port timeout on ACK read

    enter get storage info

    port opened

    wait for ack

    receive ack

    RawStorageWrite

    port opened

    Step #4/8 --> Get SRAM/SFLASH storage info

    wait for ack

    receive ack

    Step #5/9 --> Erasing 2 blocks from SRAM/SFLASH starting from block #33

    The process of erasing blocks takes several seconds

    wait for ack

    receive ack

    Status request

    wait for ack

    receive ack

    Erasing completed

     

    Step #6/10 --> Program image[135176:141157] to SRAM/SFLASH

    wait for ack

    receive ack

    Status request

    wait for ack

    receive ack

    wait for ack 68%

    receive ack

    Status request

    wait for ack

    receive ack

    Image programming completed

     

    Step #11 --> Image programming

    port opened

    Programming chunk ,offset = 0, ChunkSize= 4096

    wait for ack

    receive ack

    Data received

    Number of bytes send = 4096

    Programming progress = 2 %

    Programming chunk ,offset = 4096, ChunkSize= 4096

    wait for ack

    receive ack

    Data received

    Number of bytes send = 8192

    Programming progress = 4 %

    Programming chunk ,offset = 8192, ChunkSize= 4096

    wait for ack

    receive ack

    Data received

    Number of bytes send = 12288

    Programming progress = 6 %

    Programming chunk ,offset = 12288, ChunkSize= 4096

    wait for ack

    receive ack

    Data received

    Number of bytes send = 16384

    Programming progress = 8 %

    Programming chunk ,offset = 16384, ChunkSize= 4096

    wait for ack

    receive ack

    Data received

    Number of bytes send = 20480

    Programming progress = 10 %

    Programming chunk ,offset = 20480, ChunkSize= 4096

    wait for ack

    receive ack

    Data received

    Number of bytes send = 24576

    Programming progress = 12 %

    Programming chunk ,offset = 24576, ChunkSize= 4096

    wait for ack

    receive ack

    Data received

    Number of bytes send = 28672

    Programming progress = 15 %

    Programming chunk ,offset = 28672, ChunkSize= 4096

    wait for ack

    receive ack

    Data received

    Number of bytes send = 32768

    Programming progress = 17 %

    Programming chunk ,offset = 32768, ChunkSize= 4096

    wait for ack

    receive ack

    Data received

    Number of bytes send = 36864

    Programming progress = 19 %

    Programming chunk ,offset = 36864, ChunkSize= 4096

    wait for ack

    receive ack

    Data received

    Number of bytes send = 40960

    Programming progress = 21 %

    Programming chunk ,offset = 40960, ChunkSize= 4096

    wait for ack

    receive ack

    Data received

    Number of bytes send = 45056

    Programming progress = 23 %

    Programming chunk ,offset = 45056, ChunkSize= 4096

    wait for ack

    receive ack

    Data received

    Number of bytes send = 49152

    Programming progress = 25 %

    Programming chunk ,offset = 49152, ChunkSize= 4096

    wait for ack

    receive ack

    Data received

    Number of bytes send = 53248

    Programming progress = 28 %

    Programming chunk ,offset = 53248, ChunkSize= 4096

    wait for ack

    receive ack

    Data received

    Number of bytes send = 57344

    Programming progress = 30 %

    Programming chunk ,offset = 57344, ChunkSize= 4096

    wait for ack

    receive ack

    Data received

    Number of bytes send = 61440

    Programming progress = 32 %

    Programming chunk ,offset = 61440, ChunkSize= 4096

    wait for ack

    receive ack

    Data received

    Number of bytes send = 65536

    Programming progress = 34 %

    Programming chunk ,offset = 65536, ChunkSize= 4096

    wait for ack

    receive ack

    Data received

    Number of bytes send = 69632

    Programming progress = 36 %

    Programming chunk ,offset = 69632, ChunkSize= 4096

    wait for ack

    receive ack

    Data received

    Number of bytes send = 73728

    Programming progress = 38 %

    Programming chunk ,offset = 73728, ChunkSize= 4096

    wait for ack

    receive ack

    Data received

    Number of bytes send = 77824

    Programming progress = 41 %

    Programming chunk ,offset = 77824, ChunkSize= 4096

    wait for ack

    receive ack

    Data received

    Number of bytes send = 81920

    Programming progress = 43 %

    Programming chunk ,offset = 81920, ChunkSize= 4096

    wait for ack

    receive ack

    Data received

    Number of bytes send = 86016

    Programming progress = 45 %

    Programming chunk ,offset = 86016, ChunkSize= 4096

    wait for ack

    receive ack

    Data received

    Number of bytes send = 90112

    Programming progress = 47 %

    Programming chunk ,offset = 90112, ChunkSize= 4096

    wait for ack

    receive ack

    Data received

    Number of bytes send = 94208

    Programming progress = 49 %

    Programming chunk ,offset = 94208, ChunkSize= 4096

    wait for ack

    receive ack

    Data received

    Number of bytes send = 98304

    Programming progress = 51 %

    Programming chunk ,offset = 98304, ChunkSize= 4096

    wait for ack

    receive ack

    Data received

    Number of bytes send = 102400

    Programming progress = 54 %

    Programming chunk ,offset = 102400, ChunkSize= 4096

    wait for ack

    receive ack

    Data received

    Number of bytes send = 106496

    Programming progress = 56 %

    Programming chunk ,offset = 106496, ChunkSize= 4096

    wait for ack

    receive ack

    Data received

    Number of bytes send = 110592

    Programming progress = 58 %

    Programming chunk ,offset = 110592, ChunkSize= 4096

    wait for ack

    receive ack

    Data received

    Number of bytes send = 114688

    Programming progress = 60 %

    Programming chunk ,offset = 114688, ChunkSize= 4096

    wait for ack

    receive ack

    Data received

    Number of bytes send = 118784

    Programming progress = 62 %

    Programming chunk ,offset = 118784, ChunkSize= 4096

    wait for ack

    receive ack

    Data received

    Number of bytes send = 122880

    Programming progress = 64 %

    Programming chunk ,offset = 122880, ChunkSize= 4096

    wait for ack

    receive ack

    Data received

    Number of bytes send = 126976

    Programming progress = 67 %

    Programming chunk ,offset = 126976, ChunkSize= 4096

    wait for ack

    receive ack

    Data received

    Number of bytes send = 131072

    Programming progress = 69 %

    Programming chunk ,offset = 131072, ChunkSize= 4096

    wait for ack

    receive ack

    Data received

    Number of bytes send = 135168

    Programming progress = 71 %

    Programming chunk ,offset = 135168, ChunkSize= 4096

    wait for ack

    receive ack

    Data received

    Number of bytes send = 139264

    Programming progress = 73 %

    Programming chunk ,offset = 139264, ChunkSize= 4096

    wait for ack

    receive ack

    Data received

    Number of bytes send = 143360

    Programming progress = 75 %

    Programming chunk ,offset = 143360, ChunkSize= 4096

    wait for ack

    receive ack

    Data received

    Number of bytes send = 147456

    Programming progress = 77 %

    Programming chunk ,offset = 147456, ChunkSize= 4096

    wait for ack

    receive ack

    Data received

    Number of bytes send = 151552

    Programming progress = 80 %

    Programming chunk ,offset = 151552, ChunkSize= 4096

    wait for ack

    receive ack

    Data received

    Number of bytes send = 155648

    Programming progress = 82 %

    Programming chunk ,offset = 155648, ChunkSize= 4096

    wait for ack

    receive ack

    Data received

    Number of bytes send = 159744

    Programming progress = 84 %

    Programming chunk ,offset = 159744, ChunkSize= 4096

    wait for ack

    receive ack

    Data received

    Number of bytes send = 163840

    Programming progress = 86 %

    Programming chunk ,offset = 163840, ChunkSize= 4096

    wait for ack

    receive ack

    Data received

    Number of bytes send = 167936

    Programming progress = 88 %

    Programming chunk ,offset = 167936, ChunkSize= 4096

    wait for ack

    receive ack

    Data received

    Number of bytes send = 172032

    Programming progress = 90 %

    Programming chunk ,offset = 172032, ChunkSize= 4096

    wait for ack

    receive ack

    Data received

    Number of bytes send = 176128

    Programming progress = 93 %

    Programming chunk ,offset = 176128, ChunkSize= 4096

    wait for ack

    receive ack

    Data received

    Number of bytes send = 180224

    Programming progress = 95 %

    Programming chunk ,offset = 180224, ChunkSize= 4096

    wait for ack

    receive ack

    Data received

    Number of bytes send = 184320

    Programming progress = 97 %

    Programming chunk ,offset = 184320, ChunkSize= 4096

    wait for ack

    receive ack

    Data received

    Number of bytes send = 188416

    Programming progress = 99 %

    Programming chunk ,offset = 188416, ChunkSize= 800

    Programming done. Starting image extraction. Please wait...

    wait for ack

    receive ack

    Data received

    Finished OK !!!!

    Total programming duration = 8 seconds

    Step #12 --> Reset the target device

    Thanks

  • Hi Mark, any chance you are using JTAG to load your image?

  • Hi Brandon,

    No, I did not make any change at all. Just ticked "use device MAC " , and then created the image in both development mode and production mode.

  • Hi Mark, I will take another look into your situation. Please allow me to update you by Thursday. 

  • Hi Mark, I know you are using the embedded programming tool for CC3100 and CC3200, but can you try the one for the CC3220, especially since you are trying to program the CC3235MODSF? If you look at this thread, somebody was inquiring about an embedded programming tool and the thread may help you in some way. Please let me know what happens when you follow this embedded programming guide using the CC3220 programming tool

  • Hi Brandon,

    I already downloaded the latest version of Embedded Programming tool for CC3x20 and using it for embedded programming for CC3235MODS.

    When I program the image with SLImageCreator.exe project program --name "LAUNCHCC3235MOD"  -- port COM39 from UniFlash, it is working well.

    But we can not always use UniFlash > SLImageCreator to upgrade the image in the customer site after the production.

    That is the reason why we are trying to flash the image by using Embedded Programming tool.

    By the way, when using Embedded Programming tool, is *.ucf is the Image I need to flash onto the module??

    Or need something else together to flash the Image?

    Or something need to be ticked when using Embedded Programming when using CC3235MODS?

    Thanks

  • Hi Mark.

    You are still creating the image using Uniflash before using Embedded Progamming right? Yes, the *.ucf format is correct. You can see details in the README (should be in the same directory as the Image Programming executable) as well as this embedded programming guide. I'm assuming you ticked the "Use device MAC address" option in UNIFLASH; can you also make sure that the original MAC address (input in settings -> image mode section) matches the MAC address of the device being used?

  • By the way, I realized you're doing production mode so you won't actually see the "original MAC address" entry in Uniflash. However, I was able to create an image in production mode via Uniflash and program it to my CC3235SF and CC3235MODSF via the ImageProgrammer.exe, so let me know if you're still having trouble. 

    Feel free to send me your setup or whatever such that I can compare it against mine. 

  • Hi Mark,

    As read this thread I am pretty confused. As I know embedded programming was never intended for programming image at development mode. It is intended for programming in production mode when you don't need to deal with MAC address as development mode. It can work with image in development mode but it is pretty impractical doe to security concerns and hardcoded MAC address inside image. Embedded programming package contains python script if you want implement embedded programming into your software. It is not a hard task create own implementation. There is also few undocumented commands like a reading MAC address via bootlaoder. For more details you can sniff UART communication between Uniflash and your device.

    Big issue with this embedded programming package is that contains very old secondary bootloader. TI never released updated version of embedded programming and from this reason is not possible to use vendor certificates via embedded programming. Proper bootloader contains Uniflash and this is nothing what can stop developer whit their task. I think I don't need to say more.

    Jan

  • Hi Jan D,

    We are now investigating how easy we can program the updated Image onto CC3235MODS module, in case of Image upgrade required due to the unexpected issues  after the shipment. 

    We verified that the image upgrade with SLImageCreator is working well, but it always require PC.

    we want to upgrade the Image with our MCU without PC, and trying to upgrade the Image by using embedded programming tool while sniffering UART packets.

    When running the embedded programming tool, we are encountering the above errors, and can not move forward.

    Are you suggesting to sniffer UART communication between SLImageCreator and our module and then create our own upgrade software, cause the current embedded programming tool does not have the latest version of bootloader and TI will not release  the updated embedded programming tool ?

  • Hi,

    For firmware updating at filed (at end customer) I definitely recommand implement OTA update as is provided from TI. You can download your firmware from remote server (this is a common way at these days) or modify OTA update to upload by different way (e.g. upload via webpages, using SD card, etc.). At this thread you can find useful information about OTA implementation.

    Embedded programming should work. Technically you should to use this document not a package for CC3120/CC3220. But at your case is mandatory to have device at production mode. It is really impractical to build separate image for each device. Did you have bought code signing certificate and you have functional programming at production mode? Other option can be usage of vendor certificate. If you want to update without PC, you will need to implement embedded programming into your software. You can check Python code at CC3120/CC3220 package and modify them according to document for CC3235 embedded programming. I use own implementation with CC3220 devices. I never tested this with CC3235 devices.

    Jan

  • Hi Jan,

    what do you mean "did you have bought code signing certificate and you have functional programming at production mode"?

    If you mean something like the certificate key, no I did not buy the code signing certificate.

    With this document, I will try further to implement own embedded programming.

    Thanks,

  • Hi,

    CC3235 are secured devices. For development you can use device at development mode (you need to program image tided with MAC address). But for devices shipped to end user is intended to use production mode. You have options:

    • buy code signing certificate from supported CA and use them for signing of your code
    • or you can use vendor certificates (you will program your vendor catalogue into OTP part of SPI flash). But this can be done only using Uniflash GUI or Uniflash CLI during your production

    For more details you see this and this.

    Jan

  • Hi Jan,

    Now I clearly know the reason why the embedded programming is not working, while it is working well in SLImageCreator.

    Thanks,