I'm trying to add support for Kinetis KS22 (currently comes back as unsupported SSID 0x22000418).

The DIEID (0b01000) doesn't match what the reference manual says it should be (0b10111) and I've asked a question on NXP about that.

I've added some code to kinetis.c (see patch below) to recognise a new DIEID (0x400) to treat it the same as a K22 and can connect.

As suggested by Tomas on IRC last night, I can read SIM_SDID which confirms:
Open On-Chip Debugger
> mdw 0x40048024
0x40048024: 22000418

I can't flash anything, I guess because I've got no banks set up.
> flash banks
#0 : MKS22FN256VLL12.pflash (kinetis) at 0x00000000, size 0x00000000, buswidth 0, chipwidth 0
>

Any advice on what else I need to do to kinetis.c would be appreciated.

Regards
Chris

diff --git a/src/flash/nor/kinetis.c b/src/flash/nor/kinetis.c
index 86fad721..293d37e1 100644
--- a/src/flash/nor/kinetis.c
+++ b/src/flash/nor/kinetis.c
@@ -164,6 +164,7 @@
 #define KINETIS_SDID_DIEID_K22FN256    0x00000A80
 #define KINETIS_SDID_DIEID_K22FN512    0x00000E80
 #define KINETIS_SDID_DIEID_K24FN256    0x00000700
+#define KINETIS_SDID_DIEID_KS22FN256 0x00000400

 #define KINETIS_SDID_DIEID_K24FN1M     0x00000300 /* Detect Errata 7534 */

@@ -2154,7 +2155,8 @@ static int kinetis_probe_chip(struct kinetis_chip *k_chip)
                                }
                                if ((k_chip->sim_sdid & (KINETIS_SDID_DIEID_MASK)) == KINETIS_SDID_DIEID_K22FN128                                         || (k_chip->sim_sdid & (KINETIS_SDID_DIEID_MASK)) == KINETIS_SDID_DIEID_K22FN256 -                                       || (k_chip->sim_sdid & (KINETIS_SDID_DIEID_MASK)) == KINETIS_SDID_DIEID_K22FN512) { +                                       || (k_chip->sim_sdid & (KINETIS_SDID_DIEID_MASK)) == KINETIS_SDID_DIEID_K22FN512 +                    || (k_chip->sim_sdid & (KINETIS_SDID_DIEID_MASK)) == KINETIS_SDID_DIEID_KS22FN256) {                                         /* K22 with new-style SDID - smaller pflash with FTFA, 2kB sectors */
k_chip->pflash_sector_size = 2<<10;
                                        /* autodetect 1 or 2 blocks */



_______________________________________________
OpenOCD-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/openocd-devel

Reply via email to