You can also use TFTF image as BL33.

Alexei


From: Manish Pandey2 <Manish.Pandey2@arm.com>
Sent: 21 October 2020 15:26
To: rkohli2000 gmail <rkohli2000@gmail.com>; Alexei Fedorov <Alexei.Fedorov@arm.com>
Cc: tf-a@lists.trustedfirmware.org <tf-a@lists.trustedfirmware.org>
Subject: Re: [TF-A] BL31 as bootloader
 
The best way to figure out whether handing off to BL33 happened or not is by attaching a debugger(DS-5).

is there any other A53 (or A72) test image (hello world like) I can validate with to further debug ?
 - You can use a linux image and device tree to test it
Refer to plat/brcm/common/brcm_bl31_setup.c -> "brcm_bl31_early_platform_setup()" function
For linux as BL33 payload please use coder under "ARM_LINUX_KERNEL_AS_BL33"


From: rkohli2000 gmail <rkohli2000@gmail.com>
Sent: 21 October 2020 12:12
To: Alexei Fedorov <Alexei.Fedorov@arm.com>
Cc: Manish Pandey2 <Manish.Pandey2@arm.com>; tf-a@lists.trustedfirmware.org <tf-a@lists.trustedfirmware.org>
Subject: Re: [TF-A] BL31 as bootloader
 
Hi Alexei, Manish,

I tried the following patch to  plat/imx/imx8qm/imx8qm_bl31_setup.c:
@@ -483,11 +486,15 @@ void bl31_early_platform_setup2(u_register_t arg0, u_register_t arg1,
        bl32_image_ep_info.args.arg3 = BL32_FDT_OVERLAY_ADDR;
 #endif
 #endif
+    // DEBUG ONLY - FIXME
+    SET_PARAM_HEAD(&bl33_image_ep_info, PARAM_EP, VERSION_1,  0);
+
        SET_SECURITY_STATE(bl33_image_ep_info.h.attr, NON_SECURE);
 
        /* init the first cluster's cci slave interface */
        cci_init(PLAT_CCI_BASE, imx8qm_cci_map, PLATFORM_CLUSTER_COUNT);
        cci_enable_snoop_dvm_reqs(MPIDR_AFFLVL1_VAL(read_mpidr_el1()));
+
 }
But no luck. 

Is there some way to confirm my bl31.bin is handing off to any BL33 (normal world) test image ?
In other words, is there any other A53 (or A72) test image (hello world like) I can validate with to further debug ?

Thanks.


On Oct 21, 2020, at 6:10 AM, Alexei Fedorov <Alexei.Fedorov@arm.com> wrote:

Hi Ravi,

You can take a look at arm_bl31_early_platform_setup() in plat\arm\common\arm_bl31_setup.c:

/* Populate entry point information for BL33 */
SET_PARAM_HEAD(&bl33_image_ep_info,
PARAM_EP,
VERSION_1,
0);
/*
* Tell BL31 where the non-trusted software image
* is located and the entry state information
*/
bl33_image_ep_info.pc = plat_get_ns_image_entrypoint();

bl33_image_ep_info.spsr = arm_get_spsr_for_bl33_entry();
SET_SECURITY_STATE(bl33_image_ep_info.h.attr, NON_SECURE);

Regards.
Alexei

From: TF-A <tf-a-bounces@lists.trustedfirmware.org> on behalf of rkohli2000 gmail via TF-A <tf-a@lists.trustedfirmware.org>
Sent: 21 October 2020 10:57
To: Manish Pandey2 <Manish.Pandey2@arm.com>
Cc: tf-a@lists.trustedfirmware.org <tf-a@lists.trustedfirmware.org>
Subject: Re: [TF-A] BL31 as bootloader
 
Hi Manish,

The test image should not have any dependency on device tree (dtb?)
for console init.
I used the NXP provided imx8qm-mek-ca53.dtb file which should match
the MEK board.
I have tested removing "--data imx8qm-mek-ca53.dtb 0x83000000" (below)
as well but no luck.
I don't believe PC is getting set to the 0x80020000 entry point.

The test image has validated with u-boot using these tftpboot settings:
    setenv ipaddr x.x.x.x
    setenv serverip x.x.x.x
    tftpboot 0xf0000000 App.bin
    bootm 0xf0000000

I don't see any console output on the screen running it with bl31.bin as below.
Is there any debug I can add somewhere to help troubleshoot?

Can you please provide me instructions on where to patch this missing code :
"SET_PARAM_HEAD(&bl33_image_ep_info, PARAM_EP, VERSION_1,  0);"
I can try it to see if any change in behavior.

Thanks in advance.
Regards
Ravi


On Wed, Oct 21, 2020 at 5:15 AM Manish Pandey2 <Manish.Pandey2@arm.com> wrote:
>
> Hi Ravi,
>
> Can you please confirm if control reached "test image" ? I guess, yes, as PC has right value.
> Also, does your "test image" depends on device tree for console initialization?
>
> One thing i see missing in "plat/imx/imx8qm/imx8qm_bl31_setup.c +352" is bl33 header initialization
> SET_PARAM_HEAD(&bl33_image_ep_info, PARAM_EP, VERSION_1,  0);
>
> thanks
> Manish
>
> ________________________________
> From: TF-A <tf-a-bounces@lists.trustedfirmware.org> on behalf of rkohli2000 gmail via TF-A <tf-a@lists.trustedfirmware.org>
> Sent: 21 October 2020 00:10
> To: Ravi Kohli <rkohli2000@gmail.com>
> Cc: tf-a@lists.trustedfirmware.org <tf-a@lists.trustedfirmware.org>
> Subject: Re: [TF-A] BL31 as bootloader
>
> Hi Alexei,
>
> I built my TF-A (imx-atf) b31.bin image using the RESET_TO_BL31 build option for the i.MX8QM MEK dev kit.
>
> make DEBUG=1 RESET_TO_BL31=1 PLAT=imx8qm bl31
>
> I used the imx-mkimage tool to generate a flash.bin (flash bootable image) with the following target to run on the MEK:
>
> flash_cortex_a53: $(MKIMG) mx8qm-ahab-container.img scfw_tcm.bin bl31.bin MyA53Serial.bin imx8qm-mek-ca53.dtb
> ./$(MKIMG) -soc QM -rev B0 -append mx8qm-ahab-container.img -c flags 0x00200000 -scfw scfw_tcm.bin -ap bl31.bin a53 0x80000000 -c -p3 -ap MyA53Serial.bin a53 0x80020000 -p4 --data imx8qm-mek-ca53.dtb 0x83000000 -out flash.bin
>
> Here, I allocated bl31.bin to boot from 0x80000000 and a test image at BL33 (normal world) entry point 0x80020000 (both for Cortex-A53).
> I can see DEBUG console output from the bl31.bin image but no serial output from my test image I am trying to boot from 0x80020000.
>
> 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.2(debug):imx_5.4.24_er3-1-g06450210f-dirty
> NOTICE:  BL31: Built : 17:33:32, Oct 20 2020
> INFO: bl31_platform_setup is called
> INFO:    GICv3 with legacy support detected. 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
> INFO: BL31: DEBUG: image_type is: normal
>
>
> Can anyone please suggest what could be the issue here that I don't see the test image console output ?
> Note, the same test image works fine using u-boot.
>
> Regards
> Ravi
>
>
> On Oct 7, 2020, at 12:43 PM, rkohli2000 gmail via TF-A <tf-a@lists.trustedfirmware.org> wrote:
>
> Hi Alexei,
>
> Thanks for your reply. I have not verified the RESET_TO_BL1 for imx8qm yet.
> I will try it out and confirm. And, thanks for this suggestion.
>
> Regards
> Ravi
>
> On Oct 7, 2020, at 12:12 PM, Alexei Fedorov <Alexei.Fedorov@arm.com> wrote:
>
> Hi Ravi,
>
> Have you tried to use RESET_TO_BL31 build option for your platform?
>
> Regards.
> Alexei
> ________________________________
> From: TF-A <tf-a-bounces@lists.trustedfirmware.org> on behalf of rkohli2000 gmail via TF-A <tf-a@lists.trustedfirmware.org>
> Sent: 07 October 2020 17:01
> To: tf-a@lists.trustedfirmware.org <tf-a@lists.trustedfirmware.org>
> Subject: [TF-A] BL31 as bootloader
>
> Hi,
> I'm a new user and sorry for some basic TF-A questions. Any guidance is appreciated.
>
> I'm am able boot the TF-A bl31.bin image itself on my i.MX8QM MEK platform without using u-boot.
> I can use the imx-mkimage tool to create a flash or eMMC bootable image (flash.bin). Here, I can
> specify this container image with both bl31.bin and a separate custom app at a give flash address.
> This is without any security requirements or dependencies.
>
> Can I use the T-FA bl31.bin image to act as a first stage bootloader (without u-boot) and then launch
> a "custom" bare metal app for Cortex-A53 (for example) on the i.MX8QM at the given (BL33) entry point
> 0x80020000 address ?
>
> Thanks in advance.
> Ravi
>
>
>
> --
> TF-A mailing list
> TF-A@lists.trustedfirmware.org
> https://lists.trustedfirmware.org/mailman/listinfo/tf-a
>
>
> --
> TF-A mailing list
> TF-A@lists.trustedfirmware.org
> https://lists.trustedfirmware.org/mailman/listinfo/tf-a
>
>
-- 
TF-A mailing list
TF-A@lists.trustedfirmware.org
https://lists.trustedfirmware.org/mailman/listinfo/tf-a