X-Git-Url: https://review.openocd.org/gitweb?a=blobdiff_plain;f=src%2Fjtag%2Faice%2Faice_usb.c;h=0c219805f6246dcccbbddff28c99d4015c74b3f8;hb=11d918d9c1f7cb637a525a92521b747d2d4c840f;hp=ccd69975b706877285a58b4173cda80f1803c073;hpb=24dd226e896a84391a3da383d6a0b542e9934f53;p=openocd.git diff --git a/src/jtag/aice/aice_usb.c b/src/jtag/aice/aice_usb.c index ccd69975b7..0c219805f6 100644 --- a/src/jtag/aice/aice_usb.c +++ b/src/jtag/aice/aice_usb.c @@ -13,15 +13,13 @@ * GNU General Public License for more details. * * * * You should have received a copy of the GNU General Public License * - * along with this program; if not, write to the * - * Free Software Foundation, Inc., * - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. * + * along with this program. If not, see . * ***************************************************************************/ #ifdef HAVE_CONFIG_H #include "config.h" #endif -#include +#include #include #include #include @@ -41,6 +39,42 @@ static int aice_max_retry_times = 50; /* Default endian is little endian. */ static enum aice_target_endian data_endian; +/* Constants for AICE command format length */ +#define AICE_FORMAT_HTDA (3) +#define AICE_FORMAT_HTDC (7) +#define AICE_FORMAT_HTDMA (4) +#define AICE_FORMAT_HTDMB (8) +#define AICE_FORMAT_HTDMC (8) +#define AICE_FORMAT_HTDMD (12) +#define AICE_FORMAT_DTHA (6) +#define AICE_FORMAT_DTHB (2) +#define AICE_FORMAT_DTHMA (8) +#define AICE_FORMAT_DTHMB (4) + +/* Constants for AICE command */ +static const uint8_t AICE_CMD_SCAN_CHAIN = 0x00; +static const uint8_t AICE_CMD_T_READ_MISC = 0x20; +static const uint8_t AICE_CMD_T_READ_EDMSR = 0x21; +static const uint8_t AICE_CMD_T_READ_DTR = 0x22; +static const uint8_t AICE_CMD_T_READ_MEM_B = 0x24; +static const uint8_t AICE_CMD_T_READ_MEM_H = 0x25; +static const uint8_t AICE_CMD_T_READ_MEM = 0x26; +static const uint8_t AICE_CMD_T_FASTREAD_MEM = 0x27; +static const uint8_t AICE_CMD_T_WRITE_MISC = 0x28; +static const uint8_t AICE_CMD_T_WRITE_EDMSR = 0x29; +static const uint8_t AICE_CMD_T_WRITE_DTR = 0x2A; +static const uint8_t AICE_CMD_T_WRITE_DIM = 0x2B; +static const uint8_t AICE_CMD_T_WRITE_MEM_B = 0x2C; +static const uint8_t AICE_CMD_T_WRITE_MEM_H = 0x2D; +static const uint8_t AICE_CMD_T_WRITE_MEM = 0x2E; +static const uint8_t AICE_CMD_T_FASTWRITE_MEM = 0x2F; +static const uint8_t AICE_CMD_T_EXECUTE = 0x3E; +static const uint8_t AICE_CMD_READ_CTRL = 0x50; +static const uint8_t AICE_CMD_WRITE_CTRL = 0x51; +static const uint8_t AICE_CMD_BATCH_BUFFER_READ = 0x60; +static const uint8_t AICE_CMD_READ_DTR_TO_BUFFER = 0x61; +static const uint8_t AICE_CMD_BATCH_BUFFER_WRITE = 0x68; +static const uint8_t AICE_CMD_WRITE_DTR_FROM_BUFFER = 0x69; /***************************************************************************/ /* AICE commands' pack/unpack functions */ @@ -315,41 +349,53 @@ static void aice_unpack_dthmb(uint8_t *cmd_ack_code, uint8_t *target_id, /* calls the given usb_bulk_* function, allowing for the data to * trickle in with some timeouts */ static int usb_bulk_with_retries( - int (*f)(jtag_libusb_device_handle *, int, char *, int, int), - jtag_libusb_device_handle *dev, int ep, - char *bytes, int size, int timeout) + int (*f)(struct libusb_device_handle *, int, char *, int, int, int *), + struct libusb_device_handle *dev, int ep, + char *bytes, int size, int timeout, int *transferred) { int tries = 3, count = 0; while (tries && (count < size)) { - int result = f(dev, ep, bytes + count, size - count, timeout); - if (result > 0) + int result, ret; + + ret = f(dev, ep, bytes + count, size - count, timeout, &result); + if (ERROR_OK == ret) count += result; - else if ((-ETIMEDOUT != result) || !--tries) - return result; + else if ((ERROR_TIMEOUT_REACHED != ret) || !--tries) + return ret; } - return count; + + *transferred = count; + return ERROR_OK; } -static int wrap_usb_bulk_write(jtag_libusb_device_handle *dev, int ep, - char *buff, int size, int timeout) +static int wrap_usb_bulk_write(struct libusb_device_handle *dev, int ep, + char *buff, int size, int timeout, int *transferred) { + /* usb_bulk_write() takes const char *buff */ - return jtag_libusb_bulk_write(dev, ep, buff, size, timeout); + jtag_libusb_bulk_write(dev, ep, buff, size, timeout, transferred); + + return 0; } -static inline int usb_bulk_write_ex(jtag_libusb_device_handle *dev, int ep, +static inline int usb_bulk_write_ex(struct libusb_device_handle *dev, int ep, char *bytes, int size, int timeout) { - return usb_bulk_with_retries(&wrap_usb_bulk_write, - dev, ep, bytes, size, timeout); + int tr = 0; + + usb_bulk_with_retries(&wrap_usb_bulk_write, + dev, ep, bytes, size, timeout, &tr); + return tr; } -static inline int usb_bulk_read_ex(jtag_libusb_device_handle *dev, int ep, +static inline int usb_bulk_read_ex(struct libusb_device_handle *dev, int ep, char *bytes, int size, int timeout) { - return usb_bulk_with_retries(&jtag_libusb_bulk_read, - dev, ep, bytes, size, timeout); + int tr = 0; + usb_bulk_with_retries(&jtag_libusb_bulk_read, + dev, ep, bytes, size, timeout, &tr); + return tr; } /* Write data from out_buffer to USB. */ @@ -358,7 +404,7 @@ static int aice_usb_write(uint8_t *out_buffer, int out_length) int result; if (out_length > AICE_OUT_BUFFER_SIZE) { - LOG_ERROR("aice_write illegal out_length=%d (max=%d)", + LOG_ERROR("aice_write illegal out_length=%i (max=%i)", out_length, AICE_OUT_BUFFER_SIZE); return -1; } @@ -366,7 +412,7 @@ static int aice_usb_write(uint8_t *out_buffer, int out_length) result = usb_bulk_write_ex(aice_handler.usb_handle, aice_handler.usb_write_ep, (char *)out_buffer, out_length, AICE_USB_TIMEOUT); - DEBUG_JTAG_IO("aice_usb_write, out_length = %d, result = %d", + LOG_DEBUG_IO("aice_usb_write, out_length = %i, result = %i", out_length, result); return result; @@ -378,7 +424,7 @@ static int aice_usb_read(uint8_t *in_buffer, int expected_size) int result = usb_bulk_read_ex(aice_handler.usb_handle, aice_handler.usb_read_ep, (char *)in_buffer, expected_size, AICE_USB_TIMEOUT); - DEBUG_JTAG_IO("aice_usb_read, result = %d", result); + LOG_DEBUG_IO("aice_usb_read, result = %d", result); return result; } @@ -438,7 +484,9 @@ static int aice_usb_packet_flush(void) i = 0; while (1) { - aice_read_ctrl(AICE_READ_CTRL_BATCH_STATUS, &batch_status); + int retval = aice_read_ctrl(AICE_READ_CTRL_BATCH_STATUS, &batch_status); + if (retval != ERROR_OK) + return retval; if (batch_status & 0x1) return ERROR_OK; @@ -506,7 +554,6 @@ static int aice_reset_box(void) static int aice_scan_chain(uint32_t *id_codes, uint8_t *num_of_ids) { - int result; int retry_times = 0; if ((AICE_COMMAND_MODE_PACK == aice_command_mode) || @@ -521,7 +568,7 @@ static int aice_scan_chain(uint32_t *id_codes, uint8_t *num_of_ids) LOG_DEBUG("SCAN_CHAIN, length: 0x0F"); /** TODO: modify receive length */ - result = aice_usb_read(usb_in_buffer, AICE_FORMAT_DTHA); + int result = aice_usb_read(usb_in_buffer, AICE_FORMAT_DTHA); if (AICE_FORMAT_DTHA != result) { LOG_ERROR("aice_usb_read failed (requested=%d, result=%d)", AICE_FORMAT_DTHA, result); @@ -535,7 +582,7 @@ static int aice_scan_chain(uint32_t *id_codes, uint8_t *num_of_ids) if (cmd_ack_code != AICE_CMD_SCAN_CHAIN) { if (retry_times > aice_max_retry_times) { - LOG_ERROR("aice command timeout (command=0x%x, response=0x%x)", + LOG_ERROR("aice command timeout (command=0x%" PRIx8 ", response=0x%" PRIx8 ")", AICE_CMD_SCAN_CHAIN, cmd_ack_code); return ERROR_FAIL; } @@ -548,7 +595,7 @@ static int aice_scan_chain(uint32_t *id_codes, uint8_t *num_of_ids) continue; } - LOG_DEBUG("SCAN_CHAIN response, # of IDs: %d", *num_of_ids); + LOG_DEBUG("SCAN_CHAIN response, # of IDs: %" PRIu8, *num_of_ids); if (*num_of_ids == 0xFF) { LOG_ERROR("No target connected"); @@ -566,8 +613,6 @@ static int aice_scan_chain(uint32_t *id_codes, uint8_t *num_of_ids) int aice_read_ctrl(uint32_t address, uint32_t *data) { - int result; - if ((AICE_COMMAND_MODE_PACK == aice_command_mode) || (AICE_COMMAND_MODE_BATCH == aice_command_mode)) aice_usb_packet_flush(); @@ -576,9 +621,9 @@ int aice_read_ctrl(uint32_t address, uint32_t *data) aice_usb_write(usb_out_buffer, AICE_FORMAT_HTDA); - LOG_DEBUG("READ_CTRL, address: 0x%x", address); + LOG_DEBUG("READ_CTRL, address: 0x%" PRIx32, address); - result = aice_usb_read(usb_in_buffer, AICE_FORMAT_DTHA); + int result = aice_usb_read(usb_in_buffer, AICE_FORMAT_DTHA); if (AICE_FORMAT_DTHA != result) { LOG_ERROR("aice_usb_read failed (requested=%d, result=%d)", AICE_FORMAT_DTHA, result); @@ -589,11 +634,11 @@ int aice_read_ctrl(uint32_t address, uint32_t *data) uint8_t extra_length; aice_unpack_dtha(&cmd_ack_code, &extra_length, data, AICE_LITTLE_ENDIAN); - LOG_DEBUG("READ_CTRL response, data: 0x%x", *data); + LOG_DEBUG("READ_CTRL response, data: 0x%" PRIx32, *data); if (cmd_ack_code != AICE_CMD_READ_CTRL) { - LOG_ERROR("aice command error (command=0x%x, response=0x%x)", - AICE_CMD_READ_CTRL, cmd_ack_code); + LOG_ERROR("aice command error (command=0x%" PRIx32 ", response=0x%" PRIx8 ")", + (uint32_t)AICE_CMD_READ_CTRL, cmd_ack_code); return ERROR_FAIL; } @@ -602,8 +647,6 @@ int aice_read_ctrl(uint32_t address, uint32_t *data) int aice_write_ctrl(uint32_t address, uint32_t data) { - int result; - if (AICE_COMMAND_MODE_PACK == aice_command_mode) { aice_usb_packet_flush(); } else if (AICE_COMMAND_MODE_BATCH == aice_command_mode) { @@ -616,9 +659,9 @@ int aice_write_ctrl(uint32_t address, uint32_t data) aice_usb_write(usb_out_buffer, AICE_FORMAT_HTDC); - LOG_DEBUG("WRITE_CTRL, address: 0x%x, data: 0x%x", address, data); + LOG_DEBUG("WRITE_CTRL, address: 0x%" PRIx32 ", data: 0x%" PRIx32, address, data); - result = aice_usb_read(usb_in_buffer, AICE_FORMAT_DTHB); + int result = aice_usb_read(usb_in_buffer, AICE_FORMAT_DTHB); if (AICE_FORMAT_DTHB != result) { LOG_ERROR("aice_usb_read failed (requested=%d, result=%d)", AICE_FORMAT_DTHB, result); @@ -632,7 +675,7 @@ int aice_write_ctrl(uint32_t address, uint32_t data) LOG_DEBUG("WRITE_CTRL response"); if (cmd_ack_code != AICE_CMD_WRITE_CTRL) { - LOG_ERROR("aice command error (command=0x%x, response=0x%x)", + LOG_ERROR("aice command error (command=0x%" PRIx8 ", response=0x%" PRIx8 ")", AICE_CMD_WRITE_CTRL, cmd_ack_code); return ERROR_FAIL; } @@ -640,9 +683,8 @@ int aice_write_ctrl(uint32_t address, uint32_t data) return ERROR_OK; } -int aice_read_dtr(uint8_t target_id, uint32_t *data) +static int aice_read_dtr(uint8_t target_id, uint32_t *data) { - int result; int retry_times = 0; if ((AICE_COMMAND_MODE_PACK == aice_command_mode) || @@ -654,9 +696,9 @@ int aice_read_dtr(uint8_t target_id, uint32_t *data) aice_usb_write(usb_out_buffer, AICE_FORMAT_HTDMA); - LOG_DEBUG("READ_DTR, COREID: %d", target_id); + LOG_DEBUG("READ_DTR, COREID: %" PRIu8, target_id); - result = aice_usb_read(usb_in_buffer, AICE_FORMAT_DTHMA); + int result = aice_usb_read(usb_in_buffer, AICE_FORMAT_DTHMA); if (AICE_FORMAT_DTHMA != result) { LOG_ERROR("aice_usb_read failed (requested=%d, result=%d)", AICE_FORMAT_DTHMA, result); @@ -670,12 +712,12 @@ int aice_read_dtr(uint8_t target_id, uint32_t *data) data, AICE_LITTLE_ENDIAN); if (cmd_ack_code == AICE_CMD_T_READ_DTR) { - LOG_DEBUG("READ_DTR response, data: 0x%x", *data); + LOG_DEBUG("READ_DTR response, data: 0x%" PRIx32, *data); break; } else { if (retry_times > aice_max_retry_times) { - LOG_ERROR("aice command timeout (command=0x%x, response=0x%x)", + LOG_ERROR("aice command timeout (command=0x%" PRIx8 ", response=0x%" PRIx8 ")", AICE_CMD_T_READ_DTR, cmd_ack_code); return ERROR_FAIL; } @@ -691,9 +733,8 @@ int aice_read_dtr(uint8_t target_id, uint32_t *data) return ERROR_OK; } -int aice_read_dtr_to_buffer(uint8_t target_id, uint32_t buffer_idx) +static int aice_read_dtr_to_buffer(uint8_t target_id, uint32_t buffer_idx) { - int result; int retry_times = 0; if (AICE_COMMAND_MODE_PACK == aice_command_mode) { @@ -709,9 +750,9 @@ int aice_read_dtr_to_buffer(uint8_t target_id, uint32_t buffer_idx) aice_usb_write(usb_out_buffer, AICE_FORMAT_HTDMA); - LOG_DEBUG("READ_DTR_TO_BUFFER, COREID: %d", target_id); + LOG_DEBUG("READ_DTR_TO_BUFFER, COREID: %" PRIu8, target_id); - result = aice_usb_read(usb_in_buffer, AICE_FORMAT_DTHMB); + int result = aice_usb_read(usb_in_buffer, AICE_FORMAT_DTHMB); if (AICE_FORMAT_DTHMB != result) { LOG_ERROR("aice_usb_read failed (requested=%d, result=%d)", AICE_FORMAT_DTHMB, result); return ERROR_FAIL; @@ -726,7 +767,7 @@ int aice_read_dtr_to_buffer(uint8_t target_id, uint32_t buffer_idx) break; } else { if (retry_times > aice_max_retry_times) { - LOG_ERROR("aice command timeout (command=0x%x, response=0x%x)", + LOG_ERROR("aice command timeout (command=0x%" PRIx8 ", response=0x%" PRIx8 ")", AICE_CMD_READ_DTR_TO_BUFFER, cmd_ack_code); return ERROR_FAIL; @@ -743,9 +784,8 @@ int aice_read_dtr_to_buffer(uint8_t target_id, uint32_t buffer_idx) return ERROR_OK; } -int aice_write_dtr(uint8_t target_id, uint32_t data) +static int aice_write_dtr(uint8_t target_id, uint32_t data) { - int result; int retry_times = 0; if (AICE_COMMAND_MODE_PACK == aice_command_mode) { @@ -761,9 +801,9 @@ int aice_write_dtr(uint8_t target_id, uint32_t data) aice_usb_write(usb_out_buffer, AICE_FORMAT_HTDMC); - LOG_DEBUG("WRITE_DTR, COREID: %d, data: 0x%x", target_id, data); + LOG_DEBUG("WRITE_DTR, COREID: %" PRIu8 ", data: 0x%" PRIx32, target_id, data); - result = aice_usb_read(usb_in_buffer, AICE_FORMAT_DTHMB); + int result = aice_usb_read(usb_in_buffer, AICE_FORMAT_DTHMB); if (AICE_FORMAT_DTHMB != result) { LOG_ERROR("aice_usb_read failed (requested=%d, result=%d)", AICE_FORMAT_DTHMB, result); return ERROR_FAIL; @@ -779,7 +819,7 @@ int aice_write_dtr(uint8_t target_id, uint32_t data) break; } else { if (retry_times > aice_max_retry_times) { - LOG_ERROR("aice command timeout (command=0x%x, response=0x%x)", + LOG_ERROR("aice command timeout (command=0x%" PRIx8 ", response=0x%" PRIx8 ")", AICE_CMD_T_WRITE_DTR, cmd_ack_code); return ERROR_FAIL; @@ -796,9 +836,8 @@ int aice_write_dtr(uint8_t target_id, uint32_t data) return ERROR_OK; } -int aice_write_dtr_from_buffer(uint8_t target_id, uint32_t buffer_idx) +static int aice_write_dtr_from_buffer(uint8_t target_id, uint32_t buffer_idx) { - int result; int retry_times = 0; if (AICE_COMMAND_MODE_PACK == aice_command_mode) { @@ -814,9 +853,9 @@ int aice_write_dtr_from_buffer(uint8_t target_id, uint32_t buffer_idx) aice_usb_write(usb_out_buffer, AICE_FORMAT_HTDMA); - LOG_DEBUG("WRITE_DTR_FROM_BUFFER, COREID: %d", target_id); + LOG_DEBUG("WRITE_DTR_FROM_BUFFER, COREID: %" PRIu8 "", target_id); - result = aice_usb_read(usb_in_buffer, AICE_FORMAT_DTHMB); + int result = aice_usb_read(usb_in_buffer, AICE_FORMAT_DTHMB); if (AICE_FORMAT_DTHMB != result) { LOG_ERROR("aice_usb_read failed (requested=%d, result=%d)", AICE_FORMAT_DTHMB, result); return ERROR_FAIL; @@ -831,7 +870,7 @@ int aice_write_dtr_from_buffer(uint8_t target_id, uint32_t buffer_idx) break; } else { if (retry_times > aice_max_retry_times) { - LOG_ERROR("aice command timeout (command=0x%x, response=0x%x)", + LOG_ERROR("aice command timeout (command=0x%" PRIx8 ", response=0x%" PRIx8 ")", AICE_CMD_WRITE_DTR_FROM_BUFFER, cmd_ack_code); return ERROR_FAIL; @@ -848,9 +887,8 @@ int aice_write_dtr_from_buffer(uint8_t target_id, uint32_t buffer_idx) return ERROR_OK; } -int aice_read_misc(uint8_t target_id, uint32_t address, uint32_t *data) +static int aice_read_misc(uint8_t target_id, uint32_t address, uint32_t *data) { - int result; int retry_times = 0; if ((AICE_COMMAND_MODE_PACK == aice_command_mode) || @@ -862,9 +900,9 @@ int aice_read_misc(uint8_t target_id, uint32_t address, uint32_t *data) aice_usb_write(usb_out_buffer, AICE_FORMAT_HTDMA); - LOG_DEBUG("READ_MISC, COREID: %d, address: 0x%x", target_id, address); + LOG_DEBUG("READ_MISC, COREID: %" PRIu8 ", address: 0x%" PRIx32, target_id, address); - result = aice_usb_read(usb_in_buffer, AICE_FORMAT_DTHMA); + int result = aice_usb_read(usb_in_buffer, AICE_FORMAT_DTHMA); if (AICE_FORMAT_DTHMA != result) { LOG_ERROR("aice_usb_read failed (requested=%d, result=%d)", AICE_FORMAT_DTHMA, result); @@ -878,11 +916,11 @@ int aice_read_misc(uint8_t target_id, uint32_t address, uint32_t *data) data, AICE_LITTLE_ENDIAN); if (cmd_ack_code == AICE_CMD_T_READ_MISC) { - LOG_DEBUG("READ_MISC response, data: 0x%x", *data); + LOG_DEBUG("READ_MISC response, data: 0x%" PRIx32, *data); break; } else { if (retry_times > aice_max_retry_times) { - LOG_ERROR("aice command timeout (command=0x%x, response=0x%x)", + LOG_ERROR("aice command timeout (command=0x%" PRIx8 ", response=0x%" PRIx8 ")", AICE_CMD_T_READ_MISC, cmd_ack_code); return ERROR_FAIL; } @@ -898,9 +936,8 @@ int aice_read_misc(uint8_t target_id, uint32_t address, uint32_t *data) return ERROR_OK; } -int aice_write_misc(uint8_t target_id, uint32_t address, uint32_t data) +static int aice_write_misc(uint8_t target_id, uint32_t address, uint32_t data) { - int result; int retry_times = 0; if (AICE_COMMAND_MODE_PACK == aice_command_mode) { @@ -918,10 +955,10 @@ int aice_write_misc(uint8_t target_id, uint32_t address, uint32_t data) aice_usb_write(usb_out_buffer, AICE_FORMAT_HTDMC); - LOG_DEBUG("WRITE_MISC, COREID: %d, address: 0x%x, data: 0x%x", + LOG_DEBUG("WRITE_MISC, COREID: %" PRIu8 ", address: 0x%" PRIx32 ", data: 0x%" PRIx32, target_id, address, data); - result = aice_usb_read(usb_in_buffer, AICE_FORMAT_DTHMB); + int result = aice_usb_read(usb_in_buffer, AICE_FORMAT_DTHMB); if (AICE_FORMAT_DTHMB != result) { LOG_ERROR("aice_usb_read failed (requested=%d, result=%d)", AICE_FORMAT_DTHMB, result); @@ -938,7 +975,7 @@ int aice_write_misc(uint8_t target_id, uint32_t address, uint32_t data) break; } else { if (retry_times > aice_max_retry_times) { - LOG_ERROR("aice command timeout (command=0x%x, response=0x%x)", + LOG_ERROR("aice command timeout (command=0x%" PRIx8 ", response=0x%" PRIx8 ")", AICE_CMD_T_WRITE_MISC, cmd_ack_code); return ERROR_FAIL; @@ -955,9 +992,8 @@ int aice_write_misc(uint8_t target_id, uint32_t address, uint32_t data) return ERROR_OK; } -int aice_read_edmsr(uint8_t target_id, uint32_t address, uint32_t *data) +static int aice_read_edmsr(uint8_t target_id, uint32_t address, uint32_t *data) { - int result; int retry_times = 0; if ((AICE_COMMAND_MODE_PACK == aice_command_mode) || @@ -969,9 +1005,9 @@ int aice_read_edmsr(uint8_t target_id, uint32_t address, uint32_t *data) aice_usb_write(usb_out_buffer, AICE_FORMAT_HTDMA); - LOG_DEBUG("READ_EDMSR, COREID: %d, address: 0x%x", target_id, address); + LOG_DEBUG("READ_EDMSR, COREID: %" PRIu8 ", address: 0x%" PRIx32, target_id, address); - result = aice_usb_read(usb_in_buffer, AICE_FORMAT_DTHMA); + int result = aice_usb_read(usb_in_buffer, AICE_FORMAT_DTHMA); if (AICE_FORMAT_DTHMA != result) { LOG_ERROR("aice_usb_read failed (requested=%d, result=%d)", AICE_FORMAT_DTHMA, result); @@ -985,11 +1021,11 @@ int aice_read_edmsr(uint8_t target_id, uint32_t address, uint32_t *data) data, AICE_LITTLE_ENDIAN); if (cmd_ack_code == AICE_CMD_T_READ_EDMSR) { - LOG_DEBUG("READ_EDMSR response, data: 0x%x", *data); + LOG_DEBUG("READ_EDMSR response, data: 0x%" PRIx32, *data); break; } else { if (retry_times > aice_max_retry_times) { - LOG_ERROR("aice command timeout (command=0x%x, response=0x%x)", + LOG_ERROR("aice command timeout (command=0x%" PRIx8 ", response=0x%" PRIx8 ")", AICE_CMD_T_READ_EDMSR, cmd_ack_code); return ERROR_FAIL; @@ -1006,9 +1042,8 @@ int aice_read_edmsr(uint8_t target_id, uint32_t address, uint32_t *data) return ERROR_OK; } -int aice_write_edmsr(uint8_t target_id, uint32_t address, uint32_t data) +static int aice_write_edmsr(uint8_t target_id, uint32_t address, uint32_t data) { - int result; int retry_times = 0; if (AICE_COMMAND_MODE_PACK == aice_command_mode) { @@ -1026,10 +1061,10 @@ int aice_write_edmsr(uint8_t target_id, uint32_t address, uint32_t data) aice_usb_write(usb_out_buffer, AICE_FORMAT_HTDMC); - LOG_DEBUG("WRITE_EDMSR, COREID: %d, address: 0x%x, data: 0x%x", + LOG_DEBUG("WRITE_EDMSR, COREID: %" PRIu8 ", address: 0x%" PRIx32 ", data: 0x%" PRIx32, target_id, address, data); - result = aice_usb_read(usb_in_buffer, AICE_FORMAT_DTHMB); + int result = aice_usb_read(usb_in_buffer, AICE_FORMAT_DTHMB); if (AICE_FORMAT_DTHMB != result) { LOG_ERROR("aice_usb_read failed (requested=%d, result=%d)", AICE_FORMAT_DTHMB, result); @@ -1046,7 +1081,7 @@ int aice_write_edmsr(uint8_t target_id, uint32_t address, uint32_t data) break; } else { if (retry_times > aice_max_retry_times) { - LOG_ERROR("aice command timeout (command=0x%x, response=0x%x)", + LOG_ERROR("aice command timeout (command=0x%" PRIx8 ", response=0x%" PRIx8 ")", AICE_CMD_T_WRITE_EDMSR, cmd_ack_code); return ERROR_FAIL; @@ -1080,7 +1115,6 @@ static int aice_switch_to_big_endian(uint32_t *word, uint8_t num_of_words) static int aice_write_dim(uint8_t target_id, uint32_t *word, uint8_t num_of_words) { - int result; uint32_t big_endian_word[4]; int retry_times = 0; @@ -1105,14 +1139,15 @@ static int aice_write_dim(uint8_t target_id, uint32_t *word, uint8_t num_of_word aice_usb_write(usb_out_buffer, AICE_FORMAT_HTDMC + (num_of_words - 1) * 4); - LOG_DEBUG("WRITE_DIM, COREID: %d, data: 0x%08x, 0x%08x, 0x%08x, 0x%08x", + LOG_DEBUG("WRITE_DIM, COREID: %" PRIu8 + ", data: 0x%08" PRIx32 ", 0x%08" PRIx32 ", 0x%08" PRIx32 ", 0x%08" PRIx32, target_id, big_endian_word[0], big_endian_word[1], big_endian_word[2], big_endian_word[3]); - result = aice_usb_read(usb_in_buffer, AICE_FORMAT_DTHMB); + int result = aice_usb_read(usb_in_buffer, AICE_FORMAT_DTHMB); if (AICE_FORMAT_DTHMB != result) { LOG_ERROR("aice_usb_read failed (requested=%d, result=%d)", AICE_FORMAT_DTHMB, result); return ERROR_FAIL; @@ -1129,7 +1164,9 @@ static int aice_write_dim(uint8_t target_id, uint32_t *word, uint8_t num_of_word break; } else { if (retry_times > aice_max_retry_times) { - LOG_ERROR("aice command timeout (command=0x%x, response=0x%x)", AICE_CMD_T_WRITE_DIM, cmd_ack_code); + LOG_ERROR("aice command timeout (command=0x%" PRIx8 + ", response=0x%" PRIx8 ")", + AICE_CMD_T_WRITE_DIM, cmd_ack_code); return ERROR_FAIL; } @@ -1147,7 +1184,6 @@ static int aice_write_dim(uint8_t target_id, uint32_t *word, uint8_t num_of_word static int aice_do_execute(uint8_t target_id) { - int result; int retry_times = 0; if (AICE_COMMAND_MODE_PACK == aice_command_mode) { @@ -1164,9 +1200,9 @@ static int aice_do_execute(uint8_t target_id) aice_usb_write(usb_out_buffer, AICE_FORMAT_HTDMC); - LOG_DEBUG("EXECUTE, COREID: %d", target_id); + LOG_DEBUG("EXECUTE, COREID: %" PRIu8 "", target_id); - result = aice_usb_read(usb_in_buffer, AICE_FORMAT_DTHMB); + int result = aice_usb_read(usb_in_buffer, AICE_FORMAT_DTHMB); if (AICE_FORMAT_DTHMB != result) { LOG_ERROR("aice_usb_read failed (requested=%d, result=%d)", AICE_FORMAT_DTHMB, result); @@ -1183,7 +1219,7 @@ static int aice_do_execute(uint8_t target_id) break; } else { if (retry_times > aice_max_retry_times) { - LOG_ERROR("aice command timeout (command=0x%x, response=0x%x)", + LOG_ERROR("aice command timeout (command=0x%" PRIx8 ", response=0x%" PRIx8 ")", AICE_CMD_T_EXECUTE, cmd_ack_code); return ERROR_FAIL; @@ -1200,12 +1236,11 @@ static int aice_do_execute(uint8_t target_id) return ERROR_OK; } -int aice_write_mem_b(uint8_t target_id, uint32_t address, uint32_t data) +static int aice_write_mem_b(uint8_t target_id, uint32_t address, uint32_t data) { - int result; int retry_times = 0; - LOG_DEBUG("WRITE_MEM_B, COREID: %d, ADDRESS %08" PRIx32 " VALUE %08" PRIx32, + LOG_DEBUG("WRITE_MEM_B, COREID: %" PRIu8 ", ADDRESS %08" PRIx32 " VALUE %08" PRIx32, target_id, address, data); @@ -1222,7 +1257,7 @@ int aice_write_mem_b(uint8_t target_id, uint32_t address, uint32_t data) address, data & 0x000000FF, data_endian); aice_usb_write(usb_out_buffer, AICE_FORMAT_HTDMD); - result = aice_usb_read(usb_in_buffer, AICE_FORMAT_DTHMB); + int result = aice_usb_read(usb_in_buffer, AICE_FORMAT_DTHMB); if (AICE_FORMAT_DTHMB != result) { LOG_ERROR("aice_usb_read failed (requested=%d, result=%d)", AICE_FORMAT_DTHMB, result); return ERROR_FAIL; @@ -1237,7 +1272,7 @@ int aice_write_mem_b(uint8_t target_id, uint32_t address, uint32_t data) break; } else { if (retry_times > aice_max_retry_times) { - LOG_ERROR("aice command timeout (command=0x%x, response=0x%x)", + LOG_ERROR("aice command timeout (command=0x%" PRIx8 ", response=0x%" PRIx8 ")", AICE_CMD_T_WRITE_MEM_B, cmd_ack_code); return ERROR_FAIL; @@ -1255,12 +1290,11 @@ int aice_write_mem_b(uint8_t target_id, uint32_t address, uint32_t data) return ERROR_OK; } -int aice_write_mem_h(uint8_t target_id, uint32_t address, uint32_t data) +static int aice_write_mem_h(uint8_t target_id, uint32_t address, uint32_t data) { - int result; int retry_times = 0; - LOG_DEBUG("WRITE_MEM_H, COREID: %d, ADDRESS %08" PRIx32 " VALUE %08" PRIx32, + LOG_DEBUG("WRITE_MEM_H, COREID: %" PRIu8 ", ADDRESS %08" PRIx32 " VALUE %08" PRIx32, target_id, address, data); @@ -1277,7 +1311,7 @@ int aice_write_mem_h(uint8_t target_id, uint32_t address, uint32_t data) (address >> 1) & 0x7FFFFFFF, data & 0x0000FFFF, data_endian); aice_usb_write(usb_out_buffer, AICE_FORMAT_HTDMD); - result = aice_usb_read(usb_in_buffer, AICE_FORMAT_DTHMB); + int result = aice_usb_read(usb_in_buffer, AICE_FORMAT_DTHMB); if (AICE_FORMAT_DTHMB != result) { LOG_ERROR("aice_usb_read failed (requested=%d, result=%d)", AICE_FORMAT_DTHMB, result); @@ -1293,7 +1327,7 @@ int aice_write_mem_h(uint8_t target_id, uint32_t address, uint32_t data) break; } else { if (retry_times > aice_max_retry_times) { - LOG_ERROR("aice command timeout (command=0x%x, response=0x%x)", + LOG_ERROR("aice command timeout (command=0x%" PRIx8 ", response=0x%" PRIx8 ")", AICE_CMD_T_WRITE_MEM_H, cmd_ack_code); return ERROR_FAIL; @@ -1311,12 +1345,11 @@ int aice_write_mem_h(uint8_t target_id, uint32_t address, uint32_t data) return ERROR_OK; } -int aice_write_mem(uint8_t target_id, uint32_t address, uint32_t data) +static int aice_write_mem(uint8_t target_id, uint32_t address, uint32_t data) { - int result; int retry_times = 0; - LOG_DEBUG("WRITE_MEM, COREID: %d, ADDRESS %08" PRIx32 " VALUE %08" PRIx32, + LOG_DEBUG("WRITE_MEM, COREID: %" PRIu8 ", ADDRESS %08" PRIx32 " VALUE %08" PRIx32, target_id, address, data); @@ -1333,7 +1366,7 @@ int aice_write_mem(uint8_t target_id, uint32_t address, uint32_t data) (address >> 2) & 0x3FFFFFFF, data, data_endian); aice_usb_write(usb_out_buffer, AICE_FORMAT_HTDMD); - result = aice_usb_read(usb_in_buffer, AICE_FORMAT_DTHMB); + int result = aice_usb_read(usb_in_buffer, AICE_FORMAT_DTHMB); if (AICE_FORMAT_DTHMB != result) { LOG_ERROR("aice_usb_read failed (requested=%d, result=%d)", AICE_FORMAT_DTHMB, result); @@ -1349,7 +1382,7 @@ int aice_write_mem(uint8_t target_id, uint32_t address, uint32_t data) break; } else { if (retry_times > aice_max_retry_times) { - LOG_ERROR("aice command timeout (command=0x%x, response=0x%x)", + LOG_ERROR("aice command timeout (command=0x%" PRIx8 ", response=0x%" PRIx8 ")", AICE_CMD_T_WRITE_MEM, cmd_ack_code); return ERROR_FAIL; @@ -1367,9 +1400,8 @@ int aice_write_mem(uint8_t target_id, uint32_t address, uint32_t data) return ERROR_OK; } -int aice_fastread_mem(uint8_t target_id, uint8_t *word, uint32_t num_of_words) +static int aice_fastread_mem(uint8_t target_id, uint8_t *word, uint32_t num_of_words) { - int result; int retry_times = 0; if ((AICE_COMMAND_MODE_PACK == aice_command_mode) || @@ -1381,12 +1413,12 @@ int aice_fastread_mem(uint8_t target_id, uint8_t *word, uint32_t num_of_words) aice_usb_write(usb_out_buffer, AICE_FORMAT_HTDMB); - LOG_DEBUG("FASTREAD_MEM, COREID: %d, # of DATA %08" PRIx32, + LOG_DEBUG("FASTREAD_MEM, COREID: %" PRIu8 ", # of DATA %08" PRIx32, target_id, num_of_words); - result = aice_usb_read(usb_in_buffer, AICE_FORMAT_DTHMA + (num_of_words - 1) * 4); + int result = aice_usb_read(usb_in_buffer, AICE_FORMAT_DTHMA + (num_of_words - 1) * 4); if (result < 0) { - LOG_ERROR("aice_usb_read failed (requested=%d, result=%d)", + LOG_ERROR("aice_usb_read failed (requested=%" PRIu32 ", result=%d)", AICE_FORMAT_DTHMA + (num_of_words - 1) * 4, result); return ERROR_FAIL; } @@ -1401,7 +1433,7 @@ int aice_fastread_mem(uint8_t target_id, uint8_t *word, uint32_t num_of_words) break; } else { if (retry_times > aice_max_retry_times) { - LOG_ERROR("aice command timeout (command=0x%x, response=0x%x)", + LOG_ERROR("aice command timeout (command=0x%" PRIx8 ", response=0x%" PRIx8 ")", AICE_CMD_T_FASTREAD_MEM, cmd_ack_code); return ERROR_FAIL; @@ -1418,9 +1450,8 @@ int aice_fastread_mem(uint8_t target_id, uint8_t *word, uint32_t num_of_words) return ERROR_OK; } -int aice_fastwrite_mem(uint8_t target_id, const uint8_t *word, uint32_t num_of_words) +static int aice_fastwrite_mem(uint8_t target_id, const uint8_t *word, uint32_t num_of_words) { - int result; int retry_times = 0; if (AICE_COMMAND_MODE_PACK == aice_command_mode) { @@ -1439,10 +1470,10 @@ int aice_fastwrite_mem(uint8_t target_id, const uint8_t *word, uint32_t num_of_w aice_usb_write(usb_out_buffer, AICE_FORMAT_HTDMD + (num_of_words - 1) * 4); - LOG_DEBUG("FASTWRITE_MEM, COREID: %d, # of DATA %08" PRIx32, + LOG_DEBUG("FASTWRITE_MEM, COREID: %" PRIu8 ", # of DATA %08" PRIx32, target_id, num_of_words); - result = aice_usb_read(usb_in_buffer, AICE_FORMAT_DTHMB); + int result = aice_usb_read(usb_in_buffer, AICE_FORMAT_DTHMB); if (AICE_FORMAT_DTHMB != result) { LOG_ERROR("aice_usb_read failed (requested=%d, result=%d)", AICE_FORMAT_DTHMB, result); @@ -1458,7 +1489,7 @@ int aice_fastwrite_mem(uint8_t target_id, const uint8_t *word, uint32_t num_of_w break; } else { if (retry_times > aice_max_retry_times) { - LOG_ERROR("aice command timeout (command=0x%x, response=0x%x)", + LOG_ERROR("aice command timeout (command=0x%" PRIx8 ", response=0x%" PRIx8 ")", AICE_CMD_T_FASTWRITE_MEM, cmd_ack_code); return ERROR_FAIL; @@ -1475,9 +1506,8 @@ int aice_fastwrite_mem(uint8_t target_id, const uint8_t *word, uint32_t num_of_w return ERROR_OK; } -int aice_read_mem_b(uint8_t target_id, uint32_t address, uint32_t *data) +static int aice_read_mem_b(uint8_t target_id, uint32_t address, uint32_t *data) { - int result; int retry_times = 0; if ((AICE_COMMAND_MODE_PACK == aice_command_mode) || @@ -1489,9 +1519,9 @@ int aice_read_mem_b(uint8_t target_id, uint32_t address, uint32_t *data) aice_usb_write(usb_out_buffer, AICE_FORMAT_HTDMB); - LOG_DEBUG("READ_MEM_B, COREID: %d", target_id); + LOG_DEBUG("READ_MEM_B, COREID: %" PRIu8 "", target_id); - result = aice_usb_read(usb_in_buffer, AICE_FORMAT_DTHMA); + int result = aice_usb_read(usb_in_buffer, AICE_FORMAT_DTHMA); if (AICE_FORMAT_DTHMA != result) { LOG_ERROR("aice_usb_read failed (requested=%d, result=%d)", AICE_FORMAT_DTHMA, result); @@ -1505,11 +1535,11 @@ int aice_read_mem_b(uint8_t target_id, uint32_t address, uint32_t *data) data, data_endian); if (cmd_ack_code == AICE_CMD_T_READ_MEM_B) { - LOG_DEBUG("READ_MEM_B response, data: 0x%02x", *data); + LOG_DEBUG("READ_MEM_B response, data: 0x%02" PRIx32, *data); break; } else { if (retry_times > aice_max_retry_times) { - LOG_ERROR("aice command timeout (command=0x%x, response=0x%x)", + LOG_ERROR("aice command timeout (command=0x%" PRIx8 ", response=0x%" PRIx8 ")", AICE_CMD_T_READ_MEM_B, cmd_ack_code); return ERROR_FAIL; @@ -1526,9 +1556,8 @@ int aice_read_mem_b(uint8_t target_id, uint32_t address, uint32_t *data) return ERROR_OK; } -int aice_read_mem_h(uint8_t target_id, uint32_t address, uint32_t *data) +static int aice_read_mem_h(uint8_t target_id, uint32_t address, uint32_t *data) { - int result; int retry_times = 0; if ((AICE_COMMAND_MODE_PACK == aice_command_mode) || @@ -1540,9 +1569,9 @@ int aice_read_mem_h(uint8_t target_id, uint32_t address, uint32_t *data) aice_usb_write(usb_out_buffer, AICE_FORMAT_HTDMB); - LOG_DEBUG("READ_MEM_H, CORE_ID: %d", target_id); + LOG_DEBUG("READ_MEM_H, CORE_ID: %" PRIu8 "", target_id); - result = aice_usb_read(usb_in_buffer, AICE_FORMAT_DTHMA); + int result = aice_usb_read(usb_in_buffer, AICE_FORMAT_DTHMA); if (AICE_FORMAT_DTHMA != result) { LOG_ERROR("aice_usb_read failed (requested=%d, result=%d)", AICE_FORMAT_DTHMA, result); @@ -1556,11 +1585,11 @@ int aice_read_mem_h(uint8_t target_id, uint32_t address, uint32_t *data) data, data_endian); if (cmd_ack_code == AICE_CMD_T_READ_MEM_H) { - LOG_DEBUG("READ_MEM_H response, data: 0x%x", *data); + LOG_DEBUG("READ_MEM_H response, data: 0x%" PRIx32, *data); break; } else { if (retry_times > aice_max_retry_times) { - LOG_ERROR("aice command timeout (command=0x%x, response=0x%x)", + LOG_ERROR("aice command timeout (command=0x%" PRIx8 ", response=0x%" PRIx8 ")", AICE_CMD_T_READ_MEM_H, cmd_ack_code); return ERROR_FAIL; @@ -1577,9 +1606,8 @@ int aice_read_mem_h(uint8_t target_id, uint32_t address, uint32_t *data) return ERROR_OK; } -int aice_read_mem(uint8_t target_id, uint32_t address, uint32_t *data) +static int aice_read_mem(uint8_t target_id, uint32_t address, uint32_t *data) { - int result; int retry_times = 0; if ((AICE_COMMAND_MODE_PACK == aice_command_mode) || @@ -1592,9 +1620,9 @@ int aice_read_mem(uint8_t target_id, uint32_t address, uint32_t *data) aice_usb_write(usb_out_buffer, AICE_FORMAT_HTDMB); - LOG_DEBUG("READ_MEM, COREID: %d", target_id); + LOG_DEBUG("READ_MEM, COREID: %" PRIu8 "", target_id); - result = aice_usb_read(usb_in_buffer, AICE_FORMAT_DTHMA); + int result = aice_usb_read(usb_in_buffer, AICE_FORMAT_DTHMA); if (AICE_FORMAT_DTHMA != result) { LOG_ERROR("aice_usb_read failed (requested=%d, result=%d)", AICE_FORMAT_DTHMA, result); @@ -1608,11 +1636,11 @@ int aice_read_mem(uint8_t target_id, uint32_t address, uint32_t *data) data, data_endian); if (cmd_ack_code == AICE_CMD_T_READ_MEM) { - LOG_DEBUG("READ_MEM response, data: 0x%x", *data); + LOG_DEBUG("READ_MEM response, data: 0x%" PRIx32, *data); break; } else { if (retry_times > aice_max_retry_times) { - LOG_ERROR("aice command timeout (command=0x%x, response=0x%x)", + LOG_ERROR("aice command timeout (command=0x%" PRIx8 ", response=0x%" PRIx8 ")", AICE_CMD_T_READ_MEM, cmd_ack_code); return ERROR_FAIL; @@ -1629,9 +1657,8 @@ int aice_read_mem(uint8_t target_id, uint32_t address, uint32_t *data) return ERROR_OK; } -int aice_batch_buffer_read(uint8_t buf_index, uint32_t *word, uint32_t num_of_words) +static int aice_batch_buffer_read(uint8_t buf_index, uint32_t *word, uint32_t num_of_words) { - int result; int retry_times = 0; do { @@ -1641,9 +1668,9 @@ int aice_batch_buffer_read(uint8_t buf_index, uint32_t *word, uint32_t num_of_wo LOG_DEBUG("BATCH_BUFFER_READ, # of DATA %08" PRIx32, num_of_words); - result = aice_usb_read(usb_in_buffer, AICE_FORMAT_DTHMA + (num_of_words - 1) * 4); + int result = aice_usb_read(usb_in_buffer, AICE_FORMAT_DTHMA + (num_of_words - 1) * 4); if (result < 0) { - LOG_ERROR("aice_usb_read failed (requested=%d, result=%d)", + LOG_ERROR("aice_usb_read failed (requested=%" PRIu32 ", result=%d)", AICE_FORMAT_DTHMA + (num_of_words - 1) * 4, result); return ERROR_FAIL; } @@ -1658,7 +1685,7 @@ int aice_batch_buffer_read(uint8_t buf_index, uint32_t *word, uint32_t num_of_wo break; } else { if (retry_times > aice_max_retry_times) { - LOG_ERROR("aice command timeout (command=0x%x, response=0x%x)", + LOG_ERROR("aice command timeout (command=0x%" PRIx8 ", response=0x%" PRIx8 ")", AICE_CMD_BATCH_BUFFER_READ, cmd_ack_code); return ERROR_FAIL; @@ -1677,7 +1704,6 @@ int aice_batch_buffer_read(uint8_t buf_index, uint32_t *word, uint32_t num_of_wo int aice_batch_buffer_write(uint8_t buf_index, const uint8_t *word, uint32_t num_of_words) { - int result; int retry_times = 0; if (num_of_words == 0) @@ -1695,7 +1721,7 @@ int aice_batch_buffer_write(uint8_t buf_index, const uint8_t *word, uint32_t num LOG_DEBUG("BATCH_BUFFER_WRITE, # of DATA %08" PRIx32, num_of_words); - result = aice_usb_read(usb_in_buffer, AICE_FORMAT_DTHMB); + int result = aice_usb_read(usb_in_buffer, AICE_FORMAT_DTHMB); if (AICE_FORMAT_DTHMB != result) { LOG_ERROR("aice_usb_read failed (requested=%d, result=%d)", AICE_FORMAT_DTHMB, result); @@ -1711,7 +1737,7 @@ int aice_batch_buffer_write(uint8_t buf_index, const uint8_t *word, uint32_t num break; } else { if (retry_times > aice_max_retry_times) { - LOG_ERROR("aice command timeout (command=0x%x, response=0x%x)", + LOG_ERROR("aice command timeout (command=0x%" PRIx8 ", response=0x%" PRIx8 ")", AICE_CMD_BATCH_BUFFER_WRITE, cmd_ack_code); return ERROR_FAIL; @@ -1734,7 +1760,7 @@ int aice_batch_buffer_write(uint8_t buf_index, const uint8_t *word, uint32_t num typedef int (*read_mem_func_t)(uint32_t coreid, uint32_t address, uint32_t *data); typedef int (*write_mem_func_t)(uint32_t coreid, uint32_t address, uint32_t data); -struct aice_nds32_info core_info[AICE_MAX_NUM_CORE]; +static struct aice_nds32_info core_info[AICE_MAX_NUM_CORE]; static uint8_t total_num_of_core; static char *custom_srst_script; @@ -1747,8 +1773,8 @@ static int aice_write_reg(uint32_t coreid, uint32_t num, uint32_t val); static int check_suppressed_exception(uint32_t coreid, uint32_t dbger_value) { - uint32_t ir4_value; - uint32_t ir6_value; + uint32_t ir4_value = 0; + uint32_t ir6_value = 0; /* the default value of handling_suppressed_exception is false */ static bool handling_suppressed_exception; @@ -1771,8 +1797,8 @@ static int check_suppressed_exception(uint32_t coreid, uint32_t dbger_value) * | SWID[30:16] | Reserved[15:14] | SUPRS_EXC[13] | IMP_EXC[12] * | VECTOR[11:5] | INST[4] | Exc Type[3:0] | */ - LOG_INFO("EVA: 0x%08x", ir4_value); - LOG_INFO("ITYPE: 0x%08x", ir6_value); + LOG_INFO("EVA: 0x%08" PRIx32, ir4_value); + LOG_INFO("ITYPE: 0x%08" PRIx32, ir6_value); ir6_value = ir6_value & (~0x300); /* for MCU */ ir6_value = ir6_value & (~0x3000); /* for non-MCU */ @@ -1802,7 +1828,7 @@ static int check_privilege(uint32_t coreid, uint32_t dbger_value) static int aice_check_dbger(uint32_t coreid, uint32_t expect_status) { uint32_t i = 0; - uint32_t value_dbger; + uint32_t value_dbger = 0; while (1) { aice_read_misc(coreid, NDS_EDM_MISC_DBGER, &value_dbger); @@ -1818,13 +1844,13 @@ static int aice_check_dbger(uint32_t coreid, uint32_t expect_status) if ((i % 30) == 0) keep_alive(); - long long then = 0; + int64_t then = 0; if (i == aice_count_to_check_dbger) then = timeval_ms(); if (i >= aice_count_to_check_dbger) { if ((timeval_ms() - then) > 1000) { LOG_ERROR("Timeout (1000ms) waiting for $DBGER status " - "being 0x%08x", expect_status); + "being 0x%08" PRIx32, expect_status); return ERROR_FAIL; } } @@ -1851,7 +1877,7 @@ static int aice_execute_dim(uint32_t coreid, uint32_t *insts, uint8_t n_inst) /** read DBGER.DPED */ if (aice_check_dbger(coreid, NDS_DBGER_DPED) != ERROR_OK) { LOG_ERROR("<-- TARGET ERROR! Debug operations do not finish properly: " - "0x%08x 0x%08x 0x%08x 0x%08x. -->", + "0x%08" PRIx32 "0x%08" PRIx32 "0x%08" PRIx32 "0x%08" PRIx32 ". -->", insts[0], insts[1], insts[2], @@ -1864,7 +1890,7 @@ static int aice_execute_dim(uint32_t coreid, uint32_t *insts, uint8_t n_inst) static int aice_read_reg(uint32_t coreid, uint32_t num, uint32_t *val) { - LOG_DEBUG("aice_read_reg, reg_no: 0x%08x", num); + LOG_DEBUG("aice_read_reg, reg_no: 0x%08" PRIx32, num); uint32_t instructions[4]; /** execute instructions in DIM */ @@ -1923,7 +1949,7 @@ static int aice_read_reg(uint32_t coreid, uint32_t num, uint32_t *val) aice_execute_dim(coreid, instructions, 4); - uint32_t value_edmsw; + uint32_t value_edmsw = 0; aice_read_edmsr(coreid, NDS_EDM_SR_EDMSW, &value_edmsw); if (value_edmsw & NDS_EDMSW_WDV) aice_read_dtr(coreid, val); @@ -1965,10 +1991,10 @@ static int aice_usb_read_reg(uint32_t coreid, uint32_t num, uint32_t *val) static int aice_write_reg(uint32_t coreid, uint32_t num, uint32_t val) { - LOG_DEBUG("aice_write_reg, reg_no: 0x%08x, value: 0x%08x", num, val); + LOG_DEBUG("aice_write_reg, reg_no: 0x%08" PRIx32 ", value: 0x%08" PRIx32, num, val); uint32_t instructions[4]; /** execute instructions in DIM */ - uint32_t value_edmsw; + uint32_t value_edmsw = 0; aice_write_dtr(coreid, val); aice_read_edmsr(coreid, NDS_EDM_SR_EDMSW, &value_edmsw); @@ -2057,9 +2083,9 @@ static int aice_usb_open(struct aice_port_param_s *param) { const uint16_t vids[] = { param->vid, 0 }; const uint16_t pids[] = { param->pid, 0 }; - struct jtag_libusb_device_handle *devh; + struct libusb_device_handle *devh; - if (jtag_libusb_open(vids, pids, &devh) != ERROR_OK) + if (jtag_libusb_open(vids, pids, NULL, &devh, NULL) != ERROR_OK) return ERROR_FAIL; /* BE ***VERY CAREFUL*** ABOUT MAKING CHANGES IN THIS @@ -2075,7 +2101,7 @@ static int aice_usb_open(struct aice_port_param_s *param) #if IS_WIN32 == 0 - jtag_libusb_reset_device(devh); + libusb_reset_device(devh); #if IS_DARWIN == 0 @@ -2083,7 +2109,7 @@ static int aice_usb_open(struct aice_port_param_s *param) /* reopen jlink after usb_reset * on win32 this may take a second or two to re-enumerate */ int retval; - while ((retval = jtag_libusb_open(vids, pids, &devh)) != ERROR_OK) { + while ((retval = jtag_libusb_open(vids, pids, NULL, &devh, NULL)) != ERROR_OK) { usleep(1000); timeout--; if (!timeout) @@ -2096,13 +2122,14 @@ static int aice_usb_open(struct aice_port_param_s *param) #endif /* usb_set_configuration required under win32 */ - struct jtag_libusb_device *udev = jtag_libusb_get_device(devh); - jtag_libusb_set_configuration(devh, 0); - jtag_libusb_claim_interface(devh, 0); + libusb_set_configuration(devh, 0); + libusb_claim_interface(devh, 0); unsigned int aice_read_ep; unsigned int aice_write_ep; - jtag_libusb_get_endpoints(udev, &aice_read_ep, &aice_write_ep); + + jtag_libusb_choose_interface(devh, &aice_read_ep, &aice_write_ep, -1, -1, -1, LIBUSB_TRANSFER_TYPE_BULK); + LOG_DEBUG("aice_read_ep=0x%x, aice_write_ep=0x%x", aice_read_ep, aice_write_ep); aice_handler.usb_read_ep = aice_read_ep; aice_handler.usb_write_ep = aice_write_ep; @@ -2123,7 +2150,7 @@ static int aice_usb_read_reg_64(uint32_t coreid, uint32_t num, uint64_t *val) aice_read_reg(coreid, R1, &high_value); - LOG_DEBUG("low: 0x%08x, high: 0x%08x\n", value, high_value); + LOG_DEBUG("low: 0x%08" PRIx32 ", high: 0x%08" PRIx32 "\n", value, high_value); if (data_endian == AICE_BIG_ENDIAN) *val = (((uint64_t)high_value) << 32) | value; @@ -2146,7 +2173,7 @@ static int aice_usb_write_reg_64(uint32_t coreid, uint32_t num, uint64_t val) value = (val >> 32) & 0xFFFFFFFF; } - LOG_DEBUG("aice_usb_write_reg_64, %s, low: 0x%08x, high: 0x%08x\n", + LOG_DEBUG("aice_usb_write_reg_64, %s, low: 0x%08" PRIx32 ", high: 0x%08" PRIx32 "\n", nds32_reg_simple_name(num), value, high_value); aice_write_reg(coreid, R1, high_value); @@ -2168,7 +2195,7 @@ static int aice_get_version_info(void) if (aice_read_ctrl(AICE_READ_CTRL_GET_FPGA_VERSION, &fpga_version) != ERROR_OK) return ERROR_FAIL; - LOG_INFO("AICE version: hw_ver = 0x%x, fw_ver = 0x%x, fpga_ver = 0x%x", + LOG_INFO("AICE version: hw_ver = 0x%" PRIx32 ", fw_ver = 0x%" PRIx32 ", fpga_ver = 0x%" PRIx32, hardware_version, firmware_version, fpga_version); return ERROR_OK; @@ -2247,37 +2274,39 @@ get_delay: static int aice_usb_set_clock(int set_clock) { - if (aice_write_ctrl(AICE_WRITE_CTRL_TCK_CONTROL, - AICE_TCK_CONTROL_TCK_SCAN) != ERROR_OK) - return ERROR_FAIL; + if (set_clock & AICE_TCK_CONTROL_TCK_SCAN) { + if (aice_write_ctrl(AICE_WRITE_CTRL_TCK_CONTROL, + AICE_TCK_CONTROL_TCK_SCAN) != ERROR_OK) + return ERROR_FAIL; - /* Read out TCK_SCAN clock value */ - uint32_t scan_clock; - if (aice_read_ctrl(AICE_READ_CTRL_GET_ICE_STATE, &scan_clock) != ERROR_OK) - return ERROR_FAIL; + /* Read out TCK_SCAN clock value */ + uint32_t scan_clock; + if (aice_read_ctrl(AICE_READ_CTRL_GET_ICE_STATE, &scan_clock) != ERROR_OK) + return ERROR_FAIL; - scan_clock &= 0x0F; + scan_clock &= 0x0F; - uint32_t scan_base_freq; - if (scan_clock & 0x8) - scan_base_freq = 48000; /* 48 MHz */ - else - scan_base_freq = 30000; /* 30 MHz */ + uint32_t scan_base_freq; + if (scan_clock & 0x8) + scan_base_freq = 48000; /* 48 MHz */ + else + scan_base_freq = 30000; /* 30 MHz */ - uint32_t set_base_freq; - if (set_clock & 0x8) - set_base_freq = 48000; - else - set_base_freq = 30000; + uint32_t set_base_freq; + if (set_clock & 0x8) + set_base_freq = 48000; + else + set_base_freq = 30000; - uint32_t set_freq; - uint32_t scan_freq; - set_freq = set_base_freq >> (set_clock & 0x7); - scan_freq = scan_base_freq >> (scan_clock & 0x7); + uint32_t set_freq; + uint32_t scan_freq; + set_freq = set_base_freq >> (set_clock & 0x7); + scan_freq = scan_base_freq >> (scan_clock & 0x7); - if (scan_freq < set_freq) { - LOG_ERROR("User specifies higher jtag clock than TCK_SCAN clock"); - return ERROR_FAIL; + if (scan_freq < set_freq) { + LOG_ERROR("User specifies higher jtag clock than TCK_SCAN clock"); + return ERROR_FAIL; + } } if (aice_write_ctrl(AICE_WRITE_CTRL_TCK_CONTROL, set_clock) != ERROR_OK) @@ -2336,7 +2365,7 @@ static int aice_init_edm_registers(uint32_t coreid, bool clear_dex_use_psw) * So, clear DEX_USE_PSW by force. */ host_edm_ctl &= ~(0x40000000); - LOG_DEBUG("aice_init_edm_registers - EDM_CTL: 0x%08x", host_edm_ctl); + LOG_DEBUG("aice_init_edm_registers - EDM_CTL: 0x%08" PRIx32, host_edm_ctl); int result = aice_write_edmsr(coreid, NDS_EDM_SR_EDM_CTL, host_edm_ctl); @@ -2371,7 +2400,7 @@ static int aice_backup_edm_registers(uint32_t coreid) else core_info[coreid].dex_use_psw_on = false; - LOG_DEBUG("aice_backup_edm_registers - EDM_CTL: 0x%08x, DEX_USE_PSW: %s", + LOG_DEBUG("aice_backup_edm_registers - EDM_CTL: 0x%08" PRIx32 ", DEX_USE_PSW: %s", core_info[coreid].edm_ctl_backup, core_info[coreid].dex_use_psw_on ? "on" : "off"); @@ -2394,14 +2423,14 @@ static int aice_backup_tmp_registers(uint32_t coreid) LOG_DEBUG("backup_tmp_registers -"); /* backup target DTR first(if the target DTR is valid) */ - uint32_t value_edmsw; + uint32_t value_edmsw = 0; aice_read_edmsr(coreid, NDS_EDM_SR_EDMSW, &value_edmsw); core_info[coreid].edmsw_backup = value_edmsw; if (value_edmsw & 0x1) { /* EDMSW.WDV == 1 */ aice_read_dtr(coreid, &core_info[coreid].target_dtr_backup); core_info[coreid].target_dtr_valid = true; - LOG_DEBUG("Backup target DTR: 0x%08x", core_info[coreid].target_dtr_backup); + LOG_DEBUG("Backup target DTR: 0x%08" PRIx32, core_info[coreid].target_dtr_backup); } else { core_info[coreid].target_dtr_valid = false; } @@ -2425,12 +2454,12 @@ static int aice_backup_tmp_registers(uint32_t coreid) aice_read_dtr(coreid, &core_info[coreid].host_dtr_backup); core_info[coreid].host_dtr_valid = true; - LOG_DEBUG("Backup host DTR: 0x%08x", core_info[coreid].host_dtr_backup); + LOG_DEBUG("Backup host DTR: 0x%08" PRIx32, core_info[coreid].host_dtr_backup); } else { core_info[coreid].host_dtr_valid = false; } - LOG_DEBUG("r0: 0x%08x, r1: 0x%08x", + LOG_DEBUG("r0: 0x%08" PRIx32 ", r1: 0x%08" PRIx32, core_info[coreid].r0_backup, core_info[coreid].r1_backup); return ERROR_OK; @@ -2438,7 +2467,7 @@ static int aice_backup_tmp_registers(uint32_t coreid) static int aice_restore_tmp_registers(uint32_t coreid) { - LOG_DEBUG("restore_tmp_registers - r0: 0x%08x, r1: 0x%08x", + LOG_DEBUG("restore_tmp_registers - r0: 0x%08" PRIx32 ", r1: 0x%08" PRIx32, core_info[coreid].r0_backup, core_info[coreid].r1_backup); if (core_info[coreid].target_dtr_valid) { @@ -2456,7 +2485,7 @@ static int aice_restore_tmp_registers(uint32_t coreid) instructions[3] = BEQ_MINUS_12; aice_execute_dim(coreid, instructions, 4); - LOG_DEBUG("Restore target DTR: 0x%08x", core_info[coreid].target_dtr_backup); + LOG_DEBUG("Restore target DTR: 0x%08" PRIx32, core_info[coreid].target_dtr_backup); } aice_write_reg(coreid, R0, core_info[coreid].r0_backup); @@ -2465,7 +2494,7 @@ static int aice_restore_tmp_registers(uint32_t coreid) if (core_info[coreid].host_dtr_valid) { aice_write_dtr(coreid, core_info[coreid].host_dtr_backup); - LOG_DEBUG("Restore host DTR: 0x%08x", core_info[coreid].host_dtr_backup); + LOG_DEBUG("Restore host DTR: 0x%08" PRIx32, core_info[coreid].host_dtr_backup); } return ERROR_OK; @@ -2508,15 +2537,9 @@ static int aice_usb_close(void) { jtag_libusb_close(aice_handler.usb_handle); - if (custom_srst_script) - free(custom_srst_script); - - if (custom_trst_script) - free(custom_trst_script); - - if (custom_restart_script) - free(custom_restart_script); - + free(custom_srst_script); + free(custom_trst_script); + free(custom_restart_script); return ERROR_OK; } @@ -2561,13 +2584,13 @@ static int aice_usb_halt(uint32_t coreid) aice_init_edm_registers(coreid, false); /** Clear EDM_CTL.DBGIM & EDM_CTL.DBGACKM */ - uint32_t edm_ctl_value; + uint32_t edm_ctl_value = 0; aice_read_edmsr(coreid, NDS_EDM_SR_EDM_CTL, &edm_ctl_value); if (edm_ctl_value & 0x3) aice_write_edmsr(coreid, NDS_EDM_SR_EDM_CTL, edm_ctl_value & ~(0x3)); - uint32_t dbger; - uint32_t acc_ctl_value; + uint32_t dbger = 0; + uint32_t acc_ctl_value = 0; core_info[coreid].debug_under_dex_on = false; aice_read_misc(coreid, NDS_EDM_MISC_DBGER, &dbger); @@ -2608,7 +2631,7 @@ static int aice_usb_halt(uint32_t coreid) * it is only for debugging 'debug exception handler' purpose. * after openocd detaches from target, target behavior is * undefined. */ - uint32_t ir0_value; + uint32_t ir0_value = 0; uint32_t debug_mode_ir0_value; aice_read_reg(coreid, IR0, &ir0_value); debug_mode_ir0_value = ir0_value | 0x408; /* turn on DEX, set POM = 1 */ @@ -2669,7 +2692,7 @@ static int aice_usb_state(uint32_t coreid, enum aice_target_state_s *state) aice_read_reg(coreid, IR11, &ir11_value); LOG_ERROR("<-- TARGET ERROR! Reaching the max interrupt stack level; " - "CPU is stalled at 0x%08x for debugging. -->", ir11_value); + "CPU is stalled at 0x%08" PRIx32 " for debugging. -->", ir11_value); *state = AICE_TARGET_HALTED; } else if ((dbger_value & NDS_DBGER_CRST) == NDS_DBGER_CRST) { @@ -2771,7 +2794,7 @@ static int aice_issue_reset_hold(uint32_t coreid) /* set no_dbgi_pin to 0 */ uint32_t pin_status; aice_read_ctrl(AICE_READ_CTRL_GET_JTAG_PIN_STATUS, &pin_status); - if (pin_status | 0x4) + if (pin_status & 0x4) aice_write_ctrl(AICE_WRITE_CTRL_JTAG_PIN_STATUS, pin_status & (~0x4)); /* issue restart */ @@ -2961,7 +2984,7 @@ static int aice_usb_step(uint32_t coreid) if (AICE_TARGET_HALTED == state) break; - long long then = 0; + int64_t then = 0; if (i == 30) then = timeval_ms(); @@ -3064,7 +3087,8 @@ static int aice_usb_set_address_dim(uint32_t coreid, uint32_t address) static int aice_usb_read_memory_unit(uint32_t coreid, uint32_t addr, uint32_t size, uint32_t count, uint8_t *buffer) { - LOG_DEBUG("aice_usb_read_memory_unit, addr: 0x%08x, size: %d, count: %d", + LOG_DEBUG("aice_usb_read_memory_unit, addr: 0x%08" PRIx32 + ", size: %" PRIu32 ", count: %" PRIu32 "", addr, size, count); if (NDS_MEMORY_ACC_CPU == core_info[coreid].access_channel) @@ -3182,7 +3206,8 @@ static int aice_usb_write_mem_w_dim(uint32_t coreid, uint32_t address, uint32_t static int aice_usb_write_memory_unit(uint32_t coreid, uint32_t addr, uint32_t size, uint32_t count, const uint8_t *buffer) { - LOG_DEBUG("aice_usb_write_memory_unit, addr: 0x%08x, size: %d, count: %d", + LOG_DEBUG("aice_usb_write_memory_unit, addr: 0x%08" PRIx32 + ", size: %" PRIu32 ", count: %" PRIu32 "", addr, size, count); if (NDS_MEMORY_ACC_CPU == core_info[coreid].access_channel) @@ -3292,7 +3317,7 @@ static int aice_bulk_write_mem(uint32_t coreid, uint32_t addr, uint32_t count, static int aice_usb_bulk_read_mem(uint32_t coreid, uint32_t addr, uint32_t length, uint8_t *buffer) { - LOG_DEBUG("aice_usb_bulk_read_mem, addr: 0x%08x, length: 0x%08x", addr, length); + LOG_DEBUG("aice_usb_bulk_read_mem, addr: 0x%08" PRIx32 ", length: 0x%08" PRIx32, addr, length); int retval; @@ -3310,7 +3335,7 @@ static int aice_usb_bulk_read_mem(uint32_t coreid, uint32_t addr, static int aice_usb_bulk_write_mem(uint32_t coreid, uint32_t addr, uint32_t length, const uint8_t *buffer) { - LOG_DEBUG("aice_usb_bulk_write_mem, addr: 0x%08x, length: 0x%08x", addr, length); + LOG_DEBUG("aice_usb_bulk_write_mem, addr: 0x%08" PRIx32 ", length: 0x%08" PRIx32, addr, length); int retval; @@ -3360,7 +3385,7 @@ static int aice_usb_write_debug_reg(uint32_t coreid, uint32_t addr, const uint32 static int aice_usb_memory_access(uint32_t coreid, enum nds_memory_access channel) { - LOG_DEBUG("aice_usb_memory_access, access channel: %d", channel); + LOG_DEBUG("aice_usb_memory_access, access channel: %u", channel); core_info[coreid].access_channel = channel; @@ -3372,7 +3397,7 @@ static int aice_usb_memory_mode(uint32_t coreid, enum nds_memory_select mem_sele if (core_info[coreid].memory_select == mem_select) return ERROR_OK; - LOG_DEBUG("aice_usb_memory_mode, memory select: %d", mem_select); + LOG_DEBUG("aice_usb_memory_mode, memory select: %u", mem_select); core_info[coreid].memory_select = mem_select; @@ -3386,10 +3411,10 @@ static int aice_usb_memory_mode(uint32_t coreid, enum nds_memory_select mem_sele return ERROR_OK; } -static int aice_usb_read_tlb(uint32_t coreid, uint32_t virtual_address, - uint32_t *physical_address) +static int aice_usb_read_tlb(uint32_t coreid, target_addr_t virtual_address, + target_addr_t *physical_address) { - LOG_DEBUG("aice_usb_read_tlb, virtual address: 0x%08x", virtual_address); + LOG_DEBUG("aice_usb_read_tlb, virtual address: 0x%08" TARGET_PRIxADDR, virtual_address); uint32_t instructions[4]; uint32_t probe_result; @@ -3470,8 +3495,8 @@ static int aice_usb_init_cache(uint32_t coreid) icache->log2_line_size = 0; } - LOG_DEBUG("\ticache set: %d, way: %d, line size: %d, " - "log2(set): %d, log2(line_size): %d", + LOG_DEBUG("\ticache set: %" PRIu32 ", way: %" PRIu32 ", line size: %" PRIu32 ", " + "log2(set): %" PRIu32 ", log2(line_size): %" PRIu32 "", icache->set, icache->way, icache->line_size, icache->log2_set, icache->log2_line_size); @@ -3489,8 +3514,8 @@ static int aice_usb_init_cache(uint32_t coreid) dcache->log2_line_size = 0; } - LOG_DEBUG("\tdcache set: %d, way: %d, line size: %d, " - "log2(set): %d, log2(line_size): %d", + LOG_DEBUG("\tdcache set: %" PRIu32 ", way: %" PRIu32 ", line size: %" PRIu32 ", " + "log2(set): %" PRIu32 ", log2(line_size): %" PRIu32 "", dcache->set, dcache->way, dcache->line_size, dcache->log2_set, dcache->log2_line_size); @@ -3802,7 +3827,7 @@ static int aice_usb_execute(uint32_t coreid, uint32_t *instructions, if (aice_check_dbger(coreid, NDS_DBGER_DPED) != ERROR_OK) { LOG_ERROR("<-- TARGET ERROR! Debug operations do not finish properly:" - "0x%08x 0x%08x 0x%08x 0x%08x. -->", + "0x%08" PRIx32 " 0x%08" PRIx32 " 0x%08" PRIx32 " 0x%08" PRIx32 ". -->", dim_instructions[0], dim_instructions[1], dim_instructions[2], @@ -3974,7 +3999,7 @@ static int aice_usb_profiling(uint32_t coreid, uint32_t interval, uint32_t itera /* check status */ uint32_t i; - uint32_t batch_status; + uint32_t batch_status = 0; i = 0; while (1) {