LPC55S69-EVKを評価したとき、ZephyrのUSBマスストレージ(SDIFドライバを使用)の読み取り/書き込み速度が、 MCUXpresso SDK の例。
以下は、 クリスタルディスクマーク 8.0.6 :
[Read]
SEQ 1MiB: 10.903 MB/s | RND 4KiB: 4.204 MB/s
[Write]
SEQ 1MiB: 7.756 MB/s | RND 4KiB: 3.286 MB/s[Read]
SEQ 1MiB: 1.048 MB/s | RND 4KiB: 0.985 MB/s
[Write]
SEQ 1MiB: 0.209 MB/s | RND 4KiB: 0.351 MB/sMCUXpresso SDK よりも約 10 倍遅いです。
[Read]
SEQ 1MiB: 1.676 MB/s | RND 4KiB: 1.489 MB/s
[Write]
SEQ 1MiB: 0.628 MB/s | RND 4KiB: 0.830 MB/s*それでも、MCUXpresso SDKs より 5 ~ 6 倍遅いです。*
有効 Zephyr SDHC & SDカードログ – エラーは検出されませんでした。
SD カードの初期化を確認しました (3.3V、50MHz クロック、正しいブロック サイズ)。
ログには、SDIF クロック構成が成功したことが示されています (24MHz → 50MHz)。
[00:00:00.000] sd: sd_init_io: Host controller support 3.3V max
[00:00:01.000] sdif: mcux_sdif_set_io: SDIF clock set to 400000
[00:00:01.376] sd: sdmmc_read_csd: Card block count 124735488, block size 512
[00:00:01.376] sdif: mcux_sdif_set_io: SDIF clock set to 24000000
[00:00:01.379] sd: sdmmc_set_bus_speed: Setting bus clock to: 50000000 ボード: LPC55S69-EVK
Zephyr バージョン:コミット:c2d52c7f4b53a3e3691a7e6fa15af83ef72446cc(4.1.99)
変更する必要がある Kconfig オプションまたはオーバーレイはありますか?
これをさらにデバッグするための洞察や提案があれば幸いです
よろしくお願いいたします!
ご提案ありがとうございます。
あらゆる最適化と変更にもかかわらず、最高速度は 3.1 MB/秒でした。パフォーマンスの問題の根本原因はすでに特定されましたか?率直に言って、根本的な問題に対処せずに、システムの調整だけでは完全なパフォーマンスを実現できないと思います。
ウィマンシャ
こんにちは@wima88
試してみることができる別の USB 最適化。
CONFIG_UDC_BUF_COUNT=128
CONFIG_UDC_WORKQUEUE_STACK_SIZE=2048
CONFIG_UDC_WORKQUEUE_PRIORITY=0
BR
ハリー
こんにちは、ハリー。
ご返信ありがとうございます。Konig の提案オプションを使用すると、約 2.54 MB/秒を実現できました。
[Read]
SEQ 1MiB (Q= 1, T= 1): 2.516 MB/s [ 2.4 IOPS] <412859.66 us>
RND 4KiB (Q= 1, T= 1): 2.033 MB/s [ 496.3 IOPS] < 2011.94 us>USB スタックがボトルネックになっている可能性はあるでしょうか?
こんにちは@wima88
以下の最適化を追加してみてはいかがでしょうか
CONFIG_MCUX_SDIF_DMA_BUFFER_SIZE=512
CONFIG_SPEED_OPTIMIZATIONS=y
CONFIG_SDIO_STACK=y
CONFIG_MPU=n
CONFIG_ASSERT=n
CONFIG_LOG=n
CONFIG_LOG_DEFAULT_LEVEL=0
BR
ハリー
こんにちは@wima88
私たちはこの問題を調査中ですので、結果が出次第お知らせします。
BR
ハリー
@Harry_Zhangこの問題に関して何か更新はありますか?lpc ドライバの代わりに imx ドライバを使用するFRDM-MCXN947 (Zephyr 付き) をテストしました。結果は上記とほぼ同じです
よろしくお願いします。
こんにちは、ハリー。
こんにちは、
私は クリスタルディスクマーク 私のベンチマークツールとして( https://crystalmark.info/en )。私の設定とプロセスは次のとおりです。
改造ジャンパー P4電圧1.8V~3.3V (ユーザーガイドの表1、P21による)。
ダウンロードした SDKの例(v25.03.00) 経由で VSCode の MCUXpresso 拡張機能。
構築してフラッシュ lpcxpresso55s69_dev_msc_disk_freertos_cm33_core0 例。
リセット後、シリアル端末に次のプロンプトが表示されました。 「ディスクを挿入してください。」
使用した SanDisk クラス 3 V30 SD カード。
コネクテッド P9(HS-USB) 構成済み クリスタルディスクマーク (添付のスクリーンショットを参照)。
テスト対象:
1MBのブロックサイズ
1 キュー、1 Thread
32MBのファイルの9回の反復
上記と同じ開発環境を使用しました。
例: Zephyr/サンプル/サブシステム/USB/質量
変更は行われていません。
west build -p -b lpcxpresso55s69/lpc55s69/cpu0
west flash修正済み next_usb_prj.conf 次のように:
CONFIG_DISK_ACCESS=y
CONFIG_FILE_SYSTEM=y
CONFIG_FAT_FILESYSTEM_ELM=y
CONFIG_PRINTK=y
CONFIG_DISK_DRIVERS=y
CONFIG_DISK_DRIVER_SDMMC=y
CONFIG_SDHC_LOG_LEVEL_DBG=y
CONFIG_SD_LOG_LEVEL_DBG=y
CONFIG_LOG_BUFFER_SIZE=2048
CONFIG_USBD_MSC_STACK_SIZE=4096
CONFIG_USBD_MSC_LUNS_PER_INSTANCE=5
CONFIG_USBD_MSC_SCSI_BUFFER_SIZE=2048 ビルドコマンド
west build -p -b lpcxpresso55s69/lpc55s69/cpu0 -- -DCONF_FILE=usbd_next_prj.conf
west flash使用した 同じCrystalDiskMark設定 3つのCASEすべてに当てはまります。
オーバーレイファイルなし どちらの Zephyr の例でも使用されました。
さらに詳しい情報が必要な場合はお知らせください。
ありがとうございます。
こんにちは@wima88
どのようにテストしたか教えていただけますか?
テストしたいです。
BR
ハリー