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



Teraz jest 29 mar 2024, o 07:30


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 7 ] 
Autor Wiadomość
PostNapisane: 12 gru 2020, o 19:53 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 26 mar 2014
Posty: 356
Lokalizacja: Pruszków
Pomógł: 15

Witam Wszystkich

Chciałem zapytać się was czy kojarzycie jakiś poradnik Mirka lub opis w książce Mirkowej na temat korzystania z plików .hex i .bin?
Chodzi mi o jakiś opis jak takie pliki są zorganizowane wewnątrz.
Są programy typu hex edytor ale one pokazują wnętrze takiego pliku i prezentują najczęściej w HEX i z boku w kodach ASCII.
A plik binarny .bin jak ma zapisane dane ciągiem bit po bicie same 1 i 0 po kolei raczej nie bo było by bardzo dużo tych danych?

Pozdrawiam Paweł.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 12 gru 2020, o 21:02 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 31 mar 2015
Posty: 310
Pomógł: 18

Tak w ramach dyskusji bo miałem przerwę związaną z komputerem. Zapisy BIN, OCT, DEC, HEX różnią się tylko podstawą systemu liczbowego(BIN ma 2, a HEX - 16). Mikrokontroler przyjmuje tylko wartości binarne - czyli systemy liczbowe inne muszą być konwertowane na binarny. Kody ASCII mogą być magazynowane(zapamiętane w pamięci mp), ale też na potrzeby mp trzeba konwertować na binarny. Znak ASCII dla mikrokontrolera jest liczbą, a dla wizualizacji jest znakiem zgodnym z tablicą znaków. Przy przesyle szeregowym przesyła się bit po bicie 1 i 0 po kolei. Istnieje przesyłanie równoległe o organizacji 8bit i nawet 128bit w kartach dźwiękowych. Tak to rozumiem.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 12 gru 2020, o 21:50 
Offline
Moderator
Avatar użytkownika

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

P3ndz3l3k napisał(a):
A plik binarny .bin jak ma zapisane dane ciągiem bit po bicie same 1 i 0 po kolei raczej nie bo było by bardzo dużo tych danych?

Ale tu nawet jakichś poradników nie trzeba - przecież to proste jak drut ;) sam zobacz jaka jest forma plików HEX

https://pl.wikipedia.org/wiki/Intel_Hex

a plik binarny ? jest tu się nad czym zastanawiać w ogóle ? ;) toż to kolejne bajty zawartości FLASH ... chyba że nie do końca może zrozumiałem pytanie - to proszę o doprecyzowanie


Autor postu otrzymał pochwałę

_________________
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: 13 gru 2020, o 10:22 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 26 mar 2014
Posty: 356
Lokalizacja: Pruszków
Pomógł: 15

mirekk36 napisał(a):
a plik binarny ? jest tu się nad czym zastanawiać w ogóle ? ;) toż to kolejne bajty zawartości FLASH ... chyba że nie do końca może zrozumiałem pytanie - to proszę o doprecyzowanie


Jeśli chodzi o ten plik hex no to faktycznie jest konkretna struktura i to są jakieś standardy tego pliku.
Jakoś w googlach nie znalazłem tego opisu po polsku jedynie w języku angielskim być może mam inne google a bardziej prawdopodobne to to, że jestem już ślepy (starość nie radość) i nie zauważyłem.

Co do pliku binarnego czyli wewnątrz jego są ciągiem wrzucone bajty zupełnie jak w tablicy jedynie tablica w zależności od typu uint8_t czy uint32_t ma jakby wiersze o długości bajtu czy czterech bajtów.
A w pliku binarnym jest to jeden sznurek i my sami wrzucając to do bufora-tablicy dzielimy na bajty słowa itp.
Dane w tablicy uint8_t wyglądają binarnie tak:
0000 1111
1111 0000
1000 0110
0110 1110
….

A w takim pliku binarnym te same dane jw. Będą ułożone tak?:
0000 1111 1111 0000 1000 0110 0110 1110

I teraz pytanie w takim razie jaki jest układ czy jest jakiś standard bo przecież są ci Indianie
Motorola ma inaczej i Intel ma inaczej.

Czy dane zawsze zaczynają się on najmłodszego adresu do najstarszego?

I jeszcze kwestia tego czy na końcu tego pliku jest jakiś znacznik końca?

Widzisz Mirku ty co jakiś czas w poradnikach wspominasz o komunikacji binarnej a tak naprawdę jak dla mnie powinien powstać jakiś odrębny poradnik jak się posługiwać takimi plikami właśnie jak one wyglądają wewnątrz. Można by także pokazać zalety i wady w porównaniu do .hex.
Jak w locie konwertować np. takie pliki .hex na tablicę w mikrokontrolerze.
Pamiętam z twoich poradników i z forum, że nie zalecasz używania komunikacji binarnej, lepiej dane przed wysłaniem przekonwertować na ASCII bo później w procku łatwiej jest je obrobić.

Jest sporo opisów na stronach obcojęzycznych no i polskich, jednak nawet te polskie opisy są mało zrozumiałe w porównaniu do twojego sposobu przekazywania wiedzy.
Przykładowo twój poradnik o maskowaniu bitów był rewelacyjny jak i wszystkie inne poradniki.

Cały temat napisałem ponieważ potrzebowałem zaprogramować kilka różnych pamięci EEPROM z serii M24C01, C02, C04 konkretnym wsadem i znajdowałem w internecie różne pliki raz był to plik .hex a innym plik .bin.
I o ile wykorzystanie pliku .hex który jest jakimś standardem nie jest problemem to już pliki binarne nie wiadomo za bardzo jak traktować bo chyba nie jest to ustandaryzowane albo się mylę.
Po odczytaniu zawartości pamięci takiego EEPROM-a można zapisać w pliku np. bin jednak nie wiadomo jak są te dane ułożone, prawdopodobnie zależnie od autora programu.

Znając życie temat tego pliku jest banalnie prosty i po prostu dane są zapisane po kolei bajt po bajcie nieistotne czy jest to Motorola czy Intel.
Finalnie w zależności od tego jeśli potrzebujemy jakoś zinterpretować te dane z takiego pliku musimy wiedzieć dla jakiego systemu są one przeznaczone czyli właśnie Motorola czy Intel.

Pozdrawiam Paweł.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 13 gru 2020, o 11:29 
Offline
Użytkownik

Dołączył(a): 25 lip 2013
Posty: 2561
Pomógł: 126

Plik binarny w komputerze składa się z bajtów, które z kolei składają się z bitów. Mozesz plik bin ogladac w postaci HEX ale plik HEX to plik ASCII w specjalnym formacie jak podał Mirek.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 13 gru 2020, o 11:51 
Offline
Moderator
Avatar użytkownika

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

P3ndz3l3k napisał(a):
A w takim pliku binarnym te same dane jw. Będą ułożone tak?:
0000 1111 1111 0000 1000 0110 0110 1110

I teraz pytanie w takim razie jaki jest układ czy jest jakiś standard bo przecież są ci Indianie
Motorola ma inaczej i Intel ma inaczej.

Czy dane zawsze zaczynają się on najmłodszego adresu do najstarszego?

Troszkę może sam sobie tworzysz problem w głowie myśląc o tym pliku binarnym. O jakich ty tu mówisz indianach czy motorolach, albo uintach16 czy 32 ? ;) co to ma za znaczenie? No jakie ?

Zrozum plik to plik, to tak jak worek do którego wrzucasz kartofle ;) Jak masz pamięć flasch to przecież masz po kolei adresy od 0 do iluś tam ... Tu nie ma się w ogóle nawet nad czym zastanawiać ;) Wrzucasz do pliku po kolei bajty i nawet nie wiem po co ty rozpisujesz je sobie bitowo ? jakie to ma znaczenie? Po prostu pierwszy bajt w pliku to pierwszy bajt we Flasch , drugi bajt w pliku to drugi bajt we Flasch ................ i ostatni bajt w pliku to ostatni bajt we Flash :)

P3ndz3l3k napisał(a):
I jeszcze kwestia tego czy na końcu tego pliku jest jakiś znacznik końca?

eeeeś ;) a po co jakiś znacznik ? Znacznik to by był potrzebny jakbyś w pliku miał zapisanych co najmniej dwa wsady ciurkiem albo więcej - ale kto tak robi ? i po co? No ostatni bajt w pliku to ostatni kartofel w worku ;) więcej kartofli nie ma - więc po co znacznik? ;) Toż kończy się plik i koniec - nie ma więcej w nim bajtów.

P3ndz3l3k napisał(a):
Widzisz Mirku ty co jakiś czas w poradnikach wspominasz o komunikacji binarnej a tak naprawdę jak dla mnie powinien powstać jakiś odrębny poradnik jak się posługiwać takimi plikami właśnie jak one wyglądają wewnątrz. Można by także pokazać zalety i wady w porównaniu do .hex.


Tak jak pisałem wyżej - to mam nadzieję, że teraz już do końca zrozumiałeś co to jest zapis binarny w pliku ;) mówiłem oczywiście o zapisie binarnym jakiegoś wsadu z FLASH a nie ogólnie o plikach binarnych.

Poza tym nie ma żadnych zalet czy wad plików BIN i HEX ... Różnica jest w zapisie i odczycie takich plików a zawsze i tak na końcu wrzucane są do procka bajty do FLASH dokładnie tak samo jak są ułożone w BIN. Natomiast taki avrdude zanim wyśle bajty do procka do Flasch z pliku HEX to najpierw musi go zdekodować z tego sposobu jaki widziałeś na wikipedii. Krótko mówiąc plik HEX zawsze zajmuje dużo więcej miejsca na dysku niż BIN.

P3ndz3l3k napisał(a):
Jak w locie konwertować np. takie pliki .hex na tablicę w mikrokontrolerze.

Nikt tego nie robi w mikrokontrolerze panie kochany ;) to robi się już na PC i podałem ci wyżej przykład żebyś lepiej jakby zrozumiał w czym rzecz. W naszym przypadku robi to AVRDUDE, albo mój program MkBootloader itp ;)

P3ndz3l3k napisał(a):
Pamiętam z twoich poradników i z forum, że nie zalecasz używania komunikacji binarnej, lepiej dane przed wysłaniem przekonwertować na ASCII bo później w procku łatwiej jest je obrobić.

Panie kochany - panie kochany - właśnie może dlatego, że troszkę mieszasz pojęcia to stąd te pytania - ale dobrze - o to CHODZI! Warto zrozumieć pewne zagadnienia do końca a zatem

PRZEDE WSZYSTKIM jak mówię w poradnikach o komunikacji binarnej i ASCII to proszę - zrozum i zapamiętaj że chodzi tu zawsze o komunikację za pomocą różnych magistral jak UART/RS232/I2C/ SPI itp ..... Chodzi o transfer danych, różnych ilości danych ....

A ty sobie włączyłeś w to nagle pliki BIN i HEX które rozpatrujemy jako wsady do procków i są one w mega prosty sposób obsługiwane przez różnego rodzaju oprogramowanie na PC a nie w prockach. Tzn plik BIN prościej się obsługuje bo programowo np taki MkBootloader bierze sobie po kolei bajty od początku do końca pliku, a w przypadku HEX musi sobie najpierw rozkodować zapis HEX żeby mieć po kolei wartości tych bajtów do wrzucenia do procka ;)

P3ndz3l3k napisał(a):
Jest sporo opisów na stronach obcojęzycznych no i polskich, jednak nawet te polskie opisy są mało zrozumiałe w porównaniu do twojego sposobu przekazywania wiedzy.
Przykładowo twój poradnik o maskowaniu bitów był rewelacyjny jak i wszystkie inne poradniki.

Dziękuję - ale zobacz że tu to już chodzi bardziej o programowanie na PC i przyznam że troszkę tych tematów już liznąłem w poradnikach o Delphi ;) wprawdzie pokazywałem tylko prostą obsługę plików tekstowych (ASCII) właśnie ;) ale tu tak samo - łatwiej się obsługuje na PC pliki tekstowe niż binarne jak chodzi o manipulacje na tych plikach czyli ich zapis/odczyt czy przeszukiwanie plików.

Oczywiście z plikami też możemy mieć do czynienia na prockach - no ale to np wtedy gdy korzystamy z karty pamięci SD ... choć nie tylko, bo co za problem, przesłać jakiś plik z PC i zapisać go w pamięci RAM czy FLASCH procka - np jakąś grafikę do wyświetlacza czy dowolne inne rzeczy.

P3ndz3l3k napisał(a):
I o ile wykorzystanie pliku .hex który jest jakimś standardem nie jest problemem to już pliki binarne nie wiadomo za bardzo jak traktować bo chyba nie jest to ustandaryzowane albo się mylę.

Mam nadzieję, że po moim opisie już wiesz że tu nie ma żadnych standardów dla takich wsadów bo są niepotrzebne po prostu ;) przypominam hasłowo "bajty w pliku są jak kartofle w worku" tyle że bajty są ułożone po kolei ;) i to wszystko - tu w ogóle ale to w ogóle nie ma się nad czym zastanawiać.

P3ndz3l3k napisał(a):
Po odczytaniu zawartości pamięci takiego EEPROM-a można zapisać w pliku np. bin jednak nie wiadomo jak są te dane ułożone, prawdopodobnie zależnie od autora programu.

Nie - są ułożone ZAWSZE tak samo czyli pierwszy bajt wsadu to pierwszy bajt w pamięci, drugi bajt wsadu BIN to drugi bajt pamięci i tak dalej aż do ostatniego - no mam nadzieję, że teraz to WIDZISZ już ;)

P3ndz3l3k napisał(a):
nając życie temat tego pliku jest banalnie prosty i po prostu dane są zapisane po kolei bajt po bajcie nieistotne czy jest to Motorola czy Intel.

jaaaaaa ;) no to po co ja się tyle rozpisałem a ty po co zadałeś tyle pytań odnośnie BIN skoro wiesz jak jest :lol:

P3ndz3l3k napisał(a):
Finalnie w zależności od tego jeśli potrzebujemy jakoś zinterpretować te dane z takiego pliku musimy wiedzieć dla jakiego systemu są one przeznaczone czyli właśnie Motorola czy Intel.

Nie w przypadku BIN nie jest ważny żaden system - żadna motorola czy intel - pamiętaj kartofle - worek ;) Na dnie worka masz adresy zerowe na górze worka końcowe adresy pamięci flash :lol:


Autor postu otrzymał pochwałę

_________________
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: 13 gru 2020, o 20:09 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 31 mar 2015
Posty: 310
Pomógł: 18

Dodam jeszcze takie moje przemyślenie. Wszystkie maszyny cyfrowe pracują na podstawie kodu maszynowego, ale w natłoku wiedzy o tym zapominamy. Kod maszynowy jest to algorytm poleceń i danych występujących po sobie w systemie liczbowym binarnym. ASM, Pascal, C, C++, ... są tylko nakładkami i ich zadaniem jest utworzenie kodu maszynowego zrozumiałego dla maszyny cyfrowej.
Plik .bin już jest takim kodem maszynowym.



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: 7 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 12 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