From e6c9ca218d944443c86555e513534d82713af936 Mon Sep 17 00:00:00 2001 From: Keith Packard Date: Thu, 28 Nov 2013 09:52:01 -0800 Subject: [PATCH 1/1] ao-tools: move 16/32-bit readers from ao-stmload to lib --- ao-tools/ao-stmload/ao-stmload.c | 40 ++------------------------------ ao-tools/lib/ao-selfload.c | 34 +++++++++++++++++++++++++++ 2 files changed, 36 insertions(+), 38 deletions(-) diff --git a/ao-tools/ao-stmload/ao-stmload.c b/ao-tools/ao-stmload/ao-stmload.c index 71d1ec57..7f521bbc 100644 --- a/ao-tools/ao-stmload/ao-stmload.c +++ b/ao-tools/ao-stmload/ao-stmload.c @@ -56,10 +56,8 @@ struct ao_sym ao_symbols[] = { }; #define NUM_SYMBOLS 5 -#define NUM_REQUIRED_SYMBOLS 3 int ao_num_symbols = NUM_SYMBOLS; -int ao_num_required_symbols = NUM_REQUIRED_SYMBOLS; /* * Edit the to-be-written memory block @@ -82,40 +80,6 @@ rewrite(struct ao_hex_image *load, unsigned address, uint8_t *data, int length) memcpy(load->data + address - load->address, data, length); } -/* - * Read a 16-bit value from the USB target - */ - -static uint16_t -get_uint16_cc(struct cc_usb *cc, uint32_t addr) -{ - struct ao_hex_image *hex = ao_self_read(cc, addr, 2); - uint16_t v; - uint8_t *data; - - if (!hex) - return 0; - data = hex->data + addr - hex->address; - v = data[0] | (data[1] << 8); - free(hex); - return v; -} - -static uint32_t -get_uint32_cc(struct cc_usb *cc, uint32_t addr) -{ - struct ao_hex_image *hex = ao_self_read(cc, addr, 4); - uint32_t v; - uint8_t *data; - - if (!hex) - return 0; - data = hex->data + addr - hex->address; - v = data[0] | (data[1] << 8) | (data[2] << 16) | (data[3] << 24); - free(hex); - return v; -} - /* * Read a 16-bit value from the target device with arbitrary * alignment @@ -148,7 +112,7 @@ get_uint16(stlink_t *sl, struct cc_usb *cc, uint32_t addr) { uint16_t result; if (cc) - result = get_uint16_cc(cc, addr); + result = ao_self_get_uint16(cc, addr); else result = get_uint16_sl(sl, addr); printf ("read 0x%08x = 0x%04x\n", addr, result); @@ -193,7 +157,7 @@ get_uint32(stlink_t *sl, struct cc_usb *cc, uint32_t addr) uint32_t result; if (cc) - result = get_uint32_cc(cc, addr); + result = ao_self_get_uint32(cc, addr); else result = get_uint32_sl(sl, addr); printf ("read 0x%08x = 0x%08x\n", addr, result); diff --git a/ao-tools/lib/ao-selfload.c b/ao-tools/lib/ao-selfload.c index bf036f33..41e45adc 100644 --- a/ao-tools/lib/ao-selfload.c +++ b/ao-tools/lib/ao-selfload.c @@ -122,3 +122,37 @@ ao_self_write(struct cc_usb *cc, struct ao_hex_image *image) cc_usb_printf(cc,"a\n"); return 1; } + +/* + * Read a 16-bit value from the USB target + */ + +uint16_t +ao_self_get_uint16(struct cc_usb *cc, uint32_t addr) +{ + struct ao_hex_image *hex = ao_self_read(cc, addr, 2); + uint16_t v; + uint8_t *data; + + if (!hex) + return 0; + data = hex->data + addr - hex->address; + v = data[0] | (data[1] << 8); + free(hex); + return v; +} + +uint32_t +ao_self_get_uint32(struct cc_usb *cc, uint32_t addr) +{ + struct ao_hex_image *hex = ao_self_read(cc, addr, 4); + uint32_t v; + uint8_t *data; + + if (!hex) + return 0; + data = hex->data + addr - hex->address; + v = data[0] | (data[1] << 8) | (data[2] << 16) | (data[3] << 24); + free(hex); + return v; +} -- 2.30.2