Skocz do zawartości

STM32F103 unikatowy numer ID


Greg974

Pomocna odpowiedź

Witam wszystkich serdecznie

Dostałem do naprawy sterownik oparty o układ STM32F103R8T6 , który okazał się uszkodzony. Po wymianie na nowy i zaprogramowaniu softem z innego sterownika wszystko działa poza jedną rzeczą . Otóż  każdy z tych sterowników ma swój unikalny nr seryjny w tej chwili nr seryjny naprawianego sterownika to same FFFFF(24 szt.) Moje pytanie jest następujące czy jest w tym procesorze  przestrzeń gdzie można taki nr zaprogramować , czym i jak to zrobić ?Mój programator niestety nie ma takiej opcji

p.s  W pdfie w rozdziale 30.2  jest informacja że jest w tym układzie  rejestr 96 bitowy w którym taki nr można wpisać natomiast nie ma informacji jak to zrobić czy to oznacza że ten nr jest programowany przez producenta układu i można go tylko odczytać??

Pozdrawiam  Greg

Edytowano przez Greg974
Link do komentarza
Share on other sites

Dnia 12.06.2021 o 10:18, Greg974 napisał:

czy to oznacza że ten nr jest programowany przez producenta układu i można go tylko odczytać??

Dokladnie tak. W Twoim przypadku numer seryjny jest najprawdopodobniej zapisany gdzies we flashu, najpewniej pod koniec, ale tak na prawde moze byc gdziekolwiek.

Link do komentarza
Share on other sites

9 minut temu, H1M4W4R1 napisał:

No super, ale:

Dnia 12.06.2021 o 10:18, Greg974 napisał:

W pdfie w rozdziale 30.2  jest informacja że jest w tym układzie 

To juz sobie autor sam znalazl. 😉

Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

51 minut temu, kaworu napisał:

To juz sobie autor sam znalazl.

Jak już coś znalazł, to mógłby podać link, co by potem inni nie szukali co miał na myśli. [sarkazm] Może patrzył na dokumentację ATMegi i napisał, że jest w PDF'ie? [/sarkazm]

Link do komentarza
Share on other sites

Witam

Sorry za brak linka . Ale skoro rozmawiamy o konkretnym układzie tj STM32F103R8T6 to wydawało mi się  , że wszyscy będą wiedzieli że to  nie chodzi o Atmege 😛 Nie będę się tu silił na sarkazmy  bo to niczego nie rozwiązuje takie forum już jest po co powielać złe praktyki :)  Dokładnie przeglądałem właśnie stronę 1077 w linku który podał H1M4W4R1. We flashu jest tylko program bo jak pisałem wyżej zgrałem soft z innego sterownika i wszystko działa tylko brak jest konkretnego nr seryjnego . Akurat w tym konkretnym przypadku nr seryjny złożony z samych FF jest całkiem porządnym nr i nie wpływa na pracę całości układu złożonego z kilku sterowników natomiast problem może pojawić się gdy padnie procesor w innym sterowniku wtedy pojawi się konflikt . Poza tym po prostu chciałem zgłębić problem czy te 96 bitów można we własnym zakresie jakoś nadpisać i czym to zrobić

pozdrawiam

 

Link do komentarza
Share on other sites

40 minut temu, Greg974 napisał:

Sorry za brak linka . Ale skoro rozmawiamy o konkretnym układzie tj STM32F103R8T6 to wydawało mi się  , że wszyscy będą wiedzieli że to  nie chodzi o Atmege

Tyle dziwactw już widziałem, że nawet by mnie to nie zaskoczyło...

Ale, że sterownik ma numer seryjny n'h(FF) czy unique ID ma FF. Jakbyś podesłał zdjęcie płytki i zgrany wsad, to może coś więcej by dało radę wykombinować 😉 (np. przeanalizować kod maszynowy by sprawdzić gdzie sterownik szuka numeru seryjnego).

Link do komentarza
Share on other sites

1 godzinę temu, Greg974 napisał:

Poza tym po prostu chciałem zgłębić problem czy te 96 bitów można we własnym zakresie jakoś nadpisać i czym to zrobić

Nie można, to jest na stałe wyryte w krzemie na etapie produkcji. A ten Twój numer seryjny jest na 95% we flashu, albo na końcu "legalnej" pamieci, albo w "nielegalnej", bo STM32F103R8 ma tak na prawdę 128k flasha.

Link do komentarza
Share on other sites

Gdyby był we flashu to powinien przyjąć nr seryjny sterownika z ktorego zgrałem program a tak się nie stało . czyż nie ?? Nie ma tam też żadnej zew. pamięci  dlatego zacząłem się zastanawiać gdzie może być jeszcze taki numer seryjny zapisany. A na pewno jest w procesorze bo podmiana ukladu ze sprawnego sterownika powoduje przeniesienie nr ser. do tego sterownika w którym procesor został zamontowany. Natomiast nowy procesor który udało mi się dostać (a nie jest to w tej chwili prosta sprawa) i do ktorego wgrałem soft ze sprawnego sterownika  najwyraźniej nie ma przypisanego żadnego nr seryjnego bo Master widzi DEVICE ID jako FFFFF... To jest grupa sterowników firmy distech modelu w tej chwili nie pamiętam a nie ma mnie w warsztacie ale jak wrócę to uzupełnię 

 

Link do komentarza
Share on other sites

Przed chwilą, Greg974 napisał:

Gdyby był we flashu to powinien przyjąć nr seryjny sterownika z ktorego zgrałem program a tak się nie stało . czyż nie ??

Mógł, nie musiał. Mogłeś skupować tylko obszar faktycznego kodu z pominięciem końca "legalnego" obszaru. Albo skopiować po prostu cały flash "legalny". Ale każdy normalny programator skopiuje wtedy tylko 64k zgodnie ze specyfikacja, a ten CPU ma 128k tak na prawdę.

 

Link do komentarza
Share on other sites

Jeśli mogę coś poradzić to przeczytaj artykuł na stronie

http://www.edwinfairchild.com/2019/03/stm32-tips-unique-device-id-flash-size.html

W tym artykule na szczególną uwagę zasługuje następujący fragment artykułu

96-bit Unique Device ID

The following magic number we will extract is a 96-bit unique device ID. According to the datasheet "this unique device identifier provides a reference number which is unique for any device in any context. These bits can never be changed by the user".

Further more the datasheet states:
The unique device identifier is ideally suited:

    for use as serial numbers
    for use as security keys in order to increase the security of code in Flash memory while using and combining this unique ID with software cryptographic primitives and protocols before programming the internal Flash memory
    to activate secure boot processes, etc.

The number is spread across three 32-bit registers. Each byte and sometimes word telling us something different about the chip.

co w tłumaczeniu mniej więcej brzmi następująco

Następną magiczną liczbą, którą wyodrębnimy jest 96-bitowy unikalny identyfikator urządzenia. Zgodnie z datasheetem "ten unikalny identyfikator urządzenia zapewnia numer referencyjny, który jest unikalny dla każdego urządzenia w dowolnym kontekście. Bity te nie mogą być nigdy zmienione przez użytkownika".

Dalej w arkuszu danych stwierdza się:
Unikalny identyfikator urządzenia idealnie nadaje się:

    >do stosowania jako numery seryjne
   > do stosowania jako klucze bezpieczeństwa w celu zwiększenia bezpieczeństwa kodu w pamięci Flash podczas używania i łączenia tego unikalnego identyfikatora z prymitywami kryptograficznymi i protokołami oprogramowania przed zaprogramowaniem wewnętrznej pamięci Flash
   > do aktywacji bezpiecznych procesów rozruchowych itp.

Numer ten jest rozłożony na trzy 32-bitowe rejestry. Każdy bajt, a czasem słowo, mówi nam coś innego o chipie.

 

 

 

Link do komentarza
Share on other sites

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.