Data (RAM)

Root

Code

(flash)

Using Stack Segment for a Data Window

Stack Segment used as data window

Data Segment used as data

window

Stacks in data segment

Root Segment mapped to RAM has both root code and data.

Stack Segment used for stack

Data (RAM)

Root

Code

(RAM)

Using Data Segment for

a Data Window (Code must be copied to RAM on startup.)

Figure 3-7. Schemes for Data Memory Windows

A third approach is to place the data and root code in RAM in the root segment, freeing the data segment to be a window to extended memory. This requires copying the root code to RAM at startup time. Copying root code to RAM is not necessarily that burdensome since the amount of RAM required can be quite small, say 12K for example.

The XPC segment at the top of the memory can also be used as a data segment by pro- grams that are compiled into root memory. This is handy for small programs that need to access a lot of data.

3.2.4 Practical Memory Considerations

The simplest Rabbit configurations have one flash memory chip interfaced using /CS0 and one RAM memory chip interfaced using /CS1. Typical Rabbit-based systems use 256K of flash and 128 K of RAM, but smaller or larger memories may be used.

Although the Rabbit can support code size approaching a megabyte, it is anticipated that the majority of applications will use less than 250K of code, equivalent to approximately 10,000–20,000 C statements. This reflects both the compact nature of Rabbit code and the typical size of embedded applications.

Directly accessible C variables are limited to approximately 44K of memory, split between data stored in flash and RAM. This will be more than adequate for many embed-

30

Rabbit 3000 Microprocessor

Page 39
Image 39
Jameco Electronics 2000, 3000 manual Practical Memory Considerations, Data RAM Root Code