cancel
Showing results for 
Search instead for 
Did you mean: 

Not a genuine ST Device!

Ukazu
Associate III
Hi

I would like to debug STM32F303RDT6 using a combination of Keil and ULINK2.
When I start debugging on the target microcontroller (STM32F303RDT6), **Not a genuine ST Device! Abort connection** is output as shown below.

We investigated the cause.
I found the following files.
**C:\Keil_v5\ARM\PACK\.Web\Keil.STM32F3xx_DFP.pdsc**

It seems that this process is failing.

```xml
        <!-- User-Defined Sequences -->
        <sequence name="CheckID">
          <block>
            __var pidr1 = 0;
            __var pidr2 = 0;
            __var jep106id = 0;
            __var ROMTableBase = 0;

            __ap = 0;      // AHB-AP

            ROMTableBase = ReadAP(0xF8) &amp; ~0x3;

            pidr1 = Read32(ROMTableBase + 0x0FE4);
            pidr2 = Read32(ROMTableBase + 0x0FE8);
            jep106id = ((pidr2 &amp; 0x7) &lt;&lt; 4 ) | ((pidr1 &gt;&gt; 4) &amp; 0xF);
          </block>

          <control if="jep106id != 0x20">
            <block>
              Query(0, "Not a genuine ST Device! Abort connection", 1);
              Message(2, "Not a genuine ST Device! Abort connection.");
            </block>
          </control>
        </sequence>
```

 Below is the keil log.

```
14:13:16:247 (05/03/2024) - START SEQUENCE "DebugDeviceUnlock", "calling sequence" - ID 19
14:13:16:251 (05/03/2024) - READ  AP  Access, AP 0, Addr 0x000000F8, Val 0xE00FF003, "SWD Read AP - Success" - ID 3
14:13:16:257 (05/03/2024) - READ  MEM BLOCK Access, AP 0, Start Addr 0xE00FFFE4, End Addr 0xE00FFFE7, "SWD Read Memory Block (32-bit accesses) - Success" - ID 4
  Item #0, AP 0, Addr 0xE00FFFE4, Value 0x00000040
14:13:16:261 (05/03/2024) - READ  MEM BLOCK Access, AP 0, Start Addr 0xE00FFFE8, End Addr 0xE00FFFEB, "SWD Read Memory Block (32-bit accesses) - Success" - ID 5
  Item #0, AP 0, Addr 0xE00FFFE8, Value 0x0000005C
14:13:57:001 (05/03/2024) - END SEQUENCE "InitTarget", "failed" - ID 20
```

pidr1 is 0x00000040
pidr2 is 0x0000005C

An error occurs because the following processing does not result in 0x20.

```
jep106id = ((pidr2 &amp; 0x7) &lt;&lt; 4 ) | ((pidr1 &gt;&gt; 4) &amp; 0xF);
```

What is the cause of this?
10 REPLIES 10

@STOne-32 

 

Thank you for your investigation.
I was relieved that the results were genuine.

I will check again to make sure there are no problems with the circuit or wiring, etc. as advised.