From: David B. <dbr...@us...> - 2009-12-15 00:59:42
|
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 36dec1b319bec7723f8dc3f84732911ebeed250a (commit) via af79925eb1937044977f969a53ea3b7635f576b1 (commit) from 6f929dbd93e1b2c0373f389060bf64e60e8194ab (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 36dec1b319bec7723f8dc3f84732911ebeed250a Author: Eric Wetzel <the...@gm...> Date: Mon Dec 14 15:59:27 2009 -0500 stellaris: device IDs I added the remaining devices and device IDs to stellaris.c, and removed several devices that don't exist on the Stellaris web page. Additionally, I found a few devices with duplicate IDs ... the DID1 Version Number for LM3Sxxx parts have DID1 Version = 0x0, and for LM3Sxxxx have DID1 Version = 0x1. So I extended the comparison to use the VER and FAM fields from DID1 also. ID=0x33: LM3S812 (DID1v0) and LM3S2616 (DID1v1) ID=0x39: LM3S808 (DID1v0) and LM3S2276 (DID1v1) These are the parts I removed from the file for lack of documentation (no data sheet to confirm part ID): LM3S318, LM3S1101, LM3S1108, LM3S1615, LM3S1616, LM3S2016, LM3S2101, LM3S2108, LM3S3759, LM3S3768, LM3S5757, LM3S5767, LM3S5768, LM3S5769, LM3S6815, LM3S6816, LM3S6915, LM3S6916, LM3S6111, LM3S6118. Also, sort devices according to part number. Signed-off-by: David Brownell <dbr...@us...> diff --git a/src/flash/nor/stellaris.c b/src/flash/nor/stellaris.c index 8584843..103202d 100644 --- a/src/flash/nor/stellaris.c +++ b/src/flash/nor/stellaris.c @@ -46,155 +46,173 @@ static struct { char *partname; } StellarisParts[] = { - {0x01,"LM3S101"}, - {0x02,"LM3S102"}, - {0x03,"LM3S1625"}, - {0x04,"LM3S1626"}, - {0x05,"LM3S1627"}, - {0x06,"LM3S1607"}, - {0x10,"LM3S1776"}, - {0x19,"LM3S300"}, - {0x11,"LM3S301"}, - {0x12,"LM3S310"}, - {0x1A,"LM3S308"}, - {0x13,"LM3S315"}, - {0x14,"LM3S316"}, - {0x17,"LM3S317"}, - {0x18,"LM3S318"}, - {0x15,"LM3S328"}, - {0x2A,"LM3S600"}, - {0x21,"LM3S601"}, - {0x2B,"LM3S608"}, - {0x22,"LM3S610"}, - {0x23,"LM3S611"}, - {0x24,"LM3S612"}, - {0x25,"LM3S613"}, - {0x26,"LM3S615"}, - {0x28,"LM3S617"}, - {0x29,"LM3S618"}, - {0x27,"LM3S628"}, - {0x38,"LM3S800"}, - {0x31,"LM3S801"}, - {0x39,"LM3S808"}, - {0x32,"LM3S811"}, - {0x33,"LM3S812"}, - /*{0x33,"LM3S2616"},*/ - {0x34,"LM3S815"}, - {0x36,"LM3S817"}, - {0x37,"LM3S818"}, - {0x35,"LM3S828"}, - {0x39,"LM3S2276"}, - {0x3A,"LM3S2776"}, - {0x43,"LM3S3651"}, - {0x44,"LM3S3739"}, - {0x45,"LM3S3749"}, - {0x46,"LM3S3759"}, - {0x48,"LM3S3768"}, - {0x49,"LM3S3748"}, - {0x4B,"LM3S5R36"}, - {0x50,"LM3S2678"}, - {0x51,"LM3S2110"}, - {0x52,"LM3S2739"}, - {0x53,"LM3S2651"}, - {0x54,"LM3S2939"}, - {0x55,"LM3S2965"}, - {0x56,"LM3S2432"}, - {0x57,"LM3S2620"}, - {0x58,"LM3S2950"}, - {0x59,"LM3S2412"}, - {0x5A,"LM3S2533"}, - {0x61,"LM3S8630"}, - {0x62,"LM3S8970"}, - {0x63,"LM3S8730"}, - {0x64,"LM3S8530"}, - {0x65,"LM3S8930"}, - {0x71,"LM3S6610"}, - {0x72,"LM3S6950"}, - {0x73,"LM3S6965"}, - {0x74,"LM3S6110"}, - {0x75,"LM3S6432"}, - {0x76,"LM3S6537"}, - {0x77,"LM3S6753"}, - {0x78,"LM3S6952"}, - {0x80,"LM3S2671"}, - {0x81,"LM3S5632"}, - {0x82,"LM3S6422"}, - {0x83,"LM3S6633"}, - {0x84,"LM3S2139"}, - {0x85,"LM3S2637"}, - {0x86,"LM3S8738"}, - {0x88,"LM3S8938"}, - {0x89,"LM3S6938"}, - {0x8A,"LM3S5652"}, - {0x8B,"LM3S6637"}, - {0x8C,"LM3S8933"}, - {0x8D,"LM3S8733"}, - {0x8E,"LM3S8538"}, - {0x8F,"LM3S2948"}, - {0x91,"LM3S5662"}, - {0x96,"LM3S5732"}, - {0x97,"LM3S5737"}, - {0x99,"LM3S5747"}, - {0x9A,"LM3S5752"}, - {0x9B,"LM3S5757"}, - {0x9C,"LM3S5762"}, - {0x9D,"LM3S5767"}, - {0xA0,"LM3S5739"}, - {0xA1,"LM3S6100"}, - {0xA2,"LM3S2410"}, - {0xA3,"LM3S6730"}, - {0xA4,"LM3S2730"}, - {0xA5,"LM3S6420"}, - {0xA6,"LM3S8962"}, - {0xA7,"LM3S5749"}, - {0xA8,"LM3S5769"}, - {0xA9,"LM3S5768"}, - {0xB3,"LM3S1635"}, - {0xB4,"LM3S1850"}, - {0xB5,"LM3S1960"}, - {0xB7,"LM3S1937"}, - {0xB8,"LM3S1968"}, - {0xB9,"LM3S1751"}, - {0xBA,"LM3S1439"}, - {0xBB,"LM3S1512"}, - {0xBC,"LM3S1435"}, - {0xBD,"LM3S1637"}, - {0xBE,"LM3S1958"}, - {0xBF,"LM3S1110"}, - {0xC0,"LM3S1620"}, - {0xC1,"LM3S1150"}, - {0xC2,"LM3S1165"}, - {0xC3,"LM3S1133"}, - {0xC4,"LM3S1162"}, - {0xC5,"LM3S1138"}, - {0xC6,"LM3S1332"}, - {0xC7,"LM3S1538"}, - {0xD0,"LM3S6815"}, - {0xD1,"LM3S6816"}, - {0xD2,"LM3S6915"}, - {0xD3,"LM3S6916"}, - {0xD4,"LM3S2016"}, - {0xD5,"LM3S1615"}, - {0xD6,"LM3S1616"}, - {0xD7,"LM3S8971"}, - {0xD8,"LM3S1108"}, - {0xD9,"LM3S1101"}, - {0xDA,"LM3S1608"}, - {0xDB,"LM3S1601"}, - {0xDC,"LM3S1918"}, - {0xDD,"LM3S1911"}, - {0xDE,"LM3S2108"}, - {0xDF,"LM3S2101"}, - {0xE0,"LM3S2608"}, - {0xE1,"LM3S2601"}, - {0xE2,"LM3S2918"}, - {0xE3,"LM3S2911"}, - {0xE4,"LM3S6118"}, - {0xE5,"LM3S6111"}, - {0xE6,"LM3S6618"}, - {0xE7,"LM3S6611"}, - {0xE8,"LM3S6918"}, - {0xE9,"LM3S6911"}, + {0x0001,"LM3S101"}, + {0x0002,"LM3S102"}, + {0x0019,"LM3S300"}, + {0x0011,"LM3S301"}, + {0x001A,"LM3S308"}, + {0x0012,"LM3S310"}, + {0x0013,"LM3S315"}, + {0x0014,"LM3S316"}, + {0x0017,"LM3S317"}, + {0x0015,"LM3S328"}, + {0x002A,"LM3S600"}, + {0x0021,"LM3S601"}, + {0x002B,"LM3S608"}, + {0x0022,"LM3S610"}, + {0x0023,"LM3S611"}, + {0x0024,"LM3S612"}, + {0x0025,"LM3S613"}, + {0x0026,"LM3S615"}, + {0x0028,"LM3S617"}, + {0x0029,"LM3S618"}, + {0x0027,"LM3S628"}, + {0x0038,"LM3S800"}, + {0x0031,"LM3S801"}, + {0x0039,"LM3S808"}, + {0x0032,"LM3S811"}, + {0x0033,"LM3S812"}, + {0x0034,"LM3S815"}, + {0x0036,"LM3S817"}, + {0x0037,"LM3S818"}, + {0x0035,"LM3S828"}, + {0x10BF,"LM3S1110"}, + {0x10C3,"LM3S1133"}, + {0x10C5,"LM3S1138"}, + {0x10C1,"LM3S1150"}, + {0x10C4,"LM3S1162"}, + {0x10C2,"LM3S1165"}, + {0x10C6,"LM3S1332"}, + {0x10BC,"LM3S1435"}, + {0x10BA,"LM3S1439"}, + {0x10BB,"LM3S1512"}, + {0x10C7,"LM3S1538"}, + {0x10DB,"LM3S1601"}, + {0x1006,"LM3S1607"}, + {0x10DA,"LM3S1608"}, + {0x10C0,"LM3S1620"}, + {0x1003,"LM3S1625"}, + {0x1004,"LM3S1626"}, + {0x1005,"LM3S1627"}, + {0x10B3,"LM3S1635"}, + {0x10BD,"LM3S1637"}, + {0x10B9,"LM3S1751"}, + {0x1010,"LM3S1776"}, + {0x1016,"LM3S1811"}, + {0x103D,"LM3S1816"}, + {0x10B4,"LM3S1850"}, + {0x10DD,"LM3S1911"}, + {0x10DC,"LM3S1918"}, + {0x10B7,"LM3S1937"}, + {0x10BE,"LM3S1958"}, + {0x10B5,"LM3S1960"}, + {0x10B8,"LM3S1968"}, + {0x100F,"LM3S1J11"}, + {0x103C,"LM3S1J16"}, + {0x100E,"LM3S1N11"}, + {0x103B,"LM3S1N16"}, + {0x1030,"LM3S1W16"}, + {0x102F,"LM3S1Z16"}, + {0x1051,"LM3S2110"}, + {0x1084,"LM3S2139"}, + {0x1039,"LM3S2276"}, + {0x10A2,"LM3S2410"}, + {0x1059,"LM3S2412"}, + {0x1056,"LM3S2432"}, + {0x105A,"LM3S2533"}, + {0x10E1,"LM3S2601"}, + {0x10E0,"LM3S2608"}, + {0x1033,"LM3S2616"}, + {0x1057,"LM3S2620"}, + {0x1085,"LM3S2637"}, + {0x1053,"LM3S2651"}, + {0x1080,"LM3S2671"}, + {0x1050,"LM3S2678"}, + {0x10A4,"LM3S2730"}, + {0x1052,"LM3S2739"}, + {0x103A,"LM3S2776"}, + {0x106D,"LM3S2793"}, + {0x10E3,"LM3S2911"}, + {0x10E2,"LM3S2918"}, + {0x1054,"LM3S2939"}, + {0x108F,"LM3S2948"}, + {0x1058,"LM3S2950"}, + {0x1055,"LM3S2965"}, + {0x106C,"LM3S2B93"}, + {0x1043,"LM3S3651"}, + {0x1044,"LM3S3739"}, + {0x1049,"LM3S3748"}, + {0x1045,"LM3S3749"}, + {0x1042,"LM3S3826"}, + {0x1041,"LM3S3J26"}, + {0x1040,"LM3S3N26"}, + {0x103F,"LM3S3W26"}, + {0x103E,"LM3S3Z26"}, + {0x1081,"LM3S5632"}, + {0x100C,"LM3S5651"}, + {0x108A,"LM3S5652"}, + {0x104D,"LM3S5656"}, + {0x1091,"LM3S5662"}, + {0x1096,"LM3S5732"}, + {0x1097,"LM3S5737"}, + {0x10A0,"LM3S5739"}, + {0x1099,"LM3S5747"}, + {0x10A7,"LM3S5749"}, + {0x109A,"LM3S5752"}, + {0x109C,"LM3S5762"}, + {0x1069,"LM3S5791"}, + {0x100B,"LM3S5951"}, + {0x104E,"LM3S5956"}, + {0x1068,"LM3S5B91"}, + {0x1009,"LM3S5K31"}, + {0x104A,"LM3S5K36"}, + {0x100A,"LM3S5P31"}, + {0x1048,"LM3S5P36"}, + {0x100D,"LM3S5P51"}, + {0x104C,"LM3S5P56"}, + {0x1007,"LM3S5R31"}, + {0x104B,"LM3S5R36"}, + {0x1047,"LM3S5T36"}, + {0x1046,"LM3S5Y36"}, + {0x10A1,"LM3S6100"}, + {0x1074,"LM3S6110"}, + {0x10A5,"LM3S6420"}, + {0x1082,"LM3S6422"}, + {0x1075,"LM3S6432"}, + {0x1076,"LM3S6537"}, + {0x1071,"LM3S6610"}, + {0x10E7,"LM3S6611"}, + {0x10E6,"LM3S6618"}, + {0x1083,"LM3S6633"}, + {0x108B,"LM3S6637"}, + {0x10A3,"LM3S6730"}, + {0x1077,"LM3S6753"}, + {0x10E9,"LM3S6911"}, + {0x10E8,"LM3S6918"}, + {0x1089,"LM3S6938"}, + {0x1072,"LM3S6950"}, + {0x1078,"LM3S6952"}, + {0x1073,"LM3S6965"}, + {0x1064,"LM3S8530"}, + {0x108E,"LM3S8538"}, + {0x1061,"LM3S8630"}, + {0x1063,"LM3S8730"}, + {0x108D,"LM3S8733"}, + {0x1086,"LM3S8738"}, + {0x1065,"LM3S8930"}, + {0x108C,"LM3S8933"}, + {0x1088,"LM3S8938"}, + {0x10A6,"LM3S8962"}, + {0x1062,"LM3S8970"}, + {0x10D7,"LM3S8971"}, + {0x1067,"LM3S9790"}, + {0x106B,"LM3S9792"}, + {0x1020,"LM3S9997"}, + {0x1066,"LM3S9B90"}, + {0x106A,"LM3S9B92"}, + {0x106E,"LM3S9B95"}, + {0x106F,"LM3S9B96"}, + {0x1018,"LM3S9L97"}, {0,"Unknown part"} }; @@ -574,7 +592,7 @@ static int stellaris_read_part_info(struct flash_bank *bank) for (i = 0; StellarisParts[i].partno; i++) { - if (StellarisParts[i].partno == ((did1 >> 16) & 0xFF)) + if (StellarisParts[i].partno == ((did1 >> 16) & 0xFFFF)) break; } commit af79925eb1937044977f969a53ea3b7635f576b1 Author: David Brownell <dbr...@us...> Date: Mon Dec 14 15:55:51 2009 -0800 jtag: add '-ignore-version' option Add a "-ignore-version" to "jtag newtap" which makes the IDCODE comparison logic optionally ignore version differences. Update the "scan_chain" command to illustrate this by showing the "*" character instead of the (ignored) version nibble. Signed-off-by: David Brownell <dbr...@us...> diff --git a/doc/openocd.texi b/doc/openocd.texi index a83c966..01dfa76 100644 --- a/doc/openocd.texi +++ b/doc/openocd.texi @@ -2763,6 +2763,12 @@ are provided in vendors' chip documentation, usually a technical reference manual. Sometimes you may need to probe the JTAG hardware to find these values. @xref{Autoprobing}. +@item @code{-ignore-version} +@*Specify this to ignore the JTAG version field in the @code{-expected-id} +option. When vendors put out multiple versions of a chip, or use the same +JTAG-level ID for several largely-compatible chips, it may be more practical +to ignore the version field than to update config files to handle all of +the various chip IDs. @item @code{-ircapture} @var{NUMBER} @*The bit pattern loaded by the TAP into the JTAG shift register on entry to the @sc{ircapture} state, such as 0x01. diff --git a/src/jtag/core.c b/src/jtag/core.c index 77cf48a..e311bfb 100644 --- a/src/jtag/core.c +++ b/src/jtag/core.c @@ -958,16 +958,25 @@ static bool jtag_examine_chain_end(uint8_t *idcodes, unsigned count, unsigned ma static bool jtag_examine_chain_match_tap(const struct jtag_tap *tap) { + uint32_t idcode = tap->idcode; + /* ignore expected BYPASS codes; warn otherwise */ - if (0 == tap->expected_ids_cnt && !tap->idcode) + if (0 == tap->expected_ids_cnt && !idcode) return true; + /* optionally ignore the JTAG version field */ + uint32_t mask = tap->ignore_version ? ~(0xff << 24) : ~0; + + idcode &= mask; + /* Loop over the expected identification codes and test for a match */ unsigned ii, limit = tap->expected_ids_cnt; for (ii = 0; ii < limit; ii++) { - if (tap->idcode == tap->expected_ids[ii]) + uint32_t expected = tap->expected_ids[ii] & mask; + + if (idcode == expected) return true; /* treat "-expected-id 0" as a "don't-warn" wildcard */ diff --git a/src/jtag/jtag.h b/src/jtag/jtag.h index fa2fcdc..f79ef93 100644 --- a/src/jtag/jtag.h +++ b/src/jtag/jtag.h @@ -156,6 +156,9 @@ struct jtag_tap { /// Number of expected identification codes uint8_t expected_ids_cnt; + /// Flag saying whether to ignore version field in expected_ids[] + bool ignore_version; + /// current instruction uint8_t* cur_instr; /// Bypass register selected diff --git a/src/jtag/tcl.c b/src/jtag/tcl.c index 9704c30..f4815c8 100644 --- a/src/jtag/tcl.c +++ b/src/jtag/tcl.c @@ -454,6 +454,7 @@ static int jim_newtap_expected_id(Jim_Nvp *n, Jim_GetOptInfo *goi, #define NTAP_OPT_ENABLED 3 #define NTAP_OPT_DISABLED 4 #define NTAP_OPT_EXPECTED_ID 5 +#define NTAP_OPT_VERSION 6 static int jim_newtap_ir_param(Jim_Nvp *n, Jim_GetOptInfo *goi, struct jtag_tap *pTap) @@ -520,6 +521,7 @@ static int jim_newtap_cmd(Jim_GetOptInfo *goi) { .name = "-enable" , .value = NTAP_OPT_ENABLED }, { .name = "-disable" , .value = NTAP_OPT_DISABLED }, { .name = "-expected-id" , .value = NTAP_OPT_EXPECTED_ID }, + { .name = "-ignore-version" , .value = NTAP_OPT_VERSION }, { .name = NULL , .value = -1 }, }; @@ -595,6 +597,9 @@ static int jim_newtap_cmd(Jim_GetOptInfo *goi) return e; } break; + case NTAP_OPT_VERSION: + pTap->ignore_version = true; + break; } /* switch (n->value) */ } /* while (goi->argc) */ @@ -1013,6 +1018,7 @@ COMMAND_HANDLER(handle_interface_command) COMMAND_HANDLER(handle_scan_chain_command) { struct jtag_tap *tap; + char expected_id[12]; tap = jtag_all_taps(); command_print(CMD_CTX, " TapName | Enabled | IdCode Expected IrLen IrCap IrMask Instr "); @@ -1020,25 +1026,39 @@ COMMAND_HANDLER(handle_scan_chain_command) while (tap) { uint32_t expected, expected_mask, cur_instr, ii; + + snprintf(expected_id, sizeof expected_id, "0x%08x", + (unsigned)((tap->expected_ids_cnt > 0) + ? tap->expected_ids[0] + : 0)); + if (tap->ignore_version) + expected_id[2] = '*'; + expected = buf_get_u32(tap->expected, 0, tap->ir_length); expected_mask = buf_get_u32(tap->expected_mask, 0, tap->ir_length); cur_instr = buf_get_u32(tap->cur_instr, 0, tap->ir_length); command_print(CMD_CTX, - "%2d | %-18s | %c | 0x%08x | 0x%08x | 0x%02x | 0x%02x | 0x%02x | 0x%02x", + "%2d | %-18s | %c | 0x%08x | %s | 0x%02x | 0x%02x | 0x%02x | 0x%02x", tap->abs_chain_position, tap->dotted_name, tap->enabled ? 'Y' : 'n', (unsigned int)(tap->idcode), - (unsigned int)(tap->expected_ids_cnt > 0 ? tap->expected_ids[0] : 0), + expected_id, (unsigned int)(tap->ir_length), (unsigned int)(expected), (unsigned int)(expected_mask), (unsigned int)(cur_instr)); for (ii = 1; ii < tap->expected_ids_cnt; ii++) { - command_print(CMD_CTX, " | | | | 0x%08x | | | | ", - (unsigned int)(tap->expected_ids[ii])); + snprintf(expected_id, sizeof expected_id, "0x%08x", + (unsigned) tap->expected_ids[1]); + if (tap->ignore_version) + expected_id[2] = '*'; + + command_print(CMD_CTX, + " | | | | %s | | | | ", + expected_id); } tap = tap->next_tap; ----------------------------------------------------------------------- Summary of changes: doc/openocd.texi | 6 + src/flash/nor/stellaris.c | 318 ++++++++++++++++++++++++--------------------- src/jtag/core.c | 13 ++- src/jtag/jtag.h | 3 + src/jtag/tcl.c | 28 ++++- 5 files changed, 212 insertions(+), 156 deletions(-) hooks/post-receive -- Main OpenOCD repository |