mirror of
https://github.com/RfidResearchGroup/proxmark3.git
synced 2025-08-21 05:43:48 -07:00
Merge pull request #2145 from wh201906/usb_speed
Increase the USB speed by fixing synchronization waits in usb_write()
This commit is contained in:
commit
eb44e40561
2 changed files with 6 additions and 3 deletions
|
@ -5,6 +5,7 @@ This project uses the changelog in accordance with [keepchangelog](http://keepac
|
|||
## [unreleased][unreleased]
|
||||
- Added `bind` option for network connections to specify the outbound address and port (@wh201906)
|
||||
- Changed `lf em 4x05 dump` - now supports the `--ns` nosave parameter (@iceman1001)
|
||||
- Fixed some wrong synchronization waits in usb_write() to increase the communication speed (@wh201906)
|
||||
- Added new command `data bmap` - breaks down a hexvalue to a binary template (@iceman1001)
|
||||
- Changed aid_desfire.json - added entreis from the Metrodroid project (@iceman1001)
|
||||
- Changed mad.json - added entries from the Metrodroid project (@iceman1001)
|
||||
|
|
|
@ -777,7 +777,7 @@ int usb_write(const uint8_t *data, const size_t len) {
|
|||
}
|
||||
|
||||
UDP_SET_EP_FLAGS(AT91C_EP_IN, AT91C_UDP_TXPKTRDY);
|
||||
while (pUdp->UDP_CSR[AT91C_EP_IN] & AT91C_UDP_TXPKTRDY) {};
|
||||
while (!(pUdp->UDP_CSR[AT91C_EP_IN] & AT91C_UDP_TXPKTRDY)) {};
|
||||
|
||||
while (length) {
|
||||
// Send next chunk
|
||||
|
@ -797,7 +797,7 @@ int usb_write(const uint8_t *data, const size_t len) {
|
|||
while (pUdp->UDP_CSR[AT91C_EP_IN] & AT91C_UDP_TXCOMP) {};
|
||||
|
||||
UDP_SET_EP_FLAGS(AT91C_EP_IN, AT91C_UDP_TXPKTRDY);
|
||||
while (pUdp->UDP_CSR[AT91C_EP_IN] & AT91C_UDP_TXPKTRDY) {};
|
||||
while (!(pUdp->UDP_CSR[AT91C_EP_IN] & AT91C_UDP_TXPKTRDY)) {};
|
||||
}
|
||||
|
||||
// Wait for the end of transfer
|
||||
|
@ -810,7 +810,7 @@ int usb_write(const uint8_t *data, const size_t len) {
|
|||
|
||||
|
||||
if (len % AT91C_EP_IN_SIZE == 0) {
|
||||
|
||||
// like AT91F_USB_SendZlp(), in non ping-pong mode
|
||||
UDP_SET_EP_FLAGS(AT91C_EP_IN, AT91C_UDP_TXPKTRDY);
|
||||
while (!(pUdp->UDP_CSR[AT91C_EP_IN] & AT91C_UDP_TXCOMP)) {};
|
||||
|
||||
|
@ -869,6 +869,8 @@ void AT91F_USB_SendData(AT91PS_UDP pudp, const char *pData, uint32_t length) {
|
|||
//*----------------------------------------------------------------------------
|
||||
void AT91F_USB_SendZlp(AT91PS_UDP pudp) {
|
||||
UDP_SET_EP_FLAGS(AT91C_EP_CONTROL, AT91C_UDP_TXPKTRDY);
|
||||
// for non ping-pong operation, wait until the FIFO is released
|
||||
// the flag for FIFO released is AT91C_UDP_TXCOMP rather than AT91C_UDP_TXPKTRDY
|
||||
while (!(pudp->UDP_CSR[AT91C_EP_CONTROL] & AT91C_UDP_TXCOMP)) {};
|
||||
UDP_CLEAR_EP_FLAGS(AT91C_EP_CONTROL, AT91C_UDP_TXCOMP);
|
||||
while (pudp->UDP_CSR[AT91C_EP_CONTROL] & AT91C_UDP_TXCOMP) {};
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue