2021-05-27 10:48 AM
Hi, Everybody!
Referring to this issue:
PatrickF suggested to manually configure U-BOOT for my board. I have downloaded tf-a sources patched it, of course installed and configured SDK and trying to do all according to it's README.HOW_TO.txt file.
As I have my specific DT I need to specify it in makefile parameters:
README.HOW_TO.txt has this example:
make -f $PWD/../Makefile.sdk TFA_DEVICETREE=stm32mp157c-ev1 TF_A_CONFIG=trusted ELF_DEBUG_ENABLE='1' all
But in fact TFA_DEVICETREE var-name should be TF_A_DEVICETREE. Is this correct?
Then, file format. We have .stm32, also .fip file format avaialble
I can compile both .stm32 tf-a and u-boot, but u-boot fail to start with following error:
NOTICE: CPU: STM32MP157DAB Rev.Z
NOTICE: Model: STMicroelectronics STM32MP157A-DK1 STM32CubeMX board
INFO: Reset reason (0x14):
INFO: Pad Reset from NRST
INFO: PMIC version = 0x21
INFO: FCONF: Reading TB_FW firmware configuration file from: 0x2ffe3000
INFO: FCONF: Reading firmware configuration information for: stm32mp_io
INFO: Using USB
INFO: Instance 2
INFO: Boot used partition fsbl1
NOTICE: BL2: v2.4-r1.0(debug):
NOTICE: BL2: Built : 11:12:52, May 27 2021
INFO: BL2: Doing platform setup
INFO: RAM: DDR3-DDR3L 16bits 533000Khz
WARNING: Couldn't find property st,phy-cal in dtb
INFO: Memory size = 0x20000000 (512 MB)
INFO: DFU USB START...
INFO: phase ID :0, Manifestation 0 at c00001d9
INFO: phase ID :3, Manifestation 3 at c80e1fa2
ERROR: FIP Header check failed for phase 3
ERROR: usb_core_ctl_error : Send an ERROR
INFO: handle USB : Suspend int
INFO: USB Suspend mode
Then I'm trying to compile tf-a with fip option, but it fails with following error:
make -f ../Makefile.sdk TF_A_CONFIG=trusted TF_A_DEVICETREE=stm32mp157a-stm32mp151-dk1-mx fip
fiptool-stm32mp config:
optee:
bl32 config value: optee
trusted:
bl32 config value: tfa
FIP_DEVICETREE: stm32mp157a-stm32mp151-dk1-mx
FIP_DEPLOYDIR_FIP : /home/screep/Distribution-Package/stm32mp1-openstlinux-5.10-dunfell-mp1-21-03-31/sources/arm-ostl-linux-gnueabi/FIP_artifacts//fip
FIP_DEPLOYDIR_TFA : /home/screep/Distribution-Package/stm32mp1-openstlinux-5.10-dunfell-mp1-21-03-31/sources/arm-ostl-linux-gnueabi/tf-a-stm32mp-2.4.r1-r0/tf-a-sources/../deploy/bl32
FIP_DEPLOYDIR_FWCONF: /home/screep/Distribution-Package/stm32mp1-openstlinux-5.10-dunfell-mp1-21-03-31/sources/arm-ostl-linux-gnueabi/tf-a-stm32mp-2.4.r1-r0/tf-a-sources/../deploy/fwconfig
FIP_DEPLOYDIR_OPTEE : /home/screep/Distribution-Package/stm32mp1-openstlinux-5.10-dunfell-mp1-21-03-31/sources/arm-ostl-linux-gnueabi/FIP_artifacts//optee
FIP_DEPLOYDIR_UBOOT : /home/screep/Distribution-Package/stm32mp1-openstlinux-5.10-dunfell-mp1-21-03-31/sources/arm-ostl-linux-gnueabi/FIP_artifacts//u-boot
Missing stm32mp157a-stm32mp151-dk1-mx-fw-config-optee.dtb file in folder: $FIP_DEPLOYDIR_FWCONF or '$FIP_DEPLOYDIR_ROOT/arm-trusted-firmware/fwconfig'
Why optee? I don;t need optee.
Can anybody help me with correct sequence compiling tf-a and u-boot starting from source download and finishing with success kernel load...
Thank you in advance
Looking forward for your reply
2021-05-28 02:59 AM
Hi,
This wiki page might help you: https://wiki.st.com/stm32mpu/wiki/How_to_compile_the_device_tree_with_the_Developer_Package.
Please note that with a defined Ecosystem SDK (here v3), you should also be careful with the tools versions (e.g. CubePro, CubeMX and CubeIDE) as listed in https://wiki.st.com/stm32mpu/wiki/STM32MP15_ecosystem_release_note
some useful pages too:
https://wiki.st.com/stm32mpu/wiki/How_to_create_your_board_device_tree
https://wiki.st.com/stm32mpu/wiki/How_to_bring-up_a_custom_board_:_procedure
Regards.
2021-05-31 07:13 AM
2021-05-31 07:37 AM
Hi,
Btw, your fail is within TF-A.
I suspect something not well formed in the uBoot FIP image around FW_CONFIG size.
On Flashing DK2, I see :
INFO: Loading image id=31 at address 0x2ffff000
INFO: Image id=31 loaded: 0x2ffff000 - 0x2ffff226
INFO: FCONF: Reading FW_CONFIG firmware configuration file from: 0x2ffff000
INFO: FCONF: Reading firmware configuration information for: dyn_cfg
INFO: FCONF: Reading firmware configuration information for: stm32mp1_firewall
Note that device column = mmc0 mean SD-Card on SDMMC.
To build a Serial-NAND CubeProgrammer Flashlayout, please have a look to https://wiki.st.com/stm32mpu/wiki/STM32CubeProgrammer_flashlayout#NAND_Flash_memory_with_FIP
Device column should be spi-nand0 and offset to be carefully selected (see also https://wiki.st.com/stm32mpu/wiki/STM32MP15_Flash_mapping#NAND_memory_mapping)
Regards
2021-05-31 07:46 AM
2021-05-31 08:51 AM
Could you please try this (adapt the path if required):
fiptool info ./sources/arm-ostl-linux-gnueabi/FIP_artifacts/fip/fip-stm32mp157a-stm32mp151-dk1-mx-trusted.bin
example of result when using the scripts from wiki.
Secure Payload BL32 (Trusted OS): offset=0x100, size=0x1347C, cmdline="--tos-fw"
Non-Trusted Firmware BL33: offset=0x1357C, size=0xCF9D8, cmdline="--nt-fw"
FW_CONFIG: offset=0xE2F54, size=0x226, cmdline="--fw-config"
HW_CONFIG: offset=0xE317A, size=0x1D0A0, cmdline="--hw-config"
TOS_FW_CONFIG: offset=0x10021A, size=0x4748, cmdline="--tos-fw-config"
Seems you FW_CONFIG is not well defined. I'm not a strong SW guy, Maybe try:
pushd $WORKDIR/sources/arm-ostl-linux-gnueabi/u-boot-stm32mp-[0-9]*/u-boot-sources
make stm32mp15_trusted_defconfig
make mrproper
make -f ../Makefile.sdk DEVICE_TREE=<device tree> DEPLOYDIR=$FIP_DEPLOYDIR_ROOT/u-boot FIP_CONFIG=" trusted" FIP_BL32_CONF="tfa," all
popd
Regards
2021-05-31 09:12 AM
2021-05-31 09:55 AM
Finally got U-BOOT loaded and qspi visible:
UPLOAD ... done
Ctrl+C to exit ...
Download done
STM32MP> sf probe
Invalid bus 0 (err=-19)
Failed to initialize SPI flash at 0:0 (error -19)
STM32MP> mtdpard
Unknown command 'mtdpard' - try 'help'
STM32MP> mtdpards
Unknown command 'mtdpards' - try 'help'
STM32MP> mtdparts
device spi-nand0 <spi-nand0>, # parts = 4
#: name size offset mask_flags
0: fsbl 0x00200000 0x00000000 0
1: ssbl1 0x00200000 0x00200000 0
2: ssbl2 0x00200000 0x00400000 0
3: UBI 0x07a00000 0x00600000 0
active partition: spi-nand0,0 - (fsbl) 0x00200000 @ 0x00000000
defaults:
mtdids : spi-nand0=spi-nand0
mtdparts: mtdparts=spi-nand0:2m(fsbl),2m(ssbl1),2m(ssbl2),-(UBI)
STM32MP>
There was a problem: stm32mp157a-stm32mp151-dk1-mx-fw-config.dts file - "stm32mp15-ddr-512m-fw-config.dts" should be included.
Thank you very much for your support - I will go on with kernel loading :)
Next.
Finally I have modified flash-layout file and tried to download all to nand:
Here is flash_layout file - it matches to mtd partitions above:
#Opt
Id Name Type IP Offset Binary
- 0x01 fsbl-boot Binary none 0x0 ./tf-a-stm32mp157a-stm32mp151-dk1-mx-usb.stm32
- 0x03 fip-boot Binary none 0x0 ./fip-stm32mp157a-stm32mp151-dk1-mx-trusted.bin
P 0x04 fsbl Binary(2) spi-nand0 0x000000 ./tf-a-stm32mp157a-stm32mp151-dk1-mx-nand.stm32
P 0x05 fip1 Binary spi-nand0 0x200000 ./fip-stm32mp157a-stm32mp151-dk1-mx-trusted.bin
P 0x06 fip2 Binary spi-nand0 0x400000 ./fip-stm32mp157a-stm32mp151-dk1-mx-trusted.bin
P 0x10 UBI System spi-nand0 0x600000 ./st-image-weston-openstlinux-weston-stm32mp1-disco-mx_nand_4_256_multivolume.ubi
Fortunately all flashed correctly :) Now I want to boot from qspi flash :)
But setting BOOT0-2=111 gives no result - only science in console output..
I can check spi ins activity during boot - there IS activity during a few seconds. So, at least it is trying to boot.
Could you please give me a hint again :)
Thank you very much. Today is a lucky day :)
2021-05-31 11:31 PM
Hi,
If fail in BootROM, PA13 will toggle at about 5Hz (open-drain, need external resistor to watch it) and should go back to USB DFU.
See https://wiki.st.com/stm32mpu/wiki/STM32MP15_ROM_code_overview#Debug_and_error_cases
Please provide BootROM traces https://wiki.st.com/stm32mpu/wiki/STM32MP15_ROM_trace_analyzer, got after the fail.
Otherwise, it could be TF-A which crash once loaded.
Regards
2021-06-02 04:05 AM