This is an automated email from Gerrit. Salvador Arroyo ([email protected]) just uploaded a new patch set to Gerrit, which you can find at http://openocd.zylin.com/550
-- gerrit commit 246b15026540987957e6a91484239f1b9f5c4027 Author: Salvador <[email protected]> Date: Mon Apr 2 20:01:38 2012 +0200 Finish off functions mips32_pracc_read_mem16() and mips32_pracc_read_mem8() This functions are unfinished and work only with parameter count up to 1024. Commands mdh and mdb from pic32mx context show values not related to memory content if parameter count is bigger than 1024. Firt 1024 are ok. Change-Id: Ie3f4d4a0f9d1d1a69bd3a18de2f72dd9249514cb Signed-off-by: Salvador <[email protected]> diff --git a/src/target/mips32_pracc.c b/src/target/mips32_pracc.c index 0cada4f..02c4c3e 100644 --- a/src/target/mips32_pracc.c +++ b/src/target/mips32_pracc.c @@ -442,33 +442,41 @@ static int mips32_pracc_read_mem16(struct mips_ejtag *ejtag_info, uint32_t addr, /* TODO remove array */ uint32_t *param_out = malloc(count * sizeof(uint32_t)); - int i; + if(param_out == NULL) { + LOG_ERROR("Out of memory"); + return ERROR_FAIL; + } int retval = ERROR_OK; int blocksize; - uint32_t param_in[2]; - - /*while (count > 0) */ + int hwordsread=0; + uint32_t param_in[2]; + + while (count > 0) { blocksize = count; if (count > 0x400) blocksize = 0x400; - + param_in[0] = addr; param_in[1] = blocksize; - + retval = mips32_pracc_exec(ejtag_info, ARRAY_SIZE(code), code, - ARRAY_SIZE(param_in), param_in, count, param_out, 1); - -/* count -= blocksize; */ -/* addr += blocksize; */ + ARRAY_SIZE(param_in), param_in, blocksize, ¶m_out[hwordsread], 1); + + if (retval != ERROR_OK) + return retval; + + count -= blocksize; + addr += blocksize*sizeof(uint16_t); + hwordsread+=blocksize; } - - for (i = 0; i < count; i++) + + int i; + for (i = 0; i < hwordsread; i++) buf[i] = param_out[i]; - + free(param_out); - return retval; } @@ -513,13 +521,17 @@ static int mips32_pracc_read_mem8(struct mips_ejtag *ejtag_info, uint32_t addr, /* TODO remove array */ uint32_t *param_out = malloc(count * sizeof(uint32_t)); - int i; - + if(param_out == NULL) { + LOG_ERROR("Out of memory"); + return ERROR_FAIL; + } + int retval = ERROR_OK; - int blocksize; + int blocksize; uint32_t param_in[2]; - -/* while (count > 0) */ + int bytesread=0; + + while (count > 0) { blocksize = count; if (count > 0x400) @@ -527,19 +539,22 @@ static int mips32_pracc_read_mem8(struct mips_ejtag *ejtag_info, uint32_t addr, param_in[0] = addr; param_in[1] = blocksize; - + retval = mips32_pracc_exec(ejtag_info, ARRAY_SIZE(code), code, - ARRAY_SIZE(param_in), param_in, count, param_out, 1); + ARRAY_SIZE(param_in), param_in, count, ¶m_out[bytesread], 1); + + if (retval != ERROR_OK) + return retval; -/* count -= blocksize; */ -/* addr += blocksize; */ + count -= blocksize; + addr += blocksize; + bytesread+=blocksize; } - - for (i = 0; i < count; i++) - buf[i] = param_out[i]; + int i; + for (i = 0; i < bytesread; i++) + buf[i] = param_out[i]; free(param_out); - return retval; } -- ------------------------------------------------------------------------------ This SF email is sponsosred by: Try Windows Azure free for 90 days Click Here http://p.sf.net/sfu/sfd2d-msazure _______________________________________________ OpenOCD-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/openocd-devel
