Okay, can someone explain the concept of flash to me? How does it work, what are pages, sectors, ect, what is the breakdown for TI calcs, etc...?
Okay Smile
The type of flash in the TI Calcs can be read at will, but writing (and erasing) are different.
In flash, a 1 bit can become a 0 bit as part of a "program" operation. The reverse is not true. For example, $8F could become $0B, but not the reverse.
To get 0's to 1's, you have to do an "erase" operation. But erases don't operate on just any byte (or bit, for that matter). They operate on a sector, which is just an area of flash that is affected by an erase. Erasing a sector, however, sets every byte in the sector to $FF. Also, you can only erase so many times before it stops working. The limit is pretty high (100,000 or so), but be aware of it.
Sectors can be any size, but on the chip in the calcs, there are sectors of sizes 64KB and one of 32KB, two of 8KB, and one of 16KB.
However, you can't access 64KB of data at a time and execute your code, so the calc hardware divides (or, on one occasion, joins) sectors into 16KB pages. Each 64KB sector is split into four 16KB pages, the 32KB sector into two 16KB sectors, and the two 8KB sectors into one 16KB page. (The 16KB sector is left alone)
Using the SE calcs as an example, pages $00-$7B consist of 64KB sectors. $00-$03 is one sector, $04-$07 is another, and so on.
$7C-$7D is the 32KB sector. $7E consists of the two 8KB sectors, and on the calcs is the certificate page. $7F is the boot code, and is read-only (I hope)
For the 84+, the ranges are $00-$3B,$3C-$3D,$3E, and $3F
on the 83+, said ranges are $00-$1B,$1C-$1D,$1E, and $1F
So each sector is divided or combined to equal 16KB so it can fit into a bank? Does any one page have multiple sectors?
The certificate page, on page $1E/$3C/$7C consists of two 8KB sectors, as noted above. That's the only page that needs a special routine, but you shouldn't be touching it.
Okay, I understand a bit more. Thank you.
You're welcome. Glad to help! Very Happy
Just to make one thing explicit for the future, which you of course already mentioned, calcdude84:

Any page can be written from $FF to any other value from $00 to $FF. Once a bit of Flash is reset from 1 to 0, it cannot be set back to 1 until the entire sector is set back to 1. Therefore, it becomes necessary to use Flash incrementally, using a new chunk when you want to save changes rather than modify and existing chunk as you do in RAM. That's why Garbage Collecting happens: the OS is clearing out unused but dirty Flash by temporarily moving anything important out of that sector, wiping the sector, and then moving anything important back.
  
Register to Join the Conversation
Have your own thoughts to add to this or any other topic? Want to ask a question, offer a suggestion, share your own programs and projects, upload a file to the file archives, get help with calculator and computer programming, or simply chat with like-minded coders and tech and calculator enthusiasts via the site-wide AJAX SAX widget? Registration for a free Cemetech account only takes a minute.

» Go to Registration page
Page 1 of 1
» All times are UTC - 5 Hours
 
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum

 

Advertisement