
In last months Ask Larry column, a customer had asked a question about saving variables and the use of certain memory. After thinking about it for a bit, I felt compelled to dive deeper into the realm of memory. So in brief, I am going to discuss the different memory devices and how they are used in Rabbit products. I would first like to go over a few definitions that I think would be most helpful for this discussion.
- Volatile – memory which has no provision for maintaining its content when power is removed.
- Non-Volatile – which will retain its content when power is removed.
- Parallel Flash – a non-volatile memory device connected to the address and data buses of the Rabbit used to store the program. There is also a User Block area available to the customer for storing a limited amount of non-volatile data. In some of our products it is possible for the customer to allocate some of this memory to our FS2 file system for storing data. This feature is not supported in Rabbit 4000 products. The flash can be accessed at frequencies up to 30MHz.
- SFlash (Serial Flash) – a non-volatile memory device connected to the Rabbit via SPI (Serial Peripheral Interface). These can be used in two ways:
- Store user data either directly using low-level functions or via FAT
- Store the user program
Except for the RCM33xx, which support the Remote Application Upload feature, the above two usages are mutually exclusive.
- NAND Flash – a non-volatile memory device connected to the Rabbit via a parallel interface - usually External I/O. This memory is used to store user data via FAT.
- SRAM (Static Random Access Memory) – volatile memory connected to the address and data buses of the Rabbit. There are a few types of SRAM which can be used in several ways:
- store temporary data
- program execution – mostly during initial program debugging
- BBRAM (Battery Backed SRAM) – non-volatile SRAM used to store “persistent” data. It is used (required) by FAT for its “cache.”
- FSRAM (Fast SRAM) used for program execution in our fastest products. These devices can operate at frequencies up to 100MHz.
Parallel Flash
All Rabbit 2000 products have varying amounts of parallel Flash and standard SRAM. The program is generally loaded into the flash for execution and the SRAM is used for data storage.
Fast RAM
The RCM32xx introduced a new memory model which has the Rabbit executing its program from an FSRAM device. The program is still loaded into a parallel flash but is then copied into the FSRAM for execution. The FSRAM is shared between program and “normal” data. There is also a slower BBRAM device for non-volatile data storage. Products that use this memory model are: RCM32xx, RCM33xx and the RCM41xx, RCM42xx, RCM44xx and RCM45xx that run at 58.9MHz.
Fast RAM and Serial Flash
The RCM43xx introduces yet another memory model which has the Rabbit executing its program from an FSRAM device. The operation is essentially identical to the RCM32xx except that the program is loaded into a SFlash. For the RCM43xx there is a PIC microprocessor which interfaces between the Rabbit and the SFlash. In the current design the SFlash is generally not available for user data except for the User Block. In the future the SFlash may support FAT.
One thing to remember about these “Fast RAM” products – both the program and the user data are stored in the same memory. The user can put data in the BBRAM but that requires extra attention on the part of the user and the access to that memory is slower. The boundary between data memory and program memory is quite variable. The less FSRAM is used for data allows more of it to be used for program.
- Larry C.
Larry Cicchinelli is Rabbit’s Technical Support Manager. He has 30 years of embedded experience, and is considered one of the foremost authorities on Rabbit products. Larry and his staff offer comprehensive technical support to Rabbit customers.
Submit your questions for Larry via email at
AskLarry@rabbit.com
Read more Ask Larry Answers