Jump to content
tml

MSP430 GCC - does it support 20 bit addressing?

Recommended Posts

Hi,

I got tired fighting with inlined assemblies to get the access to ROM over 64kB and after thorough considerations decided to move to CCSv6. But, I noticed that CCSv6 brought cooperation with MSP430 GCC (http://www.ti.com/tool/msp430-gcc-opensource) into CCSv6 and I wonder is this compiler will support 20-bit addressing natively (with memory model) as opposed to inline assembly.

 

Do you have any experience with it?

 

Best Regards,

tml

Share this post


Link to post
Share on other sites

The old mspgcc didn't except a last dev release @@pabigot made, but after that RedHat took on the project at TI's funding to re-do the msp430 gcc port (there were legal issues with having Peter's mspgcc supported by the official GCC project). This new RedHat port is still a bit... rough around the edges, but it does support 20-bit addressing. Use -mlarge to enable it (I think you need to add this manually to the CCS project properties).

 

Sent from my Galaxy Note 10.1

Share this post


Link to post
Share on other sites

The old mspgcc didn't except a last dev release @@pabigot made, but after that RedHat took on the project at TI's funding to re-do the msp430 gcc port (there were legal issues with having Peter's mspgcc supported by the official GCC project). This new RedHat port is still a bit... rough around the edges, but it does support 20-bit addressing. Use -mlarge to enable it (I think you need to add this manually to the CCS project properties).

 

Sent from my Galaxy Note 10.1

As for the mspgcc 4.6.3 I painfully got to know it doesn't support it :-) Possibly after turning on the optimization (don't know yet, didn't check), the far rom access function based on inlined assemblies stopped working properly and I thought CCS will be a better solution. But somehow I still feel gcc would be better for me if only it supported access to far rom from the C level.

 

As for the memory model for the sake of efficiency I would rather stick to small memory model and just declare some pointers as 20-bit ones, like mentioned at http://sourceforge.net/apps/mediawiki/mspgcc/index.php?title=Gcc47:20-Bit_Design#Data_type_attribute___a20__

Share this post


Link to post
Share on other sites

As for the mspgcc 4.6.3 I painfully got to know it doesn't support it :-) Possibly after turning on the optimization (don't know yet, didn't check), the far rom access function based on inlined assemblies stopped working properly and I thought CCS will be a better solution. But somehow I still feel gcc would be better for me if only it supported access to far rom from the C level.

 

As for the memory model for the sake of efficiency I would rather stick to small memory model and just declare some pointers as 20-bit ones, like mentioned at http://sourceforge.net/apps/mediawiki/mspgcc/index.php?title=Gcc47:20-Bit_Design#Data_type_attribute___a20__

Ok keep in mind that page and wiki references @@pabigot 's mspgcc, and any talk of 20-bit refers to his last dev release (4.7.0-based), so it won't work in the new RedHat msp430-elf-gcc. I'm not sure if what you're thinking about is possible with msp430-elf-gcc's current codebase.

 

Sent from my Galaxy Note II with Tapatalk 4

Share this post


Link to post
Share on other sites

The 4.7 dev version of mspgcc which supports 20-bit addresses tried to support mixed memory models so code could be small with data large, or vice-versa, but GCC wasn't architected for that sort of thing so there can be issues.

 

AFAIK the Red Hat port supports only everything-16-bit and everything-32-bit, with -mlarge having a pretty big impact on code and data size (all pointers and size_t become 32-bit). I don't have a lot of experience with it, though, since a feature I need that's in the CCS6 version still hasn't been made available in the upstream source repositories.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×