Witam,
chciałbym mieć możliwość zaobserwowania bajt po bajcie danego obszaru pamięci (dajmy na to pendrive'a, dysku, karty SD etc.). Czy istnieje jakiś prosty sposób by to zrobić? Preferowane rozwiązania dla Ubuntu, ale również propozycje dla Windowsa są mile widziane.
Bajtowy widok pamięci komputera
- miki999
- Użytkownik
- Posty: 8691
- Rejestracja: 28 lis 2007, o 18:10
- Płeć: Mężczyzna
- Lokalizacja: Gdańsk
- Podziękował: 36 razy
- Pomógł: 1001 razy
Bajtowy widok pamięci komputera
testdisk się do tego nadaje, ale jeżeli miałbym w konsoli obserwować, powiedzmy, 2 GB danych, to trochę byłoby to przyciężkie. Póki co znalazłem na Windowsa program HxD- nawet przyjemny- można dodatkowo porównywać pliki, nawigacja też jest łatwa.
Niemniej jednak byłem ciekawy, czy zapisany plik (w moim wypadku zdjęcie jpeg) na nośniku da się łatwo zlokalizować z punktu widzenia niskopoziomowego oraz czy jestem w stanie po jego znalezieniu odczytywać go bajt po bajcie.
Niemniej jednak byłem ciekawy, czy zapisany plik (w moim wypadku zdjęcie jpeg) na nośniku da się łatwo zlokalizować z punktu widzenia niskopoziomowego oraz czy jestem w stanie po jego znalezieniu odczytywać go bajt po bajcie.
Bajtowy widok pamięci komputera
To mocno zależy od systemu plików na tym urządzeniu (partycji). Większość systemów plików posiada tablicę w której jest zapisane gdzie dany plik się znajduje i inne info o nim. Dokładniej chodzi o numery bloków, jednak często przy dużych plikach jest to zrobione tak, że najpierw mamy kilka adresów bezpośrednio do danych, a potem mamy adresy pośrednie tzn. wskazywany jest blok który zawiera listę adresów do danych, przy jeszcze większych plikach potrzeba wielokrotnego pośredniczenia (w tablicy mamy adres bloku w którym są adresy do bloków z adresami). Oczywiście strasznie to uprościłem, bo możemy mieć dużo bardziej skomplikowany model w celu lepszego wykorzystania miejsca, mniejszej fragmentacji itp. itd.. Innymi słowami, żeby zrobić to tak jak chcesz musi dobrze wiedzieć jak zbudowany jest dany system plików, ale wtedy i tak ręczne zajmowanie się tym to czysty masochizmmiki999 pisze:Niemniej jednak byłem ciekawy, czy zapisany plik (w moim wypadku zdjęcie jpeg) na nośniku da się łatwo zlokalizować z punktu widzenia niskopoziomowego oraz czy jestem w stanie po jego znalezieniu odczytywać go bajt po bajcie.
Może powiesz nam co chcesz zrobisz i da się to zrobić jakoś inaczej
- miki999
- Użytkownik
- Posty: 8691
- Rejestracja: 28 lis 2007, o 18:10
- Płeć: Mężczyzna
- Lokalizacja: Gdańsk
- Podziękował: 36 razy
- Pomógł: 1001 razy
Bajtowy widok pamięci komputera
Zatem sytuacja przedstawia się tak. Na karcie SD/microSD będę miał zapisane zdjęcia jpeg- nie będzie ich dużo, dajmy na to: mniej niż 100. Będę chciał wykonywać na nich różne operacje. Będą one wykonywane nie na procesorze komputera tylko przez mikrokontroler (mała moc obliczeniowa). Niby są napisane gotowe funkcje w C, które zajmują się otwieraniem plików, ale chodzi o to, że jeżeli mam szereg operacji do wykonania, to używając gotowych funkcji cała procedura trwałaby pewnie z 5 min. Mi chodzi o to, aby zmniejszyć ten czas.
Taką kartę microSD pewnie można sformatować na różnego rodzaju formaty, więc w razie czego będę mógł wybrać taki, który jest najłatwiejszy w obsłudze.
Taką kartę microSD pewnie można sformatować na różnego rodzaju formaty, więc w razie czego będę mógł wybrać taki, który jest najłatwiejszy w obsłudze.
No właśnie tu pies pogrzebany, bo jakbym miał np. od danej komórki do danej komórki zapisany plik to nie byłoby problemów. Chociaż jakby nie patrzeć funkcje otwierające pliki też muszą jakoś zgrabnie być napisane, że jednak z tym problemów nie mają.Innymi słowami, żeby zrobić to tak jak chcesz musi dobrze wiedzieć jak zbudowany jest dany system plików, ale wtedy i tak ręczne zajmowanie się tym to czysty masochizm
- miki999
- Użytkownik
- Posty: 8691
- Rejestracja: 28 lis 2007, o 18:10
- Płeć: Mężczyzna
- Lokalizacja: Gdańsk
- Podziękował: 36 razy
- Pomógł: 1001 razy
Bajtowy widok pamięci komputera
Jeszcze tego nie zdecydowałem Póki co chciałbym się skoncentrować nad algorytmem. Sprzętową implementację zostawiam sobie na później.
Jeżeli mi się nie uda do tego w taki sposób dobrać, to pewnie będzie jakaś atmega- ze względu na ilość dostępnych materiałów dla tej rodziny.
Edit.
Oczywiście chciałem to robić bitowo/ bajtowo, ponieważ i tak większość operacji będę zapewne w ten sposób wykonywał. Między innymi będę chciał zrealizować lokalizację krawędzi/ linii i wstępnie zamierzam to zrobić bezpośrednio na jpeg-u. Zdjęcia będą stosunkowo duże (jak na możliwości mikrokontrolera), bo 640x480 pikseli w kolorze. Przy takiej liczbie punktów każdy takt zegara jest na wagę złota
Jeżeli mi się nie uda do tego w taki sposób dobrać, to pewnie będzie jakaś atmega- ze względu na ilość dostępnych materiałów dla tej rodziny.
Edit.
Oczywiście chciałem to robić bitowo/ bajtowo, ponieważ i tak większość operacji będę zapewne w ten sposób wykonywał. Między innymi będę chciał zrealizować lokalizację krawędzi/ linii i wstępnie zamierzam to zrobić bezpośrednio na jpeg-u. Zdjęcia będą stosunkowo duże (jak na możliwości mikrokontrolera), bo 640x480 pikseli w kolorze. Przy takiej liczbie punktów każdy takt zegara jest na wagę złota