From: iceman1001 Date: Wed, 7 Jan 2015 21:55:26 +0000 (+0100) Subject: Merge branch 'master' of https://github.com/Proxmark/proxmark3 X-Git-Tag: v2.0.0-rc1~44^2~22 X-Git-Url: http://git.zerfleddert.de/cgi-bin/gitweb.cgi/proxmark3-svn/commitdiff_plain/024b97c5076d1c644fe84b250882569923b67c0c Merge branch 'master' of https://github.com/Proxmark/proxmark3 Conflicts: client/cmdhf.c --- 024b97c5076d1c644fe84b250882569923b67c0c diff --cc armsrc/hitag2.c index 27a5d508,27a5d508..da77cc8a --- a/armsrc/hitag2.c +++ b/armsrc/hitag2.c @@@ -744,7 -744,7 +744,7 @@@ void SnoopHitag(uint32_t type) // Set up eavesdropping mode, frequency divisor which will drive the FPGA // and analog mux selection. FpgaDownloadAndGo(FPGA_BITSTREAM_LF); -- FpgaWriteConfWord(FPGA_MAJOR_MODE_LF_EDGE_DETECT); ++ FpgaWriteConfWord(FPGA_MAJOR_MODE_LF_EDGE_DETECT | FPGA_LF_EDGE_DETECT_TOGGLE_MODE); FpgaSendCommand(FPGA_CMD_SET_DIVISOR, 95); //125Khz SetAdcMuxFor(GPIO_MUXSEL_LOPKD); RELAY_OFF(); @@@ -968,7 -968,7 +968,7 @@@ void SimulateHitagTag(bool tag_mem_supp // Set up simulator mode, frequency divisor which will drive the FPGA // and analog mux selection. FpgaDownloadAndGo(FPGA_BITSTREAM_LF); -- FpgaWriteConfWord(FPGA_MAJOR_MODE_LF_EDGE_DETECT); ++ FpgaWriteConfWord(FPGA_MAJOR_MODE_LF_EDGE_DETECT | FPGA_LF_EDGE_DETECT_READER_FIELD); FpgaSendCommand(FPGA_CMD_SET_DIVISOR, 95); //125Khz SetAdcMuxFor(GPIO_MUXSEL_LOPKD); RELAY_OFF(); diff --cc bootrom/bootrom.c index 0c4831c8,0c4831c8..c2c81a9d --- a/bootrom/bootrom.c +++ b/bootrom/bootrom.c @@@ -103,13 -103,13 +103,11 @@@ void UsbPacketReceived(uint8_t *packet switch(c->cmd) { case CMD_DEVICE_INFO: { dont_ack = 1; --// c->cmd = CMD_DEVICE_INFO; arg0 = DEVICE_INFO_FLAG_BOOTROM_PRESENT | DEVICE_INFO_FLAG_CURRENT_MODE_BOOTROM | DEVICE_INFO_FLAG_UNDERSTANDS_START_FLASH; if(common_area.flags.osimage_present) { arg0 |= DEVICE_INFO_FLAG_OSIMAGE_PRESENT; } --// UsbSendPacket(packet, len); cmd_send(CMD_DEVICE_INFO,arg0,1,2,0,0); } break; @@@ -125,10 -125,10 +123,8 @@@ case CMD_FINISH_WRITE: { uint32_t* flash_mem = (uint32_t*)(&_flash_start); --// p = (volatile uint32_t *)&_flash_start; for (size_t j=0; j<2; j++) { for(i = 0+(64*j); i < 64+(64*j); i++) { -- //p[i+60] = c->d.asDwords[i]; flash_mem[i] = c->d.asDwords[i]; } @@@ -138,8 -138,8 +134,6 @@@ if( ((flash_address+AT91C_IFLASH_PAGE_SIZE-1) >= end_addr) || (flash_address < start_addr) ) { /* Disallow write */ dont_ack = 1; -- // c->cmd = CMD_NACK; -- // UsbSendPacket(packet, len); cmd_send(CMD_NACK,0,0,0,0,0); } else { uint32_t page_n = (flash_address - ((uint32_t)flash_mem)) / AT91C_IFLASH_PAGE_SIZE; @@@ -147,7 -147,7 +141,6 @@@ AT91C_BASE_EFC0->EFC_FCR = MC_FLASH_COMMAND_KEY | MC_FLASH_COMMAND_PAGEN(page_n) | AT91C_MC_FCMD_START_PROG; -- // arg0 = (address - ((uint32_t)flash_s)); } // Wait until flashing of page finishes @@@ -155,15 -155,15 +148,12 @@@ while(!((sr = AT91C_BASE_EFC0->EFC_FSR) & AT91C_MC_FRDY)); if(sr & (AT91C_MC_LOCKE | AT91C_MC_PROGE)) { dont_ack = 1; -- // c->cmd = CMD_NACK; cmd_send(CMD_NACK,0,0,0,0,0); -- // UsbSendPacket(packet, len); } } } break; case CMD_HARDWARE_RESET: { --// USB_D_PLUS_PULLUP_OFF(); usb_disable(); AT91C_BASE_RSTC->RSTC_RCR = RST_CONTROL_KEY | AT91C_RSTC_PROCRST; } break; @@@ -189,8 -189,8 +179,6 @@@ } else { start_addr = end_addr = 0; dont_ack = 1; --// c->cmd = CMD_NACK; --// UsbSendPacket(packet, len); cmd_send(CMD_NACK,0,0,0,0,0); } } @@@ -202,8 -202,8 +190,6 @@@ } if(!dont_ack) { --// c->cmd = CMD_ACK; --// UsbSendPacket(packet, len); cmd_send(CMD_ACK,arg0,0,0,0,0); } } @@@ -219,23 -219,23 +205,18 @@@ static void flash_mode(int externally_e usb_enable(); for (volatile size_t i=0; i<0x100000; i++); --// UsbStart(); for(;;) { WDT_HIT(); if (usb_poll()) { rx_len = usb_read(rx,sizeof(UsbCommand)); if (rx_len) { --// DbpString("starting to flash"); UsbPacketReceived(rx,rx_len); } } --// UsbPoll(TRUE); -- if(!externally_entered && !BUTTON_PRESS()) { /* Perform a reset to leave flash mode */ --// USB_D_PLUS_PULLUP_OFF(); usb_disable(); LED_B_ON(); AT91C_BASE_RSTC->RSTC_RCR = RST_CONTROL_KEY | AT91C_RSTC_PROCRST;