Post Reply 
FRAM71 Initialization [2021-02-01]
10-31-2015, 11:44 PM (This post was last modified: 02-01-2021 11:41 PM by Sylvain Cote.)
Post: #1
FRAM71 Initialization [2021-02-01]
[Image: FRAM71_modules_top.jpg]

Goal

The goal of this procedure is to reset the FRAM71 or FRAM71B module to its initial configuration.

Background

The usage of Ferroelectric Random Access Memory by the FRAM71 or FRAM71B module is a blessing and a curse.
The blessing of the module, is that you can remove the module without loosing its content and configurations.
The curse of the module, is that you can remove the module without loosing its content and configurations.
While learning the huge possibilities of the module, I got lost many times and I had a lot of frustrations.
It took me quite some time to figure how to put back the FRAM71 or FRAM71B module to its initial state, so here it is ...

Revisions
  • 2021-02-01 Upd: Formatting.
  • 2021-01-30 Upd: Default jumpers configuration tables & minor comments updates.
  • 2021-01-23 Upd: MEM approximated values has been modified to match observed values.
  • 2021-01-14 Upd: Finally updated to support FRAM71B module.
  • 2017-01-24 Add: Out of date warning (FRAM71B not supported).
  • 2015-11-08 Add: "Disclaimer" & minor formatting adjustments.
  • 2015-11-07 Add: "Revisions" & "Additional Informations" sections & minor adjustments.
  • 2015-11-01 Add: acknowledgments
  • 2015-10-31 Add: Initial release, corrected typo
Acknowledgments

I would like to thank ...
  • Hans Brüggemann for making these fantastic modules.
  • Dave Frederickson and Robert Prosperi for their invaluable help and their infinite patience.
Disclaimer

This procedure was done in good faith.
I do not offer any warranty of any kind.
If you follow this procedure as written, it should work.
If not, send me a PM, or better, post a message in the forum and I will help you, within the limit of my knowledge of course.

Assumptions
  • The following procedure assume the FRAM71 or FRAM71B module is plugged into the the card reader port.
  • The following procedure also assume that no front port modules are present.
  • The presence of the HP-IL interface is not affecting.
FRAM71 Editions User's Manuals
  • FRAM71B (Hardware v1.5, Firmware v6.07, "Denver 2016")
  • FRAM71 (Hardware v1.4, Firmware v5.11, "Nashville 2015")
Initialization Procedure

FRAM71 Default jumpers configuration
Code:
Header  Jumper     Description
------  ---------  ---------------------------------
J2      Installed  SysRAM Disabled
J1      Removed    SysRAM Disabled
CN2-1   Removed    Bottom 512KB FRAM Board Selected
CN2-2   Removed    IRAM Mapping Enabled
CN2-3   Removed    FRAM Mapping Enabled
CN2-4   Removed    SysRAM Writing Disabled
CN2-5   Removed    Chip #0 Mapping to E0000 Disabled

[Image: FRAM71_BOTTOM_CN2.jpg]

FRAM71B Default jumpers configuration
Code:
Header  Jumper     Description
------  ---------  ---------------------------------
J1      Removed    SysRAM Disabled
CN2-1   Removed    Bottom 512KB FRAM Board Selected
CN2-2   Removed    IRAM Mapping Enabled
CN2-3   Removed    FRAM Mapping Enabled
CN2-4   Removed    SysRAM Writing Disabled
CN2-5   Removed    Chip #0 Mapping to E0000 Disabled

[Image: FRAM71B_BOTTOM_CN2.jpg]

Disable IRAM Mapping
Code:
[OFF]                 → Powering off the computer
Add jumper to [CN2-2] → IRAM Mapping Disabled
[ON]                  → Powering on the computer

[Image: FRAM71_BOTTOM_CN2-2.jpg] [Image: FRAM71B_BOTTOM_CN2-2.jpg]

Map the second half of the FRAM memory
Code:
POKE "2C000","98999A9B9C9D9E9F00" [ENTER] → Map memory 8 * 32KB = 256KB
[OFF] then [ON]                           → Activate the new configuration

Erase FRAM contents
Code:
[ON]+[/] [3] [ENTER] → "Memory Lost" - erase mapped FRAM71 memory
[ON]                 → Remove message
MEM [ENTER]          → Should display 279040 bytes or a value very near to that number (256KB+17.5KB)

Map the first half of the FRAM memory
Code:
POKE "2C000","909192939495969700" [ENTER] → Map memory 8 * 32KB = 256KB
[OFF] then [ON]                           → Activate the new configuration

Erase FRAM contents
Code:
[ON]+[/] [3] [ENTER] → "Memory Lost" - erase mapped FRAM71 memory
[ON]                 → Remove the message
MEM [ENTER]          → Should display 279040 bytes or a value very near to that number (256KB+17.5KB)

Enable IRAM Mapping
Code:
[OFF]                      → Powering off the computer
Remove jumper from [CN2-2] → IRAM Mapping Enabled
[ON]                       → Powering on the computer
MEM [ENTER]                → Should display 16936 bytes or a value very near to that number (17.5KB)

[Image: FRAM71_BOTTOM_CN2.jpg] [Image: FRAM71B_BOTTOM_CN2.jpg]

Validate FRAM71 first erasure
Code:
POKE "2C000","98999A9B9C9D9E9F00" [ENTER] → Map the second half of the FRAM memory
[OFF] then [ON]                           → Activate the new configuration
MEM [ENTER]                               → Should display 279006 bytes or a value very near to that number (256KB+17.5KB)
SHOW PORT [ENTER]                         → 1BBBB: should show no ports in the 5.XX range
                                          → 2CDCC: all ports with the 5.XX range should have the type 0 (RAM)

Validate FRAM71 second erasure
Code:
POKE "2C000","909192939495969700" [ENTER] → Map the first half of the FRAM memory
[OFF] then [ON]                           → Activate the new configuration
MEM [ENTER]                               → Should display 278962 bytes or a value very near to that number (256KB+17.5KB)
SHOW PORT [ENTER]                         → 1BBBB: should show no ports in the 5.XX range
                                          → 2CDCC: all ports with the 5.XX range should have the type 0 (RAM)

Unmap FRAM71 memory
Code:
POKE "2C000","00000000000000000000000000000000" [ENTER] → Remove FRAM71 memory from the memory map
[OFF] then [ON]                                         → Activate the new configuration
MEM [ENTER]                                             → Should display 16810 bytes or a value very near to that number (17.5KB)

The FRAM71 is now back to its initial configuration!

Additional Informations
Two tricks I have used to simplify this procedure.

Trick #1
When the 71B goes through its initialization procedure, all memory modules are mapped according to their types, sizes, etc.
RAM modules starting with “B3DDDDDE” are considered as IRAM and as you known all IRAM modules are protected against INIT 3 (Memory Lost).
Fortunately, the FRAM71 and FRAM71B modules has a jumper (CN2-2) that has been created to go around this protection.
By closing the jumper, the FRAM71 or FRAM71B module make the 71B ignore the IRAM identifier, and the 71B add these IRAMs to the main RAM, thus make them erasable by INIT 3.

Trick #2
One of the FRAM71 rules is that: You shall never map the "F-Block #2" to a "Chip #"
The main reason is that portion of F-Block #2 (2C000 to 2C01F) is used to configure the FRAM71 or FRAM71B module itself and mapping this section to the main memory will make the 71B and the FRAM71 or FRAM71B module to misbehave.
If you look carefully, in the second erasure, I have broken that rule by mapping it ["9091(92)939495969700"] to main memory.
The mapping duration is very small because we map it, then we power cycle, then we reinitialize the memory (INIT 3) effectively clearing the configuration space (2C000 to 2C01F) of the FRAM71 at the same time.
That is why after we remove the CN2-2 jumper, instead of having 273.5KB of RAM we only have 17.5KB RAM.

Sylvain
Find all posts by this user
Quote this message in a reply
Post Reply 




User(s) browsing this thread: 1 Guest(s)