AP ID register 0x24770002
Type is MEM-AP APB
MEM-AP BASE 0x80020003
Valid ROM table present
Component base address 0x80020000
Peripheral ID 0x01000bfa97
Designer is 0x1bf, Broadcom
Part is 0xa97, Unrecognized
Component class is 0x1, ROM table
MEMTYPE system memory not present: dedicated debug bus
ROMTABLE[0x0] = 0x3e0003
Component base address 0x80400000
Peripheral ID 0x04001bb4a4
Designer is 0x4bb, ARM Ltd.
Part is 0x4a4, Cortex-A72 ROM (ROM Table)
Component class is 0x1, ROM table
MEMTYPE system memory not present: dedicated debug bus
[L01] ROMTABLE[0x0] = 0x10003
Component base address 0x80410000
Peripheral ID 0x04001bbd08
Designer is 0x4bb, ARM Ltd.
Part is 0xd08, Cortex-A72 Debug (Debug Unit)
Component class is 0x9, CoreSight component
Type is 0x15, Debug Logic, Processor
[L01] ROMTABLE[0x4] = 0x20003
Component base address 0x80420000
Peripheral ID 0x04004bb906
Designer is 0x4bb, ARM Ltd.
Part is 0x906, CoreSight CTI (Cross Trigger)
Component class is 0x9, CoreSight component
Type is 0x14, Debug Control, Trigger Matrix
[L01] ROMTABLE[0x8] = 0x30003
Component base address 0x80430000
Peripheral ID 0x04001bb9d8
Designer is 0x4bb, ARM Ltd.
Part is 0x9d8, Cortex-A72 PMU (Performance Monitor Unit)
Component class is 0x9, CoreSight component
Type is 0x16, Performance Monitor, Processor
[L01] ROMTABLE[0xc] = 0x40002
Component not present
[L01] ROMTABLE[0x10] = 0x110003
Component base address 0x80510000
Peripheral ID 0x04001bbd08
Designer is 0x4bb, ARM Ltd.
Part is 0xd08, Cortex-A72 Debug (Debug Unit)
Component class is 0x9, CoreSight component
Type is 0x15, Debug Logic, Processor
[L01] ROMTABLE[0x14] = 0x120003
Component base address 0x80520000
Peripheral ID 0x04004bb906
Designer is 0x4bb, ARM Ltd.
Part is 0x906, CoreSight CTI (Cross Trigger)
Component class is 0x9, CoreSight component
Type is 0x14, Debug Control, Trigger Matrix
[L01] ROMTABLE[0x18] = 0x130003
Component base address 0x80530000
Peripheral ID 0x04001bb9d8
Designer is 0x4bb, ARM Ltd.
Part is 0x9d8, Cortex-A72 PMU (Performance Monitor Unit)
Component class is 0x9, CoreSight component
Type is 0x16, Performance Monitor, Processor
[L01] ROMTABLE[0x1c] = 0x140002
Component not present
[L01] ROMTABLE[0x20] = 0x210003
Component base address 0x80610000
Peripheral ID 0x04001bbd08
Designer is 0x4bb, ARM Ltd.
Part is 0xd08, Cortex-A72 Debug (Debug Unit)
Component class is 0x9, CoreSight component
Type is 0x15, Debug Logic, Processor
[L01] ROMTABLE[0x24] = 0x220003
Component base address 0x80620000
Peripheral ID 0x04004bb906
Designer is 0x4bb, ARM Ltd.
Part is 0x906, CoreSight CTI (Cross Trigger)
Component class is 0x9, CoreSight component
Type is 0x14, Debug Control, Trigger Matrix
[L01] ROMTABLE[0x28] = 0x230003
Component base address 0x80630000
Peripheral ID 0x04001bb9d8
Designer is 0x4bb, ARM Ltd.
Part is 0x9d8, Cortex-A72 PMU (Performance Monitor Unit)
Component class is 0x9, CoreSight component
Type is 0x16, Performance Monitor, Processor
[L01] ROMTABLE[0x2c] = 0x240002
Component not present
[L01] ROMTABLE[0x30] = 0x310003
Component base address 0x80710000
Peripheral ID 0x04001bbd08
Designer is 0x4bb, ARM Ltd.
Part is 0xd08, Cortex-A72 Debug (Debug Unit)
Component class is 0x9, CoreSight component
Type is 0x15, Debug Logic, Processor
[L01] ROMTABLE[0x34] = 0x320003
Component base address 0x80720000
Peripheral ID 0x04004bb906
Designer is 0x4bb, ARM Ltd.
Part is 0x906, CoreSight CTI (Cross Trigger)
Component class is 0x9, CoreSight component
Type is 0x14, Debug Control, Trigger Matrix
[L01] ROMTABLE[0x38] = 0x330003
Component base address 0x80730000
Peripheral ID 0x04001bb9d8
Designer is 0x4bb, ARM Ltd.
Part is 0x9d8, Cortex-A72 PMU (Performance Monitor Unit)
Component class is 0x9, CoreSight component
Type is 0x16, Performance Monitor, Processor
[L01] ROMTABLE[0x3c] = 0x340002
Component not present
[L01] ROMTABLE[0x40] = 0x0
[L01] End of ROM table
ROMTABLE[0x4] = 0x0
End of ROM table
Use `gdb-multiarch`
(gdb) set architecture aarch64
(gdb) target remote :3333
Boot Sequence
Firmware Config
I set config.txt parameters as shown in config.txt column. In particular, arm_64bit=1 needs to be set, otherwise EL2 will be in aarch32 mode. OpenOCD sucks at supporting aarch32.
The board loads kernel8.img to 0x80000 and jump there in EL2H, meaning Hypervisor mode with handler stack.
Interesting discoveries:
HCR.RW=0 This is not OK for a 64-bit kernel.
The CPU supports some CRC instructions but not more advanced crypto instructions.