Saleae Logic16/Firmware

From sigrok
Revision as of 22:31, 25 July 2013 by Marcus Comstedt (talk | contribs) (→‎Endpoint 1 OUT (EP1_OUT) handler: Explain operations 0x7e and 0x7f)
Jump to navigation Jump to search

The following information is related to the vendor firmware included with the version 1.1.15 of the vendor application "Logic".

Interrupt handlers

The following interrupt handlers are installed. If the address is absent, it means the handler just returns (RETI) without performing any action.

RESET 0x0000
TF2 0x0e65
RESUME 0x002e
SUDAV 0x0ae8
SOF 0x13d2
SUTOK 0x13bf
SUSPEND 0x13aa
USB_RESET 0x130b
HISPEED 0x12df
EP0ACK
EP0_IN
EP0_OUT
EP1_IN
EP1_OUT 0x115d
EP2 0x11a2
EP4
EP6
EP8
IBN
EP0PING
EP1PING
EP2PING
EP4PING
EP6PING
EP8PING
ERRLIMIT
EP2ISOERR
EP4ISOERRF
EP6ISOERR
EP8ISOERRF
EP2PF
EP4PF
EP6PF
EP8PF
EP2EF
EP4EF
EP6EF
EP8EF
EP2FF 0x11e7
EP4FF
EP6FF
EP8FF
GPIFDONE
GPIFWF

Endpoint 1 OUT (EP1_OUT) handler

After decrypting the OUT packet, processing of the packet proceeds depending on the first byte of the packet, which selects the operation. After the operation, any resulting IN packet will be encrypted before submitting it to the host.

Byte Handler Operation
1 0x14f ?
2 0x157 ?
6 0x15f ?
7 0x1b3 ?
0x7a 0x309 ?
0x7b 0x346 ?
0x7c 0x282 ?
0x7d 0x2aa ?
0x7e 0x2cf Configure the GPIF, and prepare the FPGA for bitstream upload by pulsing PROG_B and then waiting for INIT_B.
0x7f 0x2e4 Transmit N (1-62) bytes of bitstream ot the FPGA DIN pin, clocked by CCLK.
0x80 0x205 Transmit N (1-31) 16-bit words to the FPGA. The second byte of the packet encodes N. Data is sent on PA6, MSB first, with rising edges of PA5 to clock the bits out. During each word transfer, PA4 is held low. The most significant bit (b15) of each word must be 0.
0x81 0x23b Perform N (1-31) write-read transactions to the FPGA. The second byte of the packet encodes N. Each transaction consists of 8 bits (from the out packet) being transmitted on PA6, like for the 0x80 operation above, and then 8 bits being received on PA7. N bytes will be available for an IN transfer afterwards. The most significant bit (b7) of each byte to send must be 0, but is actually transmitted as a 1 (to indicate read operation). PA7 is polled immediately after the falling edge of PA5. PA4 is held low during each write-read transaction.
0x82 0x3a3 Read the REVID register. 16 bits of REVID data will be available for an IN transfer.
others 0x3c7 Do nothing

Command 0x80 waveform

Logic16 FW Command 0x80 Waveform.svg

Command 0x81 waveform

Logic16 FW Command 0x81 Waveform.svg