Re: [Flashforth-devel] Fwd: Re: C functions/libs at 0x11000 and up
Brought to you by:
oh2aun
From: Mikael N. <mik...@fl...> - 2015-06-09 17:02:53
|
To avoid decorating the C functions with sections you can put FF in its own section. On the PIC33FJ128GP802 you can do this. p33FJ128GP802.gld: .text : { *(.init); *(.user_init); KEEP (*(.handle)); KEEP (*(.isr*)); } >program ffcode 0x400 : { *(ffcode); } >program libs 0x11000 : { *(.libc) *(.libm) *(.libdsp); /* keep together in this order */ *(.lib*); } >program usercode : { *(usercode); } >program And then define the section if the FF source code. ff.s: ; Start of code ! ;.text .section ffcode, code ;;; ************************************* Then you have to use the large memory model to compile the C code and use call instead rcall to call the library and C functions. cinit is not needed. Mike On 09.06.2015 18:53, om1zz wrote: > I've modified the linker script and it seems it places the stuff properly: > > I took all the xc16 libs off the first section, and placed them into a new "libs" section at a specific address (here an example 0x4000 but it shall be 0x11000) for all the xc16 math float/double libs, and after the libs section there is the new "userfunc" section where all the new Cfunctions will come. > > > /* > ** User Code and Library Code > ** > ** This section must not be assigned to __CODE_BASE, > ** because CodeGuard(tm) sections may be located there. > ** > ** Note that input sections *(.text) are not mapped here. > ** The best-fit allocator locates them, so that .text > ** may flow around PSV sections as needed. > */ > .text : > { > *(.init); > *(.user_init); > KEEP (*(.handle)); > KEEP (*(.isr*)); > } >program > > > /* > ** User-Defined Section in Program Memory > ** > ** note: can specify an address using > ** the following syntax: > ** > ** usercode 0x1234 : > ** { > ** *(usercode); > ** } >program > */ > usercode : > { > *(usercode); > } >program > > libs 0x4000 : > { > *(.libc) *(.libm) *(.libdsp); /* keep together in this order */ > *(.lib*); > } >program > > userfunc : > { > *(userfunc); > } >program > > > And you need to tell where to place your Cfunction: > > __attribute__((section("userfunc"))) > double Ctest ( int degree_x) {... > > > And map file shows: > .. > 0x0025e4 build/default/production/_ext/1360937237/ff-pic24-30-33.o:MEMQADDR_N > 0x002600 build/default/production/_ext/1360937237/ff-pic24-30-33.o:lastword > 0x002800 build/default/production/_ext/1360937237/ff-pic24-30-33.o:KERNEL_END > 0x004000 _acos > 0x004000 _acosl > .... > 0x0057a0 _fmodl > 0x0057a8 _fmodf > 0x0057ac __fmodrem > 0x00584a __dmodrem > 0x00591a _Ctest > > Now it needs to be tested with a larger PIC. > Igor > > > ______________________________________________________________ >> Od: Mikael Nordman <mik...@fl...> >> Komu: <om...@vo...>, <fla...@li...> >> Datum: 09.06.2015 14:06 >> Předmět: Re: [Flashforth-devel] Fwd: Re: C functions/libs at 0x11000 and up >> >> You need to modify the linker script to move relevant sections to a memory region starting at 0x11000 >> >> Sent from my LG Mobile >> >> ------ Original message------ >> >> From: om1zz >> >> Date: Tue, 09/06/2015 13:24 >> >> To: fla...@li...; >> >> Subject:Re: [Flashforth-devel] Fwd: Re: C functions/libs at 0x11000 and up >> >> dspic33EP512MC502 (and friends) seems to be a good candidate for such a setup. Now, how to push the C stuff and libs up there. I. >Note that FF also uses a flash area for the EEPROM emulation. >For 128 Kb and larger devices it is placed at 0x10000-0x10fff in flash. >You could place the c-code and libs at 0x11000 and up. >There is also some unused flash space in 0x10000 - RAMSIZE upto 0xffff. > >For smaller devices the EEPROM emulation is placed inside the FF core >dictionary area. ------------------------------------------------------------------------------ _______________________________________________ Flashforth-devel mailing list Fla...@li... https://lists.sourceforge.net/lists/listinfo/flashforth-devel >> >> ---------- >> >> ------------------------------------------------------------------------------ >> >> >> ---------- >> >> _______________________________________________ >> Flashforth-devel mailing list >> Fla...@li... >> https://lists.sourceforge.net/lists/listinfo/flashforth-devel >> |