Table of Contents

1 Introduction

1.1 Summary of Design Conventions

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 Operating Voltages
2.3 Power Consumption
2.4 Through-hole Technology

3 Core Design and Components

3.1 Clocks
3.1.1 Low-Power Design
3.1.2 Conformal Coating of 32.768 kHz Oscillator Circuit
3.2 Basic Memory Design
3.2.1 Memory Access Time
3.2.2 Precautions for Unprogrammed Flash Memory
3.3 PC Board Layout and Memory Line Permutation
3.4 PC Board Layout and Electromagnetic Interference
3.4.1 EMI Regulations
3.4.1.1 EMI Measuring Devices
3.4.1.2 Classes For EMI Testing
3.4.2 Layout and Decoupling for Low EMI
3.4.2.1 EMI Sources
3.4.2.2 Clock Signal Pin 1
3.4.2.3 High Frequency Oscillator Circuit
3.4.2.4 Processor Decoupling
3.4.2.5 Elimination of Power Plane

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

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 Definitions
5.2.2 The Root Memory Segment
5.2.2.1 Types of Code Best-Suited for the Root Memory Segment
5.2.3 The Data Segment
5.2.4 The Stack Segment
5.2.5 The Extended Memory Segment
5.3 How The Compiler Compiles to Memory
5.3.1 Placement of Code in Memory
5.3.2 Paged Access in Extended Memory

6 The Rabbit BIOS

6.1 Startup Conditions Set Up By the BIOS
6.2 BIOS Flowchart
6.3 Internally Defined Macros
6.4 Modifying the BIOS
6.5 Origin Statements to the Compiler
6.5.1 Origin Statement Syntax
6.5.2 Origin Statement Semantics
6.5.3 Origin Statement Examples
6.5.4 Origin Directives in Program Code

7 The System ID Block

7.1 Definition of SysIDBlock
7.2 Access
7.2.1 Reading the System ID Block
7.2.2 Writing the System ID Block
7.3 Determining the Existence of the System ID Block

8 BIOS Support for Program Cloning

8.1 Overview of Cloning
8.1.1 Evolution of Cloning Support
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 Sizes
8.3.3 Design Restrictions

9 Low-Power Design and Support

9.1 Software Support for Low-Power Sleepy Modes
9.2 Baud Rates in Sleepy Mode

10 Memory Planning

10.1 Making a RAM-Only Board
10.1.1 Hardware Changes
10.1.2 Software Changes

11 Flash Memories

11.1 Supporting Other Flash Devices
11.2 Writing Your Own Flash Driver

12 Troubleshooting Tips for New Rabbit-Based Systems

12.1 Initial Checks
12.2 Diagnostic Tests
12.2.1 Program to Transmit Diagnostic Tests
12.2.2 Diagnostic Test #1: Toggle the Status Pin
12.2.3 Diagnostic Test #2

A Supported Rabbit 2000 Baud Rates

B Wait State Bug

B.1 Overview of the Bug
B.2 Wait States In Data Memory
B.3 Wait States in Code Memory
B.3.1 Instructions Affected by the Wait State Bug
B.3.1.1 Dynamic C version 7.05
B.3.1.2 Prior versions of Dynamic C
B.3.2 Output Enable Signal and Conditional Jumps
B.3.2.1 Workaround for Wait State Bug with Conditional Jumps
B.3.3 Output Enable Signal and Mul Instruction
B.3.4 Alternatives to Wait States in Code Memory
B.4 Enabling Wait States
B.5 Summary

Index