米爾基于STM32MP257核心板及開發板
3.USB啟動
USB啟動用于燒錄鏡像到外部flash,例如NAND,SD卡等,從PC端燒錄鏡像到外部 Flash是由U-Boot結合STM32CubeProgrammer完成的,配置并編譯U-Boot是燒錄的前提,根據STM32MPU的啟動順序:
TF-A->OP-TEE->U-BOOT->Linux Kernel
基本的啟動流程如下圖所示:
- 上電冷啟動,加載ROM Code;
- ROM Code:初始化基本時鐘,從選定的啟動設備中加載FSBL,鑒權、啟動FSBL;
- FSBL:TF-A程序,完成整個時鐘樹初始化,初始化DDR,從選定的啟動設備中加載SSBL,啟動SSBL;
- OP-TEE: 啟動可信的安全環境;
- SSBL:u-boot,存儲器、網絡、USB各種方式加載Linux Kernel,啟動kernel;
- Linux 內核:內核初始化、掛載根文件系統,啟動用戶空間的init程序;
Linux 用戶空間:應用程序。
3.1.TF-A的啟動
進入到FIP_artifacts目錄下
myir@myir-vm:~/stm32mp25x-BringUp-bsp/FIP_artifacts$ tree arm-trusted-firmware/ -L 1arm-trusted-firmware/├── bl31├── debug├── fwconfig├── metadata.bin├── tf-a-stm32mp257d-bringup-mx-optee-emmc.stm32└── tf-a-stm32mp257d-bringup-mx-usb.stm32
部署到開發板燒寫環境(部署前請確認板子上電,串口線以及USB線正確連接):
將開發板撥碼開關全部設置為0,接上USBOTG和電源,上電,測試連接環境
串口線連接J15接口:
手動連接虛擬機
配置STM32cubeprogrammer環境
測試燒寫環境
myir@myir-vm:~/stm32mp25x-BringUp-bsp$ STM32_Programmer_CLI -c port=usb1
注意:如無法輸入此命令,客戶重新配置環境變量
myir@myir-vm:~/stm32mp25x-BringUp-bsp$ export PATH=$PATH:/home/myir/STMicroelectronics/STM32Cube/STM32CubeProgrammer/bin
使用下列命令進行TF-a USB下載模式
myir@myir-vm:~/stm32mp25x-BringUp-bsp$ cd FIP_artifactsmyir@myir-vm:~/stm32mp25x-BringUp-bsp/FIP_artifacts$ STM32_Programmer_CLI -c port=usb1 -d arm-trusted-firmware/tf-a-stm32mp257d-bringup-mx-usb.stm32 0x1 -s 0x1 -d fip/fip-stm32mp257d-bringup-mx-ddr-optee-emmc.bin 0x2 -s 0x2
成功啟動。
3.2.Optee-OS和Uboot啟動
使用下列命令進行FIP文件的燒寫和啟動
myir@myir-vm:~/stm32mp25x-BringUp-bsp$ cd FIP_artifactsmyir@myir-vm:~/stm32mp25x-BringUp-bsp/FIP_artifacts$ STM32_Programmer_CLI -c port=usb1 -d arm-trusted-firmware/tf-a-stm32mp257d-bringup-mx-usb.stm32 0x1 -s 0x1 -d fip/fip-stm32mp257d-bringup-mx-ddr-optee-emmc.bin 0x2 -s 0x2 -d fip/fip-stm32mp257d-bringup-mx-optee-emmc.bin 0x3 -s 0x3
注:執行該命令時板卡重新上下電。
將生成的fip寫到板子上,可以看到串口輸出的optee-os的啟動log如下:
uboot的啟動log如下
4.eMMC燒錄與啟動
4.1.TF-a和fip文件燒錄emmc
在FIP_artifacts文件夾下創建一個tsv后綴的文件,命名:FlashLayout_emmc_stm32mp25x-bringup-mx.tsv填入如下內容。注意:這個TSV文件未定義內核和內核之后的內容
#Opt Id Name Type IP Offset Binary- 0x01 fsbl-boot Binary none 0x0 arm-trusted-firmware/tf-a-stm32mp257d-bringup-mx-usb.stm32- 0x02 fip-ddr FIP none 0x0 fip/fip-stm32mp257d-bringup-mx-ddr-optee-emmc.bin- 0x03 fip-boot FIP none 0x0 fip/fip-stm32mp257d-bringup-mx-optee-emmc.binP 0x04 fsbla1 Binary mmc0 boot1 arm-trusted-firmware/tf-a-stm32mp257d-bringup-mx-optee-emmc.stm32P 0x05 fsbla2 Binary mmc0 boot2 arm-trusted-firmware/tf-a-stm32mp257d-bringup-mx-optee-emmc.stm32P 0x06 metadata1 FWU_MDATA mmc0 0x00080000 arm-trusted-firmware/metadata.binP 0x07 metadata2 FWU_MDATA mmc0 0x00100000 arm-trusted-firmware/metadata.binP 0x08 fip-a FIP mmc0 0x00180000 fip/fip-stm32mp257d-bringup-mx-optee-emmc.binPED 0x09 fip-b FIP mmc0 0x00580000 nonePED 0x0A u-boot-env ENV mmc1 0x00980000 nonemyir@myir-vm:~/stm32mp25x-BringUp-bsp$ cd FIP_artifactsmyir@myir-vm:~/stm32mp25x-BringUp-bsp/FIP_artifacts$ STM32_Programmer_CLI -c port=usb1 -d FlashLayout_emmc_stm32mp25x-bringup-mx.tsv
刷寫log如下所示:
4.2.切換到emmc啟動
斷電,將撥碼開關切換到B0~B3(0 1 0 0)模式,重新上電即可emmc啟動,啟動log如下
可在uboot終端下進行操作,如獲取emmc信息命令mmc info
4.3.系統的整體燒錄和啟動
由于時間原因,編譯整個內核代碼和文件系統需要的時間很多,我們就先體驗下整個系統的燒錄和啟動過程,后續可以查閱米爾的軟件開發資料來詳細了解Linux系統的啟動過程。
在下載包里已經存在培訓資料包里的myir-image-full文件夾里,使用STM32CubeProgrammer加載FlashLayout_emmc_myb-stm32mp257x-2GB-optee.tsv文件,后續的操作步驟在前面章節已經學會。
燒錄時間較長(預計15分鐘),完成后切換啟動撥碼開關到eMMC啟動方式,即可上電進入整個Linux系統。
myir@myir-vm:~/myir-image-full$STM32_Programmer_CLI-cport=usb1-w./flashlayout_myir-image-full/optee/FlashLayout_emmc_myb-stm32mp257x-2GB-optee.tsv
米爾電子最新“明星產品”速報
-
STM32
+關注
關注
2282文章
10983瀏覽量
360950 -
開發板
+關注
關注
25文章
5374瀏覽量
100564 -
米爾電子
+關注
關注
0文章
127瀏覽量
678
發布評論請先 登錄
相關推薦
ST官方基于米爾STM32MP135開發板培訓課程(一)

STM32也能輕松跑Linux了 !STM32MP135開發板評測

如何在米爾-STM32MP257開發板上實現環境監測系統

【米爾-STM32MP135開發板-入門級MPU試用】初識功能強大的米爾-STM32MP135開發板及培訓課程
ST官方基于米爾STM32MP135開發板培訓課程(一)

ST×米爾STM32MP25x線下培訓會

ST×米爾STM32MP25x線下培訓會倒計時12天

ST×米爾STM32MP25x高階實戰培訓會

附培訓資料,速報名!ST×米爾STM32MP25x高階實戰培訓會

評論