Dynamicznie ladowany kod do ram w ARM7

Do you have a question? Post it now! No Registration Necessary

Translate This Thread From Polish to

Threaded View
Witam.

Poszukuje czegoś co pozwoli mi uzyskac prymitywną formę ładowania do
pamięci kodu dynamicznego. Zakładam, że "plik" z kodem jest dostepny w
postaci ciagu bajtów, posiadam rownież wystarczającą ilośc RAM
(powiedzmy 3x wielkośc kodu). W zasadzie poszukuje jakiegoś relokatora
który potrafi kod przenieśc poprawnie w dowolne miejsce RAM. Próbuje
googlać ale jakoś nie widzę tego na ARM7. Czy taki projekcik powstał? W
drugiej kolejności szukam jakiejś koncepcji wołania z tego kodu mojego
API zaszytego we flash. W zasadzie nie jest mi to bardzo potrzebne i
traktuje to jako ciekawostkę z ktorej moze się coś urodzi. Ma ktoś jakiś
namiar na cos ciekawego w tym temacie? bardzo korci mnie aby logika
sterowania byla na karcie SD a "system operacyjny" we flash.

Re: Dynamicznie ladowany kod do ram w ARM7
Quoted text here. Click to load it

Wystarczy wygenerować kod, który będzie relokowalny. Można go potem
uruchomić w dowolnym kawałku pamięci.

Paweł

Re: Dynamicznie ladowany kod do ram w ARM7
Quoted text here. Click to load it

W zasadzie to połowa sukcesu, interesują mnie jeszcze "resources". Nie
wiem jak ze wskaźnikami na takie dane, są rownież względne? Powiedzmy,
że mam const char* foo=""; Wymagają relokacji czy nie?

Re: Dynamicznie ladowany kod do ram w ARM7
Quoted text here. Click to load it

Czy problem polega na tym, że nie wiesz jak napisać relokowalny kod ?


Paweł

Re: Dynamicznie ladowany kod do ram w ARM7
Quoted text here. Click to load it

Problem w tym, że nie wiem jak to poprawnie zrobić. Czy wymaga to
wsparcia "systemu operacyjnego", czy też kod bedzie na dzień dobry
calkowicie relokowalny: zarĂłwno kod maszynowy jak i "wskaĹşniki na dane"
symulowane choćby const char*. Nie mam dużych doswiadczeń w ARM i nie
wiem czy np. nie pojawią się problemy przekraczania odległości względych
adresów, brak możliwości skokow poza jakiś zakres, itd. Wole zapytać niż
błądzić po omacku.

Re: Dynamicznie ladowany kod do ram w ARM7
Sebastian Biały pisze:

Quoted text here. Click to load it

W zagadnieniu tworzenia kodu relokowalnego są dwie podstawy:
- po pierwsze cały kod wykonywalny stosuje tylko względne skoki i
pobrania (względem pc)
- po drugie wszystkie dostępy do danych wymagają adresu bazowego, który
wcześniej (przed uruchomieniem kodu) trzeba wpisać do któregośtam
rejestru; po szczegóły zapraszam do lektury dokumentacji gcc, szukaj w
okolicy flagi -fpic.

--
Adam Dybkowski
        http://dybkowski.net /

We've slightly trimmed the long signature. Click to see the full one.
Re: Dynamicznie ladowany kod do ram w ARM7

Quoted text here. Click to load it
Ze swojej strony proponuje zobaczyc/zajzec jak to zostalo zrobine eCosie.
Paczka nazywa sie objloader (ecos/packages/services/objloader) i umozliwia
zaladowanie object file z romu.
(eCos mozna siaciagnac z CVS - info http://ecos.sourceware.org/anoncvs.html )
oraz :
http://en.wikipedia.org/wiki/Loader_ (computing)#Relocating_loaders


Re: Dynamicznie ladowany kod do ram w ARM7
cepu69 pisze:

Quoted text here. Click to load it


A może w ogóle nie kombinować aż tak tylko napisać normalny
loader/relokator? Struktura pliku ELF jest bardzo prosta a w praktyce
kod ARM7 kompilowany przez gcc używa 3-4 typów relokacji (i dodatkowo
kolejnych 2 trybu Thumb). Wtedy można pozwolić sobie na pełny luz i
ładować bezpośrednio pliki ELF. Dla oszczędności miejsca/transferu mogą
być np. spakowane ZIPem (gotowa biblioteka zlib).

--
Adam Dybkowski
        http://dybkowski.net /

We've slightly trimmed the long signature. Click to see the full one.
Re: Dynamicznie ladowany kod do ram w ARM7

Quoted text here. Click to load it
Zwyklem byl zawsze zagladac jak to robia inni, zeby nie popelnic nadmiernych
herezji;)
Powyzsza implementacja jest dla systemu embbeded tak wiec jest mala i
przenosna (i386/ppc/arm) tak wiec uwazam, ze jest warta uwagi.

Quoted text here. Click to load it
Raczej powinno to byc oczywiste - ladujemy foo.o (object file w formacie
elf). Zabawy z binarka (kod/dane bez wszelkich informacji dostarczane przez
elfa) odrazu bym sobie darowal.




Site Timeline