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.

TMS320F28377S Launchpad Flash Boot problems

Other Parts Discussed in Thread: TMS320F28069M, TMS320F28377S

Hi folks,

I am a member of a robotics team that is using the Launchpad with the TMS320F28377S DSP and the TMS320F28069M DSP. We have encountered some interesting booting behaviors with the TMS320F28377S. I'd like to describe the symptoms we're seeing and then I'd like to describe the context in which we are using the devices. 

For my descriptions, the boot switch I am speaking of is the 3rd switch on S1 which is tied to TRSTn, per the LAUNCHXL-F28377S Overview User's Guide section 5.3.

Symptoms

Regardless of the boot switch position, we can load to both Flash and RAM on the TMS320F28377S. However, it seems that the behavior after power off is different from the TMS320F28069M. Upon power on, if the boot switch is down on the TMS320F28069M, our last flashed code runs, and runs well, however upon power on of the TMS320F28377S in the same boot switch configuration, it seems that the code 'runs away.' Running from RAM on the TMS320F28377S works the same every time, and we expect that running from flash works no differently, however what we see is that the calculations that are done for our robotic motion are wrong. 

Context

The TMS320F28377S is being used to read 12 analog IR sensors, 1 IMU for heading correction, and several other sensors not being used for localization. The incorrect calculation seems to occur the first time we attempt to use the IMU for heading correction. We attempt to negate a floating point number and it appears to not negate properly, resulting in an error that causes the robot to motion correct in the wrong direction and then so on forever because it is then very confused. This works out of RAM every single time, however the "confused behavior" shows up when we attempt to run from Flash. However, this bad behavior is not consistent either. This morning, for example, the behavior seemed to be inverted in that the device could run from Flash correctly and not from RAM, but later the behavior reverted back to our original "bad behavior" status. I'd like to note that we have a spare TMS320F28377S in which we see the same issues. I'd also like to note that we are using the TMS320F28069M very successfully, utilizing most of its peripherals and ports. 

All that being said, we are at a loss for how to actually use the device consistently and would like some input from those who know more and know better what might be going on here.

Thanks,

Jacob

  • Jacob,
    for the F28377S launchpad the boot switch positions should be S1.1 = HIGH (ON), S1.2 = HIGH(ON) and S1.3 LOW (OFF). the Third switch is TRSTn and it should be LOW for device to boot stand-alone and it should be ON for emulator to connect.

    Now you can leave it ON and have debugger disconnected and on POWER OFF/ON of board since no-one is driving the TRSTn (from CCS or FTDI on board), device should still boot in stand-alone and boot to flash. But leaving S1.3 LOW/OFF and leaving other two ON/HIGH should definitely get you to boot to flash.

    Hope this helps.

    Best Regards
    Santosh Athuru
  • Jacob,

    What is the Flash wait-state configuration that you are using for F28377S? Assuming that the PLL is configured for 200MHz, you should use 3-wait states.

    How are the other two switches in S1 (GPIO84, GPIO72) configured? Hope they are pulled up for Get Mode (default Flash boot).

    I asked our floating point expert to take a look at your concern.

    Thanks and regards,
    Vamsi
  • With regards to the negation, could you post the snippet of C code and the disassembly that corresponds to it. Also if you could post a sample input/output value for the erroneous case. It would be better if you could capture this on the expressions window with the numbers displayed in hex.
  • Hi Vishal,

    I have attached the C and disassembly for the the snippet that we posit is the source of the negation error. Please note that we cannot get input/output cases on the debugger because it functions correctly on the debugger.

    Code

    void tunnel_to_zone_b()
    {
    
        //////////////////////////////////////////////////////////
        ///// This is the loop the fails when booting from flash
        //////////////////////////////////////////////////////////
        while( ((get_distance(&ir_sensors[3]) + get_distance(&ir_sensors[5])) / 2.0) > config.zone_b_left)
        {
            // Latch heading
            float heading = get_heading();
            float speed = config.barge_strafe_fast;
    
            ///////////////////////////////////////////////////////
            ///// This is the suspect multiply.
            ///// angle_correction_constant is a negative float value
            ///////////////////////////////////////////////////////
            // Maintain 0.0 heading
            float angle_correction = heading * config.angle_correction_constant;
            angle_correction = constrain(angle_correction, -0.5, 0.5);
    
            // Maintain distance from wall
            float strafe_correction = (get_distance(&ir_sensors[6]) - config.tunnel_stop) * config.strafe_correction_constant;
            strafe_correction = constrain(strafe_correction, -speed, speed);
    
            float strafe_direction = deg2rad(90) - atan2(strafe_correction, speed);
            drive_chassis(
                    strafe_direction,
                    speed,
                    angle_correction
            );
            DELAY_US(config.control_rate);
        }
    
        // Verify position at Zone B Left
        uint32_t move_start = micros();
        while(micros() - move_start < 2000000)
        {
            // Chase distance from wall
            float chase_distance_constant = 0.05;
            float wall_distance = (get_distance(&ir_sensors[3]) + get_distance(&ir_sensors[5])) / 2.0;
            float wall_target = config.zone_b_left;
    
            float wall_error = (wall_distance - wall_target);
    
            float wall_direction = 90.0;
            if (wall_error < 0.0)
            {
                wall_direction = -90.0;
            }
            float speed = fabs(wall_error) * chase_distance_constant;
    
            // Maintain angle
            float angle_correction = (get_heading() - (0.0)) * config.angle_correction_constant;
            float strafe_direction = deg2rad(wall_direction);
    
            drive_chassis(
                    strafe_direction,
                    speed,
                    angle_correction
            );
            DELAY_US(config.control_rate);
        }
    
        drive_chassis(0, 0, 0);
    }
    

    Disassembly

     

    tunnel_to_zone_b():
    00b000:   B2BD        MOVL         *SP++, XAR1
    00b001:   AABD        MOVL         *SP++, XAR2
    00b002:   A2BD        MOVL         *SP++, XAR3
    00b003:   E20304BD    MOV32        *SP++, R4H
    00b005:   E20305BD    MOV32        *SP++, R5H
    00b007:   E20306BD    MOV32        *SP++, R6H
    00b009:   E20307BD    MOV32        *SP++, R7H
    00b00b:   FE16        ADDB         SP, #22
    00b00c:   8F00F0C0    MOVL         XAR4, #0x00f0c0
    00b00e:   A8A9        MOVL         @ACC, XAR4
    00b00f:   82A4        MOVL         XAR3, @XAR4
    00b010:   096C        ADDB         ACC, #108
    00b011:   DC5A        ADDB         XAR4, #90
    00b012:   BDA90F26    MOV32        R5H, @ACC
    00b014:   DB36        ADDB         XAR3, #54
    00b015:   86A4        MOVL         XAR2, @XAR4
     84         while( ((get_distance(&ir_sensors[3]) + get_distance(&ir_sensors[5])) / 2.0) > config.zone_b_left)
    00b016:   56CF0081    BF           C$L2, UNC
     87             float heading = get_heading();
            C$L1:
    00b018:   7640C962    LCR          get_heading
    00b01a:   761F03C2    MOVW         DP, #0x3c2
     92             angle_correction = constrain(angle_correction, -0.5, 0.5);
    00b01c:   E801F802    MOVIZ        R2, #0x3f00
    00b01e:   E2AF0114    MOV32        R1H, @0x14, UNCF
     88             float speed = config.barge_strafe_fast;
    00b020:   E3020420    MPYF32       R0H, R0H, R1H
                       || MOV32        R4H, @0x20
     92             angle_correction = constrain(angle_correction, -0.5, 0.5);
    00b022:   E805F801    MOVIZ        R1, #0xbf00
    00b024:   7640D75D    LCR          constrain
    00b026:   BFA10F12    MOV32        @XAR1, R0H
     95             float strafe_correction = (get_distance(&ir_sensors[6]) - config.tunnel_stop) * config.strafe_correction_constant;
    00b028:   BFA40F26    MOV32        @XAR4, R5H
    00b02a:   7640BD05    LCR          get_distance
    00b02c:   761F03C2    MOVW         DP, #0x3c2
    00b02e:   E2AF011A    MOV32        R1H, @0x1a, UNCF
    00b030:   E3220212    SUBF32       R0H, R0H, R1H
                       || MOV32        R2H, @0x12
     96             strafe_correction = constrain(strafe_correction, -speed, speed);
    00b032:   E6CF0021    MOV32        R1H, R4H, UNCF
     95             float strafe_correction = (get_distance(&ir_sensors[6]) - config.tunnel_stop) * config.strafe_correction_constant;
    00b034:   E7000010    MPYF32       R0H, R2H, R0H
     96             strafe_correction = constrain(strafe_correction, -speed, speed);
    00b036:   E6AF0009    NEGF32       R1H, R1H, UNCF
    00b038:   E6CF0022    MOV32        R2H, R4H, UNCF
    00b03a:   7640D75D    LCR          constrain
    00b03c:   E6CF0006    MOV32        R6H, R0H, UNCF
     98             float strafe_direction = deg2rad(90) - atan2(strafe_correction, speed);
    00b03e:   E80215A0    MOVIZ        R0, #0x42b4
    00b040:   7640D750    LCR          deg2rad
    00b042:   E6CF0001    MOV32        R1H, R0H, UNCF
     96             strafe_correction = constrain(strafe_correction, -speed, speed);
    00b044:   E6CF0030    MOV32        R0H, R6H, UNCF
     98             float strafe_direction = deg2rad(90) - atan2(strafe_correction, speed);
    00b046:   E27C0802    QUADF32      R2H, R0H, R0H, R4H
    00b048:   7700        NOP          
    00b049:   7700        NOP          
    00b04a:   7700        NOP          
    00b04b:   7700        NOP          
    00b04c:   E27A0000    ATANPUF32    R0H, R0H
    00b04e:   7700        NOP          
    00b04f:   7700        NOP          
    00b050:   7700        NOP          
    00b051:   E7100080    ADDF32       R0H, R0H, R2H
    00b053:   7700        NOP          
    00b054:   7700        NOP          
    00b055:   E2700000    MPY2PIF32    R0H, R0H
    00b057:   7700        NOP          
     92             angle_correction = constrain(angle_correction, -0.5, 0.5);
    00b058:   BDA10F1A    MOV32        R2H, @XAR1
     98             float strafe_direction = deg2rad(90) - atan2(strafe_correction, speed);
    00b05a:   E7200008    SUBF32       R0H, R1H, R0H
     99             drive_chassis(
    00b05c:   E6CF0021    MOV32        R1H, R4H, UNCF
    00b05e:   7640D069    LCR          drive_chassis
    104             DELAY_US(config.control_rate);
    00b060:   5CAD        MOVZ         AR4, @SP
    00b061:   761F03C2    MOVW         DP, #0x3c2
    00b063:   0610        MOVL         ACC, @0x10
    00b064:   DC96        SUBB         XAR4, #22
    00b065:   88A4        MOVZ         AR6, @AR4
    00b066:   76408273    LCR          UL$$TOFD
    00b068:   5CAD        MOVZ         AR4, @SP
    00b069:   88AD        MOVZ         AR6, @SP
    00b06a:   8F4101F2    MOVL         XAR5, #0x0101f2
    00b06c:   DC96        SUBB         XAR4, #22
    00b06d:   DE92        SUBB         XAR6, #18
    00b06e:   5CA4        MOVZ         AR4, @AR4
    00b06f:   88A6        MOVZ         AR6, @AR6
    00b070:   7640D4B1    LCR          FD$$MPY
    00b072:   5CAD        MOVZ         AR4, @SP
    00b073:   88AD        MOVZ         AR6, @SP
    00b074:   8F4101F6    MOVL         XAR5, #0x0101f6
    00b076:   DC92        SUBB         XAR4, #18
    00b077:   DE8E        SUBB         XAR6, #14
    00b078:   5CA4        MOVZ         AR4, @AR4
    00b079:   88A6        MOVZ         AR6, @AR6
    00b07a:   7640D4B1    LCR          FD$$MPY
    00b07c:   5CAD        MOVZ         AR4, @SP
    00b07d:   88AD        MOVZ         AR6, @SP
    00b07e:   8F4101FA    MOVL         XAR5, #0x0101fa
    00b080:   DC8E        SUBB         XAR4, #14
    00b081:   DE8A        SUBB         XAR6, #10
    00b082:   5CA4        MOVZ         AR4, @AR4
    00b083:   88A6        MOVZ         AR6, @AR6
    00b084:   76408289    LCR          FD$$SUB
    00b086:   5CAD        MOVZ         AR4, @SP
    00b087:   88AD        MOVZ         AR6, @SP
    00b088:   8F4101F6    MOVL         XAR5, #0x0101f6
    00b08a:   DC8A        SUBB         XAR4, #10
    00b08b:   DE86        SUBB         XAR6, #6
    00b08c:   5CA4        MOVZ         AR4, @AR4
    00b08d:   88A6        MOVZ         AR6, @AR6
    00b08e:   7640D4B1    LCR          FD$$MPY
    00b090:   5CAD        MOVZ         AR4, @SP
    00b091:   DC86        SUBB         XAR4, #6
    00b092:   5CA4        MOVZ         AR4, @AR4
    00b093:   7640D7DB    LCR          FD$$TOL
    00b095:   764001AA    LCR          $/media/clawson/My Passport/ti/controlSUITE/device_support/F2837xS/v170/F2837xS_common/source/F2837xS_usDelay.asm:45:58$
     84         while( ((get_distance(&ir_sensors[3]) + get_distance(&ir_sensors[5])) / 2.0) > config.zone_b_left)
            C$L2:
    00b097:   8AA3        MOVL         XAR4, @XAR3
    00b098:   7640BD05    LCR          get_distance
    00b09a:   E6CF0004    MOV32        R4H, R0H, UNCF
    00b09c:   8AA2        MOVL         XAR4, @XAR2
    00b09d:   7640BD05    LCR          get_distance
    00b09f:   E7100100    ADDF32       R0H, R0H, R4H
    00b0a1:   761F03C2    MOVW         DP, #0x3c2
    00b0a3:   E84FC000    MPYF32       R0H, #0x3f00, R0H
    00b0a5:   E2AF0124    MOV32        R1H, @0x24, UNCF
    00b0a7:   E6940008    CMPF32       R0H, R1H
    00b0a9:   AD14        MOVST0       NF,ZF
    00b0aa:   56C2FF6E    BF           -146, GT
    108         uint32_t move_start = micros();
    00b0ac:   7640D6FC    LCR          micros
    00b0ae:   8BA9        MOVL         XAR1, @ACC
    109         while(micros() - move_start < 2000000)
    00b0af:   7640D6FC    LCR          micros
    00b0b1:   8F1E8480    MOVL         XAR4, #0x1e8480
    00b0b3:   FF5A        MOVL         P, ACC
    00b0b4:   A8A9        MOVL         @ACC, XAR4
    00b0b5:   565D00A1    SUBUL        P, @XAR1
    00b0b7:   0FAB        CMPL         ACC, @P
    00b0b8:   56C9007B    BF           C$L6, LOS
    113             float wall_distance = (get_distance(&ir_sensors[3]) + get_distance(&ir_sensors[5])) / 2.0;
            C$L3:
    00b0ba:   8AA3        MOVL         XAR4, @XAR3
    00b0bb:   7640BD05    LCR          get_distance
    00b0bd:   E6CF0004    MOV32        R4H, R0H, UNCF
    00b0bf:   8AA2        MOVL         XAR4, @XAR2
    00b0c0:   7640BD05    LCR          get_distance
    00b0c2:   E7100100    ADDF32       R0H, R0H, R4H
    00b0c4:   761F03C2    MOVW         DP, #0x3c2
    00b0c6:   E84FC000    MPYF32       R0H, #0x3f00, R0H
    116             float wall_error = (wall_distance - wall_target);
    00b0c8:   E2AF0124    MOV32        R1H, @0x24, UNCF
    00b0ca:   E7200044    SUBF32       R4H, R0H, R1H
    00b0cc:   7700        NOP          
    121                 wall_direction = -90.0;
    00b0cd:   E5A4        CMPF32       R4H, #0.0
    00b0ce:   AD14        MOVST0       NF,ZF
    00b0cf:   56C30006    BF           C$L4, GEQ
    00b0d1:   E80615A5    MOVIZ        R5, #0xc2b4
    00b0d3:   56CF0004    BF           C$L5, UNC
            C$L4:
    00b0d5:   E80215A5    MOVIZ        R5, #0x42b4
    126             float angle_correction = (get_heading() - (0.0)) * config.angle_correction_constant;
            C$L5:
    00b0d7:   7640C962    LCR          get_heading
    00b0d9:   761F03C2    MOVW         DP, #0x3c2
    00b0db:   E6CF0007    MOV32        R7H, R0H, UNCF
    00b0dd:   E2AF0614    MOV32        R6H, @0x14, UNCF
    127             float strafe_direction = deg2rad(wall_direction);
    00b0df:   E6CF0028    MOV32        R0H, R5H, UNCF
    00b0e1:   7640D750    LCR          deg2rad
    129             drive_chassis(
    00b0e3:   E6950024    ABSF32       R4H, R4H
    00b0e5:   E801EA61    MOVIZ        R1, #0x3d4c
    126             float angle_correction = (get_heading() - (0.0)) * config.angle_correction_constant;
    00b0e7:   E8A0003A    ADDF32       R2H, #0x8000, R7H
    129             drive_chassis(
    00b0e9:   E80E6669    MOVXI        R1H, #0xcccd
    00b0eb:   E7000109    MPYF32       R1H, R1H, R4H
    126             float angle_correction = (get_heading() - (0.0)) * config.angle_correction_constant;
    00b0ed:   E70000B2    MPYF32       R2H, R6H, R2H
    129             drive_chassis(
    00b0ef:   7640D069    LCR          drive_chassis
    134             DELAY_US(config.control_rate);
    00b0f1:   5CAD        MOVZ         AR4, @SP
    00b0f2:   761F03C2    MOVW         DP, #0x3c2
    00b0f4:   0610        MOVL         ACC, @0x10
    00b0f5:   DC96        SUBB         XAR4, #22
    00b0f6:   88A4        MOVZ         AR6, @AR4
    00b0f7:   76408273    LCR          UL$$TOFD
    00b0f9:   5CAD        MOVZ         AR4, @SP
    00b0fa:   88AD        MOVZ         AR6, @SP
    00b0fb:   8F4101F2    MOVL         XAR5, #0x0101f2
    00b0fd:   DC96        SUBB         XAR4, #22
    00b0fe:   DE92        SUBB         XAR6, #18
    00b0ff:   5CA4        MOVZ         AR4, @AR4
    00b100:   88A6        MOVZ         AR6, @AR6
    00b101:   7640D4B1    LCR          FD$$MPY
    00b103:   5CAD        MOVZ         AR4, @SP
    00b104:   88AD        MOVZ         AR6, @SP
    00b105:   8F4101F6    MOVL         XAR5, #0x0101f6
    00b107:   DC92        SUBB         XAR4, #18
    00b108:   DE8E        SUBB         XAR6, #14
    00b109:   5CA4        MOVZ         AR4, @AR4
    00b10a:   88A6        MOVZ         AR6, @AR6
    00b10b:   7640D4B1    LCR          FD$$MPY
    00b10d:   5CAD        MOVZ         AR4, @SP
    00b10e:   88AD        MOVZ         AR6, @SP
    00b10f:   8F4101FA    MOVL         XAR5, #0x0101fa
    00b111:   DC8E        SUBB         XAR4, #14
    00b112:   DE8A        SUBB         XAR6, #10
    00b113:   5CA4        MOVZ         AR4, @AR4
    00b114:   88A6        MOVZ         AR6, @AR6
    00b115:   76408289    LCR          FD$$SUB
    00b117:   5CAD        MOVZ         AR4, @SP
    00b118:   88AD        MOVZ         AR6, @SP
    00b119:   8F4101F6    MOVL         XAR5, #0x0101f6
    00b11b:   DC8A        SUBB         XAR4, #10
    00b11c:   DE86        SUBB         XAR6, #6
    00b11d:   5CA4        MOVZ         AR4, @AR4
    00b11e:   88A6        MOVZ         AR6, @AR6
    00b11f:   7640D4B1    LCR          FD$$MPY
    00b121:   5CAD        MOVZ         AR4, @SP
    00b122:   DC86        SUBB         XAR4, #6
    00b123:   5CA4        MOVZ         AR4, @AR4
    00b124:   7640D7DB    LCR          FD$$TOL
    00b126:   764001AA    LCR          $/media/clawson/My Passport/ti/controlSUITE/device_support/F2837xS/v170/F2837xS_common/source/F2837xS_usDelay.asm:45:58$
    00b128:   7640D6FC    LCR          micros
    00b12a:   FF5A        MOVL         P, ACC
    00b12b:   8F1E8480    MOVL         XAR4, #0x1e8480
    00b12d:   A8A9        MOVL         @ACC, XAR4
    00b12e:   565D00A1    SUBUL        P, @XAR1
    00b130:   0FAB        CMPL         ACC, @P
    00b131:   56C6FF89    BF           -119, HI
    137         drive_chassis(0, 0, 0);
            C$L6:
    00b133:   E590        ZERO         R0
    00b134:   E591        ZERO         R1
    00b135:   E592        ZERO         R2
    00b136:   7640D069    LCR          drive_chassis
    00b138:   FE96        SUBB         SP, #22
    00b139:   E2AF07BE    MOV32        R7H, *--SP, UNCF
    00b13b:   E2AF06BE    MOV32        R6H, *--SP, UNCF
    00b13d:   E2AF05BE    MOV32        R5H, *--SP, UNCF
    00b13f:   E2AF04BE    MOV32        R4H, *--SP, UNCF
    00b141:   82BE        MOVL         XAR3, *--SP
    00b142:   86BE        MOVL         XAR2, *--SP
    00b143:   8BBE        MOVL         XAR1, *--SP
    00b144:   0006        LRETR        

     

  • Hi Vamsi,

    For our flash setup we are using:

    Flash0CtrlRegs.FRDCNTL.bit.RWAIT = 0x3;

    Also our other two pins are indeed pulled up. 

  • Jacob,

    Your Flash wait-states and Boot mode GPIOs look fine.

    Do you use internal oscillator as the clock source for configuring the PLL?

    Thanks and regards,

    Vamsi

  • We're using the external oscillator on the Launchpad.
  • Jacob,

    Ok. Flash configuration looks correct. Let us wait for Vishal to review your code.

    Thanks and regards,
    Vamsi
  • Hi Jacob,

    From what I'm reading, you seem to suggest that running from RAM works, but running from FLASH standalone does not...

    ...there is a middle step though:
    What happens if you load your code into FLASH and then run this program with the debugger still connected?  Does the code consistently work correctly in this situation?

    If running from FLASH with the debugger works consistently, I'd might recommend looking at the following TI wiki article entry:
    http://processors.wiki.ti.com/index.php/C2000_Flash_Common_Issues/FAQs#Code_Does_Not_Run_Standalone


    Thank you,
    Brett

  • Jacob,

    there doesnt seem to be anything wrong with the FPU code - this is the bit that does negation

     96             strafe_correction = constrain(strafe_correction, -speed, speed);
    00b036:   E6AF0009    NEGF32       R1H, R1H, UNCF
    You can simulate standalone mode with the emulator connected. the link that brett shared walks you through the process. If you can determine the specific line at which the failure occurs, and the values of the variables involved, it will help greatly.
  • Jacob,

    Did you try with debugger connected?

    Thanks and regards,
    Vamsi
  • Jacob,

    I am closing this thread. You can reopen if the issue is not resolved.

    Thanks and regards,
    Vamsi
  • Hi Santosh,

    I am observing same phenomena. I have LAUNCHXL-F28377S, TMDXCNCD28377D and TMDSCNCD28069MISO. While the documentation for all three boards clearly states that if you want to run the code standalone from FLASH, you have to properly set certain switches. On all the boards, there is one switch that controls TRSTn signal routing.

    What I am observing is that TMDSCNCD28069MISO will not run if SW3.1 is not set properly. This is totally understandable.
    With TRSTn connected to XDS100 there are two scenarios. If you don't power up XDS100 circuitry ISO7220 goes in failsafe mode and pulls TRSTn high. With TRSTn high, MCU ends in WaitBootMode. If you do power up XDS100 circuitry, TRSTn is still high as XDS100 is actively pulling it high. Regardless id CCS is connected or not. I would expect the XDS100 releases TRSTn when CCS is disconnected.
    With TRSTn disconnected from XDS100, TRSTn stays pulled down as it should.

    While LAUNCHXL-F28377S will run code from flash regardless of the S1.3 position. With XDS100 is powered up or not.
    If you don't power up XDS100 circuitry ISO7220 goes in failsafe mode and pulls TRSTn high. But the MCU still runs the code from flash in standalone. According to TRM I would expect it would get stuck in WaitBootMode
    With XDS100 powered up it makes sense as XDS100 is pulling 100 low. Though this is is different behavior as the XDS100 on the TMDSCNCD28069MISO. I observe the same behavior on TMDXCNCD28377D (switch A:SW1.1).

    So my questions are:
    1. What is different in 28377(D/S) boot rom, compared to 28069M, that it can standalone boot to FLASH even with TRSTn high.
    2. What is the difference between XDS100 on TMDSCNCD28069MISO, that when powered up pulls TRSTn line high even with CCS not connected and XDS100 on TMDXCNCD28377D and/or LAUNCHXL-F28377S? How do the standalone XDS100 emulators behave?

    Best regards