This is an automated email from Gerrit. Jared Boone ([email protected]) just uploaded a new patch set to Gerrit, which you can find at http://openocd.zylin.com/999
-- gerrit commit 09b6b598041bbcd7dcd032ed62e982e2174f09aa Author: Jared Boone <[email protected]> Date: Sat Dec 1 21:19:29 2012 -0800 Naive implementation of NXP LPC11Uxx flash programming support, based very closely on the LPC17xx implementation. Change-Id: I4f32b39deb0618d31eacea64df19e9c436545b3a Signed-off-by: Jared Boone <[email protected]> diff --git a/src/flash/nor/lpc2000.c b/src/flash/nor/lpc2000.c index 06f3ec4..8b08553 100644 --- a/src/flash/nor/lpc2000.c +++ b/src/flash/nor/lpc2000.c @@ -58,12 +58,16 @@ * lpc1700: * - 175x * - 176x (tested with LPC1768) + * + * lpc11u: + * - 11u14 */ typedef enum { lpc2000_v1, lpc2000_v2, - lpc1700 + lpc1700, + lpc11u, } lpc2000_variant; struct lpc2000_flash_bank { @@ -243,6 +247,32 @@ static int lpc2000_build_sector_list(struct flash_bank *bank) bank->sectors[i].is_erased = -1; bank->sectors[i].is_protected = 1; } + } else if (lpc2000_info->variant == lpc11u) { + switch (bank->size) { + case 16 * 1024: + bank->num_sectors = 4; + break; + case 24 * 1024: + bank->num_sectors = 6; + break; + case 32 * 1024: + bank->num_sectors = 8; + break; + default: + LOG_ERROR("BUG: unknown bank->size encountered"); + exit(-1); + } + + bank->sectors = malloc(sizeof(struct flash_sector) * bank->num_sectors); + + for (int i = 0; i < bank->num_sectors; i++) { + bank->sectors[i].offset = offset; + /* All sectors are 4kB-sized */ + bank->sectors[i].size = 4 * 1024; + offset += bank->sectors[i].size; + bank->sectors[i].is_erased = -1; + bank->sectors[i].is_protected = 1; + } } else { LOG_ERROR("BUG: unknown lpc2000_info->variant encountered"); exit(-1); @@ -273,6 +303,7 @@ static int lpc2000_iap_working_area_init(struct flash_bank *bank, struct working /* write IAP code to working area */ switch (lpc2000_info->variant) { + case lpc11u: case lpc1700: target_buffer_set_u32(target, jump_gate, ARMV4_5_T_BX(12)); target_buffer_set_u32(target, jump_gate + 4, ARMV5_T_BKPT(0)); @@ -307,6 +338,7 @@ static int lpc2000_iap_call(struct flash_bank *bank, struct working_area *iap_wo uint32_t iap_entry_point = 0; /* to make compiler happier */ switch (lpc2000_info->variant) { + case lpc11u: case lpc1700: armv7m_info.common_magic = ARMV7M_COMMON_MAGIC; armv7m_info.core_mode = ARMV7M_MODE_ANY; @@ -352,6 +384,7 @@ static int lpc2000_iap_call(struct flash_bank *bank, struct working_area *iap_wo buf_set_u32(reg_params[2].value, 0, 32, iap_entry_point); switch (lpc2000_info->variant) { + case lpc11u: case lpc1700: /* IAP stack */ init_reg_param(®_params[3], "sp", 32, PARAM_OUT); @@ -481,6 +514,12 @@ FLASH_BANK_COMMAND_HANDLER(lpc2000_flash_bank_command) lpc2000_info->cmd51_can_256b = 1; lpc2000_info->cmd51_can_8192b = 0; lpc2000_info->checksum_vector = 7; + } else if (strcmp(CMD_ARGV[6], "lpc11u") == 0) { + lpc2000_info->variant = lpc11u; + lpc2000_info->cmd51_dst_boundary = 256; + lpc2000_info->cmd51_can_256b = 1; + lpc2000_info->cmd51_can_8192b = 0; + lpc2000_info->checksum_vector = 7; } else { LOG_ERROR("unknown LPC2000 variant: %s", CMD_ARGV[6]); free(lpc2000_info); -- ------------------------------------------------------------------------------ Keep yourself connected to Go Parallel: DESIGN Expert tips on starting your parallel project right. http://goparallel.sourceforge.net/ _______________________________________________ OpenOCD-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/openocd-devel
