<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="https://e2e.ti.com/cfs-file/__key/system/syndication/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Arm-based microcontrollers forum - Recent Threads</title><link>https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum</link><description /><dc:language>en-US</dc:language><generator>Telligent Community 13</generator><lastBuildDate>Thu, 05 Nov 2026 16:17:53 GMT</lastBuildDate><atom:link rel="self" type="application/rss+xml" href="https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum" /><item><title>AM2732: AM273x: MSS_MIBSPIA does not receive SPI data in Peripheral mode</title><link>https://e2e.ti.com/thread/1693856?ContentTypeID=0</link><pubDate>Thu, 29 Oct 2026 14:53:39 GMT</pubDate><guid isPermaLink="false">cb01d8b2-d089-468d-babb-77d1d8683490:ce293dbb-4624-4d56-b768-c6ba9f6d26de</guid><dc:creator>Marios Tsavos</dc:creator><slash:comments>1</slash:comments><comments>https://e2e.ti.com/thread/1693856?ContentTypeID=0</comments><wfw:commentRss>https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1693856/am2732-am273x-mss_mibspia-does-not-receive-spi-data-in-peripheral-mode/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;&lt;b&gt;Part Number:&lt;/b&gt; AM2732&lt;/p&gt;&lt;p&gt;Hello TI Support Team,&lt;/p&gt;
&lt;p&gt;I am working with the &lt;strong&gt;TI AM273x SoC&lt;/strong&gt; using Code Composer Studio 20.4 and MCU+ SDK 11.02.00.25. I am experiencing an issue with &lt;code dir="ltr"&gt;MSS_MIBSPIA&lt;/code&gt;, which I am trying to use as an SPI Peripheral (Receiver) to receive data from an FPGA.&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;I am unable to get &lt;code dir="ltr"&gt;MSS_MIBSPIA&lt;/code&gt; to receive SPI data from an FPGA. The FPGA transmits the expected data, and I can observe the SPI clock and data activity using a logic analyzer/oscilloscope. However, the&amp;nbsp;&lt;code dir="ltr"&gt;MSS_MIBSPIA&lt;/code&gt; receive callback is never invoked.&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;To investigate the issue, I have tested the following SPI combinations, both of which operate correctly:&lt;/p&gt;
&lt;ul data-spread="false"&gt;
&lt;li&gt;
&lt;p&gt;&lt;code dir="ltr"&gt;MSS_MIBSPIB&lt;/code&gt; (TX) &amp;rarr; FPGA &amp;rarr; &amp;nbsp;&lt;code dir="ltr"&gt;RCSS_MIBSPIA&lt;/code&gt; (RX)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code dir="ltr"&gt;RCSS_MIBSPIB&lt;/code&gt; (TX) &amp;rarr; FPGA &amp;rarr; &lt;code dir="ltr"&gt;RCSS_MIBSPIA&lt;/code&gt; (RX)&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In both cases, &lt;code dir="ltr"&gt;RCSS_MIBSPIA&lt;/code&gt; successfully receives the transmitted data. The main configuration change between these tests and my current setup concerns the EDMA instances used, and the pins assigned.&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;This leads me to suspect that the problem may be related to the configuration, pin multiplexing, interrupt handling, or Peripheral-mode operation of &lt;code dir="ltr"&gt;MSS_MIBSPIA&lt;/code&gt;, rather than a general SPI communication issue.&lt;br /&gt;&lt;br /&gt;Here is my SysConfig configuration regarding the MSS_MIBSPIA interface:&lt;br /&gt;&lt;br /&gt;&lt;img src="https://e2e.ti.com/cfs-file/__key/communityserver-discussions-components-files/908/2744.image.png" alt="image.png" data-temp-id="image.png-60202" /&gt;&lt;br /&gt;&lt;img src="https://e2e.ti.com/cfs-file/__key/communityserver-discussions-components-files/908/67815.image.png" alt="image.png" data-temp-id="image.png-37228" /&gt;&lt;br /&gt;&lt;img src="https://e2e.ti.com/cfs-file/__key/communityserver-discussions-components-files/908/7534.image.png" alt="image.png" data-temp-id="image.png-53565" /&gt;&lt;br /&gt;&lt;br /&gt;The debugging performed so far is as follows:&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;ul data-spread="false"&gt;
&lt;li&gt;
&lt;p&gt;The FPGA generates the expected SPI communication sequence.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;I can observe clock activity on G19 (&lt;code dir="ltr"&gt;MSS_MIBSPIA_CLK&lt;/code&gt;).&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;I can observe data activity on G17 (&lt;code dir="ltr"&gt;MSS_MIBSPIA_MISO&lt;/code&gt;).&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Despite this activity, the &lt;code dir="ltr"&gt;spi_rx_callback&lt;/code&gt; function is never called.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;The other tested SPI combinations successfully receive data using &lt;code dir="ltr"&gt;RCSS_MIBSPIA&lt;/code&gt; as the receiver.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I understand that, in Peripheral mode, the application must submit an RX transaction before the external Controller begins transmitting. I would appreciate confirmation of whether there are additional requirements specific to &lt;code dir="ltr"&gt;MSS_MIBSPIA&lt;/code&gt;, including its EDMA request mapping, interrupt configuration, pin multiplexing, or Peripheral-mode setup.&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;Could you please help clarify the following?&lt;/p&gt;
&lt;ol start="1" data-spread="false"&gt;
&lt;li&gt;
&lt;p&gt;Are there any AM273x-specific restrictions or known issues that could prevent &lt;code dir="ltr"&gt;MSS_MIBSPIA&lt;/code&gt; from operating as an SPI Peripheral/Receiver?&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Are there any additional SysConfig settings or initialization steps required for &lt;code dir="ltr"&gt;MSS_MIBSPIA&lt;/code&gt; RX operation that differ from those for &lt;code dir="ltr"&gt;RCSS_MIBSPIA&lt;/code&gt;?&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Is there a recommended MCU+ SDK example demonstrating &lt;code dir="ltr"&gt;MSS_MIBSPIA&lt;/code&gt; receiving data from an external SPI Controller in Peripheral mode, preferably with EDMA enabled?&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Are there any known EDMA request-line, interrupt-routing, or resource-allocation requirements specific to &lt;code dir="ltr"&gt;MSS_MIBSPIA&lt;/code&gt; that I should verify?&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Any guidance or recommended debugging procedure would be greatly appreciated.&lt;/p&gt;
&lt;p&gt;Thank you for your support.&lt;/p&gt;</description></item><item><title>RE: AM2732: AM273x: MSS_MIBSPIA does not receive SPI data in Peripheral mode</title><link>https://e2e.ti.com/thread/6531665?ContentTypeID=1</link><pubDate>Thu, 05 Nov 2026 16:17:53 GMT</pubDate><guid isPermaLink="false">cb01d8b2-d089-468d-babb-77d1d8683490:b4ceafab-37a0-4206-9156-b80327015a77</guid><dc:creator>Ming Wei</dc:creator><slash:comments>0</slash:comments><comments>https://e2e.ti.com/thread/6531665?ContentTypeID=1</comments><wfw:commentRss>https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1693856/am2732-am273x-mss_mibspia-does-not-receive-spi-data-in-peripheral-mode/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;Hi Marios,&lt;/p&gt;
&lt;p&gt;I noticed your syscfg is using 4-pin mode. Have you checked the signal on CS pin?&lt;/p&gt;
&lt;p&gt;The other thing you may want to try is to check the &amp;quot;Enable Compatibility Mode&amp;quot; in syscfg.&lt;/p&gt;
&lt;p&gt;Best regards,&lt;/p&gt;
&lt;p&gt;Ming&amp;nbsp;&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: AM2754-Q1: AM27542AEZIANJRQ1: power consumption, McASP clocking, OSPI XIP + HyperRAM, and C7x audio software</title><link>https://e2e.ti.com/thread/6531573?ContentTypeID=1</link><pubDate>Thu, 05 Nov 2026 14:40:46 GMT</pubDate><guid isPermaLink="false">cb01d8b2-d089-468d-babb-77d1d8683490:c1fc069e-e8c9-44a9-8ec2-f85910ec6d13</guid><dc:creator>Shreyansh Anand</dc:creator><slash:comments>0</slash:comments><comments>https://e2e.ti.com/thread/6531573?ContentTypeID=1</comments><wfw:commentRss>https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1695068/am2754-q1-am27542aezianjrq1-power-consumption-mcasp-clocking-ospi-xip-hyperram-and-c7x-audio-software/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;Hi Jeankarlos,&lt;/p&gt;
[quote userid="724508" url="~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1695068/am2754-q1-am27542aezianjrq1-power-consumption-mcasp-clocking-ospi-xip-hyperram-and-c7x-audio-software"]5. Software: which C7x audio libraries are available (acoustic echo cancellation, noise suppression, beamforming, crossover/EQ)?[/quote]
&lt;p&gt;These are currently not supported in the audio library, however,&lt;/p&gt;
&lt;p&gt;Our SDK offers multiple libraries for DSP:&lt;/p&gt;
&lt;p&gt;&lt;img style="max-height:240px;max-width:320px;" src="https://e2e.ti.com/resized-image/__size/640x480/__key/communityserver-discussions-components-files/908/pastedimage1793889385389v1.png" alt=" " /&gt;&lt;/p&gt;
&lt;p&gt;In the AUDIOLIB, these are the currently supported kernels:&lt;br /&gt;&lt;img style="max-height:240px;max-width:320px;" src="https://e2e.ti.com/resized-image/__size/640x480/__key/communityserver-discussions-components-files/908/pastedimage1793889578352v2.png" alt=" " /&gt;&lt;br /&gt;&lt;br /&gt;Thanks,&lt;br /&gt;Shreyansh&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>AM2754-Q1: AM27542AEZIANJRQ1: power consumption, McASP clocking, OSPI XIP + HyperRAM, and C7x audio software</title><link>https://e2e.ti.com/thread/1695068?ContentTypeID=0</link><pubDate>Tue, 03 Nov 2026 22:45:27 GMT</pubDate><guid isPermaLink="false">cb01d8b2-d089-468d-babb-77d1d8683490:81b51392-cac0-4244-a67b-f62586327c1e</guid><dc:creator>Jeankarlos Lopera</dc:creator><slash:comments>4</slash:comments><comments>https://e2e.ti.com/thread/1695068?ContentTypeID=0</comments><wfw:commentRss>https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1695068/am2754-q1-am27542aezianjrq1-power-consumption-mcasp-clocking-ospi-xip-hyperram-and-c7x-audio-software/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;&lt;b&gt;Part Number:&lt;/b&gt; AM2754-Q1&lt;/p&gt;
&lt;p&gt;Hello,&lt;/p&gt;
&lt;p&gt;We are evaluating the AM27542AEZIANJRQ1 (grade E: 4x R5F at 800 MHz, 2x C7x at 750 MHz, 5.5 MB L3) for a new multichannel audio design and would appreciate help with these questions before we start the schematic:&lt;/p&gt;
&lt;p&gt;1. Power consumption: the datasheet (SPRSPB0B) says to contact TI. Could you share typical and maximum current per supply rail for grade E, with both C7x cores and all four R5F cores active? We need it to size the PMIC and plan the thermal design.&lt;/p&gt;
&lt;p&gt;2. Power supply: is the TPS6522435-Q1 used on the AUDIO-AM275-EVM the recommended PMIC for grade E?&lt;/p&gt;
&lt;p&gt;3. Audio I/O: we need about 10 serial audio data lines in total (inputs and outputs, I2S/TDM). Can several McASPs run at the same time in different clock roles (some as clock master, others as slave to an external master) at 48 kHz and 96 kHz?&lt;/p&gt;
&lt;p&gt;4. Memory: is booting from OSPI NOR with XIP, plus 16-64 MB of HyperRAM on the second OSPI interface, supported in the MCU+ SDK? Is there a reference design or example?&lt;/p&gt;
&lt;p&gt;5. Software: which C7x audio libraries are available (acoustic echo cancellation, noise suppression, beamforming, crossover/EQ)?&lt;/p&gt;
&lt;p&gt;6. Does the SDK include a USB device stack (CDC and DFU)?&lt;/p&gt;
&lt;p&gt;7. Where is the secure-boot flow documented?&lt;/p&gt;
&lt;p&gt;8. Sourcing: our boards are assembled in China. Is there a TI authorized distributor in China that stocks or can supply the AM275x family, and could you share a contact?&lt;/p&gt;
&lt;p&gt;9. We also have commercial questions (pricing, samples for prototypes, distributor availability, lifecycle) and some project details we would prefer not to share on a public forum. Could a TI sales representative or FAE for Colombia / Latin America contact us directly at jeankarlos@polaro.com?&lt;/p&gt;
&lt;p&gt;Thank you.&lt;/p&gt;
&lt;p&gt;Jean Karlos&lt;br /&gt;Polaro&lt;/p&gt;</description></item><item><title>MSPM0G3107: MSPM0G3107: Documentation for IEC 60730 Class B / EN 60335-1 Annex R Certification</title><link>https://e2e.ti.com/thread/1695694?ContentTypeID=0</link><pubDate>Thu, 05 Nov 2026 14:01:10 GMT</pubDate><guid isPermaLink="false">cb01d8b2-d089-468d-babb-77d1d8683490:2a651e17-d0a3-42aa-87ee-7bfd2d0dd18e</guid><dc:creator>Jesper Persson</dc:creator><slash:comments>0</slash:comments><comments>https://e2e.ti.com/thread/1695694?ContentTypeID=0</comments><wfw:commentRss>https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1695694/mspm0g3107-mspm0g3107-documentation-for-iec-60730-class-b-en-60335-1-annex-r-certification/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;&lt;b&gt;Part Number:&lt;/b&gt; MSPM0G3107&lt;/p&gt;&lt;p&gt;I am writing an Annex R report for the test results of our product, and I would like to ask about documentation for the MSPM0 diagnostic library. I contacted our first point of contact, but was asked to raise the question in this forum for a quicker lead time.&lt;/p&gt;
&lt;p&gt;**Background**&lt;br /&gt;The product is to be certified according to EN 60335-1 (Annex R, Table R.1). The software must meet Class B, i.e. include measures that detect faults in, among others, CPU registers, program counter, clock, interrupt handling, variable and invariable memory, addressing, internal data path and external communication.&lt;/p&gt;
&lt;p&gt;We have previously used ST microcontrollers. For those, Table R.1 refers to the publicly available [AN3307](&lt;a href="https://www.st.com/resource/en/application_note/an3307-guidelines-for-obtaining-iec-60335-class-b-certification-for-any-stm32-application-stmicroelectronics.pdf)"&gt;https://www.st.com/resource/en/application_note/an3307-guidelines-for-obtaining-iec-60335-class-b-certification-for-any-stm32-application-stmicroelectronics.pdf)&lt;/a&gt; (and ST&amp;#39;s certified Self-Test Library) as documentation of the applied measures.&lt;/p&gt;
&lt;p&gt;**What we use from TI**&lt;br /&gt;We now have a safety-related board with an MSPM0G3107. We use the MSPM0 Diagnostic Library.&lt;/p&gt;
&lt;p&gt;The tests run at start-up and we have already documented our own test results, but I need a reference to TI documentation that shows how the library&amp;#39;s measures meet the requirements, corresponding to what AN3307 does for ST.&lt;/p&gt;
&lt;p&gt;**Questions**&lt;/p&gt;
&lt;p&gt;1. Is there a document for MSPM0 that corresponds to AN3307, and that maps the library functions to the measures in IEC 60730-1 Annex H (Class B) / EN 60335-1 Table R.1?&lt;br /&gt;2. May we refer to these documents in our Annex R report, which is submitted to the certification body?&lt;/p&gt;</description></item><item><title>RE: AM2434: AM2434: Shunt-based current measurement using ADC (HW enabled step, continous)</title><link>https://e2e.ti.com/thread/6531477?ContentTypeID=1</link><pubDate>Thu, 05 Nov 2026 12:32:29 GMT</pubDate><guid isPermaLink="false">cb01d8b2-d089-468d-babb-77d1d8683490:5fd64915-8196-4b7f-993e-3f6b25c184d2</guid><dc:creator>Christian Dev</dc:creator><slash:comments>0</slash:comments><comments>https://e2e.ti.com/thread/6531477?ContentTypeID=1</comments><wfw:commentRss>https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1694211/am2434-am2434-shunt-based-current-measurement-using-adc-hw-enabled-step-continous/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;Hello Karam,&lt;/p&gt;
&lt;p&gt;thank you for your answer. Regarding your questions:&lt;/p&gt;
&lt;p&gt;- ADC sample averaging is disabled (The element &amp;#39;avaraging&amp;#39; of adcStepConfig_t is set to zero)&lt;/p&gt;
&lt;p&gt;- Theoretically, the ADC &lt;span style="text-decoration:underline;"&gt;should&amp;nbsp;&lt;/span&gt;sample only when the low side MOSFET is activ. To verify this, I integrated the dubug pin, which toggles, when the ADC step callback is called. Other than that, I don&amp;#39;t know any other method verifying this. As mentioned above, the step is &amp;#39;hardware enabled and uses the CMP15 event of the IEP as trigger. As I understand the Documentation, the FSM of the ADC remains in an &amp;#39;Idle&amp;#39; state and does not sample until the hardware event has been triggered.&lt;/p&gt;
&lt;p&gt;I hope these answers will help sloving this issue.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Best regards,&lt;/p&gt;
&lt;p&gt;Christian&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>AM2434: AM2434: Shunt-based current measurement using ADC (HW enabled step, continous)</title><link>https://e2e.ti.com/thread/1694211?ContentTypeID=0</link><pubDate>Fri, 30 Oct 2026 12:26:46 GMT</pubDate><guid isPermaLink="false">cb01d8b2-d089-468d-babb-77d1d8683490:5b2c1c20-7a5d-49bf-81d1-251af32c6ad8</guid><dc:creator>Christian Dev</dc:creator><slash:comments>2</slash:comments><comments>https://e2e.ti.com/thread/1694211?ContentTypeID=0</comments><wfw:commentRss>https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1694211/am2434-am2434-shunt-based-current-measurement-using-adc-hw-enabled-step-continous/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;&lt;b&gt;Part Number:&lt;/b&gt; AM2434&lt;/p&gt;&lt;p&gt;Hello,&lt;/p&gt;
&lt;p&gt;I would like to use the ADC on the AM2434 to measure the current of a motor phase. I have designed the following circuit for this purpose:&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;img src="https://e2e.ti.com/cfs-file/__key/communityserver-discussions-components-files/908/adc_5F00_shunt.png" alt="adc_shunt.png" data-temp-id="adc_shunt.png-13505" /&gt;&lt;/p&gt;
&lt;p&gt;As shown in the (simplified) circuit diagramm, the shunt resistor is not located directly in the motor phase path, but is placed in one of the two gate paths, with the gates receiving a square-wave signal from the EPWM and, in the case of the lower gate, the inverted square-wave signal. Thus, the design already defines that current measurement is only possible when the corresponding gate is activated.&lt;/p&gt;
&lt;p&gt;To ensure that the current measurement takes place reliably at a specific point in the time within the EPWM period, it is necessary to use a hardware trigger for the ADC as well as to use continous mode. Since I am already using the IEP for similar purposes, the event ICSS-G0 IEP0 CMP15 (described in Section 12.1.1.3.1 of the TRM) was the ideal choice for me.&lt;/p&gt;
&lt;p&gt;However, I&amp;#39;m having trouble measuring the motor phase current correctly - more specifically, the measured current is lower than expected depending on the duty cycle. For example, at a duty cycle of 50%, the measured current is half the expected value. Before I go into more detail, I&amp;#39;d like to note that I&amp;#39;ve verified the basic conversion forular in the software. To do this, I applied a &lt;span style="text-decoration:underline;"&gt;constant &lt;/span&gt;current to the shunt resistor on the PCB. The calculated current in the AM2434 software an the current set on the lab power supply matched in a small measuring series (except for minimal variations around the LSB)&lt;/p&gt;
&lt;p&gt;To investigate the issue further, I configured a debug pin that is toggled every time the ADC callback for the specific ADC step is called. You can see two oscilloscope waveforms below. Red shows the EPWM signal, and blue the GPIO signal. These should show that the measurement time (triggered by the IEP CMP15) was configured one time during the EPWM&amp;#39;s HIGH phase and one time during its LOW phase (although slight inaccuracies arise due to the method of the measurement, these are negligible).&lt;/p&gt;
&lt;p&gt;&lt;img src="https://e2e.ti.com/cfs-file/__key/communityserver-discussions-components-files/908/measurement_5F00_2.jpg" alt="measurement_2.jpg" data-temp-id="measurement_2.jpg-97924" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src="https://e2e.ti.com/cfs-file/__key/communityserver-discussions-components-files/908/measurement_5F00_3.jpg" alt="measurement_3.jpg" data-temp-id="measurement_3.jpg-98424" /&gt;&lt;/p&gt;
&lt;p&gt;As I mentioned earlier, I&amp;#39;m measuring an incorrect signal. Although the ADC is measuring the sine wave of the motor phase, it is approximately a factor of 2 smaller. What&amp;#39;s causing this? Is the circuit design incorrectly? Or is the ADC configured incorrectly. Here are all the settings:&lt;/p&gt;
&lt;table style="border-collapse:collapse;width:27.7008%;height:290.375px;" border="1"&gt;&lt;colgroup&gt;&lt;col style="width:50.0693%;"&gt;&lt;col style="width:50.0693%;"&gt;&lt;/col&gt;&lt;/col&gt;&lt;/colgroup&gt;
&lt;tbody&gt;
&lt;tr style="height:36px;"&gt;
&lt;td&gt;Channel&lt;/td&gt;
&lt;td&gt;ADC_AIN2&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="height:36px;"&gt;
&lt;td&gt;Step&lt;/td&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="height:36px;"&gt;
&lt;td&gt;Mode&lt;/td&gt;
&lt;td&gt;HW synchronized, continous&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="height:36px;"&gt;
&lt;td&gt;Open Delay&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="height:36px;"&gt;
&lt;td&gt;Sample Delay&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="height:36px;"&gt;
&lt;td&gt;Range Check&lt;/td&gt;
&lt;td&gt;false&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="height:36px;"&gt;
&lt;td&gt;Averaging&amp;nbsp;&lt;/td&gt;
&lt;td&gt;none&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="height:37px;"&gt;
&lt;td&gt;FIFO&lt;/td&gt;
&lt;td&gt;FIFO1&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Furthermore, the ADC is configured to only use &amp;#39;End of Sequence&amp;#39; as interrupt source.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;I&amp;#39;d appreciate some help on this topic.&lt;/p&gt;
&lt;p&gt;Best regards,&lt;/p&gt;
&lt;p&gt;Christian&lt;/p&gt;</description></item><item><title>AM2432: DLR Backup Manager Communication Loss</title><link>https://e2e.ti.com/thread/1695098?ContentTypeID=0</link><pubDate>Wed, 04 Nov 2026 02:47:16 GMT</pubDate><guid isPermaLink="false">cb01d8b2-d089-468d-babb-77d1d8683490:a0416611-e690-447e-bdd4-c22b23f0caae</guid><dc:creator>Wang Hongzhi</dc:creator><slash:comments>4</slash:comments><comments>https://e2e.ti.com/thread/1695098?ContentTypeID=0</comments><wfw:commentRss>https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1695098/am2432-dlr-backup-manager-communication-loss/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;&lt;b&gt;Part Number:&lt;/b&gt; AM2432&lt;/p&gt;&lt;h1&gt;DLR Backup Manager Communication Loss &amp;mdash; Problem Analysis Report&lt;/h1&gt;
&lt;div&gt;&lt;hr /&gt;&lt;/div&gt;
&lt;h2&gt;1. Summary&lt;/h2&gt;
&lt;p&gt;This report analyzes two independent defects, both observed sporadically only during the DLR stress test of repeatedly power-cycling ordinary ring nodes:&lt;/p&gt;
&lt;figure&gt;
&lt;table style="width:1140px;"&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;No.&lt;/th&gt;
&lt;th&gt;Defect&lt;/th&gt;
&lt;th&gt;Ownership&lt;/th&gt;
&lt;th&gt;Status&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Issue 1&lt;/td&gt;
&lt;td&gt;The DLR Backup Manager &lt;strong&gt;spuriously takes over as Active Supervisor on a single-port link down&lt;/strong&gt;, causing ring role/state churn&lt;/td&gt;
&lt;td&gt;TI DLR host driver (SDK 2026.00.00.06)&lt;/td&gt;
&lt;td&gt;Fixed locally and verified&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Issue 2&lt;/td&gt;
&lt;td&gt;PRU firmware &lt;strong&gt;host TX queue (Q3/LwIP) deadlock&lt;/strong&gt;: &lt;span&gt;&lt;code&gt;busy_m&lt;/code&gt;&lt;/span&gt; and the collision slot are never released, permanently breaking all IP communication (including EIP I/O over UDP) on that device&lt;/td&gt;
&lt;td&gt;TI &lt;span&gt;&lt;code&gt;ethernetip_adapter&lt;/code&gt;&lt;/span&gt; PRU firmware&lt;/td&gt;
&lt;td&gt;Host-side recovery validated; TI root fix pending&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/figure&gt;
&lt;p&gt;Issue 2 directly matches the field symptom: the Manager reports the DLR ring as healthy, yet the Backup Manager cannot be pinged and its EIP I/O connection drops and cannot reconnect.&lt;/p&gt;
&lt;h2&gt;2. Test Topology&lt;/h2&gt;
&lt;pre&gt;&lt;span&gt;M.port1 &amp;mdash;&amp;mdash;&amp;mdash; N1 &amp;mdash;&amp;mdash; N2 &amp;mdash;&amp;mdash; N3 &amp;mdash;&amp;mdash; N4 &amp;mdash;&amp;mdash;&amp;mdash; B.port1&lt;/span&gt;&lt;br /&gt;&lt;span&gt;M.port2 &amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash; direct cable &amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash; B.port2&lt;/span&gt;&lt;/pre&gt;
&lt;ul data-mark="-"&gt;
&lt;li&gt;
&lt;p&gt;&lt;span&gt;&lt;code&gt;M&lt;/code&gt;&lt;/span&gt;: Manager (Active Ring Supervisor, precedence 1)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;span&gt;&lt;code&gt;B&lt;/code&gt;&lt;/span&gt;: Backup Manager (Backup Ring Supervisor, precedence 0)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;span&gt;&lt;code&gt;N1..N4&lt;/code&gt;&lt;/span&gt;: ordinary ring nodes (non-TI devices, ring-node functionality only)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Normally M blocks M.port2; data flows M.port1 &amp;mdash; node chain &amp;mdash; B.port1; the M.port2&amp;harr;B.port2 direct cable carries only Beacon/DLR frames.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;3. Symptoms&lt;/h2&gt;
&lt;ol start=""&gt;
&lt;li&gt;
&lt;p&gt;Occurs sporadically after repeatedly power-cycling the ordinary nodes (the Manager and Backup Manager stay powered).&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;The Manager reports the DLR ring as &lt;strong&gt;normal&lt;/strong&gt;, but the Backup Manager is unreachable.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;The Backup Manager times out pinging any device (Manager, nodes); the Manager also times out pinging the Backup Manager.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;The Backup Manager&amp;#39;s &lt;strong&gt;EIP I/O communication fails at the same time&lt;/strong&gt; (I/O data is sent via UDP/LwIP, sharing the host TX queue with ARP/ICMP).&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Breaking and then restoring the ring restores communication, without rebooting the device.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;Reproduction&lt;/strong&gt;: two TI managers configured as Active / Backup Ring Supervisor (both blocking port 2), four ordinary nodes chained in the ring. Keep both managers powered and repeatedly power-cycle the nodes (a few seconds per round). Issue 1 hit 2 times in 12 link-down events; Issue 2 appeared multiple times in the same stress run (always after link recovery).&lt;/p&gt;
&lt;h2&gt;4. Issue 1: DLR Backup Manager Spurious Takeover on Single-Port Link Down&lt;/h2&gt;
&lt;h3&gt;4.1 Relevant mechanisms in the stock code&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;(1) Link-down handling&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The P0/P1 link-break handlers in &lt;span&gt;&lt;code&gt;icss_dlr.c&lt;/code&gt;&lt;/span&gt; (&lt;span&gt;&lt;code&gt;EIP_DLR_port0ProcessLinkBrk()&lt;/code&gt;&lt;/span&gt; / &lt;span&gt;&lt;code&gt;EIP_DLR_port1ProcessLinkBrk()&lt;/code&gt;&lt;/span&gt;) set the node state to &lt;span&gt;&lt;code&gt;NODE_FAULT&lt;/code&gt;&lt;/span&gt;, stop that port&amp;#39;s IEP watchdog, flush the learning table, and report a ring fault. This path itself is correct.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;(2) Beacon-timeout ISR unconditionally re-arms the watchdog&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;At the entry of &lt;span&gt;&lt;code&gt;EIP_DLR_beaconTimeoutISR_P0/P1&lt;/code&gt;&lt;/span&gt; (&lt;span&gt;&lt;code&gt;icss_dlr.c:873&lt;/code&gt;&lt;/span&gt; for P0, &lt;span&gt;&lt;code&gt;icss_dlr.c:1022&lt;/code&gt;&lt;/span&gt; for P1):&lt;/p&gt;
&lt;pre&gt;&lt;span&gt;/*Clear the interrupt*/&lt;/span&gt;&lt;br /&gt;&lt;span&gt;HW_WR_REG32(intStatusOffset, PORT0_WD_ISR_MASK);&lt;/span&gt;&lt;br /&gt;&lt;span&gt;...&lt;/span&gt;&lt;br /&gt;&lt;span&gt;/*Need to restart the Watchdog because it&amp;#39;s not an auto load timer*/&lt;/span&gt;&lt;br /&gt;&lt;span&gt;EIP_DLR_disableIEPWatchdog(dlrHandle, PORT0_WATCH_DOG_ID);&lt;/span&gt;&lt;br /&gt;&lt;span&gt;EIP_DLR_enableIEPWatchdog(dlrHandle, PORT0_WATCH_DOG_ID); &amp;nbsp; /* no link check */&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;The IEP watchdog is not an auto-reload timer, so it must be re-armed after expiry &amp;mdash; hence the unconditional &lt;span&gt;&lt;code&gt;disable + enable&lt;/code&gt;&lt;/span&gt;. The problem is that this happens before any state/link check: if a port is already down (and will never see a Beacon again), one timeout interrupt that was already pending at link-down (or arrives right after) still enters the ISR and re-enables the watchdog; from then on that port keeps generating timeout interrupts every &lt;span&gt;&lt;code&gt;beaconTimeout&lt;/code&gt;&lt;/span&gt; (currently 4000 &amp;micro;s) with no way to stop itself.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;(3) Backup takeover decision ignores the other port&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;In &lt;span&gt;&lt;code&gt;EIP_DLR_beaconTimeoutSupProcessing()&lt;/code&gt;&lt;/span&gt; (&lt;span&gt;&lt;code&gt;icss_dlr_sup.c:880&lt;/code&gt;&lt;/span&gt; onwards), the &amp;quot;backup supervisor in FAULT state&amp;quot; branch uses only &lt;span&gt;&lt;code&gt;isSwitchOverPeriodActive&lt;/code&gt;&lt;/span&gt; to distinguish &amp;quot;first timeout&amp;quot; from &amp;quot;continuous timeout&amp;quot;:&lt;/p&gt;
&lt;pre&gt;&lt;span&gt;if(isSwitchOverPeriodActive == DLR_TRUE)&lt;/span&gt;&lt;br /&gt;&lt;span&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span&gt; &amp;nbsp; &amp;nbsp;/* Second and subsequent timeouts: declare the active manager lost */&lt;/span&gt;&lt;br /&gt;&lt;span&gt; &amp;nbsp; &amp;nbsp;EIP_DLR_disableIEPWatchdog(dlrHandle, portNum - 1);&lt;/span&gt;&lt;br /&gt;&lt;span&gt; &amp;nbsp; &amp;nbsp;EIP_DLR_resetStateMachine(dlrHandle);&lt;/span&gt;&lt;br /&gt;&lt;span&gt; &amp;nbsp; &amp;nbsp;EIP_DLR_configSupervisor(dlrHandle); &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;/* set ACTIVE, send Beacons */&lt;/span&gt;&lt;br /&gt;&lt;span&gt; &amp;nbsp; &amp;nbsp;isSwitchOverPeriodActive = DLR_FALSE;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;}&lt;/span&gt;&lt;br /&gt;&lt;span&gt;else&lt;/span&gt;&lt;br /&gt;&lt;span&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span&gt; &amp;nbsp; &amp;nbsp;/* First timeout: enter the switchover window, stop both watchdogs, enable only P0 */&lt;/span&gt;&lt;br /&gt;&lt;span&gt; &amp;nbsp; &amp;nbsp;EIP_DLR_disableIEPWatchdog(dlrHandle, PORT0_WATCH_DOG_ID);&lt;/span&gt;&lt;br /&gt;&lt;span&gt; &amp;nbsp; &amp;nbsp;EIP_DLR_disableIEPWatchdog(dlrHandle, PORT1_WATCH_DOG_ID);&lt;/span&gt;&lt;br /&gt;&lt;span&gt; &amp;nbsp; &amp;nbsp;EIP_DLR_enableIEPWatchdog(dlrHandle, PORT0_WATCH_DOG_ID);&lt;/span&gt;&lt;br /&gt;&lt;span&gt; &amp;nbsp; &amp;nbsp;isSwitchOverPeriodActive = DLR_TRUE;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;}&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;Nothing in this decision &lt;strong&gt;checks whether the other port is still receiving Beacons&lt;/strong&gt; (nor whether this port&amp;#39;s own link is still valid).&lt;/p&gt;
&lt;h3&gt;4.2 Defect walk-through&lt;/h3&gt;
&lt;p&gt;With the two code paths above, a single-port link down is enough to trigger takeover:&lt;/p&gt;
&lt;ol start=""&gt;
&lt;li&gt;
&lt;p&gt;The node-side port (P1/PHY1) goes down &amp;rarr; state machine enters &lt;span&gt;&lt;code&gt;NODE_FAULT&lt;/code&gt;&lt;/span&gt;, P1 watchdog is stopped;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;But the Beacon-timeout interrupt that was already pending at link-down (or arrives right after) still enters the ISR, which re-enables the P1 watchdog unconditionally at entry;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;P1 is down, so no Beacon arrives and timeouts recur every 4 ms, re-entering the FAULT branch;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;The first timeout arms the switchover window (&lt;span&gt;&lt;code&gt;isSwitchOverPeriodActive = TRUE&lt;/code&gt;&lt;/span&gt;); the second executes &lt;span&gt;&lt;code&gt;resetStateMachine + configSupervisor&lt;/code&gt;&lt;/span&gt; and &lt;strong&gt;takes over as Active Supervisor&lt;/strong&gt;;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Meanwhile the Manager&amp;#39;s Beacons on P2 never stopped. Per DLR semantics, the backup may take over only when &lt;strong&gt;neither port&lt;/strong&gt; receives Beacons;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;The firmware then clears the ACTIVE bit by precedence (backup 0 &amp;lt; manager 1), and the host runs &lt;span&gt;&lt;code&gt;transitionToBackupSupervisor()&lt;/code&gt;&lt;/span&gt; on the idle&amp;rarr;fault event, demoting back to Backup within about 1 ms.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;4.3 Field event trace&lt;/h3&gt;
&lt;pre&gt;&lt;span&gt;[55347868] P1 LINK DOWN drvLS=01&lt;/span&gt;&lt;br /&gt;&lt;span&gt;[55347868] DLR_P1_BRK link=0 node=NORMAL en:status=0x00230000&lt;/span&gt;&lt;br /&gt;&lt;span&gt;[55347868] FDB FLUSH port1 entries=33&lt;/span&gt;&lt;br /&gt;&lt;span&gt;[55347868] DLR -&amp;gt; FAULT  node=FAULT ring=2&lt;/span&gt;&lt;br /&gt;&lt;span&gt;[55347868] BCN_TO_P1 node=FAULT sm=0x0201&lt;/span&gt;&lt;br /&gt;&lt;span&gt;[55347872] BCN_TO_P1 node=FAULT sm=0x0201&lt;/span&gt;&lt;br /&gt;&lt;span&gt;[55347872] DLR RESET SM (previous node=FAULT)&lt;/span&gt;&lt;br /&gt;&lt;span&gt;[55347872] DLR RESET SM (previous node=IDLE)&lt;/span&gt;&lt;br /&gt;&lt;span&gt;[55347872] SUP -&amp;gt; ACTIVE &amp;nbsp; EN=0x27 &amp;nbsp; &amp;nbsp; &amp;nbsp;  &amp;lt;-- spurious takeover&lt;/span&gt;&lt;br /&gt;&lt;span&gt;[55347873] ISR_P2 evts=0x0108 ... [RING_FAULT_TRANS STOP_BOTH_TMR ...]&lt;/span&gt;&lt;br /&gt;&lt;span&gt;[55347873] SUP -&amp;gt; BACKUP &amp;nbsp; EN=0x23 &amp;nbsp; &amp;nbsp; &amp;nbsp;  &amp;lt;-- demoted about 1 ms later&lt;/span&gt;&lt;/pre&gt;
&lt;ul data-mark="-"&gt;
&lt;li&gt;
&lt;p&gt;Within the same observation window: &lt;span&gt;&lt;code&gt;P1 LINK DOWN&lt;/code&gt;&lt;/span&gt; 12 times, &lt;span&gt;&lt;code&gt;BCN_TO_P1&lt;/code&gt;&lt;/span&gt; 7 times, &lt;strong&gt;2 spurious takeovers&lt;/strong&gt; (about 1 in 6; sporadic).&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;During the same period the Manager side shows no role change, so the churn happens only on the backup side.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;4.4 Impact&lt;/h3&gt;
&lt;ul data-mark="-"&gt;
&lt;li&gt;
&lt;p&gt;Each hit produces a brief &amp;quot;dual supervisor / role flap&amp;quot; on the ring, and the Backup Manager sends its own Beacons;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;The takeover path calls &lt;span&gt;&lt;code&gt;EIP_DLR_dRAMInit()&lt;/code&gt;&lt;/span&gt;, which clears the ActiveSup MAC/IP in SMEM; the demotion path does not restore them; &lt;span&gt;&lt;code&gt;updateSupervisorDetails()&lt;/code&gt;&lt;/span&gt; may write &lt;span&gt;&lt;code&gt;addr.supMACAddress&lt;/code&gt;&lt;/span&gt; and the learning exception table as &lt;span&gt;&lt;code&gt;00:00:00:00:00:00&lt;/code&gt;&lt;/span&gt;;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;CIP status, the participant table, and ring-fault counters are repeatedly reset, degrading long-term DLR network stability.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;4.5 Fix (local)&lt;/h3&gt;
&lt;figure&gt;
&lt;table style="width:1140px;"&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Location (stock file)&lt;/th&gt;
&lt;th&gt;Change&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span&gt;&lt;code&gt;icss_dlr.c&lt;/code&gt;&lt;/span&gt; beacon-timeout ISR (P0/P1)&lt;/td&gt;
&lt;td&gt;Check this port&amp;#39;s live link (MDIO) first; on link down &amp;rarr; stop the watchdog, clear &lt;span&gt;&lt;code&gt;TIMER_RUNNING/START_TIMER&lt;/code&gt;&lt;/span&gt;, set &lt;span&gt;&lt;code&gt;isrAck&lt;/code&gt;&lt;/span&gt;, and return without re-arming&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span&gt;&lt;code&gt;icss_dlr.c&lt;/code&gt;&lt;/span&gt; beacon-timeout ISR (P0/P1)&lt;/td&gt;
&lt;td&gt;Record genuine timeouts in &lt;span&gt;&lt;code&gt;lastBcnTimeoutTick[port]&lt;/code&gt;&lt;/span&gt; for the backup decision&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span&gt;&lt;code&gt;icss_dlr.c&lt;/code&gt;&lt;/span&gt; NORMAL branch + &lt;span&gt;&lt;code&gt;EIP_DLR_switchToNormal()&lt;/code&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;Clear &lt;span&gt;&lt;code&gt;isSwitchOverPeriodActive&lt;/code&gt;&lt;/span&gt; so a previous fault&amp;#39;s switchover window does not persist&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span&gt;&lt;code&gt;icss_dlr_sup.c&lt;/code&gt;&lt;/span&gt; backup/FAULT branch&lt;/td&gt;
&lt;td&gt;Add a peer-port criterion before takeover: other port link up + its watchdog running + no new timeout within an observation window &amp;rarr; conclude &amp;quot;the other port still has Beacons&amp;quot;, do not arm, do not take over&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span&gt;&lt;code&gt;icss_dlr_sup.c&lt;/code&gt;&lt;/span&gt; switchover arm branch&lt;/td&gt;
&lt;td&gt;Change from &amp;quot;stop both watchdogs, enable only P0&amp;quot; to &amp;quot;keep both watchdogs running&amp;quot; so the peer-port criterion is meaningful when evaluated&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span&gt;&lt;code&gt;icss_dlr.h&lt;/code&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;Add &lt;span&gt;&lt;code&gt;lastBcnTimeoutTick[2]&lt;/code&gt;&lt;/span&gt; and two link/watchdog query declarations&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/figure&gt;
&lt;blockquote&gt;
&lt;p&gt;Genuine manager-loss scenarios are unaffected: when both ports go silent, the other port times out too, the criterion fails, and takeover still happens; worst-case takeover time increases from about 2&amp;times; to 3&amp;times; beaconTimeout.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3&gt;4.6 Verification&lt;/h3&gt;
&lt;p&gt;With the new firmware under the same stress test (repeated node power cycling), the event trace no longer shows &lt;span&gt;&lt;code&gt;SUP -&amp;gt; ACTIVE&lt;/code&gt;&lt;/span&gt;; on P1 link down it shows &lt;span&gt;&lt;code&gt;BCN_TO P1 ignored (link down)&lt;/code&gt;&lt;/span&gt;; legitimate takeovers occur only when the Manager side is truly silent.&lt;/p&gt;
&lt;h2&gt;5. Issue 2: PRU Firmware Host TX Queue (Q3) Deadlock&lt;/h2&gt;
&lt;h3&gt;5.1 Stock queue protocol and driver TX path&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;(1) Queue descriptor (PRU1 DRAM, shared by host and firmware)&lt;/strong&gt;&lt;/p&gt;
&lt;figure&gt;
&lt;table style="width:1140px;"&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Offset&lt;/th&gt;
&lt;th&gt;Field&lt;/th&gt;
&lt;th&gt;Written by&lt;/th&gt;
&lt;th&gt;Meaning&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;+0&lt;/td&gt;
&lt;td&gt;&lt;span&gt;&lt;code&gt;rd_ptr&lt;/code&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;PRU&lt;/td&gt;
&lt;td&gt;firmware read pointer&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;+2&lt;/td&gt;
&lt;td&gt;&lt;span&gt;&lt;code&gt;wr_ptr&lt;/code&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;host&lt;/td&gt;
&lt;td&gt;host write pointer&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;+4&lt;/td&gt;
&lt;td&gt;&lt;span&gt;&lt;code&gt;busy_s&lt;/code&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;host&lt;/td&gt;
&lt;td&gt;host ownership flag&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;+5&lt;/td&gt;
&lt;td&gt;&lt;span&gt;&lt;code&gt;status&lt;/code&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;firmware&lt;/td&gt;
&lt;td&gt;bit0 &lt;span&gt;&lt;code&gt;busy_m&lt;/code&gt;&lt;/span&gt; (firmware busy), bit1 collision&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;+6/+7&lt;/td&gt;
&lt;td&gt;&lt;span&gt;&lt;code&gt;max_fill&lt;/code&gt;&lt;/span&gt; / &lt;span&gt;&lt;code&gt;overflow&lt;/code&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&amp;mdash;&lt;/td&gt;
&lt;td&gt;statistics&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/figure&gt;
&lt;p&gt;In addition, each port has a collision slot at &lt;span&gt;&lt;code&gt;colStatusAddr+1/+2&lt;/code&gt;&lt;/span&gt;: when the target queue is busy the host moves the frame into the collision queue and writes &lt;span&gt;&lt;code&gt;(queue&amp;lt;&amp;lt;1)|1&lt;/code&gt;&lt;/span&gt;; &lt;strong&gt;the firmware clears it after consuming the collision queue&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;(2) Driver TX path (MCU+ SDK &lt;span&gt;&lt;code&gt;icss_emac.c&lt;/code&gt;&lt;/span&gt;, &lt;span&gt;&lt;code&gt;ICSS_EMAC_txPacketEnqueue()&lt;/code&gt;&lt;/span&gt;, switch mode)&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;span&gt;/* 1. Read status.busy_m */&lt;/span&gt;&lt;br /&gt;&lt;span&gt;collision_queue_selected = (temp &amp;amp; 0x00000100U); &amp;nbsp; &amp;nbsp; &amp;nbsp;/* Check the &amp;quot;busy_m&amp;quot; bit */&lt;/span&gt;&lt;br /&gt;&lt;span&gt;if(collision_queue_selected != 0U)&lt;/span&gt;&lt;br /&gt;&lt;span&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span&gt; &amp;nbsp; &amp;nbsp;hostStatPtr-&amp;gt;txNumCollision++;&lt;/span&gt;&lt;br /&gt;&lt;span&gt; &amp;nbsp; &amp;nbsp;/* 2. Check whether this port&amp;#39;s collision slot is already occupied */&lt;/span&gt;&lt;br /&gt;&lt;span&gt; &amp;nbsp; &amp;nbsp;col_queue_already_occupied = HW_RD_REG8(colStatusAddr + port);&lt;/span&gt;&lt;br /&gt;&lt;span&gt; &amp;nbsp; &amp;nbsp;if(col_queue_already_occupied != 0)&lt;/span&gt;&lt;br /&gt;&lt;span&gt; &amp;nbsp;  {&lt;/span&gt;&lt;br /&gt;&lt;span&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;hostStatPtr-&amp;gt;txDroppedPackets++;&lt;/span&gt;&lt;br /&gt;&lt;span&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;hostStatPtr-&amp;gt;txCollisionDroppedPackets++;&lt;/span&gt;&lt;br /&gt;&lt;span&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return ICSS_EMAC_ERR_COLLISION_FAIL; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; /* No space in collision queue */&lt;/span&gt;&lt;br /&gt;&lt;span&gt; &amp;nbsp;  }&lt;/span&gt;&lt;br /&gt;&lt;span&gt;}&lt;/span&gt;&lt;br /&gt;&lt;span&gt;...&lt;/span&gt;&lt;br /&gt;&lt;span&gt;/* 3. If free, put the frame into the collision queue and set the port&amp;#39;s collision slot */&lt;/span&gt;&lt;br /&gt;&lt;span&gt;collision_status = (queuePriority &amp;lt;&amp;lt; 1) | 0x0001U;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;HW_WR_REG8(colStatusAddr + port, collision_status);&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;So: once the firmware leaves a queue&amp;#39;s &lt;span&gt;&lt;code&gt;busy_m&lt;/code&gt;&lt;/span&gt; set indefinitely, every transmission takes the collision path; the host sets the collision slot on the first attempt, the firmware never clears it, and every subsequent transmission is dropped at step 2 with &lt;span&gt;&lt;code&gt;ERR_COLLISION_FAIL&lt;/code&gt;&lt;/span&gt;, while &lt;span&gt;&lt;code&gt;txDroppedPackets/txCollisionDroppedPackets&lt;/code&gt;&lt;/span&gt; keep increasing.&lt;/p&gt;
&lt;h3&gt;5.2 Field evidence&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;(1) TX counter deltas around a ping (Backup Manager port1; driver statistics plus TX return-code counts)&lt;/strong&gt;&lt;/p&gt;
&lt;figure&gt;
&lt;table style="width:1140px;"&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Counter&lt;/th&gt;
&lt;th&gt;Before ping&lt;/th&gt;
&lt;th&gt;After ping&lt;/th&gt;
&lt;th&gt;Delta&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span&gt;&lt;code&gt;txBC&lt;/code&gt;&lt;/span&gt; (driver statistic)&lt;/td&gt;
&lt;td&gt;32&lt;/td&gt;
&lt;td&gt;32&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;0&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span&gt;&lt;code&gt;txNumCollision&lt;/code&gt;&lt;/span&gt; (driver statistic)&lt;/td&gt;
&lt;td&gt;21818&lt;/td&gt;
&lt;td&gt;22368&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;+550&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span&gt;&lt;code&gt;txCollisionDroppedPackets&lt;/code&gt;&lt;/span&gt; (driver statistic)&lt;/td&gt;
&lt;td&gt;21814&lt;/td&gt;
&lt;td&gt;22364&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;+550&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span&gt;&lt;code&gt;ERR_TX_NO_LINK&lt;/code&gt;&lt;/span&gt; return count&lt;/td&gt;
&lt;td&gt;666073&lt;/td&gt;
&lt;td&gt;666073&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;other drops (queue full, etc.) return count&lt;/td&gt;
&lt;td&gt;10318&lt;/td&gt;
&lt;td&gt;10318&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/figure&gt;
&lt;p&gt;That is: the link is up (no NO_LINK drops) and queues are not full, yet every transmission fails on the collision path &amp;mdash; an exact match for the code path in 5.1. Over the same period port2 shows &lt;span&gt;&lt;code&gt;txBC +534&lt;/code&gt;&lt;/span&gt; (all broadcasts leave via port 2, which faces the Manager&amp;#39;s blocked port).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;(2) Raw queue descriptor values in the fault state (read from PRU1 DRAM)&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;span&gt;P1 Q0 wr=1088 rd=1088 used=0 busy=0 busym=0 ovf=0&lt;/span&gt;&lt;br /&gt;&lt;span&gt;P1 Q1 wr=11a4 rd=11a4 used=0 busy=0 busym=0 ovf=0&lt;/span&gt;&lt;br /&gt;&lt;span&gt;P1 Q2 wr=1328 rd=1328 used=0 busy=0 busym=0 ovf=0&lt;/span&gt;&lt;br /&gt;&lt;span&gt;P1 Q3 wr=15a4 rd=15a4 used=0 busy=0 busym=1 ovf=0&lt;/span&gt;&lt;br /&gt;&lt;span&gt;P1 colStatus=7 &amp;nbsp; (= (3&amp;lt;&amp;lt;1)|1, Q3 collision slot asserted)&lt;/span&gt;&lt;/pre&gt;
&lt;ul data-mark="-"&gt;
&lt;li&gt;
&lt;p&gt;The deadlocked queue is &lt;strong&gt;P1 Q3&lt;/strong&gt; (&lt;span&gt;&lt;code&gt;ICSS_EMAC_QUEUE4&lt;/code&gt;&lt;/span&gt;, the LwIP transmit queue);&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;The queue itself is empty (&lt;span&gt;&lt;code&gt;wr==rd&lt;/code&gt;&lt;/span&gt;, &lt;span&gt;&lt;code&gt;used=0&lt;/code&gt;&lt;/span&gt;) &amp;mdash; no data backlog; the stuck part is the &lt;strong&gt;handshake bits&lt;/strong&gt;;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;span&gt;&lt;code&gt;status.busy_m=1&lt;/code&gt;&lt;/span&gt; and &lt;span&gt;&lt;code&gt;colStatus=7&lt;/code&gt;&lt;/span&gt; are held together while all other queues are normal.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;(3) Formation time&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;span&gt;[1918964] P1 LINK UP drvLS=101&lt;/span&gt;&lt;br /&gt;&lt;span&gt;[1919003] DLR -&amp;gt; NORMAL node=NORMAL ring=1&lt;/span&gt;&lt;br /&gt;&lt;span&gt;[1919919] *** TXQ P1 STUCK colStatus=7 busy_m=1 ***&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;The deadlock forms after link restore, DLR returning to NORMAL, and the host resuming enqueues to Q3 &amp;mdash; i.e., the firmware fails to complete or properly abort an in-flight TX transaction across the link/ring state transition.&lt;/p&gt;
&lt;h3&gt;5.3 Ownership conclusion&lt;/h3&gt;
&lt;figure&gt;
&lt;table style="width:1140px;"&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;State&lt;/th&gt;
&lt;th&gt;Set by&lt;/th&gt;
&lt;th&gt;Cleared by&lt;/th&gt;
&lt;th&gt;Notes&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Queue &lt;span&gt;&lt;code&gt;status.busy_m&lt;/code&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;PRU firmware&lt;/td&gt;
&lt;td&gt;PRU firmware&lt;/td&gt;
&lt;td&gt;The stock driver only &lt;strong&gt;reads&lt;/strong&gt; this bit (as a TX-path condition); no code writes &lt;span&gt;&lt;code&gt;busy_m&lt;/code&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Collision slot &lt;span&gt;&lt;code&gt;colStatusAddr+1/+2&lt;/code&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;Host (TX path, step 3 in 5.1)&lt;/td&gt;
&lt;td&gt;PRU firmware (after consuming the collision queue)&lt;/td&gt;
&lt;td&gt;The stock driver only writes non-zero values, never 0; &lt;span&gt;&lt;code&gt;+0/+3&lt;/code&gt;&lt;/span&gt; are host acknowledgements to the firmware&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Queue &lt;span&gt;&lt;code&gt;wr/rd&lt;/code&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;Host writes wr, firmware writes rd&lt;/td&gt;
&lt;td&gt;&amp;mdash;&lt;/td&gt;
&lt;td&gt;In the field &lt;span&gt;&lt;code&gt;wr==rd&lt;/code&gt;&lt;/span&gt;: data is empty&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/figure&gt;
&lt;p&gt;Therefore the indefinitely held &lt;span&gt;&lt;code&gt;busy_m=1&lt;/code&gt;&lt;/span&gt; and collision-slot assertion are a &lt;strong&gt;firmware state machine that failed to converge&lt;/strong&gt;, not a driver logic error; link events, port control registers, and DLR state transitions never make the firmware release these two states.&lt;/p&gt;
&lt;h3&gt;5.4 Impact&lt;/h3&gt;
&lt;ul data-mark="-"&gt;
&lt;li&gt;
&lt;p&gt;Q3 is the LwIP transmit queue; in this product EIP I/O data is sent over &lt;strong&gt;UDP/LwIP&lt;/strong&gt;, sharing Q3 with ARP/ICMP &amp;rarr; &lt;strong&gt;I/O and ping fail together&lt;/strong&gt; (the PLC-side connection drops and data stops updating);&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;DLR/Beacon (firmware-internal path) and L2 forwarding are unaffected, which is why the Manager still sees the ring as healthy;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;The receive direction is fine: the learning table still learns the peer MAC and the DLR state machine works.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;5.5 Recovery validation and host-side workaround&lt;/h3&gt;
&lt;ul data-mark="-"&gt;
&lt;li&gt;
&lt;p&gt;Experiment: in the &lt;span&gt;&lt;code&gt;busy_m=1 &amp;amp;&amp;amp; wr==rd&lt;/code&gt;&lt;/span&gt; state, having only the host clear the &lt;span&gt;&lt;code&gt;busy_m&lt;/code&gt;&lt;/span&gt; bit in &lt;span&gt;&lt;code&gt;status&lt;/code&gt;&lt;/span&gt;, clear the &lt;span&gt;&lt;code&gt;colStatus&lt;/code&gt;&lt;/span&gt; collision slot, and set &lt;span&gt;&lt;code&gt;wr = rd&lt;/code&gt;&lt;/span&gt; &lt;strong&gt;restores transmission immediately&lt;/strong&gt; (collision counters stop, ping and EIP I/O recover);&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;This also proves the PHY, driver TX path, and LwIP are all fine; the only unreleased states are the two handshake states owned by the firmware;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;A host-side workaround can therefore periodically check queue descriptors and, after several consecutive samples (about 600 ms) of &lt;span&gt;&lt;code&gt;busy_m=1 &amp;amp;&amp;amp; wr==rd&lt;/code&gt;&lt;/span&gt;, perform the same clear; the outage per event is shortened from &amp;quot;permanent&amp;quot; to under 1 s;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Limits of the workaround: all Q3 transmissions still fail during the 600 ms window; if the PLC connection timeout is shorter than that, the connection still drops and reconnects; repeated deadlocks on the same port within a short interval require throttling the recovery action (to avoid repeatedly clearing firmware state).&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;Risk note: this clears firmware-owned handshake bits and is used only in the verified &amp;quot;&lt;span&gt;&lt;code&gt;busy_m=1 &amp;amp;&amp;amp; used=0&lt;/code&gt;&lt;/span&gt;&amp;quot; case; rebooting the device recovers from any anomaly.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3&gt;5.6 Recommended TI fix&lt;/h3&gt;
&lt;p&gt;The PRU firmware should complete or roll back in-flight host TX transactions on link down/up, port reset, and DLR state transitions, releasing the queue &lt;span&gt;&lt;code&gt;busy_m&lt;/code&gt;&lt;/span&gt; and the corresponding collision-slot assertion; at minimum it must not leave a &amp;quot;queue empty but busy_m=1&amp;quot; state after link recovery. Attach the field data and descriptor records from sections 5.1&amp;ndash;5.3.&lt;/p&gt;
&lt;h2&gt;6. Excluded Hypotheses&lt;/h2&gt;
&lt;figure&gt;
&lt;table style="width:1140px;"&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Hypothesis&lt;/th&gt;
&lt;th&gt;Evidence&lt;/th&gt;
&lt;th&gt;Conclusion&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Learning table points the peer MAC to the blocked port 2&lt;/td&gt;
&lt;td&gt;Learning-table query shows the peer MAC on PORT1; after clearing, it re-learns on PORT1 and ping still fails&lt;/td&gt;
&lt;td&gt;Excluded&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Port linkStatus cache stuck&lt;/td&gt;
&lt;td&gt;Driver cache matches live PHY state; link state is correct after a real link down/up experiment&lt;/td&gt;
&lt;td&gt;Excluded&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ARP/L3 configuration&lt;/td&gt;
&lt;td&gt;ARP table shows the correct Manager entry; local IP/mask correct&lt;/td&gt;
&lt;td&gt;Excluded&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Manager-side anomaly&lt;/td&gt;
&lt;td&gt;Manager side: no role change, no Rapid Fault, no abnormal Announce Suppression&lt;/td&gt;
&lt;td&gt;Excluded&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Whole-host TX stall&lt;/td&gt;
&lt;td&gt;Only Q3 is stuck; Q0&amp;ndash;Q2 idle and the EIP real-time path healthy&lt;/td&gt;
&lt;td&gt;Narrowed to Q3&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/figure&gt;
&lt;h2&gt;7. Requests to Texas Instruments&lt;/h2&gt;
&lt;ol start=""&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Confirm Issue 1 and provide a driver fix&lt;/strong&gt;: on a single-port link down, the backup supervisor&amp;#39;s beacon-timeout ISR must not re-enable the watchdog of the down port, and the takeover decision must verify that neither port is receiving Beacons. Please confirm the change direction in &lt;span&gt;&lt;code&gt;icss_dlr.c&lt;/code&gt;&lt;/span&gt; / &lt;span&gt;&lt;code&gt;icss_dlr_sup.c&lt;/code&gt;&lt;/span&gt; and provide an SDK release containing the fix.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Fix Issue 2 in the PRU firmware&lt;/strong&gt;: on link down/up, port reset, and DLR state transitions, complete or roll back any in-flight host TX transaction and release the queue &lt;span&gt;&lt;code&gt;status.busy_m&lt;/code&gt;&lt;/span&gt; plus the corresponding collision-slot assertion. Please confirm whether &amp;quot;queue empty (&lt;span&gt;&lt;code&gt;wr==rd&lt;/code&gt;&lt;/span&gt;) while &lt;span&gt;&lt;code&gt;busy_m=1&lt;/code&gt;&lt;/span&gt; and &lt;span&gt;&lt;code&gt;colStatus&lt;/code&gt;&lt;/span&gt; remains asserted&amp;quot; is a known firmware defect.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Confirm interface semantics&lt;/strong&gt;: is the &lt;span&gt;&lt;code&gt;colStatusAddr+1/+2&lt;/code&gt;&lt;/span&gt; collision slot guaranteed to be cleared by the firmware after it consumes the collision queue? Is &lt;span&gt;&lt;code&gt;status.busy_m&lt;/code&gt;&lt;/span&gt; only cleared by the firmware&amp;#39;s internal transmit-complete event?&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;</description></item><item><title>RE: AM2432: DLR Backup Manager Communication Loss</title><link>https://e2e.ti.com/thread/6531425?ContentTypeID=1</link><pubDate>Thu, 05 Nov 2026 11:19:31 GMT</pubDate><guid isPermaLink="false">cb01d8b2-d089-468d-babb-77d1d8683490:43514660-ac7c-4b94-9ab2-2c8cfe335320</guid><dc:creator>Archit Dev</dc:creator><slash:comments>0</slash:comments><comments>https://e2e.ti.com/thread/6531425?ContentTypeID=1</comments><wfw:commentRss>https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1695098/am2432-dlr-backup-manager-communication-loss/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;Hi Wang&lt;/p&gt;
[quote userid="643794" url="~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1695098/am2432-dlr-backup-manager-communication-loss/6530915"]May I know the ETA for the new Industrial Comms SDK? [/quote]
&lt;p&gt;I am checking on this internally. I&amp;#39;ll share an update by tomorrow on this.&lt;/p&gt;
[quote userid="643794" url="~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1695098/am2432-dlr-backup-manager-communication-loss/6530915"] Looking forward to your update on points 1 &amp;amp; 3.[/quote]
&lt;p&gt;For the issue 1, from the preliminary analysis it looks like we may not require re-arming the IEP Watchdog in case of beacon timeout. We are still testing the changes.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Also, thanks for reporting the new issue with the detailed findings - I&amp;#39;ll keep working on it and keep you posted.&lt;/p&gt;
&lt;p&gt;Regards,&lt;br /&gt;Archit&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>AM2612: SBL executes PBIST successfully, but subsequent HSM FW load or application load causes random resets only on MCU+ SDK 26.01.00.08</title><link>https://e2e.ti.com/thread/1695621?ContentTypeID=0</link><pubDate>Thu, 05 Nov 2026 09:57:55 GMT</pubDate><guid isPermaLink="false">cb01d8b2-d089-468d-babb-77d1d8683490:51920a22-0724-4ce9-a451-d5f6833f13d0</guid><dc:creator>Ichikawa Tatsuya</dc:creator><slash:comments>0</slash:comments><comments>https://e2e.ti.com/thread/1695621?ContentTypeID=0</comments><wfw:commentRss>https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1695621/am2612-sbl-executes-pbist-successfully-but-subsequent-hsm-fw-load-or-application-load-causes-random-resets-only-on-mcu-sdk-26-01-00-08/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;&lt;b&gt;Part Number:&lt;/b&gt; AM2612&lt;/p&gt;&lt;h3&gt;Environment&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Device: AM2612&lt;/li&gt;
&lt;li&gt;Boot mode: OSPI Boot&lt;/li&gt;
&lt;li&gt;SDK that works: motor_control_sdk_am261x_10_02_00_07&lt;/li&gt;
&lt;li&gt;SDK that fails: mcu_plus_sdk_am261x_26_01_00_08&lt;/li&gt;
&lt;li&gt;SBL Execution flow:&lt;br /&gt;
&lt;ol&gt;
&lt;li&gt;LBIST&lt;/li&gt;
&lt;li&gt;PBIST&lt;/li&gt;
&lt;li&gt;HSM Runtime FW load&lt;/li&gt;
&lt;li&gt;Applicaion load&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Problem Description&lt;/h3&gt;
&lt;p&gt;After adding PBIST execution to SBL, PBIST itself passes successfully, but subsequent boot processing becomes unstable.&lt;/p&gt;
&lt;p&gt;Observed behavior:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;PBIST reports PASS.&lt;/li&gt;
&lt;li&gt;After PBIST completion, the system resets unexpectedly.&lt;/li&gt;
&lt;li&gt;Reset location is not constant.&lt;/li&gt;
&lt;li&gt;Sometimes reset occurs during HSM Runtime FW loading.&lt;/li&gt;
&lt;li&gt;The reset point changes from boot to boot.&lt;/li&gt;
&lt;li&gt;This behavior appears only with MCU+ SDK 26.01.00.08.&lt;/li&gt;
&lt;li&gt;The same SBL concept works correctly with motor_control_sdk_am261x_10_02_00_07.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Because the failure point is random and changes every run, it does not appear to be a straightforward software logic issue.&lt;/p&gt;
&lt;h3&gt;PBIST code&lt;/h3&gt;
&lt;p&gt;The SBL executes PBIST as follows:&lt;/p&gt;
&lt;pre&gt;status = SDL_DPL_init(&amp;amp;dpl_interface);

CacheP_disable(CacheP_TYPE_L1P | CacheP_TYPE_L1D);

rvPBIST = SDL_PBIST_selfTest(
    SDL_PBIST_INST_TOP,
    SDL_PBIST_NEG_TEST,
    SDL_BIST_MAX_TIMEOUT_VALUE,
    &amp;amp;PBISTResult);

if ((rvPBIST == SDL_PASS) &amp;amp;&amp;amp; (PBISTResult == true))
{
    rvPBIST = SDL_PBIST_selfTest(
        SDL_PBIST_INST_TOP,
        SDL_PBIST_TEST,
        SDL_BIST_MAX_TIMEOUT_VALUE,
        &amp;amp;PBISTResult);
}

CacheP_enable(CacheP_TYPE_L1P | CacheP_TYPE_L1D);
&lt;/pre&gt;
&lt;p&gt;After PBIST:&lt;/p&gt;
&lt;pre&gt;Drivers_open();

Bootloader_socLoadHsmRtFw();

Bootloader_socInitL2MailBoxMemory();

Board_driversOpen();

Bootloader_parseAndLoadMultiCoreELF();
&lt;/pre&gt;
&lt;h3&gt;Questions&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;Are there any known differences in PBIST handling between motor_control_sdk_am261x_10_02_00_07 and mcu_plus_sdk_am261x_26_01_00_08?&lt;/li&gt;
&lt;li&gt;After PBIST completion on AM261x, are there any mandatory recovery steps such as:&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;ECC initialization&lt;/li&gt;
&lt;li&gt;OCRAM initialization&lt;/li&gt;
&lt;li&gt;Mailbox RAM initialization&lt;/li&gt;
&lt;li&gt;Memory scrub&lt;/li&gt;
&lt;li&gt;PBIST reset release sequence&lt;/li&gt;
&lt;/ul&gt;
that must be executed before HSM FW loading?&lt;/li&gt;
&lt;li&gt;Are there any changes in MCU+ SDK 26.01.00.08 that make the post-PBIST recovery requirements different from older SDKs?&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;Additional Observations&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;PBIST itself always reports PASS.&lt;/li&gt;
&lt;li&gt;Disabling PBIST removes the issue.&lt;/li&gt;
&lt;li&gt;The failure location changes every boot cycle.&lt;/li&gt;
&lt;li&gt;This behavior suggests possible RAM/ECC corruption or incomplete memory recovery after PBIST rather than a deterministic software bug.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Could TI provide guidance on the recommended AM261x boot flow when PBIST is executed before HSM FW loading and application image loading?&lt;/p&gt;
&lt;p&gt;Best Regards&lt;/p&gt;</description></item><item><title>AM2434: AM243x ICSSG EtherCAT Slave: DC System Time Difference (0x92C) takes 6–7 s to converge, and sometimes much longer</title><link>https://e2e.ti.com/thread/1682693?ContentTypeID=0</link><pubDate>Wed, 16 Sep 2026 09:28:01 GMT</pubDate><guid isPermaLink="false">cb01d8b2-d089-468d-babb-77d1d8683490:3e5bcf0c-f635-4b8c-a39a-7dea175b23ee</guid><dc:creator>Marvin Hsu</dc:creator><slash:comments>16</slash:comments><comments>https://e2e.ti.com/thread/1682693?ContentTypeID=0</comments><wfw:commentRss>https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1682693/am2434-am243x-icssg-ethercat-slave-dc-system-time-difference-0x92c-takes-6-7-s-to-converge-and-sometimes-much-longer/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;&lt;b&gt;Part Number:&lt;/b&gt; AM2434&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Setup&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;AM2434x, ICSSG EtherCAT Slave (TI PRU firmware)&lt;/li&gt;
&lt;li&gt;Topology: Master &amp;rarr; SLAVE 1 &amp;rarr; SLAVE 2 &amp;rarr; SLAVE 3 &amp;rarr; SLAVE 4( The device under observation is SLAVE 4 )&lt;/li&gt;
&lt;li&gt;DC with Sync0 enabled, Cycle Time = 2 ms, reference clock is SLAVE 1&lt;/li&gt;
&lt;li&gt;0x930 = 4096, 0x934 = 0, 0x935 = 12 ( All default values)&lt;/li&gt;
&lt;li&gt;DC registers value are read on the slave side every 1 ms and record( waveforms see attachment )&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;strong&gt;Observation&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;With the same hardware, the same firmware and the same configuration, Only reboot the system, leads to two different results:&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;table style="width:100%;"&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th style="width:36.8932%;"&gt;&amp;nbsp;&lt;/th&gt;
&lt;th style="width:29.5387%;"&gt;Normal&lt;/th&gt;
&lt;th style="width:33.5681%;"&gt;Abnormal&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style="width:36.8932%;"&gt;Convergence time of 0x92C&lt;/td&gt;
&lt;td style="width:29.5387%;"&gt;12.5 s &amp;rarr; 19.7 s,&amp;nbsp;&lt;strong&gt;about 7.2 s&lt;/strong&gt;&lt;/td&gt;
&lt;td style="width:33.5681%;"&gt;11.5 s &amp;rarr; 26.5 s,&amp;nbsp;&lt;strong&gt;about 15 s&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="width:36.8932%;"&gt;Peak of 0x932&lt;/td&gt;
&lt;td style="width:29.5387%;"&gt;~3400&lt;/td&gt;
&lt;td style="width:33.5681%;"&gt;saturated at 3969 (= 0x930 &amp;minus; 0x7F) for about 7 s&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="width:36.8932%;"&gt;Steady-state 0x932 / 0x92C / 0x928&lt;/td&gt;
&lt;td style="width:29.5387%;"&gt;1584 / &amp;minus;36 ns / 2089 ns&lt;/td&gt;
&lt;td style="width:33.5681%;"&gt;1576 / &amp;minus;38 ns / 2094 ns&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;In both cases 0x930 / 0x934 / 0x935 are identical, the steady-state values are almost the same, and the DC loop behaviour (0x932 integration, sawtooth pattern) has the same shape. The only difference is the time needed to converge.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;strong&gt;Questions&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Q1.&lt;/strong&gt;&amp;nbsp;In the normal case, 0x92C still needs about 7 s to converge within &amp;plusmn;100 ns, counted from the start of the cyclic BWR to 0x910. Is this convergence time too long? With a 2 ms cycle and the default settings 0x930 = 4096 and 0x935 = 12, is this the expected convergence time, or does TI have a typical value we can refer to?&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Q1-1.&lt;/strong&gt; Is it possible to shorten the convergence time by tuning registers such as 0x930 or 0x935(or else)?&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Q2.&amp;nbsp;&lt;/strong&gt;&amp;nbsp;In the abnormal case the convergence time extends to about 15 s. What could be the cause? Apart from simply waiting for the DC loop to converge by itself, is there any recommended measure to avoid such unstable convergence time?&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;strong&gt;Attachment&lt;br /&gt;&lt;img src="https://e2e.ti.com/cfs-file/__key/communityserver-discussions-components-files/908/23648.image.png" alt="image.png" data-temp-id="image.png-464661" /&gt;&lt;br /&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Waveforms of the normal and abnormal power-ups (0x92C, 0x932, AL State) with the convergence time markers, together with the static register values of both cases.&lt;/p&gt;</description></item><item><title>RE: AM2434: AM243x ICSSG EtherCAT Slave: DC System Time Difference (0x92C) takes 6–7 s to converge, and sometimes much longer</title><link>https://e2e.ti.com/thread/6531340?ContentTypeID=1</link><pubDate>Thu, 05 Nov 2026 09:31:51 GMT</pubDate><guid isPermaLink="false">cb01d8b2-d089-468d-babb-77d1d8683490:73920b81-d232-4439-a376-513c28899fb5</guid><dc:creator>Marvin Hsu</dc:creator><slash:comments>0</slash:comments><comments>https://e2e.ti.com/thread/6531340?ContentTypeID=1</comments><wfw:commentRss>https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1682693/am2434-am243x-icssg-ethercat-slave-dc-system-time-difference-0x92c-takes-6-7-s-to-converge-and-sometimes-much-longer/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p class="code-line" dir="auto" data-line="38"&gt;Hi Aaron,&lt;/p&gt;
&lt;p class="code-line" dir="auto" data-line="40"&gt;Please find the requested information below.&lt;/p&gt;
&lt;h3 id="1-pdo-lengths" class="code-line" dir="auto" data-line="42"&gt;1. PDO lengths&lt;/h3&gt;
&lt;p class="code-line" dir="auto" data-line="43"&gt;The data comes from the&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code&gt;DUT_In_Station1_&amp;hellip;test_8&amp;hellip;pcap&lt;/code&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;attached last time (the MainDevice configures 0x1C12/0x1C13/0x1600/0x1A00 through CoE SDO).&lt;/p&gt;
&lt;table class="code-line" dir="auto" data-line="45"&gt;
&lt;thead class="code-line" dir="auto" data-line="45"&gt;
&lt;tr class="code-line" dir="auto" data-line="45"&gt;
&lt;th&gt;SubDevice&lt;/th&gt;
&lt;th&gt;RxPDO 0x1600 (SM2, LWR)&lt;/th&gt;
&lt;th&gt;TxPDO 0x1A00 (SM3, LRD)&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody class="code-line" dir="auto" data-line="47"&gt;
&lt;tr class="code-line" dir="auto" data-line="47"&gt;
&lt;td&gt;AM2434 DUT&lt;/td&gt;
&lt;td&gt;17 entries, 48 bytes&lt;/td&gt;
&lt;td&gt;14 entries, 40 bytes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="code-line" dir="auto" data-line="48"&gt;
&lt;td&gt;Beckhoff ESC IP (2 devices)&lt;/td&gt;
&lt;td&gt;16 entries, 44 bytes&lt;/td&gt;
&lt;td&gt;14 entries, 40 bytes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="code-line" dir="auto" data-line="49"&gt;
&lt;td&gt;Total&lt;/td&gt;
&lt;td&gt;LWR 136 bytes&lt;/td&gt;
&lt;td&gt;LRD 120 bytes&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p class="code-line" dir="auto" data-line="51"&gt;DUT mapping (index:subindex (bits)):&lt;/p&gt;
&lt;ul class="code-line" dir="auto" data-line="52"&gt;
&lt;li class="code-line" dir="auto" data-line="52"&gt;RxPDO 0x1600: 6040:00(16), 607A:00(32), 60FF:00(32), 6071:00(16), 6080:00(32), 6072:00(16), 60B1:00(32), 60B2:00(16), 2110:01(16), 2110:02(16), 2110:03(16), 2000:00(8), 6060:00(8), 2124:01(32), 2124:02(32), 2126:00(32), 2127:00(32)&lt;/li&gt;
&lt;li class="code-line" dir="auto" data-line="53"&gt;TxPDO 0x1A00: 6041:00(16), 60F4:00(32), 6064:00(32), 606C:00(32), 6077:00(16), 2111:01(16), 2111:02(16), 2111:03(16), 2120:01(32), 2120:02(32), 2125:01(32), 2125:02(32), 2001:00(8), 6061:00(8)&lt;/li&gt;
&lt;/ul&gt;
&lt;p class="code-line" dir="auto" data-line="55"&gt;The Beckhoff ESC IP devices use the same mapping, without the last RxPDO entry 2127:00 (32 bits).&lt;/p&gt;
&lt;h3 id="2-icss-memory-dumps" class="code-line" dir="auto" data-line="57"&gt;2. ICSS memory dumps&lt;/h3&gt;
&lt;p class="code-line" dir="auto" data-line="58"&gt;See dumps.zip below , it contains 6 memory dump files (DUT in Station 1~3 &amp;amp; Old/New Sdk), both starting at address 0x30080000, with a length of 0x40000&lt;/p&gt;
&lt;p&gt;&lt;a href="https://e2e.ti.com/cfs-file/__key/communityserver-discussions-components-files/908/dumps.zip"&gt;e2e.ti.com/.../dumps.zip&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;Thanks,&lt;br /&gt;Marvin&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: AM2754-Q1: AM27542AEZIANJRQ1: power consumption, McASP clocking, OSPI XIP + HyperRAM, and C7x audio software</title><link>https://e2e.ti.com/thread/6531316?ContentTypeID=1</link><pubDate>Thu, 05 Nov 2026 09:13:43 GMT</pubDate><guid isPermaLink="false">cb01d8b2-d089-468d-babb-77d1d8683490:770fa41a-fb2c-4efb-b5cf-35a7fc72963d</guid><dc:creator>Aryamaan Chaurasia</dc:creator><slash:comments>1</slash:comments><comments>https://e2e.ti.com/thread/6531316?ContentTypeID=1</comments><wfw:commentRss>https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1695068/am2754-q1-am27542aezianjrq1-power-consumption-mcasp-clocking-ospi-xip-hyperram-and-c7x-audio-software/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;Hi Jean Karlos,&lt;/p&gt;
[quote userid="724508" url="~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1695068/am2754-q1-am27542aezianjrq1-power-consumption-mcasp-clocking-ospi-xip-hyperram-and-c7x-audio-software"]4. Memory: is booting from OSPI NOR with XIP, plus 16-64 MB of HyperRAM on the second OSPI interface, supported in the MCU+ SDK? Is there a reference design or example?[/quote]
&lt;p&gt;XIP is supported with both, OSPI NOR and HyperRAM. However this is supported during runtime and not during booting. The OSPI controller which we have does not have any provision to supoprt XIP during Booting. Please refer to the 5.4.1.1.1.2 OSPI Loading Process from the AM275x TRM, the same also applies for the xSPI boot mode:&lt;/p&gt;
&lt;p&gt;&lt;img style="max-height:240px;max-width:320px;" alt=" " src="https://e2e.ti.com/resized-image/__size/640x480/__key/communityserver-discussions-components-files/908/pastedimage1793869822956v1.png" /&gt;&lt;/p&gt;
&lt;p&gt;For use cases involving performing XIP during runtime, We do have documentation explaining how to &lt;a href="https://software-dl.ti.com/mcu-plus-sdk/esd/AM275X/latest/exports/docs/api_guide_am275x/developer_guides/bootflow_xip.html"&gt;enable XIP&lt;/a&gt;, and we also have example applications that perform &lt;a href="https://software-dl.ti.com/mcu-plus-sdk/esd/AM275X/latest/exports/docs/api_guide_am275x/examples/benchmarks/xip_benchmark.html"&gt;XIP operations with OSPI NOR&lt;/a&gt; and perform &lt;a href="https://software-dl.ti.com/mcu-plus-sdk/esd/AM275X/latest/exports/docs/api_guide_am275x/examples/benchmarks/hyperRam_xip_benchmark.html"&gt;XIP operations with HyperRAM&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Regards,&lt;br /&gt;Aryamaan&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: MSPM0G3519: ECC detected for FEE Dataflash region</title><link>https://e2e.ti.com/thread/6531281?ContentTypeID=1</link><pubDate>Thu, 05 Nov 2026 08:36:09 GMT</pubDate><guid isPermaLink="false">cb01d8b2-d089-468d-babb-77d1d8683490:8c095713-7f9e-44db-b742-c7a24a4dfb55</guid><dc:creator>Francois Charlot</dc:creator><slash:comments>0</slash:comments><comments>https://e2e.ti.com/thread/6531281?ContentTypeID=1</comments><wfw:commentRss>https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1694678/mspm0g3519-ecc-detected-for-fee-dataflash-region/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;Hi Rana,&lt;/p&gt;
&lt;p&gt;Let me try to answer your questions.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span style="color:#0000ff;"&gt;Does this mean TI recommends disabling or ignoring ECC errors for the FEE region?&lt;/span&gt;&lt;br /&gt;We assume that you need to have the flash ECC enabled in general, so we recommend that you ignore the FLASHDED errors just for the FEE region.&lt;/li&gt;
&lt;li&gt;&lt;span style="color:#0000ff;"&gt;What is the risk of keeping it enabled? Is the ECC reporting misleading errors in the dataflash (FEE) region?&lt;/span&gt;&lt;br /&gt;Please see my former post. Using the FEE may lead to ECC errors because e.g. interrupted/partial write, but such errors should not be treated as safety issues as their impact is not as bad as reading incorrect opcodes from the program flash. If data errors occur in the FEE, other mechanisms such as the CRC check that you mentioned below suffice to close the safety issue.&lt;/li&gt;
&lt;li&gt;&lt;span style="color:#0000ff;"&gt;Is disabling the configuration &amp;quot;FEE_USE_ECC_ADDRESS_SPACE&amp;quot; enough or there are other errors which trigger NMI handler that are recommended to ignore/disable (ex: RAM ECC)?&lt;/span&gt;&lt;br /&gt;I do not think that disabling&amp;nbsp;FEE_USE_ECC_ADDRESS_SPACE is the way to go, because doing so would mean that the whole FEE data space is not ECC corrected, meaning that even single bit errors which are correctable would not be corrected.&amp;nbsp;&lt;br /&gt;I will let the expert confirm when he returns next week, but I believe that the proper way is for the NMI handler to check if the NMI source is FLASHDED; then, if that&amp;#39;s the case, check if this error happened while the FEE driver was being executed.&lt;br /&gt;RAM ECC is not related. Leave it enabled as per your requirements.&lt;/li&gt;
&lt;li&gt;&lt;span style="color:#0000ff;"&gt;Regarding the ECC double bit detected on an ECU, is this considered a real error or a fake one and CRC check is enough for the the Fee blocks.&lt;/span&gt;&lt;br /&gt;It is a real error because indeed an ECC double error was detected but as said above, it should not be treated as if this FLASHDED error were related to reading incorrect opcodes in the program.&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;Best regards,&lt;br /&gt;Fran&amp;ccedil;ois.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>MSPM0G3519: ECC detected for FEE Dataflash region</title><link>https://e2e.ti.com/thread/1694678?ContentTypeID=0</link><pubDate>Mon, 02 Nov 2026 19:23:48 GMT</pubDate><guid isPermaLink="false">cb01d8b2-d089-468d-babb-77d1d8683490:6108f47c-e855-45ec-bf1c-770091def4cf</guid><dc:creator>Rana  Abed</dc:creator><slash:comments>3</slash:comments><comments>https://e2e.ti.com/thread/1694678?ContentTypeID=0</comments><wfw:commentRss>https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1694678/mspm0g3519-ecc-detected-for-fee-dataflash-region/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;&lt;b&gt;Part Number:&lt;/b&gt; MSPM0G3519&lt;/p&gt;&lt;p&gt;Hello all,&lt;/p&gt;
&lt;p&gt;I have encountered an ECC double bit error in the dataflash region which is causing continous reset.&lt;/p&gt;
&lt;p&gt;I noticed a statement in the FEE User Guide: &lt;em&gt;&amp;quot;The system integrator shall add hooks into the NMI handler to ignore any NMI faults generated from the regions dedicated to the FEE module. NMI can happen on reset scenarios when the FEE algorithm attempts to read some corrupted ECC flash region&amp;quot;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;img src="https://e2e.ti.com/cfs-file/__key/communityserver-discussions-components-files/908/7484.image.png" alt="image.png" data-temp-id="image.png-224709" /&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;div&gt;
&lt;ul&gt;
&lt;li&gt;Does this mean TI recommends disabling or ignoring ECC errors for the FEE region?&lt;/li&gt;
&lt;li&gt;What is the risk of keeping it enabled? Is the ECC reporting misleading errors in the dataflash (FEE) region?&lt;/li&gt;
&lt;li&gt;Is disabling the configuration &amp;quot;FEE_USE_ECC_ADDRESS_SPACE&amp;quot; enough or there are other errors which trigger NMI handler that are recommended to ignore/disable (ex: RAM ECC)?&lt;/li&gt;
&lt;li&gt;Regarding the ECC double bit detected on an ECU, is this considered a real error or a fake one and CRC check is enough for the the Fee blocks.&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;</description></item><item><title>LP-AM261: External Flash changed to GD?</title><link>https://e2e.ti.com/thread/1695218?ContentTypeID=0</link><pubDate>Wed, 04 Nov 2026 09:29:07 GMT</pubDate><guid isPermaLink="false">cb01d8b2-d089-468d-babb-77d1d8683490:58e0aa5d-f0b3-40b4-a59c-0e9701601786</guid><dc:creator>Ted Huh</dc:creator><slash:comments>1</slash:comments><comments>https://e2e.ti.com/thread/1695218?ContentTypeID=0</comments><wfw:commentRss>https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1695218/lp-am261-external-flash-changed-to-gd/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;&lt;b&gt;Part Number:&lt;/b&gt; LP-AM261&lt;/p&gt;&lt;p&gt;Hello ASM Team,&lt;/p&gt;
&lt;p&gt;It seems like the external flash on LP-AM261 has changed to Gigadevice but there&amp;#39;s no description about this on ti.com. and also SDK does not have prebuilt SBL. maybe Uniflash flasher also will fail.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;do you have sbl and flasher for this new external flash?&lt;/li&gt;
&lt;li&gt;in case of you don&amp;#39;t have those, is it helpful that i build example code for you and customers?&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Regards,&lt;/p&gt;
&lt;p&gt;Ted&lt;/p&gt;</description></item><item><title>RE: LP-AM261: External Flash changed to GD?</title><link>https://e2e.ti.com/thread/6531270?ContentTypeID=1</link><pubDate>Thu, 05 Nov 2026 08:26:50 GMT</pubDate><guid isPermaLink="false">cb01d8b2-d089-468d-babb-77d1d8683490:9ba58f5e-584d-4bfa-bc45-455f61d0d12a</guid><dc:creator>Lakshya Verma</dc:creator><slash:comments>0</slash:comments><comments>https://e2e.ti.com/thread/6531270?ContentTypeID=1</comments><wfw:commentRss>https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1695218/lp-am261-external-flash-changed-to-gd/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;Hi Ted,&lt;br /&gt;We have a LP-AM261 with Gigadevice flash , but that version board is currently not available on TI.com&lt;br /&gt;We have support in SDK for Gigadevice flash via SysConfig.&lt;br /&gt;You need to change Flash Configuration in Sysconfig.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>MSPM33C321A-Q1: mcan_single_message_tx     some issue</title><link>https://e2e.ti.com/thread/1687934?ContentTypeID=0</link><pubDate>Thu, 08 Oct 2026 08:24:42 GMT</pubDate><guid isPermaLink="false">cb01d8b2-d089-468d-babb-77d1d8683490:d43d3ffb-49e6-4add-b4ec-40fe73290872</guid><dc:creator>Colombo Carlo</dc:creator><slash:comments>4</slash:comments><comments>https://e2e.ti.com/thread/1687934?ContentTypeID=0</comments><wfw:commentRss>https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1687934/mspm33c321a-q1-mcan_single_message_tx-some-issue/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;&lt;b&gt;Part Number:&lt;/b&gt; MSPM33C321A-Q1&lt;/p&gt;&lt;p&gt;Hi Everybody ,&amp;nbsp;&lt;/p&gt;
&lt;p&gt;I m on M33 Launchpad ,&amp;nbsp; using the mcan_single_message_tx&amp;nbsp; &amp;nbsp;out of the SDK&amp;nbsp; - and Launchpad is stdalone ( I dont have a CAN analyzer )&amp;nbsp;&lt;/p&gt;
&lt;p&gt;I was expeting to be able to see 1 message on CAN everytime I press the Button :&amp;nbsp; now I can see the first one&amp;nbsp; and only&amp;nbsp; it -&amp;nbsp; so just one message&amp;nbsp;&lt;/p&gt;
&lt;p&gt;there is no Breakpoint set&amp;nbsp;&lt;/p&gt;
&lt;p&gt;please where am I wrong ? why I cannot see&amp;nbsp; after another button press anothe rmessage ?&amp;nbsp; ( fyi I checked and any time I press the button&amp;nbsp; it is recognized by the code )&amp;nbsp;&lt;/p&gt;
&lt;p&gt;thank you&amp;nbsp;&lt;/p&gt;
&lt;p&gt;BR&lt;br /&gt;Carlo&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description></item><item><title>RE: MSPM33C321A-Q1: mcan_single_message_tx     some issue</title><link>https://e2e.ti.com/thread/6531268?ContentTypeID=1</link><pubDate>Thu, 05 Nov 2026 08:26:02 GMT</pubDate><guid isPermaLink="false">cb01d8b2-d089-468d-babb-77d1d8683490:316970e5-fcd8-4782-a67d-5b100b940264</guid><dc:creator>Colombo Carlo</dc:creator><slash:comments>0</slash:comments><comments>https://e2e.ti.com/thread/6531268?ContentTypeID=1</comments><wfw:commentRss>https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1687934/mspm33c321a-q1-mcan_single_message_tx-some-issue/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;Hi Ella ,&amp;nbsp;&lt;/p&gt;
&lt;p&gt;thakn you&amp;nbsp; , the one shot message was the reason&amp;nbsp;&lt;/p&gt;
&lt;p&gt;thank you&amp;nbsp;&lt;/p&gt;
&lt;p&gt;BR&lt;br /&gt;Carlo&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: AM2754-Q1: AM27542AEZIANJRQ1: power consumption, McASP clocking, OSPI XIP + HyperRAM, and C7x audio software</title><link>https://e2e.ti.com/thread/6531065?ContentTypeID=1</link><pubDate>Thu, 05 Nov 2026 04:33:34 GMT</pubDate><guid isPermaLink="false">cb01d8b2-d089-468d-babb-77d1d8683490:d312ef5d-4521-4a87-a201-e8edcaf674c4</guid><dc:creator>Tushar Thakur</dc:creator><slash:comments>1</slash:comments><comments>https://e2e.ti.com/thread/6531065?ContentTypeID=1</comments><wfw:commentRss>https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1695068/am2754-q1-am27542aezianjrq1-power-consumption-mcasp-clocking-ospi-xip-hyperram-and-c7x-audio-software/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;Hi &lt;span&gt;Jean Karlos&lt;/span&gt;,&lt;/p&gt;
[quote userid="724508" url="~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1695068/am2754-q1-am27542aezianjrq1-power-consumption-mcasp-clocking-ospi-xip-hyperram-and-c7x-audio-software"]6. Does the SDK include a USB device stack (CDC and DFU)?[/quote]
&lt;p&gt;The current SDK offering does not support USB. But the above mentioned USB class driver(i.e. CDC &amp;amp; DFU) is planned to be supported in future SDK releases.&lt;/p&gt;
&lt;p&gt;Regards,&lt;br /&gt;Tushar&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>AM2434: AM243x HS-SE: encrypted MCELF (ENC_ENABLED=yes) does not boot, while signed-only MCELF boots (MCU+ SDK 12.01)</title><link>https://e2e.ti.com/thread/1692700?ContentTypeID=0</link><pubDate>Mon, 26 Oct 2026 14:36:02 GMT</pubDate><guid isPermaLink="false">cb01d8b2-d089-468d-babb-77d1d8683490:d0c0ba01-5acf-44d2-acba-57fb4a7353e3</guid><dc:creator>Vit Triska</dc:creator><slash:comments>6</slash:comments><comments>https://e2e.ti.com/thread/1692700?ContentTypeID=0</comments><wfw:commentRss>https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1692700/am2434-am243x-hs-se-encrypted-mcelf-enc_enabled-yes-does-not-boot-while-signed-only-mcelf-boots-mcu-sdk-12-01/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;&lt;b&gt;Part Number:&lt;/b&gt; AM2434&lt;/p&gt;&lt;p&gt;Hello,&lt;/p&gt;
&lt;p&gt;device: AM243x, HS-SE (SMPK/SMEK programmed, KEYREV = 1)&lt;br /&gt;SDK: MCU+ SDK AM243x 12.01.00.33&lt;br /&gt;SBL: custom SBL OSPI based on sbl_ospi, signed with SMPK (and encrypted SMEK). The encrypted/not encrypted SBL itself boots correctly.&lt;/p&gt;
&lt;p&gt;I tested the SDK example &amp;quot;examples/hello_world (r5fss0-0_freertos)&amp;quot;, built with DEVICE_TYPE=HS:&lt;/p&gt;
&lt;p&gt;#1:&lt;br /&gt;ENC_ENABLED=no:&lt;br /&gt;The signed &amp;quot;hello_world.mcelf.hs&amp;quot; boots fine.&lt;br /&gt;```bash&lt;br /&gt;$(MAKE) -C ${CCS_PROJECT_DIR} -f makefile_ccs_bootimage_gen OUTNAME=${BuildArtifactFileBaseName} PROFILE=${ConfigName} MCU_PLUS_SDK_PATH=${MCU_PLUS_SDK_PATH} CG_TOOL_ROOT=${CG_TOOL_ROOT} CCS_INSTALL_DIR=${CCS_INSTALL_DIR} CCS_IDE_MODE=${CCS_IDE_MODE} DEVICE=am243x DEVICE_TYPE=HS CUST_MPK=${IMI_VS18VS26_KEYS_PATH}/smpk.pem CUST_MEK=${IMI_VS18VS26_KEYS_PATH}/smek.txt ENC_ENABLED=no&lt;br /&gt;```&lt;/p&gt;
&lt;p&gt;#2:&lt;br /&gt;ENC_ENABLED=yes:&lt;br /&gt;The signed and encrypted &amp;quot;hello_world.mcelf.hs&amp;quot; does not boot.&lt;br /&gt;```bash&lt;br /&gt;$(MAKE) -C ${CCS_PROJECT_DIR} -f makefile_ccs_bootimage_gen OUTNAME=${BuildArtifactFileBaseName} PROFILE=${ConfigName} MCU_PLUS_SDK_PATH=${MCU_PLUS_SDK_PATH} CG_TOOL_ROOT=${CG_TOOL_ROOT} CCS_INSTALL_DIR=${CCS_INSTALL_DIR} CCS_IDE_MODE=${CCS_IDE_MODE} DEVICE=am243x DEVICE_TYPE=HS CUST_MPK=${IMI_VS18VS26_KEYS_PATH}/smpk.pem CUST_MEK=${IMI_VS18VS26_KEYS_PATH}/smek.txt ENC_ENABLED=yes&lt;br /&gt;```&lt;/p&gt;
&lt;p&gt;Observations:&lt;/p&gt;
&lt;p&gt;With &amp;quot;ENC_ENABLED=yes&amp;quot;, &amp;quot;makefile_ccs_bootimage_gen&amp;quot; invokes &amp;quot;appimage_x509_cert_gen.py --enc y&amp;quot;. This appears to encrypts the whole MCELF, including the ELF header.&lt;/p&gt;
&lt;p&gt;However, &amp;quot;Bootloader_parseELFMeta()&amp;quot; in &amp;quot;bootloader_mcelf.c&amp;quot; checks for the plaintext &amp;quot;\x7fELF&amp;quot; magic value immediatelly after the certificate. When the image is encrypted, this check fails because the ELF header is no longer readable in plaintext.&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;Questions:&lt;/p&gt;
&lt;p&gt;1. What is the recommended way to boot an encrypted MCELF application on an AM243x HS-SE device?&lt;br /&gt;2. Is the `ENC_ENABLED=yes` flow expected to work with MCELF images, and if so, what additional steps are required?&lt;br /&gt;3. If encrypted MCELF images are not currently supported, what is TI&amp;#39;s recommended approach for protecting application confidentiality in OSPI flash?&lt;br /&gt;4. Is support for encrypted MCELF boot planned in the next SDK release?&lt;/p&gt;
&lt;p&gt;Thank you for your help.&lt;/p&gt;
&lt;p&gt;Best regards,&lt;br /&gt;Vit&lt;/p&gt;</description></item><item><title>RE: AM2434: AM243x HS-SE: encrypted MCELF (ENC_ENABLED=yes) does not boot, while signed-only MCELF boots (MCU+ SDK 12.01)</title><link>https://e2e.ti.com/thread/6531063?ContentTypeID=1</link><pubDate>Thu, 05 Nov 2026 04:30:59 GMT</pubDate><guid isPermaLink="false">cb01d8b2-d089-468d-babb-77d1d8683490:e02b1d47-bbcc-46f7-b53c-7404e6dc5e11</guid><dc:creator>Prashant Shivhare</dc:creator><slash:comments>0</slash:comments><comments>https://e2e.ti.com/thread/6531063?ContentTypeID=1</comments><wfw:commentRss>https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1692700/am2434-am243x-hs-se-encrypted-mcelf-enc_enabled-yes-does-not-boot-while-signed-only-mcelf-boots-mcu-sdk-12-01/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;Hello,&lt;/p&gt;
&lt;p&gt;There are no technical limitations to support the MCELF encrypted boot.&amp;nbsp;It&amp;#39;s just that we didn&amp;#39;t have any customer requirements yet to support the same. I have created an interal requirement now but this will most likely not make it to the next SDK release (v12.2) because of the time constrainsts.&lt;/p&gt;
&lt;p&gt;We recently integrated MCELF encrypted boot in the SDK for AM275 devices&lt;/p&gt;
&lt;p&gt;&lt;a id="" href="https://github.com/TexasInstruments/mcupsdk-core-k3/commit/5bc2a9d8a7012119aadecc856766441d01a5dcea"&gt;https://github.com/TexasInstruments/mcupsdk-core-k3/commit/5bc2a9d8a7012119aadecc856766441d01a5dcea&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a id="" href="https://github.com/TexasInstruments/mcupsdk-core-k3/commit/0b7e0fef691af3c69d1c0d467c4d149fe13ffaa9"&gt;https://github.com/TexasInstruments/mcupsdk-core-k3/commit/0b7e0fef691af3c69d1c0d467c4d149fe13ffaa9&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a id="" href="https://github.com/TexasInstruments/multicore-elf/commit/4673330653e9b71fbc08424271bda93f132d4a36"&gt;https://github.com/TexasInstruments/multicore-elf/commit/4673330653e9b71fbc08424271bda93f132d4a36&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://github.com/TexasInstruments/multicore-elf/commit/98566b6230a428ce9924255f29257d8b5e636a19"&gt;github.com/.../98566b6230a428ce9924255f29257d8b5e636a19&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The patches I shared are simply the port of these commits so you can be sure that the official&amp;nbsp;support will be more or less the same. It may divert a little but nothing that would affect the authentication of the application images.&lt;/p&gt;
&lt;p&gt;Please let me know if any further clarifications are required.&lt;/p&gt;
&lt;p&gt;Regards,&lt;/p&gt;
&lt;p&gt;Prashant&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: AM2432: DLR Backup Manager Communication Loss</title><link>https://e2e.ti.com/thread/6530926?ContentTypeID=1</link><pubDate>Thu, 05 Nov 2026 01:42:14 GMT</pubDate><guid isPermaLink="false">cb01d8b2-d089-468d-babb-77d1d8683490:7ae8d49c-f57f-4f05-a208-1e9943332ac7</guid><dc:creator>Wang Hongzhi</dc:creator><slash:comments>1</slash:comments><comments>https://e2e.ti.com/thread/6530926?ContentTypeID=1</comments><wfw:commentRss>https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1695098/am2432-dlr-backup-manager-communication-loss/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;Hi Archit,&lt;/p&gt;
&lt;p&gt;One more thing. We found a new issue during testing, details are as follows. Could you help check and confirm whether the proposed fix is reasonable?&lt;/p&gt;
&lt;h1 class="md-end-block md-heading"&gt;&lt;span class="md-plain md-expand"&gt;DLR Ring Supervisor Overwrites the Last Active Node with Its Own Address&lt;/span&gt;&lt;/h1&gt;
&lt;p class="md-end-block md-p"&gt;&lt;span class="md-pair-s "&gt;&lt;strong&gt;&lt;span class="md-plain"&gt;SDK:&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;span class="md-plain"&gt; &lt;/span&gt;&lt;span class="md-pair-s"&gt;&lt;code&gt;ind_comms_sdk_am243x_2026_00_00_06&lt;/code&gt;&lt;/span&gt;&lt;span class="md-plain"&gt; (also present in &lt;/span&gt;&lt;span class="md-pair-s"&gt;&lt;code&gt;2025_00_00_08&lt;/code&gt;&lt;/span&gt;&lt;span class="md-plain"&gt;)&lt;/span&gt;&lt;span class="md-softbreak"&gt; &lt;/span&gt;&lt;span class="md-pair-s "&gt;&lt;strong&gt;&lt;span class="md-plain"&gt;File:&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;span class="md-plain"&gt; &lt;/span&gt;&lt;span class="md-pair-s"&gt;&lt;code&gt;source/industrial_comms/ethernetip_adapter/icss_fwhal/icss_dlr_sup.c&lt;/code&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h2 class="md-end-block md-heading"&gt;&lt;span class="md-plain"&gt;Symptom&lt;/span&gt;&lt;/h2&gt;
&lt;p class="md-end-block md-p md-focus"&gt;&lt;span class="md-plain"&gt;After a cable break between two ring nodes, one of the DLR Object attributes 6/7 (Last Active Node Port 1/2) contains the supervisor&amp;#39;s own IP/MAC instead of the node adjacent to the fault. Issuing the CIP &lt;/span&gt;&lt;span class="md-pair-s"&gt;&lt;code&gt;Verify_Fault_Location (0x53)&lt;/code&gt;&lt;/span&gt;&lt;span class="md-plain md-expand"&gt; service once and reading the attributes again returns the correct values.&lt;/span&gt;&lt;/p&gt;
&lt;h2 class="md-end-block md-heading"&gt;&lt;span class="md-plain"&gt;Root cause&lt;/span&gt;&lt;/h2&gt;
&lt;p class="md-end-block md-p"&gt;&lt;span class="md-plain"&gt;Runtime trace on the supervisor (1 ms resolution):&lt;/span&gt;&lt;/p&gt;
&lt;pre class="md-fences md-end-block ty-contain-cm modeLoaded" lang="text"&gt;&lt;span&gt;[57534] LSTAT RX P1 ... ACTNODE P1 &amp;lt;- 192.168.1.5  (link_status) &amp;nbsp; &amp;nbsp; &amp;lt;- correct&lt;/span&gt;&lt;br /&gt;&lt;span&gt;[57534] DLR -&amp;gt; FAULT&lt;/span&gt;&lt;br /&gt;&lt;span&gt;[57534] LSTAT RX P2 ... ACTNODE P2 &amp;lt;- 192.168.3.88 (link_status) &amp;nbsp; &amp;nbsp; &amp;lt;- correct&lt;/span&gt;&lt;br /&gt;&lt;span&gt;[57536] BCN_TO_P2 ... ACTNODE P2 &amp;lt;- 192.168.1.4 &amp;nbsp; (bcn_timeout_self) &amp;lt;- overwritten 2 ms later&lt;/span&gt;&lt;/pre&gt;
&lt;p class="md-end-block md-p"&gt;&lt;span class="md-plain"&gt;Three code locations in the driver (SDK 2026 line numbers):&lt;/span&gt;&lt;/p&gt;
&lt;ol class="ol-list" start=""&gt;
&lt;li class="md-list-item"&gt;
&lt;p class="md-end-block md-p"&gt;&lt;span class="md-pair-s"&gt;&lt;code&gt;icss_dlr_sup.c:2202/2222&lt;/code&gt;&lt;/span&gt;&lt;span class="md-plain"&gt;: the Link_Status source is correctly recorded into &lt;/span&gt;&lt;span class="md-pair-s"&gt;&lt;code&gt;activeNode[portNum]&lt;/code&gt;&lt;/span&gt;&lt;span class="md-plain"&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li class="md-list-item"&gt;
&lt;p class="md-end-block md-p"&gt;&lt;span class="md-pair-s"&gt;&lt;code&gt;icss_dlr_sup.c:2238&lt;/code&gt;&lt;/span&gt;&lt;span class="md-plain"&gt;: the transition to FAULT &lt;/span&gt;&lt;span class="md-pair-s "&gt;&lt;strong&gt;&lt;span class="md-plain"&gt;disables only the PORT0 beacon watchdog&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;span class="md-plain"&gt;, regardless of which port received the frame.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li class="md-list-item"&gt;
&lt;p class="md-end-block md-p"&gt;&lt;span class="md-pair-s"&gt;&lt;code&gt;icss_dlr_sup.c:955/971&lt;/code&gt;&lt;/span&gt;&lt;span class="md-plain"&gt;: the FAULT-state beacon-timeout handler &lt;/span&gt;&lt;span class="md-pair-s "&gt;&lt;strong&gt;&lt;span class="md-plain"&gt;unconditionally&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;span class="md-plain"&gt; writes the local address into &lt;/span&gt;&lt;span class="md-pair-s"&gt;&lt;code&gt;activeNode[that port]&lt;/code&gt;&lt;/span&gt;&lt;span class="md-plain"&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p class="md-end-block md-p"&gt;&lt;span class="md-plain"&gt;The ring is open, so the supervisor&amp;#39;s own beacons never return on either port; the watchdog that was left armed expires about 2 ms later and overwrites the node just recorded with the supervisor&amp;#39;s own address. If the Link_Status is received on Port 2 the overwrite is deterministic (only PORT0 is disabled); if the Link_Status arrives after the timeout, the attribute looks correct, which is why the problem appears intermittent.&lt;/span&gt;&lt;/p&gt;
&lt;h2 class="md-end-block md-heading"&gt;&lt;span class="md-plain"&gt;Proposed fix (2 changes)&lt;/span&gt;&lt;/h2&gt;
&lt;ol class="ol-list" start=""&gt;
&lt;li class="md-list-item"&gt;
&lt;p class="md-end-block md-p"&gt;&lt;span class="md-plain"&gt;When entering FAULT after a Link_Status, &lt;/span&gt;&lt;span class="md-pair-s "&gt;&lt;strong&gt;&lt;span class="md-plain"&gt;disable the watchdogs of both ports&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;span class="md-plain"&gt; and clear &lt;/span&gt;&lt;span class="md-pair-s"&gt;&lt;code&gt;DLR_TIMER_RUNNING | DLR_START_TIMER&lt;/code&gt;&lt;/span&gt;&lt;span class="md-plain"&gt; on both ports.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;pre class="md-fences md-end-block ty-contain-cm modeLoaded" lang="c"&gt;&lt;span&gt; &lt;span class="cm-variable"&gt;nodeState&lt;/span&gt; &lt;span class="cm-operator"&gt;=&lt;/span&gt; &lt;span class="cm-variable"&gt;NODE_FAULT&lt;/span&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span&gt; &lt;span class="cm-variable"&gt;EIP_DLR_disableIEPWatchdog&lt;/span&gt;(&lt;span class="cm-variable"&gt;dlrHandle&lt;/span&gt;, &lt;span class="cm-variable"&gt;PORT0_WATCH_DOG_ID&lt;/span&gt;);&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;span class="cm-operator"&gt;+&lt;/span&gt;&lt;span class="cm-variable"&gt;EIP_DLR_disableIEPWatchdog&lt;/span&gt;(&lt;span class="cm-variable"&gt;dlrHandle&lt;/span&gt;, &lt;span class="cm-variable"&gt;PORT1_WATCH_DOG_ID&lt;/span&gt;);&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;span class="cm-operator"&gt;+&lt;/span&gt;&lt;span class="cm-comment"&gt;/* clear DLR_TIMER_RUNNING_MASK | DLR_START_TIMER_MASK on both ports */&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;ol class="ol-list" start="2"&gt;
&lt;li class="md-list-item"&gt;
&lt;p class="md-end-block md-p"&gt;&lt;span class="md-plain"&gt;On a FAULT-state beacon timeout, write the local node &lt;/span&gt;&lt;span class="md-pair-s "&gt;&lt;strong&gt;&lt;span class="md-plain"&gt;only when the port link is down&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;span class="md-plain"&gt;; when the link is up, send a Neighbor_Check_Request and start the neighbor timeout instead (if the neighbor does not answer, the existing neighbor-timeout handler writes the local node, which matches the DLR definition of &amp;quot;no Neighbor_Check_Response&amp;quot;).&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;pre class="md-fences md-end-block ty-contain-cm modeLoaded" lang="c"&gt;&lt;span&gt;&lt;span class="cm-operator"&gt;-&lt;/span&gt;&lt;span class="cm-keyword"&gt;if&lt;/span&gt; ( ... ) { &lt;span class="cm-variable"&gt;activeNode&lt;/span&gt;[&lt;span class="cm-variable"&gt;port&lt;/span&gt;] &lt;span class="cm-operator"&gt;=&lt;/span&gt; &lt;span class="cm-variable"&gt;deviceIP&lt;/span&gt;; }&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;span class="cm-operator"&gt;+&lt;/span&gt;&lt;span class="cm-keyword"&gt;if&lt;/span&gt; (&lt;span class="cm-variable"&gt;EIP_DLR_isPortLinkUp&lt;/span&gt;(&lt;span class="cm-variable"&gt;dlrHandle&lt;/span&gt;, &lt;span class="cm-variable"&gt;port&lt;/span&gt;) &lt;span class="cm-operator"&gt;==&lt;/span&gt; &lt;span class="cm-variable"&gt;DLR_FALSE&lt;/span&gt;) {&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;span class="cm-operator"&gt;+&lt;/span&gt; &amp;nbsp; &amp;nbsp;&lt;span class="cm-variable"&gt;activeNode&lt;/span&gt;[&lt;span class="cm-variable"&gt;port&lt;/span&gt;] &lt;span class="cm-operator"&gt;=&lt;/span&gt; &lt;span class="cm-variable"&gt;deviceIP&lt;/span&gt;; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span class="cm-comment"&gt;/* no link: the supervisor really is the end of this segment */&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;span class="cm-operator"&gt;+&lt;/span&gt;} &lt;span class="cm-keyword"&gt;else&lt;/span&gt; {&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;span class="cm-operator"&gt;+&lt;/span&gt; &amp;nbsp; &amp;nbsp;&lt;span class="cm-variable"&gt;EIP_DLR_sendNeighborCheckReq&lt;/span&gt;(&lt;span class="cm-variable"&gt;dlrHandle&lt;/span&gt;, &lt;span class="cm-variable"&gt;port&lt;/span&gt;); &amp;nbsp; &lt;span class="cm-comment"&gt;/* ring open beyond this port: verify the neighbor */&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;span class="cm-operator"&gt;+&lt;/span&gt;}&lt;/span&gt;&lt;/pre&gt;
&lt;h2 class="md-end-block md-heading"&gt;&lt;span class="md-plain"&gt;Verification&lt;/span&gt;&lt;/h2&gt;
&lt;ul class="ul-list" data-mark="-"&gt;
&lt;li class="md-list-item"&gt;
&lt;p class="md-end-block md-p"&gt;&lt;span class="md-plain"&gt;Both fault-detection paths (Link_Status-triggered and beacon-timeout-only) no longer produce &lt;/span&gt;&lt;span class="md-pair-s"&gt;&lt;code&gt;bcn_timeout_self&lt;/code&gt;&lt;/span&gt;&lt;span class="md-plain"&gt;; attributes 6/7 keep the real nodes on both sides.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li class="md-list-item"&gt;
&lt;p class="md-end-block md-p"&gt;&lt;span class="md-plain"&gt;After the ring is restored the watchdogs are re-armed (&lt;/span&gt;&lt;span class="md-pair-s"&gt;&lt;code&gt;IEP WD ctrl=0x00010001, enP0=1 enP1=1&lt;/code&gt;&lt;/span&gt;&lt;span class="md-plain"&gt;), and a subsequent fault is still detected and located correctly.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 class="md-end-block md-heading"&gt;&lt;span class="md-plain"&gt;Questions for TI&lt;/span&gt;&lt;/h2&gt;
&lt;ol class="ol-list" start=""&gt;
&lt;li class="md-list-item"&gt;
&lt;p class="md-end-block md-p"&gt;&lt;span class="md-plain"&gt;Are these two changes consistent with the DLR specification and the intended design of the ICSS DLR driver?&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li class="md-list-item"&gt;
&lt;p class="md-end-block md-p"&gt;&lt;span class="md-plain"&gt;For a FAULT-state beacon timeout on a port whose link is up, we no longer write the local node but send a Neighbor_Check instead. Is this acceptable, or would you recommend simply keeping the beacon watchdogs disabled in FAULT state?&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li class="md-list-item"&gt;
&lt;p class="md-end-block md-p"&gt;&lt;span class="md-plain"&gt;Can this be fixed in a future SDK release?&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;Thanks &amp;amp; Regards,&lt;/p&gt;
&lt;p&gt;Hongzhi&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: AM2432: DLR Backup Manager Communication Loss</title><link>https://e2e.ti.com/thread/6530915?ContentTypeID=1</link><pubDate>Thu, 05 Nov 2026 01:32:34 GMT</pubDate><guid isPermaLink="false">cb01d8b2-d089-468d-babb-77d1d8683490:9522ec04-e768-4b02-aa89-b529f7ec671d</guid><dc:creator>Wang Hongzhi</dc:creator><slash:comments>0</slash:comments><comments>https://e2e.ti.com/thread/6530915?ContentTypeID=1</comments><wfw:commentRss>https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1695098/am2432-dlr-backup-manager-communication-loss/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;Hi Archit,&lt;/p&gt;
&lt;p&gt;Thanks for your update. May I know the ETA for the new Industrial Comms SDK? Could we get a pre-release build for validation in advance? Looking forward to your update on points 1 &amp;amp; 3.&lt;/p&gt;
&lt;p&gt;Thanks &amp;amp; Regards, Hongzhi&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>AM13E23019: PGA connection to CMPSS for three phase over-current protection</title><link>https://e2e.ti.com/thread/1694407?ContentTypeID=0</link><pubDate>Mon, 02 Nov 2026 03:28:45 GMT</pubDate><guid isPermaLink="false">cb01d8b2-d089-468d-babb-77d1d8683490:9c227881-a6c3-4067-8769-330f17262507</guid><dc:creator>Hang Yang</dc:creator><slash:comments>5</slash:comments><comments>https://e2e.ti.com/thread/1694407?ContentTypeID=0</comments><wfw:commentRss>https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1694407/am13e23019-pga-connection-to-cmpss-for-three-phase-over-current-protection/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;&lt;b&gt;Part Number:&lt;/b&gt; AM13E23019&lt;/p&gt;&lt;p&gt;Hi Experts,&lt;/p&gt;
&lt;p&gt;My customer are developing motor control application, they want to use PGA + CMPSS for over-current protection. They have below questions:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Can PGA OUT connect to CMPSS?&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The TRM has shown that the PGA_OUT_INT has connected to CMPSS, however, the sysconfig only shows &amp;quot;connect to ADC&amp;quot; and there are only options for PA, not PGA_INT_OUT&lt;/p&gt;
&lt;p&gt;&lt;img src="https://e2e.ti.com/cfs-file/__key/communityserver-discussions-components-files/908/32806.image.png" alt="image.png" data-temp-id="image.png-60691" /&gt;&lt;/p&gt;
&lt;p&gt;Neverthess, one of the PA, for example PA17 in this screen shot, is shared with the PGA_OUT, so we may use PGA_OUT intead of PGA_OUT_INT to route PGA to CMPSS. I have tested this setup would work, but could you please comfirming this is a supported function? And if this is the only way to route PGA to CMPSS, then the PGA_OUT_INT is not connected to CMPSS, we may need to fix the TRM.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;How to support three phases?&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Even with the above method, there only 2 out of 3 PGAs that has its PGAx_OUT shared with a CMPSS input. The PGA1_OUT does not share any CMPSS input.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://e2e.ti.com/cfs-file/__key/communityserver-discussions-components-files/908/546378.image.png" alt="image.png" data-temp-id="image.png-29720" /&gt;&lt;/p&gt;
&lt;p&gt;May I know why desigin the signal this way? And how to achieve 3 phases over-current protection?&lt;/p&gt;
&lt;p&gt;Regards,&lt;/p&gt;
&lt;p&gt;Hang&lt;/p&gt;</description></item></channel></rss>