Hi
sorry for highjacking this thread, but I'm also struggling to access data put
into the fartext segment.
On 13.04.2011, at 21:23, JMGross wrote:
> ..But I have something I wrote for accessing upper flash as data storage.
>
> static inline unsigned char FlashReadByte (unsigned long address){
> unsigned char result;
> unsigned int sr, flash;
> __asm__ __volatile__ ("mov r2,%0":"=r"(sr):);
> // save SR before disabling IRQ
> _DINT();
> __asm__ __volatile__ ("movx.a %1,%0":"=r"(flash):"m"(address));
> __asm__ __volatile__ ("movx.b @%1, %0":"=r"(result):"r"(flash));
> __asm__ __volatile__ ("mov %0,r2"::"r"(sr));
> // restore previous SR and IRQ state
> return result;
> // aligned address -> low-byte contains result
> }
I'm using the mspgcc4-20110312 release (on mac ox), and the code above doesn't
work for me (yet). Are there some extra compiler flags aside from the e.g.
-mmcu=msp430x5438 switch?
I was trying to read data at 0x10000, but the function a) wasn't inlined, and
b) did return the data from 0x00000.
I've single stepped this function and got irritated by generated assembly
code, which is much longer than the inline asm above.
I'm getting this:
.p2align 1,0
.type FlashReadByte,@function
/***********************
* Function `FlashReadByte'
***********************/
FlashReadByte:
push r4
add #llo(-10), r1
mov r1, r4
/* prologue ends here (frame size = 10) */
.L__FrameSize_FlashReadByte=0xa
.L__FrameOffset_FlashReadByte=0xc
mov r14, 6(r4)
mov r15, 6+2(r4)
/* #APP */
; 147 "main.c" 1
mov r2,r15
; 0 "" 2
/* #NOAPP */
mov r15, 2(r4)
/* #APP */
; 149 "main.c" 1
movx.a 6(r4),r15
; 0 "" 2
/* #NOAPP */
mov r15, @r4
mov @r4, r15
/* #APP */
; 150 "main.c" 1
movx.b @r15, r15
; 0 "" 2
/* #NOAPP */
mov.b r15, 4(r4)
mov 2(r4), r15
/* #APP */
; 151 "main.c" 1
mov r15,r2
; 0 "" 2
/* #NOAPP */
mov.b 4(r4), r15
/* epilogue: frame size = 10 */
add #10, r1
pop r4
ret
.Lfe3:
.size FlashReadByte,.Lfe3-FlashReadByte
;; End of function
In the "movx.a 6(r4),r15", 0x10000 was stored in r15, but in the following two
lines (mov r15, @r4 , mov @r4, r15), the upper bits get lost. I assume, if
there wouldn't be that #NOAPP stuff, it would be fine. What error do I make?
Best
Matthias
p.s. just starting with this toolchain and MSP430 in general.
------------------------------------------------------------------------------
Benefiting from Server Virtualization: Beyond Initial Workload
Consolidation -- Increasing the use of server virtualization is a top
priority.Virtualization can reduce costs, simplify management, and improve
application availability and disaster protection. Learn more about boosting
the value of server virtualization. http://p.sf.net/sfu/vmware-sfdev2dev
_______________________________________________
Mspgcc-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/mspgcc-users