FRAM71 Initialization [2021-02-01] - Printable Version +- HP Forums (https://www.hpmuseum.org/forum) +-- Forum: HP Calculators (and very old HP Computers) (/forum-3.html) +--- Forum: Articles Forum (/forum-14.html) +--- Thread: FRAM71 Initialization [2021-02-01] (/thread-5044.html) |
FRAM71 Initialization [2021-02-01] - Sylvain Cote - 10-31-2015 11:44 PM 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
I would like to thank ...
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
FRAM71 Default jumpers configuration Code: Header Jumper Description FRAM71B Default jumpers configuration Code: Header Jumper Description Disable IRAM Mapping Code: [OFF] → Powering off the computer Map the second half of the FRAM memory Code: POKE "2C000","98999A9B9C9D9E9F00" [ENTER] → Map memory 8 * 32KB = 256KB Erase FRAM contents Code: [ON]+[/] [3] [ENTER] → "Memory Lost" - erase mapped FRAM71 memory Map the first half of the FRAM memory Code: POKE "2C000","909192939495969700" [ENTER] → Map memory 8 * 32KB = 256KB Erase FRAM contents Code: [ON]+[/] [3] [ENTER] → "Memory Lost" - erase mapped FRAM71 memory Enable IRAM Mapping Code: [OFF] → Powering off the computer Validate FRAM71 first erasure Code: POKE "2C000","98999A9B9C9D9E9F00" [ENTER] → Map the second half of the FRAM memory Validate FRAM71 second erasure Code: POKE "2C000","909192939495969700" [ENTER] → Map the first half of the FRAM memory Unmap FRAM71 memory Code: POKE "2C000","00000000000000000000000000000000" [ENTER] → Remove FRAM71 memory from the memory map 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 |