Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki



Teraz jest 5 wrz 2025, o 00:11


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 25 ] 
Autor Wiadomość
PostNapisane: 27 gru 2013, o 02:50 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 01 lis 2011
Posty: 266
Lokalizacja: Szczecin
Pomógł: 9

Witam,

Czy w programie można w jakiś sposób odczytać sygnaturę procesora? Chciałbym odczytać sygnaturę uP, czyli np numer 1E960A, następnie wykorzystać to w programie jako "MAC" danego sterownika.

Za wszystkie informację z góry dziękuję :)

_________________
www.gryfsmart.pl



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 27 gru 2013, o 06:00 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27425
Lokalizacja: Szczecin
Pomógł: 1044

Nie pamiętam teraz wprawdzie czy da się to zrobić programowo no ale takie pytanie się rodzi .... skoro chcesz użyć tego jako swego rodzaju MAC'a to co zrobisz gdy będzie kilka sterowników z takim samym prockiem ? przecież będą miały dokładnie te same sygnatury ? :(

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 27 gru 2013, o 10:08 
Offline
Użytkownik

Dołączył(a): 25 lip 2013
Posty: 2599
Pomógł: 129

Albo dac to jako stala preprocesora, ktora bedzie pobierała 'milisy' (jesli sie tak da zrobic) - aktualny date i czas wlacznie z milisekundami. Niestety bedzie sie to wiazalo z osobna kompilacja dla kazdego sterownika.
Poza tym programatory (np. Beeprog, Labtool i inne) maja mozliwosc 'serializacji' - czyli automatycznego nadawania numerow seryjnych. Sciagnij wersje demo z elnec.com to sobie popatrzysz :)

Sent from my mobile.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 27 gru 2013, o 10:10 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 23 sie 2013
Posty: 199
Pomógł: 1

na stronie 227 ds atmega 8 jest
pokazane jak odczytać "signature byte"
wg dokumentacji ds atmela nalezy odczytac np dla m8
3 bajty
For the ATmega8 the signature bytes are:
1. 0x000: 0x1E (indicates manufactured by Atmel)
2. 0x001: 0x93 (indicates 8KB Flash memory)
3. 0x002: 0x07 (indicates ATmega8 device)

a wiec
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


ps. do przedm. po co piszecie o jakiś czasach itp. jak autor pisał jak odczytac sygnature ?
skoro nie wiecie do czego mu to potrzebne .

Moze che sie zabezpieczyc czy ktos mu w urzadzeniu nie podmieni m8 na inna z tej samej rodziny ?? !


Autor postu otrzymał pochwałę


Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 27 gru 2013, o 10:47 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 01 lis 2011
Posty: 266
Lokalizacja: Szczecin
Pomógł: 9

Dzięki DominikN za podpowiedz! :) Ale mój pomysł i tak uległ w gruzach- dzięki podpowiedzi Mirka :D . Myślałem, że każdy procek ma inną sygnaturę (każdy procek tego samego typu). Ale kompletnie bez sensu mi się to wydawało. Mi chodziło, aby jak najmniejszym i najłatwiejszym kosztem uzyskać rożne numery (MAC) sterownika. Tak na szybko pomyślałem sobie, że odczyt sygnatury byłby najprostszy. Ale się nie zastanowiłem, że dla wszystkich procków tego samego typu będzie ona taka sama- tak jak podkreśliliście to wyżej.

Chodziło mi o to aby przy kompilacji za każdym razem nie zmieniać tego numeru ręcznie. Aby był on tworzony dynamicznie i nigdy się nie powtórzył. Aktualnie robię tak jak mówi squeez.

Fajny pomysł nasunął mi micky jak by w takim adresie MAC była zaszyta godzina i data kompilacji. Wówczas oprócz tego, że będzie to unikalny adres MAC to będę posiadał w nim informację kiedy dany wsad wgrywałem do procesora.
Tylko na razie nie wiem jak to zrobić :) ...i czy w ogóle tak się da zrobić :)

Dzięki za podpowiedzi :)

_________________
www.gryfsmart.pl



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 27 gru 2013, o 11:25 
Offline
Użytkownik

Dołączył(a): 20 wrz 2013
Posty: 647
Zbananowany użytkownik

Pomógł: 101

Może przydadzą ci się makra preprocesora __DATE__ i __TIME__ albo __TIMESTAMP__
http://gcc.gnu.org/onlinedocs/cpp/Stand ... acros.html

_________________
+++++[>++++<-]>[>++++++<-]>.---------.+++.



Ostatnio edytowano 27 gru 2013, o 11:45 przez xor, łącznie edytowano 1 raz

Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 27 gru 2013, o 11:39 
Offline
Użytkownik

Dołączył(a): 25 lip 2013
Posty: 2599
Pomógł: 129

DominikN-kolega przeciez pisal ze chodzi mu o MAC'a.
Co do generowania daty i czasu to mozesz dodatkowo zaszyc numer wersji softu :) sposobów jest wiele. Mozesz np. wygenerowac plik zewnetrzny z ktorego bedziesz pobieral dane i doklejal je do wczesniej skompilowanego hexa. Tworzac plik wsadowy bat bedziesz mogl w ten sposob tworzyc swoja serializacje :)

Sent from my mobile.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 27 gru 2013, o 12:24 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 01 lis 2011
Posty: 266
Lokalizacja: Szczecin
Pomógł: 9

xor, ciekawy link- dzieki :) Wieczorem pobawie się tym.

micky napisał(a):
Mozesz np. wygenerowac plik zewnetrzny z ktorego bedziesz pobieral dane i doklejal je do wczesniej skompilowanego hexa. Tworzac plik wsadowy bat bedziesz mogl w ten sposob tworzyc swoja serializacje :)


Za bardzo nie rozumie, mógłbyś to torchę rozszerzyć?

Dobrze to zrozumiałem??

Mając gotowego hex można coś do niego doklejać i wysyłać do procka? Czyli bym musiał napisać jakiś skrypt który by modyfikował *.hex

Bym musiał znaleźć ciąg znaków, który odpowiada stałej w programie MAC i go dynamicznie z jakiegoś skryptu podmieniać i wgrywać później ten wsad do procka?

Otworzyłem plik *.hex do edycji i same dzine cyferki, ale wygląda, że są to znaki ASCII :)

Czyli bym musiał znaleźć ciąg znaków odpowiedzialny za zmienną za MAC i jakoś go podmieniać?

Ale ten plik *.hex też jest jakoś kodowany?

------------------------ [ Dodano po: 3 minutach ]

Mi chodzi o to aby każdy sterownik miał inny adres MAC. Obecnie robię to osobno, ręcznie przy każdej kompilacji. Ale jest to dość uciążliwe. Rozwiązanie, że może to odbywać się w sposób dynamiczny było by super. Jak jeszcze w takim adresie była by zaszyta wersja sterownika oraz data kompilacji to pełen wypas :D

_________________
www.gryfsmart.pl



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 27 gru 2013, o 14:18 
Offline
Użytkownik

Dołączył(a): 25 lip 2013
Posty: 2599
Pomógł: 129

Zarys koncepcji mam :)
O formacie hexa poczytaj sobie u wujka google'a.

Zalezy gdzie chcesz trzymac MACa?
Jesli w eepromie to tworzysz skrypt/prosty programik c na PC/lub nawet arkusz w ktorym bedziesz mial zbior linii ktore chcesz wciskac do procka (lub ktory nawet bedzie sam to sobie generowal). Nastepnie parsujesz te linie i konwertujesz z bina na hexa (chyba, ze avrdude przyjmuje binarki) Avrdude podajesz odpowiedni wsad plus wsad eepromowy. Zamykasz to w pliku .bat dodajesz pause w środku petli i masz polautomat :)

Jeśli chcesz trzymac te dane we flashu to ja bym albo dokladal kawalek swojego hexa do 'naglowka' zawierajacego Twoj program i dopiero taka kompilacja bym programowal lub masz wsad w bin, dodajesz swoj kawałeczek i wtedy programujesz (ew. konwertujac do hexa, jesli avrdude nie przyjmuje binarek)
Hex jest o tyle wygodny, ze zawarte w nim bajty moga miec 'dziury' adresowe - tzn. plik hex moze omijac niektore grupy adresowe (np. masz zawarty w nim wsad od 0x0 do 0xfff a nastepnie np. od 0x1200 do 0x121f).

Sent from my mobile.

P. S. Sprawdzilem i Avrdude obsluguje raw bin :)
P. S.2 Popatrz na immediate mode :) w avrdude


Autor postu otrzymał pochwałę


Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 27 gru 2013, o 14:43 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 01 lis 2011
Posty: 266
Lokalizacja: Szczecin
Pomógł: 9

micky, dzięki za radę ale wydaje mi się trochę skomplikowane, jak dla mnie :) Ale u wujka google doczytam o formacie hex, może coś z tego wyjdzie :)

Ale chyba szybszym i łatwiejszym rozwiązaniem było by skorzystanie z makra preprocesora __DATE__ i __TIME__ albo __TIMESTAMP__ (jak polecał xor) i przy pierwszym starcie wpisanie ich wartości do EEPROM. Wówczas taki adres MAC, by zawierał informację - data pierwszego odpalenia.

_________________
www.gryfsmart.pl



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 27 gru 2013, o 14:50 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 23 sie 2013
Posty: 199
Pomógł: 1

sa edytory eeprom gdzie możesz z 'reki' wpisac jakies dane , do tego jakies szyfrowanie aes i miód



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 27 gru 2013, o 15:11 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27425
Lokalizacja: Szczecin
Pomógł: 1044

IUVOit napisał(a):
i przy pierwszym starcie wpisanie ich wartości do EEPROM.


No to pomyśl - skoro przy starcie (pierwszym) wpisanie do EEPROM .... to rozumiem że z FLASH ... a zatem skoro będziesz miał to we Flash - to po co ci przepisywać to do EEPROM ? ... który na dodatek jest mniej pewny niż Flash ?

to tylko taka mała sugestia-podpowiedź

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 27 gru 2013, o 15:25 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 01 lis 2011
Posty: 266
Lokalizacja: Szczecin
Pomógł: 9

O co innego mi chodzi :)

W EEPROM mam strukturę => OpisSterownika{IP,MAC,TypSterownika}

Przy pierwszym wgraniu hex'a MAC ma wartość np FFFFF;

Przy podaniu napięcia będę sprawdzał, czy MAC==FFFFF, jeżeli tak to wpisuje do niego wartość która jest zależna od __DATE__ i __TIME__ __TIMESTAMP__

No i podstawiam MAC=funcja (__DATE__, __TIME__, __TIMESTAMP__);

Przy kolejnym odpaleniu sterownika zmienna MAC, będzie miała wartość inną niż FFFFF;

Jeżeli by tak było bym miał wszystko w 100% zautomatyzowane i każdy adres MAC miałby inną wartość i w jakiś sposób bym mógł zakodować kiedy sterownik był wykonany.

------------------------ [ Dodano po: 18 minutach ]

xor napisał(a):
Może przydadzą ci się makra preprocesora __DATE__ i __TIME__ albo __TIMESTAMP__
http://gcc.gnu.org/onlinedocs/cpp/Stand ... acros.html


Chyba znowu źle myśle, ponieważ te makra są ustawiane na etapie pierwszej kompilacji. Czyli są na sztywno zapisane w pliku hex :/ Nie wiem dlaczego wymyśliłem sobie, że są one uzupełniane podczas pierwszego startu.

Czyli pozostaje grzebanie w plku *.hex

_________________
www.gryfsmart.pl



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 27 gru 2013, o 16:28 
Offline
Użytkownik

Dołączył(a): 25 lip 2013
Posty: 2599
Pomógł: 129

No wlasnie dlatego sugerowalem swoje rozwiazanie :)
Ty musisz kodowac MACa w swoim flashu/eepromie podczas flashowania procka. Lub flashowac na stale stala wartoscia a potem programowac osobno i tylko eeproma z MACiem

Sent from my mobile.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 27 gru 2013, o 17:03 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 01 lis 2011
Posty: 266
Lokalizacja: Szczecin
Pomógł: 9

Masz racje :D Ale to będzie trochę zabawy :D
Dzięki :)

_________________
www.gryfsmart.pl



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 27 gru 2013, o 17:07 
Offline
Użytkownik

Dołączył(a): 25 lip 2013
Posty: 2599
Pomógł: 129

Jest ryzyko jest przyjemność ;) powodzenia. Pamiętaj, ze sa tez programiki z linii komend hex2bin i bin2hex :)

Sent from my mobile.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 27 gru 2013, o 20:53 
Offline
Użytkownik

Dołączył(a): 25 lip 2013
Posty: 2599
Pomógł: 129

A widze, ze kolega z tego samego miasta jest co ja, wiec mozna temat przedyskutować na tucznika tzn na żywca ;)

Sent from my mobile.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 27 gru 2013, o 23:19 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 01 lis 2011
Posty: 266
Lokalizacja: Szczecin
Pomógł: 9

Fajnie :D Jak nie będzie mi wychodziło, będę wiedział do kogo się zwrócić :D Jak nie będziemy dawali rady, to do Mirka się na tucznika wybierzemy, tez nasz sasiad ;)

_________________
www.gryfsmart.pl



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 28 gru 2013, o 01:01 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 23 wrz 2013
Posty: 58
Zbananowany użytkownik

Pomógł: 10

Tak na szybkiego mam taką oto koncepcję dla kolegi do zaoferowania program który wplata w adres MAC dzień, miesiąc, rok (od 2000 do 2127), wersję oprogramowania w formacie XX.XX max 15.15
Jeżeli koledze się spodoba to dorobi się podmiankę w pliku hex :)

W załączniku wstępny zarys


Załączniki:

Aby zobaczyć załączniki musisz się zalogować. Tylko zalogowani użytkownicy mogą oglądać i pobierać załączniki.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 28 gru 2013, o 15:05 
Offline
Użytkownik

Dołączył(a): 20 wrz 2013
Posty: 647
Zbananowany użytkownik

Pomógł: 101

Tobie chodzi o to żeby przygotować jakiś tam wsad a potem wgrać go do większej ilości procków nadając przy tej okazji unikalny numer i ewentualnie godzinę wgrania?
W tej książce http://ebookpoint.pl/ksiazki/jezyk-c-dl ... m#format/e (na wersję ebokową jest właśnie spora promocja) jest opisana technika, która być może Cię zainteresuje. Polega ona na tym, że w programie definiuje się zmienną z atrybutem
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
, dzięki czemu zostaje umiejscowiona w określonym, zawsze tym samym obszarze pamięci (dla danego typu procka). Znając adres zmiennej za pomocą programu
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
modyfikuje się plik HEX, podmieniając wartość tej zmiennej na swoją. Wygenerowanie daty i unikalnego numeru nie jest większym problemem (przynajmniej na linuksie). Oskryptowanie tego też nie wygląda na skomplikowane (jw ;-)) - wygląda na to, że można to podać programowi jako zwykly łańcuch tekstowy bez bawienia się plikami binarnymi. Tu jest opisanych kilka przykładów wykorzystania programu: http://srecord.sourceforge.net/man/man1 ... mples.html

_________________
+++++[>++++<-]>[>++++++<-]>.---------.+++.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 28 gru 2013, o 15:43 
Offline
Uzytkownik zasłużony dla forum.atnel.pl
Avatar użytkownika

Dołączył(a): 16 lip 2012
Posty: 2088
Lokalizacja: Leżajsk / Kraków
Pomógł: 411

MAC powinien być unikalny w sieci. Może scalak z unikalnym MAC adresem się nada np. AT24MAC402

_________________
Dragonus Cracovus: Biomagia



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 28 gru 2013, o 17:43 
Offline
Użytkownik

Dołączył(a): 25 lip 2013
Posty: 2599
Pomógł: 129

Jesli mamy tylko wygenerowac niepowtarzalny numer to w mozna tez podpiac dallaska 1wire i bedziesz mial pomiar temperatury pcb :)

Sent from my mobile.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 19 lut 2014, o 18:37 
Offline
Użytkownik

Dołączył(a): 26 mar 2012
Posty: 26
Pomógł: 0

Ze swojej strony dodam inny pomysł. Każdy element 1wire ma swój unikalny numer seryjny. Po resecie możemy odczytać dla przykładu DS18B20 i numer podstawić do MAC..



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 19 lut 2014, o 19:02 
Offline
Użytkownik

Dołączył(a): 25 lip 2013
Posty: 2599
Pomógł: 129

To właśnie miałem na myśli :)

Sent from my mobile.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 21 lut 2014, o 20:03 
Offline
Użytkownik

Dołączył(a): 26 mar 2012
Posty: 26
Pomógł: 0

:oops: No tak pomysł oryginalny ale opisany post wyżej.. Trzeba czytać wszystkie odpowiedzi zanim się odpowiada ;)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
Wyświetl posty nie starsze niż:  Sortuj wg  
Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 25 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 0 gości


Nie możesz rozpoczynać nowych wątków
Nie możesz odpowiadać w wątkach
Nie możesz edytować swoich postów
Nie możesz usuwać swoich postów
Nie możesz dodawać załączników

Szukaj:
Skocz do:  
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO