PasjaGSM.pl
  Jesteś w: Forum > Pomysł na aplikacje odpalane z filesystem


Pomysł na aplikacje odpalane z filesystem

Forum.PasjaGSM.pl » ...:Sprzęt:... » Nokia » DCT-3 » [DCT3] Modyfikacje HW i SW » NokiX » Programowanie » Pomysł na aplikacje odpalane z filesystem
Poprzedni temat «» Następny temat
Autor Wiadomość
 
MaximusResetus 
Wie co mówi
Shoot 'Em Up !



Telefon: 55,33,e398
Operator: Era
Pomógł: 3 razy
Wiek: 32
Dołączył: 23 Lip 2004
Posty: 456
Skąd: Nowy Sącz - okolice
Wysłany: 2007-01-16, 21:09   Pomysł na aplikacje odpalane z filesystem

Heh dawno mnie nie było :) zresztą wogule coś martwo na tym forum...

TAk sobie myślałem czy by nie dało się zrobić żeby odpalać aplikacje z filesystema no i wg mnie teoretycznie dałoby sie :) I ile dobrze pamiętam to żeby obsługiwac nowe typy plików trzeba zrobić odpowiedni skrypt. Przejde do konkretów.

normalnie skrypty mają coś takiego:
Kod:

code=x2c(0000000000000000B5004B0488194B044804681AF7FFFFFE20DCBD000000000000000004000085E0)
create "code"; soft_info_o_1=rc /* .text */
if symbol("id_game_instructions")~="VAR" then id_game_instructions=locate("id_game_instructions")
if symbol("str_info")~="VAR" then str_info=locate("str_info")
if symbol("send_message")~="VAR" then send_message=locate("send_message")
setbl soft_info_o_1+20 send_message
setlong soft_info_o_1+28 soft_info_o_1
setlong soft_info_o_1+32 soft_info_o_1+4
setword soft_info_o_1 id_game_instructions
setlong soft_info_o_1+4 str_info
msg_info=soft_info_o_1+8


Plik z aplikacja, może mieć np rozszeżenie .nex (nokia exe :) ) i zawierałby przykład z soft info:

Kod:

code=x2c(0000000000000000B5004B0488194B044804681AF7FFFFFE20DCBD000000000000000004000085E0)
create "code"; soft_info_o_1=rc /* .text */
id_game_instructions=3626183574
str_info=af42cd45
send_message=15affe23
setbl soft_info_o_1+20 send_message
setlong soft_info_o_1+28 soft_info_o_1
setlong soft_info_o_1+32 soft_info_o_1+4
setword soft_info_o_1 id_game_instructions
setlong soft_info_o_1+4 str_info
msg_info=soft_info_o_1+8


Róznica polega na tym że aplikacja musiałaby być dydykowana pod odpowiedni model i wersję softu. zmienne takie jak str_info musiałyby zawierac prawdziwe adresy funkcji dla danego softu,na którym aplikacja miałaby byc odpalona.

Co by robił skrypt obsługujacy piki .nex ? A wiec po wybraniu opcji uruchom czy jakaś tam, część z sekcji code byłaby kopiowana do ramu (dobrze by było zarezerwować jakiś stały adres w ramie,qale wiaże się to z tym że aplikacje musiałyby miec ograniczony rozmiar) następnie skrypt obliczałby instrukcje setbl i inne które są zapisane pod code i ustawiał w odpowiednich miejscach odpowiednie wartości. Właściwie to skrypt robiłby to samo co robi nokix tyle że zamiast do kodu pprogramu, wklejałby kod aplikacji do ramu i z tamtąd go odpalał. jak myslicie dałoby radę? :) oczywiście zawartośc plików nex i działanie obsługi tych plików , wszystko jest do dyskusji :) NArazie tylko pytanie czy jest wykonalne odpalenie instrukcji z ramu i wogule czy jest to wykonalne w jakiś inny sposób?
_________________
http://www.kwitnaceogrody.pl - projektowanie ogrodów - aranżacje zieleni - realizacja nasadzeń
^
 
     
AdSense


seba123 
Expert
=)



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

MaximusResetus, a czemu specjanie na soft i model? Przecież funkcje firmwarum są w większości takie same? Trza by było zrobić tak skrypty - jeżeli nie ma takiej funkcji trzeba by było ją dorobić :D ja uchyle rąbka tajemnicy że takie coś jest już możliwe :) mam nadzieje że autor tego rozwiązania się wypowie.
_________________
pobierz
^
 
  Skype
     
logos2000 
VIP
technik informatyk



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

seba123, poniewaz w kazdym modelu sa inne odwolania do pamieci a jakby to mial robic telefon to by trwaaalo trwalo az by ramu zabraklo :p
_________________
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-01-16, 22:31   

jakiś czystemu myślałem nad tym i jedyne co mi sie udało zrobić to hello world a namęczyłam się cholernie głównie dlatego że musiałem pisać to praktycznie w hexie (z armady brałem sobie tylko kody instrukcji)

pomysł z ramem jest najprostszy w wykonaniu (pomimo że i tak cholernie trudne) jednak ramu mamy bardzo mało więc próbowałem rozwiązać to troche inaczej

problem z adresami rozwiązałem trochę inaczej - utworzyłem coś w rodzaju pseudo biblioteki. już nie pamiętam dokładnie jej formatu (cały projekt zarzuciłem bo było to koszmarnie trudne), nazwa była typu npm5_353.lib bo dla każdego modelu/wersji musiała być inna. w niej były zawarte informacje o adresach zmiennych, funkcji etc (hello world używał tylko kilku więc na początek dodałem tam tylko kilka - print_text, screen_to_lcd i coś tam jeszcze). w wersji appsów które by używały nowych funkcji (jak freegfx itd) musiałyby być one dodane do softu podczas kompilacji (bo z FS-a jedynie gr i appsy można by odpalać), wszystkie łatki i nowe funkcje podczas kompilacji - inna możliwość dla samych funkcji to trzymanie je w osobnych plikach również na FS ale to by dodatkowo spowolniło kod (choć i tak dużo szybsze od wszystkich javów etc)

każdy adres - miałby długość DWord (4bajty) i byłyby one ułożone w ustalonej kolejności (na początku biblioteki w nagłówku byłaby podana również wersja samej biblioteki po to aby skrypt mógł być odpalony tylko z wersja taką jak był kompilowany albo nowszą)

ten hello_world.nex ;) korzystał tylko z print_text, screen_to_lcd oraz delay

więc powiedzmy biblioteka w wersji 0.01 :D zawierała by tylko adresy tych trzech funkcji. podczas kompilacji za właściwym kodem programu + danymi (coś w rodzaju resources czyli texty itd) były by informacje z jakich funkcji on korzysta ile bajtów zajmuje id funkcji i jaka wersja biblioteki jest potrzebna. te całe id funkcji to chodzi mi o index danej funkcji w bibliotece. jeśli progs potrzebuje np print_text która ma index powiedzmy 1 to apps_launcher (czyli łatka która by potrafiła odpalić te pliki) "wiedziałaby" że ma pobrać z biblioteki adres funkcji o indexie 1 czyli właśnie print_text

jeśli na FS mielibyśmy nowszą wersję biblioteki to ona różniłaby się tylko od wymaganej tym że nowo dodane funkcje znajdowały by się dalej - czyli indexy wymaganych funckji były dalej takie same

ok, ok powiedzcie że wszytko cacy ale co z tymi bl-ami?
a no arm umożliwia nam inny sposób na skok do funkcji? mamy taka instrukcję jak bx
mniej więcej on ustawia nam pc na odpowiedni adres (tak w skrócie bo sprawa jest troche bardziej skomplikowana )

jednak ma to pare wad - kod staje się ciut dłuższy bo trzeba dorzucić oprócz samego bx hmm sam już zapomniałem czy uzywałem bx czy blx :? nieważne ale da rade ;)

inne problemy - duzo appsów zapisuje teraz dane do eepromu ramu itd - wtedy to odpada a dane muszą być na FS w plikach.

inne wady obecnie nie pamiętam bo było to juz kawał czasu temu a troszkę sie spiesze teraz. najwazniejsza zaleta to oczywiście brak konieczności alokacji do ramu kodu programu bo mamy go mało i z takim ploterem to mogłyby być problemy :)

a jak by to działało? nowe dispatchery odpadają. ale - byłby jeden dispatcher - ten cały app_launcher czy jak kto tam sobie to nazwie. zasada jego działania byłaby podobna do obecnego file_managera. kto nie wie o co chodzi niech zobaczy jak wygląda pętla obsługi eventów

no i tyle, na pewno zapomnaiłem napisać o wielu ważnych faktach więc piszcie to mi sie przypomni :)

PS. a może yak nad tym teraz pracuje hihi

[ Dodano: 2007-01-16, 22:33 ]
o lol mógłbym o tym jeszcze sporo napisać ale mam mało czasu - musze sie brać za nauke bo mam 2 koła jutro a ja od początku roku to jedynie browar i kaktusa chłone :?

[ Dodano: 2007-01-17, 00:08 ]
btw jedna z większych wad takiego rozwiązania to ciut dłuższy kod (ok. 10% wg moich wyliczeń) oraz spadek wydajności o pi razy drzwi o ok 6%

wyliczyłem to na podstawie kilu przykładowych skryptów (plotter, breaker, etc) i porównałem o ile więcej kodu musiałaby zawierać wersja na FS oraz wzrost liczby instrukcji do wykonania

ale zalet duzo więcej - wkońcu appsy gry na FS można zmieniać dużo częasciej niż sam soft po zwykłym kabelku/irda więc rozmiar ma mniejsze znaczenie a minimalny spadek wydajności raczej nie zauważalny (i tak dużo lepiej niż wszystkie te javy bo to ciągle jest C)

zobaczcie ile na takiej 34 trzeba czekać by odpalić jakąś gre w javie , tutaj tego wogole by nie bylo

[ Dodano: 2007-03-06, 16:17 ]
/***************************************************************************/

przyszedł do głowy mi jeszcze jeden pomysł

aby appsy/gry były przechowywane na FS w postaci takich pseudo instalek.
Byłby to odpowiednio przygotowany plik zbudowany z chunków IFF
odpowiednio mielibyśmy odpowiedni nagłówek który by klasyfikował czy rzeczywiście mamy do czynienia z plikiem wykonywalnym, informacje o przydziałem pamięci, eepromu itp

EHDR - nagłówek zawierający pewne informacje
TEXT - skompilowany kod programu (kod maszynowy)
DATA - sekcja dane (np łańcuchy typu "smal/plain", jakieś wartości (0x000045e0) itp. )
RSRC - grafiki, dzwonki i inne zasoby


+ do tego jakieś sekcje z tabelka importowanych funkcji/adresów (IDAT) czy eksportowanych (EDAT)

taka sekcja IDAT mogła by mieć budowę np
002e 0128
0285 0364
...
gdzie pierwsze słowo to takie ID importowanej funkcji (to o czym pisałem na początku tego postu). ID mogły by mieć wartości 0x0001 - 0xefff. te pozostałe wartości czyli 0xf000-0xffff były by zarezerwowane dla własnych funkcji itp
drugie słowo w tym przypadku 0x0128 to byłby offset od początku danych sekcji TEXT gdzie dany adres należy umieścić. mamy 2 możliwości albo jest to funkcja czyli trzeba obliczyć wartość skoku (setbl) albo jest to jakiś adres no i należy go tam wstawić (setlong)
tez można by podzielić nasze ID i wartości poniżej np 0x7fff to funkcje a powyżej to adresy (global_buffer etc)

tą nasza pulę wykorzystalibyśmy w podobny sposób tyle że odnosnie do naszych funkcji, danych

sprobuję w najbliższym czasie coś przygotować bo najprościej będzie to pokazać na konkretnym przykładzie

[ Dodano: 2007-03-06, 16:25 ]
aa nie dodałem z czym to się je :D

jak juz mielibyśmy taki plik to przy próbie jego odpalenia wykonywane były by wszystkie potrzebne procedurki. tyle że zamisat do ramu gotowy kod programu były zapisany do jakiegoś tymczasowego pliku na FS z stamtąd były on odpalany. PO zakończeniu działania programu taki plik byłby usuwany, i gdybyśmy chcieli uruchomić go jescze raz cała procedura byłąby wykonywana na nowo.
Jedyne zagrożenie przy uruchomionej aplikacji to defragmentacja, nie zachodzi ona zbyt często no ale zdarza. ale tym można zacząć się martwić jak cos ruszy w tym kierunku :)

i zachęcam do dyskusji - nie opisałem wszystkiego co mi siedzi w głowie, wiec jak się komuś wydaje że coś pomniałem to proszę pisać. chętnie odpowiem jeśli dany problem uwzględniłem w tych planach a jeśli nie będziemy szukać sensownego rozwiązania.

[ Dodano: 2007-03-07, 01:23 ]
zrobiłem mały tekścik i zlokalizowałem wszytko co NokiX potrafi. dzięki temu zostały dodane wszystkie funkcje które NokiX nie znajdzie w sofcie i zajęły one "jedynie" 35KB

być może nie wszystkie byłyby kiedykolwiek wywołane no ale za wygodę się płaci poza tym 35KB to nie aż tak dużo :smile:
^
 
     
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 Dedykowane aplikacje mobilne imek Kosz 0 2014-06-09, 14:37
Brak nowych postów Aplikacje juwenalia13 Aplikacje 3 2015-01-08, 12:23
Brak nowych postów Aplikacje chroniące przed wścibskimi ... narika Aplikacje 0 2015-11-24, 23:05
Brak nowych postów Pomysł na biznes anastad Bazar 0 2015-11-30, 14:12
Brak nowych postów Aplikacje, które najbardziej zapadły ... dlorus88 Aplikacje 4 2016-01-14, 12:09