I don't think fardata works, best use -mdata-64k (when compiling your
MSP430 app, not the compiler itself), only using 16 bit data pointers.
That means you can't put constant data in .fartext either (unless you
load it manually using an assembly routine - TI's got some app notes on
that topic, IIRC). 

> -----Original Message-----
> From: thln [mailto:[email protected]]
> Sent: woensdag 22 september 2010 17:22
> To: GCC for MSP430 - http://mspgcc.sf.net
> Subject: Re: [Mspgcc-users] the dreaded x-branch
> 
> 
> Hello, Michiel
> 
> I compile your version (based on binutils-2.18, gcc-3.2.3) on Linux
> (ubuntu) and it works, thank you!
> Addressing goes well with the 20bit
> 
> Finally, there is however a problem when I defined a section in
fardata
> (0x10500) the compiler truncates the address (0x0500)!
>     10c18:    d1 42 00 05     mov.b &0x0500,2(r1)    ;0x0002(r1)
> I have not defined this section in the linker script, but like this:
>      -Wl,--section-start=.fardata=0x10500 \
>      -Wl,--section-start=.fartext=0x10C00
> 
> I'll test it with a linker script later ...
> 
> I was not able to compile your version (innovents) under Windows
> (cygwin
> 1.7)!
> I have problems with the bintutils-2.18, If you have any tips to come,
> shows me please !
> It's the next step ...
> 
> For Milhai I put my test files below
> 
> Bye!
> 
> ---- Makefile ----
> # makefile configuration
> NAME            = test1
> OBJECTS         = main.o
> CPU             = msp430x5418
> 
> CFLAGS          = -mmcu=${CPU} -O2 -Wall -g
> 
> TOOLCHAIN_PATH="/home/thierry/mspgcc.innoventis.de/local_linux"
> GCC_PATH =$(TOOLCHAIN_PATH)/bin/msp430-
> 
> CC=$(GCC_PATH)gcc
> OBJDUMP=$(GCC_PATH)objdump
> OBJCOPY=$(GCC_PATH)objcopy
> OBJSIZE=$(GCC_PATH)size
> 
> 
> DMWT_PATH=/home/thierry/dfw/dfw-0.19
> DMWT=${DMWT_PATH}/dmwt
> 
> VPATH = ../src
> 
> .PHONY: all FORCE clean download download-jtag download-bsl dist
> 
> #all should be the first target. it's built when make is run without
> args
> all: ${NAME}.elf ${NAME}.a43 ${NAME}.lst ${NAME}.hex
> 
> #confgigure the next line if you want to use the serial download
> download: dmwt
> #download: download-jtag
> #download: download-bsl
> 
> #additional rules for files
> ${NAME}.elf: ${OBJECTS}
>      ${CC} -mmcu=${CPU} -o $@ ${OBJECTS} \
>      -Wl,--section-start=.fardata=0x10500 \
>      -Wl,--section-start=.fartext=0x10C00
> 
> 
> ${NAME}.a43: ${NAME}.elf
>      ${OBJCOPY} -O ihex $^ $@
> 
> ${NAME}.hex: ${NAME}.elf
>      msp430-objcopy -O ihex $^ $@
> 
> ${NAME}.lst: ${NAME}.elf
>      ${OBJDUMP} -dSt $^ >$@
> 
> download-jtag: all
>      msp430-jtag -e ${NAME}.elf
> 
> download-bsl: all
>      msp430-bsl -e ${NAME}.elf
> 
> dmwt:all
>      ${DMWT} -vd ${NAME}.elf
> 
> debug:all
>      msp430-gdbproxy msp430
> 
> clean:
>      rm -f ${NAME}.elf ${NAME}.a43 ${NAME}.lst ${OBJECTS}
> 
> #backup archive
> dist:
>      tar czf dist.tgz *.c *.h *.txt makefile
> 
> ----- main.c -----
> #include "msp430x54xx.h"
> 
> #define fartext __attribute__((section(".fartext")))
> #define fardata __attribute__((section(".fardata")))
> 
> 
> 
> fartext uint8_t foo(uint8_t luc_a)
> {
> return ++luc_a;
> }
> 
> fardata uint8_t TEST_fartext[] = {0x01, 0x23, 0x45};
> 
> fartext int main(void)
> {
> volatile uint8_t a=0;
> volatile uint8_t b;
> volatile uint8_t c;
> 
> while (1)
>      {
>      b = foo(a);
>      c = TEST_fartext[0];
>      }
> return 0;
> }
> 
> 
> 
> ----- Disassembly listing ----
> 
> Disassembly of section .fartext:
> 
> 00010c00 <foo>:
> 
> 
> 
> fartext uint8_t foo(uint8_t luc_a)
> {
> return ++luc_a;
>     10c00:    5f 53           inc.b    r15
>     10c02:    7f f3           and.b    #-1,    r15    ;r3 As==11
> }
>     10c04:    10 01           reta
> 
> 00010c06 <main>:
> 
> fardata uint8_t TEST_fartext[] = {0x01, 0x23, 0x45};
> 
> fartext int main(void)
> {
>     10c06:    31 40 fc 5b     mov    #23548,    r1    ;#0x5bfc
> volatile uint8_t a=0;
>     10c0a:    c1 43 00 00     mov.b    #0,    0(r1)    ;r3 As==00,
> 0x0000(r1)
> volatile uint8_t b;
> volatile uint8_t c;
> 
> while (1)
>      {
>      b = foo(a);
>     10c0e:    6f 41           mov.b    @r1,    r15
>     10c10:    b1 13 00 0c     calla    #0x10c00
>     10c14:    c1 4f 01 00     mov.b    r15,    1(r1)    ;0x0001(r1)
>      c = TEST_fartext[0];
>     10c18:    d1 42 00 05     mov.b &0x0500,2(r1)    ;0x0002(r1)
>     10c1c:    02 00
>     10c1e:    f7 3f           jmp    $-16         ;abs 0xc0e
> Disassembly of section .text:
> 
> 00005c00 <__init_stack>:
>      5c00:    31 40 00 5c     mov    #23552,    r1    ;#0x5c00
> 
> 00005c04 <__low_level_init>:
>      5c04:    b2 40 80 5a     mov    #23168, &0x015c    ;#0x5a80
>      5c08:    5c 01
> 
> 00005c0a <__do_clear_bss>:
>      5c0a:    3f 40 01 00     mov    #1,    r15    ;#0x0001
>      5c0e:    0f 93           tst    r15
>      5c10:    04 24           jz    $+10         ;abs 0x5c1a
>      5c12:    1f 83           dec    r15
>      5c14:    cf 43 00 1c     mov.b    #0,    7168(r15);r3 As==00,
> 0x1c00(r15)
>      5c18:    fc 23           jnz    $-6          ;abs 0x5c12
> 
> 00005c1a <__do_copy_data>:
>      5c1a:    3f 40 00 00     mov    #0,    r15    ;#0x0000
>      5c1e:    0f 93           tst    r15
>      5c20:    06 24           jz    $+14         ;abs 0x5c2e
>      5c22:    2f 83           decd    r15
>      5c24:    40 18 9f 4f     movx
> 23608(r15),7168(r15);0x05c38(r15),
> 0x01c00(r15)
>      5c28:    38 5c 00 1c
>      5c2c:    fa 23           jnz    $-10         ;abs 0x5c22
> 
> 00005c2e <__jump_to_main>:
>      5c2e:    80 01 06 0c     bra    #0x10c06
> 
> 00005c32 <__ctors_end>:
>      5c32:    80 00 36 5c     bra    #0x05c36
> 
> 00005c36 <_unexpected_>:
>      5c36:    00 13           reti
> Disassembly of section .vectors:
> 
> 0000ff80 <InterruptVectors>:
>      ff80:    32 5c 32 5c 32 5c 32 5c 32 5c 32 5c 32 5c 32 5c
> 2\2\2\2\2\2\2\2\
>      ff90:    32 5c 32 5c 32 5c 32 5c 32 5c 32 5c 32 5c 32 5c
> 2\2\2\2\2\2\2\2\
>      ffa0:    32 5c 32 5c 32 5c 32 5c 32 5c 32 5c 32 5c 32 5c
> 2\2\2\2\2\2\2\2\
>      ffb0:    32 5c 32 5c 32 5c 32 5c 32 5c 32 5c 32 5c 32 5c
> 2\2\2\2\2\2\2\2\
>      ffc0:    32 5c 32 5c 32 5c 32 5c 32 5c 32 5c 32 5c 32 5c
> 2\2\2\2\2\2\2\2\
>      ffd0:    32 5c 32 5c 32 5c 32 5c 32 5c 32 5c 32 5c 32 5c
> 2\2\2\2\2\2\2\2\
>      ffe0:    32 5c 32 5c 32 5c 32 5c 32 5c 32 5c 32 5c 32 5c
> 2\2\2\2\2\2\2\2\
>      fff0:    32 5c 32 5c 32 5c 32 5c 32 5c 32 5c 32 5c 00 5c
> 2\2\2\2\2\2\2\.\
> 
> 
> 
> 
> 
> 
> 
>
-----------------------------------------------------------------------
> -------
> Start uncovering the many advantages of virtual appliances
> and start using them to simplify application deployment and
> accelerate your shift to cloud computing.
> http://p.sf.net/sfu/novell-sfdev2dev
> _______________________________________________
> Mspgcc-users mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/mspgcc-users

------------------------------------------------------------------------------
Start uncovering the many advantages of virtual appliances
and start using them to simplify application deployment and
accelerate your shift to cloud computing.
http://p.sf.net/sfu/novell-sfdev2dev
_______________________________________________
Mspgcc-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/mspgcc-users

Reply via email to