Re: [Flashforth-devel] Fwd: Re: C functions/libs at 0x11000 and up
Brought to you by:
oh2aun
From: om1zz <om...@vo...> - 2015-06-09 17:46:57
|
But that puts user Cfunction into the ffcode section, that is not what we want, do we? I. ______________________________________________________________ > Od: Mikael Nordman <mik...@fl...> > Komu: <fla...@li...> > Datum: 09.06.2015 19:03 > Předmět: Re: [Flashforth-devel] Fwd: Re: C functions/libs at 0x11000 and up > >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 >>> > >------------------------------------------------------------------------------ >_______________________________________________ >Flashforth-devel mailing list >Fla...@li... >https://lists.sourceforge.net/lists/listinfo/flashforth-devel > |