EmbeddedRelated.com
Forums
Memfault Beyond the Launch

R6000 and Memory Management

Started by seecwriter August 24, 2010
Does anyone know if the R6000 memory management is any better than what
is available on the R3000? Specifically, accessing ram. With the
R3000, we only had access to a fraction of the 64k root ram area. The
rest was consumed by the BIOS, and various libraries (web, ethernet,
snmp, etc.). Looking at the R6000 User Manual, it appears we are still
stuck with the 64k addressing limit. And the latest DC manual hasn't
been updated with R6000 documenation yet. So my question is, will we still be stuck with only having access to a fraction of the 64k root ram?

Steve

On Aug 24, 2010, at 9:52 AM, seecwriter wrote:
> Does anyone know if the R6000 memory management is any better than what
> is available on the R3000? Specifically, accessing ram. With the
> R3000, we only had access to a fraction of the 64k root ram area. The
> rest was consumed by the BIOS, and various libraries (web, ethernet,
> snmp, etc.). Looking at the R6000 User Manual, it appears we are still
> stuck with the 64k addressing limit. And the latest DC manual hasn't
> been updated with R6000 documenation yet. So my question is, will we still be stuck with only having access to a fraction of the 64k root ram?
>
Steve,

There's still a 64K limit for "root" memory, but Dynamic C 10 (for the Rabbit 4000 and later) supports "far" memory natively -- no more xmem2root and root2xmem calls. You can now place large data structures in far memory and access them directly, and pass far pointers around.

It seems like each release of DC 10 has moved more of the library code and data out to far memory, freeing up root for customer code. I can't site specific numbers, but I think you'll find the new compiler easier to use for dealing with large amounts of data.

You could even try it out yourself, without having to buy any Rabbit 6000 hardware. Just download the compiler and choose "compile to .bin" for some given target. You could just choose a common sample (maybe one that uses the HTTP server library?) and compare the memory usage when compiling under DC 10 and DC 9.

-Tom
In pre-version 10.xx DC, many of the Rabbit libraries required some amount of
root data space.

I'm thinking of, rabbitweb, snmp, tcp/ip, udp/ip, . We want to use all of those,
but we don't seem
to be able to use them all at the same time.  Because they, plus our own
application needs,
consume more root data space than is available. Will that still be the case?

Steve

________________________________
From: Tom Collins
To: r...
Sent: Wed, August 25, 2010 9:19:45 AM
Subject: Re: [rabbit-semi] R6000 and Memory Management

 
On Aug 24, 2010, at 9:52 AM, seecwriter wrote:
Does anyone know if the R6000 memory management is any better than what
>is available on the R3000? Specifically, accessing ram. With the 
>R3000, we only had access to a fraction of the 64k root ram area. The 
>rest was consumed by the BIOS, and various libraries (web, ethernet, 
>snmp, etc.). Looking at the R6000 User Manual, it appears we are still 
>stuck with the 64k addressing limit. And the latest DC manual hasn't 
>been updated with R6000 documenation yet. So my question is, will we still be
>stuck with only having access to a fraction of the 64k root ram?
Steve,
There's still a 64K limit for "root" memory, but Dynamic C 10 (for the Rabbit
4000 and later) supports "far" memory natively -- no more xmem2root and
root2xmem calls.  You can now place large data structures in far memory and
access them directly, and pass far pointers around.

It seems like each release of DC 10 has moved more of the library code and data
out to far memory, freeing up root for customer code.  I can't site specific
numbers, but I think you'll find the new compiler easier to use for dealing with
large amounts of data.

You could even try it out yourself, without having to buy any Rabbit 6000
hardware.  Just download the compiler and choose "compile to .bin" for some
given target.  You could just choose a common sample (maybe one that uses the
HTTP server library?) and compare the memory usage when compiling under DC 10
and DC 9.

-Tom
On Aug 25, 2010, at 10:59 AM, Steve Trigero wrote:
> In pre-version 10.xx DC, many of the Rabbit libraries required some amount of root data space.
> I'm thinking of, rabbitweb, snmp, tcp/ip, udp/ip, . We want to use all of those, but we don't seem
> to be able to use them all at the same time. Because they, plus our own application needs,
> consume more root data space than is available. Will that still be the case?
>

Steve,

As mentioned in my original message, the Rabbit libraries have moved most of their data into "far" memory, outside of the root 64K data space, leaving more of that root space available for your program.

In addition, because of the support for far objects, you can place more of your data in far memory as well, so the "out of root data space" errors are much less frequent, and (usually) easily resolved by placing something in far memory.

-Tom

Memfault Beyond the Launch