The Museum of HP Calculators

HP Forum Archive 20

[ Return to Index | Top of Index ]

30B/34s - adding more RAM
Message #1 Posted by robert rozee on 11 Apr 2011, 11:38 p.m.

hi, one complaint of the 30B platform seems to be a lack of available RAM, as well as what is emerging as a bit of an issue with running out of space in the flash for all the 34s features people would like to have.

it has occurred to me that the processor used does have a few 'general purpose' pins that come out to the programming header?

why not add external serial (I2C or SPI bus) RAM via these pins, to allow for a much larger (even if slow to access) RAM? one could also extend this concept a little further with a serial flash device used to hold the code associated with less frequently used functions, that could then be paged into the (small) onboard RAM when required.

an interesting concept? if anyone is interested in it, i'd be happy to troll through the datasheets to find potential devices. something with combined RAM and flash would be absolutely ideal!

cheers, rob :-)

      
Re: 30B/34s - adding more RAM
Message #2 Posted by Paul Dale on 12 Apr 2011, 2:01 a.m.,
in response to message #1 by robert rozee

The small amount of RAM is limiting. Many of our design decisions concentrated around this limitation. 6kb total, 2kb of which is battery backed. We use the 4kb of volatile memory for the stack plus a few global variables, a fair amount of this is required. The 2kb is committed.

The flash issue isn't so bad. Flash is pretty full, agreed, but no matter how much we had people would want more :-) As it is, the feature set included is very comprehensive. I'd like to get the Bessel & elliptic functions in but that looks unlikely. Fortunately, user code can provide these easily enough (albeit at somewhat reduced accuracy).

It would be possible to add RAM and flash via the IO pins. I'm not sure how useful it would really be. There isn't really enough RAM to load compiled code from flash to run, keystroke programs might be possible however. As you added more external memory, you'd have to consume more of the internal RAM as buffers, cache and for management purposes. I expect you'd have to push all registers and keystroke code onto the external storage fairly quickly. Still it would be possible and might be interesting.

- Pauli

            
Re: 30B/34s - adding more RAM
Message #3 Posted by robert rozee on 12 Apr 2011, 10:10 a.m.,
in response to message #2 by Paul Dale

a suitable device may be the N25S818HA / N25S830HA : OnSemi serial SRAM

32k bytes is the larger size listed. you could use this exclusively for holding user programs, then reserve all (or most) of the 2k of battery-backed onboard ram exclusively for registers (ie, no flexible partitioning between variables and program steps). user programs being composed of sequences of high-level keystrokes means that the external ram would end up being accessed at a relatively slow rate (in terms of the number of cpu cycles occurring between fetching stored keystrokes). under such conditions i believe that buffering would provide a minimal speedup, hence would not be necessary.

just an idea :-) since the city i live in was moderately destroyed by an earthquake in february, i find myself, a (now) relatively unemployed electronics engineer, with too much time to muse on such things!

btw, are there any plans floating around for a 10bII+ re-purposing project? i'm assuming that the 10bII+ would appeal as a target as the hardware will be available much cheaper than the 20b/30b.

and a second question: how easy can the 20b/30b be opened up to add the above mentioned RAM internally to the case? will the 10bII+ be similarly easy/hard to crack open?

                  
Re: 30B/34s - adding more RAM
Message #4 Posted by Tim Wessman on 12 Apr 2011, 10:26 a.m.,
in response to message #3 by robert rozee

The 10bII+ screen is only using some 130 or so of the available pixels, so unless you want even less information it isn't ideal.

I think the 10bII+ is even more difficult to open then the 20/30b. The clips that hold the halves together are much more plentiful and hold with more force. I tried to open at least 4-5 of them and didn't manage to open one without either breaking one of the tabs or cosmetically marring the case somewhere.

Processor wise, either of them are essentially identical.

Also, why use RAM when flash will use less power overall?

TW

Edited: 12 Apr 2011, 10:26 a.m.

                        
Re: 30B/34s - adding more RAM
Message #5 Posted by robert rozee on 12 Apr 2011, 11:11 a.m.,
in response to message #4 by Tim Wessman

Quote:
The 10bII+ screen is only using some 130 or so of the available pixels, so unless you want even less information it isn't ideal.
[...]
Also, why use RAM when flash will use less power overall?

flash has a limited (though admittedly large) lifetime wrt write cycles, and will consume more peak current (i'm assuming) when carrying out these writes. in a device powered by a couple of button-cells, any operation that draws a higher than average current, even for a short duration, is of concern - one may end up in the embarrassing situation where the cells fail to have enough 'oomph' to ride through the flash writes long before they are otherwise exhausted. and a failed write flash will lead to... corrupted contents. a bad thing in anyone's books.

the down side of SRAM is the backup current, but for the OnSemi devices this is a somewhat negligible 1uA maximum. assuming a very conservative 30mAh of total capacity, this would be good for nearly 3 1/2 years of backup.

the 12-digit 7-segment display is no worse than that of the hp-15c, which is only 10 digits. and the 10bII+ also has more keys (40) available than the 20b/30b (only 36). hmmm, as i write this i am thinking, "will we see an hp-15cII+ released in the same format/case as the 10bII+?".

                              
Re: 30B/34s - adding more RAM
Message #6 Posted by Katie Wasserman on 12 Apr 2011, 11:54 a.m.,
in response to message #5 by robert rozee

I like the 10bii+ keyboard and overall case much more than the 20b/30b. It sits on the desk without rocking and fits well in the hand too. While the display is short on annunciators, the digits are large and clear and easier to see than any other HP calculator aside from LED models. I think it would be an excellent calculator to re-purpose.

I agree with Tim that this is a difficult calculator to open and I haven't seriously tried opening mine but I'll give it a try soon ( when I have some tools available for stuff like this).

-Katie

            
Re: 30B/34s - adding more RAM
Message #7 Posted by Scott Newell on 12 Apr 2011, 1:11 p.m.,
in response to message #2 by Paul Dale

Quote:
The small amount of RAM is limiting. Many of our design decisions concentrated around this limitation. 6kb total, 2kb of which is battery backed. We use the 4kb of volatile memory for the stack plus

It's been a while since I've looked at the datasheet, but can't you use all 6 kB as nonvolatile? The tradeoff would be increased current consumption when powered off (drop to wait mode instead of backup or off mode). Looks like 9 uA (wait) vs. 3.5 uA (backup) vs. 100 nA (off). That would limit you to what, 5.8 years of power down lifetime, assuming two 230 mAH cells? Someone check me on this.

                  
Re: 30B/34s - adding more RAM
Message #8 Posted by Marcus von Cube, Germany on 12 Apr 2011, 1:48 p.m.,
in response to message #7 by Scott Newell

How do you get 9 uA for wait mode? What has to be switched off and how do I get out of it? I can see 200 uA for idle mode (processor clock stopped) on my multimeter for my development device. This is what the calculator consumes when it is turned on.

                        
Re: 30B/34s - adding more RAM
Message #9 Posted by Scott Newell on 12 Apr 2011, 2:37 p.m.,
in response to message #8 by Marcus von Cube, Germany

Quote:
How do you get 9 uA for wait mode? What has to be switched off and how do I get out of it? I can see 200 uA for idle mode (processor clock stopped) on my multimeter for my development device. This is what the calculator consumes when it is turned on.
Haven't measured it. I pulled the value straight from table 5-1 ("Low Power Mode Configuration Summary"). Table 35-7 claims to be measured values...note that that 9 uA is pretty optimistic, especially with fresh batteries and at higher temps.
                              
Re: 30B/34s - adding more RAM
Message #10 Posted by Marcus von Cube, Germany on 12 Apr 2011, 3:35 p.m.,
in response to message #9 by Scott Newell

I've just looked at the manual again. Wait mode has a severe drawback: The processor gets out of it only by a low value on the wakeup pins. The ON key is connected to the force wakeup, not one of the 16 wakeup inputs. Neither works the RTC with this. :(

I have to try it if the processor returns from wait mode on any of the regular wakeup sources but I doubt it.

      
Re: 30B/34s - adding more RAM
Message #11 Posted by Marcus von Cube, Germany on 12 Apr 2011, 12:33 p.m.,
in response to message #1 by robert rozee

The only useful application for an external memory chip is program storage. Writing to program memory is certainly much rarer then reading, so flash is a good technology for this. I'd prefer a removable device. I was thinking about saving a few pages of internal flash for the purpose: Write and test some user code and when you're pleased with it, copy it to flash by a special command. You'll need a way to manage your flash area, so this gets the more complicated the more you think about it.

            
Re: 30B/34s - adding more RAM
Message #12 Posted by Diego Diaz on 13 Apr 2011, 1:00 p.m.,
in response to message #11 by Marcus von Cube, Germany

Hi all,

Although I have nothing to do with these new models and the re-purposing project (which IMHO seems an outstanding job), I do have certain experience in adding RAM (or ROM) to existing devices.

One of the main issues when dealing with RAM is the power requirements, and this was the point when it comes to choosing the RAM chips in the NoV's projects for the HP-41 series.

RAMTRON manufactures a wide range of non-volatile RAM, both serial and parallel. In the serial range you'll find SPI and I2C interfaces at Vcc's as low as 2.0v up to 5.5v.

The main benefit is a zero power data retention (like EEPROM/Flash), and byte addessing immediate write (like RAM).

I use the 32KBytes "FM24C256" (do not confuse with 24C256 EEPROM) with I2C interface, which is pretty easy to implement.

I'll be happy to contribute if you think my experience can be useful.

Best from Madrid.

Diego.


[ Return to Index | Top of Index ]

Go back to the main exhibit hall