I noticed something in the msp430x54xx.h header file. It seems to be missing msp430/common.h. Also missing are dma.h and gpio.h, but perhaps those still need to be ported.

Is it safe for me to add this locally until the header files are further developed?


a*


Hi JMGross wrote:
First, the 5418/19 is 100% hardware compatible to the 5437/38. The _only_ 
difference is the Flash size (128 instead of 256kb). In the middle sits the 
5435/36 with 192kb.
Everything else is 100% identical, same hardware modules, same package, even 
the same silicon errata :)

The only difference is the A series of these processors. The A types have some 
smaller differences like a separate reference voltage module which needs to be 
configured first before you can use the ADC12_A, or a
_usable_ (fully CCCITT compatible, not bit-inverted) version of the CRC16 
module. And of course lower power consumption and increased maximum clock. For 
a siginificantly higher price

Th elimitation of the NON-X version of MSPGCC is that only the lower 64K of the 
address range are usable. The compiler does not know of the extended memory 
range commands and the existence of flash beyonf
64K.
It is possible, however, to store data above 64K (the linker handles data 
explicitely put into FARTEXT segment) and access it with a hand-written 
assembly function. If you have large amounts of data but access it not
too often, this might be a way to use the additional flash. Maybe even as a 
flash disk drive :)
Also, you might place hand-written assembly functions (naked, no preample and 
such) in FARTEXT, calling them with your own calling macro (which uses CALLA 
opcode rather than CALL).
But every code the compiler generates needs to be in lowe 64K (and even with 
the 430X instructions, at least ISRs still need to be in lower 64K as the 
interrupt vectors are only 16 bit)


For the 32bit multiplication, it is sufficient to put a corrected function in 
your own project code. This will have preference over the ones in gcclib. You 
can even exchange the 64bit (software) multiplication function, so it
uses the (way faster) 32 bit hardware multiplyer. But then there is no way to 
disable usage of the hardware multiplyer for 64 bit multiplication (in ISRs or 
globally), as the compiler always assumes it software.
The inline code for 16x16 multiplication is generated correctly by the compiler.

I have written some more explicit multiplication inline functions where the 
result is twice the size of the arguments and the MPY is used with highest 
effectiveness.
Often you multiply two 16 bit values and need a 32 bit result. Using the 
standard functions (with the * operator)  this is always done by promoting the 
16 bit values to 32 bit and then do a 32x32 multiplication,
discarding the upper 32 bit of the result (if you don't cast the 16 to 32 bit 
first, the multiplication is done 16x16 bit with 16 bit result and then 
extended to 32 bit!).
Same for 32x32 to 64 bit. But the MPY already gives a 32 bit result for a 16x16 
multiplication, so It is a LOT faster, but must be used with a function call 
rather than just using the * operator.
Also, 32x32 bit is done by the compiler through a function call, while the 
16x16=32 and 32x32=64 functions are inline and subject to optimisation. Another 
speed advantage.

Note that these are partly limitations introduced by the C language spec itself 
(result of a single arithmetic operation is always the same size as its larger 
parameter).

JMGross

P.s.: you've alread found the central place for current limitations and 
workarounds. :)

And, well, since I'm not a compiler programmer (I did write one once, but this 
was a lifetime ago), but need the 54xx processor and a working compiler, yes, 
there are some parallel efforts.
I for myself extend the header files and look for workarounds myself while 
porting my hardware support library from 1232/1611 to 54xx, while using the old 
but mostly working MSPGCC.
As a plain windows user (at work) and being paid for working on our projects 
rather than on MSPGCC itself, there's no choice.
Others are working on the 4.0 branch and on the 430X extensions or the gcclib 
for these brances. Actually, the 4.0 is listed as a separate sourceforge 
project.


----- Ursprüngliche Nachricht -----
Von: Anthony Asterisk
An: [email protected]
Gesendet am: 25 Feb 2010 21:21:43
Betreff: Re: [Mspgcc-users] support for msp430F5437

I only have limited time for experimentation and possibly i can live
with the 40KB limitation.  To clarify would this limitation be 40KB*4
banks so 160KB total or actually only 40KB?


Does the 02/18/2010 mspgcc4 release have all the patches you mentioned?

It seems like the patches are
    * 430x/430x2 language extensions for increase flash size
    * header file fixes
    * 32-bit multiplication function uses wrong address for hardware
multiplier

Any central place I can look to understand the current limitations and
workarounds?
Are there multiple parallel efforts happening or is this all under the
mspgcc4 (?) cvs?


Switching to 5418/5419 is not an option since I already have hardware in
hand....


------------------------------------------------------------------------------
Download Intel® Parallel Studio Eval
Try the new software tools for yourself. Speed compiling, find bugs
proactively, and fine-tune applications for parallel performance.
See why Intel Parallel Studio got high marks during beta.
http://p.sf.net/sfu/intel-sw-dev
_______________________________________________
Mspgcc-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/mspgcc-users


Reply via email to