all: propagate verify with a message when not supported
This commit is contained in:
parent
fe0a315456
commit
2af64e9af4
|
|
@ -17,8 +17,8 @@
|
|||
#define BIT_FOR_FLASH (DATA_DIR "/openFPGALoader/test_sfl.svf")
|
||||
|
||||
Altera::Altera(Jtag *jtag, const std::string &filename,
|
||||
const std::string &file_type, int8_t verbose):
|
||||
Device(jtag, filename, file_type, false, verbose), _svf(_jtag, _verbose)
|
||||
const std::string &file_type, bool verify, int8_t verbose):
|
||||
Device(jtag, filename, file_type, verify, verbose), _svf(_jtag, _verbose)
|
||||
{
|
||||
if (!_file_extension.empty()) {
|
||||
if (_file_extension == "svf" || _file_extension == "rbf")
|
||||
|
|
@ -140,6 +140,9 @@ void Altera::program(unsigned int offset)
|
|||
EPCQ epcq(0x403, 0x6010/*_jtag->vid(), _jtag->pid()*/, 2, 6000000);
|
||||
_svf.parse(BIT_FOR_FLASH);
|
||||
epcq.program(offset, _filename, (_file_extension == "rpd")? true:false);
|
||||
|
||||
if (_verify)
|
||||
printWarn("writing verification not supported");
|
||||
reset();
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@
|
|||
class Altera: public Device {
|
||||
public:
|
||||
Altera(Jtag *jtag, const std::string &filename,
|
||||
const std::string &file_type, int8_t verbose);
|
||||
const std::string &file_type, bool verify, int8_t verbose);
|
||||
~Altera();
|
||||
|
||||
void programMem();
|
||||
|
|
|
|||
|
|
@ -39,8 +39,8 @@
|
|||
|
||||
Anlogic::Anlogic(Jtag *jtag, const std::string &filename,
|
||||
const std::string &file_type,
|
||||
Device::prog_type_t prg_type, int8_t verbose):
|
||||
Device(jtag, filename, file_type, false, verbose), _svf(_jtag, _verbose)
|
||||
Device::prog_type_t prg_type, bool verify, int8_t verbose):
|
||||
Device(jtag, filename, file_type, verify, verbose), _svf(_jtag, _verbose)
|
||||
{
|
||||
if (!_file_extension.empty()) {
|
||||
if (_file_extension == "svf")
|
||||
|
|
@ -116,6 +116,9 @@ void Anlogic::program(unsigned int offset)
|
|||
|
||||
flash.erase_and_prog(offset, data, len);
|
||||
|
||||
if (_verify)
|
||||
printWarn("writing verification not supported");
|
||||
|
||||
//Loading device with 'bypass' instruction.
|
||||
_jtag->shiftIR(BYPASS, IRLENGTH);
|
||||
////Loading device with 'refresh' instruction.
|
||||
|
|
|
|||
|
|
@ -30,7 +30,7 @@ class Anlogic: public Device, SPIInterface {
|
|||
public:
|
||||
Anlogic(Jtag *jtag, const std::string &filename,
|
||||
const std::string &file_type,
|
||||
Device::prog_type_t prg_type, int8_t verbose);
|
||||
Device::prog_type_t prg_type, bool verify, int8_t verbose);
|
||||
~Anlogic();
|
||||
|
||||
void program(unsigned int offset = 0) override;
|
||||
|
|
|
|||
|
|
@ -4,6 +4,7 @@
|
|||
#include <iostream>
|
||||
#include <string>
|
||||
|
||||
#include "display.hpp"
|
||||
#include "jtag.hpp"
|
||||
|
||||
/* GGM: TODO: program must have an optional
|
||||
|
|
@ -33,7 +34,8 @@ class Device {
|
|||
virtual void program(unsigned int offset = 0) = 0;
|
||||
virtual bool dumpFlash(const std::string &filename,
|
||||
uint32_t base_addr, uint32_t len) {
|
||||
(void)filename; (void) base_addr; (void) len; return false;}
|
||||
(void)filename; (void) base_addr; (void) len;
|
||||
printError("dump flash not supported"); return false;}
|
||||
virtual int idCode() = 0;
|
||||
virtual void reset();
|
||||
|
||||
|
|
|
|||
|
|
@ -33,8 +33,8 @@
|
|||
Efinix::Efinix(FtdiSpi* spi, const std::string &filename,
|
||||
const std::string &file_type,
|
||||
uint16_t rst_pin, uint16_t done_pin,
|
||||
int8_t verbose):
|
||||
Device(NULL, filename, file_type, false, verbose), _rst_pin(rst_pin),
|
||||
bool verify, int8_t verbose):
|
||||
Device(NULL, filename, file_type, verify, verbose), _rst_pin(rst_pin),
|
||||
_done_pin(done_pin)
|
||||
{
|
||||
_spi = spi;
|
||||
|
|
@ -107,6 +107,9 @@ void Efinix::program(unsigned int offset)
|
|||
flash.read_id();
|
||||
flash.erase_and_prog(offset, bit->getData(), bit->getLength() / 8);
|
||||
|
||||
if (_verify)
|
||||
printWarn("writing verification not supported");
|
||||
|
||||
_spi->gpio_set(_rst_pin);
|
||||
usleep(12000);
|
||||
|
||||
|
|
|
|||
|
|
@ -28,7 +28,7 @@ class Efinix: public Device {
|
|||
Efinix(FtdiSpi *spi, const std::string &filename,
|
||||
const std::string &file_type,
|
||||
uint16_t rst_pin, uint16_t done_pin,
|
||||
int8_t verbose);
|
||||
bool verify, int8_t verbose);
|
||||
~Efinix();
|
||||
|
||||
void program(unsigned int offset = 0) override;
|
||||
|
|
|
|||
|
|
@ -71,8 +71,8 @@ using namespace std;
|
|||
|
||||
Gowin::Gowin(Jtag *jtag, const string filename, const string &file_type,
|
||||
Device::prog_type_t prg_type,
|
||||
int8_t verbose): Device(jtag, filename, file_type, false, verbose),
|
||||
is_gw1n1(false)
|
||||
bool verify, int8_t verbose): Device(jtag, filename, file_type,
|
||||
verify, verbose), is_gw1n1(false)
|
||||
{
|
||||
_fs = NULL;
|
||||
uint32_t idcode = idCode();
|
||||
|
|
@ -155,6 +155,8 @@ void Gowin::programFlash()
|
|||
/* test status a faire */
|
||||
if (!flashFLASH(data, length))
|
||||
return;
|
||||
if (_verify)
|
||||
printWarn("writing verification not supported");
|
||||
if (!DisableCfg())
|
||||
return;
|
||||
wr_rd(RELOAD, NULL, 0, NULL, 0);
|
||||
|
|
|
|||
|
|
@ -32,7 +32,7 @@ class Gowin: public Device {
|
|||
public:
|
||||
Gowin(Jtag *jtag, std::string filename, const std::string &file_type,
|
||||
Device::prog_type_t prg_type,
|
||||
int8_t verbose);
|
||||
bool verify, int8_t verbose);
|
||||
~Gowin();
|
||||
int idCode() override;
|
||||
void reset() override;
|
||||
|
|
|
|||
|
|
@ -32,8 +32,8 @@
|
|||
Ice40::Ice40(FtdiSpi* spi, const std::string &filename,
|
||||
const std::string &file_type,
|
||||
uint16_t rst_pin, uint16_t done_pin,
|
||||
int8_t verbose):
|
||||
Device(NULL, filename, file_type, false, verbose), _rst_pin(rst_pin),
|
||||
bool verify, int8_t verbose):
|
||||
Device(NULL, filename, file_type, verify, verbose), _rst_pin(rst_pin),
|
||||
_done_pin(done_pin)
|
||||
{
|
||||
_spi = spi;
|
||||
|
|
@ -88,6 +88,9 @@ void Ice40::program(unsigned int offset)
|
|||
flash.read_id();
|
||||
flash.erase_and_prog(offset, bit.getData(), bit.getLength() / 8);
|
||||
|
||||
if (_verify)
|
||||
printWarn("writing verification not supported");
|
||||
|
||||
_spi->gpio_set(_rst_pin);
|
||||
usleep(12000);
|
||||
|
||||
|
|
|
|||
|
|
@ -28,7 +28,7 @@ class Ice40: public Device {
|
|||
Ice40(FtdiSpi *spi, const std::string &filename,
|
||||
const std::string &file_type,
|
||||
uint16_t rst_pin, uint16_t done_pin,
|
||||
int8_t verbose);
|
||||
bool verify, int8_t verbose);
|
||||
~Ice40();
|
||||
|
||||
void program(unsigned int offset = 0) override;
|
||||
|
|
|
|||
13
src/main.cpp
13
src/main.cpp
|
|
@ -181,11 +181,11 @@ int main(int argc, char **argv)
|
|||
|
||||
if (board->manufacturer == "efinix") {
|
||||
Efinix target(spi, args.bit_file, args.file_type,
|
||||
board->reset_pin, board->done_pin, args.verbose);
|
||||
board->reset_pin, board->done_pin, args.verify, args.verbose);
|
||||
target.program(args.offset);
|
||||
} else if (board->manufacturer == "lattice") {
|
||||
Ice40 target(spi, args.bit_file, args.file_type,
|
||||
board->reset_pin, board->done_pin, args.verbose);
|
||||
board->reset_pin, board->done_pin, args.verify, args.verbose);
|
||||
target.program(args.offset);
|
||||
} else {
|
||||
RawParser *bit = NULL;
|
||||
|
|
@ -221,6 +221,9 @@ int main(int argc, char **argv)
|
|||
|
||||
flash.erase_and_prog(args.offset, bit->getData(), bit->getLength()/8);
|
||||
|
||||
if (args.verify)
|
||||
printWarn("writing verification not supported");
|
||||
|
||||
delete bit;
|
||||
}
|
||||
if (board->reset_pin)
|
||||
|
|
@ -359,13 +362,13 @@ int main(int argc, char **argv)
|
|||
args.prg_type, args.fpga_part, args.verify, args.verbose);
|
||||
} else if (fab == "altera") {
|
||||
fpga = new Altera(jtag, args.bit_file, args.file_type,
|
||||
args.verbose);
|
||||
args.verify, args.verbose);
|
||||
} else if (fab == "anlogic") {
|
||||
fpga = new Anlogic(jtag, args.bit_file, args.file_type,
|
||||
args.prg_type, args.verbose);
|
||||
args.prg_type, args.verify, args.verbose);
|
||||
} else if (fab == "Gowin") {
|
||||
fpga = new Gowin(jtag, args.bit_file, args.file_type,
|
||||
args.prg_type, args.verbose);
|
||||
args.prg_type, args.verify, args.verbose);
|
||||
} else if (fab == "lattice") {
|
||||
fpga = new Lattice(jtag, args.bit_file, args.file_type,
|
||||
args.prg_type, args.verify, args.verbose);
|
||||
|
|
|
|||
Loading…
Reference in New Issue