Hello,
I've tried latest iceProgrammer on A20 board
./programmer -p is working fine.
I am getting however as martinayotte got:
./programmer -f < RGB_slow.bin
flash id: 00 c0 80 00 00 02 14 60 00 00 60 00 00 00 00 08 00 00 00 00
writing 101.71kB..
0% @000000 erasing 64kB sector..
0% @000000 writing: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
0% @000000 erasing 64kB sector..
0% @000000 writing: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
0% @000000 erasing 64kB sector..
0% @000000 writing: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
0% @000000 erasing 64kB sector..
martinayotte did you manage to solve this?
I have CDONE still not connected to the iCE40 module.
EDIT1:
As I saw martinayotte has replaced his flash chip I have decided to give it a try too.
I found M25P40 handy but with it I got:
./programmer -f < RGB_slow.bin
flash id: 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
writing 101.71kB..
0% @000000 erasing 64kB sector..
0% @000000 writing: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
0% @000000 erasing 64kB sector..
0% @000000 writing: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
0% @000000 erasing 64kB sector..
0% @000000 writing: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
I have verified that M25P40 has similar command IDs as programmer uses. Hmm strange.
Edit2: I have noticed that flashing with the original flash chip started working if I touch the SS signal.
Experimenting with some pullups pull down seems improve noting.
I have added some delay in the code as bellow which made flashing a bit more stable at my side but still I get some XXX..
I don't want to investigate now more but it seems we have inexpensive FPGA toy now
....
void spi_begin()
{
digitalSync(10); //penev
digitalWrite(SUNXI_ICE_CS, LOW);
digitalSync(10); //penev
// fprintf(stderr, "SPI_BEGIN\n");
}
void spi_end()
{
digitalSync(10); //penev
digitalWrite(SUNXI_ICE_CS, HIGH);
digitalSync(10); //penev
// fprintf(stderr, "SPI_END\n");
}
...
Best Regards
Dimitar