S32Gブートローダーカスタマイズ
このドキュメントは、ブートローダーを変更してLinuxとMCALを起動し、ブートローダー、MCAL、Linux間の競合を解決する方法を説明しています
本文说明在S32G2 RDB2板上如何定制开发Bootloader,本文示例主要实现功能是:
Bootloader启动一个M核,MCAL驱动测试程序,本文分别测试了MCU,DIO,UART的MCAL驱动示例代码。
Bootloader同时启动A53 Linux
目录
1 需要的软件,工具,文档与说明... 3
1.1 软件与工具... 3
1.2 参考文档... 3
1.3 开发说明... 3
2 测试软件安装编译说明... 4
2.1 安装RTD_MCAL驱动... 4
2.2 编译MCAL驱动测试程序(以MCU为例) 5
2.3 优化重排M7 demo镜像及与MPU设置的配合... 5
2.4 去掉CLOCK INIT. 7
2.5 去掉MCU相关INIT. 8
2.6 DIO MCAL程序去掉PORT INIT. 9
2.7 UART MCAL程序去掉PORT INIT. 10
2.8 UART MCALプログラムのCLOCK TREEの修正.. 10
2.9 解决中断冲突... 11
2.10 准备A53 Linux镜像... 12
3 Bootloader工程说明... 13
3.1 关掉XRDC支持... 13
3.2 关掉eMMC/SD支持(可选) 14
3.3 セキュアブートを無効にする(オプション)14
3.4 增加MCAL驱动所需要的PORT的初始化... 15
3.5 解决Bootloader,MCAL与Linux的clock冲突... 17
3.6 配置A53 Boot sources: 34
3.7 配置M7 Boot sources: 35
3.8 关闭调试软断点:... 36
3.9 编译Bootloader工程... 37
3.10 制造Bootloader的带IVT的镜像... 38
3.11 烧写镜像... 41
4 测试... 42
4.1 硬件连接... 42
4.2 MCU MCAL+Linux测试过程... 42
4.3 DIO MCAL+Linux测试过程... 43
4.4 UART MCAL+Linux测试过程... 43
5 Bootloader源代码说明... 43
6 Bootloader定制说明... 45
6.1 QSPI NOR驱动说明... 45
6.2 eMMC/SDcard启动支持... 46
6.3 DDR初始化... 46
6.4 Secure Boot支持... 46
7 调试说明... 46
7.1 Bootloader的调试... 46
7.2 MCAL驱动的调试... 46
G3で起動できるようにATFを変更する方法を説明する文書をもう1つ追加してください。
オートモーティブ Re: S32G Bootloader Customzition 最終的に、問題は uboot の board_common.c に見つかりました。カーネル実行時に、board_cleanup_before_linux が scmi_reset_agent を呼び出します。コメントが呼び出されるとどうなるでしょうか? Re: S32G Bootloader Customzition こんにちは。MCUのフラッシュメモリの読み書きをデバッグしています。現在、Aコアがubootステージに移行するとnorflashの読み書きは正常に動作するのですが、Linuxステージになるとnorflashの機能が異常になるという問題が発生しています。 ubootステージclkダンプビューqspi_flash2xは266666666です Linuxのダンプ/sys/kernel/debug/clk/clk_summaryでは、qspi_flash2xは266666666で、その後0に変わります。 dfs1レジスタをチェックすると、dfs1はリセットされている この問題を見つけるにはどうすればよいでしょうか? Re: S32G Bootloader Customzition MコアでCANメッセージを送信したのですが、Ubootのマルチコア起動プロセス中にCANメッセージの送信が停止しました。私のATF設定は@learnxさんと同じです。原因を解析していただけますか?ありがとうございます! @Johnli Re: S32G Bootloader Customzition ありがとう! Re: S32Gブートローダーカスタマイズ ドキュメントを確認してください:llceドライバkoをロードしていることを確認してください。
S32G_Bootloader_G3_LLCELOGGER
ドキュメントおよびプロジェクトにおいて、ロガー・デモ実行用G3ブートローダーカスタマイズ(G2と同様)を説明しています
https://community.nxp.com/t5/NXP-Designs-Knowledge-Base/S32G-Bootloader-G3-Customization/ta-p/1769528
Re: S32G Bootloader Customzition こんにちは。質問があります。BSP38イメージを使用しています。起動後、ubootでclk dumpを使ってllce_can_peのクロック値を照会したところ、0と表示されました。ATFでデバイスツリー構成を確認しましたが、問題は見つかりませんでした。 ATF デバイスツリー構成 mc_cgm0: mc_cgm0@40030000 { compatible = "nxp,s32cc-mc_cgm0"; reg = <0x0 0x40030000 0x0 0x3000>; assigned-clocks = < & plat_clks S32GEN1_CLK_MC_CGM0_MUX0 >, < & plat_clks S32GEN1_CLK_MC_CGM0_MUX1 >, < & plat_clks S32GEN1_CLK_MC_CGM0_MUX2 >, < & plat_clks S32GEN1_CLK_MC_CGM0_MUX3 >, < & plat_clks S32GEN1_CLK_MC_CGM0_MUX4 >, < & plat_clks S32GEN1_CLK_MC_CGM0_MUX5 >, < & plat_clks S32GEN1_CLK_MC_CGM0_MUX7 >, < & plat_clks S32GEN1_CLK_MC_CGM0_MUX8 >, < & plat_clks S32GEN1_CLK_MC_CGM0_MUX9 >, < & plat_clks S32GEN1_CLK_MC_CGM0_MUX10 >, < & plat_clks S32GEN1_CLK_MC_CGM0_MUX12 >, < & plat_clks S32GEN1_CLK_MC_CGM0_MUX14 >, < & plat_clks S32GEN1_CLK_MC_CGM0_MUX16 >, <&plat_clks S32GEN1_CLK_XBAR_2X>, <&plat_clks S32GEN1_CLK_PER>, < & plat_clks S32GEN1_CLK_FTM0_REF >, < & plat_clks S32GEN1_CLK_FTM1_REF >, < & plat_clks S32GEN1_CLK_CAN_PE >, < & plat_clks S32GEN1_CLK_LIN_BAUD >, < & plat_clks S32GEN1_CLK_GMAC0_TS >, <&plat_clks S32GEN1_CLK_SPI>, <&plat_clks S32GEN1_CLK_SDHC>, <&plat_clks S32GEN1_CLK_QSPI_2X>; assigned-clock-parents = < & plat_clks S32GEN1_CLK_ARM_PLL_DFS1 >, < & plat_clks S32GEN1_CLK_PERIPH_PLL_PHI0 >, <&plat_clks S32GEN1_CLK_FXOSC>, < & plat_clks S32GEN1_CLK_PERIPH_PLL_PHI1 >, < & plat_clks S32GEN1_CLK_PERIPH_PLL_PHI1 >, < & plat_clks S32GEN1_CLK_PERIPH_PLL_PHI1 >, < & plat_clks S32GEN1_CLK_PERIPH_PLL_PHI2 >, < & plat_clks S32GEN1_CLK_PERIPH_PLL_PHI3 >, < & plat_clks S32GEN1_CLK_PERIPH_PLL_PHI4 >, < & plat_clks S32GEN1_CLK_PERIPH_PLL_PHI5 >, < & plat_clks S32GEN1_CLK_PERIPH_PLL_DFS1 >, < & plat_clks S32GEN1_CLK_PERIPH_PLL_DFS3 >, < & plat_clks S32GEN1_CLK_PERIPH_PLL_PHI7 >; assigned-clock-rates = <0>, <0>, <0>, <0>, <0>, <0>, <0>, <0>, <0>, <0>, <0>, <0>, <0>, <0>, <80000000>, <40000000>, <40000000>, <40000000>, <125000000>, <200000000>, <100000000>, <400000000>, <S32GEN1_QSPI_2X_CLK_FREQ>; }; periphpll: periphpll@4003c000 { compatible = "nxp,s32cc-periphpll"; reg = <0x0 0x4003c000 0x0 0x3000>; assigned-clocks = < & plat_clks S32GEN1_CLK_PERIPH_PLL_MUX >, <&plat_clks S32GEN1_CLK_PERIPH_PLL_VCO>, < & plat_clks S32GEN1_CLK_PERIPH_PLL_PHI0 >, < & plat_clks S32GEN1_CLK_PERIPH_PLL_PHI1 >, < & plat_clks S32GEN1_CLK_PERIPH_PLL_PHI2 >, < & plat_clks S32GEN1_CLK_PERIPH_PLL_PHI3 >, < & plat_clks S32GEN1_CLK_PERIPH_PLL_PHI4 >, < & plat_clks S32GEN1_CLK_PERIPH_PLL_PHI5 >, < & plat_clks S32GEN1_CLK_PERIPH_PLL_PHI7 >; assigned-clock-parents = <&plat_clks S32GEN1_CLK_FXOSC>; assigned-clock-rates = <0>, <S32GEN1_PERIPH_PLL_VCO_FREQ>, <100000000>, <80000000>, <40000000>, <125000000>, <200000000>, <125000000>, <100000000>; }; accelpll: accelpll@40040000 { compatible = "nxp,s32cc-accelpll"; reg = <0x0 0x40040000 0x0 0x3000>; }; Re: S32G ブートローダーのカスタマイズ こんにちは@Johnli こんにちは! 下の図の赤い枠で示されているように、一部のクロックがATFで特定のクロック値で定義されていないのはなぜでしょうか?システムはどのようにしてこのようなクロックの最終的なクロック値を決定するのでしょうか?ARM_PLL_VCOの関連レジスタを調べたところ、クロックのサイズが許可されている最大値と同じであることがわかりました。 ありがとう! Re: S32G Bootloader Customzition これは、このプロジェクトのMCUモジュールがこのクロックを動作させないことを意味します。EBでは、構成項目のプロパティを表示できます。 Re: S32G ブートローダーのカスタマイズ Hi @Johnli 您好!非常感谢~ もう一つ質問があります。共有ドキュメントやEBで「Under MCU Control」という表示をよく見かけますが、これは何のためのものなのでしょうか?RMでは関連する説明が見つかりません。この質問への回答を教えていただけますか? ありがとう! Re: S32G Bootloader Customzition 1: クロック関連のドキュメントS32G_Supplemental_documentation_on_resolving_clock_conflicts_V1-2023.07.03.pdfをご覧ください。
2: Linux クロックの初期化と構成は ATF に転送する必要があるため、コードは ATF にあります。 Re: S32Gブートローダーカスタマイズ Hi John, S32G3ブートローダーのマニュアルはありますか? どうもありがとうございました! Re: S32Gブートローダーカスタマイズ Hi John,
ちょっと気になったのですが、このドキュメントは英語版がありますか?
よろしくお願いいたします。
Viktor
View full article