forked from auracaster/openocd
jtag/driver/angie: Update Angie probe driver
Update jtag driver code to reflect these changes and properly drive Angie probe. The rationale behind this is to increase the probe performances, especially in use cases when large files shall be loaded on a target. The USB transfer performances are now close to those obtained with a standard FTDI probe. Change-Id: I3b31d75a3f66c2d07fed8c7423f765acc30925f8 Signed-off-by: Adrien Charruel <acharruel@nanoxplore.com> Reviewed-on: https://review.openocd.org/c/openocd/+/8711 Tested-by: jenkins Reviewed-by: Antonio Borneo <borneo.antonio@gmail.com>
This commit is contained in:
committed by
Antonio Borneo
parent
c132aed2a6
commit
68b6d3ad47
@@ -252,8 +252,6 @@ ATTRS{idVendor}=="303a", ATTRS{idProduct}=="1002", MODE="660", GROUP="plugdev",
|
|||||||
# ANGIE USB-JTAG Adapter
|
# ANGIE USB-JTAG Adapter
|
||||||
ATTRS{idVendor}=="584e", ATTRS{idProduct}=="414f", MODE="660", GROUP="plugdev", TAG+="uaccess"
|
ATTRS{idVendor}=="584e", ATTRS{idProduct}=="414f", MODE="660", GROUP="plugdev", TAG+="uaccess"
|
||||||
ATTRS{idVendor}=="584e", ATTRS{idProduct}=="424e", MODE="660", GROUP="plugdev", TAG+="uaccess"
|
ATTRS{idVendor}=="584e", ATTRS{idProduct}=="424e", MODE="660", GROUP="plugdev", TAG+="uaccess"
|
||||||
ATTRS{idVendor}=="584e", ATTRS{idProduct}=="4255", MODE="660", GROUP="plugdev", TAG+="uaccess"
|
|
||||||
ATTRS{idVendor}=="584e", ATTRS{idProduct}=="4355", MODE="660", GROUP="plugdev", TAG+="uaccess"
|
|
||||||
ATTRS{idVendor}=="584e", ATTRS{idProduct}=="4a55", MODE="660", GROUP="plugdev", TAG+="uaccess"
|
ATTRS{idVendor}=="584e", ATTRS{idProduct}=="4a55", MODE="660", GROUP="plugdev", TAG+="uaccess"
|
||||||
|
|
||||||
# Marvell Sheevaplug
|
# Marvell Sheevaplug
|
||||||
|
|||||||
@@ -127,8 +127,6 @@ endif
|
|||||||
if ANGIE
|
if ANGIE
|
||||||
angiedir = $(pkgdatadir)/angie
|
angiedir = $(pkgdatadir)/angie
|
||||||
DRIVERFILES += %D%/angie.c
|
DRIVERFILES += %D%/angie.c
|
||||||
DRIVERFILES += %D%/angie/include/msgtypes.h
|
|
||||||
EXTRA_DIST += %D%/angie/README
|
|
||||||
dist_angie_DATA = %D%/angie/angie_firmware.bin
|
dist_angie_DATA = %D%/angie/angie_firmware.bin
|
||||||
dist_angie_DATA += %D%/angie/angie_bitstream.bit
|
dist_angie_DATA += %D%/angie/angie_bitstream.bit
|
||||||
%C%_libocdjtagdrivers_la_LIBADD += -lm
|
%C%_libocdjtagdrivers_la_LIBADD += -lm
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -1,3 +0,0 @@
|
|||||||
This folder contain only the files needed by ANGIE's driver.
|
|
||||||
You will find the complete ANGIE's firmware and the bitstream's code source in
|
|
||||||
contrib/firmware.
|
|
||||||
@@ -1,172 +0,0 @@
|
|||||||
/* SPDX-License-Identifier: GPL-2.0-or-later
|
|
||||||
|
|
||||||
****************************************************************************
|
|
||||||
File : msgtypes.h *
|
|
||||||
Contents : Definition of the commands supported by NanoXplore *
|
|
||||||
USB-JTAG ANGIE adapter hardware. *
|
|
||||||
Based on openULINK project code by: Martin Schmoelzer. *
|
|
||||||
Copyright 2023, Ahmed Errached BOUDJELIDA, NanoXplore SAS. *
|
|
||||||
<aboudjelida@nanoxplore.com> *
|
|
||||||
<ahmederrachedbjld@gmail.com> *
|
|
||||||
*****************************************************************************/
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @file
|
|
||||||
* Definition of the commands supported by the ANGIE firmware.
|
|
||||||
*
|
|
||||||
* Basically, two types of commands can be distinguished:
|
|
||||||
* - Commands with fixed payload size
|
|
||||||
* - Commands with variable payload size
|
|
||||||
*
|
|
||||||
* SCAN commands (in all variations) carry payloads of variable size, all
|
|
||||||
* other commands carry payloads of fixed size.
|
|
||||||
*
|
|
||||||
* In the case of SCAN commands, the payload size (n) is calculated by
|
|
||||||
* dividing the scan_size_bits variable by 8, rounding up the result.
|
|
||||||
*
|
|
||||||
* Offset zero always contains the command ID.
|
|
||||||
*
|
|
||||||
****************************************************************************
|
|
||||||
* CMD_SCAN_IN, CMD_SLOW_SCAN_IN: *
|
|
||||||
* *
|
|
||||||
* OUT: *
|
|
||||||
* offset 1: scan_size_bytes *
|
|
||||||
* offset 2: bits_last_byte *
|
|
||||||
* offset 3: tms_count_start + tms_count_end *
|
|
||||||
* offset 4: tms_sequence_start *
|
|
||||||
* offset 5: tms_sequence_end *
|
|
||||||
* *
|
|
||||||
* IN: *
|
|
||||||
* offset 0..n: TDO data *
|
|
||||||
****************************************************************************
|
|
||||||
* CMD_SCAN_OUT, CMD_SLOW_SCAN_OUT: *
|
|
||||||
* *
|
|
||||||
* OUT: *
|
|
||||||
* offset 1: scan_size_bytes *
|
|
||||||
* offset 2: bits_last_byte *
|
|
||||||
* offset 3: tms_count_start + tms_count_end *
|
|
||||||
* offset 4: tms_sequence_start *
|
|
||||||
* offset 5: tms_sequence_end *
|
|
||||||
* offset 6..x: TDI data *
|
|
||||||
****************************************************************************
|
|
||||||
* CMD_SCAN_IO, CMD_SLOW_SCAN_IO: *
|
|
||||||
* *
|
|
||||||
* OUT: *
|
|
||||||
* offset 1: scan_size_bytes *
|
|
||||||
* offset 2: bits_last_byte *
|
|
||||||
* offset 3: tms_count_start + tms_count_end *
|
|
||||||
* offset 4: tms_sequence_start *
|
|
||||||
* offset 5: tms_sequence_end *
|
|
||||||
* offset 6..x: TDI data *
|
|
||||||
* *
|
|
||||||
* IN: *
|
|
||||||
* offset 0..n: TDO data *
|
|
||||||
****************************************************************************
|
|
||||||
* CMD_CLOCK_TMS, CMD_SLOW_CLOCK_TMS: *
|
|
||||||
* *
|
|
||||||
* OUT: *
|
|
||||||
* offset 1: tms_count *
|
|
||||||
* offset 2: tms_sequence *
|
|
||||||
****************************************************************************
|
|
||||||
* CMD_CLOCK_TCK, CMD_SLOW_CLOCK_TCK: *
|
|
||||||
* *
|
|
||||||
* OUT: *
|
|
||||||
* offset 1: low byte of tck_count *
|
|
||||||
* offset 2: high byte of tck_count *
|
|
||||||
****************************************************************************
|
|
||||||
* CMD_CLOCK_SLEEP_US: *
|
|
||||||
* *
|
|
||||||
* OUT: *
|
|
||||||
* offset 1: low byte of sleep_us *
|
|
||||||
* offset 2: high byte of sleep_us *
|
|
||||||
****************************************************************************
|
|
||||||
* CMD_CLOCK_SLEEP_MS: *
|
|
||||||
* *
|
|
||||||
* OUT: *
|
|
||||||
* offset 1: low byte of sleep_ms *
|
|
||||||
* offset 2: high byte of sleep_ms *
|
|
||||||
****************************************************************************
|
|
||||||
* CMD_GET_SIGNALS: *
|
|
||||||
* *
|
|
||||||
* IN: *
|
|
||||||
* offset 0: current state of input signals *
|
|
||||||
* offset 1: current state of output signals *
|
|
||||||
****************************************************************************
|
|
||||||
* CMD_SET_SIGNALS: *
|
|
||||||
* *
|
|
||||||
* OUT: *
|
|
||||||
* offset 1: signals that should be de-asserted *
|
|
||||||
* offset 2: signals that should be asserted *
|
|
||||||
****************************************************************************
|
|
||||||
* CMD_CONFIGURE_TCK_FREQ: *
|
|
||||||
* *
|
|
||||||
* OUT: *
|
|
||||||
* offset 1: delay value for scan_in function *
|
|
||||||
* offset 2: delay value for scan_out function *
|
|
||||||
* offset 3: delay value for scan_io function *
|
|
||||||
* offset 4: delay value for clock_tck function *
|
|
||||||
* offset 5: delay value for clock_tms function *
|
|
||||||
****************************************************************************
|
|
||||||
* CMD_SET_LEDS: *
|
|
||||||
* *
|
|
||||||
* OUT: *
|
|
||||||
* offset 1: LED states: *
|
|
||||||
* Bit 0: turn COM LED on *
|
|
||||||
* Bit 1: turn RUN LED on *
|
|
||||||
* Bit 2: turn COM LED off *
|
|
||||||
* Bit 3: turn RUN LED off *
|
|
||||||
* Bits 7..4: Reserved *
|
|
||||||
****************************************************************************
|
|
||||||
* CMD_TEST: *
|
|
||||||
* *
|
|
||||||
* OUT: *
|
|
||||||
* offset 1: unused dummy value *
|
|
||||||
****************************************************************************
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef __MSGTYPES_H
|
|
||||||
#define __MSGTYPES_H
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Command IDs:
|
|
||||||
*
|
|
||||||
* Bits 7..6: Reserved, should always be zero
|
|
||||||
* Bits 5..0: Command ID. There are 62 usable IDs. Of this 63 available IDs,
|
|
||||||
* the IDs 0x00..0x1F are commands with variable payload size,
|
|
||||||
* the IDs 0x20..0x3F are commands with fixed payload size.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#define CMD_ID_MASK 0x3F
|
|
||||||
|
|
||||||
/* Commands with variable payload size */
|
|
||||||
#define CMD_SCAN_IN 0x00
|
|
||||||
#define CMD_SLOW_SCAN_IN 0x01
|
|
||||||
#define CMD_SCAN_OUT 0x02
|
|
||||||
#define CMD_SLOW_SCAN_OUT 0x03
|
|
||||||
#define CMD_SCAN_IO 0x04
|
|
||||||
#define CMD_SLOW_SCAN_IO 0x05
|
|
||||||
|
|
||||||
/* Commands with fixed payload size */
|
|
||||||
#define CMD_CLOCK_TMS 0x20
|
|
||||||
#define CMD_SLOW_CLOCK_TMS 0x21
|
|
||||||
#define CMD_CLOCK_TCK 0x22
|
|
||||||
#define CMD_SLOW_CLOCK_TCK 0x23
|
|
||||||
#define CMD_SLEEP_US 0x24
|
|
||||||
#define CMD_SLEEP_MS 0x25
|
|
||||||
#define CMD_GET_SIGNALS 0x26
|
|
||||||
#define CMD_SET_SIGNALS 0x27
|
|
||||||
#define CMD_CONFIGURE_TCK_FREQ 0x28
|
|
||||||
#define CMD_SET_LEDS 0x29
|
|
||||||
#define CMD_TEST 0x2A
|
|
||||||
|
|
||||||
/* JTAG signal definition for jtag_get_signals() -- Input signals! */
|
|
||||||
#define SIGNAL_TDO 1
|
|
||||||
|
|
||||||
/* JTAG signal definition for jtag_get_signals() -- Output signals! */
|
|
||||||
#define SIGNAL_TDI 8
|
|
||||||
#define SIGNAL_TMS 2
|
|
||||||
#define SIGNAL_TCK 4
|
|
||||||
#define SIGNAL_TRST 1
|
|
||||||
#define SIGNAL_SRST 32
|
|
||||||
|
|
||||||
#endif
|
|
||||||
@@ -48,3 +48,14 @@ for { set _core 0 } { $_core < $_cores } { incr _core } {
|
|||||||
# Create direct APB and AXI interfaces
|
# Create direct APB and AXI interfaces
|
||||||
target create APB mem_ap -dap $_CHIPNAME.coresight.dap -ap-num 0
|
target create APB mem_ap -dap $_CHIPNAME.coresight.dap -ap-num 0
|
||||||
target create AXI mem_ap -dap $_CHIPNAME.coresight.dap -ap-num 1
|
target create AXI mem_ap -dap $_CHIPNAME.coresight.dap -ap-num 1
|
||||||
|
|
||||||
|
lappend post_init_commands {
|
||||||
|
foreach t [target names] {
|
||||||
|
set dap [$t cget -dap]
|
||||||
|
set ap [$t cget -ap-num]
|
||||||
|
$dap apsel $ap
|
||||||
|
# speed up firmware upload by reducing nb of RUNTEST cycles
|
||||||
|
echo "NGUltra post-init: $dap AP.$ap set memaccess to 5"
|
||||||
|
$dap memaccess 5
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user