Bajtowy widok pamięci komputera

Awatar użytkownika
miki999
Użytkownik
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

Post autor: miki999 »

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.
Awatar użytkownika
nythrow
Użytkownik
Użytkownik
Posty: 64
Rejestracja: 16 lut 2012, o 12:52
Płeć: Mężczyzna
Lokalizacja: /dev/null
Podziękował: 3 razy
Pomógł: 9 razy

Bajtowy widok pamięci komputera

Post autor: nythrow »

Może testdisk?
Awatar użytkownika
miki999
Użytkownik
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

Post autor: miki999 »

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.
abc666

Bajtowy widok pamięci komputera

Post autor: abc666 »

miki999 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.
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 masochizm

Może powiesz nam co chcesz zrobisz i da się to zrobić jakoś inaczej
Awatar użytkownika
miki999
Użytkownik
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

Post autor: miki999 »

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.
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
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ą.
abc666

Bajtowy widok pamięci komputera

Post autor: abc666 »

A jaki to mikrokontroler?
Awatar użytkownika
miki999
Użytkownik
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

Post autor: miki999 »

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
ODPOWIEDZ