PasjaGSM.pl
  Jesteś w: Forum > emulacja... PMM


emulacja... PMM

Forum.PasjaGSM.pl » ...:Sprzęt:... » Nokia » DCT-3 » [DCT3] Modyfikacje HW i SW » NokiX » Programowanie » emulacja... PMM
Poprzedni temat «» Następny temat
Autor Wiadomość
 
druidbartek 
Expert



Telefon: DCT-3
Operator: Era
Pomógł: 39 razy
Wiek: 31
Dołączył: 13 Wrz 2005
Posty: 1006
Skąd: Wrocław
  Wysłany: 2007-02-25, 21:42   emulacja... PMM

witam
w wolnych chwilkach lubię pogrzebać WinArmem we flashu, i przed chwilką naszedł mnie pomysł zobaczyć jak to z tym PMM mamy.

zarazie zbyt wiele to nie wiem no ale zawsze coś :d
Function: pmm_read - odczytuje dane z PMM
3330 4.50 - 0x283264
3350 5.30 - 0x28dc34
5210 5.40 - 0x2965b4
5510 3.53 - 0x289a80
Cytat:
unsigned pmm_read(unsigned id, unsigned sub_id, unsigned unkn, unsigned len, void *buf);

id - ID chunka w PMM (np szablony w 5510 to 0x84)
sub_id - ID subchunka (dla szablonów kolejno 0,1...7)
unkn - na razie nie bardzo łapie po co to jest (zwykle ma wartość 0)
len - długość danych które chcemy odczytać
buf - bufor do którego zapiszemy dane(+4bajty na początku - tam zostanie zwrócona długość odczytanych danych)

Function: pmm_write - zapis danych do PMM
3330 4.50 - 0x282a98
3350 5.30 - 0x28d44c
5210 5.40 - 0x295df0
5510 3.53 - 0x2892b4
Cytat:
unsigned pmm_write(unsigned id, unsigned sub_id, void *buf, unsigned len);

id - ID chunka w PMM
sub_id - ID subchunka
len - długość danych które chcemy zapisać
buf - bufor gdzie mamy dane do zapisu

funkcja zwraca wartość:
  • 0 - odczyt przebiegł prawidłowo
  • 0x10 - użyto błędnego sub_id, np dla szablonów 8 jeśli mamy tylko 8 szablonów (0-7)
  • 0xf - niepoprawna wartość dla unkn - w większości przypadków poprawna to 0



rozbudowywać PMM raczej nie mam zamiaru ale chętnie pokusiłbym sie o coś zupełnie przeciwnego - wywalić całość i zrobić małą emulację na TFS - utworzyć katalog PMM z jakiś atrybutem systemowy(na arzie TFS takiego nie posiada ;>) a w nim wszystkie chunki/subchunki itd :D

po co? spory kawał wolnego miejsca by się nam zwolnił - tylko w 5510 jest to 320KB (dodatkowe 256KB znajdujące się pomiędzy PMM a EEP nie wiadomo do czego służy - wg Yaka może to być jakiś debug)
wszystkie dane które obecnie mamy w PMM (choćby kontakty, zakładki WAP, wiadomości graficzne, zapis stanu oryginalnych gier, znaki głosowe) mielibyśmy na FS a co za tym idzie łatwo można by je skopiować na PC i podglądnąć co w jakim chunku siedzi a potem wywalać po kolei co sie da :d


można by iść jeszcze dalej - EEPROM również zbudowany jest z chunków tylko że AFAIK miałem problem z emulacją 1 chunku - jest to "security area" czy jakoś tak ;) ale tam mamy te wszystkie FAID, IMEI czy checksumy. więc z tym nie wiem czy dało by się poradzić (ale z całą resztą eepromu jak najbardziej).

heheh, symbiana chce wyczarować na dct3 :D
^
 
     
AdSense


seba123 
Expert
=)



Telefon: SE W810
Operator: Orange
Pomógł: 66 razy
Wiek: 26
Dołączył: 07 Kwi 2006
Posty: 1327
Skąd: Łódź
Wysłany: 2007-02-25, 22:24   

druidbartek napisał/a:
heheh, symbiana chce wyczarować na dct3


Kurde, innymi rzecz biorąc własny soft dla dct-3 :D aha, jak już będziesz czarować to coś jak winda (że każdy prog, np. budzik będzie z fs :D )

btw. a tak naprawde co z tego wynika? co zyskaliśmy?

aha, bo jeszcze do tego nie doszedłem -> co zawiera taki chunk?
_________________
pobierz
^
 
  Skype
     
druidbartek 
Expert



Telefon: DCT-3
Operator: Era
Pomógł: 39 razy
Wiek: 31
Dołączył: 13 Wrz 2005
Posty: 1006
Skąd: Wrocław
Wysłany: 2007-02-25, 22:36   

seba123 napisał/a:
ha, jak już będziesz czarować to coś jak winda (że każdy prog, np. budzik będzie z fs :D )

o tym mamy już osobny temat - uruchamianie aplikacji z FS ;pp

Cytat:
btw. a tak naprawde co z tego wynika? co zyskaliśmy?

no choćby to że kontakty mamy już na FS (w innych modelach trzeba by napisac do tego obsługę ale i tak już dużo dalej by się było), tak samo z notatkami, przypomnieniami - byłoby juz duzo łatwiej przerobić tak ze ograniczała by nas tylko pojemność "dysku"

to samo przy zmianie PMM po flashowaniu czy jak fon nie chce wstać - kontakty/zakładki/dzwonki/grafiki zostają :!:

seba123 napisał/a:
co zawiera taki chunk?

dokąłdnej budowy nie znam ani nie mam zamiaru poznawać bo nie jest to potzrebne - najważniejsze jest to że system "wie" że chunki o ID 0x83 to sa grafiki, i że ma ich tyle ile subchunków czyli 8. porównaj to do PPM - tam tez mamy chunki(TEXT,FONT,TONE) i subchunki - niektóre sa w liczbie>1(POLI,GERM,ENGL) a niektóre pojedynczo(jak np subchunki GSMC,FONT itd

przed właściwymi danymi mamy jakiś nagłówek ale nie jest on na szczęście bardzo istotny - zawiera zapewne długość danych, jakiś checksum i coś tam jeszcze.

jedyne co mi pozostało to rozkminić co to jest ten 3 argument pmm_read i zastąpić oryginalne funkcje pmm_read/write własnymi które zamiast na PMM dane by kierowały na FS

[ Dodano: 2007-02-25, 22:40 ]
wiem że to musi zadziałać bo już tak emulowałem eeprom na FS - tylko że zapisałem go jako jeden plik dla wygody - zrobiłem odpowiedniego hooka na eeprom_read/write_bytes aby dane o adresie powyżej 0x258 zapisywał na FS a pozostałe (czyli to całe "secure area") normalnie w eepromie i działało b ładnie :)

[ Dodano: 2007-02-26, 00:08 ]
tak pomyśłałem zobaczyć w jakim formacie zapisywane są kontakty
Nazwa: NameNameNameName
Numer: +*#pw0123456789+*#pw0123456789 (wiem że bez sensu ale chciałem wykorzystać wszystkie możliwe znaki)
kontakty zapisywane są (dla 3330/3350/5210/5510) w chunku 0x1a, i mają 0x2c dla 5210 i 0x27 dla pozostałych. Dane wyglądają tak:
Kod:
1F FB CD EA 12 34 56 78 9F BC DE A1 23 45 67 89
4E 61 6D 65 4E 61 6D 65 4E 61 6D 65 4E 61 6D 65
00 12 92 10 00

pierwszy bajt 0x1e to długość numeru (max 30 znaków), potem mamy numer w formacie jak widać, od 10h mamy nazwę (nie jestem tylko pewny na 100% jak wygląda sprawa z znakami diakrytycznymi bo już mi sie nie chce :D )
od 20h mamy jakiś pointer czy coś - na razie nie wiem co to jest ale przy każdym subchunku ta sama wartość.

hehe już mam ochote przerobić ten format ale na początek sama emulacja będzie dużym krokiem

jedyne co mnie zaniepokoiło to zmiana sub_id "w locie" - zauważyłem to tylko przy zakładkach WAP, choć może tego być więcej - jeśli mamy kilka zakładek, zajmują one kolejne sub_id.ale jeśli skasujemy tą co ma subid 0 to ta co miała 1 zmienia się na 0 :?

być może jest to coś z tym nieznanym argiem dla pmm_read trzeba się temu przyjrzeć...
^
 
     
logos2000 
VIP
technik informatyk



Telefon: 3110c
Operator: Heyah
Pomógł: 59 razy
Wiek: 31
Dołączył: 06 Lip 2004
Posty: 2796
Skąd: Gorzów Wlkp.
Wysłany: 2007-02-26, 17:50   

druidbartek, tobie to chyba sie nudzi po nocach :P %-)

wiec aporpo kontaktow da je rade wsadzic do FS?? (napewno da ale czy ty umiesz??)
_________________
Darmowe doładowania komorek na karte - blue.pl
^
 
     
druidbartek 
Expert



Telefon: DCT-3
Operator: Era
Pomógł: 39 razy
Wiek: 31
Dołączył: 13 Wrz 2005
Posty: 1006
Skąd: Wrocław
Wysłany: 2007-02-26, 18:03   

logos2000 napisał/a:
druidbartek, tobie to chyba sie nudzi po nocach :P %-)

czasami ;pp

logos2000 napisał/a:
wiec aporpo kontaktow da je rade wsadzic do FS??

sa 2 możliwości - albo to co napisałem wyżej czyli emulacja całego PMM na FS ale to nie rozwiązuje problemu z telefonami bez wbudowanej pamięci na kontakty. w tych pozostałych należało by napisać odpowiedni kod praktycznie od zera (jedynie można by się troszkę wzorować na tym co mamy w modelach z kontaktami). Wiemy że dvirus cos tam próbował z tymi kontaktami (tylko że wybrał eeprom na przechowywanie tych danych)

żeby to wszytko było ze sobą kompatybilne to w modelach z kontaktami tez wypadałoby przerobić choćby sam format zapisu (jakiś wygodniejszy czy co) ale myślę że gdyby się komuś zechciało napisać taką łatkę na 3310 i podobne to poprawić to co mammy oryginalnie w pozostałych modelach to byłby juz pikuś ;)
^
 
     
druidbartek 
Expert



Telefon: DCT-3
Operator: Era
Pomógł: 39 razy
Wiek: 31
Dołączył: 13 Wrz 2005
Posty: 1006
Skąd: Wrocław
Wysłany: 2007-02-26, 18:09   

Ignus napisał/a:
Cicho bo się zniechęci jeszcze

raczej mi to nie grozi. choćbym pozostał jedyną osobą która to będzie interesować mało mnie to obchodzi. robie to dla siebie, dla własnej satysfakcji, przy okazji czegoś się człowiek nauczy :D

PS. nie wiem dokładnie jak działał ten patch od dvirusa. testował go ktoś?
jesli jest on dobry, to można by sie pokusić go o przerzucenie na FS (tak jak yak zrobił z pierwsza wersją mail_suite) - na początek zawsze coś, bo chyba brak rąk aby ktoś napisał to od podstaw - masa kodu do zdeassemblowania :(
^
 
     
y37 
Expert
D E I C I D E



Telefon: kilka
Operator: Plus
Pomógł: 17 razy
Wiek: 108
Dołączył: 14 Paź 2004
Posty: 1226
Skąd: z nienacka
Ostrzeżeń:
 1/5/6
Wysłany: 2007-02-26, 19:33   

conajmiej rewolucja! tak patrze po chunkach mozna by rowniez zrobic fonty w FS :D
w 5110 fonty maja dokladnie 29 032 bajtow.
_________________
kontakt: y37 ( at ) jabber.org
^
 
     
druidbartek 
Expert



Telefon: DCT-3
Operator: Era
Pomógł: 39 razy
Wiek: 31
Dołączył: 13 Wrz 2005
Posty: 1006
Skąd: Wrocław
Wysłany: 2007-02-26, 20:59   

y37 napisał/a:
conajmiej rewolucja! tak patrze po chunkach mozna by rowniez zrobic fonty w FS :D
w 5110 fonty maja dokladnie 29 032 bajtow.

uwierz że odpowiednie funkcje już czekają u mnie na dysku bo nad tym również swego czasu posiedziałem

nie wiedziałem jak rozwiązać na pozór błachy problem z wyborem - czy po prostu należało by stworzyć katalog /FONTS i fonty które by się tam znalazły były by "widziane" przez system, stwarza to jednak inny problem - gdyby user wrzucił np 2 razy small plain

a może zrobić to na zasadzie instalacji? w file managerze w menu opcji plików *.font byłaby opcja Instaluj - po jej wybraniu w zależności z jakim fontem mamy do czynienia (sama nazwa pliku jest mało istotna ponieważ w strukturze fontu jest przewidziane miejsce na to size (np "large") i weight (np "bold")
system w jakimś pliku zapisywałby sobie informacje że ma używać tej czcionki.

hm całkiem dobre rozwiązanie :)
co o tym sądzicie?
należy jednak pamiętać że (przynajmniej w przypadku fontów) system podczas startu skanuje sobie PPM i wyszukuje wszystkie czcionki a ich adresy zapisuje do pewnej tablicy w ramie - dzięki temu nie musi ich wyszukiwać za każdym razem (a tylko pobiera adres) - dla fontów z FS jest troszkę inaczej bo przecież pozycja może się zmienić ale i to udało się jakoś sensownie rozwiązać i praktycznie nie zauważyłem szybkości w działaniu

[ Dodano: 2007-02-26, 21:15 ]
rozważając na chwilę czysto teoretycznie. Nowy super wypaśny system na nokie można by zrealizowac poprzez:
  • przeniesienie aplikacji na FS (patrz temat o tym) - znika problem z dodawaniem tekstów do PPM
  • emuklacja PMM/EEPROM na FS - jakoś ładnie to zorganizować przez co koniec z utratą ustawień po flashowaniu etc
  • wywalić cały PPM :twisted: - po spreparowaniu odpowiednich funkcji każdy chunk praktycznie już obecnie mógłby być przeniesiony na FS (co prawda część z nich jak choćby GSMC nikt zbyt często nie zmienia/edytuje no ale jak wszytko to wszytko :d) - jedyny problem ze wspomnianym wyżej chunkiem TEXT ale appsy na FS by to rozwiązywały
  • przeczesanie MCU w poszukiwanie tak licznie występujących śmieci (dla 5210/5510 i podobnych jest tego ~200KB) i uporządkowaniu zwolniionej przestrzeni (czyli poprzesuwanie pozostałych danych) - chyba najtrudniejszy punkt, tylko dla hardcorowców (obecnie robie to dla 5210 :D ) - łatwo by się pomylić a wtedy wszytko się sypie

co do tego grzebania w MCU - tam mamy nie tylko funkcje których sobie ot tak nie pousuwamy/poprzestawiamy ale też dane (porównajcie z programami na PCta z zasobami resources) - czyli menu/dialogi/grafiki i cała masa innego stuffu - część z nich można lekko wywalić (systemowe gfx i wygaszacze w pierwszej kolejności) zwalniając ładny kawał miejsca. Ale w większości przypadków jest to trudne do zrealizowania (trzeba by dokładnie przejrzeć ~0.5MB w przypadku modeli z 4MB flashem)

czyli we flashu mielibyśmy MCU (ogołocony czy nie) + FS z cała resztą

zastanawiam sie tylko czy to byłby tylko taka ciekawostka czy szło by tego nawet i poużywać (choćby dla zabawy) - wkońcu kość flash nie jest wieczna i też nie można na niej zapisywać w nieskończoność a każdy plik na FS to właśnie to robi. ale jakoś ten PMM/EEPROM działa i nikt nie narzeka :D
^
 
     
y37 
Expert
D E I C I D E



Telefon: kilka
Operator: Plus
Pomógł: 17 razy
Wiek: 108
Dołączył: 14 Paź 2004
Posty: 1226
Skąd: z nienacka
Ostrzeżeń:
 1/5/6
Wysłany: 2007-02-27, 00:14   

druidbartek napisał/a:
zastanawiam sie tylko czy to byłby tylko taka ciekawostka czy szło by tego nawet i poużywać (choćby dla zabawy) - wkońcu kość flash nie jest wieczna i też nie można na niej zapisywać w nieskończoność a każdy plik na FS to właśnie to robi. ale jakoś ten PMM/EEPROM działa i nikt nie narzeka :D


mi sie wydaje ze flashowanie bardziej wykorzystuje ten uklad niz takie operacje ktore sa wyonywane caly czas... jednak napewno jakas zywotnosc dla tych ukladow jest

Cytat:
nie wiedziałem jak rozwiązać na pozór błachy problem z wyborem - czy po prostu należało by stworzyć katalog /FONTS i fonty które by się tam znalazły były by "widziane" przez system, stwarza to jednak inny problem - gdyby user wrzucił np 2 razy small plain


wydaje mi sie ze wystarczy aby odczytywalo chunk ... od tego jest conajmniej 4 programy
_________________
kontakt: y37 ( at ) jabber.org
^
 
     
druidbartek 
Expert



Telefon: DCT-3
Operator: Era
Pomógł: 39 razy
Wiek: 31
Dołączył: 13 Wrz 2005
Posty: 1006
Skąd: Wrocław
Wysłany: 2007-02-27, 09:10   

y37 napisał/a:
wydaje mi sie ze wystarczy aby odczytywalo chunk ... od tego jest conajmniej 4 programy

tu jednak się nie zrozumieliśmy - moim zdaniem lepszy pomysł to trzymać na FS czcionki nie jako cały chunk tylko w formacie obsługiwanym przez NokiXa programy Mikesza czy choćby filetype_font.nrx - moim zdaniem jest wygodniej przechowywać każdy font jako osobny plik.

ale trochę od tematu odbiegamy ;)

ok tak na szybko przy śniadanku doszedłem do kilku dodatkowych informacji
Kod:
struct pmm_chunk
{
   unsigned char flag;    // see below
   unsigned char id;      // PMM chunk ID
   unsigned short subid;  // PMM subchunk ID
   unsigned short unkn;   // always 55 FF ?
   unsigned short crc;    // 16 bit CRC of data
   unsigned short size;   // size of the data
   unsigned short offset; // offset next pmm chunk from active PMM block start
   void data[];
};

// pmm chunk flags AFAIK
#define PMM_CHUNK_ACTIVE  0xF4
#define PMM_CHUNK_ACTIVE2 0xF2 // only for voice tags ?
#define PMM_CHUNK_DEAD    0xA4
#define PMM_CHUNK_DEAD2   0xA2 // only for voice tags ?

#define PMM_FIRST_CHUNK   0x20 // first chunk offest in PMM


unk1 to narazie zagadka choć zauważyłem że zawsze(?) przyjmuje wartość 55 FF
offset to offset kolejnego chunku licząc od początku aktywnego bloku PMM dla przykładu
PMM start - 0x550000
chunk mamy pod adresem 0x558ff3 z tego wynika że offset = 0x8ff3

zobaczymy czy przyda się to do czegoś :)
ale zawsze dobrze wiedzieć :D

czyli sam header ma 12 bajtów, pliki na FS zajmują niewiele więcej, sam header ma 16bajtów + max 23 znaki na nazwę, do zaakceptowania :)

dodatkowo mamy header całego bloku PMM - ma on 32bajty

[ Dodano: 2007-02-27, 17:03 ]
napisałem prosty skrypt który wyświetla nam chunki które mamy w PMM
jakby ktos chciał sam zobaczyć (interesuje to wogóle kogoś? :D ) odpalać jako flash podać zdumpowany blok PMM - powinien miec długość 64KB :)

[ Dodano: 2007-02-27, 17:49 ]
yak napisał/a:
[ Dodano: 2006-01-18, 01:29 ]
[...]jest jeszcze PMM. 3310 trzyma tam nagrane dźwięki wybierania głosowego, w 3410 na przykład rozbudowali to troche i tam są gry java itp. [...] wygląda na to, że jest to system dynamiczny - miejsce jest alokowane dopiero jak coś jest zapisywane (ale chyba nie w 3310, tylko w nowszych). Np. szablony SMS w 3310 sa w EEPROMie a w 3330, 5510, 5210 juz w PMM[...]

no właśnie coś nie mogłem obczaić jak to jest w 3310/8210 - nawet funkcji read/write nie zlokalizowałam do tej pory :(
jesli ktoś ma jakieś informacje :mrgreen: lub chociaż dumpy pmm z 3310/8210 to bardzo bym prosił o podesłanie http://druidbartek.info/upload/upload.php - mam powiadomienie jak mi ktoś plik zostawi więc pisać o tym nie trzeba :) z góry dzięki
^
 
     
y37 
Expert
D E I C I D E



Telefon: kilka
Operator: Plus
Pomógł: 17 razy
Wiek: 108
Dołączył: 14 Paź 2004
Posty: 1226
Skąd: z nienacka
Ostrzeżeń:
 1/5/6
Wysłany: 2007-02-28, 23:17   

taka mala informacja large/bold zajmuje 11950bajtow :mrgreen:
_________________
kontakt: y37 ( at ) jabber.org
^
 
     
seba123 
Expert
=)



Telefon: SE W810
Operator: Orange
Pomógł: 66 razy
Wiek: 26
Dołączył: 07 Kwi 2006
Posty: 1327
Skąd: Łódź
Wysłany: 2007-02-28, 23:23   

druidbartek napisał/a:
interesuje to wogóle kogoś?


No np. mnie :)

Właśnie, a miałeś może pomysł zrobienia zamiast wybierania głosowego dyktafonu?

[ Dodano: 2007-02-28, 23:41 ]
druidbartek napisał/a:
PS. nie wiem dokładnie jak działał ten patch od dvirusa. testował go ktoś?
jesli jest on dobry, to można by sie pokusić go o przerzucenie na FS (tak jak yak zrobił z pierwsza wersją mail_suite)


jest niezły.
druidbartek napisał/a:
a może zrobić to na zasadzie instalacji? w file managerze w menu opcji plików *.font byłaby opcja Instaluj - po jej wybraniu w zależności z jakim fontem mamy do czynienia (sama nazwa pliku jest mało istotna ponieważ w strukturze fontu jest przewidziane miejsce na to size (np "large") i weight (np "bold")
system w jakimś pliku zapisywałby sobie informacje że ma używać tej czcionki.

hm całkiem dobre rozwiązanie :)
co o tym sądzicie?


albo zrobić dodaj/usuń fonty :mrgreen:

[ Dodano: 2007-02-28, 23:42 ]
A i pisz dalej - chętnie poczytam :D
_________________
pobierz
^
 
  Skype
     
druidbartek 
Expert



Telefon: DCT-3
Operator: Era
Pomógł: 39 razy
Wiek: 31
Dołączył: 13 Wrz 2005
Posty: 1006
Skąd: Wrocław
Wysłany: 2007-03-01, 23:05   

seba123 napisał/a:
Właśnie, a miałeś może pomysł zrobienia zamiast wybierania głosowego dyktafonu?

za dużo grzebania i wogole - nawet nie wiemy w jakim formacie dźwięk jest zapisywany
pyzatym komu by się chciało grzebać żeby zrobić 30sek dyktafon o potwornie kiepskiej jakości dźwięku jak chyba każdy ma choćby mp3 ;)

ale pare dni temu z Maximusem troszkę gadaliśmy nt temat i do czego doszliśmy to że voice tags są zapisywane jeden w dwóch chunkach
pierwszy 0x71 zawsze ma długość 660B a ten drugi - 0x72 długość 3578B - i nawet nie można być pewnym czy dało by się to jakoś "wydłużyć"

chwilowo prace nad przeniesieniem pmm wstrzymane ale wrócę do tego na pewno :)
^
 
     
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 [patch] Emulacja dysku 'z' na dysku '... bubek3 [BB5] Modyfikacje ROM'u 13 2008-06-27, 02:23
Brak nowych postów [app] MapDrives - emulacja wirtualnyc... bubek3 [BB5] Modyfikacje ROM'u 0 2008-06-27, 04:35