AnsweredAssumed Answered

Core not Responding (LS1020A)

Question asked by Per Franck on May 17, 2016
Latest reply on May 27, 2016 by Per Franck

UPDATE: THIS ISSUE WAS CAUSED BY AN IMPROPERLY WIRED JTAG PORT.

 

Hello All.

 

We have been working with the LS1021A development board on a dev. machine (Ubuntu) using codewarrior with great success. However, we just obtained our own hardware with an LS1020A and a Xilinx FPGA in the same JTAG chain, and we're having some trouble connecting to the processor using codewarrior.

 

Following the documentation, we created a jtag configuration file "in TDO order", which according to the IDcode.tcl script in CodeWarrior Connection Server was:

 

CCS scanboard output

TDO -----

        |

        * Device 0  IDCODE: 13919093  Device: Unknown Device

        * Device 1  IDCODE: 5BA00477  Device: Unknown Device

        * Device 2  IDCODE: 16B0001D  Device: FSL LS1 Device rev 2.x

        |

TDI -----

 

After searching the forums here we learned that the BA00744 is the id code for the DAP, the 3919093 is the id code for the Xilinx part. In other words, the TDO order is Xilinx --> DAP --> LS1020A, our jtag config file therefore was

 

JTAG Config File 1

 

 

Generic 6 1 0x3F

DAP

LS1020A

The Generic 6 1 0x3F was set to identify the Xilinx IR length, bypass instruction length, and bytecode.

 

When attempting to connect to the board using CodeWarrior, we get the following error message in CCS and CW.

 

CodeWarrior console output

ccs_open

  ipaddr = 127.0.0.1

  port = 41475

  timeout = 60

  serverh = 0

  ccs_open; ccs_error = 0

ccs_get_connection_count

  serverh = 0

  count = 1

  ccs_get_connection_count; ccs_error = 0

ccs_available_connections

  serverh = 0

  count = 1

  ccs_available_connections; ccs_error = 0

ccs_get_connection_count

  serverh = 0

  count = 1

  ccs_get_connection_count; ccs_error = 0

ccs_available_connections

  serverh = 0

  count = 1

  ccs_available_connections; ccs_error = 0

ccs_available_connections

  serverh = 0

  count = 1

  ccs_available_connections; ccs_error = 0

ccs_delete_cc

  serverh = 0

  count = 0

  ccs_delete_cc; ccs_error = 0

ccs_config_cc

  serverh = 0

  config_string = cwtap:0

  ccs_config_cc; ccs_error = 0

ccs_available_connections

  serverh = 0

  count = 1

  ccs_available_connections; ccs_error = 0

ccs_cc_version

  serverh = 0

  cc = 0

  version.major = 0

  version.minor = 0

  ccs_cc_version; ccs_error = 0

ccs_set_timeout

  serverh = 0

  timeout = 60

  ccs_set_timeout; ccs_error = 0

ccs_get_config_chain

  serverh = 0

  device_list: (size = 0)

  ccs_get_config_chain; ccs_error = 0

ccs_config_server

  serverh = 0

  cc = 0

  server_config = 0

  value = 10000

  ccs_config_server; ccs_error = 0

ccs_config_chain

  serverh = 0

  cc = 0

  device_list: (size = 3)

  device[0]:: core_type=Generic Device(0); device_descr=[ir_length:6;dr_bypass_length:1;bypass_instruction:0x3F,0x00,0x00,0x00]

  device[1]:: core_type=DAP(232)

  device[2]:: core_type=LS1020A(273)

  ccs_config_chain; ccs_error = 39

  Error message: LS1020A: Invalid parameter

ccs_get_subcore_error

  serverh = 0

  cc = 0

  error = 6

  chain_pos = 2

  ccs_get_subcore_error; ccs_error = 0; duration=10 ms

ccs_close

  serverh = 0

  ccs_close; ccs_error = 0

 

We have searched high and low what this "Invalid Parameter" might mean, we tried adding RCW parameters to the LS1020A line, we tried more newlines in the file, but nothing seems to work.

 

CCS Output

CCSAPI connection #1 accepted from localhost at Mon May 16 10:44:23 2016

check_min_version(serverh=0,*version)

  api version: 00000004 00000006

get_connection_count(serverh=0,cc_index=0,*count)

  count:1

available_connections(serverh=0,*count,*cc)

  connections: {0,73,0xa9fe965f}

available_connections(serverh=0,*count,*cc)

  connections: {0,73,0xa9fe965f}

available_connections(serverh=0,*count,*cc)

  connections: {0,73,0xa9fe965f}

available_connections(serverh=0,*count,*cc)

  connections: {0,73,0xa9fe965f}

available_connections(serverh=0,*count,*cc)

  connections: {0,73,0xa9fe965f}

available_connections(serverh=0,*count,*cc)

  connections: {0,73,0xa9fe965f}

cc_version(serverh=0,cc_index=0,index=0,*version)

get_config_chain(serverh=0,cc=0)

config_server(config_reg=0,config_data=0x00002710)

config_chain(serverh=0,cc=0,count=3,*devlist,*generic)

  devlist: unknown(0),dap,ls1020a

  ERROR(39): Subcore error encountered during multicore operation

parse_error_ext(coreh.{serverh=0,cc_index=0,chain_pos=0}, 39)

  error: LS1020A: Invalid parameter

get_subcore_error(serverh=0,cc=0,*error,*chain_pos)

  error: Invalid parameter

  chain_pos: 2

CCSAPI connection #1 from localhost closed at Mon May 16 10:44:25 2016

(bin) 56 %

 

We then ran scanboard on our development board and got the following output...

CCS scanboard output on DEV board.

TDO -----

        |

        * Device 0  IDCODE: 5BA00477  Device: Unknown Device

        * Device 1  IDCODE: 16B0001D  Device: FSL LS1 Device rev 2.x

        |

TDI -----

We noticed that here, we only see the DAP and the LS1020A, but they list in TDO order: DAP --> LS1020A, which is contrary to the example JTAG configuration files we were given with the IDE.

 

Dev Board JTAG Config File

LS1020A

DAP

SAP2

In addition, the Dev board JTAG Config file lists "SAP2" Which we have not been able to figure out what it is. Do we need this in custom hardware, or is it only a part of the dev board?

 

We modified our JTAG config file to this

JTAG Config File 2

LS1020A

DAP

Generic 6 1 0x3F

 

Now, we got a new error in CodeWarrior

CodeWarrior output

ccs_open

  ipaddr = 127.0.0.1

  port = 41475

  timeout = 60

  serverh = 0

  ccs_open; ccs_error = 0

ccs_get_connection_count

  serverh = 0

  count = 1

  ccs_get_connection_count; ccs_error = 0

ccs_available_connections

  serverh = 0

  count = 1

  ccs_available_connections; ccs_error = 0

ccs_available_connections

  serverh = 0

  count = 1

  ccs_available_connections; ccs_error = 0

ccs_cc_version

  serverh = 0

  cc = 0

  version.major = 0

  version.minor = 0

  ccs_cc_version; ccs_error = 0

ccs_set_timeout

  serverh = 0

  timeout = 60

  ccs_set_timeout; ccs_error = 0

ccs_get_config_chain

  serverh = 0

  device_list: (size = 0)

  ccs_get_config_chain; ccs_error = 0

ccs_config_server

  serverh = 0

  cc = 0

  server_config = 0

  value = 10000

  ccs_config_server; ccs_error = 0

ccs_config_chain

  serverh = 0

  cc = 0

  device_list: (size = 3)

  device[0]:: core_type=LS1020A(273)

  device[1]:: core_type=DAP(232)

  device[2]:: core_type=Generic Device(0); device_descr=[ir_length:6;dr_bypass_length:1;bypass_instruction:0x3F,0x00,0x00,0x00]

  ccs_config_chain; ccs_error = 39

  Error message: LS1020A: Core not responding

ccs_get_subcore_error

  serverh = 0

  cc = 0

  error = 5

  chain_pos = 0

  ccs_get_subcore_error; ccs_error = 0; duration=10 ms

ccs_close

  serverh = 0

  ccs_close; ccs_error = 0

We now get "Core Not Responding" as the error message. At this point we started looking at the hardware to ensure that all the reset pins are set/cleared as they should be during the start-up sequence, all the voltages that are required are present, and all clocks as well. From our standpoint, we are following the start-up sequence in hardware to the letter.

 

CCS output

CCSAPI connection #1 accepted from localhost at Mon May 16 10:39:55 2016

check_min_version(serverh=0,*version)

  api version: 00000004 00000006

get_connection_count(serverh=0,cc_index=0,*count)

  count:1

available_connections(serverh=0,*count,*cc)

  connections: {0,73,0xa9fe965f}

available_connections(serverh=0,*count,*cc)

  connections: {0,73,0xa9fe965f}

available_connections(serverh=0,*count,*cc)

  connections: {0,73,0xa9fe965f}

available_connections(serverh=0,*count,*cc)

  connections: {0,73,0xa9fe965f}

available_connections(serverh=0,*count,*cc)

  connections: {0,73,0xa9fe965f}

available_connections(serverh=0,*count,*cc)

  connections: {0,73,0xa9fe965f}

cc_version(serverh=0,cc_index=0,index=0,*version)

get_config_chain(serverh=0,cc=0)

config_server(config_reg=0,config_data=0x00002710)

config_chain(serverh=0,cc=0,count=3,*devlist,*generic)

  devlist: ls1020a,dap,unknown(0)

  ERROR(39): Subcore error encountered during multicore operation

parse_error_ext(coreh.{serverh=0,cc_index=0,chain_pos=0}, 39)

  error: LS1020A: Core not responding

get_subcore_error(serverh=0,cc=0,*error,*chain_pos)

  error: Core not responding

  chain_pos: 0

CCSAPI connection #1 from localhost closed at Mon May 16 10:39:58 2016

 

The last thing we attempted was to add the SAP2 to the config file. Since the examples given with the development board all used this entry. We tried this file reversed (TDO order) as well, but got the "Invalid parameter" error again.

 

JTAG config file 3

LS1020A

DAP

SAP2

Generic 6 1 0x3F

 

Now, the error message is again different.

CodeWarrior console output

ccs_open

  ipaddr = 127.0.0.1

  port = 41475

  timeout = 60

  serverh = 0

  ccs_open; ccs_error = 0

ccs_get_connection_count

  serverh = 0

  count = 1

  ccs_get_connection_count; ccs_error = 0

ccs_available_connections

  serverh = 0

  count = 0

  ccs_available_connections; ccs_error = 0

ccs_available_connections

  serverh = 0

  count = 0

  ccs_available_connections; ccs_error = 0

ccs_config_cc

  serverh = 0

  config_string = cwtap:0

  ccs_config_cc; ccs_error = 0

ccs_available_connections

  serverh = 0

  count = 1

  ccs_available_connections; ccs_error = 0

ccs_cc_version

  serverh = 0

  cc = 0

  version.major = 0

  version.minor = 0

  ccs_cc_version; ccs_error = 0

ccs_set_timeout

  serverh = 0

  timeout = 60

  ccs_set_timeout; ccs_error = 0

ccs_get_config_chain

  serverh = 0

  device_list: (size = 0)

  ccs_get_config_chain; ccs_error = 0

ccs_config_server

  serverh = 0

  cc = 0

  server_config = 0

  value = 12500

  ccs_config_server; ccs_error = 0

ccs_config_chain

  serverh = 0

  cc = 0

  device_list: (size = 4)

  device[0]:: core_type=LS1020A(273)

  device[1]:: core_type=DAP(232)

  device[2]:: core_type=SAP2(272)

  device[3]:: core_type=Generic Device(0); device_descr=[ir_length:6;dr_bypass_length:1;bypass_instruction:0x3F,0x00,0x00,0x00]

  ccs_config_chain; ccs_error = 0

ccs_get_config_chain

  serverh = 0

  device_list: (size = 4)

  ccs_get_config_chain; ccs_error = 0

ccs_get_config_chain

  serverh = 0

  device_list: (size = 4)

  device[0]:: core_type=LS1020A(273)

  device[1]:: core_type=DAP(232)

  device[2]:: core_type=SAP2(272)

  device[3]:: core_type=Generic Device(0)

  ccs_get_config_chain; ccs_error = 0

ccs_available_connections

  serverh = 0

  count = 1

  ccs_available_connections; ccs_error = 0

ccs_delete_cc

  serverh = 0

  count = 0

  ccs_delete_cc; ccs_error = 0

ccs_close

  serverh = 0

  ccs_close; ccs_error = 0

 

The error doesn't appear in the log, instead a popup says "CCSProtocolPlugin::Can't connect to CCS".

 

CCS output

CCSAPI connection #1 accepted from localhost at Mon May 16 15:19:54 2016

check_min_version(serverh=0,*version)

  api version: 00000004 00000006

get_connection_count(serverh=0,cc_index=0,*count)

  count:1

available_connections(serverh=0,*count,*cc)

  connections:

available_connections(serverh=0,*count,*cc)

  connections:

setup_cc(serverh=0,config_string= cwtap:0 )

available_connections(serverh=0,*count,*cc)

  connections: {0,73,0xa9fe965f}

available_connections(serverh=0,*count,*cc)

  connections: {0,73,0xa9fe965f}

available_connections(serverh=0,*count,*cc)

  connections: {0,73,0xa9fe965f}

cc_version(serverh=0,cc_index=0,index=0,*version)

get_config_chain(serverh=0,cc=0)

config_server(config_reg=0,config_data=0x000030D4)

config_chain(serverh=0,cc=0,count=4,*devlist,*generic)

  devlist: ls1020a,dap,sap2,unknown(0)

get_config_chain(serverh=0,cc=0)

available_connections(serverh=0,*count,*cc)

  connections: {0,73,0xa9fe965f}

delete_cc(serverh=0,cc=0)

CCSAPI connection #1 from localhost closed at Mon May 16 15:20:07 2016

 

There is no explanation as to why the "connection failed".

 

How are we supposed to fashion our jtag config files? has anyone else used a xilinx part (or similar) together with a LS1020A (or similar nxp device)? How do we debug this?

 

Thanks for any help.

 

Per Franck

Outcomes