BL31 to Kernel/OS

Showing results for 
Search instead for 
Did you mean: 

BL31 to Kernel/OS

Contributor III


I can boot my i.MX8QM MEK using bl31.bin (Arm Trusted Firmware-A reference) and would like to pass control to an OS or any Linux kernel image. 

I see the following debug from the bl31.bin debug console on booting:

NOTICE: Memreg 2 0x34000000 -- 0x37ffffff
NOTICE: Memreg 3 0x38000000 -- 0x3bffffff
NOTICE: Memreg 4 0x60000000 -- 0x6fffffff
NOTICE: Memreg 5 0x70000000 -- 0x7fffffff
NOTICE: Memreg 6 0x80000000 -- 0xffffffff
NOTICE: Memreg 7 0x400000000 -- 0x43fffffff
NOTICE: Memreg 8 0x880000000 -- 0x97fffffff
NOTICE: Non-secure Partitioning Succeeded
NOTICE: BL31: v2.3():
NOTICE: BL31: Built : 15:21:46, Aug 24 2020
INFO: GICv3 with legacy support detected.
INFO: ARM GICv3 driver initialized in EL3
INFO: BL31: Initializing runtime services
INFO: BL31: cortex_a53: CPU workaround for 855873 was applied
INFO: BL31: Preparing for EL3 exit to normal world
INFO: Entry point address = 0x80020000
INFO: SPSR = 0x3c9

The bl31.bin binary was assigned 0x80000000 on A53 core in the imx-mkimge makefile:

flash_b0_a53_bl31_1: $(MKIMG) mx8qm-ahab-container.img scfw_tcm.bin bl31.bin
16 ./$(MKIMG) -soc QM -rev B0 -append mx8qm-ahab-container.img -c -scfw scfw_tcm.bin -ap bl31.bin a53 0x80000000 -out flash.bin


What is the "Entry point address" 0x80020000 logged here? 

Can we use imx-mkimage to designate 0x80020000 ? example:

./$(MKIMG) -soc QM -rev B0 -append mx8qm-ahab-container.img -c -scfw scfw_tcm.bin -ap bl31.bin a53 0x80000000 -ap Image-imx8qmmek.bin a53 0x80020000 --data imx8qm-mek-ca53.dtb  0x83000000 -out flash.bin


Tags (2)
0 Kudos
2 Replies

NXP TechSupport
NXP TechSupport

You can refer to "i.MX8 Boot process and creating a bootable image" document:

0 Kudos

Contributor III

Hi Victor, I don't see any Cortex-A image example in the DOC-343178 without u-boot-atf.bin. I'm looking to use bl31.bin as bootloader only and then handoff to a kernel image or any image. Is there a mechanism to support this ? Can someone explain the "INFO: Entry point address = 0x80020000" debug print from BL31.bin ? 

0 Kudos