gowin: fix flash erase for GW1NSR-4C: during shiftDR sequence TDI MUST be 0x0000
This commit is contained in:
parent
c51dbcb0ed
commit
62ad3a3003
|
|
@ -278,6 +278,9 @@ void Gowin::programFlash()
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!eraseSRAM())
|
||||||
|
return;
|
||||||
|
|
||||||
if (!enableCfg())
|
if (!enableCfg())
|
||||||
return;
|
return;
|
||||||
if (!eraseFLASH())
|
if (!eraseFLASH())
|
||||||
|
|
@ -811,12 +814,6 @@ bool Gowin::writeSRAM(const uint8_t *data, int length)
|
||||||
*/
|
*/
|
||||||
bool Gowin::eraseFLASH()
|
bool Gowin::eraseFLASH()
|
||||||
{
|
{
|
||||||
if (readStatusReg() & STATUS_GOWIN_VLD) {
|
|
||||||
if (!eraseSRAM()) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
printInfo("Erase FLASH ", false);
|
printInfo("Erase FLASH ", false);
|
||||||
ProgressBar progress("Erasing FLASH", 100, 50, _quiet);
|
ProgressBar progress("Erasing FLASH", 100, 50, _quiet);
|
||||||
|
|
||||||
|
|
@ -835,11 +832,10 @@ bool Gowin::eraseFLASH()
|
||||||
* others 1 x 32bits
|
* others 1 x 32bits
|
||||||
*/
|
*/
|
||||||
int nb_iter = (is_gw1n1)?65:1;
|
int nb_iter = (is_gw1n1)?65:1;
|
||||||
|
uint8_t dummy[4] = {0, 0, 0, 0};
|
||||||
for (int i = 0; i < nb_iter; ++i) {
|
for (int i = 0; i < nb_iter; ++i) {
|
||||||
// keep following sequence as-is. it is _not_ _jtag->shiftDR().
|
// keep following sequence as-is. it is _not_ _jtag->shiftDR().
|
||||||
_jtag->set_state(Jtag::SHIFT_DR);
|
_jtag->shiftDR(dummy, NULL, 32);
|
||||||
_jtag->toggleClk(32);
|
|
||||||
_jtag->set_state(Jtag::RUN_TEST_IDLE);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* TN653 specifies to wait for 160ms with
|
/* TN653 specifies to wait for 160ms with
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue