Small EEPROMs
jac_goudsmit
Posts: 418
Hi everyone,
What happens if you connect a Propeller to a small EEPROM? Can it boot (in theory) from e.g. a 24LC02 (256 bytes)?
And can the Propeller tool be used to download a program to a small EEPROM? If not, can the loader that comes with SimpleIDE do it?
Background: I finally got a DE0-Nano FPGA board and I tried a quick experiment, connecting the tiny EEPROM of the DE2-Nano to pins 28 and 29 of the virtual Propeller. I sort of expected it to give an error on the download because Propeller Tool probably always downloads 32K regardless of the program size, but I was hoping I could still boot a small program like the Cog LED test which is 96 bytes. But I couldn't get it to work right away so I was wondering if I did something wrong in my Verilog or if it's just not possible to do this with Propeller Tool.
Thanks!
===Jac
What happens if you connect a Propeller to a small EEPROM? Can it boot (in theory) from e.g. a 24LC02 (256 bytes)?
And can the Propeller tool be used to download a program to a small EEPROM? If not, can the loader that comes with SimpleIDE do it?
Background: I finally got a DE0-Nano FPGA board and I tried a quick experiment, connecting the tiny EEPROM of the DE2-Nano to pins 28 and 29 of the virtual Propeller. I sort of expected it to give an error on the download because Propeller Tool probably always downloads 32K regardless of the program size, but I was hoping I could still boot a small program like the Cog LED test which is 96 bytes. But I couldn't get it to work right away so I was wondering if I did something wrong in my Verilog or if it's just not possible to do this with Propeller Tool.
Thanks!
===Jac
Comments
Bean
Is this because thats what on the nano?
However, as Mike said, the addressing is different with the 24LC02 so it probably will not work. I have changed the P1V Boot ROM and Interpreter so this is possible. You may need to change the booter and runner code to support the 24LC02.
Aha, thanks!
Yep. Alternative boot loaders are definitely high on the agenda for all targets of the P1V project.
Yes. The DE0-Nano has a 24LC02. Of course it can be replaced but it's not easy because they used a tiny package.
I replaced the EEPROM on my BeMicroCV with a regular soldering iron and a steady hand. I think they used a similar type of EEPROM package on the BeMicroCV-A9 as well. But still, not everyone wants to do that.
I forgot there's a checksum (I looked at the booter code but it's been a while -- I know I'm just being lazy, I could have looked this all up in datasheets and by googling in the forums). Yeah that would make things even more difficult.
I understand now that a change to the booter would be necessary. I'm thinking the most portable way is probably to let the HDL intiialize the hub ram (somehow, depending on the hardware), and then let the booter pretend that the hub was just loaded from EEPROM.
But why would the runner need to be changed? I thought once it's started the SPIN interpreter, the EEPROM isn't used anymore?
===Jac
What package did they use ? You can likely get a larger-memory part in the same package.
A hot air system should remove the old one ok ?
One issue with HDL init, is that occurs on FPGA init at power up, but a P1 running on FPGA has a separate reset, and expects valid boot code on that reset release.
Seems better to use the normal EEPROM memory ?
It looks like it was a DFN package.
I don't have a hot air system and I expect that the majority of the P1V audience also wouldn't want to bother; it's a software project after all. It's much easier to just connect an external I2C EEPROM to the pins and get the problem out of the way. And that's reversible :-)
Yes, I thought about that, but there are easy ways around that. After all, with HDL we're in full control of how the Propeller sees the world. We could easily add something that's "wired" to detect that the Propeller is booting by checking for the current execution address, and run a sequencer that copies some external data source to hub RAM.
Another option is of course to emulate the EEPROM to read and write some other data source such as an SD card or a Flash ROM. And I bet this isn't the first project that needs something like that, so there may already be open source Verilog code out there to do it.
===Jac
EEPROM is more expensive, so more long term useful is probably a SPI loader, and I think someone may already have done that ?
FT25H04S SPI FLASH parts are now showing stocked at Digikey