Merge branch 'master' into experimental_varlen

* master:
  rename usb_present
  TestProxmark only if OpenProxmark returned pm3 present
  Trying original SPI mode for 24MHz flash mem
  text
This commit is contained in:
Philippe Teuwen 2019-04-26 23:30:30 +02:00
commit e9bfc3eb7a
7 changed files with 31 additions and 26 deletions

View file

@ -371,8 +371,8 @@ void SendVersion(void) {
// measure the USB Speed by sending SpeedTestBufferSize bytes to client and measuring the elapsed time. // measure the USB Speed by sending SpeedTestBufferSize bytes to client and measuring the elapsed time.
// Note: this mimics GetFromBigbuf(), i.e. we have the overhead of the PacketCommandNG structure included. // Note: this mimics GetFromBigbuf(), i.e. we have the overhead of the PacketCommandNG structure included.
void printUSBSpeed(void) { void printUSBSpeed(void) {
DbpStringEx(FLAG_LOG|FLAG_ANSI, _BLUE_("USB Speed")); DbpStringEx(FLAG_LOG|FLAG_ANSI, _BLUE_("Transfer Speed"));
Dbprintf(" Sending USB packets to client..."); Dbprintf(" Sending packets to client...");
#define USB_SPEED_TEST_MIN_TIME 1500 // in milliseconds #define USB_SPEED_TEST_MIN_TIME 1500 // in milliseconds
uint8_t *test_data = BigBuf_get_addr(); uint8_t *test_data = BigBuf_get_addr();
@ -392,7 +392,7 @@ void printUSBSpeed(void) {
Dbprintf(" Time elapsed............%dms", end_time - start_time); Dbprintf(" Time elapsed............%dms", end_time - start_time);
Dbprintf(" Bytes transferred.......%d", bytes_transferred); Dbprintf(" Bytes transferred.......%d", bytes_transferred);
Dbprintf(" USB Transfer Speed PM3 -> Client = %d Bytes/s", 1000 * bytes_transferred / (end_time - start_time)); Dbprintf(" Transfer Speed PM3 -> Client = " _YELLOW_("%d") " bytes/s", 1000 * bytes_transferred / (end_time - start_time));
} }
/** /**

View file

@ -80,10 +80,14 @@ void FlashSetup(uint32_t baudrate) {
uint8_t csaat = 1; uint8_t csaat = 1;
uint32_t dlybct = 0; uint32_t dlybct = 0;
uint8_t ncpha = 1;
uint8_t cpol = 0;
if (baudrate > FLASH_MINFAST) { if (baudrate > FLASH_MINFAST) {
baudrate = FLASH_FASTBAUD; baudrate = FLASH_FASTBAUD;
//csaat = 0; //csaat = 0;
dlybct = 1500; dlybct = 1500;
ncpha = 0;
cpol = 0;
} }
AT91C_BASE_SPI->SPI_CSR[2] = AT91C_BASE_SPI->SPI_CSR[2] =
@ -119,9 +123,10 @@ void FlashSetup(uint32_t baudrate) {
1 0 1 1 clock normally low read on falling edge 1 0 1 1 clock normally low read on falling edge
2 1 0 0 clock normally high read on falling edge 2 1 0 0 clock normally high read on falling edge
3 1 1 1 clock normally high read on rising edge 3 1 1 1 clock normally high read on rising edge
Update: for 24MHz, writing is more stable with ncpha=1, else bitflips occur.
*/ */
(0 << 1) | // Clock Phase data captured on leading edge, changes on following edge (ncpha << 1) | // Clock Phase data captured on leading edge, changes on following edge
(0 << 0); // Clock Polarity inactive state is logic 0 (cpol << 0); // Clock Polarity inactive state is logic 0
// read first, empty buffer // read first, empty buffer
if (AT91C_BASE_SPI->SPI_RDR == 0) {}; if (AT91C_BASE_SPI->SPI_RDR == 0) {};

View file

@ -15,14 +15,14 @@
static ProxGuiQT *gui = NULL; static ProxGuiQT *gui = NULL;
static WorkerThread *main_loop_thread = NULL; static WorkerThread *main_loop_thread = NULL;
WorkerThread::WorkerThread(char *script_cmds_file, char *script_cmd, bool usb_present) : script_cmds_file(script_cmds_file), script_cmd(script_cmd), usb_present(usb_present) { WorkerThread::WorkerThread(char *script_cmds_file, char *script_cmd, bool pm3_present) : script_cmds_file(script_cmds_file), script_cmd(script_cmd), pm3_present(pm3_present) {
} }
WorkerThread::~WorkerThread() { WorkerThread::~WorkerThread() {
} }
void WorkerThread::run() { void WorkerThread::run() {
main_loop(script_cmds_file, script_cmd, usb_present); main_loop(script_cmds_file, script_cmd, pm3_present);
} }
extern "C" void ShowGraphWindow(void) { extern "C" void ShowGraphWindow(void) {
@ -53,12 +53,12 @@ extern "C" void MainGraphics(void) {
gui->MainLoop(); gui->MainLoop();
} }
extern "C" void InitGraphics(int argc, char **argv, char *script_cmds_file, char *script_cmd, bool usb_present) { extern "C" void InitGraphics(int argc, char **argv, char *script_cmds_file, char *script_cmd, bool pm3_present) {
#ifdef Q_WS_X11 #ifdef Q_WS_X11
if (getenv("DISPLAY") == NULL) if (getenv("DISPLAY") == NULL)
return; return;
#endif #endif
main_loop_thread = new WorkerThread(script_cmds_file, script_cmd, usb_present); main_loop_thread = new WorkerThread(script_cmds_file, script_cmd, pm3_present);
gui = new ProxGuiQT(argc, argv, main_loop_thread); gui = new ProxGuiQT(argc, argv, main_loop_thread);
} }

View file

@ -22,7 +22,7 @@ void ShowGraphWindow(void);
void HideGraphWindow(void); void HideGraphWindow(void);
void RepaintGraphWindow(void); void RepaintGraphWindow(void);
void MainGraphics(void); void MainGraphics(void);
void InitGraphics(int argc, char **argv, char *script_cmds_file, char *script_cmd, bool usb_present); void InitGraphics(int argc, char **argv, char *script_cmds_file, char *script_cmd, bool pm3_present);
void ExitGraphics(void); void ExitGraphics(void);
#ifndef MAX_GRAPH_TRACE_LEN #ifndef MAX_GRAPH_TRACE_LEN
#define MAX_GRAPH_TRACE_LEN (40000 * 8) #define MAX_GRAPH_TRACE_LEN (40000 * 8)

View file

@ -99,7 +99,7 @@ class WorkerThread : public QThread {
private: private:
char *script_cmds_file = NULL; char *script_cmds_file = NULL;
char *script_cmd = NULL; char *script_cmd = NULL;
bool usb_present; bool pm3_present;
}; };
class ProxGuiQT : public QObject { class ProxGuiQT : public QObject {

View file

@ -58,7 +58,7 @@ void
__attribute__((force_align_arg_pointer)) __attribute__((force_align_arg_pointer))
#endif #endif
#endif #endif
main_loop(char *script_cmds_file, char *script_cmd, bool usb_present) { main_loop(char *script_cmds_file, char *script_cmd, bool pm3_present) {
char *cmd = NULL; char *cmd = NULL;
bool execCommand = (script_cmd != NULL); bool execCommand = (script_cmd != NULL);
@ -68,7 +68,7 @@ main_loop(char *script_cmds_file, char *script_cmd, bool usb_present) {
PrintAndLogEx(DEBUG, "ISATTY/STDIN_FILENO == %s\n", (stdinOnPipe) ? "true" : "false"); PrintAndLogEx(DEBUG, "ISATTY/STDIN_FILENO == %s\n", (stdinOnPipe) ? "true" : "false");
if (usb_present) { if (pm3_present) {
SetOffline(false); SetOffline(false);
// cache Version information now: // cache Version information now:
if (execCommand || script_cmds_file || stdinOnPipe) if (execCommand || script_cmds_file || stdinOnPipe)
@ -98,10 +98,10 @@ main_loop(char *script_cmds_file, char *script_cmd, bool usb_present) {
if ( IsOffline() ) { if ( IsOffline() ) {
// sets the global variable, SP and offline) // sets the global variable, SP and offline)
usb_present = hookUpPM3(); pm3_present = hookUpPM3();
// usb and the reader_thread is NULL, create a new reader thread. // usb and the reader_thread is NULL, create a new reader thread.
if (usb_present && !IsOffline() ) { if (pm3_present && !IsOffline() ) {
rarg.run = 1; rarg.run = 1;
pthread_create(&reader_thread, NULL, &uart_receiver, &rarg); pthread_create(&reader_thread, NULL, &uart_receiver, &rarg);
// cache Version information now: // cache Version information now:
@ -276,7 +276,7 @@ static void show_help(bool showFullHelp, char *exec_name) {
int main(int argc, char *argv[]) { int main(int argc, char *argv[]) {
srand(time(0)); srand(time(0));
bool usb_present = false; bool pm3_present = false;
bool waitCOMPort = false; bool waitCOMPort = false;
bool addLuaExec = false; bool addLuaExec = false;
char *script_cmds_file = NULL; char *script_cmds_file = NULL;
@ -466,35 +466,35 @@ int main(int argc, char *argv[]) {
// try to open USB connection to Proxmark // try to open USB connection to Proxmark
if (port != NULL) if (port != NULL)
usb_present = OpenProxmark(port, waitCOMPort, 20, false, speed); pm3_present = OpenProxmark(port, waitCOMPort, 20, false, speed);
if (TestProxmark() == 0) if (pm3_present && (TestProxmark() == 0))
usb_present = false; pm3_present = false;
if (!usb_present) if (!pm3_present)
PrintAndLogEx(INFO, "Running in " _YELLOW_("OFFLINE") "mode. Check \"%s -h\" if it's not what you want.\n", exec_name); PrintAndLogEx(INFO, "Running in " _YELLOW_("OFFLINE") "mode. Check \"%s -h\" if it's not what you want.\n", exec_name);
#ifdef HAVE_GUI #ifdef HAVE_GUI
# ifdef _WIN32 # ifdef _WIN32
InitGraphics(argc, argv, script_cmds_file, script_cmd, usb_present); InitGraphics(argc, argv, script_cmds_file, script_cmd, pm3_present);
MainGraphics(); MainGraphics();
# else # else
// for *nix distro's, check enviroment variable to verify a display // for *nix distro's, check enviroment variable to verify a display
char *display = getenv("DISPLAY"); char *display = getenv("DISPLAY");
if (display && strlen(display) > 1) { if (display && strlen(display) > 1) {
InitGraphics(argc, argv, script_cmds_file, script_cmd, usb_present); InitGraphics(argc, argv, script_cmds_file, script_cmd, pm3_present);
MainGraphics(); MainGraphics();
} else { } else {
main_loop(script_cmds_file, script_cmd, usb_present); main_loop(script_cmds_file, script_cmd, pm3_present);
} }
# endif # endif
#else #else
main_loop(script_cmds_file, script_cmd, usb_present); main_loop(script_cmds_file, script_cmd, pm3_present);
#endif #endif
// Clean up the port // Clean up the port
if (usb_present) { if (pm3_present) {
CloseProxmark(); CloseProxmark();
} }

View file

@ -23,7 +23,7 @@ extern "C" {
const char *get_my_executable_path(void); const char *get_my_executable_path(void);
const char *get_my_executable_directory(void); const char *get_my_executable_directory(void);
void main_loop(char *script_cmds_file, char *script_cmd, bool usb_present); void main_loop(char *script_cmds_file, char *script_cmd, bool pm3_present);
#ifdef __cplusplus #ifdef __cplusplus
} }