Skrivet av Yoshman:
Du lär behöva någon form av monitor/firmware för att kunna programmera via USB utan extra probe.
Om det inte finns något alls på kortet från start lär du behöva någon form av probe/programmerare för att få ned det initiala programmet.
Vad jag såg är att STM32-baserade mikrokontrollers verkar komma med en förinstallerad programvara som fungerar ihop med STM32CubeProgrammer. Så verkar vara där du ska starta.
Det jag har tillgång till är .dts och .dtsi filer.
När jag FÖRST får ARM Trusted Firmware att fungera, då kan jag flasha över detta till min CPU och där efter kan jag bränna över U-boot till eMMC.
ARM Trusted Firmware ser till så processorn har en grundläggande kod som den kan köra för att t.ex. starta upp PMIC eller DDR minnet och ha kommunikation med eMMC.
Jag ar försökt kompilera ARM Trusted Firmware, utan att lyckas. Så här skulle jag behöva lite hjälp. Det finns dock en fin liten genväg. Jag ska visa dig. Om du har Linux installerat, så kan du utföra dessa instruktioner.
Steg 1:
Börja med att ladda ned SDK:n här.
https://www.st.com/en/embedded-software/stm32mp1dev.html#get-...
Denna ska installeras. Det är en vanlig .sh fil som man kör. Inget speciellt.
Steg 2:
Börja med att gå på samma länk igen https://www.st.com/en/embedded-software/stm32mp1dev.html#get-...
Nu så ska du ladda ned källfilerna, alltså "sources". Så gör det och packa upp dessa.
Steg 3:
I linux så kan man välja att krosskompilera. Detta görs enkelt med att välja SDK:n som kompilator.
source <SDK installation directory>/environment-setup-cortexa7t2hf-neon-vfpv4-ostl-linux-gnueabi
Om man kör dessa och får detta så ar man gjort rätt
echo $ARCH
Output: arm
echo $CROSS_COMPILE
Output: arm-ostl-linux-gnueabi-
$CC --version
Output: arm-ostl-linux-gnueabi-gcc (GCC) <GCC version>
[...]
echo $OECORE_SDK_VERSION
Output: <expected SDK version>
https://wiki.st.com/stm32mpu/wiki/STM32MPU_Developer_Package#...
Så ja. Då var detta klart!
Steg 4:
Nu är det dags att kompilera ARM Trusted Firmware.
Detta är vad jag styper i. Jag kan kompilera ARM Trusted Firmware med dom befintliga .dtb filerna som finns. Men jag har inga .dtb filer. Bara .dts och .dtsi filer. Dessa ska man kunna kompilera till .dtb filer. Men jag vet inte hur.
Hur som helst! För att kompilera med nuvarande konfigrationsfiler så följer man denna manual:
https://github.com/STMicroelectronics/meta-st-stm32mp/blob/mi...
Det första man ska göra är att gå till mappen som heter "sources", den man laddade ned alltså.
I denna mapp så finns det en mapp som börjar på "tf-a.." och detta är ARM Trusted Firmware. Gå in i denna mapp.
Där efter så så .tar.xz filen packas upp.
$> tar xf ##BP##-##PR##.tar.xz
$> cd ##BP##
$> for p in `ls -1 ../*.patch`; do patch -p1 < $p; done
Steg 5:
För att börja kompilera så ska man först välja vart FIP filerna ska ligga. Dessa filer är alltså filerna som man vill bränna in på processorn. Bara stå i ARM Trusted Firmware mappen, alltså där källkoden finns.
export FIP_DEPLOYDIR_ROOT=$PWD/../../FIP_artifacts
Steg 6:
Om du har .dts och .dsi filer, så länka <external DT location> till dessa. Alltså <external DT location> ska ersättas med t.ex. /home/<username>/dokument/filer/deviceTree/
To use the external device tree feature, EXTDT_DIR variable must be set to the root location of external DT
as specified in the README.HOW_TO.txt of external-dt
$> export EXTDT_DIR=<external DT location>
To use the STM32MP DDR firmware, FWDDR_DIR variable must be set to the root location of STM32MP DDR firmware
as specified in the README.HOW_TO.txt of stm32mp-ddr-phy
$> export FWDDR_DIR=<stm32mp ddr firmware location>
Då är frågan. Hur får du tag på dessa .dts och dtsi filer? Jo, via STM32CubeIDE som är gratis att ladda ned. Du behöver bara göra ett enkelt STM32MP1 projekt och sedan finns filerna i STM32MP1 projektet i katalogen CA7.
Steg 7:
För att kompilera så gör man något av dessa.
To list TF-A source code compilation configurations:
$ make -f $PWD/../Makefile.sdk help
To compile TF-A source code:
$ make -f $PWD/../Makefile.sdk all
To compile TF-A source code for a specific config:
$ make -f $PWD/../Makefile.sdk TF_A_DEVICETREE=stm32mp157f-ev1 TF_A_CONFIG=optee-sdcard ELF_DEBUG_ENABLE='1' all
NB: TF_A_DEVICETREE flag must be set to switch to correct board configuration.
To compile TF-A source code and overwrite the default FIP artifacts with built artifacts:
$> rm -rf $FIP_DEPLOYDIR_ROOT/arm-trusted-firmware/*
$> make -f $PWD/../Makefile.sdk DEPLOYDIR=$FIP_DEPLOYDIR_ROOT/arm-trusted-firmware all
Om man har ett projekt i STM32CubeIDE som heter CPU-Projektet så kommer man få filer som heter "CPU-Projektet-mx.dts" och "CPU-Projektet.dtsi". Så "TF_A_DEVICETREE=stm32mp157f-ev1" blir då "TF_A_DEVICETREE=CPU-Projektet-mx"
Om du vill, så kan jag lära dig hur du använder STs produkter. Detta är superenkelt! ST32CubeIDE är allt man behöver.