verbose/verify modifications + common code moved to calling func + more white space!
This commit is contained in:
parent
393bf1d28b
commit
482141c556
120
src/lattice.cpp
120
src/lattice.cpp
|
|
@ -161,28 +161,28 @@ Lattice::Lattice(Jtag *jtag, const string filename, const string &file_type,
|
||||||
else if (family == "MachXO3D") {
|
else if (family == "MachXO3D") {
|
||||||
_fpga_family = MACHXO3D_FAMILY;
|
_fpga_family = MACHXO3D_FAMILY;
|
||||||
|
|
||||||
if (flash_sector == "CFG0") {
|
if (flash_sector == "CFG0") {
|
||||||
_flash_sector = LATTICE_FLASH_CFG0;
|
_flash_sector = LATTICE_FLASH_CFG0;
|
||||||
printInfo("Flash Sector: CFG0", true);
|
printInfo("Flash Sector: CFG0", true);
|
||||||
} else if (flash_sector == "CFG1") {
|
} else if (flash_sector == "CFG1") {
|
||||||
_flash_sector = LATTICE_FLASH_CFG1;
|
_flash_sector = LATTICE_FLASH_CFG1;
|
||||||
printInfo("Flash Sector: CFG1", true);
|
printInfo("Flash Sector: CFG1", true);
|
||||||
} else if (flash_sector == "UFM0") {
|
} else if (flash_sector == "UFM0") {
|
||||||
_flash_sector = LATTICE_FLASH_UFM0;
|
_flash_sector = LATTICE_FLASH_UFM0;
|
||||||
printInfo("Flash Sector: UFM0", true);
|
printInfo("Flash Sector: UFM0", true);
|
||||||
} else if (flash_sector == "UFM1") {
|
} else if (flash_sector == "UFM1") {
|
||||||
_flash_sector = LATTICE_FLASH_UFM1;
|
_flash_sector = LATTICE_FLASH_UFM1;
|
||||||
printInfo("Flash Sector: UFM1", true);
|
printInfo("Flash Sector: UFM1", true);
|
||||||
} else if (flash_sector == "UFM2") {
|
} else if (flash_sector == "UFM2") {
|
||||||
_flash_sector = LATTICE_FLASH_UFM2;
|
_flash_sector = LATTICE_FLASH_UFM2;
|
||||||
printInfo("Flash Sector: UFM2", true);
|
printInfo("Flash Sector: UFM2", true);
|
||||||
} else if (flash_sector == "UFM3") {
|
} else if (flash_sector == "UFM3") {
|
||||||
_flash_sector = LATTICE_FLASH_UFM3;
|
_flash_sector = LATTICE_FLASH_UFM3;
|
||||||
printInfo("Flash Sector: UFM3", true);
|
printInfo("Flash Sector: UFM3", true);
|
||||||
} else if (flash_sector == "FEA") {
|
} else if (flash_sector == "FEA") {
|
||||||
_flash_sector = LATTICE_FLASH_FEA;
|
_flash_sector = LATTICE_FLASH_FEA;
|
||||||
printInfo("Flash Sector: FEA", true);
|
printInfo("Flash Sector: FEA", true);
|
||||||
} else {
|
} else {
|
||||||
printError("Unknown flash sector");
|
printError("Unknown flash sector");
|
||||||
throw std::exception();
|
throw std::exception();
|
||||||
}
|
}
|
||||||
|
|
@ -368,32 +368,13 @@ bool Lattice::program_mem()
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Lattice::program_intFlash()
|
bool Lattice::program_intFlash(JedParser& _jed)
|
||||||
{
|
{
|
||||||
bool err;
|
|
||||||
uint64_t featuresRow;
|
uint64_t featuresRow;
|
||||||
uint16_t feabits;
|
uint16_t feabits;
|
||||||
uint8_t eraseMode = 0;
|
uint8_t eraseMode = 0;
|
||||||
vector<string> ufm_data, cfg_data, ebr_data;
|
vector<string> ufm_data, cfg_data, ebr_data;
|
||||||
|
|
||||||
JedParser _jed(_filename, _verbose);
|
|
||||||
|
|
||||||
printInfo("Open file ", false);
|
|
||||||
printSuccess("DONE");
|
|
||||||
|
|
||||||
err = _jed.parse();
|
|
||||||
|
|
||||||
printInfo("Parse file ", false);
|
|
||||||
if (err == EXIT_FAILURE) {
|
|
||||||
printError("FAIL");
|
|
||||||
return false;
|
|
||||||
} else {
|
|
||||||
printSuccess("DONE");
|
|
||||||
}
|
|
||||||
|
|
||||||
if (_verbose)
|
|
||||||
_jed.displayHeader();
|
|
||||||
|
|
||||||
/* bypass */
|
/* bypass */
|
||||||
wr_rd(0xff, NULL, 0, NULL, 0);
|
wr_rd(0xff, NULL, 0, NULL, 0);
|
||||||
/* ISC Enable 0xC6 followed by
|
/* ISC Enable 0xC6 followed by
|
||||||
|
|
@ -604,10 +585,27 @@ bool Lattice::program_flash(unsigned int offset)
|
||||||
|
|
||||||
bool retval;
|
bool retval;
|
||||||
if (_file_extension == "jed") {
|
if (_file_extension == "jed") {
|
||||||
|
bool err;
|
||||||
|
|
||||||
|
JedParser _jed(_filename, _verbose);
|
||||||
|
printInfo("Open file ", false);
|
||||||
|
printSuccess("DONE");
|
||||||
|
|
||||||
|
err = _jed.parse();
|
||||||
|
printInfo("Parse file ", false);
|
||||||
|
if (err == EXIT_FAILURE) {
|
||||||
|
printError("FAIL");
|
||||||
|
return false;
|
||||||
|
} else {
|
||||||
|
printSuccess("DONE");
|
||||||
|
}
|
||||||
|
if (_verbose)
|
||||||
|
_jed.displayHeader();
|
||||||
|
|
||||||
if (_fpga_family == MACHXO3D_FAMILY)
|
if (_fpga_family == MACHXO3D_FAMILY)
|
||||||
retval = program_intFlash_MachXO3D();
|
retval = program_intFlash_MachXO3D(_jed);
|
||||||
else
|
else
|
||||||
retval = program_intFlash();
|
retval = program_intFlash(_jed);
|
||||||
}
|
}
|
||||||
else if (_file_extension == "fea") {
|
else if (_file_extension == "fea") {
|
||||||
retval = program_fea_MachXO3D();
|
retval = program_fea_MachXO3D();
|
||||||
|
|
@ -1321,9 +1319,11 @@ bool Lattice::programFeatureRow_MachXO3D(uint8_t* feature_row)
|
||||||
if (!pollBusyFlag())
|
if (!pollBusyFlag())
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
wr_rd(READ_FEATURE_ROW, NULL, 0, rx, 15);
|
if (_verbose || _verify) {
|
||||||
_jtag->set_state(Jtag::RUN_TEST_IDLE);
|
wr_rd(READ_FEATURE_ROW, NULL, 0, rx, 15);
|
||||||
_jtag->toggleClk(2);
|
_jtag->set_state(Jtag::RUN_TEST_IDLE);
|
||||||
|
_jtag->toggleClk(2);
|
||||||
|
}
|
||||||
|
|
||||||
if (_verbose) {
|
if (_verbose) {
|
||||||
printf("\tReadback Feature Row: [0x");
|
printf("\tReadback Feature Row: [0x");
|
||||||
|
|
@ -1371,9 +1371,11 @@ bool Lattice::programFeabits_MachXO3D(uint32_t feabits)
|
||||||
if (!pollBusyFlag())
|
if (!pollBusyFlag())
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
wr_rd(READ_FEABITS, NULL, 0, rx, 5);
|
if (_verbose || _verify) {
|
||||||
_jtag->set_state(Jtag::RUN_TEST_IDLE);
|
wr_rd(READ_FEABITS, NULL, 0, rx, 5);
|
||||||
_jtag->toggleClk(2);
|
_jtag->set_state(Jtag::RUN_TEST_IDLE);
|
||||||
|
_jtag->toggleClk(2);
|
||||||
|
}
|
||||||
|
|
||||||
if (_verbose) {
|
if (_verbose) {
|
||||||
printf("\tReadback Feabits: [0x");
|
printf("\tReadback Feabits: [0x");
|
||||||
|
|
@ -1531,28 +1533,12 @@ bool Lattice::program_fea_MachXO3D()
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Lattice::program_intFlash_MachXO3D()
|
bool Lattice::program_intFlash_MachXO3D(JedParser& _jed)
|
||||||
{
|
{
|
||||||
bool err;
|
|
||||||
uint32_t erase_op = 0, prog_op = 0;
|
uint32_t erase_op = 0, prog_op = 0;
|
||||||
vector<string> data;
|
vector<string> data;
|
||||||
int offset, fuse_count;
|
int offset, fuse_count;
|
||||||
|
|
||||||
JedParser _jed(_filename, _verbose);
|
|
||||||
printInfo("Open file ", false);
|
|
||||||
printSuccess("DONE");
|
|
||||||
|
|
||||||
err = _jed.parse();
|
|
||||||
printInfo("Parse file ", false);
|
|
||||||
if (err == EXIT_FAILURE) {
|
|
||||||
printError("FAIL");
|
|
||||||
return false;
|
|
||||||
} else {
|
|
||||||
printSuccess("DONE");
|
|
||||||
}
|
|
||||||
if (_verbose)
|
|
||||||
_jed.displayHeader();
|
|
||||||
|
|
||||||
/* bypass */
|
/* bypass */
|
||||||
wr_rd(ISC_NOOP, NULL, 0, NULL, 0);
|
wr_rd(ISC_NOOP, NULL, 0, NULL, 0);
|
||||||
/* ISC Enable 0xC6 with operand of 0x08 (Enable Offline mode) */
|
/* ISC Enable 0xC6 with operand of 0x08 (Enable Offline mode) */
|
||||||
|
|
|
||||||
|
|
@ -52,7 +52,7 @@ class Lattice: public Device, SPIInterface {
|
||||||
|
|
||||||
lattice_family_t _fpga_family;
|
lattice_family_t _fpga_family;
|
||||||
|
|
||||||
bool program_intFlash();
|
bool program_intFlash(JedParser& _jed);
|
||||||
bool program_extFlash(unsigned int offset);
|
bool program_extFlash(unsigned int offset);
|
||||||
bool wr_rd(uint8_t cmd, uint8_t *tx, int tx_len,
|
bool wr_rd(uint8_t cmd, uint8_t *tx, int tx_len,
|
||||||
uint8_t *rx, int rx_len, bool verbose = false);
|
uint8_t *rx, int rx_len, bool verbose = false);
|
||||||
|
|
@ -96,7 +96,7 @@ class Lattice: public Device, SPIInterface {
|
||||||
};
|
};
|
||||||
|
|
||||||
lattice_flash_sector_t _flash_sector;
|
lattice_flash_sector_t _flash_sector;
|
||||||
bool program_intFlash_MachXO3D();
|
bool program_intFlash_MachXO3D(JedParser& _jed);
|
||||||
bool program_fea_MachXO3D();
|
bool program_fea_MachXO3D();
|
||||||
bool programFeatureRow_MachXO3D(uint8_t* feature_row);
|
bool programFeatureRow_MachXO3D(uint8_t* feature_row);
|
||||||
bool programFeabits_MachXO3D(uint32_t feabits);
|
bool programFeabits_MachXO3D(uint32_t feabits);
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue