
|
...he had been trying to update his TINI to 1.0 and wound up in a pickle with an erased TINI (DSTINI 0014A ES 115059), and inability to boot from his Atmel flash chip (AT29C010-70JC) into which he'd programmed the 8024 loader. Here's what I did to try to analyze the situation and restore
his TINI. The questions we had were: We test every STEP+ with a flash device in the socket so we were confident the board worked when shipped from Systronix. Also he could boot a good TINI, then install the external flash jumper and see what appeared to be valid boot code in the 29C010, so why wouldn't it boot? TINI uses an AMD 29C040B-55 which is a 512Kx8 55 nsec flash device. The 29C010-70 is a 128Kx8 70 nsec device. Aha that's the answer - 70 nsec is too slow for TINI. But since we have the hardware here, let's restore the device and test it before sending it back to our customer. |
|
|
|
|
|
|
For the really curious, boot loader source code is available, along with some documentation. The boot loader is located in flash bank 0 starting at address 0. All 8051s (including the 80C390 used in TINI) must start execution at location 0, the so-called "boot vector". Typically the instruction located here is a jump over the interrupt vector table which is also in low memory, starting at 03H. Soon after the loader boots up, it copies itself into the internal RAM of the C390 and executes out of there. A reset or power cycle will wipe out this internal code and cause the controller to again execute at the boot vector in low memory. The easiest way to get a copy of the loader HEX code is with a dump from a known good TINI. If you don't have a good TINI, here's a copy of the loader HEX code for loader version 082499, which works through TINI Beta 2.2. The current release of TINI (June 2000) is 1.0, but you can use the older loader to boot TINI up and then convert or upgrade it to the 1.0 loader. |