|
From: openocd-gerrit <ope...@us...> - 2024-01-13 14:47:43
|
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "Main OpenOCD repository".
The branch, master has been updated
via 995a7af21d6f97f628382e26dc21dc38e4fa846e (commit)
from fce7aa754f40475228db345c9dd0bf3eb929fc7b (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
commit 995a7af21d6f97f628382e26dc21dc38e4fa846e
Author: Ahmed BOUDJELIDA <abo...@na...>
Date: Tue Nov 21 17:45:55 2023 +0100
jtag/drivers: send bitstream size to firmware via libusb
Send bitstream size to firmware to initialize the GPIF count registers,
since we're going to send this size via GPIF, we need to give the exact
number of bytes to be sent, then the GPIF counter will decrement with
every clock cycle (every byte sent) until reaching zero and stops.
Change-Id: Ib4e8e0f95a6a4a95ef4888ba8a04a0ea45567f5a
Signed-off-by: Ahmed BOUDJELIDA <abo...@na...>
Reviewed-on: https://review.openocd.org/c/openocd/+/7988
Tested-by: jenkins
Reviewed-by: Antonio Borneo <bor...@gm...>
diff --git a/src/jtag/drivers/angie.c b/src/jtag/drivers/angie.c
index b6bde5b3b..b7d1f8ac3 100644
--- a/src/jtag/drivers/angie.c
+++ b/src/jtag/drivers/angie.c
@@ -17,6 +17,7 @@
#include <stdlib.h>
#include <math.h>
#include "helper/system.h"
+#include <helper/types.h>
#include <jtag/interface.h>
#include <jtag/commands.h>
#include <target/image.h>
@@ -61,7 +62,7 @@
#define ANGIE_FIRMWARE_FILE PKGDATADIR "/angie/angie_firmware.bin"
/** Default location of ANGIE firmware image. */
-#define ANGIE_BITSTREAM_FILE PKGDATADIR "/angie/angie_bitstream.bit"
+#define ANGIE_BITSTREAM_FILE PKGDATADIR "/angie/angie_bitstream.bit"
/** Maximum size of a single firmware section. Entire EZ-USB ANGIE code space = 16kB */
#define SECTION_BUFFERSIZE 16384
@@ -404,15 +405,7 @@ static int angie_load_bitstream(struct angie *device, const char *filename)
FILE *bitstream_file = NULL;
char *bitstream_data = NULL;
size_t bitstream_size = 0;
-
- /* CFGopen */
- ret = jtag_libusb_control_transfer(device->usb_device_handle,
- 0x00, 0xB0, 0, 0, NULL, 0, LIBUSB_TIMEOUT_MS, &transferred);
- if (ret != ERROR_OK) {
- LOG_ERROR("Failed opencfg");
- /* Abort if libusb sent less data than requested */
- return ERROR_FAIL;
- }
+ uint8_t gpifcnt[4];
/* Open the bitstream file */
bitstream_file = fopen(bitstream_file_path, "rb");
@@ -442,6 +435,17 @@ static int angie_load_bitstream(struct angie *device, const char *filename)
return ERROR_FAIL;
}
+ h_u32_to_be(gpifcnt, bitstream_size);
+
+ /* CFGopen */
+ ret = jtag_libusb_control_transfer(device->usb_device_handle,
+ 0x00, 0xB0, 0, 0, (char *)gpifcnt, 4, LIBUSB_TIMEOUT_MS, &transferred);
+ if (ret != ERROR_OK) {
+ LOG_ERROR("Failed opencfg");
+ /* Abort if libusb sent less data than requested */
+ return ERROR_FAIL;
+ }
+
/* Send the bitstream data to the microcontroller */
int actual_length = 0;
ret = jtag_libusb_bulk_write(device->usb_device_handle, 0x02, bitstream_data, bitstream_size, 1000, &actual_length);
-----------------------------------------------------------------------
Summary of changes:
src/jtag/drivers/angie.c | 24 ++++++++++++++----------
1 file changed, 14 insertions(+), 10 deletions(-)
hooks/post-receive
--
Main OpenOCD repository
|