PasjaGSM.pl
  Jesteś w: Forum > Modifikacja softu w programie


Modifikacja softu w programie

Forum.PasjaGSM.pl » ...:Sprzęt:... » Nokia » DCT-3 » [DCT3] Modyfikacje HW i SW » NokiX » Programowanie » Modifikacja softu w programie
Poprzedni temat «» Następny temat
Autor Wiadomość
 
cieszak 
Starszy Użytkownik
100% Cieszaka



Telefon: HTC HD7
Operator: Orange
Pomógł: 17 razy
Wiek: 32
Dołączył: 01 Mar 2005
Posty: 247
Skąd: Olsztyn
Wysłany: 2006-08-27, 14:27   Modifikacja softu w programie

Witam

UWAGA: to nie jest artykuł, a tylko prośba o takowy (jakoś mi taki długi post wyszedł :) )

Ostatnio mdawidm mnie zapytał o możliwość modyfikacji softu w telefonie przez program (mniej więcej o to mu chodziło :) ). Pogrzebałem troche w źródłach filesystem'u i znalazłem funkcję flash_write.

Skopiowałem sobie flash_hw.c do folderu aplikacji, usunąłem z niego to co związane z tfs'em i zlinkowałem:
Kod:
#link_object -c link main flash_hw


W aplikacji zadeklarowałem funkcję:
Kod:
unsigned char flash_write ( void *dest, void *src, unsigned int length );

i próbuję coś zapisać:
Kod:
static void redraw_screen(void)
{
   char test[]="TEST, COS PRZECIE TRZEBA ROBIC :D";
   flash_write((unsigned char *)0x210000, test, sizeof(test));
   freegfx_begin(true);
   own_print_string("written", 0, 6, own_get_font("small/bold"), DM_SET);
   freegfx_end(false);
}


Później doszedłem do tego że to jest tylko dla telefonów które nie mają wbudowanych funkcji flashujących i próbowałem dalej i znalazłem funkcję flash_write_bytes (poniższy kod z filesystem.nrx):
Kod:
base=x2d(200000) /* FLASH chip base address */

findb locate("task_0")
getb rc; task0=rc
getword task0+4
(...)
 /* get the flash_write_bytes() function pointer */
 findbl init; findbl rc+4
 getbl rc; flash_write_bytes=rc
 call value "tfs/flash_write_bytes",flash_write_bytes,pool
 if vb>0 then say "flash_write_bytes: 0x"d2x(flash_write_bytes)
(...)
 /* insert wrappers for system flashing routines */
 /* #link_object flash_sys chyba nie potrzebne */
end

tylko że ona
Kod:
flash_write_bytes((void *)0x210000, test, sizeof(test));
też mi nie zadziałała :(

I na tym pomysły mi się skończyły. Jak w końcu można coś do flasha zapisać?

Pozdrawiam
Cieszak
_________________
http://cieszak.eu
CrystalCode Studio - aplikacje, strony www, urządzenia elektroniczne, pomoc techniczna, konsultacje
^
 
 
  Skype
     
AdSense


mdawidm 
Expert
VIP



Telefon: only 33x0
Operator: Orange
Pomógł: 76 razy
Wiek: 30
Dołączył: 04 Lut 2005
Posty: 2142
Skąd: Środa Wlkp.
Wysłany: 2006-08-27, 15:29   

Ogolnie to chodzi mi o podmiane odpowiedniego fragmentu flasha :)
Dzieki temu moznaby bylo zrobic duzo skryptow np. skrypt zmieniający wielkość czcionki za pomocą menu itp. Zmieniałby odpowiednie fragmenty flasha na inne i z powrotem :]
Pomysłów miałbym nprawdę duzo ;-)
_________________
http://mdawidm.infonokia.pl/
^
 
 
     
yak 
Starszyzna



Telefon: Kilka DCT3
Operator: Vodafone
Pomógł: 20 razy
Wiek: 37
Dołączył: 21 Gru 2004
Posty: 774
Skąd: Bochum / Niemcy
Wysłany: 2006-08-27, 17:38   

Po kolei, po pierwsze nie można sobie ot tak o zapisywać danych do flasha:

1. W pamięci można zmienić dowolny bit o wartości 1 na bit o wartości 0.
2. Bity 0 można zmienić na 1 ale tylko grupowo, najczęściej w blokach o wielkości 64KB.

Tak więc dane zapisanie funkcją flash_write_bytes() będą tylko czyścić bity które we flashu były jedynkami a ktore w zapisywanych danych sa zerami.

Po drugie funkcja ta chyba we wszyskich modelach ma ograniczenia pozwalające zapisywać tylko w obszarze EEPROM i PMM. Takie zabezpieczenie Nokii przed samym sobą :-)... albo przed nami :-)

Tak więc po pierwsze trzebaby wyłączyć te ograniczniki.

Po drugie z powodu zasady działania flash-a, normalne zapisanie kilku bajtów oznacza konieczność przepisania gdzieś (najprościej do RAMu) całego bloku w którym się znajdują, zmienienia danych w RAMie i przepisania z powrotem do flasha uprzednio oczywiście kasując cały blok (aby cały był FFFFF... a więc 111111).

W praktyce na Nokii 3310 mamy w najlepszym wypadku 37KB wolnej pamięci RAM a więc za mało na jeden blok flasha.

Istnieje jednak wyjście. Można wykorzystać to co obecnie wykorzystuje mój system plików. Chodzi o blok EEPROMu. Nie będę tłumaczył tu jak działa emulacja EEPROMu Nokii, wiedzcie, że działa to na dwóch blokach flasha - każdy po 64KB. Ważną dla nas cechą jest to, że zawsze jeden z tych bloków jest wolny, nieużywany.

Należałoby więc wyczyścić go, przepisać do niego blok, który chcemy zmienić, wyczyścić ten blok po czym przepisać dane z powrotem przy okazji zmieniając bajty które chcemy zmienić.

Na podobnej zasadzie działa defragmentacja systemu plików. Po formatowaniu cały jego obszar to jedynki. Następnie dane zapisywane są jedne za drugimi. Usunięcie pliku oznacza tylko ustawienie w jego nagłówku jednego z bitów z 1 na 0. Fizycznie plik zostaje. Po osiągnięciu końca obszaru odpalana jest defragmentacja. Korzystając z wolnego bloku EEPROMu przepisuje ona pliki z pominięciem usuniętych. W ten sposób na końcu tworzy się wolne miejsce w które można zapisywać nowe pliki.

Tak więc generalnie jak widzicie programowa zmiana flasha jest możliwa ale nie taka prosta jak możnaby chcieć.
_________________
NokiX Ci się podoba? Kliknij i wyraź to!
^
 
 
 
     
cieszak 
Starszy Użytkownik
100% Cieszaka



Telefon: HTC HD7
Operator: Orange
Pomógł: 17 razy
Wiek: 32
Dołączył: 01 Mar 2005
Posty: 247
Skąd: Olsztyn
Wysłany: 2006-08-28, 12:00   

aha :shock: To chyba narazie nam sobie spokój, jak będzie mi sie chciało bardziej niż mi sie nie chce to coś popróbuję :D Dzięki za kolejny wyczerpujący wykład :)
_________________
http://cieszak.eu
CrystalCode Studio - aplikacje, strony www, urządzenia elektroniczne, pomoc techniczna, konsultacje
^
 
 
  Skype
     
Wyświetl posty z ostatnich:   
Odpowiedz do tematu
Nie możesz pisać nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach
Nie możesz załączać plików na tym forum
Nie możesz ściągać załączników na tym forum
Dodaj temat do Ulubionych
Wersja do druku

Skocz do:  

Podobne tematy
Temat Autor Forum Odpowiedzi Wysłany
Brak nowych postów wgrywanie softu do noki 5220 maxo1620 BB5 1 2012-02-25, 20:05
Brak nowych postów 6210 [NPE-3] Pliki Softu Nozycoreki DCT-3 1 2012-03-26, 16:55
Brak nowych postów 3510i Nazwy plików softu do UFS Nozycoreki Nokia 0 2012-03-26, 18:46
Brak nowych postów Nokia 3310 zmiana softu. LubiaK DCT-3 5 2013-04-09, 16:27
Brak nowych postów zlecę zmianę softu w noki 3310 śląsk ... rafal18031988 Bazar 0 2014-12-20, 17:20