<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="https://community.arm.com/utility/feedstylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Data RAM problems with the nRF24E1</title><link>https://community.arm.com/developer/tools-software/tools/f/keil-forum/24795/data-ram-problems-with-the-nrf24e1</link><description> 
Hello. I am working with some existing code that we previously
used SDCC as the compiler for the Nordic Semiconductor nRF24E1. I am
porting this code over to the Keil compiler and I am having some
problems. With the SDCC compiler it appeared that we</description><dc:language>en-US</dc:language><generator>Telligent Community 10</generator><item><title>RE: Data RAM problems with the nRF24E1</title><link>https://community.arm.com/thread/139341?ContentTypeID=1</link><pubDate>Mon, 05 Oct 2009 06:52:45 GMT</pubDate><guid isPermaLink="false">dd9e70c8-6d3c-4c71-b136-2456382a7b5c:4c4264f0-d04c-4e2f-8e3e-21fc69db2359</guid><dc:creator>Josh Blackann</dc:creator><description>&lt;p&gt;&lt;p&gt;
Thanks for the help.&lt;/p&gt;
&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Data RAM problems with the nRF24E1</title><link>https://community.arm.com/thread/135933?ContentTypeID=1</link><pubDate>Mon, 05 Oct 2009 06:50:23 GMT</pubDate><guid isPermaLink="false">dd9e70c8-6d3c-4c71-b136-2456382a7b5c:cb1a835d-6939-44a7-b0e1-5472079fa366</guid><dc:creator>Andy Neil</dc:creator><description>&lt;p&gt;&lt;p&gt;
What the Nordic guys are telling is standard 8051 &amp;quot;bible&amp;quot;
stuff!&lt;/p&gt;

&lt;p&gt;
See: &lt;a href="http://www.8052.com/faqs/120112"&gt;www.8052.com/.../120112&lt;/a&gt;
for the links to the so-called &amp;quot;bible&amp;quot; for the 8051.&lt;/p&gt;

&lt;p&gt;
See: &lt;a href="http://www.keil.com/support/man/docs/c51/c51_le_memtypes.htm"&gt;http://www.keil.com/support/man/docs/c51/c51_le_memtypes.htm&lt;/a&gt;
for Keil&amp;#39;s C51 &lt;i&gt;extensions&lt;/i&gt; to deal with this;&lt;/p&gt;

&lt;p&gt;
See: &lt;a href="http://www.keil.com/support/man/docs/c51/c51_le_memmodels.htm"&gt;http://www.keil.com/support/man/docs/c51/c51_le_memmodels.htm&lt;/a&gt;
for Memory Models.&lt;/p&gt;

&lt;p&gt;
See also: &lt;a href="http://www.8052.com/tutorial"&gt;http://www.8052.com/tutorial&lt;/a&gt; for
basic 8051 architecture tutorials.&lt;/p&gt;

&lt;p&gt;
HTH.&lt;/p&gt;
&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Data RAM problems with the nRF24E1</title><link>https://community.arm.com/thread/125755?ContentTypeID=1</link><pubDate>Mon, 05 Oct 2009 06:24:00 GMT</pubDate><guid isPermaLink="false">dd9e70c8-6d3c-4c71-b136-2456382a7b5c:1ae3fd04-af69-4607-bf69-bb4e5cc30290</guid><dc:creator>Josh Blackann</dc:creator><description>&lt;p&gt;&lt;p&gt;
From the Datasheet for the nRF24E1: The embedded microcontroller
is the DW8051 MacroCell from Synopsys which is similar to the Dallas
DS80C320 in terms of hardware features and instruction-cycle
timing.&lt;/p&gt;

&lt;p&gt;
I sent an email request into the tech support at Nordic Semi and
here is the response that I received.&lt;br /&gt;
*********&lt;br /&gt;
The memory model of the 8051 can be a bit confusing :)&lt;/p&gt;

&lt;p&gt;
The chip has got 256 bytes of RAM, but only 128 of them can be
addressed directly. This is the variables you define as &amp;quot;data&amp;quot; in
Keil and is the default location for variables when using the small
memory model.&lt;/p&gt;

&lt;p&gt;
In addition to those you have 128 bytes of RAM that must be
reached through indirect addressing. In Keil you access those by
defining the variables as &amp;quot;idata&amp;quot;.&lt;/p&gt;

&lt;p&gt;
You have also got 1024 bytes of RAM in the &amp;quot;XDATA&amp;quot; space. To
clarify, this is not a part of the program memory but a separate 1024
byte SRAM block connected to the 8051 processor.&lt;/p&gt;

&lt;p&gt;
Both data and idata shows up as &amp;quot;data&amp;quot; in the compile log in Keil,
but you must make sure that none of these blocks exceed 128 bytes on
their own.&lt;/p&gt;

&lt;p&gt;
IDATA is a bit slower than DATA, and XDATA is considerably slower,
so when performance is important you should use DATA.&lt;/p&gt;

&lt;p&gt;
Best regards&lt;br /&gt;
Torbj&amp;Atilde;&amp;cedil;rn &amp;Atilde;&amp;tilde;vrebekk&lt;br /&gt;
Application Engineer&lt;br /&gt;
Nordic Semiconductor&lt;/p&gt;
&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Data RAM problems with the nRF24E1</title><link>https://community.arm.com/thread/115276?ContentTypeID=1</link><pubDate>Sat, 03 Oct 2009 13:44:48 GMT</pubDate><guid isPermaLink="false">dd9e70c8-6d3c-4c71-b136-2456382a7b5c:57830281-694a-496e-9719-5276f6172e8e</guid><dc:creator>doubt that my ISP Al Bradford</dc:creator><description>&lt;p&gt;&lt;p&gt;
I agree. I think I read somewhere it came from the DS320
family.&lt;br /&gt;
Bradford&lt;/p&gt;
&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Data RAM problems with the nRF24E1</title><link>https://community.arm.com/thread/103490?ContentTypeID=1</link><pubDate>Sat, 03 Oct 2009 13:38:18 GMT</pubDate><guid isPermaLink="false">dd9e70c8-6d3c-4c71-b136-2456382a7b5c:8a7f25bf-eef4-4987-b39c-710f597689ea</guid><dc:creator>&amp;#178;erik malund</dc:creator><description>&lt;p&gt;&lt;p&gt;
somebody (the OP) would post which &amp;#39;51 derivative is in the
thingy.&lt;/p&gt;

&lt;p&gt;
I seem to recall somewhere that it was posted that it was some
SILabs chip&lt;/p&gt;

&lt;p&gt;
Erik&lt;/p&gt;
&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Data RAM problems with the nRF24E1</title><link>https://community.arm.com/thread/90021?ContentTypeID=1</link><pubDate>Sat, 03 Oct 2009 13:07:13 GMT</pubDate><guid isPermaLink="false">dd9e70c8-6d3c-4c71-b136-2456382a7b5c:719e8254-b760-4a36-804b-77f9e7527df0</guid><dc:creator>doubt that my ISP Al Bradford</dc:creator><description>&lt;p&gt;&lt;p&gt;
Josh;&lt;br /&gt;
I&amp;#39;m sorry that I failed to answer your original post.&lt;br /&gt;
The true answer is &amp;quot;yes&amp;quot;. There are instructions and examples for
using xdata in the C51 Complete User&amp;#39;s Guide under Memory Types -&amp;gt;
XDATA.&lt;br /&gt;
Also look at the Absolute Variable Location section of the manual.
One example they give is:&lt;br /&gt;
char xdata txt[256] _at_ 0xE000;/*array at xdata 0xE000*/.&lt;/p&gt;
&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Data RAM problems with the nRF24E1</title><link>https://community.arm.com/thread/56980?ContentTypeID=1</link><pubDate>Sat, 03 Oct 2009 12:50:48 GMT</pubDate><guid isPermaLink="false">dd9e70c8-6d3c-4c71-b136-2456382a7b5c:1fd4f758-f84a-45a0-90bc-87b86485e75f</guid><dc:creator>doubt that my ISP Al Bradford</dc:creator><description>&lt;p&gt;&lt;p&gt;
Josh;&lt;br /&gt;
It appears that you have a &amp;quot;non-standard&amp;#39; 8051 device.&lt;br /&gt;
The program/code space is a von Neumann structure controled by the
ERAM configuration. You will need to read the data sheets for that
info but you can place variables in the XDATA space via two
methods.&lt;br /&gt;
You can select LARGE as the Memory Model and all your variables will
be placed in XDATA space.&lt;/p&gt;

&lt;p&gt;
&lt;b&gt;I do not recommend this method.&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;
The second choice and the choice I recommend is to select SMALL as
the memory Model and then explicitly assign your seldom used
variables, your structs and your arrays into the XDATA space.&lt;br /&gt;
Example is &amp;quot;int xdata my_var&amp;quot;.&lt;br /&gt;
How you drive the ERAM configuration, I will have to defer to the
data sheets becaused I have never used this device.&lt;br /&gt;
Bradford&lt;/p&gt;
&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Data RAM problems with the nRF24E1</title><link>https://community.arm.com/thread/56989?ContentTypeID=1</link><pubDate>Fri, 02 Oct 2009 14:05:50 GMT</pubDate><guid isPermaLink="false">dd9e70c8-6d3c-4c71-b136-2456382a7b5c:230bbea5-0b2a-443a-ae13-f2ca670df473</guid><dc:creator>ImPer Westermark</dc:creator><description>&lt;p&gt;&lt;p&gt;
You may have 256 bytes of RAM, but if you are going to fit a stack
there too, you must leave a suitable number of bytes for the
stack.&lt;/p&gt;

&lt;p&gt;
If the chip has any XDATA memory, then you should configure your
project to know about this memory. And then tag some variables as
xdata.&lt;/p&gt;
&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item></channel></rss>