POR boot

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

POR boot

1,942 Views
arichadav
Contributor I

Hi,

I have an interesting problem related to power up boot of a self made P2041 board.

I configured the chip to hard coded RCW that supports 16b NOR Flash (cfg_rcw_src[0:4] = 1_0010).

however, once POR signal is negated no FLASH chip select signal is asserted and the P2041 remains hang.

one can access its registers via JTAG debugger if needed.

any ideas why there's no chip select?

thanks.

Labels (1)
0 Kudos
2 Replies

1,221 Views
lunminliang
NXP Employee
NXP Employee

Please check the status of LA[18:22] during POR. These pins must NOT be pulled down during power-on reset, otherwise may cause processor halt and LCS not toggling.

0 Kudos

1,221 Views
wxwangyan
Contributor I

I'm debugging  a customer P2041 board.

There're issues in P2041 boot up stage,  following test cases:

 

Test case1: cfg_rcw_src[0:4]配置字 01100 (Nor flash 8bits width), elbc bus output LCLK0 signal at 6.25MHz, elbc cs0 will output four valid chip select signals ( but p2041rdb output eight chip select signals  under this case)

In test case1 ,because elbc bus output LCLK0 signal at 6.25MHz,  Does it mean the clock tree for elbc ok? 

Test case2: cfg_rcw_src[0:4]配置字 01101 (Nor flash 16bits width), elbc bus output LCLK0 signal at 6.25MHz, elbc cs0 will output two valid chip select signals ( but p2041rdb output four chip select signals  under this case)

 

Test case3: cfg_rcw_src[0:4] 10000 (hardcode rcw),RESET_REQ_B is always assert high level '1', it seems the cpu is always at reset status,  HRESET is always at low level "0", Asleep is at high "1".

  

Test case4: cfg_rcw_src[0:4]配置字 00110(SDHC), dessert PORESET_B,  SDHC_CLK and SDHC_CMD will output some signal

 

Test case5: cfg_rcw_src[0:4] 00000 (I2C normal), program I2C eeprom with rcw word , after cpu loaded rcw word from eeprom ,  the HRESET is also at low level "0", Asleep change to  high "1" at the end of load I2C eeprom. But MCKE, MCK is always at low "0". 

The behaviour corresponds to following   Some of the I/O drivers are enabled; specifically, those pins associated with any interface potentially usable as the source of RCW data. All of the DDR I/Os become
enabled at this point (though MCKE, MCK, MODT are enabled from the beginning).
The ASLEEP signal is also enabled at this point.

 

P2040 QorIQ Integrated Multicore Communication Processor Family Reference Manual,   4.6.1 Power-on reset sequence     stage 8.

I use the codewarrior tap to debug the on board CPU,  create the p2041 ram attached project to connect to the cpu, get the following message: the CPU type is P2041NXN7NNC

Starting Power at Probe test ...
Test result: PASSED

Starting IR Scan test ...
Test result: PASSED

Starting Bypass Scan test ...
Test result: PASSED

Starting Arbitrary TAP State Move test ...
Test result: PASSED

Detected JTAG IDCODEs: OK
Device 0 IDCODE: 0x018E001D

ccs_jtag_unlock
serverh = 0
cc = 0
ccs_jtag_unlock; ccs_error = 0
ccs_config_chain
serverh = 0
cc = 0
device_list: (size = 1)
device[0]:: core_type=p2040(173)
ccs_config_chain; ccs_error = 0
ccs_get_config_chain
serverh = 0
device_list: (size = 5)
ccs_get_config_chain; ccs_error = 0
ccs_get_config_chain
serverh = 0
device_list: (size = 5)
device[0]:: core_type=p2040(173)
device[1]:: core_type=e500mc core(119)
device[2]:: core_type=e500mc core(119)
device[3]:: core_type=e500mc core(119)
device[4]:: core_type=e500mc core(119)
ccs_get_config_chain; ccs_error = 0
ccs_send_message
coreh = [serverh:0;cc_index:0;chain_pos:1]
message = 3
ccs_send_message; ccs_error = 0
ccs_read_register
coreh = [serverh:0;cc_index:0;chain_pos:1]
index = 30000
count = 1
size = 8
value: (size = 8)
00000000 FE000000
ccs_read_register; ccs_error = 0; duration=3 ms
ccs_read_memory
coreh = [serverh:0;cc_index:0;chain_pos:0]
addr = [space:0x92;size:4;address_hi:0x00000000;address_lo:0xfe0e2094]
data: (size = 4)
00000000
ccs_read_memory; ccs_error = 0; duration=3 ms
ccs_write_memory
coreh = [serverh:0;cc_index:0;chain_pos:0]
addr = [space:0x92;size:4;address_hi:0x00000000;address_lo:0xfe0e2094]
data: (size = 4)
0000000F
ccs_write_memory; ccs_error = 0; duration=2 ms
ccs_read_register
coreh = [serverh:0;cc_index:0;chain_pos:1]
index = 200005
count = 1
size = 4
value: (size = 4)
80230032
ccs_read_register; ccs_error = 0; duration=5 ms

Executing Initialization File: D:\Freescale\workspace\CP200_Boot-core00\CFG\P2041RDB_init_core.tcl
radix x
cmdwin::eclipse::config hexprefix 0x
cmdwin::eclipse::config MemIdentifier v
cmdwin::eclipse::config MemWidth 32
cmdwin::eclipse::config MemAccess 32
cmdwin::eclipse::config MemSwap off
cmdwin::reg regPPCTLB1/L2MMU_CAM1 = 0x7000000A1C080000FE000000FE000001
ccs_stop_core
coreh = [serverh:0;cc_index:0;chain_pos:1]
ccs_stop_core; ccs_error = 5
Error message: Core not responding
failed on register write: L2MMU_CAM1
cmdwin::reg regPPCTLB1/L2MMU_CAM2 = 0x9000000A1C080000E0000000E0000001
ccs_stop_core
coreh = [serverh:0;cc_index:0;chain_pos:1]
ccs_stop_core; ccs_error = 5
Error message: Core not responding
failed on register write: L2MMU_CAM2
cmdwin::reg regPPCTLB1/L2MMU_CAM3 = 0xA000000A1C0800008000000080000001
ccs_stop_core
coreh = [serverh:0;cc_index:0;chain_pos:1]
ccs_stop_core; ccs_error = 5
Error message: Core not responding
failed on register write: L2MMU_CAM3
cmdwin::reg regPPCTLB1/L2MMU_CAM4 = 0x9000000A1C080000C0000000C0000001
ccs_stop_core
coreh = [serverh:0;cc_index:0;chain_pos:1]
ccs_stop_core; ccs_error = 5
Error message: Core not responding
failed on register write: L2MMU_CAM4
cmdwin::reg regPPCTLB1/L2MMU_CAM5 = 0x9000000A1C080000D0000000D0000001
ccs_stop_core
coreh = [serverh:0;cc_index:0;chain_pos:1]
ccs_stop_core; ccs_error = 5
Error message: Core not responding
failed on register write: L2MMU_CAM5
cmdwin::reg regPPCTLB1/L2MMU_CAM6 = 0x4000000A1C080000F8000000F8000001
ccs_stop_core
coreh = [serverh:0;cc_index:0;chain_pos:1]
ccs_stop_core; ccs_error = 5
Error message: Core not responding
failed on register write: L2MMU_CAM6
cmdwin::reg regPPCTLB1/L2MMU_CAM7 = 0xA00000081C0800000000000000000001
ccs_stop_core
coreh = [serverh:0;cc_index:0;chain_pos:1]
ccs_stop_core; ccs_error = 5
Error message: Core not responding
failed on register write: L2MMU_CAM7
cmdwin::reg regPPCTLB1/L2MMU_CAM8 = 0xA00000081C0800004000000040000001
ccs_stop_core
coreh = [serverh:0;cc_index:0;chain_pos:1]
ccs_stop_core; ccs_error = 5
Error message: Core not responding
failed on register write: L2MMU_CAM8
cmdwin::reg regPPCTLB1/L2MMU_CAM9 = 0x500000081C080000F4000000F4000001
ccs_stop_core
coreh = [serverh:0;cc_index:0;chain_pos:1]
ccs_stop_core; ccs_error = 5
Error message: Core not responding
failed on register write: L2MMU_CAM9
cmdwin::reg regPPCTLB1/L2MMU_CAM10 = 0x5000000A1C080000F4100000F4100001
ccs_stop_core
coreh = [serverh:0;cc_index:0;chain_pos:1]
ccs_stop_core; ccs_error = 5
Error message: Core not responding
failed on register write: L2MMU_CAM10
cmdwin::reg regPPCTLB1/L2MMU_CAM11 = 0x500000081C080000F4200000F4200001
ccs_stop_core
coreh = [serverh:0;cc_index:0;chain_pos:1]
ccs_stop_core; ccs_error = 5
Error message: Core not responding
failed on register write: L2MMU_CAM11
cmdwin::reg regPPCTLB1/L2MMU_CAM12 = 0x5000000A1C080000F4300000F4300001
ccs_stop_core
coreh = [serverh:0;cc_index:0;chain_pos:1]
ccs_stop_core; ccs_error = 5
Error message: Core not responding
failed on register write: L2MMU_CAM12
cmdwin::reg regPPCTLB1/L2MMU_CAM13 = 0x6000000A1C080000F0000000F0000001
ccs_stop_core
coreh = [serverh:0;cc_index:0;chain_pos:1]
ccs_stop_core; ccs_error = 5
Error message: Core not responding
failed on register write: L2MMU_CAM13
cmdwin::reg regPPCTLB1/L2MMU_CAM14 = 0x1000000A1C080000FFDF0000FFDF0001
ccs_stop_core
coreh = [serverh:0;cc_index:0;chain_pos:1]
ccs_stop_core; ccs_error = 5
Error message: Core not responding
failed on register write: L2MMU_CAM14
cmdwin::reg regPPCTLB1/L2MMU_CAM16 = 0x5000000A1C080000F8200000F8200001
ccs_stop_core
coreh = [serverh:0;cc_index:0;chain_pos:1]
ccs_stop_core; ccs_error = 5
Error message: Core not responding
failed on register write: L2MMU_CAM16
cmdwin::reg e500mc Special Purpose Registers/PIR %d -np
ccs_stop_core
coreh = [serverh:0;cc_index:0;chain_pos:1]
ccs_stop_core; ccs_error = 5
Error message: Core not responding
ccs_read_register
coreh = [serverh:0;cc_index:0;chain_pos:1]
index = 286
count = 1
size = 4
value: (size = 4)
BA004E00
ccs_read_register; ccs_error = 9; duration=1 ms
Error message: Core not in debug
cmdwin::reg e500mc Special Purpose Registers/IVPR = 0x-733990720000000
ccs_stop_core
coreh = [serverh:0;cc_index:0;chain_pos:1]
ccs_stop_core; ccs_error = 5
Error message: Core not responding
failed on register write: IVPR
cmdwin::reg e500mc Special Purpose Registers/IVOR0 = 0x00000100
ccs_stop_core
coreh = [serverh:0;cc_index:0;chain_pos:1]
ccs_stop_core; ccs_error = 5
Error message: Core not responding
ccs_write_register
coreh = [serverh:0;cc_index:0;chain_pos:1]
index = 400
count = 1
size = 4
value: (size = 4)
00000100
ccs_write_register; ccs_error = 9; duration=1 ms
Error message: Core not in debug
failed on register write: IVOR0
cmdwin::reg e500mc Special Purpose Registers/IVOR1 = 0x00000200
ccs_stop_core
coreh = [serverh:0;cc_index:0;chain_pos:1]
ccs_stop_core; ccs_error = 5
Error message: Core not responding
ccs_write_register
coreh = [serverh:0;cc_index:0;chain_pos:1]
index = 401
count = 1
size = 4
value: (size = 4)
00000200
ccs_write_register; ccs_error = 9; duration=1 ms
Error message: Core not in debug
failed on register write: IVOR1
cmdwin::reg e500mc Special Purpose Registers/IVOR2 = 0x00000300
ccs_stop_core
coreh = [serverh:0;cc_index:0;chain_pos:1]
ccs_stop_core; ccs_error = 5
Error message: Core not responding
ccs_write_register
coreh = [serverh:0;cc_index:0;chain_pos:1]
index = 402
count = 1
size = 4
value: (size = 4)
00000300
ccs_write_register; ccs_error = 9; duration=1 ms
Error message: Core not in debug
failed on register write: IVOR2
cmdwin::reg e500mc Special Purpose Registers/IVOR3 = 0x00000400
ccs_stop_core
coreh = [serverh:0;cc_index:0;chain_pos:1]
ccs_stop_core; ccs_error = 5
Error message: Core not responding
ccs_write_register
coreh = [serverh:0;cc_index:0;chain_pos:1]
index = 403
count = 1
size = 4
value: (size = 4)
00000400
ccs_write_register; ccs_error = 9; duration=1 ms
Error message: Core not in debug
failed on register write: IVOR3
cmdwin::reg e500mc Special Purpose Registers/IVOR4 = 0x00000500
ccs_stop_core
coreh = [serverh:0;cc_index:0;chain_pos:1]
ccs_stop_core; ccs_error = 5
Error message: Core not responding
ccs_write_register
coreh = [serverh:0;cc_index:0;chain_pos:1]
index = 404
count = 1
size = 4
value: (size = 4)
00000500
ccs_write_register; ccs_error = 9; duration=2 ms
Error message: Core not in debug
failed on register write: IVOR4
cmdwin::reg e500mc Special Purpose Registers/IVOR5 = 0x00000600
ccs_stop_core
coreh = [serverh:0;cc_index:0;chain_pos:1]
ccs_stop_core; ccs_error = 5
Error message: Core not responding
ccs_write_register
coreh = [serverh:0;cc_index:0;chain_pos:1]
index = 405
count = 1
size = 4
value: (size = 4)
00000600
ccs_write_register; ccs_error = 9; duration=1 ms
Error message: Core not in debug
failed on register write: IVOR5
cmdwin::reg e500mc Special Purpose Registers/IVOR6 = 0x00000700
ccs_stop_core
coreh = [serverh:0;cc_index:0;chain_pos:1]
ccs_stop_core; ccs_error = 5
Error message: Core not responding
ccs_write_register
coreh = [serverh:0;cc_index:0;chain_pos:1]
index = 406
count = 1
size = 4
value: (size = 4)
00000700
ccs_write_register; ccs_error = 9; duration=2 ms
Error message: Core not in debug
failed on register write: IVOR6
cmdwin::reg e500mc Special Purpose Registers/IVOR7 = 0x00000800
ccs_stop_core
coreh = [serverh:0;cc_index:0;chain_pos:1]
ccs_stop_core; ccs_error = 5
Error message: Core not responding
ccs_write_register
coreh = [serverh:0;cc_index:0;chain_pos:1]
index = 407
count = 1
size = 4
value: (size = 4)
00000800
ccs_write_register; ccs_error = 9; duration=1 ms
Error message: Core not in debug
failed on register write: IVOR7
cmdwin::reg e500mc Special Purpose Registers/IVOR8 = 0x00000c00
ccs_stop_core
coreh = [serverh:0;cc_index:0;chain_pos:1]
ccs_stop_core; ccs_error = 5
Error message: Core not responding
ccs_write_register
coreh = [serverh:0;cc_index:0;chain_pos:1]
index = 408
count = 1
size = 4
value: (size = 4)
00000C00
ccs_write_register; ccs_error = 9; duration=1 ms
Error message: Core not in debug
failed on register write: IVOR8
cmdwin::reg e500mc Special Purpose Registers/IVOR10 = 0x00000900
ccs_stop_core
coreh = [serverh:0;cc_index:0;chain_pos:1]
ccs_stop_core; ccs_error = 5
Error message: Core not responding
ccs_write_register
coreh = [serverh:0;cc_index:0;chain_pos:1]
index = 410
count = 1
size = 4
value: (size = 4)
00000900
ccs_write_register; ccs_error = 9; duration=1 ms
Error message: Core not in debug
failed on register write: IVOR10
cmdwin::reg e500mc Special Purpose Registers/IVOR11 = 0x00000f00
ccs_stop_core
coreh = [serverh:0;cc_index:0;chain_pos:1]
ccs_stop_core; ccs_error = 5
Error message: Core not responding
ccs_write_register
coreh = [serverh:0;cc_index:0;chain_pos:1]
index = 411
count = 1
size = 4
value: (size = 4)
00000F00
ccs_write_register; ccs_error = 9; duration=1 ms
Error message: Core not in debug
failed on register write: IVOR11
cmdwin::reg e500mc Special Purpose Registers/IVOR12 = 0x00000b00
ccs_stop_core
coreh = [serverh:0;cc_index:0;chain_pos:1]
ccs_stop_core; ccs_error = 5
Error message: Core not responding
ccs_write_register
coreh = [serverh:0;cc_index:0;chain_pos:1]
index = 412
count = 1
size = 4
value: (size = 4)
00000B00
ccs_write_register; ccs_error = 9; duration=1 ms
Error message: Core not in debug
failed on register write: IVOR12
cmdwin::reg e500mc Special Purpose Registers/IVOR13 = 0x00001100
ccs_stop_core
coreh = [serverh:0;cc_index:0;chain_pos:1]
ccs_stop_core; ccs_error = 5
Error message: Core not responding
ccs_write_register
coreh = [serverh:0;cc_index:0;chain_pos:1]
index = 413
count = 1
size = 4
value: (size = 4)
00001100
ccs_write_register; ccs_error = 9; duration=2 ms
Error message: Core not in debug
failed on register write: IVOR13
cmdwin::reg e500mc Special Purpose Registers/IVOR14 = 0x00001000
ccs_stop_core
coreh = [serverh:0;cc_index:0;chain_pos:1]
ccs_stop_core; ccs_error = 5
Error message: Core not responding
ccs_write_register
coreh = [serverh:0;cc_index:0;chain_pos:1]
index = 414
count = 1
size = 4
value: (size = 4)
00001000
ccs_write_register; ccs_error = 9; duration=1 ms
Error message: Core not in debug
failed on register write: IVOR14
cmdwin::reg e500mc Special Purpose Registers/IVOR15 = 0x00001500
ccs_stop_core
coreh = [serverh:0;cc_index:0;chain_pos:1]
ccs_stop_core; ccs_error = 5
Error message: Core not responding
ccs_write_register
coreh = [serverh:0;cc_index:0;chain_pos:1]
index = 415
count = 1
size = 4
value: (size = 4)
00001500
ccs_write_register; ccs_error = 9; duration=1 ms
Error message: Core not in debug
failed on register write: IVOR15
cmdwin::reg e500mc Special Purpose Registers/IVOR35 = 0x00001900
ccs_stop_core
coreh = [serverh:0;cc_index:0;chain_pos:1]
ccs_stop_core; ccs_error = 5
Error message: Core not responding
ccs_write_register
coreh = [serverh:0;cc_index:0;chain_pos:1]
index = 531
count = 1
size = 4
value: (size = 4)
00001900
ccs_write_register; ccs_error = 9; duration=2 ms
Error message: Core not in debug
failed on register write: IVOR35
cmdwin::reg e500mc Special Purpose Registers/BUCSR = 0x01400201
ccs_stop_core
coreh = [serverh:0;cc_index:0;chain_pos:1]
ccs_stop_core; ccs_error = 5
Error message: Core not responding
ccs_write_register
coreh = [serverh:0;cc_index:0;chain_pos:1]
index = 1013
count = 1
size = 4
value: (size = 4)
01400201
ccs_write_register; ccs_error = 9; duration=1 ms
Error message: Core not in debug
failed on register write: BUCSR
cmdwin::reg e500mc Special Purpose Registers/HID0 = 0x00000080
ccs_stop_core
coreh = [serverh:0;cc_index:0;chain_pos:1]
ccs_stop_core; ccs_error = 5
Error message: Core not responding
ccs_write_register
coreh = [serverh:0;cc_index:0;chain_pos:1]
index = 1008
count = 1
size = 4
value: (size = 4)
00000080
ccs_write_register; ccs_error = 9; duration=1 ms
Error message: Core not in debug
failed on register write: HID0
cmdwin::reg e500mc Special Purpose Registers/MSR = 0x00002000
ccs_stop_core
coreh = [serverh:0;cc_index:0;chain_pos:1]
ccs_stop_core; ccs_error = 5
Error message: Core not responding
ccs_write_register
coreh = [serverh:0;cc_index:0;chain_pos:1]
index = 2034
count = 1
size = 4
value: (size = 4)
00002000
ccs_write_register; ccs_error = 9; duration=2 ms
Error message: Core not in debug
failed on register write: MSR
ccs_stop_core
coreh = [serverh:0;cc_index:0;chain_pos:1]
ccs_stop_core; ccs_error = 5
Error message: Core not responding

Can you give me any suggestion at these conditions?

0 Kudos