Table of Contents

Chapter 1. Introduction

1.1 Summary of Design Conventions

Chapter 2. Rabbit Hardware Design Overview

2.1 Design Conventions
2.1.1 Rabbit Programming Connector
2.1.2 Memory Chips
2.1.3 Oscillator Crystals
2.2 ESD Design Guidelines
2.3 Operating Voltages
2.4 Power Consumption
2.5 Through-Hole Technology
2.6 Moisture Sensitivity

Chapter 3. Core Design and Components

3.1 Clocks
3.2 Floating Inputs
3.3 Basic Memory Design
3.3.1 Memory Access Time
3.3.2 Interfacing External I/O with Rabbit 4000 Designs
3.4 PC Board Layout and Memory Line Permutation
3.5 PC Board Layout and Electromagnetic Interference
3.5.1 Rabbit 4000 Low EMI Features

Chapter 4. How Dynamic C Cold Boots the Target System

4.1 How the Cold Boot Mode Works In Detail
4.2 Program Loading Process Overview
4.2.1 Program Loading Process Details

Chapter 5. Rabbit Memory Organization

5.1 Physical Memory
5.1.1 Flash Memory
5.1.2 SRAM
5.1.3 Basic Memory Configuration
5.2 Memory Segments
5.2.1 Definition of Terms
5.2.2 The Base (or Root) Segment
5.2.2.1 Types of Code Best-Suited for the Base Segment
5.2.3 The Data Segment
5.2.4 The Stack Segment
5.2.5 The Extended Memory Segment
5.3 Separate I&D Space
5.3.1 Enable Separate I&D Space
5.3.2 Separate I&D Space Mappings in Dynamic C
5.3.2.1 Compiling to RAM
5.3.2.2 Compiling to Flash
5.3.3 Customizing Interrupts
5.4 How The Compiler Compiles to Memory
5.4.1 Placement of Code in Memory
5.4.2 Paged Access in Extended Memory
5.5 Memory Planning
5.5.1 Flash
5.5.2 Static RAM

Chapter 6. The Rabbit BIOS

6.1 Startup Conditions Set by the BIOS
6.1.1 Registers Initialized in the BIOS
6.1.2 Origins
6.2 BIOS Flowchart
6.3 Internally-Defined Macros
6.4 Modifying the BIOS
6.4.1 Macros that Affect the BIOS
6.4.2 Advanced Options
6.5 Memory Mapping in Dynamic C
6.5.1 Origins Starting with Dynamic C 10.21
6.5.1.1 Example of Origin Declarations
6.5.1.2 Origin Declaration Syntax
6.5.1.3 Origin Declaration Semantics
6.5.1.4 Origin Declaration Start and End Syntax
6.5.1.5 Origin Application Syntax
6.5.1.6 Origin Macro Declaration Syntax
6.5.2 Origins Prior to Dynamic C 10.21
6.5.2.1 Origin Directive Semantics
6.5.2.2 Defining a Memory Region
6.5.2.3 Action Qualifiers
6.5.2.4 I&D Qualifiers
6.5.2.5 Follow Qualifiers
6.5.2.6 Origin Directive Examples
6.5.2.7 Origin Directives in Program Code
6.5.2.8 Origin Directive to Reserve Blocks of Memory

Chapter 7. The System Identification and User Blocks

7.1 System ID Block Details
7.1.1 Definition of SysIDBlock
7.1.2 Reading the System ID Block
7.1.2.1 Determining the Existence of the System ID Block
7.1.3 Writing the System ID Block
7.2 User Block Details
7.2.1 Boot Block Issues
7.2.2 Reserved Flash Space
7.2.3 Reading the User Block
7.2.4 Writing the User Block

Chapter 8. BIOS Support for Program Cloning

8.1 Overview of Cloning
8.2 Creating a Clone
8.2.1 Steps to Enable and Set Up Cloning
8.2.2 Steps to Perform Cloning
8.2.3 LED Patterns
8.3 Cloning Questions
8.3.1 MAC Address
8.3.2 Different Flash Types
8.3.3 Different Memory Sizes
8.3.4 Design Restrictions

Chapter 9. Low-Power Design and Support

9.1 Details of the Rabbit 4000 Low-Power Features
9.1.1 Special Chip Select Features
9.1.2 Reducing Clock Speed
9.1.3 Preferred Crystal Configuration
9.2 To Further Decrease Power Consumption
9.2.1 What To Do When There is Nothing To Do
9.2.2 Sleepy Mode
9.2.3 External 32 kHz Oscillator
9.2.4 Conformal Coating of 32.768 kHz Oscillator Circuit
9.2.5 Software Support for Sleepy Mode
9.2.6 Baud Rates in Sleepy Mode
9.2.7 Debugging in Sleepy Mode

Chapter 10. Supported Flash Memories

10.1 Supporting Other Flash Devices
10.2 Writing Your Own Flash Driver

Chapter 11. Troubleshooting Tips for New Rabbit-Based Systems

11.1 Initial Checks
11.2 Diagnostic Tests
11.2.1 Program to Transmit Diagnostic Tests
11.2.2 Diagnostic Test #1: Toggle the Status Pin
11.2.2.1 Using serialIO.exe
11.2.3 Diagnostic Test #2

Appendix A. Supported Rabbit 4000 Baud Rates

Index