に: NXPコミュニティ – Layerscape / LS1043Aフォーラム
から: マット・チャン < [email protected] >
日付: 2026‑02‑07 11:28 (台北、GMT+08:00)
リポジトリ: https://github.com/mattchang-engr/embedded-boot-time-instrumentation
ライセンス: Apache 2.0(注意事項あり)
NXPコミュニティの皆様、こんにちは。
概要
このプロジェクトはEL1セキュア物理タイマーを有効にします PBL/PBIフェーズ中 NXP LS1043A-RDB で U-Boot を実行することにより、マイクロ秒レベルの解像度で実際のエンドツーエンドのブートレイテンシを測定できます。
私は、タイミングを開始する方法を示す小さな集中リポジトリを共有しています。 最も早いプログラム可能なポイント ブート フロー(PBI)に含まれるため、測定にはリセット、RCW ロード、PLL ロック、クロック切り替え、および U-Boot の前に発生するすべての処理がカバーされます。これは、繰り返し可能な早期ブート計測を必要とするファームウェア開発者、組み込み学習者、および Layerscape ユーザーを対象としています。
リポジトリの内容
ターゲット: LS1043A‑RDB (IFC NORブート) • Ubuntu 20.04 • LSDK 21.08 (FlexBuild) • U‑Boot 2021.04
SoC ステッピング (ブート ログから): LS1043AE Rev1.0 (0x87920010)
システムビュー(最も早い有効化ポイント)
T0: システムリセット/PoR
|
v
PBL: IFC NORからPBLを読み取り、RCWをロードする
|
v
クロック: PLLロック+クロックスイッチング
|
v
PBIフェーズ(最も早いプログラム可能なポイント)
1) ALTCBARを書き込む(ACS=0、デフォルトウィンドウ)
2) CNTCRを書き込む(ACS=1、代替ウィンドウ) -> EL1タイマーが開始
|
v
システム準備完了(リセット完了、SoC リリース)
|
v
U-Boot (コンソールの初期化 -> ボードのチェック -> ブート完了)
|
v
Linux ブート (カーネル/ユーザー空間)
コア方法(2つのPBIライン)
1) プログラムALTCBAR(代替CCSRベースを0x0200_0000で定義)
ヘッダー: 0x0957_0158 (ACS=0、BYTE_CNT=4、CONT=1、SYS_ADDR=0x01570158)
データ: 0x0000_0200 (ALTCBAR = 0x0000_0200)
2) CNTCRを有効にする(EL1セキュアシステムカウンタ @ 0x02B0_0000)
ヘッダー: 0x89B0_0000 (ACS=1、BYTE_CNT=4、CONT=1、SYS_ADDR=0x00B0_0000)
データ: 0x0100_0000 (バイトスワップによりレジスタは 0x0000_0001 を読み取ります -> EN/CNTCLKEN=1)
なぜ ALTCBAR なのか?
ALTCBARは代替CCSRベース(0x0200_0000)を設定するので、 ACS=1 対象とする 0x0200_0000..0x02FF_FFFF ウィンドウ。
以来 CNTCR は 0x02B0_0000はALTCBARをプログラムして使用した後にのみ到達可能 ACS=1 。
CNTCRのBYTEnペイロードは バイトスワップ この段階では、 0x0100_0000 レジスターは 0x0000_0001。
検証スナップショット(UART)
U-Boot 2021.04-ダーティ(2024年3月12日 - 11:51:50 +0800)
SoC: LS1043AE Rev1.0 (0x87920010)
プロジェクト: PBI の開始から u-boot コンソールの初期化まで: 757 ミリ秒
プロジェクト: u-boot チェックボード完了: 820 ミリ秒
プロジェクト: u-boot ブートプロセス完了: 1270 ミリ秒
...
[ 6.673863] ランダム: crng init 完了
TinyLinux ログイン: root
実例: 総ブート数 ≈ 7.947秒 (U-Boot ステージ + Linux ブリングアップ)。
よくある落とし穴(簡単)
リンクとライセンス
リポジトリ: https://github.com/mattchang-engr/embedded-boot-time-instrumentation
ライセンス: Apache 2.0 (注意事項あり)
独自の資料は再配布されません。公式ドキュメントについてはベンダーのサイトを参照してください。
フィードバック、他の Layerscape パーツからの測定値、またはブート ソース バリアント (QSPI/SD) がある場合は、ぜひお聞かせください。問題や PR は大歓迎です。
よろしくお願いします、
マット・チャン
GitHub: https://github.com/mattchang-engr
メールアドレス: [email protected]
興味深いプロジェクトです。便利なツールでもあります。