2162913_ja-JP

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

2162913_ja-JP

2162913_ja-JP

KW45 初めてのプログラミング

初めてカスタム KW45 ベースの PCB をプログラムしようとしています。MCUXpressoを使ってみました。J-Link は SWD 経由でプログラムをアップロードできましたが、デバッグ モードに入ろうとするとボードがアドレス 0x14816fdc で停止します。さらに調査を進めると、Bluetooth コプロセッサの NBU をアップロードする必要があることが判明しました。AN13838 を試しましたが、UART 経由でボードを検出できません。AN14003 を調べてきましたが、現在の SPSDK に関してはその情報が古くなっています。私は何をしますか?

Re: KW45 First Time Programming

こんにちは、

Threadを読んでいて、AN14003 に記載されている手順に従い、SWD を使用して KW45 をプログラムするための単一のバイナリを生成しようとしていることを理解しました。このThreadは少し古いですが、成功しましたか?

私もここで同じことをやろうとしていますが、いくつか問題に直面しています。キーを生成し、安全なバイナリを作成するための Jupyter 部分は成功しませんでした。その部分については、同じThreadで言及された SPSDK CLI ツールを使用しています (キーと sb3 ファイルを生成するためです)。しかし、バイナリ ファイルをマージするときに問題が発生します。

ドキュメントに従って、 otap_client_freertos SDK の例を使用し、記載されているように変更を加えました。bin ファイルを生成しました。次に、16進エディタでotap_client_freertos.binとkw45b41_nbu_ble_xp_hosted.sb3ファイルを開き、sb3ファイルの内容をotap_client_freertos.binのアドレス0x7A000にコピーしました。 前述の通り。次に、マージされたバイナリを SEGGER J-Flash ユーティリティにロードして、バイナリを KW45 にフラッシュしました。しかし、操作は失敗し、その後は点滅の例をプログラムすることさえできなくなりました。この状態から回復するには、ISP モードに入り、チップ全体を消去する必要がありました (消去するためにも、SWD 経由でチップにアクセスできませんでした)。以下は、マージされたバイナリでフラッシュに失敗したときに表示されるエラー メッセージです。

****************************************************************************************

ターゲットのプログラミングと検証中 (1040384 バイト、1 つの範囲)...

- 接続中...

- USB経由でプローブ/プログラマデバイス0に接続

- プローブ/プログラマーファームウェア: J-Link V9 コンパイル日: 2022年12月13日 11:14:50

- プローブ/プログラマーS/N: 69730348

- デバイス「KW45B41Z83」が選択されました。

- ターゲットインターフェース速度: 4000 kHz (固定)

- VTarget = 3.290V

- ConfigTargetSettings() の開始

- ConfigTargetSettings() 終了 - 499us かかりました

- InitTarget() 開始

- SWDが選択されました。JTAG -> SWD 切り替えシーケンスを実行しています。

- ROM が ISP コマンド処理ループに入りました。デバッグ アクセスを再度有効にします。

- InitTarget() 終了 - 117msかかりました

- ID 0x6BA02477 の SW-DP が見つかりました

- DPv0が検出されました

- CoreSight SoC-400 以前

- AP マップの検出をスキップしました。手動で構成された AP マップが見つかりました。

- AP[0]: AHB-AP (IDR: 未設定、ADDR: 0x00000000)

- APマップを反復処理して使用するAHB-APを見つける

- AP[0]: ROMBASE読み取りをスキップしました。CoreBaseAddrはユーザーが手動で設定します

- AP[0]: コアを発見

- CPUIDレジスタ: 0x410FD214。実装者コード: 0x41 (ARM)

- 機能セット: メインライン

- キャッシュ: キャッシュなし

- Cortex-M33 r0p4、リトルエンディアンが見つかりました。

- Cortex-M (ARMv8-M 以降): コネクテッド J-Link (S/N 69730348) は、I/D キャッシュを正しく処理しない古いファームウェア モジュールを使用します。キャッシュが有効になっている場合、適切なデバッグ機能は保証されません。

- FPUnit: 8 つのコード (BP) スロットと 0 つのリテラル スロット

- セキュリティ拡張: 実装済み

- セキュアデバッグ: 有効

- ROM テーブルスキャンはスキップされました。ユーザーが手動で設定した CoreBaseAddr: 0x80030000

- SetupTarget() の開始

- SetupTarget() 終了 - 7.11msかかりました

- 初期化シーケンスを実行しています...

- リセット実行中(0, 0 ms)

- ResetTarget() 開始

- 有効なアプリケーションがプログラムされていません。リセットをスキップします。

- ResetTarget() 終了 - 1.18msかかりました

- デバイス固有のリセットが実行されました。

- 初期化に成功しました

- ターゲットインターフェース速度: 4000 kHz (固定)

- JTAG デバイスが 1 個見つかりました。コアID: 0x6BA02477 (なし)

- コネクテッドに成功しました

- 選択したデータが選択したフラッシュ セクターに収まるかどうかを確認します。

- フラッシュプログラミングの準備の開始

- フラッシュプログラミングの準備終了

- フラッシュキャッシュ内のダーティエリアの特定を開始

- 汚れたエリアの特定終了

- CPU速度を測定できませんでした。

- フラッシュプログラミングの開始

-プログラミング範囲 0x00000000 - 0x00007FFF ( 4 セクター、32 KB)

- フラッシュプログラミングの終了

- エラー: プログラムが失敗しました

- 復元の開始

- エラー: ターゲットの復元に失敗しました。RAMCodeは停止しません

- 復元終了

- エラー: ターゲットのプログラムと検証に失敗しました

警告: 供給電圧が低すぎるか高すぎるため、ターゲットを切断します。VTarget = 0.000V

切断しています...

- 切断されました

**********************************************************************************************

プログラムしようとしている領域は 0x00000000 - 0x00007FFF のようです が、ドキュメントによると、NBU ファームウェアは この範囲外の 0x7A000 にコピーされます。

間違っていたら訂正してください。

Re: KW45 First Time Programming次の定義を使用して、Bluetooth ファームウェアが KW45 にアップロードされました。

OtaPartition_t テスト_ota_partition =
{
/*開始オフセット*/ 0,\
/*サイズ*/ 0,\
/*セクターサイズ*/ 0,\
/*ページサイズ*/ 0,\
/*internal_flash*/ 真、\
/*spi_ボーレート*/ 0,\
};
Re: KW45 First Time Programming

こんにちは

ここで言及されているのと同じ問題に遭遇しました...

アプリケーションノートを実装しようとしていますが、このカスタムボードの機能を検証するためだけにデフォルトのキーを使用します。an14003では、 13ページのTest_ota_partitionがOTAPの例やその他のコードでは定義されていません。
この変数のサンプルデータを提案していただけますか?内部メモリを調べていると混乱してきます。この変数のサンプル(テスト)値を確認すると、理解が深まります。



Re: KW45 First Time Programming

このThreadを閉じます。カスタム ハードウェアにデザインエラーがあり、boot_config ピンが永続的にプルアップされていました。取り外すと問題は解決し、NBU を AN14003 の指定どおりにプログラムできるようになりました。

Re: KW45 First Time Programming

こんにちは、


ブートローダを使用して NBU イメージをロードするには、PTC2 および PTC3 [LPUART1] を使用して接続します。この接続により、ROM ブートローダは ISP モードに入り、blhost を使用して KW45 デフォルト キーと NBU イメージをロードできるようになります。デバイスをブートローダ モードにするために BOOT_CFG[PTA4] を論理ハイに引き上げる方法のオプションを用意することが推奨されています。また、ISP によって使用されるペリフェラル インスタンスを UART から USB へのコンバータに接続するオプションも用意することが推奨されています。


この情報は、 KW45リファレンス・マニュアルの第16章表74とハードウェアデザインの推奨事項のスライド52ブートローダの章に記載されています。


ISP モードに入る手順を説明していただけますか?リセット中にBOOT_CFG[PTA4]ピンからVDDに接続しましたか?

UART0 接続を UART1 に変更して ISP モードに入り、KW45 のデフォルト キーと NBU イメージ [SDK v25.09] をアップロードすることは可能でしょうか?

ここで説明した方法で ISP モードに入り、blhost が使用できるようになるかどうかをお知らせください。


また、例に使用した SDK のバージョンを共有していただけますか?また、SDKs の例を NBU イメージと一致させるために、利用可能な最新バージョン [25.09] をご使用ください。


よろしくお願いいたします。

ルイス

Re: KW45 First Time Programming

blhost が、ボードにコネクテッドした UART から USB へのコンバータを検出しません。COM8 では別のコンバーターを使用していますが、COM15 のコンバーターで発生したのと同じ問題が発生しています。

cnew01_0-1759940680248.png


Re: KW45 First Time Programming

こんにちは、


お使いのコンピューターのデバイス マネージャ ツールの [ポート (COM と LPT)] セクションで、ボードが COM ポート [UART] として正しく検出されているかどうか確認していただけませんか?これはアクティブな COM 接続を確認するのに役立ちます。画像によると、コマンドはCOM15を使用しているようですが、debug_logはCOM7を示しています。


デバイスマネージャーでは、次のようなものが表示されます。

luis_maravilla_1-1759518234464.png

 

COM7 での接続を確認した場合は、blhost コマンド [blhost -p COM7 get-property 0x01] を再試行して、成功応答接続を確認してください。

このコマンドが成功した場合は、COM15 ではなく COM7 を使用して MCUXpresso Secure Provisioning Tool の手順を再試行し、NBU イメージを更新してください。


結果をお知らせください。


よろしくお願いいたします。

ルイス

Re: KW45 First Time Programming

部品番号はこちらです: KW45B41Z83AFTBR
blhost を使用できません。

試してみると、次のようになります。

cnew01_2-1759425504764.png

LPUART0 ピンにコネクテッドされた USB から UART へのアダプターがあります。

以下のことが可能です。

cnew01_0-1759425255307.png

エラーが参照するデバッグ ログが添付されています。USBからTTLシリアルへの変換はCOM15にコネクテッドする必要があります

Re: KW45 First Time Programming

KW45 がどの OEM 州にあるか確認していただけますか?blhost ツール コマンド「blhost -p COMx get-property 0x01」を使用できますが、応答を共有していただけますか?また、KW45 の完全な部品番号を教えていただけますか?

部品番号情報は、KW45B(無線)およびKW45Z(MCU)データシートの表1で確認できます。

敬具、ルイス

Re: KW45 First Time Programming

LED 点滅の例の場合でも、プログラムは 0x14816fdc で停止します。

Re: KW45 First Time Programming

Hello

ワイヤレスや Bluetooth Low Energy の例を除いて、ボード上で任意のプログラムをフラッシュして実行できるかどうかを確認させていただけませんか? これは、NBU を必要としないプログラムを実行している場合でも、ボードが動作に失敗するかどうかを確認したいためです。

基本的な機能を確認するには、SDK で利用可能な例の 1 つをテストすることをお勧めします。


さらに、KW45B41Z-EVK 回路図と比較して、ボードのシリアル接続が正しく構成されていることを確認してください。回路図は次のリンクから参照できます: KW45B41Z 評価キットボード回路図


よろしくお願いいたします。

ルイス

Re: KW45 First Time Programming

ルイス:
SPSDK をインストールし、あなたが言及したツールを見つけました。現在の問題は、USB 用のオンボード デバイスがないため、USB から UART へのコンバーターを使用する必要があることです。ソフトウェアがボード (USB から TTL へのコンバータを備えた USB ポート上) を見つけられないため、以下のエラー メッセージが表示されます。

cnew01_0-1758913567835.png

ターミナルで nxpdebugmbox cmd -f kw45b41z8 ispmode -m 1 コマンドを使用して ISP モードに設定したことがCAN確認できます。ターミナルには設定が正常に実行されたことが示されています。


Re: KW45 First Time Programming

こんにちは、

この手順は「 MCUXpresso Secure Provisioning Tool」について言及しており、OS の最新バージョン「MCUXpresso Secure Provisioning Tool 25.06 」を使用することをお勧めします。このツールは、このリンクからダウンロードできます: MCUXpresso Secure Provisioning Tool のダウンロード、また、ツール内に新しいワークスペースを作成することもできます。

 

luis_maravilla_1-1758912500801.png


よろしくお願いします。

ルイス

Re: KW45 First Time Programming

送信されたガイドに指定されているように、MCUXpresso で [ツール] > [製造ツール] が見つかりません。さらに最新の情報はありますか?

Re: KW45 First Time Programming

ログ障害またはメッセージ エラーを共有していただけますか?

調べていただけることとして、おっしゃるとおり、AN14003 でヒューズを焼き付けるためのデフォルト キーを使用しています。SDKs の sb3 ファイルは KW45 ボードに焼き付けられたデフォルト キーに適用されるため、セクション 3.3 「ワイヤレス例の NBUの更新」で説明されている手順を使用して NBU イメージを更新していただけますか。

ヒューズの燃焼プロセスが正しく実行されたかどうかの確認を手伝っていただけますか?そうでない場合は、表示されたエラーを共有していただけますか?

ISPモードに問題なくCAN入るか確認していただけますか?

Re: KW45 First Time Programming

これは機能しませんでした。デバッグしようとすると、依然としてブート メモリ内のそのアドレスにアクセスします。他に何か調べられることはありますか?

Re: KW45 First Time Programming

PLATFORM_OtaGetOtaInternalPartitionConfig は内部パーティション構成構造を返します。内部フラッシュが選択され、値が 0 から始まることを確認するために、手動で初期化を試みることができます。

それがうまくいったかどうか教えてください。

OtaPartition_t Test_ota_partition = 
{
    /*start_offset*/ 0,\
    /*size*/         0,\
    /*sector_size*/  0,\
    /*page_size*/    0,\
    /*internal_flash*/ true,\
    /*spi_baudrate*/ 0,\
};

loader_info.partition_desc= &Test_ota_partition;

Re: KW45 First Time Programming

evk sb3 を使用して、an14003 セクション 5 (セクション 3 は省略) に従ってみました。私が行った唯一の変更は設定です
loader_info.partition_desc = PLATFORM_OtaGetOtaInternalPartitionConfig();
生成されたバイナリと SB3 をマージすると、同じエラーが発生します。何を調べることをお勧めしますか?

Re: KW45 First Time Programming

こんにちは、

test_ota_partition関数は、 fwk_platform_ota.hで定義されているOtaPartition_t構造体を利用します。AN14003 で説明されている他の手順で使用される OTA 操作を管理するために使用されます。

この構造は、オフセット、サイズ、セクターとページのサイズ、フラッシュが内部か外部かなどのパラメータを含む、Over-the-Air (OTA) 更新パーティションの特性を記述します。


アプリケーションノート AN14003 のコメントで概説されているように、Test_ota_partition が使用されている箇所では内部フラッシュを使用することが示されているSO、内部フラッシュを使用するにはパラメータを初期化し、true にする必要があります。

これは、すべてのお客様が独自に実装する必要があるものです。また、定義を含む構造体を添付しました( fwk_platform_ota.hから取得)。


typedef struct
{
    uint32_t start_offset; /*!< Offset of firmware update partition in flash device. The physical address is translated
                              by flash driver */
    uint32_t size;         /*! Size of firmware update storage expressed in bytes */
    uint32_t sector_size;  /*! Sector size of flash used for OTA, usually 4kB for external flash but varies for internal
                              flash */
    uint32_t page_size;    /*! Page size of flash device : minimal program size*/
    bool     internal_flash; /*! true if internal flash, false for SPI NOR Flash */
    uint32_t spi_baudrate;   /*! SPI baudrate concerns only external flash if flash config is not used KW45 case */
} OtaPartition_t;

よろしくお願いいたします。

ルイス

Re: KW45 First Time Programming

ルイス:
私はアプリケーションノートを実装しようとしており、このカスタム ボードの機能を検証するためだけにデフォルトのキーを使用します。an14003の13ページのTest_ota_partitionは、OTAPの例でも、提供されているコードの残りの部分でも定義されていません。この変数は何を意味するのでしょうか?

Re: KW45 First Time Programming

こんにちは、

最終目標が、SDKs の例を使用して KW45B41Z-EVK と同じカスタム KW45 ベースの PCB を使用することなのか、それともカスタム アプリケーション用なのかを確認する必要があります。

これは、チップに焼き付ける必要があるヒューズに干渉するからです。

NBU イメージを KW45 デバイスに更新するには、2 種類のキーを KW45 ヒューズに書き込む必要があります。デフォルトでは、KW45B41Z-EVK ボードに RoTKTH と SB3KDK が提供されていますが、工場出荷時のチップではヒューズ内のキーは null です。

したがって、工場チップの場合、お客様は[ AN14003 量産中にシリアルワイヤデバッグを介してアプリケーションおよび無線ファームウェア用にKW45フラッシュをプログラミングする]の指示に従って、最終目標に関連するヒューズを焼き切る必要があります。

KW45B41Z-EVKと同じ開発用ボードを使用する場合は、KW45B41Z-EVKボードの同じキー値を直接使用できます(AN14003の5.2.1章の図9に記載)。ボードを別の最終製品またはカスタム最終アプリケーションに使用する場合は、独自のキーを作成し、.xipを使用してsb3ファイルを生成することをお勧めします。最終製品専用の新しいNBUイメージのファイル

次に、NBU を更新します。KW45B41Z-EVK と同じように開発用にボードを使用する場合は、SDK フォルダー内にある同じ sb3 ファイルを使用して NBU を更新できます。別の最終製品またはカスタム エンド アプリケーションにボードを使用する場合は、AN14003 の第 4 章に記載されている手順に従って、NBU イメージをアップロードするための独自の sb3 ファイルを作成する必要があります。

このドキュメントに記載されているヒューズの焼損方法は元に戻すことができないことに注意してください。KW45 のヒューズにプログラムされたキーは変更できなくなります。したがって、ヒューズを変更する場合は注意することをお勧めします。

よろしくお願いいたします。

ルイス

Re: KW45 First Time Programmingヒューズはまだ燃えていません。KW45 は布製です。チップ上の NBU の更新はこれまで行われたことがありません。Re: KW45 First Time Programming

Hello


あなたが言及したメモリアドレスはROM-Boot [表16 KW45リファレンスマニュアル]を参照しています。KW45では、ブートROMのみがNBUフラッシュにアクセスできます。

ROMブートプロセスフローの詳細については、AN14003の図2を参照してください。


カスタム PCB にファブリックの KW45 チップを使用しているので、AN14003 で説明されているプロセスに従って、ファブリックの KW45 チップのヒューズがすでに焼損しているかどうかを確認させていただけますか?

ヒューズがすでに切れていた場合、第 5.2.1 章 [AN14003] に記載されているデフォルトの KW45B41Z-EVK キー [SBKDK および RoTKTH] が使用されたかどうかを確認できますか?または、ボードにカスタム生成されたキーを使用します。


また、確認ですが、チップ上で以前に NBU の更新を実行したことがありますか?


よろしくお願いいたします。

ルイス

Re: KW45 First Time Programming

このカスタム ボードでは、LPUART0 TX ピンと RX ピンにヘッダーを介してアクセスできることを明確にします。

Tags (1)
No ratings
Version history
Last update:
‎11-21-2025 06:56 AM
Updated by: