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.
Hi All,
I recently started a project using a LaunchPadXL TMS320F2802x. I started with an example and added some simple test code to exercise the SCIA and I2C interfaces, one project file at a time.
Now, I have target prototype hardware in-hand that contains a TMS320F28020 MCU. The memory map of the 28020 is smaller than the LaunchPad's 28027. So, now when I compile the same code to run in the smaller memory space, I get an error indicating reference to a memory region that doesn't exist, like this:
C28xx: Loader: One or more sections of your program falls into a memory region that is not writable. These regions will not actually be written to the target. Check your linker configuration and/or memory map.
I'm having a hard time understanding the different linker command files and other references to memory mapping.
The memory map file generated during the make process shows RAML0 starting at 0x8000 and extending into 0x85ff as follows:
MEMORY CONFIGURATION name origin length used unused attr fill ---------------------- -------- --------- -------- -------- ---- -------- PAGE 0: BEGIN 00000000 00000002 00000002 00000000 RWIX RAMM0 00000050 000003b0 000003b0 00000000 RWIX RAML0 00008000 00000600 00000377 00000289 RWIX FLASHC 003f2000 00002000 00000000 00002000 RWIX IQTABLES 003fe000 00000b50 00000000 00000b50 RWIX IQTABLES2 003feb50 0000008c 00000000 0000008c RWIX IQTABLES3 003febdc 000000aa 00000000 000000aa RWIX BOOTROM 003ff27c 00000d44 00000000 00000d44 RWIX RESET 003fffc0 00000002 00000000 00000002 RWIX
However, the 28020 physical RAML0 memory starts at 0x8000 and only extends to 0x83ff.
At first, I thought this was because the setting in the project >Properties>CCS General Project tab was set to Variant TMS320F28027:
But, when I changed it to 28020, I got multiple duplicate memory range errors:
I will need to manipulate the memory map before the project is done in several ways to fit all the code into available memory. I could use some help understanding the appropriate ways to modify the memory map.
I have used the linker command file to make minor changes in the past, so I understand that part of it, but I don't know why the linker still thinks RAML0 is the longer than it really is.
Questions:
1. Why does the make file end up with a memory map that includes address space that doesn't exist in the physical part?
2. Where is it getting the linker command file that tells it each memory's location and size? The linker command file that was copied into the project folder after changing the Variant setting shows the correct length of RAML0.
3. How do .gel files factor into the equation?
4. Is there an app note describing the memory mapping configuration architecture? I'm looking for info about manipulating linker cmd files, gel files, properties settings, etc..
Thanks,
robin
More info...
I found where a second linker cmd file is invoked:
After deleting that entry, I was able to compile/link without the duplication errors.
I still had memory size issues but was able to modify the linker cmd file and reduce .stack size to get everything to fit and run:
I would still like to know if there's an app note or design guide that explains the use of gel files, linker command files, how to invoke them, edit them, etc..
Thanks,
robin
Hi Robin,
For linker command files, you may refer to the following documents -
https://software-dl.ti.com/ccs/esd/documents/sdto_cgt_Linker-Command-File-Primer.html
https://www.ti.com/lit/ug/spru513r/spru513r.pdf (Chapter Linker Description)
For gel files -
https://software-dl.ti.com/ccs/esd/documents/users_guide/ccs_debug-gel.html
Hope this helps.
To answer you question on inker command file path, you can either have it as a file added in the CCS project structure or in the --library option in the project properties. Please make sure you use the correct linker command file corresponding to the device part number you use.
Regards,
Veena
Hi Veena,
Thanks for the ref materials. I haven't had a chance to read them but will over the weekend.
I added some flash memory to the linker command file and moved .cinit from PRAML0 to FLASH0: (ignore comments)
MEMORY { PAGE 0 : // Program memory space (initialized sections) /* For this example, L0 is split between PAGE 0 and PAGE 1 */ /* BEGIN is used for the "boot to SARAM" bootloader mode */ BEGIN : origin = 0x000000, length = 0x000002 RAMM0 : origin = 0x000040, length = 0x0006C0 PRAML0 : origin = 0x008000, length = 0x000250 RESET : origin = 0x3FFFC0, length = 0x000002 IQTABLES : origin = 0x3FE000, length = 0x000B50 /* IQ Math Tables in Boot ROM */ IQTABLES2 : origin = 0x3FEB50, length = 0x00008C /* IQ Math Tables in Boot ROM */ IQTABLES3 : origin = 0x3FEBDC, length = 0x0000AA /* IQ Math Tables in Boot ROM */ BOOTROM : origin = 0x3FF27C, length = 0x000D44 // RAMM1 : origin = 0x000400, length = 0x000200 /* on-chip RAM block M1 */ FLASH0 : origin = 0x3f4000, length = 0x001000 PAGE 1 : // Data memory (UNinitialized sections) /* For this example, L0 is split between PAGE 0 and PAGE 1 */ BOOT_RSVD : origin = 0x000002, length = 0x00004E /* Part of M0, BOOT rom will use this for stack */ RAMM1 : origin = 0x000700, length = 0x000100 /* on-chip RAM block M1 */ DRAML0 : origin = 0x008250, length = 0x0001b0 } SECTIONS { /* Setup for "boot to SARAM" mode: The codestart section (found in DSP28_CodeStartBranch.asm) re-directs execution to the start of user code. */ codestart : > BEGIN, PAGE = 0 #ifdef __TI_COMPILER_VERSION__ #if __TI_COMPILER_VERSION__ >= 15009000 .TI.ramfunc : {} > RAMM0, PAGE = 0 #else ramfuncs : > PRAML0 PAGE = 0 #endif #endif .text : > RAMM0, PAGE = 0 .cinit : > PRAML0, PAGE = 0 // .cinit : > FLASH0, PAGE = 0 .pinit : > RAMM0, PAGE = 0 .switch : > RAMM0, PAGE = 0 .reset : > RESET, PAGE = 0, TYPE = DSECT /* not used, */ .stack : > RAMM1, PAGE = 1 .ebss : > DRAML0, PAGE = 1 .econst : > DRAML0, PAGE = 1 .esysmem : > RAMM1, PAGE = 1 IQmath : > PRAML0, PAGE = 0 IQmathTables : > IQTABLES, PAGE = 0, TYPE = NOLOAD
With .cinit assigned to PRAML0, the code runs on the target. With .cinit assigned to FLASH0, the project compiles and builds without error, but while uploading to target (after erasing flash and while trying to upload .cinit), I get error - 1156:
If I click "No" the following "Load program Error" pops up:
After that, upon another attempt to compile/build, I get error - 233:
At this point, the target board appears to be bricked. I'm not able to connect to it at all. I've tried different cables, different XDS100 interface, different computer, and all fail to connect. A fresh target board connects without issue.
This has happened twice. The first time I reassigned .text to FLASH0. When it first happened with the first target board, I selected "Yes" in the Error - 1156 dialog. That didn't allow connection, but it didn't brick the target either. I only have one more prototype of the target board, so must proceed very cautiously.
Do you see where the problem lies? Any ideas? Is there any way to recover the target board without replacing the TMS320F28020?
I'm afraid to continue until this is worked out. I don't want to risk destroying my last proto board.
Thanks,
robin
Hi Robin,
I will loop in the Flash expert to help you better/
Regards,
Veena
Robin,
From the error message and the after effects I think there may have been a reset event during the programming, which in turn corrupted the CSM password stored in flash at 0x3F7FF8-3F7FFF.
For the devices that will no longer connect, if you change the boot mode to wait boot mode, this should allow you to connect the device to CCS
Once connected open up a memory window to the password addresses mentioned above, and see if you read back 0x0000. If you see 0x0000, then the password is programmed to something indeterminate and the device is not salvageable. If you see anything else then the CSM is not programmed and we can look into that scenario(I'm going to assume it will be 0x0000 on the bad devices for the below).
I'd like to first check that there is/was adequate supply current for the flash erase/program cycle: below is from page 33 of the DS https://www.ti.com/lit/ds/symlink/tms320f28027.pdf
If there was inadequate supply it could result in a droop in the VDDIO supply(assuming you are using the on-chip VREG) which would activate the internal Brown Out Reset, interrupting the flash operation and resulting in non 0xFFFF values in the password locations. In addition to the supply being capable of the above, we should also look at the relative location of the decaps on the VDDIO pin to make sure they are close to the device and of the correct value(I believe we use a 2.2uF cap on the LaunchPad).
In terms of debugging this functionally it will be a safer option to only use sectors B and/or C for now(on the good device) as there is less chance of effecting the passwords if there is an event. You would also want to change the settings in the Flash tools in CCS to not erase sectors A/D if you decide to program the good unit while we figure this out. By default any flash programming operation will erase all sectors even if there is not a need to do so from a the .coff POV.
Will look for your findings on the above and we can go from there.
Best,
Matthew
Hi Matthew,
Thanks for your response.
Boot mode was wired for "GetMode", but now I've reconfigured it to 'Wait' boot mode. I did that by pulling GPIO34 low. /TRST was already pulled low, and TDO was already pulled high. Now, when I open the memory browser to 0x3f7ff8, here's what I see:
Clearly, the CSM password has been set to non-0xffff values. I'll have to replace the part on the two boards that this happened to.
Now the big question, "How did it happen?"
My target module is being powered vie PoE with a power rating of 30W. I'm not sure if those are real or marketing Watts, and I don't see published spec's to find out. I imagine it's providing around 25-50V at between 0.5 and 1.0A. I have a 1.0A/5V LDO feeding a 500mA/3.3V LDO regulator on my target board. I've watched the power supply line during flash erases and don't see it falling anywhere near 5%. It looks pretty stable. I've also programmed the target dozens of times without any issue, before adding FLASH0 to the linker command file. I added FLASH0 and reprogrammed many times without issue. It was only when I tried linking either .cinit or .text to FLASH0 that the problem occurred.
Vddio pins have 1.2uF caps close to the part's pins, as recommended on page 12 of the datasheet you mention above.
The code started life using a LaunchXL TMS320F28027, which has more onboard flash. If a gel file or linker command file was still set up for the 28027 when I flashed the 28020, that might explain it. BUT, as far as I know the gel and linker command files have been correct for the 28020.
Thoughts?
Thanks,
robin
Robin,
Thanks for the additional info, from what you've said I also doubt that the supply is an issue.
Inside of CCS, after you have launched the target config, click on "Tools"->"On-Chip Flash" and compare the window to the below. This is what CCS will use when you "load" a coff file that includes mapped flash addresses. Note the sector sizes, as these will be what is different from a 28020 vs 28027. CCS should give a warning, however, if the 28027 sizes(2x more) were in place for a 28020 target.
Please also confirm that the Key0-7 are showing all FFFF.
The above settings is what I was referring to if we want to avoid erasing those sectors that are unused by your project.
Once we decide to attempt to program another device,we can consider un-checking erase on A/D as well as re-mapping your FLASH_H0 to sector B or C to be conservative until we are sure of the root cause. A mis-programmation of B/C should not result in a locked device.
Your linker is correct for the 28020 device. Can you look in the debug directory of your project and also send back the *.map file? I can review this to confirm that sector D is all that is being loaded.
Finally, from the above comment on voltage rail goodness, I assume you are using the on-chip VREG. Please check to see that pin VREGENZ is hard tied to VSS(correct) vs a pulldown resistor(incorrect).
Best,
Matthew
Hi Matthew,
My On-Chip Flash configuration matches your image above. Here's an image of my window:
After the load error, I switched the comments such that .cinit was no longer assigned to FLASH0 and was reassigned to PRAML0, then recompiled. As a result, the .map file from that day shows .cinit loaded in PRAML0.
Since the .map file from that day doesn't reflect the memory configuration that caused the problem, today I switched the comments back, to put .cinit in FLASH0. Then rebuilt the project to produce a .map file that was what would have been in place when the load error occurred.
I renamed each .map file accordingly and have attached them both:
1. CAM-20-D_PRAML0.map
****************************************************************************** TMS320C2000 Linker PC v21.6.0 ****************************************************************************** >> Linked Fri Apr 1 12:19:43 2022 OUTPUT FILE NAME: <CAM-20-D.out> ENTRY POINT SYMBOL: "code_start" address: 00000000 MEMORY CONFIGURATION name origin length used unused attr fill ---------------------- -------- --------- -------- -------- ---- -------- PAGE 0: BEGIN 00000000 00000002 00000002 00000000 RWIX RAMM0 00000040 000006c0 000005dc 000000e4 RWIX PRAML0 00008000 00000250 000000c5 0000018b RWIX FLASH0 003f4000 00001000 00000000 00001000 RWIX IQTABLES 003fe000 00000b50 00000000 00000b50 RWIX IQTABLES2 003feb50 0000008c 00000000 0000008c RWIX IQTABLES3 003febdc 000000aa 00000000 000000aa RWIX BOOTROM 003ff27c 00000d44 00000000 00000d44 RWIX RESET 003fffc0 00000002 00000000 00000002 RWIX PAGE 1: BOOT_RSVD 00000002 0000004e 00000000 0000004e RWIX RAMM1 00000700 00000100 00000100 00000000 RWIX DEV_EMU 00000880 00000105 00000000 00000105 RWIX SYS_PWR_CTL 00000985 00000003 00000000 00000003 RWIX FLASH_REGS 00000a80 00000060 00000000 00000060 RWIX CSM 00000ae0 00000010 00000000 00000010 RWIX ADC_RESULT 00000b00 00000020 00000000 00000020 RWIX CPU_TIMER0 00000c00 00000008 00000000 00000008 RWIX CPU_TIMER1 00000c08 00000008 00000000 00000008 RWIX CPU_TIMER2 00000c10 00000008 00000000 00000008 RWIX PIE_CTRL 00000ce0 00000020 00000000 00000020 RWIX PIE_VECT 00000d00 00000100 00000000 00000100 RWIX COMP1 00006400 00000020 00000000 00000020 RWIX COMP2 00006420 00000020 00000000 00000020 RWIX EPWM1 00006800 00000040 00000000 00000040 RWIX EPWM2 00006840 00000040 00000000 00000040 RWIX EPWM3 00006880 00000040 00000000 00000040 RWIX EPWM4 000068c0 00000040 00000000 00000040 RWIX ECAP1 00006a00 00000020 00000000 00000020 RWIX GPIOCTRL 00006f80 00000040 00000000 00000040 RWIX GPIODAT 00006fc0 00000020 00000000 00000020 RWIX GPIOINT 00006fe0 00000020 00000000 00000020 RWIX SYSTEM 00007010 00000020 00000000 00000020 RWIX SPIA 00007040 00000010 00000000 00000010 RWIX SCIA 00007050 00000010 00000000 00000010 RWIX NMIINTRUPT 00007060 00000010 00000000 00000010 RWIX XINTRUPT 00007070 00000010 00000000 00000010 RWIX ADC 00007100 00000080 00000000 00000080 RWIX I2CA 00007900 00000040 00000000 00000040 RWIX DRAML0 00008250 000001b0 000001b0 00000000 RWIX PARTID 003d7fff 00000001 00000000 00000001 RWIX CSM_PWL 003f7ff8 00000008 00000000 00000008 RWIX SECTION ALLOCATION MAP output attributes/ section page origin length input sections -------- ---- ---------- ---------- ---------------- codestart * 0 00000000 00000002 00000000 00000002 driverlib.lib : f2802xx_codestartbranch.obj (codestart) .text 0 00000040 000005dc 00000040 000001ed SCIA.obj (.text) 0000022d 00000054 rts2800_ml.lib : boot28.asm.obj (.text) 00000281 00000048 driverlib.lib : gpio.obj (.text:_GPIO_setMode) 000002c9 00000029 : gpio.obj (.text:_GPIO_setDirection) 000002f2 00000029 : gpio.obj (.text:_GPIO_setPullUp) 0000031b 00000029 rts2800_ml.lib : exit.c.obj (.text) 00000344 00000027 driverlib.lib : gpio.obj (.text:_GPIO_setQualification) 0000036b 00000024 rts2800_ml.lib : cpy_tbl.c.obj (.text) 0000038f 0000001d : memcpy.c.obj (.text) 000003ac 00000015 driverlib.lib : pll.obj (.text:_PLL_setup) 000003c1 00000014 : gpio.obj (.text:_GPIO_toggle) 000003d5 00000011 : gpio.obj (.text:_GPIO_getData) 000003e6 00000011 : pie.obj (.text:_PIE_disableAllInts) 000003f7 00000011 : pie.obj (.text:_PIE_setDebugIntVectorTable) 00000408 00000011 rts2800_ml.lib : args_main.c.obj (.text) 00000419 0000000a driverlib.lib : adc.obj (.text:_ADC_init) 00000423 0000000a : pie.obj (.text:_PIE_init) 0000042d 0000000a : sci.obj (.text:_SCI_resetChannels) 00000437 0000000a : sci.obj (.text:_SCI_resetRxFifo) 00000441 0000000a : sci.obj (.text:_SCI_resetTxFifo) 0000044b 00000009 : clk.obj (.text:_CLK_enableSciaClock) 00000454 00000009 : sci.obj (.text:_SCI_putDataBlocking) 0000045d 00000009 rts2800_ml.lib : _lock.c.obj (.text) 00000466 00000008 driverlib.lib : clk.obj (.text:_CLK_init) 0000046e 00000008 : flash.obj (.text:_FLASH_init) 00000476 00000008 : gpio.obj (.text:_GPIO_init) 0000047e 00000008 : pll.obj (.text:_PLL_init) 00000486 00000008 : sci.obj (.text:_SCI_init) 0000048e 00000008 : wdog.obj (.text:_WDOG_disable) 00000496 00000008 : wdog.obj (.text:_WDOG_init) 0000049e 00000008 : f2802xx_codestartbranch.obj (.text) 000004a6 00000007 : clk.obj (.text:_CLK_enableAdcClock) 000004ad 00000007 : clk.obj (.text:_CLK_setOscSrc) 000004b4 00000007 : pll.obj (.text:_PLL_setDivider) 000004bb 00000007 : sci.obj (.text:_SCI_setRxFifoIntLevel) 000004c2 00000007 : sci.obj (.text:_SCI_setTxFifoIntLevel) 000004c9 00000006 : pll.obj (.text:_PLL_setMultiplier) 000004cf 00000006 : sci.obj (.text:_SCI_setBaudRate) 000004d5 00000005 : f2802xx_defaultisr.obj (.text:_ADCINT1_ISR) 000004da 00000005 : f2802xx_defaultisr.obj (.text:_ADCINT2_ISR) 000004df 00000005 : f2802xx_defaultisr.obj (.text:_ADCINT3_ISR) 000004e4 00000005 : f2802xx_defaultisr.obj (.text:_ADCINT4_ISR) 000004e9 00000005 : f2802xx_defaultisr.obj (.text:_ADCINT5_ISR) 000004ee 00000005 : f2802xx_defaultisr.obj (.text:_ADCINT6_ISR) 000004f3 00000005 : f2802xx_defaultisr.obj (.text:_ADCINT7_ISR) 000004f8 00000005 : f2802xx_defaultisr.obj (.text:_ADCINT8_ISR) 000004fd 00000005 : f2802xx_defaultisr.obj (.text:_ADCINT9_ISR) 00000502 00000005 : f2802xx_defaultisr.obj (.text:_DATALOG_ISR) 00000507 00000005 : f2802xx_defaultisr.obj (.text:_ECAP1_INT_ISR) 0000050c 00000005 : f2802xx_defaultisr.obj (.text:_EMPTY_ISR) 00000511 00000005 : f2802xx_defaultisr.obj (.text:_EMUINT_ISR) 00000516 00000005 : f2802xx_defaultisr.obj (.text:_EPWM1_INT_ISR) 0000051b 00000005 : f2802xx_defaultisr.obj (.text:_EPWM1_TZINT_ISR) 00000520 00000005 : f2802xx_defaultisr.obj (.text:_EPWM2_INT_ISR) 00000525 00000005 : f2802xx_defaultisr.obj (.text:_EPWM2_TZINT_ISR) 0000052a 00000005 : f2802xx_defaultisr.obj (.text:_EPWM3_INT_ISR) 0000052f 00000005 : f2802xx_defaultisr.obj (.text:_EPWM3_TZINT_ISR) 00000534 00000005 : f2802xx_defaultisr.obj (.text:_EPWM4_INT_ISR) 00000539 00000005 : f2802xx_defaultisr.obj (.text:_EPWM4_TZINT_ISR) 0000053e 00000005 : f2802xx_defaultisr.obj (.text:_I2CINT1A_ISR) 00000543 00000005 : f2802xx_defaultisr.obj (.text:_I2CINT2A_ISR) 00000548 00000005 : f2802xx_defaultisr.obj (.text:_ILLEGAL_ISR) 0000054d 00000005 : f2802xx_defaultisr.obj (.text:_INT13_ISR) 00000552 00000005 : f2802xx_defaultisr.obj (.text:_INT14_ISR) 00000557 00000005 : f2802xx_defaultisr.obj (.text:_NMI_ISR) 0000055c 00000005 : f2802xx_defaultisr.obj (.text:_PIE_RESERVED) 00000561 00000005 : pie.obj (.text:_PIE_illegalIsr) 00000566 00000005 : f2802xx_defaultisr.obj (.text:_RTOSINT_ISR) 0000056b 00000005 : f2802xx_defaultisr.obj (.text:_SCIRXINTA_ISR) 00000570 00000005 : f2802xx_defaultisr.obj (.text:_SCITXINTA_ISR) 00000575 00000005 : f2802xx_defaultisr.obj (.text:_SPIRXINTA_ISR) 0000057a 00000005 : f2802xx_defaultisr.obj (.text:_SPITXINTA_ISR) 0000057f 00000005 : f2802xx_defaultisr.obj (.text:_TINT0_ISR) 00000584 00000005 : f2802xx_defaultisr.obj (.text:_USER10_ISR) 00000589 00000005 : f2802xx_defaultisr.obj (.text:_USER11_ISR) 0000058e 00000005 : f2802xx_defaultisr.obj (.text:_USER12_ISR) 00000593 00000005 : f2802xx_defaultisr.obj (.text:_USER1_ISR) 00000598 00000005 : f2802xx_defaultisr.obj (.text:_USER2_ISR) 0000059d 00000005 : f2802xx_defaultisr.obj (.text:_USER3_ISR) 000005a2 00000005 : f2802xx_defaultisr.obj (.text:_USER4_ISR) 000005a7 00000005 : f2802xx_defaultisr.obj (.text:_USER5_ISR) 000005ac 00000005 : f2802xx_defaultisr.obj (.text:_USER6_ISR) 000005b1 00000005 : f2802xx_defaultisr.obj (.text:_USER7_ISR) 000005b6 00000005 : f2802xx_defaultisr.obj (.text:_USER8_ISR) 000005bb 00000005 : f2802xx_defaultisr.obj (.text:_USER9_ISR) 000005c0 00000005 : f2802xx_defaultisr.obj (.text:_WAKEINT_ISR) 000005c5 00000005 : f2802xx_defaultisr.obj (.text:_XINT1_ISR) 000005ca 00000005 : f2802xx_defaultisr.obj (.text:_XINT2_ISR) 000005cf 00000005 : f2802xx_defaultisr.obj (.text:_XINT3_ISR) 000005d4 00000005 : f2802xx_defaultisr.obj (.text:_rsvd_ISR) 000005d9 00000004 : cpu.obj (.text:_CPU_init) 000005dd 00000004 : sci.obj (.text:_SCI_clearRxFifoInt) 000005e1 00000004 : sci.obj (.text:_SCI_clearTxFifoInt) 000005e5 00000004 : sci.obj (.text:_SCI_enableFifoEnh) 000005e9 00000004 : sci.obj (.text:_SCI_getRxFifoStatus) 000005ed 00000004 : sci.obj (.text:_SCI_setCharLength) 000005f1 00000004 : sci.obj (.text:_SCI_setNumStopBits) 000005f5 00000003 : cpu.obj (.text:_CPU_clearIntFlags) 000005f8 00000003 : cpu.obj (.text:_CPU_disableGlobalInts) 000005fb 00000003 : pie.obj (.text:_PIE_disable) 000005fe 00000003 : pie.obj (.text:_PIE_enable) 00000601 00000003 : pll.obj (.text:_PLL_getClkStatus) 00000604 00000003 : pll.obj (.text:_PLL_getLockStatus) 00000607 00000003 : sci.obj (.text:_SCI_disableParity) 0000060a 00000003 : sci.obj (.text:_SCI_enable) 0000060d 00000003 : sci.obj (.text:_SCI_enableRx) 00000610 00000003 : sci.obj (.text:_SCI_enableRxInt) 00000613 00000003 : sci.obj (.text:_SCI_enableTx) 00000616 00000003 : sci.obj (.text:_SCI_enableTxInt) 00000619 00000002 rts2800_ml.lib : pre_init.c.obj (.text) 0000061b 00000001 : startup.c.obj (.text) .cinit 0 00008000 000000c5 00008000 00000083 SCIA.obj (.cinit:_message) 00008083 00000028 SCIA.obj (.cinit) 000080ab 0000000e rts2800_ml.lib : exit.c.obj (.cinit) 000080b9 00000005 : _lock.c.obj (.cinit:__lock) 000080be 00000005 : _lock.c.obj (.cinit:__unlock) 000080c3 00000002 --HOLE-- [fill = 0] .pinit 0 00000040 00000000 UNINITIALIZED .reset 0 003fffc0 00000002 DSECT 003fffc0 00000002 rts2800_ml.lib : boot28.asm.obj (.reset) .stack 1 00000700 00000100 UNINITIALIZED 00000700 00000100 --HOLE-- .econst 1 00008250 00000100 00008250 00000100 driverlib.lib : pie.obj (.econst:_PIE_tableDebugInit) .ebss 1 00008350 000000b0 UNINITIALIZED 00008350 00000018 SCIA.obj (.ebss) 00008368 00000006 rts2800_ml.lib : exit.c.obj (.ebss) 0000836e 00000002 : _lock.c.obj (.ebss:__lock) 00008370 00000002 : _lock.c.obj (.ebss:__unlock) 00008372 00000001 driverlib.lib : cpu.obj (.ebss) 00008373 0000000d --HOLE-- 00008380 00000080 SCIA.obj (.ebss:_message) MODULE SUMMARY Module code initialized data uninitialized data ------ ---- ---------------- ------------------ .\ SCIA.obj 493 171 152 +--+-----------------------------+------+------------------+--------------------+ Total: 493 171 152 C:/ti/C2000Ware_4_00_00_00/device_support/f2802x/common/ccs/Debug/driverlib.lib pie.obj 55 256 0 f2802xx_defaultisr.obj 255 0 0 gpio.obj 238 0 0 sci.obj 109 0 0 pll.obj 48 0 0 clk.obj 31 0 0 wdog.obj 16 0 0 cpu.obj 10 0 1 adc.obj 10 0 0 f2802xx_codestartbranch.obj 10 0 0 flash.obj 8 0 0 +--+-----------------------------+------+------------------+--------------------+ Total: 790 256 1 C:/ti/ccs1020/ccs/tools/compiler/ti-cgt-c2000_21.6.0.LTS/lib/rts2800_ml.lib boot28.asm.obj 84 0 0 exit.c.obj 41 14 6 cpy_tbl.c.obj 36 0 0 memcpy.c.obj 29 0 0 _lock.c.obj 9 10 4 args_main.c.obj 17 0 0 pre_init.c.obj 2 0 0 startup.c.obj 1 0 0 +--+-----------------------------+------+------------------+--------------------+ Total: 219 24 10 Stack: 0 0 256 +--+-----------------------------+------+------------------+--------------------+ Grand Total: 1502 451 419 GLOBAL DATA SYMBOLS: SORTED BY DATA PAGE address data page name -------- ---------------- ---- 00000700 1c (00000700) __stack 00008250 209 (00008240) _PIE_tableDebugInit 00008350 20d (00008340) _LoopCount 00008351 20d (00008340) _ErrorCount 00008352 20d (00008340) _redLED 00008353 20d (00008340) _blueLED 00008354 20d (00008340) _greenLED 00008355 20d (00008340) _rdvLoopCount 00008356 20d (00008340) _rdvWaitCount 00008357 20d (00008340) _rdvWordCount 00008358 20d (00008340) _rdvReceivedCount 00008359 20d (00008340) _lastReceived 0000835a 20d (00008340) _byteReceived 0000835b 20d (00008340) _receivedByteFlag 0000835c 20d (00008340) _myAdc 0000835e 20d (00008340) _myClk 00008360 20d (00008340) _myFlash 00008362 20d (00008340) _myGpio 00008364 20d (00008340) _myPie 00008366 20d (00008340) _mySci 00008368 20d (00008340) ___TI_enable_exit_profile_output 0000836a 20d (00008340) ___TI_cleanup_ptr 0000836c 20d (00008340) ___TI_dtors_ptr 0000836e 20d (00008340) __lock 00008370 20d (00008340) __unlock 00008372 20d (00008340) _cpu 00008380 20e (00008380) _message GLOBAL SYMBOLS: SORTED ALPHABETICALLY BY Name page address name ---- ------- ---- 0 00000040 .text 0 0000031b C$$EXIT 0 000004d5 _ADCINT1_ISR 0 000004da _ADCINT2_ISR 0 000004df _ADCINT3_ISR 0 000004e4 _ADCINT4_ISR 0 000004e9 _ADCINT5_ISR 0 000004ee _ADCINT6_ISR 0 000004f3 _ADCINT7_ISR 0 000004f8 _ADCINT8_ISR 0 000004fd _ADCINT9_ISR 0 00000419 _ADC_init 0 000004a6 _CLK_enableAdcClock 0 0000044b _CLK_enableSciaClock 0 00000466 _CLK_init 0 000004ad _CLK_setOscSrc 0 000005f5 _CPU_clearIntFlags 0 000005f8 _CPU_disableGlobalInts 0 000005d9 _CPU_init 0 00000502 _DATALOG_ISR 0 00000507 _ECAP1_INT_ISR 0 0000050c _EMPTY_ISR 0 00000511 _EMUINT_ISR 0 00000516 _EPWM1_INT_ISR 0 0000051b _EPWM1_TZINT_ISR 0 00000520 _EPWM2_INT_ISR 0 00000525 _EPWM2_TZINT_ISR 0 0000052a _EPWM3_INT_ISR 0 0000052f _EPWM3_TZINT_ISR 0 00000534 _EPWM4_INT_ISR 0 00000539 _EPWM4_TZINT_ISR 1 00008351 _ErrorCount 0 0000046e _FLASH_init 0 000003d5 _GPIO_getData 0 00000476 _GPIO_init 0 000002c9 _GPIO_setDirection 0 00000281 _GPIO_setMode 0 000002f2 _GPIO_setPullUp 0 00000344 _GPIO_setQualification 0 000003c1 _GPIO_toggle 0 0000053e _I2CINT1A_ISR 0 00000543 _I2CINT2A_ISR 0 00000548 _ILLEGAL_ISR 0 0000054d _INT13_ISR 0 00000552 _INT14_ISR 1 00008350 _LoopCount 0 00000557 _NMI_ISR 0 0000055c _PIE_RESERVED 0 000005fb _PIE_disable 0 000003e6 _PIE_disableAllInts 0 000005fe _PIE_enable 0 00000561 _PIE_illegalIsr 0 00000423 _PIE_init 0 000003f7 _PIE_setDebugIntVectorTable 1 00008250 _PIE_tableDebugInit 0 00000601 _PLL_getClkStatus 0 00000604 _PLL_getLockStatus 0 0000047e _PLL_init 0 000004b4 _PLL_setDivider 0 000004c9 _PLL_setMultiplier 0 000003ac _PLL_setup 0 00000566 _RTOSINT_ISR 0 0000056b _SCIRXINTA_ISR 0 00000570 _SCITXINTA_ISR 0 000005dd _SCI_clearRxFifoInt 0 000005e1 _SCI_clearTxFifoInt 0 00000607 _SCI_disableParity 0 0000060a _SCI_enable 0 000005e5 _SCI_enableFifoEnh 0 0000060d _SCI_enableRx 0 00000610 _SCI_enableRxInt 0 00000613 _SCI_enableTx 0 00000616 _SCI_enableTxInt 0 000005e9 _SCI_getRxFifoStatus 0 00000486 _SCI_init 0 00000454 _SCI_putDataBlocking 0 0000042d _SCI_resetChannels 0 00000437 _SCI_resetRxFifo 0 00000441 _SCI_resetTxFifo 0 000004cf _SCI_setBaudRate 0 000005ed _SCI_setCharLength 0 000005f1 _SCI_setNumStopBits 0 000004bb _SCI_setRxFifoIntLevel 0 000004c2 _SCI_setTxFifoIntLevel 0 00000575 _SPIRXINTA_ISR 0 0000057a _SPITXINTA_ISR 0 0000057f _TINT0_ISR 0 00000584 _USER10_ISR 0 00000589 _USER11_ISR 0 0000058e _USER12_ISR 0 00000593 _USER1_ISR 0 00000598 _USER2_ISR 0 0000059d _USER3_ISR 0 000005a2 _USER4_ISR 0 000005a7 _USER5_ISR 0 000005ac _USER6_ISR 0 000005b1 _USER7_ISR 0 000005b6 _USER8_ISR 0 000005bb _USER9_ISR 0 000005c0 _WAKEINT_ISR 0 0000048e _WDOG_disable 0 00000496 _WDOG_init 0 000005c5 _XINT1_ISR 0 000005ca _XINT2_ISR 0 000005cf _XINT3_ISR 1 00000800 __STACK_END abs 00000100 __STACK_SIZE 1 0000836a ___TI_cleanup_ptr 1 0000836c ___TI_dtors_ptr 1 00008368 ___TI_enable_exit_profile_output abs ffffffff ___TI_pprof_out_hndl abs ffffffff ___TI_prof_data_size abs ffffffff ___TI_prof_data_start abs ffffffff ___binit__ abs ffffffff ___c_args__ 0 00008000 ___cinit__ 0 0000061c ___etext__ abs ffffffff ___pinit__ 0 00000040 ___text__ 0 00000408 __args_main 1 0000836e __lock 0 00000465 __nop 0 00000461 __register_lock 0 0000045d __register_unlock 1 00000700 __stack 0 0000061b __system_post_cinit 0 00000619 __system_pre_init 1 00008370 __unlock 0 0000031b _abort 1 00008353 _blueLED 1 0000835a _byteReceived 0 0000022d _c_int00 0 0000036b _copy_in 1 00008372 _cpu 0 000001c7 _error 0 0000031d _exit 1 00008354 _greenLED 1 00008359 _lastReceived 0 00000048 _main 0 0000038f _memcpy 1 00008380 _message 1 0000835c _myAdc 1 0000835e _myClk 1 00008360 _myFlash 1 00008362 _myGpio 1 00008364 _myPie 1 00008366 _mySci 1 00008355 _rdvLoopCount 1 00008358 _rdvReceivedCount 1 00008356 _rdvWaitCount 1 00008357 _rdvWordCount 1 0000835b _receivedByteFlag 1 00008352 _redLED 0 000005d4 _rsvd_ISR 0 00000202 _scia_fifo_init 0 000001cc _scia_init abs ffffffff binit 0 00008000 cinit 0 00000000 code_start 0 0000061c etext abs ffffffff pinit GLOBAL SYMBOLS: SORTED BY Symbol Address page address name ---- ------- ---- 0 00000000 code_start 0 00000040 .text 0 00000040 ___text__ 0 00000048 _main 0 000001c7 _error 0 000001cc _scia_init 0 00000202 _scia_fifo_init 0 0000022d _c_int00 0 00000281 _GPIO_setMode 0 000002c9 _GPIO_setDirection 0 000002f2 _GPIO_setPullUp 0 0000031b C$$EXIT 0 0000031b _abort 0 0000031d _exit 0 00000344 _GPIO_setQualification 0 0000036b _copy_in 0 0000038f _memcpy 0 000003ac _PLL_setup 0 000003c1 _GPIO_toggle 0 000003d5 _GPIO_getData 0 000003e6 _PIE_disableAllInts 0 000003f7 _PIE_setDebugIntVectorTable 0 00000408 __args_main 0 00000419 _ADC_init 0 00000423 _PIE_init 0 0000042d _SCI_resetChannels 0 00000437 _SCI_resetRxFifo 0 00000441 _SCI_resetTxFifo 0 0000044b _CLK_enableSciaClock 0 00000454 _SCI_putDataBlocking 0 0000045d __register_unlock 0 00000461 __register_lock 0 00000465 __nop 0 00000466 _CLK_init 0 0000046e _FLASH_init 0 00000476 _GPIO_init 0 0000047e _PLL_init 0 00000486 _SCI_init 0 0000048e _WDOG_disable 0 00000496 _WDOG_init 0 000004a6 _CLK_enableAdcClock 0 000004ad _CLK_setOscSrc 0 000004b4 _PLL_setDivider 0 000004bb _SCI_setRxFifoIntLevel 0 000004c2 _SCI_setTxFifoIntLevel 0 000004c9 _PLL_setMultiplier 0 000004cf _SCI_setBaudRate 0 000004d5 _ADCINT1_ISR 0 000004da _ADCINT2_ISR 0 000004df _ADCINT3_ISR 0 000004e4 _ADCINT4_ISR 0 000004e9 _ADCINT5_ISR 0 000004ee _ADCINT6_ISR 0 000004f3 _ADCINT7_ISR 0 000004f8 _ADCINT8_ISR 0 000004fd _ADCINT9_ISR 0 00000502 _DATALOG_ISR 0 00000507 _ECAP1_INT_ISR 0 0000050c _EMPTY_ISR 0 00000511 _EMUINT_ISR 0 00000516 _EPWM1_INT_ISR 0 0000051b _EPWM1_TZINT_ISR 0 00000520 _EPWM2_INT_ISR 0 00000525 _EPWM2_TZINT_ISR 0 0000052a _EPWM3_INT_ISR 0 0000052f _EPWM3_TZINT_ISR 0 00000534 _EPWM4_INT_ISR 0 00000539 _EPWM4_TZINT_ISR 0 0000053e _I2CINT1A_ISR 0 00000543 _I2CINT2A_ISR 0 00000548 _ILLEGAL_ISR 0 0000054d _INT13_ISR 0 00000552 _INT14_ISR 0 00000557 _NMI_ISR 0 0000055c _PIE_RESERVED 0 00000561 _PIE_illegalIsr 0 00000566 _RTOSINT_ISR 0 0000056b _SCIRXINTA_ISR 0 00000570 _SCITXINTA_ISR 0 00000575 _SPIRXINTA_ISR 0 0000057a _SPITXINTA_ISR 0 0000057f _TINT0_ISR 0 00000584 _USER10_ISR 0 00000589 _USER11_ISR 0 0000058e _USER12_ISR 0 00000593 _USER1_ISR 0 00000598 _USER2_ISR 0 0000059d _USER3_ISR 0 000005a2 _USER4_ISR 0 000005a7 _USER5_ISR 0 000005ac _USER6_ISR 0 000005b1 _USER7_ISR 0 000005b6 _USER8_ISR 0 000005bb _USER9_ISR 0 000005c0 _WAKEINT_ISR 0 000005c5 _XINT1_ISR 0 000005ca _XINT2_ISR 0 000005cf _XINT3_ISR 0 000005d4 _rsvd_ISR 0 000005d9 _CPU_init 0 000005dd _SCI_clearRxFifoInt 0 000005e1 _SCI_clearTxFifoInt 0 000005e5 _SCI_enableFifoEnh 0 000005e9 _SCI_getRxFifoStatus 0 000005ed _SCI_setCharLength 0 000005f1 _SCI_setNumStopBits 0 000005f5 _CPU_clearIntFlags 0 000005f8 _CPU_disableGlobalInts 0 000005fb _PIE_disable 0 000005fe _PIE_enable 0 00000601 _PLL_getClkStatus 0 00000604 _PLL_getLockStatus 0 00000607 _SCI_disableParity 0 0000060a _SCI_enable 0 0000060d _SCI_enableRx 0 00000610 _SCI_enableRxInt 0 00000613 _SCI_enableTx 0 00000616 _SCI_enableTxInt 0 00000619 __system_pre_init 0 0000061b __system_post_cinit 0 0000061c ___etext__ 0 0000061c etext 0 00008000 ___cinit__ 0 00008000 cinit 1 00000700 __stack 1 00000800 __STACK_END 1 00008250 _PIE_tableDebugInit 1 00008350 _LoopCount 1 00008351 _ErrorCount 1 00008352 _redLED 1 00008353 _blueLED 1 00008354 _greenLED 1 00008355 _rdvLoopCount 1 00008356 _rdvWaitCount 1 00008357 _rdvWordCount 1 00008358 _rdvReceivedCount 1 00008359 _lastReceived 1 0000835a _byteReceived 1 0000835b _receivedByteFlag 1 0000835c _myAdc 1 0000835e _myClk 1 00008360 _myFlash 1 00008362 _myGpio 1 00008364 _myPie 1 00008366 _mySci 1 00008368 ___TI_enable_exit_profile_output 1 0000836a ___TI_cleanup_ptr 1 0000836c ___TI_dtors_ptr 1 0000836e __lock 1 00008370 __unlock 1 00008372 _cpu 1 00008380 _message abs 00000100 __STACK_SIZE abs ffffffff ___TI_pprof_out_hndl abs ffffffff ___TI_prof_data_size abs ffffffff ___TI_prof_data_start abs ffffffff ___binit__ abs ffffffff ___c_args__ abs ffffffff ___pinit__ abs ffffffff binit abs ffffffff pinit [161 symbols]
2. CAM-20-D_FLASH0.map
****************************************************************************** TMS320C2000 Linker PC v21.6.0 ****************************************************************************** >> Linked Mon Apr 11 09:08:45 2022 OUTPUT FILE NAME: <CAM-20-D.out> ENTRY POINT SYMBOL: "code_start" address: 00000000 MEMORY CONFIGURATION name origin length used unused attr fill ---------------------- -------- --------- -------- -------- ---- -------- PAGE 0: BEGIN 00000000 00000002 00000002 00000000 RWIX RAMM0 00000040 000006c0 000005dc 000000e4 RWIX PRAML0 00008000 00000250 00000000 00000250 RWIX FLASH0 003f4000 00001000 000000c5 00000f3b RWIX IQTABLES 003fe000 00000b50 00000000 00000b50 RWIX IQTABLES2 003feb50 0000008c 00000000 0000008c RWIX IQTABLES3 003febdc 000000aa 00000000 000000aa RWIX BOOTROM 003ff27c 00000d44 00000000 00000d44 RWIX RESET 003fffc0 00000002 00000000 00000002 RWIX PAGE 1: BOOT_RSVD 00000002 0000004e 00000000 0000004e RWIX RAMM1 00000700 00000100 00000100 00000000 RWIX DEV_EMU 00000880 00000105 00000000 00000105 RWIX SYS_PWR_CTL 00000985 00000003 00000000 00000003 RWIX FLASH_REGS 00000a80 00000060 00000000 00000060 RWIX CSM 00000ae0 00000010 00000000 00000010 RWIX ADC_RESULT 00000b00 00000020 00000000 00000020 RWIX CPU_TIMER0 00000c00 00000008 00000000 00000008 RWIX CPU_TIMER1 00000c08 00000008 00000000 00000008 RWIX CPU_TIMER2 00000c10 00000008 00000000 00000008 RWIX PIE_CTRL 00000ce0 00000020 00000000 00000020 RWIX PIE_VECT 00000d00 00000100 00000000 00000100 RWIX COMP1 00006400 00000020 00000000 00000020 RWIX COMP2 00006420 00000020 00000000 00000020 RWIX EPWM1 00006800 00000040 00000000 00000040 RWIX EPWM2 00006840 00000040 00000000 00000040 RWIX EPWM3 00006880 00000040 00000000 00000040 RWIX EPWM4 000068c0 00000040 00000000 00000040 RWIX ECAP1 00006a00 00000020 00000000 00000020 RWIX GPIOCTRL 00006f80 00000040 00000000 00000040 RWIX GPIODAT 00006fc0 00000020 00000000 00000020 RWIX GPIOINT 00006fe0 00000020 00000000 00000020 RWIX SYSTEM 00007010 00000020 00000000 00000020 RWIX SPIA 00007040 00000010 00000000 00000010 RWIX SCIA 00007050 00000010 00000000 00000010 RWIX NMIINTRUPT 00007060 00000010 00000000 00000010 RWIX XINTRUPT 00007070 00000010 00000000 00000010 RWIX ADC 00007100 00000080 00000000 00000080 RWIX I2CA 00007900 00000040 00000000 00000040 RWIX DRAML0 00008250 000001b0 000001b0 00000000 RWIX PARTID 003d7fff 00000001 00000000 00000001 RWIX CSM_PWL 003f7ff8 00000008 00000000 00000008 RWIX SECTION ALLOCATION MAP output attributes/ section page origin length input sections -------- ---- ---------- ---------- ---------------- codestart * 0 00000000 00000002 00000000 00000002 driverlib.lib : f2802xx_codestartbranch.obj (codestart) .text 0 00000040 000005dc 00000040 000001ed SCIA.obj (.text) 0000022d 00000054 rts2800_ml.lib : boot28.asm.obj (.text) 00000281 00000048 driverlib.lib : gpio.obj (.text:_GPIO_setMode) 000002c9 00000029 : gpio.obj (.text:_GPIO_setDirection) 000002f2 00000029 : gpio.obj (.text:_GPIO_setPullUp) 0000031b 00000029 rts2800_ml.lib : exit.c.obj (.text) 00000344 00000027 driverlib.lib : gpio.obj (.text:_GPIO_setQualification) 0000036b 00000024 rts2800_ml.lib : cpy_tbl.c.obj (.text) 0000038f 0000001d : memcpy.c.obj (.text) 000003ac 00000015 driverlib.lib : pll.obj (.text:_PLL_setup) 000003c1 00000014 : gpio.obj (.text:_GPIO_toggle) 000003d5 00000011 : gpio.obj (.text:_GPIO_getData) 000003e6 00000011 : pie.obj (.text:_PIE_disableAllInts) 000003f7 00000011 : pie.obj (.text:_PIE_setDebugIntVectorTable) 00000408 00000011 rts2800_ml.lib : args_main.c.obj (.text) 00000419 0000000a driverlib.lib : adc.obj (.text:_ADC_init) 00000423 0000000a : pie.obj (.text:_PIE_init) 0000042d 0000000a : sci.obj (.text:_SCI_resetChannels) 00000437 0000000a : sci.obj (.text:_SCI_resetRxFifo) 00000441 0000000a : sci.obj (.text:_SCI_resetTxFifo) 0000044b 00000009 : clk.obj (.text:_CLK_enableSciaClock) 00000454 00000009 : sci.obj (.text:_SCI_putDataBlocking) 0000045d 00000009 rts2800_ml.lib : _lock.c.obj (.text) 00000466 00000008 driverlib.lib : clk.obj (.text:_CLK_init) 0000046e 00000008 : flash.obj (.text:_FLASH_init) 00000476 00000008 : gpio.obj (.text:_GPIO_init) 0000047e 00000008 : pll.obj (.text:_PLL_init) 00000486 00000008 : sci.obj (.text:_SCI_init) 0000048e 00000008 : wdog.obj (.text:_WDOG_disable) 00000496 00000008 : wdog.obj (.text:_WDOG_init) 0000049e 00000008 : f2802xx_codestartbranch.obj (.text) 000004a6 00000007 : clk.obj (.text:_CLK_enableAdcClock) 000004ad 00000007 : clk.obj (.text:_CLK_setOscSrc) 000004b4 00000007 : pll.obj (.text:_PLL_setDivider) 000004bb 00000007 : sci.obj (.text:_SCI_setRxFifoIntLevel) 000004c2 00000007 : sci.obj (.text:_SCI_setTxFifoIntLevel) 000004c9 00000006 : pll.obj (.text:_PLL_setMultiplier) 000004cf 00000006 : sci.obj (.text:_SCI_setBaudRate) 000004d5 00000005 : f2802xx_defaultisr.obj (.text:_ADCINT1_ISR) 000004da 00000005 : f2802xx_defaultisr.obj (.text:_ADCINT2_ISR) 000004df 00000005 : f2802xx_defaultisr.obj (.text:_ADCINT3_ISR) 000004e4 00000005 : f2802xx_defaultisr.obj (.text:_ADCINT4_ISR) 000004e9 00000005 : f2802xx_defaultisr.obj (.text:_ADCINT5_ISR) 000004ee 00000005 : f2802xx_defaultisr.obj (.text:_ADCINT6_ISR) 000004f3 00000005 : f2802xx_defaultisr.obj (.text:_ADCINT7_ISR) 000004f8 00000005 : f2802xx_defaultisr.obj (.text:_ADCINT8_ISR) 000004fd 00000005 : f2802xx_defaultisr.obj (.text:_ADCINT9_ISR) 00000502 00000005 : f2802xx_defaultisr.obj (.text:_DATALOG_ISR) 00000507 00000005 : f2802xx_defaultisr.obj (.text:_ECAP1_INT_ISR) 0000050c 00000005 : f2802xx_defaultisr.obj (.text:_EMPTY_ISR) 00000511 00000005 : f2802xx_defaultisr.obj (.text:_EMUINT_ISR) 00000516 00000005 : f2802xx_defaultisr.obj (.text:_EPWM1_INT_ISR) 0000051b 00000005 : f2802xx_defaultisr.obj (.text:_EPWM1_TZINT_ISR) 00000520 00000005 : f2802xx_defaultisr.obj (.text:_EPWM2_INT_ISR) 00000525 00000005 : f2802xx_defaultisr.obj (.text:_EPWM2_TZINT_ISR) 0000052a 00000005 : f2802xx_defaultisr.obj (.text:_EPWM3_INT_ISR) 0000052f 00000005 : f2802xx_defaultisr.obj (.text:_EPWM3_TZINT_ISR) 00000534 00000005 : f2802xx_defaultisr.obj (.text:_EPWM4_INT_ISR) 00000539 00000005 : f2802xx_defaultisr.obj (.text:_EPWM4_TZINT_ISR) 0000053e 00000005 : f2802xx_defaultisr.obj (.text:_I2CINT1A_ISR) 00000543 00000005 : f2802xx_defaultisr.obj (.text:_I2CINT2A_ISR) 00000548 00000005 : f2802xx_defaultisr.obj (.text:_ILLEGAL_ISR) 0000054d 00000005 : f2802xx_defaultisr.obj (.text:_INT13_ISR) 00000552 00000005 : f2802xx_defaultisr.obj (.text:_INT14_ISR) 00000557 00000005 : f2802xx_defaultisr.obj (.text:_NMI_ISR) 0000055c 00000005 : f2802xx_defaultisr.obj (.text:_PIE_RESERVED) 00000561 00000005 : pie.obj (.text:_PIE_illegalIsr) 00000566 00000005 : f2802xx_defaultisr.obj (.text:_RTOSINT_ISR) 0000056b 00000005 : f2802xx_defaultisr.obj (.text:_SCIRXINTA_ISR) 00000570 00000005 : f2802xx_defaultisr.obj (.text:_SCITXINTA_ISR) 00000575 00000005 : f2802xx_defaultisr.obj (.text:_SPIRXINTA_ISR) 0000057a 00000005 : f2802xx_defaultisr.obj (.text:_SPITXINTA_ISR) 0000057f 00000005 : f2802xx_defaultisr.obj (.text:_TINT0_ISR) 00000584 00000005 : f2802xx_defaultisr.obj (.text:_USER10_ISR) 00000589 00000005 : f2802xx_defaultisr.obj (.text:_USER11_ISR) 0000058e 00000005 : f2802xx_defaultisr.obj (.text:_USER12_ISR) 00000593 00000005 : f2802xx_defaultisr.obj (.text:_USER1_ISR) 00000598 00000005 : f2802xx_defaultisr.obj (.text:_USER2_ISR) 0000059d 00000005 : f2802xx_defaultisr.obj (.text:_USER3_ISR) 000005a2 00000005 : f2802xx_defaultisr.obj (.text:_USER4_ISR) 000005a7 00000005 : f2802xx_defaultisr.obj (.text:_USER5_ISR) 000005ac 00000005 : f2802xx_defaultisr.obj (.text:_USER6_ISR) 000005b1 00000005 : f2802xx_defaultisr.obj (.text:_USER7_ISR) 000005b6 00000005 : f2802xx_defaultisr.obj (.text:_USER8_ISR) 000005bb 00000005 : f2802xx_defaultisr.obj (.text:_USER9_ISR) 000005c0 00000005 : f2802xx_defaultisr.obj (.text:_WAKEINT_ISR) 000005c5 00000005 : f2802xx_defaultisr.obj (.text:_XINT1_ISR) 000005ca 00000005 : f2802xx_defaultisr.obj (.text:_XINT2_ISR) 000005cf 00000005 : f2802xx_defaultisr.obj (.text:_XINT3_ISR) 000005d4 00000005 : f2802xx_defaultisr.obj (.text:_rsvd_ISR) 000005d9 00000004 : cpu.obj (.text:_CPU_init) 000005dd 00000004 : sci.obj (.text:_SCI_clearRxFifoInt) 000005e1 00000004 : sci.obj (.text:_SCI_clearTxFifoInt) 000005e5 00000004 : sci.obj (.text:_SCI_enableFifoEnh) 000005e9 00000004 : sci.obj (.text:_SCI_getRxFifoStatus) 000005ed 00000004 : sci.obj (.text:_SCI_setCharLength) 000005f1 00000004 : sci.obj (.text:_SCI_setNumStopBits) 000005f5 00000003 : cpu.obj (.text:_CPU_clearIntFlags) 000005f8 00000003 : cpu.obj (.text:_CPU_disableGlobalInts) 000005fb 00000003 : pie.obj (.text:_PIE_disable) 000005fe 00000003 : pie.obj (.text:_PIE_enable) 00000601 00000003 : pll.obj (.text:_PLL_getClkStatus) 00000604 00000003 : pll.obj (.text:_PLL_getLockStatus) 00000607 00000003 : sci.obj (.text:_SCI_disableParity) 0000060a 00000003 : sci.obj (.text:_SCI_enable) 0000060d 00000003 : sci.obj (.text:_SCI_enableRx) 00000610 00000003 : sci.obj (.text:_SCI_enableRxInt) 00000613 00000003 : sci.obj (.text:_SCI_enableTx) 00000616 00000003 : sci.obj (.text:_SCI_enableTxInt) 00000619 00000002 rts2800_ml.lib : pre_init.c.obj (.text) 0000061b 00000001 : startup.c.obj (.text) .cinit 0 003f4000 000000c5 003f4000 00000083 SCIA.obj (.cinit:_message) 003f4083 00000028 SCIA.obj (.cinit) 003f40ab 0000000e rts2800_ml.lib : exit.c.obj (.cinit) 003f40b9 00000005 : _lock.c.obj (.cinit:__lock) 003f40be 00000005 : _lock.c.obj (.cinit:__unlock) 003f40c3 00000002 --HOLE-- [fill = 0] .pinit 0 00000040 00000000 UNINITIALIZED .reset 0 003fffc0 00000002 DSECT 003fffc0 00000002 rts2800_ml.lib : boot28.asm.obj (.reset) .stack 1 00000700 00000100 UNINITIALIZED 00000700 00000100 --HOLE-- .econst 1 00008250 00000100 00008250 00000100 driverlib.lib : pie.obj (.econst:_PIE_tableDebugInit) .ebss 1 00008350 000000b0 UNINITIALIZED 00008350 00000018 SCIA.obj (.ebss) 00008368 00000006 rts2800_ml.lib : exit.c.obj (.ebss) 0000836e 00000002 : _lock.c.obj (.ebss:__lock) 00008370 00000002 : _lock.c.obj (.ebss:__unlock) 00008372 00000001 driverlib.lib : cpu.obj (.ebss) 00008373 0000000d --HOLE-- 00008380 00000080 SCIA.obj (.ebss:_message) MODULE SUMMARY Module code initialized data uninitialized data ------ ---- ---------------- ------------------ .\ SCIA.obj 493 171 152 +--+-----------------------------+------+------------------+--------------------+ Total: 493 171 152 C:/ti/C2000Ware_4_00_00_00/device_support/f2802x/common/ccs/Debug/driverlib.lib pie.obj 55 256 0 f2802xx_defaultisr.obj 255 0 0 gpio.obj 238 0 0 sci.obj 109 0 0 pll.obj 48 0 0 clk.obj 31 0 0 wdog.obj 16 0 0 cpu.obj 10 0 1 adc.obj 10 0 0 f2802xx_codestartbranch.obj 10 0 0 flash.obj 8 0 0 +--+-----------------------------+------+------------------+--------------------+ Total: 790 256 1 C:/ti/ccs1020/ccs/tools/compiler/ti-cgt-c2000_21.6.0.LTS/lib/rts2800_ml.lib boot28.asm.obj 84 0 0 exit.c.obj 41 14 6 cpy_tbl.c.obj 36 0 0 memcpy.c.obj 29 0 0 _lock.c.obj 9 10 4 args_main.c.obj 17 0 0 pre_init.c.obj 2 0 0 startup.c.obj 1 0 0 +--+-----------------------------+------+------------------+--------------------+ Total: 219 24 10 Stack: 0 0 256 +--+-----------------------------+------+------------------+--------------------+ Grand Total: 1502 451 419 GLOBAL DATA SYMBOLS: SORTED BY DATA PAGE address data page name -------- ---------------- ---- 00000700 1c (00000700) __stack 00008250 209 (00008240) _PIE_tableDebugInit 00008350 20d (00008340) _LoopCount 00008351 20d (00008340) _ErrorCount 00008352 20d (00008340) _redLED 00008353 20d (00008340) _blueLED 00008354 20d (00008340) _greenLED 00008355 20d (00008340) _rdvLoopCount 00008356 20d (00008340) _rdvWaitCount 00008357 20d (00008340) _rdvWordCount 00008358 20d (00008340) _rdvReceivedCount 00008359 20d (00008340) _lastReceived 0000835a 20d (00008340) _byteReceived 0000835b 20d (00008340) _receivedByteFlag 0000835c 20d (00008340) _myAdc 0000835e 20d (00008340) _myClk 00008360 20d (00008340) _myFlash 00008362 20d (00008340) _myGpio 00008364 20d (00008340) _myPie 00008366 20d (00008340) _mySci 00008368 20d (00008340) ___TI_enable_exit_profile_output 0000836a 20d (00008340) ___TI_cleanup_ptr 0000836c 20d (00008340) ___TI_dtors_ptr 0000836e 20d (00008340) __lock 00008370 20d (00008340) __unlock 00008372 20d (00008340) _cpu 00008380 20e (00008380) _message GLOBAL SYMBOLS: SORTED ALPHABETICALLY BY Name page address name ---- ------- ---- 0 00000040 .text 0 0000031b C$$EXIT 0 000004d5 _ADCINT1_ISR 0 000004da _ADCINT2_ISR 0 000004df _ADCINT3_ISR 0 000004e4 _ADCINT4_ISR 0 000004e9 _ADCINT5_ISR 0 000004ee _ADCINT6_ISR 0 000004f3 _ADCINT7_ISR 0 000004f8 _ADCINT8_ISR 0 000004fd _ADCINT9_ISR 0 00000419 _ADC_init 0 000004a6 _CLK_enableAdcClock 0 0000044b _CLK_enableSciaClock 0 00000466 _CLK_init 0 000004ad _CLK_setOscSrc 0 000005f5 _CPU_clearIntFlags 0 000005f8 _CPU_disableGlobalInts 0 000005d9 _CPU_init 0 00000502 _DATALOG_ISR 0 00000507 _ECAP1_INT_ISR 0 0000050c _EMPTY_ISR 0 00000511 _EMUINT_ISR 0 00000516 _EPWM1_INT_ISR 0 0000051b _EPWM1_TZINT_ISR 0 00000520 _EPWM2_INT_ISR 0 00000525 _EPWM2_TZINT_ISR 0 0000052a _EPWM3_INT_ISR 0 0000052f _EPWM3_TZINT_ISR 0 00000534 _EPWM4_INT_ISR 0 00000539 _EPWM4_TZINT_ISR 1 00008351 _ErrorCount 0 0000046e _FLASH_init 0 000003d5 _GPIO_getData 0 00000476 _GPIO_init 0 000002c9 _GPIO_setDirection 0 00000281 _GPIO_setMode 0 000002f2 _GPIO_setPullUp 0 00000344 _GPIO_setQualification 0 000003c1 _GPIO_toggle 0 0000053e _I2CINT1A_ISR 0 00000543 _I2CINT2A_ISR 0 00000548 _ILLEGAL_ISR 0 0000054d _INT13_ISR 0 00000552 _INT14_ISR 1 00008350 _LoopCount 0 00000557 _NMI_ISR 0 0000055c _PIE_RESERVED 0 000005fb _PIE_disable 0 000003e6 _PIE_disableAllInts 0 000005fe _PIE_enable 0 00000561 _PIE_illegalIsr 0 00000423 _PIE_init 0 000003f7 _PIE_setDebugIntVectorTable 1 00008250 _PIE_tableDebugInit 0 00000601 _PLL_getClkStatus 0 00000604 _PLL_getLockStatus 0 0000047e _PLL_init 0 000004b4 _PLL_setDivider 0 000004c9 _PLL_setMultiplier 0 000003ac _PLL_setup 0 00000566 _RTOSINT_ISR 0 0000056b _SCIRXINTA_ISR 0 00000570 _SCITXINTA_ISR 0 000005dd _SCI_clearRxFifoInt 0 000005e1 _SCI_clearTxFifoInt 0 00000607 _SCI_disableParity 0 0000060a _SCI_enable 0 000005e5 _SCI_enableFifoEnh 0 0000060d _SCI_enableRx 0 00000610 _SCI_enableRxInt 0 00000613 _SCI_enableTx 0 00000616 _SCI_enableTxInt 0 000005e9 _SCI_getRxFifoStatus 0 00000486 _SCI_init 0 00000454 _SCI_putDataBlocking 0 0000042d _SCI_resetChannels 0 00000437 _SCI_resetRxFifo 0 00000441 _SCI_resetTxFifo 0 000004cf _SCI_setBaudRate 0 000005ed _SCI_setCharLength 0 000005f1 _SCI_setNumStopBits 0 000004bb _SCI_setRxFifoIntLevel 0 000004c2 _SCI_setTxFifoIntLevel 0 00000575 _SPIRXINTA_ISR 0 0000057a _SPITXINTA_ISR 0 0000057f _TINT0_ISR 0 00000584 _USER10_ISR 0 00000589 _USER11_ISR 0 0000058e _USER12_ISR 0 00000593 _USER1_ISR 0 00000598 _USER2_ISR 0 0000059d _USER3_ISR 0 000005a2 _USER4_ISR 0 000005a7 _USER5_ISR 0 000005ac _USER6_ISR 0 000005b1 _USER7_ISR 0 000005b6 _USER8_ISR 0 000005bb _USER9_ISR 0 000005c0 _WAKEINT_ISR 0 0000048e _WDOG_disable 0 00000496 _WDOG_init 0 000005c5 _XINT1_ISR 0 000005ca _XINT2_ISR 0 000005cf _XINT3_ISR 1 00000800 __STACK_END abs 00000100 __STACK_SIZE 1 0000836a ___TI_cleanup_ptr 1 0000836c ___TI_dtors_ptr 1 00008368 ___TI_enable_exit_profile_output abs ffffffff ___TI_pprof_out_hndl abs ffffffff ___TI_prof_data_size abs ffffffff ___TI_prof_data_start abs ffffffff ___binit__ abs ffffffff ___c_args__ 0 003f4000 ___cinit__ 0 0000061c ___etext__ abs ffffffff ___pinit__ 0 00000040 ___text__ 0 00000408 __args_main 1 0000836e __lock 0 00000465 __nop 0 00000461 __register_lock 0 0000045d __register_unlock 1 00000700 __stack 0 0000061b __system_post_cinit 0 00000619 __system_pre_init 1 00008370 __unlock 0 0000031b _abort 1 00008353 _blueLED 1 0000835a _byteReceived 0 0000022d _c_int00 0 0000036b _copy_in 1 00008372 _cpu 0 000001c7 _error 0 0000031d _exit 1 00008354 _greenLED 1 00008359 _lastReceived 0 00000048 _main 0 0000038f _memcpy 1 00008380 _message 1 0000835c _myAdc 1 0000835e _myClk 1 00008360 _myFlash 1 00008362 _myGpio 1 00008364 _myPie 1 00008366 _mySci 1 00008355 _rdvLoopCount 1 00008358 _rdvReceivedCount 1 00008356 _rdvWaitCount 1 00008357 _rdvWordCount 1 0000835b _receivedByteFlag 1 00008352 _redLED 0 000005d4 _rsvd_ISR 0 00000202 _scia_fifo_init 0 000001cc _scia_init abs ffffffff binit 0 003f4000 cinit 0 00000000 code_start 0 0000061c etext abs ffffffff pinit GLOBAL SYMBOLS: SORTED BY Symbol Address page address name ---- ------- ---- 0 00000000 code_start 0 00000040 .text 0 00000040 ___text__ 0 00000048 _main 0 000001c7 _error 0 000001cc _scia_init 0 00000202 _scia_fifo_init 0 0000022d _c_int00 0 00000281 _GPIO_setMode 0 000002c9 _GPIO_setDirection 0 000002f2 _GPIO_setPullUp 0 0000031b C$$EXIT 0 0000031b _abort 0 0000031d _exit 0 00000344 _GPIO_setQualification 0 0000036b _copy_in 0 0000038f _memcpy 0 000003ac _PLL_setup 0 000003c1 _GPIO_toggle 0 000003d5 _GPIO_getData 0 000003e6 _PIE_disableAllInts 0 000003f7 _PIE_setDebugIntVectorTable 0 00000408 __args_main 0 00000419 _ADC_init 0 00000423 _PIE_init 0 0000042d _SCI_resetChannels 0 00000437 _SCI_resetRxFifo 0 00000441 _SCI_resetTxFifo 0 0000044b _CLK_enableSciaClock 0 00000454 _SCI_putDataBlocking 0 0000045d __register_unlock 0 00000461 __register_lock 0 00000465 __nop 0 00000466 _CLK_init 0 0000046e _FLASH_init 0 00000476 _GPIO_init 0 0000047e _PLL_init 0 00000486 _SCI_init 0 0000048e _WDOG_disable 0 00000496 _WDOG_init 0 000004a6 _CLK_enableAdcClock 0 000004ad _CLK_setOscSrc 0 000004b4 _PLL_setDivider 0 000004bb _SCI_setRxFifoIntLevel 0 000004c2 _SCI_setTxFifoIntLevel 0 000004c9 _PLL_setMultiplier 0 000004cf _SCI_setBaudRate 0 000004d5 _ADCINT1_ISR 0 000004da _ADCINT2_ISR 0 000004df _ADCINT3_ISR 0 000004e4 _ADCINT4_ISR 0 000004e9 _ADCINT5_ISR 0 000004ee _ADCINT6_ISR 0 000004f3 _ADCINT7_ISR 0 000004f8 _ADCINT8_ISR 0 000004fd _ADCINT9_ISR 0 00000502 _DATALOG_ISR 0 00000507 _ECAP1_INT_ISR 0 0000050c _EMPTY_ISR 0 00000511 _EMUINT_ISR 0 00000516 _EPWM1_INT_ISR 0 0000051b _EPWM1_TZINT_ISR 0 00000520 _EPWM2_INT_ISR 0 00000525 _EPWM2_TZINT_ISR 0 0000052a _EPWM3_INT_ISR 0 0000052f _EPWM3_TZINT_ISR 0 00000534 _EPWM4_INT_ISR 0 00000539 _EPWM4_TZINT_ISR 0 0000053e _I2CINT1A_ISR 0 00000543 _I2CINT2A_ISR 0 00000548 _ILLEGAL_ISR 0 0000054d _INT13_ISR 0 00000552 _INT14_ISR 0 00000557 _NMI_ISR 0 0000055c _PIE_RESERVED 0 00000561 _PIE_illegalIsr 0 00000566 _RTOSINT_ISR 0 0000056b _SCIRXINTA_ISR 0 00000570 _SCITXINTA_ISR 0 00000575 _SPIRXINTA_ISR 0 0000057a _SPITXINTA_ISR 0 0000057f _TINT0_ISR 0 00000584 _USER10_ISR 0 00000589 _USER11_ISR 0 0000058e _USER12_ISR 0 00000593 _USER1_ISR 0 00000598 _USER2_ISR 0 0000059d _USER3_ISR 0 000005a2 _USER4_ISR 0 000005a7 _USER5_ISR 0 000005ac _USER6_ISR 0 000005b1 _USER7_ISR 0 000005b6 _USER8_ISR 0 000005bb _USER9_ISR 0 000005c0 _WAKEINT_ISR 0 000005c5 _XINT1_ISR 0 000005ca _XINT2_ISR 0 000005cf _XINT3_ISR 0 000005d4 _rsvd_ISR 0 000005d9 _CPU_init 0 000005dd _SCI_clearRxFifoInt 0 000005e1 _SCI_clearTxFifoInt 0 000005e5 _SCI_enableFifoEnh 0 000005e9 _SCI_getRxFifoStatus 0 000005ed _SCI_setCharLength 0 000005f1 _SCI_setNumStopBits 0 000005f5 _CPU_clearIntFlags 0 000005f8 _CPU_disableGlobalInts 0 000005fb _PIE_disable 0 000005fe _PIE_enable 0 00000601 _PLL_getClkStatus 0 00000604 _PLL_getLockStatus 0 00000607 _SCI_disableParity 0 0000060a _SCI_enable 0 0000060d _SCI_enableRx 0 00000610 _SCI_enableRxInt 0 00000613 _SCI_enableTx 0 00000616 _SCI_enableTxInt 0 00000619 __system_pre_init 0 0000061b __system_post_cinit 0 0000061c ___etext__ 0 0000061c etext 0 003f4000 ___cinit__ 0 003f4000 cinit 1 00000700 __stack 1 00000800 __STACK_END 1 00008250 _PIE_tableDebugInit 1 00008350 _LoopCount 1 00008351 _ErrorCount 1 00008352 _redLED 1 00008353 _blueLED 1 00008354 _greenLED 1 00008355 _rdvLoopCount 1 00008356 _rdvWaitCount 1 00008357 _rdvWordCount 1 00008358 _rdvReceivedCount 1 00008359 _lastReceived 1 0000835a _byteReceived 1 0000835b _receivedByteFlag 1 0000835c _myAdc 1 0000835e _myClk 1 00008360 _myFlash 1 00008362 _myGpio 1 00008364 _myPie 1 00008366 _mySci 1 00008368 ___TI_enable_exit_profile_output 1 0000836a ___TI_cleanup_ptr 1 0000836c ___TI_dtors_ptr 1 0000836e __lock 1 00008370 __unlock 1 00008372 _cpu 1 00008380 _message abs 00000100 __STACK_SIZE abs ffffffff ___TI_pprof_out_hndl abs ffffffff ___TI_prof_data_size abs ffffffff ___TI_prof_data_start abs ffffffff ___binit__ abs ffffffff ___c_args__ abs ffffffff ___pinit__ abs ffffffff binit abs ffffffff pinit [161 symbols]
The reason I used On-Chip Flash Sector D to define FLASH0 (e.g., FLASH0 : origin = 0x3f4000, length = 0x001000), was specifically to avoid the CSM addresses (0x3f7ff8 + 8). I'm happy to try a version using flash sector B or C, but I'm not sure that will circumvent whatever is causing the problem.
Here's a visual aid I created when migrating from 28027 to 28020:
Yes, VREGENZ is hard tied to digital ground:
Do you think it's worth trying to run Depletion Recovery?
I hope you can find something amiss, because I'm just not seeing it.
Thanks for your help!
robin
Robin,
You can try Depletion Recovery on the locked devices, it won't hurt but I don't think it will resolved the locked state.
Looking at the map file things look good there as well, and even the use of Sector D isn't very big and doesn't run into what would be equivalent addresses of the CSM in Sector A.
Can you give some more details on the connection between GPIO34 and XRSn? I know its a bit of a stretch, but we have to make sure that XRSn isn't pulled during the programmation process. From Reset GPIO34 would be configured as an input, so it shouldn't even be possible for it to drive XRSn until your code runs. Could you try the RAM only version of your code and note when this pulls XRSn?
Based on the MUX function, I would guess you might be using the COMP2 out to trip reset based on a comparator trip, but will let you fill in the details.
The interesting thing about this setup is that if you were actively debugging(TRSTn is high), even if XRSn is pulled low you might not see an effect depending on what your code is doing. But if this activated while programming the flash it could cause some unusual behavior.
Best,
Matthew
Hi Matthew,
I was unable to run Depletion Recovery, because it requires the target to be connected. Since it won't connect, there's no option for Depletion Recovery.
The connection between GPIO34 and XRSn was carried over from the legacy 8051 version of this product. It's not needed in this design and I'll remove R11 to break the link. Anyway, there's no code that controls GPIO34.
Here's what happens at GPIO34:
Power On:
GPIO34 toggles low for 60us, every 13.5ms. I don't know why it's doing this. I'm not sure what's residing in nonvolatile memory at this point.
Connect Target:
GPIO34 goes high and stays high.
Load Program:
GPIO34 stays high up to and including when it breaks at main().
Run Program:
GPIO34 stays high. There's no code to take it low.
NEW INFORMATION:
Upon closer examination, there's quite a bit of noise on the Vddio pin:
I see a couple of alarming details on the schematic:
1. The decoupling cap on Vddio is only 0.1uF on the target board (it's 2.2uF on LaunchXL)
2. The inductor feeding Vddio is the wrong value. I specified Abracon P/N: ACML-0603H-600 (60 Ohms at 100MHz, 0.04 Ohms dc, 2.5A), but what got placed on the PCB was an Abracon P/N: ACML-0603H-221 (220 Ohms at 100MHz, 0.1 Ohm dc, 1.4A)
I don't have the correct inductor, but I added two more of the wrong part in parallel with the existing one, and changed the decoupling cap to 1.2uF.
Now the power supply rail looks like this: (Yellow trace)
The negative going excursions are 50% better. Perhaps with the appropriate inductor they would improve further?
Vddio has a nominal value of 3.3Vdc.
As an experiment, I could also short out the inductor to get a much cleaner looking DC on Vddio.
Is this enough of a smoking gun to make it worth risking my last working prototype?
Thoughts?
Thanks,
robin
Robin,
Good catch on both the decap and the inductor/bead. If I'm reading the new waveform correctly are we 3.3V +/- 0.192V with the new setup? This is within the tolerance allowed on VDDIO (3.3V +/-10%)so we should be OK. With the other waveform, I think it is likely we were tripping the BOR(Brown Out Reset) on the VDDIO rail, especially when the flash is being programmed.
For the GPIO34 when connected to the XRSn, what you are seeing on power up is the watchdog Reset from the device until you gain control with the debugger. Since you don't configure GPIO34 it will be an input always, so likely this wasn't doing anything bad to the XRSn pin, but good to get it out of the equation.
I think you can flash the device, but I would switch to sector B or C, and uncheck A/D in the flash configs for automatic erase just to err on the side of caution.
Best,
Matthew
Thanks Matthew,
Vddio noise is about 540mVp-p riding on 3.3Vdc. At its lowest point, it reaches down to 3.06V, which is still within the 10% tolerance. Although, the documentation says that BOR tolerance is 5% when the on-board Vreg is enabled.
I switched my FLASH0 assignment to sector 'C' (FLASH0 : origin = 0x3f5000, length = 0x001000), and assigned .cinit to it. (.cinit : > FLASH0, PAGE = 0).
Cleaned the project, built it, loaded it, and ran it without issue.
Feeling a greater degree of confidence, I reassigned .text to FLASH0, and it runs as well.
So, in a nutshell, I had a problem reassigning sections to flash memory. At first glimpse, the power supply didn't seem to be a strong suspect. Upon closer examination, noise on the Vddio pin was dipping below the tolerance allowed on the TMS320F28020, most likely causing a brown-out reset. No reset occurred during normal operation, but I suspect the current it takes to perform a flash write would increase the noise to a problematic level. After correcting PCB design flaws where the inductor feeding Vddio and the capacitor decoupling it were wrong values, my program now runs from flash memory.
Shortly after this success, more power supply problems occurred. I replaced the two locked MCUs, but at this point all three target proto boards are bricked. The 3.3V reg is being pulled into overcurrent shutdown by the MCU. I haven't found the culprit yet, but will start a new thread more appropriate to this issue.
Thank you Matthew for all your help. You are a scholar and a gentleman.