TMS320F28388D: Live FW Update (LFU) for multi core with single bank

Part Number: TMS320F28388D
Other Parts Discussed in Thread: C2000WARE

Tool/software:

Hello, 

I am investigating LFU for TMS320F28388D and

  • I would like to know if you have a reference document and examples for this chip ?
  • I have read documentation for F28004x but it seems that the implementation must be different as I have a single Flash bank per core available.
  • Where could I found example of single bank flash partitioning for FW update and rollback possibilities ?
  • Can this solution be implemented with core 1 and core 2 updates ?

Thank you for your help.

  • please note most of the team is OOO due to the US holiday.  Please expect a response next week. 

  • Vic,

    - No, we don't have an LFU ref. document for F2838d

    - That's correct. F28004x has 2 banks, F28003x has up to 3 banks, whereas F2838x has only 1 bank per core.

    - We have a sample implementation in F28002x (1 bank)

    C2000Ware_5_02_00_00\driverlib\f28002x\examples\flash

    lfu_singlebank is a simple LED blinky App example, flash_kernel_ex3_ldfu is the flash kernel/bootloader.

    In this example, we overwrite the complete application in Flash during LFU. To keep the application running, therefore, we copy the necessary ISR to RAM. We also copy over Flash APIs and specific functions from the kernel/bootloader from Flash to RAM. This is because the Flash bank is not RWW (Read While Write).

    - Yes, you can have the same approach apply to both CPU1 and CPU2.

    Thanks,

    Sira

  • Hello Sira, Thank you for your reply.

    From my understanding, examples from C2000Ware_5_02_00_00\driverlib\f28002x\examples\flash overwrite the full image during the update process. Thus, it is not possible to rollback to the previous FW version in case of any error during the process.

    • Do you have a linker command file example than can help me to split the unique flash bank in two partitions ?
      I guess this is the way I should do to have the rollback possibility.

    • If I want to implement the FW update of CPU1 and CPU2, could I use the Serial Flash Programming method described in SPRABV4H ?
      Is the only pre-requesite to have a communication interface (parallele IO, SCI or CAN) AND a GPIO boot mode selection available ?
      I am still considering this solution  over LFU without knowing which one is the best and most efficient for my case.
  • Vic,

    I don't have a linker cmd file handy for this exact use-case, but it should be easy to create it. You would have 3 separate linker cmd files

    - one for the flash kernel/bootloader

    - one for the new application

    - one for the existing (rollback) application

    sprabv4 describes a generic firmware update method that is non LFU based.

    It depends on what your specific application needs. Do you need the application to be running during the update or not - this is the key question.

    Thanks,

    Sira

  • Sira, 

    Can you confirm that my understanding is correct ?


    In my scenario where I have my flash memory splitted in 3 regions for rollback purpose : [KERNEL] [PART_A] [PART_B]

    I should have 1 build configuration that generates the [KERNEL] and flash it 1 time at factory time.

    Along the life cycle of the product, I should have 2 other build configurations with associated linker file that generate [PART_A] or [PART_B] images. This way I can send them alternatively to perform the consecutive updates ?

  • Vic,

    Exactly.

  • Dear Sira,

    I have tried to implement a custom SCI flash kernel getting inspired from f28002/4x examples but I encounter a problem.


    While trying to transfer a FW image with the Serial Flash Programmer, the code execution jumps into fmstatFail function (see picture bellow).


    This happens just after the sections erasing and before rewriting new data in the flash. I try to have a better understanding by adding the flash_status and status values in the fmstatFail function. Their respective values are 4112 and Fapi_Status_FsmReady so not really helping me.

    I have modified the flash kernel so the erase function does not erase the full flash but only a subpart equivalent to my FW image maximum size.

    I have checked that ldfuCopyData and ldfuLoad are run from RAM.

    I also checked that the typical erasing flow represented in SPNU632 4.2 is respected and it looks to be the case.

    Do you have any clue of what could be the reason of this error ?

  • Vic,

    I do see that ldfuCopyData and ldfuLoad are running from RAM addresses.

    Did you also ensure that the Flash API library is copied to RAM?

    Thanks,

    Sira

  • Hi Sira,
    Thank you for your advice.

    I have found :

    1. a clock initialization error and also that
    2. the FlashAPI is actually not running from RAM (see picture bellow).

    For 1., I suggest that this change could be applied to C2000 examples to avoid encountering wrong hardcoded frequencies : 

    For 2., I still struggle to have the FlashAPI running from RAM, probably because of a linking issue.

    I added the following lines in my linker file,


      GROUP
       {
           .TI.ramfunc
           {
              -l F2838x_C28x_FlashAPI.lib
           }
       }  LOAD = STATIC_CODE,
    	  RUN = RAMLS0 | RAMLS1 | RAMLS2 |RAMLS3,
    	  LOAD_START(RamfuncsLoadStart),
    	  LOAD_SIZE(RamfuncsLoadSize),
    	  LOAD_END(RamfuncsLoadEnd),
    	  RUN_START(RamfuncsRunStart),
    	  RUN_SIZE(RamfuncsRunSize),
    	  RUN_END(RamfuncsRunEnd),
    	  ALIGN(8)

    but -l F2838x_C28x_FlashAPI.lib generates the following warning : ../linker_FLASH_custom_STATIC.cmd", line 147: warning #10068-D: no matching section

    The rest of the code using #pragma CODE_SECTION(foo, ".TI.ramfunc") seems to be flashed at the correct place.

    Does this warning means that the linker cannot find the library so cannot be put it in the correct address ?

    Thank you for your help.

  • I solved the FlashAPI linking problem by removing the local copy of the F2838x_C28x_FlashAPI.lib in my project and adding a link instead.

    However, after fixing this issue I just realized that something is still wrong in the Flash writing process.

    At the end of the FW transfer in ldfu_load(), the function call to write the KEY and REV values returns Success but actually fails. When I look at the memory browser, I can see the START value, but can't see nor the REV nor the KEY.

    In the memory browser bellow, I am expecting 0x5A5A5A5A 0xFFFFFFFE 0x5B5B5B5B. I can't explain this result.

     

  • Vic,

    The method you've used to copy the Flash API lib from Flash to RAM looks correct (in the linker cmd file), but just to be sure did you look at the .map file and check whether the Flash APIs were mapped to RAM addresses?

    Can you try putting a breakpoint before the KEY and REV are written and check whether the intended write values are correct?

    Thanks,

    Sira

  • Sira, 

    The FlashAPI is now running from RAM since I replaced the local copy of F2838x_C28x_FlashAPI.lib by a link.

    Regarding the KEY and REV writing issue, it looks like it is related with memory block size and/or ECC.


    When I write START at 0x80120 and KEY at 0x80124, it does not work and Fapi_getFsmStatus() returns 0x30.
    BUT
    when I write START at 0x80120 and KEY at 0x8012C, it works ! 

    In the example flash_kernel_ex3_sci_flash_kernel for F28002x, they do write START, KEY and REV in continuous memory addresses. It is not supposed to work the same way with F2838x ?

  • Vic, let me check on this with team members and get back to you.

  • Hi Sira,

    I think I solved the problem by reshuffling my memory sectors definitions. I was probably trying to write 2 times the same 64 bits block per Flash erase cycle.

    So I succeedded to flash the kernel and transmit the Image 1 using the kernel. However, when I try to branch to the LiveDFU fonction stored in the kernel from the Image 1 execution, an Interrupt_illegalOperationHandler() is triggered.

    After autobaudlock is performed, I jump to the LiveDFU function stored at the adress 0x80100. To do so I use the method used in flashapi_ex3_live_firmware_update for F28004x.

    Unfortunately, it is the first time I encounter this Interrupt_illegalOperationHandler and I don't know what is the reason.

    I have checked that the LiveDFU function is at the expected position in memory and this is the case.

    Do you have any clue of the reason ?

    Could it be that the instruction at address 0x080100 is seen as an invalid instruction despite the fact that the function LiveDFU() is running as expected when run from Kernel Image ?

    EDIT :

    • Even if the call stack shows SysCtl_delay at adress 0x08010E, this is wrong. This function is not located at this address.
    • I try another location than 0x080100 without success.
  • UPDATE: 

    By looking at the disassembly code, I can see that the execution jumps to the correct address and starts executing the LiveDFU() function.
    However, when jumping into LdfuLoad() memory sector, there is no instruction to execute.


    In my opinion, this is normal as the LdfuLoad() function is not compiled in the active image but is only compiled by the static code.

    So even if the ".TI.ramfunc" code section is correctly copied from FLASH to RAM using this line :

    How can we expect the RAM to contain the instruction of the ldfuLoad() or ldfuCopyData() ?

    I think something is missing in the active image to copy the ldfu functions from the static flash to the correct RAM address.

    Thanks again for your help.

  • Hi Vic, 

    Are you able to share your .map file for the project to see where the LdfuLoad function is placed in memory?

    Thanks and regards,

    Charles

  • Hi Charles,

    Thank you for jumping in.
    Please see bellow the .map files.

    First one is for my static code (flash once).

    ******************************************************************************
                 TMS320C2000 Linker PC v22.6.1                     
    ******************************************************************************
    >> Linked Wed Jul 17 17:43:53 2024
    
    OUTPUT FILE NAME:   <flash_partition_test_f2838x.out>
    ENTRY POINT SYMBOL: "partitionSelect"  address: 00080000
    
    
    MEMORY CONFIGURATION
    
             name            origin    length      used     unused   attr    fill
    ----------------------  --------  ---------  --------  --------  ----  --------
      BOOT_RSVD             00000002   000001af  00000000  000001af  RWIX
      RAMM0                 000001b1   0000024f  00000000  0000024f  RWIX
      RAMM1                 00000400   000003f8  00000000  000003f8  RWIX
      RAMLS0                00008000   00000800  00000000  00000800  RWIX
      RAMLS1                00008800   00000800  00000000  00000800  RWIX
      RAMLS2                00009000   00000800  00000000  00000800  RWIX
      RAMLS3                00009800   00000800  00000000  00000800  RWIX
      RAMLS4                0000a000   00000800  00000000  00000800  RWIX
      RAMLS5                0000a800   00000800  0000000c  000007f4  RWIX
      RAMLS6                0000b000   00000800  00000000  00000800  RWIX
      RAMLS7                0000b800   00000800  00000000  00000800  RWIX
      RAMD0                 0000c000   00000800  00000000  00000800  RWIX
      RAMD1                 0000c800   00000800  00000000  00000800  RWIX
      RAMGS0                0000d000   00001000  00000005  00000ffb  RWIX
      RAMGS1                0000e000   00001000  00000000  00001000  RWIX
      RAMGS2                0000f000   00001000  00000000  00001000  RWIX
      RAMGS3                00010000   00001000  00000000  00001000  RWIX
      RAMGS4                00011000   00001000  00000000  00001000  RWIX
      RAMGS5                00012000   00001000  00000000  00001000  RWIX
      RAMGS6                00013000   00001000  00000000  00001000  RWIX
      RAMGS7                00014000   00001000  00000000  00001000  RWIX
      RAMGS8                00015000   00001000  00000000  00001000  RWIX
      RAMGS9                00016000   00001000  00000000  00001000  RWIX
      RAMGS10_13            00017000   00004000  00000d1f  000032e1  RWIX
      RAMGS14               0001b000   00001000  00000000  00001000  RWIX
      RAMGS15               0001c000   00000ff8  00000000  00000ff8  RWIX
      CMTOCPURAM            00038000   00000800  00000000  00000800  RWIX
      CPUTOCMRAM            00039000   00000800  00000000  00000800  RWIX
      CPU1TOCPU2RAM         0003a000   00000800  00000000  00000800  RWIX
      CPU2TOCPU1RAM         0003b000   00000800  00000000  00000800  RWIX
      CANA_MSG_RAM          00049000   00000800  00000000  00000800  RWIX
      CANB_MSG_RAM          0004b000   00000800  00000000  00000800  RWIX
      BEGIN                 00080000   00000100  0000007f  00000081  RWIX
      LIVEDFU_SECTOR        00081000   00000020  00000011  0000000f  RWIX
      STATIC_CODE           00081020   00002fe0  00002484  00000b5c  RWIX
      PART1_HEADER          00084000   00000100  00000000  00000100  RWIX
      PART2_HEADER          000a8100   00000100  00000000  00000100  RWIX
      RESET                 003fffc0   00000002  00000000  00000002  RWIX
    
    
    SECTION ALLOCATION MAP
    
     output                                  attributes/
    section   page    origin      length       input sections
    --------  ----  ----------  ----------   ----------------
    codestart 
    *          0    00080000    0000007f     
                      00080000    0000007f     PartitionSelector.obj (codestart:partitionSelect)
    
    .switch    0    00083478    0000001c     
                      00083478    0000001c     flash_kernel_ldfu.obj (.switch:findSize)
    
    .cinit     0    00083498    00000012     
                      00083498    00000004     (.cinit..bss.load) [load image, compression = zero_init]
                      0008349c    00000004     (.cinit.DataBufferSection.load) [load image, compression = zero_init]
                      000834a0    00000002     (__TI_handler_table)
                      000834a2    00000008     (__TI_cinit_table)
    
    .reset     0    003fffc0    00000000     DSECT
    
    .init_array 
    *          0    00081020    00000000     UNINITIALIZED
    
    .bss       0    0000a800    0000000c     UNINITIALIZED
                      0000a800    0000000a     flash_kernel_sci_get_function.obj (.bss)
                      0000a80a    00000002     flash_kernel_ldfu.obj (.bss)
    
    DataBufferSection 
    *          0    0000d000    00000005     UNINITIALIZED
                      0000d000    00000005     flash_kernel_ldfu.obj (DataBufferSection)
    
    livedfu_section 
    *          0    00081000    00000011     
                      00081000    00000011     flash_kernel_ldfu.obj (livedfu_section:liveDFU)
    
    .const     0    00083218    00000260     
                      00083218    00000073     device.obj (.const:.string)
                      0008328b    00000001     --HOLE-- [fill = 0]
                      0008328c    00000060     PartitionSelector.obj (.const:.string)
                      000832ec    0000005f     flash_kernel_sci_get_function.obj (.const:.string)
                      0008334b    00000001     --HOLE-- [fill = 0]
                      0008334c    00000038     flash.obj (.const:.string)
                      00083384    00000037     gpio.obj (.const:.string)
                      000833bb    00000001     --HOLE-- [fill = 0]
                      000833bc    00000037     sysctl.obj (.const:.string)
                      000833f3    00000001     --HOLE-- [fill = 0]
                      000833f4    00000034     dcc.obj (.const:.string)
                      00083428    00000034     sci.obj (.const:.string)
                      0008345c    0000001c     flash_kernel_ldfu.obj (.const:secAddress)
    
    .TI.ramfunc 
    *          0    000824f8    00000d1f     RUN ADDR = 00017000
                      000824f8    000002e1     F2838x_C28x_FlashAPI.lib : FlashStateMachine.obj (.text:_Fapi_setupFlashStateMachine)
                      000827d9    000001a5                              : Program.obj (.text:Fapi_issueProgrammingCommand)
                      0008297e    0000007e                              : Read.obj (.text:_Fapi_loopRegionForValue)
                      000829fc    00000079                              : FlashStateMachine.obj (.text:Fapi_setupEepromSectorEnable)
                      00082a75    00000066                              : Init.obj (.text:Fapi_initializeAPI)
                      00082adb    00000063                              : BlankCheck.obj (.text:Fapi_doBlankCheck)
                      00082b3e    00000061                              : Read.obj (.text:_Fapi_checkRegionForValue)
                      00082b9f    00000053                              : FlashStateMachine.obj (.text:_Fapi_issueFsmCommand)
                      00082bf2    0000003b                              : Utilities.obj (.text:Fapi_isAddressValid)
                      00082c2d    00000038                              : Async.obj (.text:Fapi_issueAsyncCommandWithAddress)
                      00082c65    00000031                              : FlashStateMachine.obj (.text:Fapi_setupBankSectorEnable)
                      00082c96    0000002f                              : FlashStateMachine.obj (.text:Fapi_setActiveFlashBank)
                      00082cc5    0000002c                              : Utilities.obj (.text:Fapi_calculateFletcherChecksum)
                      00082cf1    0000002a                              : Utilities.obj (.text:_Fapi_divideUnsignedLong)
                      00082d1b    00000026                              : FlashStateMachine.obj (.text:_Fapi_setupSectorsForWrite)
                      00082d41    00000022                              : FlashStateMachine.obj (.text:Fapi_isAddressEcc)
                      00082d63    00000015                              : Read.obj (.text:Fapi_flushPipeline)
                      00082d78    0000000f                              : Verify.obj (.text:Fapi_doVerify)
                      00082d87    0000000e                              : FlashStateMachine.obj (.text:Fapi_checkFsmForReady)
                      00082d95    0000000e                              : Utilities.obj (.text:_Fapi_scaleCycleValues)
                      00082da3    0000000b                              : Utilities.obj (.text:_Fapi_calculateOtpChecksum)
                      00082dae    0000000a                              : Init.obj (.bss) [fill = 0]
                      00082db8    00000007                              : FlashStateMachine.obj (.text:Fapi_getFsmStatus)
                      00082dbf    00000002                              : FlashStateMachine.obj (.text:Fapi_serviceWatchdogTimer)
                      00082dc1    000002cf     flash_kernel_ldfu.obj (.TI.ramfunc:ldfuCopyData)
                      00083090    0000003f     flash.obj (.TI.ramfunc:Flash_initModule)
                      000830cf    0000002f     flash_kernel_ldfu.obj (.TI.ramfunc:ldfuLoad)
                      000830fe    0000002c     flash.obj (.TI.ramfunc:Flash_setBankPowerMode)
                      0008312a    00000024     flash.obj (.TI.ramfunc:Flash_setWaitstates)
                      0008314e    00000023     flash_kernel_ldfu.obj (.TI.ramfunc:revInit)
                      00083171    0000001d     flash.obj (.TI.ramfunc:Flash_setPumpPowerMode)
                      0008318e    00000018     flash.obj (.TI.ramfunc:Flash_disableCache)
                      000831a6    00000018     flash.obj (.TI.ramfunc:Flash_disablePrefetch)
                      000831be    00000017     flash.obj (.TI.ramfunc:Flash_enableCache)
                      000831d5    00000017     flash.obj (.TI.ramfunc:Flash_enablePrefetch)
                      000831ec    00000016     flash.obj (.TI.ramfunc:Flash_enableECC)
                      00083202    0000000b     flash_kernel_ldfu.obj (.TI.ramfunc:fmstatFail)
                      0008320d    00000006     flash_kernel_sci_flash_kernel.obj (.TI.ramfunc:exampleError)
                      00083213    00000004     sysctl.obj (.TI.ramfunc)
    
    .text      0    00081020    000014d7     
                      00081020    00000167     device.obj (.text:Device_enableAllPeripherals)
                      00081187    00000132     sysctl.obj (.text:SysCtl_setClock)
                      000812b9    00000118     sysctl.obj (.text:SysCtl_isPLLValid)
                      000813d1    00000113     sysctl.obj (.text:SysCtl_setAuxClock)
                      000814e4    000000cb     dcc.obj (.text:DCC_verifyClockFrequency)
                      000815af    00000091     sysctl.obj (.text:SysCtl_getAuxClock)
                      00081640    00000088     rts2800_fpu32_eabi.lib : fs_div28.asm.obj (.text)
                      000816c8    00000076     gpio.obj (.text:GPIO_setControllerCore)
                      0008173e    00000076     gpio.obj (.text:GPIO_setQualificationMode)
                      000817b4    00000073     dcc.obj (.text:DCC_setCounterSeeds)
                      00081827    00000073     sysctl.obj (.text:DCC_setCounterSeeds)
                      0008189a    00000073     sysctl.obj (.text:SysCtl_getClock)
                      0008190d    0000006f     device.obj (.text:Device_init)
                      0008197c    0000006f     gpio.obj (.text:GPIO_setPadConfig)
                      000819eb    00000057     flash_kernel_sci_get_function.obj (.text:sciGetFunction)
                      00081a42    00000055     sysctl.obj (.text:SysCtl_selectOscSourceAuxPLL)
                      00081a97    00000054     flash_kernel_sci_get_function.obj (.text:sciGetPacket)
                      00081aeb    0000004e     gpio.obj (.text:GPIO_setDirectionMode)
                      00081b39    00000049     sci.obj (.text:SCI_setConfig)
                      00081b82    00000049     sysctl.obj (.text:SysCtl_pollX1Counter)
                      00081bcb    00000047     flash_kernel_sci_get_function.obj (.text:sciSendPacket)
                      00081c12    00000045     sci.obj (.text:SCI_disableInterrupt)
                      00081c57    00000044     PartitionSelector.obj (.text:GPIO_writePin)
                      00081c9b    00000042     sysctl.obj (.text:SysCtl_selectOscSource)
                      00081cdd    0000003d     interrupt.obj (.text:Interrupt_initModule)
                      00081d1a    0000003b     PartitionSelector.obj (.text:GPIO_togglePin)
                      00081d55    00000037     gpio.obj (.text:GPIO_setPinConfig)
                      00081d8c    00000036     sysctl.obj (.text:SysCtl_selectXTAL)
                      00081dc2    00000032     flash_kernel_sci_get_function.obj (.text:SCI_lockAutobaud)
                      00081df4    0000002e     flash_kernel_sci_get_function.obj (.text:SCI_isTransmitterBusy)
                      00081e22    0000002c     flash_kernel_sci_get_function.obj (.text:sciaInit)
                      00081e4e    0000002b     flash_kernel_sci_get_function.obj (.text:sciPinmuxOption)
                      00081e79    00000026     flash_kernel_sci_get_function.obj (.text:sciSendWord)
                      00081e9f    00000024     dcc.obj (.text:DCC_enableSingleShotMode)
                      00081ec3    00000024     sysctl.obj (.text:DCC_enableSingleShotMode)
                      00081ee7    00000024     sysctl.obj (.text:SysCtl_getLowSpeedClock)
                      00081f0b    00000021     device.obj (.text:Device_initGPIO)
                      00081f2c    00000020     flash_kernel_sci_get_function.obj (.text:SCI_isFIFOEnabled)
                      00081f4c    00000020     sysctl.obj (.text:SysCtl_selectXTALSingleEnded)
                      00081f6c    0000001e     dcc.obj (.text:DCC_setCounter0ClkSource)
                      00081f8a    0000001e     sysctl.obj (.text:DCC_setCounter0ClkSource)
                      00081fa8    0000001e     dcc.obj (.text:DCC_setCounter1ClkSource)
                      00081fc6    0000001e     sysctl.obj (.text:DCC_setCounter1ClkSource)
                      00081fe4    0000001e     device.obj (.text:Device_verifyXTAL)
                      00082002    0000001e     interrupt.obj (.text:Interrupt_initVectorTable)
                      00082020    0000001d     rts2800_fpu32_eabi.lib : memcpy.c.obj (.text)
                      0008203d    0000001c     dcc.obj (.text:DCC_getErrorStatus)
                      00082059    0000001c     dcc.obj (.text:DCC_getSingleShotStatus)
                      00082075    0000001c     flash_kernel_sci_get_function.obj (.text:sciSendChecksum)
                      00082091    0000001b     flash_kernel_sci_get_function.obj (.text:SCI_isBaseValid)
                      000820ac    0000001b     sci.obj (.text:SCI_isBaseValid)
                      000820c7    0000001a     dcc.obj (.text:DCC_isBaseValid)
                      000820e1    0000001a     sysctl.obj (.text:DCC_isBaseValid)
                      000820fb    0000001a     flash_kernel_sci_get_function.obj (.text:SCI_isDataAvailableNonFIFO)
                      00082115    0000001a     flash_kernel_sci_get_function.obj (.text:SCI_isSpaceAvailableNonFIFO)
                      0008212f    00000019     flash_kernel_sci_get_function.obj (.text:SCI_writeCharBlockingNonFIFO)
                      00082148    00000019     flash_kernel_ldfu.obj (.text:findSize)
                      00082161    00000019     flash_kernel_sci_get_function.obj (.text:sciaGetOnlyWordData)
                      0008217a    00000019     flash_kernel_sci_get_function.obj (.text:sciaGetWordData)
                      00082193    00000018     sci.obj (.text:SCI_disableModule)
                      000821ab    00000018     flash_kernel_sci_get_function.obj (.text:SCI_performSoftwareReset)
                      000821c3    00000018     flash_kernel_sci_get_function.obj (.text:SCI_resetChannels)
                      000821db    00000017     device.obj (.text:SysCtl_enablePeripheral)
                      000821f2    00000017     sysctl.obj (.text:SysCtl_enablePeripheral)
                      00082209    00000017     flash_kernel_sci_flash_kernel.obj (.text:initFlashSectors)
                      00082220    00000016     dcc.obj (.text:DCC_disableDoneSignal)
                      00082236    00000016     sysctl.obj (.text:DCC_disableDoneSignal)
                      0008224c    00000016     dcc.obj (.text:DCC_enableDoneSignal)
                      00082262    00000016     interrupt.obj (.text:Interrupt_defaultHandler)
                      00082278    00000016     flash_kernel_sci_get_function.obj (.text:SCI_readCharBlockingNonFIFO)
                      0008228e    00000015     dcc.obj (.text:DCC_clearDoneFlag)
                      000822a3    00000015     sysctl.obj (.text:DCC_clearDoneFlag)
                      000822b8    00000015     dcc.obj (.text:DCC_clearErrorFlag)
                      000822cd    00000015     sysctl.obj (.text:DCC_clearErrorFlag)
                      000822e2    00000015     dcc.obj (.text:DCC_disableErrorSignal)
                      000822f7    00000015     sysctl.obj (.text:DCC_disableErrorSignal)
                      0008230c    00000015     dcc.obj (.text:DCC_enableErrorSignal)
                      00082321    00000015     device.obj (.text:GPIO_unlockPortConfig)
                      00082336    00000014     dcc.obj (.text:DCC_disableModule)
                      0008234a    00000014     sysctl.obj (.text:DCC_disableModule)
                      0008235e    00000014     dcc.obj (.text:DCC_enableModule)
                      00082372    00000014     sysctl.obj (.text:DCC_enableModule)
                      00082386    00000013     device.obj (.text:Device_enableUnbondedGPIOPullupsFor176Pin)
                      00082399    00000013     flash_kernel_sci_get_function.obj (.text:SCI_enableModule)
                      000823ac    00000013     sci.obj (.text:SCI_enableModule)
                      000823bf    00000012     flash_kernel_ldfu.obj (.text:getLongData)
                      000823d1    00000011     device.obj (.text:Device_enableUnbondedGPIOPullups)
                      000823e2    00000011     device.obj (.text:SysCtl_setCMClk)
                      000823f3    00000010     flash.obj (.text:Flash_isCtrlBaseValid)
                      00082403    00000010     flash.obj (.text:Flash_isECCBaseValid)
                      00082413    00000010     flash_kernel_ldfu.obj (.text:readReservedFn)
                      00082423    0000000f     ipc.obj (.text:Interrupt_unregister)
                      00082432    0000000e     PartitionSelector.obj (.text:GPIO_isPinValid)
                      00082440    0000000e     gpio.obj (.text:GPIO_isPinValid)
                      0008244e    0000000d     interrupt.obj (.text:Interrupt_disableGlobal)
                      0008245b    0000000d     device.obj (.text:SysCtl_setLowSpeedClock)
                      00082468    0000000d     flash_kernel_sci_get_function.obj (.text:SysCtl_setLowSpeedClock)
                      00082475    0000000d     rts2800_fpu32_eabi.lib : copy_zero_init.c.obj (.text:decompress:ZI:__TI_zero_init_nomemset)
                      00082482    0000000d     flash_kernel_sci_get_function.obj (.text:sciaGetACK)
                      0008248f    0000000c     sysctl.obj (.text:SysCtl_setPLLSysClk)
                      0008249b    0000000b     sysctl.obj (.text:SysCtl_isMCDClockFailureDetected)
                      000824a6    0000000a     interrupt.obj (.text:Interrupt_illegalOperationHandler)
                      000824b0    0000000a     interrupt.obj (.text:Interrupt_nmiHandler)
                      000824ba    0000000a     flash_kernel_sci_get_function.obj (.text:SysCtl_enableWatchdog)
                      000824c4    00000008     device.obj (.text:SysCtl_disableWatchdog)
                      000824cc    00000008     flash_kernel_sci_get_function.obj (.text:sendACK)
                      000824d4    00000008     flash_kernel_sci_get_function.obj (.text:sendNAK)
                      000824dc    00000007     sysctl.obj (.text:SysCtl_resetMCD)
                      000824e3    00000007     device.obj (.text:__error__)
                      000824ea    00000007     flash_kernel_sci_get_function.obj (.text:sciaFlush)
                      000824f1    00000006     flash_kernel_sci_get_function.obj (.text:SysCtl_enableWatchdogReset)
    
    MODULE SUMMARY
    
           Module                              code    ro data   rw data
           ------                              ----    -------   -------
        .\PartitionSelector\
           PartitionSelector.obj               268     96        0      
        +--+-----------------------------------+-------+---------+---------+
           Total:                              268     96        0      
                                                                        
        .\device\
           device.obj                          658     115       0      
        +--+-----------------------------------+-------+---------+---------+
           Total:                              658     115       0      
                                                                        
        .\device\driverlib\
           sysctl.obj                          1890    55        0      
           dcc.obj                             664     52        0      
           flash.obj                           608     56        0      
           gpio.obj                            494     55        0      
           sci.obj                             212     52        0      
           interrupt.obj                       146     0         0      
           ipc.obj                             15      0         0      
        +--+-----------------------------------+-------+---------+---------+
           Total:                              4029    270       0      
                                                                        
        .\flash_kernel\
           flash_kernel_ldfu.obj               1700    56        7      
        +--+-----------------------------------+-------+---------+---------+
           Total:                              1700    56        7      
                                                                        
        .\flash_kernel\flash_kernel_sci\
           flash_kernel_sci_get_function.obj   831     95        10     
           flash_kernel_sci_flash_kernel.obj   35      0         0      
        +--+-----------------------------------+-------+---------+---------+
           Total:                              866     95        10     
                                                                        
        C:/ti/c2000/C2000Ware_5_00_00_00/libraries/flash_api/f2838x/c28x/lib/F2838x_C28x_FlashAPI.lib
           FlashStateMachine.obj               2264    0         0      
           Program.obj                         842     0         0      
           Read.obj                            488     0         0      
           Utilities.obj                       340     0         0      
           Init.obj                            204     0         20     
           BlankCheck.obj                      198     0         0      
           Async.obj                           112     0         0      
           Verify.obj                          30      0         0      
        +--+-----------------------------------+-------+---------+---------+
           Total:                              4478    0         20     
                                                                        
        C:\ti\ccs1271\ccs\tools\compiler\ti-cgt-c2000_22.6.1.LTS\lib\rts2800_fpu32_eabi.lib
           fs_div28.asm.obj                    136     0         0      
           memcpy.c.obj                        29      0         0      
           copy_zero_init.c.obj                13      0         0      
        +--+-----------------------------------+-------+---------+---------+
           Total:                              178     0         0      
                                                                        
           Linker Generated:                   0       18        0      
        +--+-----------------------------------+-------+---------+---------+
           Grand Total:                        12177   650       37     
    
    
    LINKER GENERATED COPY TABLES
    
    __TI_cinit_table @ 000834a2 records: 2, size/record: 4, table size: 8
    	.bss: load addr=00083498, load size=00000004 bytes, run addr=0000a800, run size=0000000c bytes, compression=zero_init
    	DataBufferSection: load addr=0008349c, load size=00000004 bytes, run addr=0000d000, run size=00000005 bytes, compression=zero_init
    
    
    LINKER GENERATED HANDLER TABLE
    
    __TI_handler_table @ 000834a0 records: 1, size/record: 2, table size: 2
    	index: 0, handler: __TI_zero_init
    
    
    GLOBAL DATA SYMBOLS: SORTED BY DATA PAGE
    
    address     data page           name
    --------    ----------------    ----
    0000a800     2a0 (0000a800)     checksum
    0000a802     2a0 (0000a800)     statusCode
    0000a80a     2a0 (0000a800)     getWordData
    
    0000d000     340 (0000d000)     BUFF
    
    0008345c    20d1 (00083440)     secAddress
    
    
    GLOBAL SYMBOLS: SORTED ALPHABETICALLY BY Name 
    
    page  address   name                                     
    ----  -------   ----                                     
    0     0000d000  BUFF                                     
    0     000814e4  DCC_verifyClockFrequency                 
    0     00081020  Device_enableAllPeripherals              
    0     000823d1  Device_enableUnbondedGPIOPullups         
    0     00082386  Device_enableUnbondedGPIOPullupsFor176Pin
    0     0008190d  Device_init                              
    0     00081f0b  Device_initGPIO                          
    0     00081fe4  Device_verifyXTAL                        
    0     000178b6  Fapi_GlobalInit                          
    0     000177cd  Fapi_calculateFletcherChecksum           
    0     0001788f  Fapi_checkFsmForReady                    
    0     000175e3  Fapi_doBlankCheck                        
    0     00017880  Fapi_doVerify                            
    0     0001786b  Fapi_flushPipeline                       
    0     000178c0  Fapi_getFsmStatus                        
    0     0001757d  Fapi_initializeAPI                       
    0     00017849  Fapi_isAddressEcc                        
    0     000176fa  Fapi_isAddressValid                      
    0     00017735  Fapi_issueAsyncCommandWithAddress        
    0     000172e1  Fapi_issueProgrammingCommand             
    0     000178c7  Fapi_serviceWatchdogTimer                
    0     0001779e  Fapi_setActiveFlashBank                  
    0     0001776d  Fapi_setupBankSectorEnable               
    0     00017504  Fapi_setupEepromSectorEnable             
    0     00017b98  Flash_initModule                         
    0     000816c8  GPIO_setControllerCore                   
    0     00081aeb  GPIO_setDirectionMode                    
    0     0008197c  GPIO_setPadConfig                        
    0     00081d55  GPIO_setPinConfig                        
    0     0008173e  GPIO_setQualificationMode                
    0     00082262  Interrupt_defaultHandler                 
    0     000824a6  Interrupt_illegalOperationHandler        
    0     00081cdd  Interrupt_initModule                     
    0     00082002  Interrupt_initVectorTable                
    0     000824b0  Interrupt_nmiHandler                     
    abs   00083217  RamfuncsLoadEnd                          
    abs   00000d1f  RamfuncsLoadSize                         
    abs   000824f8  RamfuncsLoadStart                        
    abs   00017d1f  RamfuncsRunEnd                           
    abs   00000d1f  RamfuncsRunSize                          
    abs   00017000  RamfuncsRunStart                         
    0     00081c12  SCI_disableInterrupt                     
    0     00081b39  SCI_setConfig                            
    0     00017d1b  SysCtl_delay                             
    0     000815af  SysCtl_getAuxClock                       
    0     0008189a  SysCtl_getClock                          
    0     00081ee7  SysCtl_getLowSpeedClock                  
    0     000812b9  SysCtl_isPLLValid                        
    0     00081c9b  SysCtl_selectOscSource                   
    0     00081a42  SysCtl_selectOscSourceAuxPLL             
    0     00081d8c  SysCtl_selectXTAL                        
    0     00081f4c  SysCtl_selectXTALSingleEnded             
    0     000813d1  SysCtl_setAuxClock                       
    0     00081187  SysCtl_setClock                          
    0     000178ab  _Fapi_calculateOtpChecksum               
    0     00017646  _Fapi_checkRegionForValue                
    0     000177f9  _Fapi_divideUnsignedLong                 
    0     000176a7  _Fapi_issueFsmCommand                    
    0     00017486  _Fapi_loopRegionForValue                 
    0     0001789d  _Fapi_scaleCycleValues                   
    0     00017823  _Fapi_setupSectorsForWrite               
    0     000834a2  __TI_CINIT_Base                          
    0     000834aa  __TI_CINIT_Limit                         
    0     000834aa  __TI_CINIT_Warm                          
    0     000834a0  __TI_Handler_Table_Base                  
    0     000834a2  __TI_Handler_Table_Limit                 
    abs   ffffffff  __TI_pprof_out_hndl                      
    abs   ffffffff  __TI_prof_data_size                      
    abs   ffffffff  __TI_prof_data_start                     
    0     00082475  __TI_zero_init_nomemset                  
    0     00081640  __c28xabi_divf                           
    0     000824e3  __error__                                
    0     0000a800  checksum                                 
    0     00017d15  exampleError                             
    0     00082148  findSize                                 
    0     00017d0a  fmstatFail                               
    0     000823bf  getLongData                              
    0     0000a80a  getWordData                              
    0     00082209  initFlashSectors                         
    0     000178c9  ldfuCopyData                             
    0     00017bd7  ldfuLoad                                 
    0     00081000  liveDFU                                  
    0     00082020  memcpy                                   
    0     00080000  partitionSelect                          
    0     00082413  readReservedFn                           
    0     00017c56  revInit                                  
    0     000819eb  sciGetFunction                           
    0     00081a97  sciGetPacket                             
    0     00081e4e  sciPinmuxOption                          
    0     00082075  sciSendChecksum                          
    0     00081bcb  sciSendPacket                            
    0     00081e79  sciSendWord                              
    0     000824ea  sciaFlush                                
    0     00082482  sciaGetACK                               
    0     00082161  sciaGetOnlyWordData                      
    0     0008217a  sciaGetWordData                          
    0     00081e22  sciaInit                                 
    0     0008345c  secAddress                               
    0     000824cc  sendACK                                  
    0     000824d4  sendNAK                                  
    0     0000a802  statusCode                               
    
    
    GLOBAL SYMBOLS: SORTED BY Symbol Address 
    
    page  address   name                                     
    ----  -------   ----                                     
    0     0000a800  checksum                                 
    0     0000a802  statusCode                               
    0     0000a80a  getWordData                              
    0     0000d000  BUFF                                     
    0     000172e1  Fapi_issueProgrammingCommand             
    0     00017486  _Fapi_loopRegionForValue                 
    0     00017504  Fapi_setupEepromSectorEnable             
    0     0001757d  Fapi_initializeAPI                       
    0     000175e3  Fapi_doBlankCheck                        
    0     00017646  _Fapi_checkRegionForValue                
    0     000176a7  _Fapi_issueFsmCommand                    
    0     000176fa  Fapi_isAddressValid                      
    0     00017735  Fapi_issueAsyncCommandWithAddress        
    0     0001776d  Fapi_setupBankSectorEnable               
    0     0001779e  Fapi_setActiveFlashBank                  
    0     000177cd  Fapi_calculateFletcherChecksum           
    0     000177f9  _Fapi_divideUnsignedLong                 
    0     00017823  _Fapi_setupSectorsForWrite               
    0     00017849  Fapi_isAddressEcc                        
    0     0001786b  Fapi_flushPipeline                       
    0     00017880  Fapi_doVerify                            
    0     0001788f  Fapi_checkFsmForReady                    
    0     0001789d  _Fapi_scaleCycleValues                   
    0     000178ab  _Fapi_calculateOtpChecksum               
    0     000178b6  Fapi_GlobalInit                          
    0     000178c0  Fapi_getFsmStatus                        
    0     000178c7  Fapi_serviceWatchdogTimer                
    0     000178c9  ldfuCopyData                             
    0     00017b98  Flash_initModule                         
    0     00017bd7  ldfuLoad                                 
    0     00017c56  revInit                                  
    0     00017d0a  fmstatFail                               
    0     00017d15  exampleError                             
    0     00017d1b  SysCtl_delay                             
    0     00080000  partitionSelect                          
    0     00081000  liveDFU                                  
    0     00081020  Device_enableAllPeripherals              
    0     00081187  SysCtl_setClock                          
    0     000812b9  SysCtl_isPLLValid                        
    0     000813d1  SysCtl_setAuxClock                       
    0     000814e4  DCC_verifyClockFrequency                 
    0     000815af  SysCtl_getAuxClock                       
    0     00081640  __c28xabi_divf                           
    0     000816c8  GPIO_setControllerCore                   
    0     0008173e  GPIO_setQualificationMode                
    0     0008189a  SysCtl_getClock                          
    0     0008190d  Device_init                              
    0     0008197c  GPIO_setPadConfig                        
    0     000819eb  sciGetFunction                           
    0     00081a42  SysCtl_selectOscSourceAuxPLL             
    0     00081a97  sciGetPacket                             
    0     00081aeb  GPIO_setDirectionMode                    
    0     00081b39  SCI_setConfig                            
    0     00081bcb  sciSendPacket                            
    0     00081c12  SCI_disableInterrupt                     
    0     00081c9b  SysCtl_selectOscSource                   
    0     00081cdd  Interrupt_initModule                     
    0     00081d55  GPIO_setPinConfig                        
    0     00081d8c  SysCtl_selectXTAL                        
    0     00081e22  sciaInit                                 
    0     00081e4e  sciPinmuxOption                          
    0     00081e79  sciSendWord                              
    0     00081ee7  SysCtl_getLowSpeedClock                  
    0     00081f0b  Device_initGPIO                          
    0     00081f4c  SysCtl_selectXTALSingleEnded             
    0     00081fe4  Device_verifyXTAL                        
    0     00082002  Interrupt_initVectorTable                
    0     00082020  memcpy                                   
    0     00082075  sciSendChecksum                          
    0     00082148  findSize                                 
    0     00082161  sciaGetOnlyWordData                      
    0     0008217a  sciaGetWordData                          
    0     00082209  initFlashSectors                         
    0     00082262  Interrupt_defaultHandler                 
    0     00082386  Device_enableUnbondedGPIOPullupsFor176Pin
    0     000823bf  getLongData                              
    0     000823d1  Device_enableUnbondedGPIOPullups         
    0     00082413  readReservedFn                           
    0     00082475  __TI_zero_init_nomemset                  
    0     00082482  sciaGetACK                               
    0     000824a6  Interrupt_illegalOperationHandler        
    0     000824b0  Interrupt_nmiHandler                     
    0     000824cc  sendACK                                  
    0     000824d4  sendNAK                                  
    0     000824e3  __error__                                
    0     000824ea  sciaFlush                                
    0     0008345c  secAddress                               
    0     000834a0  __TI_Handler_Table_Base                  
    0     000834a2  __TI_CINIT_Base                          
    0     000834a2  __TI_Handler_Table_Limit                 
    0     000834aa  __TI_CINIT_Limit                         
    0     000834aa  __TI_CINIT_Warm                          
    abs   00000d1f  RamfuncsLoadSize                         
    abs   00000d1f  RamfuncsRunSize                          
    abs   00017000  RamfuncsRunStart                         
    abs   00017d1f  RamfuncsRunEnd                           
    abs   000824f8  RamfuncsLoadStart                        
    abs   00083217  RamfuncsLoadEnd                          
    abs   ffffffff  __TI_pprof_out_hndl                      
    abs   ffffffff  __TI_prof_data_size                      
    abs   ffffffff  __TI_prof_data_start                     
    
    [101 symbols]
    

    Second one is for a FW image of partition 1 that should be able to write a new image to partition 2.

    LdfuLoad is not included in this map file.

    ******************************************************************************
                 TMS320C2000 Linker PC v22.6.1                     
    ******************************************************************************
    >> Linked Wed Jul 17 18:41:14 2024
    
    OUTPUT FILE NAME:   <flash_partition_test_f2838x.out>
    ENTRY POINT SYMBOL: "code_start"  address: 00088000
    
    
    MEMORY CONFIGURATION
    
             name            origin    length      used     unused   attr    fill
    ----------------------  --------  ---------  --------  --------  ----  --------
      BOOT_RSVD             00000002   000001af  00000000  000001af  RWIX
      RAMM0                 000001b1   0000024f  00000000  0000024f  RWIX
      RAMM1                 00000400   000003f8  00000200  000001f8  RWIX
      RAMLS0                00008000   00000800  00000000  00000800  RWIX
      RAMLS1                00008800   00000800  00000000  00000800  RWIX
      RAMLS2                00009000   00000800  00000000  00000800  RWIX
      RAMLS3                00009800   00000800  00000000  00000800  RWIX
      RAMLS4                0000a000   00000800  00000000  00000800  RWIX
      RAMLS5                0000a800   00000800  00000019  000007e7  RWIX
      RAMLS6                0000b000   00000800  00000000  00000800  RWIX
      RAMLS7                0000b800   00000800  00000000  00000800  RWIX
      RAMD0                 0000c000   00000800  00000000  00000800  RWIX
      RAMD1                 0000c800   00000800  00000000  00000800  RWIX
      RAMGS0                0000d000   00001000  00000000  00001000  RWIX
      RAMGS1                0000e000   00001000  00000000  00001000  RWIX
      RAMGS2                0000f000   00001000  00000000  00001000  RWIX
      RAMGS3                00010000   00001000  00000000  00001000  RWIX
      RAMGS4                00011000   00001000  00000000  00001000  RWIX
      RAMGS5                00012000   00001000  00000000  00001000  RWIX
      RAMGS6                00013000   00001000  00000000  00001000  RWIX
      RAMGS7                00014000   00001000  00000000  00001000  RWIX
      RAMGS8                00015000   00001000  00000000  00001000  RWIX
      RAMGS9                00016000   00001000  00000000  00001000  RWIX
      RAMGS10_13            00017000   00004000  0000051a  00003ae6  RWIX
      RAMGS14               0001b000   00001000  00000000  00001000  RWIX
      RAMGS15               0001c000   00000ff8  00000000  00000ff8  RWIX
      CMTOCPURAM            00038000   00000800  00000000  00000800  RWIX
      CPUTOCMRAM            00039000   00000800  00000000  00000800  RWIX
      CPU1TOCPU2RAM         0003a000   00000800  00000000  00000800  RWIX
      CPU2TOCPU1RAM         0003b000   00000800  00000000  00000800  RWIX
      CANA_MSG_RAM          00049000   00000800  00000000  00000800  RWIX
      CANB_MSG_RAM          0004b000   00000800  00000000  00000800  RWIX
      PART1_HEADER          00084000   00000100  00000000  00000100  RWIX
      FW_IMAGE_0            00084100   00003f00  000022e5  00001c1b  RWIX
      BEGIN                 00088000   00000100  00000002  000000fe  RWIX
      FW_IMAGE_1            00088100   0001ff00  00000000  0001ff00  RWIX
      RESET                 003fffc0   00000002  00000000  00000002  RWIX
    
    
    SECTION ALLOCATION MAP
    
     output                                  attributes/
    section   page    origin      length       input sections
    --------  ----  ----------  ----------   ----------------
    .cinit     0    000863e8    0000000a     
                      000863e8    00000004     (.cinit..bss.load) [load image, compression = zero_init]
                      000863ec    00000002     (__TI_handler_table)
                      000863ee    00000004     (__TI_cinit_table)
    
    codestart 
    *          0    00088000    00000002     
                      00088000    00000002     flash_kernel_codestartbranch.obj (codestart)
    
    .reset     0    003fffc0    00000000     DSECT
    
    .stack     0    00000400    00000200     UNINITIALIZED
                      00000400    00000200     --HOLE--
    
    .init_array 
    *          0    00084100    00000000     UNINITIALIZED
    
    .bss       0    0000a800    00000019     UNINITIALIZED
                      0000a800    0000000a     ISRs.obj (.bss:data)
                      0000a80a    0000000a     flash_kernel_sci_get_function.obj (.bss)
                      0000a814    00000002     ISRs.obj (.bss)
                      0000a816    00000002     flash_kernel_ldfu.obj (.bss)
                      0000a818    00000001     system_init.obj (.bss)
    
    .const     0    00085e38    000005b0     
                      00085e38    00000098     driverlib.lib : flash.obj (.const:.string)
                      00085ed0    00000097                   : gpio.obj (.const:.string)
                      00085f67    00000001     --HOLE-- [fill = 0]
                      00085f68    00000097                   : sysctl.obj (.const:.string)
                      00085fff    00000001     --HOLE-- [fill = 0]
                      00086000    00000094                   : dcc.obj (.const:.string)
                      00086094    00000094                   : sci.obj (.const:.string)
                      00086128    0000008a     system_init.obj (.const:.string)
                      000861b2    00000086     ISRs.obj (.const:.string)
                      00086238    00000086     app.obj (.const:.string)
                      000862be    00000055     device.obj (.const:.string)
                      00086313    00000001     --HOLE-- [fill = 0]
                      00086314    0000004f     driverlib.lib : cputimer.obj (.const:.string)
                      00086363    00000001     --HOLE-- [fill = 0]
                      00086364    00000042     flash_kernel_ldfu.obj (.const:.string)
                      000863a6    00000042     flash_kernel_sci_get_function.obj (.const:.string)
    
    .TI.ramfunc 
    *          0    00084100    0000051a     RUN ADDR = 00017000
                      00084100    000002e1     F2838x_C28x_FlashAPI.lib : FlashStateMachine.obj (.text:_Fapi_setupFlashStateMachine)
                      000843e1    00000066                              : Init.obj (.text:Fapi_initializeAPI)
                      00084447    0000002f                              : FlashStateMachine.obj (.text:Fapi_setActiveFlashBank)
                      00084476    0000002c                              : Utilities.obj (.text:Fapi_calculateFletcherChecksum)
                      000844a2    0000002a                              : Utilities.obj (.text:_Fapi_divideUnsignedLong)
                      000844cc    0000000e                              : Utilities.obj (.text:_Fapi_scaleCycleValues)
                      000844da    0000000b                              : Utilities.obj (.text:_Fapi_calculateOtpChecksum)
                      000844e5    00000001     --HOLE-- [fill = 0]
                      000844e6    0000000a                              : Init.obj (.bss) [fill = 0]
                      000844f0    00000002                              : FlashStateMachine.obj (.text:Fapi_serviceWatchdogTimer)
                      000844f2    0000003f     driverlib.lib : flash.obj (.TI.ramfunc:Flash_initModule)
                      00084531    0000002c                   : flash.obj (.TI.ramfunc:Flash_setBankPowerMode)
                      0008455d    00000022                   : flash.obj (.TI.ramfunc:Flash_setWaitstates)
                      0008457f    0000001d                   : flash.obj (.TI.ramfunc:Flash_setPumpPowerMode)
                      0008459c    00000018                   : flash.obj (.TI.ramfunc:Flash_disableCache)
                      000845b4    00000018                   : flash.obj (.TI.ramfunc:Flash_disablePrefetch)
                      000845cc    00000017                   : flash.obj (.TI.ramfunc:Flash_enableCache)
                      000845e3    00000017                   : flash.obj (.TI.ramfunc:Flash_enablePrefetch)
                      000845fa    00000016                   : flash.obj (.TI.ramfunc:Flash_enableECC)
                      00084610    00000006     flash_kernel_sci_flash_kernel.obj (.TI.ramfunc:exampleError)
                      00084616    00000004     driverlib.lib : sysctl.obj (.TI.ramfunc)
    
    .text      0    00084620    00001811     
                      00084620    00000167     device.obj (.text:Device_enableAllPeripherals)
                      00084787    00000132     driverlib.lib : sysctl.obj (.text:SysCtl_setClock)
                      000848b9    00000118                   : sysctl.obj (.text:SysCtl_isPLLValid)
                      000849d1    00000113                   : sysctl.obj (.text:SysCtl_setAuxClock)
                      00084ae4    000000cb                   : dcc.obj (.text:DCC_verifyClockFrequency)
                      00084baf    000000bd     system_init.obj (.text:system_init)
                      00084c6c    00000088     rts2800_fpu64_eabi.lib : fs_div28.asm.obj (.text)
                      00084cf4    00000073     driverlib.lib : dcc.obj (.text:DCC_setCounterSeeds)
                      00084d67    00000073                   : sysctl.obj (.text:DCC_setCounterSeeds)
                      00084dda    0000006f     device.obj (.text:Device_init)
                      00084e49    00000061     driverlib.lib : sysctl.obj (.text:SysCtl_getAuxClock)
                      00084eaa    00000060                   : sysctl.obj (.text:SysCtl_getClock)
                      00084f0a    00000055                   : sysctl.obj (.text:SysCtl_selectOscSourceAuxPLL)
                      00084f5f    00000054     flash_kernel_sci_get_function.obj (.text:sciGetPacket)
                      00084fb3    00000052     driverlib.lib : gpio.obj (.text:GPIO_setPadConfig)
                      00085005    00000052     ISRs.obj (.text:cpuTimer0ISR)
                      00085057    00000049     driverlib.lib : sysctl.obj (.text:SysCtl_pollX1Counter)
                      000850a0    00000045                   : sci.obj (.text:SCI_clearInterruptStatus)
                      000850e5    00000044     ISRs.obj (.text:GPIO_writePin)
                      00085129    00000044     app.obj (.text:GPIO_writePin)
                      0008516d    00000044     driverlib.lib : sci.obj (.text:SCI_disableInterrupt)
                      000851b1    00000044                   : sci.obj (.text:SCI_enableInterrupt)
                      000851f5    00000043     ISRs.obj (.text:sciaRxISR)
                      00085238    00000042     driverlib.lib : sysctl.obj (.text:SysCtl_selectOscSource)
                      0008527a    0000003e                   : sci.obj (.text:SCI_setConfig)
                      000852b8    0000003d                   : interrupt.obj (.text:Interrupt_initModule)
                      000852f5    00000037                   : gpio.obj (.text:GPIO_setControllerCore)
                      0008532c    00000037                   : gpio.obj (.text:GPIO_setPinConfig)
                      00085363    00000037                   : gpio.obj (.text:GPIO_setQualificationMode)
                      0008539a    00000037                   : interrupt.obj (.text:Interrupt_enable)
                      000853d1    00000036                   : sysctl.obj (.text:SysCtl_selectXTAL)
                      00085407    00000032     flash_kernel_ldfu.obj (.text:SCI_lockAutobaud)
                      00085439    00000031     driverlib.lib : gpio.obj (.text:GPIO_setDirectionMode)
                      0008546a    00000031     system_init.obj (.text:configCPUTimer)
                      0008549b    00000030     app.obj (.text:main)
                      000854cb    0000002e     flash_kernel_sci_get_function.obj (.text:SCI_isTransmitterBusy)
                      000854f9    0000002c     flash_kernel_sci_get_function.obj (.text:sciaInit)
                      00085525    0000002b     flash_kernel_sci_get_function.obj (.text:sciPinmuxOption)
                      00085550    00000026     system_init.obj (.text:SCI_setFIFOInterruptLevel)
                      00085576    00000024     driverlib.lib : dcc.obj (.text:DCC_enableSingleShotMode)
                      0008559a    00000024                   : sysctl.obj (.text:DCC_enableSingleShotMode)
                      000855be    00000022     flash_kernel_codestartbranch.obj (.text)
                      000855e0    00000021     device.obj (.text:Device_initGPIO)
                      00085601    00000020     flash_kernel_sci_get_function.obj (.text:SCI_isFIFOEnabled)
                      00085621    00000020     driverlib.lib : sysctl.obj (.text:SysCtl_selectXTALSingleEnded)
                      00085641    0000001e                   : dcc.obj (.text:DCC_setCounter0ClkSource)
                      0008565f    0000001e                   : sysctl.obj (.text:DCC_setCounter0ClkSource)
                      0008567d    0000001e                   : dcc.obj (.text:DCC_setCounter1ClkSource)
                      0008569b    0000001e                   : sysctl.obj (.text:DCC_setCounter1ClkSource)
                      000856b9    0000001e     device.obj (.text:Device_verifyXTAL)
                      000856d7    0000001e     driverlib.lib : interrupt.obj (.text:Interrupt_initVectorTable)
                      000856f5    0000001d     ISRs.obj (.text:SCI_enableFIFO)
                      00085712    0000001d     system_init.obj (.text:SCI_enableFIFO)
                      0008572f    0000001d     rts2800_fpu64_eabi.lib : memcpy.c.obj (.text)
                      0008574c    0000001c     driverlib.lib : dcc.obj (.text:DCC_getErrorStatus)
                      00085768    0000001c                   : dcc.obj (.text:DCC_getSingleShotStatus)
                      00085784    0000001b     ISRs.obj (.text:SCI_isBaseValid)
                      0008579f    0000001b     app.obj (.text:SCI_isBaseValid)
                      000857ba    0000001b     driverlib.lib : sci.obj (.text:SCI_isBaseValid)
                      000857d5    0000001b     flash_kernel_ldfu.obj (.text:SCI_isBaseValid)
                      000857f0    0000001b     flash_kernel_sci_get_function.obj (.text:SCI_isBaseValid)
                      0008580b    0000001b     system_init.obj (.text:SCI_isBaseValid)
                      00085826    0000001a     system_init.obj (.text:CPUTimer_startTimer)
                      00085840    0000001a     driverlib.lib : dcc.obj (.text:DCC_isBaseValid)
                      0008585a    0000001a                   : sysctl.obj (.text:DCC_isBaseValid)
                      00085874    0000001a     flash_kernel_ldfu.obj (.text:SCI_isDataAvailableNonFIFO)
                      0008588e    0000001a     flash_kernel_sci_get_function.obj (.text:SCI_isDataAvailableNonFIFO)
                      000858a8    0000001a     flash_kernel_ldfu.obj (.text:SCI_isSpaceAvailableNonFIFO)
                      000858c2    0000001a     flash_kernel_sci_get_function.obj (.text:SCI_isSpaceAvailableNonFIFO)
                      000858dc    0000001a     driverlib.lib : sysctl.obj (.text:SysCtl_getLowSpeedClock)
                      000858f6    0000001a     system_init.obj (.text:initCPUTimers)
                      00085910    00000019     flash_kernel_ldfu.obj (.text:RuntimeFlashProgrammingStartRoutine)
                      00085929    00000019     flash_kernel_ldfu.obj (.text:SCI_writeCharBlockingNonFIFO)
                      00085942    00000019     flash_kernel_sci_get_function.obj (.text:SCI_writeCharBlockingNonFIFO)
                      0008595b    00000019     flash_kernel_sci_get_function.obj (.text:sciaGetOnlyWordData)
                      00085974    00000019     flash_kernel_sci_get_function.obj (.text:sciaGetWordData)
                      0008598d    00000018     driverlib.lib : sci.obj (.text:SCI_disableModule)
                      000859a5    00000018                   : sci.obj (.text:SCI_performSoftwareReset)
                      000859bd    00000018     flash_kernel_sci_get_function.obj (.text:SCI_performSoftwareReset)
                      000859d5    00000018     system_init.obj (.text:SCI_performSoftwareReset)
                      000859ed    00000018     flash_kernel_sci_get_function.obj (.text:SCI_resetChannels)
                      00085a05    00000018     system_init.obj (.text:SCI_resetChannels)
                      00085a1d    00000017     driverlib.lib : cputimer.obj (.text:CPUTimer_isBaseValid)
                      00085a34    00000017     system_init.obj (.text:CPUTimer_isBaseValid)
                      00085a4b    00000017     system_init.obj (.text:CPUTimer_setPreScaler)
                      00085a62    00000017     device.obj (.text:SysCtl_enablePeripheral)
                      00085a79    00000017     driverlib.lib : sysctl.obj (.text:SysCtl_enablePeripheral)
                      00085a90    00000017     system_init.obj (.text:initFlashAPI)
                      00085aa7    00000016     driverlib.lib : dcc.obj (.text:DCC_disableDoneSignal)
                      00085abd    00000016                   : sysctl.obj (.text:DCC_disableDoneSignal)
                      00085ad3    00000016                   : dcc.obj (.text:DCC_enableDoneSignal)
                      00085ae9    00000016                   : interrupt.obj (.text:Interrupt_defaultHandler)
                      00085aff    00000016     flash_kernel_ldfu.obj (.text:SCI_readCharBlockingNonFIFO)
                      00085b15    00000016     flash_kernel_sci_get_function.obj (.text:SCI_readCharBlockingNonFIFO)
                      00085b2b    00000016     app.obj (.text:SysCtl_setWatchdogMode)
                      00085b41    00000015     system_init.obj (.text:CPUTimer_enableInterrupt)
                      00085b56    00000015     driverlib.lib : dcc.obj (.text:DCC_clearDoneFlag)
                      00085b6b    00000015                   : sysctl.obj (.text:DCC_clearDoneFlag)
                      00085b80    00000015                   : dcc.obj (.text:DCC_clearErrorFlag)
                      00085b95    00000015                   : sysctl.obj (.text:DCC_clearErrorFlag)
                      00085baa    00000015                   : dcc.obj (.text:DCC_disableErrorSignal)
                      00085bbf    00000015                   : sysctl.obj (.text:DCC_disableErrorSignal)
                      00085bd4    00000015     device.obj (.text:GPIO_unlockPortConfig)
                      00085be9    00000014     system_init.obj (.text:CPUTimer_reloadTimerCounter)
                      00085bfd    00000014     system_init.obj (.text:CPUTimer_stopTimer)
                      00085c11    00000014     driverlib.lib : dcc.obj (.text:DCC_disableModule)
                      00085c25    00000014                   : sysctl.obj (.text:DCC_disableModule)
                      00085c39    00000014                   : dcc.obj (.text:DCC_enableErrorSignal)
                      00085c4d    00000014                   : dcc.obj (.text:DCC_enableModule)
                      00085c61    00000014                   : sysctl.obj (.text:DCC_enableModule)
                      00085c75    00000013                   : cputimer.obj (.text:CPUTimer_setEmulationMode)
                      00085c88    00000013     device.obj (.text:Device_enableUnbondedGPIOPullupsFor176Pin)
                      00085c9b    00000013     app.obj (.text:SCI_disableFIFO)
                      00085cae    00000013     driverlib.lib : sci.obj (.text:SCI_enableModule)
                      00085cc1    00000013     flash_kernel_sci_get_function.obj (.text:SCI_enableModule)
                      00085cd4    00000013     system_init.obj (.text:SCI_enableModule)
                      00085ce7    00000011     system_init.obj (.text:CPUTimer_setPeriod)
                      00085cf8    00000011     device.obj (.text:Device_enableUnbondedGPIOPullups)
                      00085d09    00000011     device.obj (.text:SysCtl_setCMClk)
                      00085d1a    00000010     driverlib.lib : flash.obj (.text:Flash_isCtrlBaseValid)
                      00085d2a    00000010                   : flash.obj (.text:Flash_isECCBaseValid)
                      00085d3a    0000000f     system_init.obj (.text:Interrupt_register)
                      00085d49    0000000f     driverlib.lib : ipc.obj (.text:Interrupt_unregister)
                      00085d58    0000000e     ISRs.obj (.text:GPIO_isPinValid)
                      00085d66    0000000e     app.obj (.text:GPIO_isPinValid)
                      00085d74    0000000e     driverlib.lib : gpio.obj (.text:GPIO_isPinValid)
                      00085d82    0000000d                   : interrupt.obj (.text:Interrupt_disableGlobal)
                      00085d8f    0000000d                   : interrupt.obj (.text:Interrupt_enableGlobal)
                      00085d9c    0000000d     device.obj (.text:SysCtl_setLowSpeedClock)
                      00085da9    0000000d     flash_kernel_sci_get_function.obj (.text:SysCtl_setLowSpeedClock)
                      00085db6    0000000d     rts2800_fpu64_eabi.lib : copy_zero_init.c.obj (.text:decompress:ZI:__TI_zero_init_nomemset)
                      00085dc3    0000000c     driverlib.lib : sysctl.obj (.text:SysCtl_setPLLSysClk)
                      00085dcf    0000000b                   : sysctl.obj (.text:SysCtl_isMCDClockFailureDetected)
                      00085dda    0000000a                   : interrupt.obj (.text:Interrupt_illegalOperationHandler)
                      00085de4    0000000a                   : interrupt.obj (.text:Interrupt_nmiHandler)
                      00085dee    0000000a     app.obj (.text:SysCtl_enableWatchdog)
                      00085df8    00000008     device.obj (.text:SysCtl_disableWatchdog)
                      00085e00    00000008     flash_kernel_sci_get_function.obj (.text:sendACK)
                      00085e08    00000008     flash_kernel_sci_get_function.obj (.text:sendNAK)
                      00085e10    00000007     driverlib.lib : sysctl.obj (.text:SysCtl_resetMCD)
                      00085e17    00000007     device.obj (.text:__error__)
                      00085e1e    00000007     flash_kernel_sci_get_function.obj (.text:sciaFlush)
                      00085e25    00000006     ISRs.obj (.text:Interrupt_clearACKGroup)
                      00085e2b    00000006     system_init.obj (.text:Interrupt_clearACKGroup)
    
    MODULE SUMMARY
    
           Module                              code   ro data   rw data
           ------                              ----   -------   -------
        .\
           system_init.obj                     619    138       1      
        +--+-----------------------------------+------+---------+---------+
           Total:                              619    138       1      
                                                                       
        .\App\
           app.obj                             208    134       0      
        +--+-----------------------------------+------+---------+---------+
           Total:                              208    134       0      
                                                                       
        .\ISRs\
           ISRs.obj                            293    134       12     
        +--+-----------------------------------+------+---------+---------+
           Total:                              293    134       12     
                                                                       
        .\device\
           device.obj                          658    85        0      
        +--+-----------------------------------+------+---------+---------+
           Total:                              658    85        0      
                                                                       
        .\flash_kernel\
           flash_kernel_ldfu.obj               201    66        2      
           flash_kernel_codestartbranch.obj    36     0         0      
        +--+-----------------------------------+------+---------+---------+
           Total:                              237    66        2      
                                                                       
        .\flash_kernel\flash_kernel_sci\
           flash_kernel_sci_get_function.obj   528    66        10     
           flash_kernel_sci_flash_kernel.obj   12     0         0      
        +--+-----------------------------------+------+---------+---------+
           Total:                              540    66        10     
                                                                       
        C:/ti/c2000/C2000Ware_5_00_00_00/driverlib/f2838x/driverlib/ccs/Debug/driverlib.lib
           sysctl.obj                          1813   151       0      
           dcc.obj                             663    148       0      
           flash.obj                           604    152       0      
           sci.obj                             361    148       0      
           gpio.obj                            310    151       0      
           interrupt.obj                       214    0         0      
           cputimer.obj                        42     79        0      
           ipc.obj                             15     0         0      
        +--+-----------------------------------+------+---------+---------+
           Total:                              4022   829       0      
                                                                       
        C:/ti/c2000/C2000Ware_5_00_00_00/libraries/flash_api/f2838x/c28x/lib/F2838x_C28x_FlashAPI.lib
           FlashStateMachine.obj               1572   0         0      
           Init.obj                            204    0         20     
           Utilities.obj                       222    0         0      
        +--+-----------------------------------+------+---------+---------+
           Total:                              1998   0         20     
                                                                       
        C:\ti\ccs1271\ccs\tools\compiler\ti-cgt-c2000_22.6.1.LTS\lib\rts2800_fpu64_eabi.lib
           fs_div28.asm.obj                    136    0         0      
           memcpy.c.obj                        29     0         0      
           copy_zero_init.c.obj                13     0         0      
        +--+-----------------------------------+------+---------+---------+
           Total:                              178    0         0      
                                                                       
           Stack:                              0      0         512    
           Linker Generated:                   0      10        0      
        +--+-----------------------------------+------+---------+---------+
           Grand Total:                        8753   1462      557    
    
    
    LINKER GENERATED COPY TABLES
    
    __TI_cinit_table @ 000863ee records: 1, size/record: 4, table size: 4
    	.bss: load addr=000863e8, load size=00000004 bytes, run addr=0000a800, run size=00000019 bytes, compression=zero_init
    
    
    LINKER GENERATED HANDLER TABLE
    
    __TI_handler_table @ 000863ec records: 1, size/record: 2, table size: 2
    	index: 0, handler: __TI_zero_init
    
    
    GLOBAL DATA SYMBOLS: SORTED BY DATA PAGE
    
    address     data page           name
    --------    ----------------    ----
    00000400      10 (00000400)     __stack
    
    0000a800     2a0 (0000a800)     data
    0000a80a     2a0 (0000a800)     checksum
    0000a80c     2a0 (0000a800)     statusCode
    0000a814     2a0 (0000a800)     length
    0000a815     2a0 (0000a800)     command
    0000a816     2a0 (0000a800)     getWordData
    0000a818     2a0 (0000a800)     cpuTimer0IntCount
    
    
    GLOBAL SYMBOLS: SORTED ALPHABETICALLY BY Name 
    
    page  address   name                                     
    ----  -------   ----                                     
    0     00085c75  CPUTimer_setEmulationMode                
    0     00084ae4  DCC_verifyClockFrequency                 
    0     00084620  Device_enableAllPeripherals              
    0     00085cf8  Device_enableUnbondedGPIOPullups         
    0     00085c88  Device_enableUnbondedGPIOPullupsFor176Pin
    0     00084dda  Device_init                              
    0     000855e0  Device_initGPIO                          
    0     000856b9  Device_verifyXTAL                        
    0     000855c8  ExitBoot                                 
    0     000173e6  Fapi_GlobalInit                          
    0     00017376  Fapi_calculateFletcherChecksum           
    0     000172e1  Fapi_initializeAPI                       
    0     000173f0  Fapi_serviceWatchdogTimer                
    0     00017347  Fapi_setActiveFlashBank                  
    0     000173f2  Flash_initModule                         
    0     000852f5  GPIO_setControllerCore                   
    0     00085439  GPIO_setDirectionMode                    
    0     00084fb3  GPIO_setPadConfig                        
    0     0008532c  GPIO_setPinConfig                        
    0     00085363  GPIO_setQualificationMode                
    0     00085ae9  Interrupt_defaultHandler                 
    0     0008539a  Interrupt_enable                         
    0     00085dda  Interrupt_illegalOperationHandler        
    0     000852b8  Interrupt_initModule                     
    0     000856d7  Interrupt_initVectorTable                
    0     00085de4  Interrupt_nmiHandler                     
    abs   0008461a  RamfuncsLoadEnd                          
    abs   0000051a  RamfuncsLoadSize                         
    abs   00084100  RamfuncsLoadStart                        
    abs   0001751a  RamfuncsRunEnd                           
    abs   0000051a  RamfuncsRunSize                          
    abs   00017000  RamfuncsRunStart                         
    0     00085910  RuntimeFlashProgrammingStartRoutine      
    0     000850a0  SCI_clearInterruptStatus                 
    0     0008516d  SCI_disableInterrupt                     
    0     000851b1  SCI_enableInterrupt                      
    0     0008527a  SCI_setConfig                            
    0     00017516  SysCtl_delay                             
    0     00084e49  SysCtl_getAuxClock                       
    0     00084eaa  SysCtl_getClock                          
    0     000858dc  SysCtl_getLowSpeedClock                  
    0     000848b9  SysCtl_isPLLValid                        
    0     00085238  SysCtl_selectOscSource                   
    0     00084f0a  SysCtl_selectOscSourceAuxPLL             
    0     000853d1  SysCtl_selectXTAL                        
    0     00085621  SysCtl_selectXTALSingleEnded             
    0     000849d1  SysCtl_setAuxClock                       
    0     00084787  SysCtl_setClock                          
    0     000173da  _Fapi_calculateOtpChecksum               
    0     000173a2  _Fapi_divideUnsignedLong                 
    0     000173cc  _Fapi_scaleCycleValues                   
    0     000863ee  __TI_CINIT_Base                          
    0     000863f2  __TI_CINIT_Limit                         
    0     000863f2  __TI_CINIT_Warm                          
    0     000863ec  __TI_Handler_Table_Base                  
    0     000863ee  __TI_Handler_Table_Limit                 
    0     00000600  __TI_STACK_END                           
    abs   00000200  __TI_STACK_SIZE                          
    abs   ffffffff  __TI_pprof_out_hndl                      
    abs   ffffffff  __TI_prof_data_size                      
    abs   ffffffff  __TI_prof_data_start                     
    0     00085db6  __TI_zero_init_nomemset                  
    0     00084c6c  __c28xabi_divf                           
    0     00085e17  __error__                                
    0     00000400  __stack                                  
    0     0000a80a  checksum                                 
    0     00088000  code_start                               
    0     0000a815  command                                  
    0     0008546a  configCPUTimer                           
    0     00085005  cpuTimer0ISR                             
    0     0000a818  cpuTimer0IntCount                        
    0     0000a800  data                                     
    0     00017510  exampleError                             
    0     0000a816  getWordData                              
    0     000858f6  initCPUTimers                            
    0     00085a90  initFlashAPI                             
    0     0000a814  length                                   
    0     0008549b  main                                     
    0     0008572f  memcpy                                   
    0     00084f5f  sciGetPacket                             
    0     00085525  sciPinmuxOption                          
    0     00085e1e  sciaFlush                                
    0     0008595b  sciaGetOnlyWordData                      
    0     00085974  sciaGetWordData                          
    0     000854f9  sciaInit                                 
    0     000851f5  sciaRxISR                                
    0     00085e00  sendACK                                  
    0     00085e08  sendNAK                                  
    0     0000a80c  statusCode                               
    0     00084baf  system_init                              
    
    
    GLOBAL SYMBOLS: SORTED BY Symbol Address 
    
    page  address   name                                     
    ----  -------   ----                                     
    0     00000400  __stack                                  
    0     00000600  __TI_STACK_END                           
    0     0000a800  data                                     
    0     0000a80a  checksum                                 
    0     0000a80c  statusCode                               
    0     0000a814  length                                   
    0     0000a815  command                                  
    0     0000a816  getWordData                              
    0     0000a818  cpuTimer0IntCount                        
    0     000172e1  Fapi_initializeAPI                       
    0     00017347  Fapi_setActiveFlashBank                  
    0     00017376  Fapi_calculateFletcherChecksum           
    0     000173a2  _Fapi_divideUnsignedLong                 
    0     000173cc  _Fapi_scaleCycleValues                   
    0     000173da  _Fapi_calculateOtpChecksum               
    0     000173e6  Fapi_GlobalInit                          
    0     000173f0  Fapi_serviceWatchdogTimer                
    0     000173f2  Flash_initModule                         
    0     00017510  exampleError                             
    0     00017516  SysCtl_delay                             
    0     00084620  Device_enableAllPeripherals              
    0     00084787  SysCtl_setClock                          
    0     000848b9  SysCtl_isPLLValid                        
    0     000849d1  SysCtl_setAuxClock                       
    0     00084ae4  DCC_verifyClockFrequency                 
    0     00084baf  system_init                              
    0     00084c6c  __c28xabi_divf                           
    0     00084dda  Device_init                              
    0     00084e49  SysCtl_getAuxClock                       
    0     00084eaa  SysCtl_getClock                          
    0     00084f0a  SysCtl_selectOscSourceAuxPLL             
    0     00084f5f  sciGetPacket                             
    0     00084fb3  GPIO_setPadConfig                        
    0     00085005  cpuTimer0ISR                             
    0     000850a0  SCI_clearInterruptStatus                 
    0     0008516d  SCI_disableInterrupt                     
    0     000851b1  SCI_enableInterrupt                      
    0     000851f5  sciaRxISR                                
    0     00085238  SysCtl_selectOscSource                   
    0     0008527a  SCI_setConfig                            
    0     000852b8  Interrupt_initModule                     
    0     000852f5  GPIO_setControllerCore                   
    0     0008532c  GPIO_setPinConfig                        
    0     00085363  GPIO_setQualificationMode                
    0     0008539a  Interrupt_enable                         
    0     000853d1  SysCtl_selectXTAL                        
    0     00085439  GPIO_setDirectionMode                    
    0     0008546a  configCPUTimer                           
    0     0008549b  main                                     
    0     000854f9  sciaInit                                 
    0     00085525  sciPinmuxOption                          
    0     000855c8  ExitBoot                                 
    0     000855e0  Device_initGPIO                          
    0     00085621  SysCtl_selectXTALSingleEnded             
    0     000856b9  Device_verifyXTAL                        
    0     000856d7  Interrupt_initVectorTable                
    0     0008572f  memcpy                                   
    0     000858dc  SysCtl_getLowSpeedClock                  
    0     000858f6  initCPUTimers                            
    0     00085910  RuntimeFlashProgrammingStartRoutine      
    0     0008595b  sciaGetOnlyWordData                      
    0     00085974  sciaGetWordData                          
    0     00085a90  initFlashAPI                             
    0     00085ae9  Interrupt_defaultHandler                 
    0     00085c75  CPUTimer_setEmulationMode                
    0     00085c88  Device_enableUnbondedGPIOPullupsFor176Pin
    0     00085cf8  Device_enableUnbondedGPIOPullups         
    0     00085db6  __TI_zero_init_nomemset                  
    0     00085dda  Interrupt_illegalOperationHandler        
    0     00085de4  Interrupt_nmiHandler                     
    0     00085e00  sendACK                                  
    0     00085e08  sendNAK                                  
    0     00085e17  __error__                                
    0     00085e1e  sciaFlush                                
    0     000863ec  __TI_Handler_Table_Base                  
    0     000863ee  __TI_CINIT_Base                          
    0     000863ee  __TI_Handler_Table_Limit                 
    0     000863f2  __TI_CINIT_Limit                         
    0     000863f2  __TI_CINIT_Warm                          
    0     00088000  code_start                               
    abs   00000200  __TI_STACK_SIZE                          
    abs   0000051a  RamfuncsLoadSize                         
    abs   0000051a  RamfuncsRunSize                          
    abs   00017000  RamfuncsRunStart                         
    abs   0001751a  RamfuncsRunEnd                           
    abs   00084100  RamfuncsLoadStart                        
    abs   0008461a  RamfuncsLoadEnd                          
    abs   ffffffff  __TI_pprof_out_hndl                      
    abs   ffffffff  __TI_prof_data_size                      
    abs   ffffffff  __TI_prof_data_start                     
    
    [90 symbols]
    

    Based on this observation, I understand why it is not working but I don't know a clean way to fix it. The Ldfuload function is present in Flash from the flashing of the static code so Partition 1 should probably copy it to RAM before using it.

  • Vic,

    Sorry that you are still facing issues. Please give me today to analyze this and see if I can figure out what may be happening here.

    I will reply by tomorrow.

    Thanks,

    Sira

  • Hi Vic,

    So where exactly do we stand today:

    You are able to Flash the kernel into the device Flash?

    You are able to use the above kernel to Flash Image1 into the device Flash (with START, KEY etc. properly written)?

    Using this setup, you send an LFU request from an external host, and execution branches from Image1 to the kernel and then it runs off into the weeds somewhere?

    Looking at your .map files, I see the same RAMGS10_13 regions are being used in both the kernel and Image1. Your RamfuncsRunStart is the same address (0x17000) for both the static kernel as well as Image1. This means whatever code you want to copy from Flash to RAM will get copied (first for the kernel), and then get overwritten (when you do the same Flash to RAM copy for Image1).

    This should be avoided. Please allocate different Flash and RAM regions for Kernel, Image1, Image2.

    "Based on this observation, I understand why it is not working but I don't know a clean way to fix it. The Ldfuload function is present in Flash from the flashing of the static code so Partition 1 should probably copy it to RAM before using it."

    This is not necessary. As I mention above, whatever needs to run from RAM in the static kernel (e.g. Flash API lib, specific kernel functions) should be copied from Flash to RAM using a memcpy in the static kernel code, and that will suffice.

    Then, whatever needs to run from RAM in Image1 (e.g. specific ISRs that you want running during the LFU) should be copied from Flash to RAM using a memcpy in Image1, and that will suffice.

    Likewise, you will do the same in Image2 (so it can work in ping-pong fashion as you go through multiple LFUs).

    Please note: I will be out of office all of next week, but I am hoping my responses above will unblock you and help you make progress.

    Thanks,

    Sira