Hali,
avr mikrovezérlő a célhardware és az assembly részt fix címre kellene tennem. Az assembly részben hiába próbálkozom .org-gal, a linker nagyvonalúan felülbírálja.
Próbálom a linkert -T sectionfile opcióval fordítani, a sectionfile tartalma:
SECTIONS {
myprog.out :
{
myprog.o
usb_rawhid.o
. = 0x1800
myprog_asm.o
}
}
A linker syntax errort dob a myprog_asm.o sorra mutogatva. Hogyan kell ezt helyesen?
- 8272 megtekintés
Hozzászólások
Meg nem ertek annyira az Atmelhez, hogy segiteni tudjak.
Itt szoktam kerdezni, sokan ertenek hozza, csak ertelmesen kell feltenni a kerdest:
http://www.avrfreaks.net/
Amugy bootloadert akarsz irni? Ott tudtommal fix helyre kerul a kod, esetleg kereshetsz olyan peldakat.
--
The programmers of tomorrow are the wizards of the future. You know, you're going to look like you have magic powers compared to everybody else. -Gabe Newell
- A hozzászóláshoz be kell jelentkezni
Kedves GyM,
ez a kérdés független az Atmel világtól, bárhol felmerülhet, bár kétségtelenül kis prociknál tipikus.
Nem csak bootloadernél lehet fontos, pl. az alábbi alkalmazásnál is létszükséglet page határra helyezni a hullámtáblá(ka)t:
http://www.myplace.nu/avr/minidds/
Az avrfreaks régi ismerős, ugyanígy a stackoverflow-nak is van avr-es világban mozgó közönsége - bár ott sincs válasz egyelőre. :)
- A hozzászóláshoz be kell jelentkezni
ez a kérdés független az Atmel világtól, bárhol felmerülhet
A kérdés független, de a válasz nem. Ugyanis minden rendszer jellemzően tök másmilyen linkert használ, ezt a problémát pedig alapvetően a linker oldja meg. Így a kérdésfelvetésednek a valódi megoldása alapvetően Atmel-only lesz.
- A hozzászóláshoz be kell jelentkezni
ha avr-gcc, akkor gnu linkert hasznal
--
NetBSD - Simplicity is prerequisite for reliability
- A hozzászóláshoz be kell jelentkezni
. = 0x1800;
- A hozzászóláshoz be kell jelentkezni
Jé, ilyen egyszerű? :)) Úgy tűnik, működik. Köszönöm!
- A hozzászóláshoz be kell jelentkezni
np, de csodalkoznek, ha a linker doksijaban ez nem lenne benne ;)
- A hozzászóláshoz be kell jelentkezni
A kérdés továbbra is kérdés: hogyan kell az assembly részt fix címre helyezni?
SECTIONS {
myprog.out (.text) :
{
myprog.o (.text)
usb_rawhid.o (.text)
. = 0x1000;
myprog_asm.o (.text)
}
myprog.out (.data) :
{
* (.data)
}
}
Most az error az utolsó sot utánra mutat és ilyet szól: lnscr:14: non constant or forward reference address expression for section myprog.out
(Nem, nincs overlap, bőven van hely előtte-utána.)
- A hozzászóláshoz be kell jelentkezni
- A hozzászóláshoz be kell jelentkezni
OUTPUT (myprog.out)
SECTIONS {
.text : {
myprog.o (.text)
usb_rawhid.o (.text)
. = 0x1000 ;
myprog_asm.o (.text)
}
.data : { * (.data) }
}
- A hozzászóláshoz be kell jelentkezni
Igoor:
Cseppenként jó adagolni a tudást, mert nem csapja el a hasat...
A javasolt forma rögtön fennakadt a bss miatt, de ha ki is egészítem a bss-sel, akkor sem fordul. Ne is vesződj velem...
OUTPUT (myprog.out)
SECTIONS {
.text : {
myprog.o (.text)
usb_rawhid.o (.text)
. = 0x1000 ;
myprog_asm.o (.text)
}
.data : { * (.data) }
.bss : { * (.bss) }
}
/usr/lib/gcc/avr/4.7.2/avr35/libgcc.a(_clear_bss.o): In function `__do_clear_bss':
(.init4+0x0): undefined reference to `__bss_end'
/usr/lib/gcc/avr/4.7.2/avr35/libgcc.a(_clear_bss.o): In function `__do_clear_bss':
(.init4+0x2): undefined reference to `__bss_start'
/usr/lib/gcc/avr/4.7.2/avr35/libgcc.a(_clear_bss.o): In function `__do_clear_bss':
(.init4+0x4): undefined reference to `__bss_start'
/usr/lib/gcc/avr/4.7.2/avr35/libgcc.a(_clear_bss.o): In function `.do_clear_bss_start':
(.init4+0xa): undefined reference to `__bss_end'
collect2: error: ld returned 1 exit status
make: *** [myprog.out] Error 1
Fordítás sikertelen.
Fuszenecker_Róbert:
Ez már komolyabb segítség, még bele kell ássam magam. Köszönöm!
- A hozzászóláshoz be kell jelentkezni
tippre ilyesmit szeretne a libgcc-d:
.bss : {
__bss_start = .;
* (.bss)
__bss_end = .;
}
--
NetBSD - Simplicity is prerequisite for reliability
- A hozzászóláshoz be kell jelentkezni
javitsatok ki, de igy a data/bss a 0x1000 + sizeof(myprog_asm.o) utanra kerul, jo ez neked (vagyis a uc-nek)?
--
NetBSD - Simplicity is prerequisite for reliability
- A hozzászóláshoz be kell jelentkezni
Jo, nem veszodom ;) El kellene dontened, mi a celod. Megoldatni valakivel a sajat problemadat, vagy megtanulni, hogyan es mit kell csinalnod, hogy megtalald a megoldast. Az elsohoz nem kivanok asszisztalni, viszont viccesnek talalom, hogy felteszel egy kerdest, idebiggyesztve egy szintaktikai hibakkal megtuzdelt parsoros linker szkriptet es a linker altal kibofogott konkret hibauzeneteket, majd amikor ezekre kapsz egy javitast, puffogni kezdesz, mert a valasz nem egy komplett szkript kepeben erkezik. lol??? Az informacio, amit a belinkelt pdf-ben megtalalsz, fellelheto szamtalan peldaban a neten is, miert okoz/okozott gondot a megtalalasa? Viszont ha nem olvasod el a linker doksijat, a peldak nem fognak sokat segiteni, mert fogalmad sem lesz, mit miert csinalsz. Ha lenne, akkor nem csodalkoznal most sem az ujabb hibauzeneten ...
- A hozzászóláshoz be kell jelentkezni