Multi Source Translation Content

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

Multi Source Translation Content

Discussions

Sort by:
S32K3xx FOTA示例代码 Hello, 是否有针对 S32K3xx 的 FOTA 示例代码或示例? 谢谢! 科迪 回复:S32K3xx FOTA示例代码 @VaneB  感谢您的快速回复。 回复:S32K3xx FOTA示例代码 Hi @kodyw  示例代码可以从 S 32K3 参考软件> 汽车 SW - S32K3 - OTA 演示下载。此外,还有一些与该主题相关的培训视频,请查看它们,它们可能会对您有用。 采用 S32K3 MCU 的汽车安全和无线 (OTA) 解决方案 采用成本优化的S32K1xx和S32K3xx汽车MCU实现汽车MCU安全性和OTA解决方案 B.R. VaneB
View full article
RW612 - wifi_mqtt例「download firmware failed」 FRDM-RW612 ボードがあり、MCUXpresso IDE v24.9 (現在は最新リリース) を使用して SDK (バージョン 2.16.100、ビルド 858、2024-10-02) の wifi_mqtt 例を実行しようとしています。内蔵のMCU-Linkを使用してビルドし、ダウンロードすることができます。しかし、実行すると、次のようになります。 ************************************************ MQTT クライアントの例 ************************************************ [i] Wi-Fi接続を初期化しています... [wifi_io]エラー: ファームウェアのダウンロードに失敗しました [Wi-Fi接続]エラー: imu_wifi_init失敗しました。ステータスコード -1 【WLCMの】エラー: wifi_init失敗しました。ステータスコード -1 [!]WPLの初期化に失敗しました:1 CONFIG_WIFI_IO_DEBUGを有効にすると、出力が数行増えるだけです。 関連するコード スニペットを次に示します。 imu_wifi_init() from wifi-imu.cimu_wifi_init() から wifi-imu.c 1612 行目をコメント化しても効果はありません。ボードを手動でリセットするか、プラグを抜いてから差し込むかしても、同じ結果になります。doc/readme.md を読みましたが、「app_config.h で Wi-Fi モジュールマクロを選択してください」と記載されています。(#define WIFI_ _BOARD_)」を参照してください。 これがapp_config.hの内容です。 app_config.happ_config.h 私は何か間違ったことをしていますか?これはすぐに使える例であるべきですが、なぜ失敗しているのかわかりません。感謝。 ダナ・M 製品: WiFi RW6XX Re: RW612 - wifi_mqtt例「ファームウェアのダウンロードに失敗しました」 はは、いや、それだけだった。Wi-Fiサンプルプロジェクトの readme.md にその特定のユーザーマニュアルとセクションについての言及があれば、人々にとって非常に便利です。私は長い間NXPのMCUで開発してきましたが、最初に別の手動J-Linkコマンドを使用して別のバイナリブロブをフラッシュに入れる必要があるのは新しいトリックです。 Windowsを実行している人のために、ファームウェアをプログラミングするための便利なバッチファイルがあります。component\conn_fwloader\fw_bin に配置し、必要に応じてパスを JLink.exe に編集します。 @set JLINK="C:\Program Files\SEGGER\JLink\JLink.exe" @set FIRMWARE="rw61x_sb_wifi_a2.bin" @set FLASH_ADDRESS=0x08400000 @set COMMAND_FILE="jlink_command.txt" @echo loadbin %FIRMWARE%,%FLASH_ADDRESS% > %COMMAND_FILE% @echo quit >> %COMMAND_FILE% %JLINK% -device RW612 -if SWD -speed 4000 -CommandFile %COMMAND_FILE% @pause ポインタをありがとう。 ダナ・M Re: RW612 - wifi_mqtt例「ファームウェアのダウンロードに失敗しました」 こんにちは J-Linkを使用してWi-Fiファームウェアをダウンロードしたことを確認してください。 UM11799のセクション4.1.1を確認してください(SDKバンドルで利用可能)。 よろしく Daniel.
View full article
DMAが機能しないEmios PWMをフィードする Hi, 私はEmios PWM(OPWMBモード)を使用して、DMAを供給しようとしています。スキャッター ギャザー モードで構成された 2 つの DMA バッファーを持つテスト アプリケーションをセットアップしました。最初のものが再生終了すると、2番目のものが再生されます。現在、バッファを更新していませんが、最終的なアプリケーションでは、バッファが再生されている間、他のバッファが更新され、バッファがループ再生されます。 S32 Design Studio 3.5 と S32K3XX Real-Time Drivers AUTOSAR R21-11 Version 5.0.0 を使用しています。 DMA チャネル 0 を 2 つのエレメント (各 128 エレメントの 2 つのバッファー) を持つスキャッター ギャザー モードに設定しました。ソースは int16 のバッファであるため、"source signed offset" は 2 に設定され、"transfer size" も 2 に設定されます。宛先はEmiosレジスタ(IP_EMIOS_0->CH。UC[1]。B) したがって、"Destination Signed Offset" は 0 に設定され、"Transfer Size" は 2 に設定されます。ソース バッファーには 128 個の要素があるため、"ソースの最後のアドレス調整" は -256 (128 * sizeof(int16)) に設定されます。 PWM は、DMA 要求 (フラグ イベント応答 -> EMIOS_PWM_IP_DMA_REQUEST) をトリガーするように設定されています。 S32K312EVB-Q172ボード上で動作するテストアプリケーションを添付しました。現在、バッファはループで再生されておらず、一度だけ再生されるべきですが、まったく再生されていません。オシロスコープで確認したところ、PWM のデューティ サイクルが変化しません 私の質問は、Emios PWMをDMAチャネル0にリンクするようにDMAMUXをどのように構成するかです。これをどこで設定できるかわかりません。私がやろうとしていることは可能ですか?そうでない場合は、提案する別の解決策はありますか? ご協力いただきありがとうございます! ヒューゴ Re:DMAが機能しないEmios PWMを供給する こんにちはセンレント、 いくつかのテストを行った結果、ISRは、オシロスコープのスクリーンショットとは異なり、私の側で両方のバッファが再生されたとき(~8.72ミリ秒ごと)にのみ呼び出されることがわかりました。「Enable Major Interrupt」チェックボックスがスキャッター/ギャザーチャネル0に設定されていないため、私には正常であるように思われます。設定してみると、今はちゃんと動作し、バッファもちゃんと再生されています。以下は、両方のチャネルでスキャッター/ギャザー構成に対して行った変更です。 誰かが同じことをする必要がある場合に備えて、テストアプリケーションの最終バージョンを添付しました。 ご協力いただき、誠にありがとうございます!!本当にありがたいです! よろしく ヒューゴ Re:DMAが機能しないEmios PWMを供給する こんにちはセンレント、 ご回答ありがとうございます。P_EMIOS_0->CHを書き込むためにPWM周波数で割り込みが発生するのを避けるために、そうしたいと思います。UC[1].B.それぞれに 128 個のサンプルのバッファが 2 つあるため、1 つのバッファを再生しながら 2 つ目のバッファを更新することができます。1つのバッファが再生されると、ISRを取得し、もう1つのバッファに新しいPWM値を埋めることができます。次の ISR では、新しい値が再生され、他のバッファーを更新できます。私が提供したサンプルアプリケーションでは、PWMデューティサイクル値は定数ですが、これはテスト用でした。 今は自宅で仕事をしているので、テストするオシロスコープはありませんが、明日テストします。これまでのご協力に改めて感謝します! よろしく ヒューゴ Re:DMAが機能しないEmios PWMを供給する Hi@h_bouchard なぜこれをやりたいのかわかりませんが、あなたの考えに従って構成を変更しました そして、参照比較としてPWM出力を追加しました Re:DMAが機能しないEmios PWMを供給する こんにちはセンレント、 ご回答ありがとうございます。しかし、それでは本来あるべきことがうまくいきません。マイナーループがすべてのDMA転送を完了し、128に設定されているときに割り込みを取得する必要があります(メジャーループの反復時)。したがって、PWM周期は(1 / 29296.875 KHz)* 128転送= 4.369067 ミリ秒です。あなたのスクリーンショットでは、期間が~3.413 usであることがわかります。 また、DMA はバッファーから読み取られず、最初の要素のみが読み取られて再生されます。TCDx_SADDRがインクリメントされているようには見えません。なぜかわかりますか? よろしく ヒューゴ Re:DMAが機能しないEmios PWMを供給する Hi@h_bouchard 以下のショーのように修正していただけませんか。 Re:DMAが機能しないEmios PWMを供給する こんにちはセンレント、 ご協力いただきありがとうございます。ただし、DMAは正常に機能していないようです。バッファの最初のエレメントは eMIOS チャネルの B レジスタに書き込まれますが、ソース アドレスはインクリメントされず、PWM 周期内で 128 PWM 周期ごとに 1 回割り込みが発生するはずです (2 バイト転送の場合、マイナー ループ サイズは 256 に設定されています)。これを確認するために、DMA ISR 関数にピン トグルを追加しました。 TCD レジスタと eMIOS 設定のスクリーンショットを次に示します。 そして、これがオシロスコープのスクリーンショットです。 ご覧のとおり、0.00436907秒ごとに1回しか取得しないはずの割り込みが数マイクロ秒以内に2回発生します(1 / 29296.875 KHz(PWMフレンクエンシー)* 128)。 なぜかわかりますか? よろしく ヒューゴ Re:DMAが機能しないEmios PWMを供給する Hi@h_bouchard 後で返信して申し訳ありませんが、過負荷になっています。 このオプションを無効にしてください emios0_ch1->FENを有効にしないと、DMAリクエストは生成されません。 IP_EMIOS_0->CH.UC[1].C = (IP_EMIOS_0->CH.UC[1].C & ~(eMIOS_C_FEN_MASK)) | eMIOS_C_FEN(1); (FENビットを有効にするためのAPIが必要ですが、MCAL APIは使用していません) Re:DMAが機能しないEmios PWMを供給する こんにちはセンレント、 すみません、こちらです。 よろしく ヒューゴ Re:DMAが機能しないEmios PWMを供給する Hi@h_bouchard 「テストファームウェアを最新の変更で更新しました(firmware_test2.zipを参照)。" 「firmware_test2.zip」が見えなかったので、再確認してください。 Re:DMAが機能しないEmios PWMを供給する こんにちはセンレント、 ご回答ありがとうございます。私はRMを追加し、あなたが提案したようにそれをセットアップしました: しかし、EMIOS0 CH 1からDMAリクエストを生成できません。これがDMAチャネルの設定です。どちらのエレメント ID も同じに設定されていますが、エレメント ID 0 がエレメント ID 1 にリンクし、エレメント ID 1 がエレメント ID 0 にリンクして、停止しないダブル バッファリングが作成されます。 「Enable Start」オプションは、両方のエレメントIDに対して設定されています。DMA 割り込みは、DMA チャネルが設定された直後 (Mcl_SetDmaChannelScatterGatherConfig() の呼び出し) にトリガーされます。その後、PWMが初期化されます。PWM_Init 関数をコメント アウトしても DMA 割り込みがトリガーされ、RM に設定されている EMIOS0 CH 1 ではなく、他の何かが DMA をトリガーしていることがわかります。他に何がDMAを引き起こす可能性があるか知っていますか? テストファームウェアを最新の変更で更新しました(firmware_test2.zipを参照)。 感謝 よろしく ヒューゴ Re:DMAが機能しないEmios PWMを供給する Hi@h_bouchard 私の質問は、Emios PWMをDMAチャネル0にリンクするようにDMAMUXをどのように構成するかです。 これは「RM」で行うことができます
View full article
ISP_FLASH_TRIG_0 和 ISP_SHUTTER_TRIG_0 含义 大家好, 我正在使用 NXP i.MX 8M Plus SoC 并尝试了解两个 ISP(图像信号处理器)触发信号的功能: ISP_SHUTTER_TRIG_0 ISP_FLASH_TRIG_0 回复:ISP_FLASH_TRIG_0 和 ISP_SHUTTER_TRIG_0 含义 @joanxie谢谢你的信息 回复:ISP_FLASH_TRIG_0 和 ISP_SHUTTER_TRIG_0 含义 它们是由 ISP IP 所有者定义的,为什么您需要知道这一点?SHUTTER TRIG 时钟用于 ISP 快门模块,闪光灯触发器用于闪光灯控制,这就是我在公共社区能与大家分享的全部内容
View full article
MPC5777C- e2eECCメカニズムを無効にする方法はありますか? e2eECCメカニズムはSRAMへの64ビットアクセスに最適化されていることがわかりましたが、リアルタイムシステムでは32ビットのアクセスを実行するだけで済みます。では、e2eECCメカニズムを無効にしたり、レジスタを使用してアプリケーションに最適に最適化したりする方法はありますか? よろしくお願いいたします Matheus. Re: MPC5777C- e2eECCメカニズムを無効にする方法はありますか? Hello, 私の同僚のデビッドは、すでにスレッドであなたの質問に答えることに取り組んでいます: https://community.nxp.com/t5/MPC5xxx/MPC5777C-Questions-about-th...   新しい質問で新しいスレッドを開くのは良いことです、なぜなら私たちはすべてについて同等の知識を持っているわけではなく、他の人はすでに割り当てられているスレッドであなたの更新を見ることができないからです。   よろしくお願いいたします。 ピーター   Re: MPC5777C- e2eECCメカニズムを無効にする方法はありますか? こんにちは! PRAMCは最大16ビートバースト操作を実行でき、バスの幅は64ビットであることがわかりました。キャッシュ・ライン・サイズは 32 バイトで、これは 256 ビットに相当します。256ビットのキャッシュラインのフィルとSRAMへのキャッシュラインのライトバックは、SRAMへの4つの64ビットビートバースト要求として実行されると仮定します。 そこで、L1 キャッシュにない 32 ビット データを SRAM に書き込むように要求し、キャッシュ ライン フィルを生成し、このキャッシュ ラインを SRAM に書き戻すシナリオを想像してみましょう。PRAMC は、これらの要求を 32 ビット要求と見なしますか、それとも SRAM に対する 4 つの 64 ビット ビート バースト要求と見なしますか。 この質問は、実行するすべての 32 ビット書き込みアクセスが 64 ビット未満の書き込みトランザクションと見なされるかどうか、またはライトバック キャッシュ ポリシーを使用して、このデータを複数の 64 ビット パッケージにバースト書き込むことができるかどうかを理解するために、64 ビット未満の書き込みトランザクションを実行するための追加の e2eECC 手順の必要性を排除するために質問します。 Re: MPC5777C- e2eECCメカニズムを無効にする方法はありますか? Hello, いいえ、ECCメカニズムは常に有効になっています。HWによって完全に操作されます。 よろしくお願いいたします。 ピーター
View full article
S32G BSP42に基づくM7側のマルチホストデモ Hi, SDK BSP42リリースではllceマルチホスト機能がサポートされており、この機能を確認するにはM7側のデモcan_demo_linux.elfサポートが必要であることに気づきましたが、SDK BSP42リリースマニュアルに従って手動でビルドされたイメージにはこのcan_demo_linux.elfデモがないようです。 それで、デモを見つけて機能をテストすることができる場所を確認するのを手伝ってくれませんか? ありがとうございます Zhantao Re:S32G BSP42に基づくM7側のllceマルチホストデモ Hi @chenyin_h, OK、わかりました! ありがとうございます Zhantao Re:S32G BSP42に基づくM7側のllceマルチホストデモ Hello, @hittzt  BSP42で導入されたこの新機能に関心をお寄せいただきありがとうございます。 このデモが正式なBSPリリースに含まれていないことを残念に思いますが、BSPUMで導入されたものはLLCE FDKのサンプルであり、LLCE FDKはNXPによってリリースされたプレミアムソフトウェアであり、このチャネルを通じて直接共有することはできません。 ご不便をおかけして申し訳ございません。 BR チェンイン
View full article
カスタム メモリ構成を使用する OTAP で "INT_STORAGE" が消去され、OTAP が失敗する こんにちは、私は内部メモリを使用してOTA機能に取り組んでいます。私のカスタムボードは KW45B41Z-EVKよりもメモリが小さいため、メモリセクションを再構成する必要があります。 「otap_client_att_bm」デモは3つの変更のみで使用しています。 1.内部メモリを使用するようにgAppOtaExternalStorage_cフラグを変更しました。 2.メモリ分割を変更し、より具体的には「PROGRAM_FLASH」のサイズを縮小しました。 また、OTAP ダンプ アドレス "INT_STORAGE" のサイズと開始アドレスを縮小しました。 実験1:   実験2: 私は次のSDKを使用しました。 すべての実験は評価ボードで行いました。 私のOTAアプリケーションは、デフォルトの場所、0x7a000「INT_STORAGE」(sb3ファイルを受信して保存するためのメモリセクション)を使用すると正常に動作します。ただし、「INT_STORAGE」を下位のアドレスに変更すると、OTAPプロセスによって新しく定義された「INT_STORAGE」の内容が消去され、新しいsb3イメージが消去されるようです。 これを確認するために、下の画像に示すように、"INT_STORAGE" を 0x7a000 から 0x76000 に 2 セクター変更しました。 OTAPを開始する前は、次の図に示すように、ダンプアドレス「INT_STORAGE」は空です。 次に、OTAPを開始し、「OTA_SetNewImageFlagWithOffset」機能にブレークポイントを設定します。これは、この機能に入ると画像の転送が完了するためです。この時点で、sb3イメージが新しいダンプアドレス(0x76000)に保存されていることがわかります(下の画像を参照)。 OTAPシーケンスが終了すると、つまりデバイスが再起動すると、デバイスは機能しなくなります。開始アドレスのメモリがこれを説明しています。下の画像を参照してください。新しいアプリケーションは、アドレス0xb0までのみ作成されます。 新しいダンプアドレス「INT_STORAGE」(0x76000)を見ると、それもクリアされています。 ただし、デフォルトのダンプアドレス(0x7a000)を見ると、データはまだ保持されています。 さらに、デフォルトの「INT_STORAGE」(0x7a000)の内容と、オフセット0x4000で送信したsb3ファイルの内容、つまり再起動前にアドレス0x7a000に書き込まれた内容を比較すると、完全に一致していることがわかります。 これにより、sb3 イメージの最初の 16kB または 0x4000 バイトは OTAP プロセスの再起動中に消去されるため、sb3 ファイルの処理に失敗していると私は考えています。 私は同じ実験を行いましたが、ダンプアドレスを反対方向、つまり1セクター上(0x80000)に移動しました。この実験中、OTA は成功しますが、メモリでも同じ動作が観察されます。デフォルトの「PROGRAM_FLASH」セクション、つまり 0x00 -> 0x7a000 が消去されます。次のスクリーンショットは、OTAP初期化前のデバイスのメモリを示しており、デフォルトの「INT_STORAGE」が変更されていないことを示しています。 その後、前回と同じ OTAP シーケンスを続行し、同じ場所でブレークします。この時点で、デフォルトの「INT_STORAGE」アドレスのメモリは、イメージ受信前と同じです。 ただし、新しいダンプ アドレス (0x80000) のメモリは sb3 ファイルの開始を示しています。 また、OTAP はリブート後に新しいイメージを正常に起動します。 これらの 2 つの実験から、"PROGRAM_FLASH" セクションの消去はアクティブ メモリ構成を考慮しておらず、既定のメモリ分割を厳密に考慮しているという結論に至ります。これは、メモリ分割が完全にオプションであるため、奇妙で望ましくない動作のようです。sb3イメージの一部を削除する消去操作のアドレス指定に関する修正はありますか?それとも、問題を調査するために、OTAブートローダーのソースコードを提供できますか? Re: カスタム メモリ構成を使用する OTAP は、消去された "INT_STORAGE" と OTAP Failur になります sb3ファイルの生成で問題が見つかりました。 デフォルトでは、Over The Air Programmingツールは、アドレス「0x00」からsb3ファイルに消去コマンドを「0x7a000」のサイズで設定し、「0x76000」に保存されているsb3ファイルの一部を効果的に消去します。 この行を有効にし、サイズを目的の値である「PROGRAM_FLASH」に変更すると、問題は修正されました。
View full article
FS26 S32K3 FLT_ERR_CNT Sbc_fs26_InitDevice() で 0 に減らすことはできません。 Hi, FS26をS32K311で初期化したところ、 ウォッチドッグ周期=32ms、ウォッチドッグデューティサイクル=37.5%OPEN、ウォッチドッグリカバリー=64ms、 しかし、「良いWDリフレッシュでFLT_ERR_CNTを0に減らす」WD_ERR_LIMIT、 以下のコードでu8ErrorCounter = 1を取得しました。 「良いWDリフレッシュで」という意味がわかりませんがWD_ERR_LIMITそれはWDrefreshルーチンコードを追加する必要があるということですか? あなたの答えを願っています! ケイト Re:FS26 S32K3 FLT_ERR_CNT Sbc_fs26_InitDevice()で0に減らすことはできません。 どうもありがとうございます! Re:FS26 S32K3 FLT_ERR_CNT Sbc_fs26_InitDevice()で0に減らすことはできません。 こんにちはケイト 上の写真に従ってWDをフィードしてください、あなたは試すことができ、問題ないはずです。 Re:FS26 S32K3 FLT_ERR_CNT Sbc_fs26_InitDevice()で0に減らすことはできません。 Hi guoweisun, 説明をありがとう! 写真については、オープンデューティーは50%ですが、タイムラインには3/4があります。 私の理解では、50%のデューティを設定すると、WDリフレッシュとWDリフレッシュ1の間の1/2になります。 つまり、WD refresh と WD refresh 1 の間の時間を設定する場合、関数は WindowPeriod * WindowDc である必要があります。 何よりも、何か問題がありますか? Re:FS26 S32K3 FLT_ERR_CNT Sbc_fs26_InitDevice()で0に減らすことはできません。 最後に、デバッグモードではなく通常モードを使用する必要がありますが、フィードWDについては以下を参照できます。 Re:FS26 S32K3 FLT_ERR_CNT Sbc_fs26_InitDevice()で0に減らすことはできません。 Hi guoweisun, デバッグモードにいた場合は、以下のように良いWDfreshを使用できます。 その後、SBCの初期化をOKにすることができます。 しかし、ノーマルモードでは、以下のような悪いWDfreshが出ました。 その後、SBCを初期化できません。 どのような状態を設定する必要がありますか? Re:FS26 S32K3 FLT_ERR_CNT Sbc_fs26_InitDevice()で0に減らすことはできません。 以下をご覧ください。 Re:FS26 S32K3 FLT_ERR_CNT Sbc_fs26_InitDevice()で0に減らすことはできません。 Hi guoweisun, ご辛抱いただきありがとうございます! 何がFS_WD_ANSWERを変えることができるのか、ということです。 1回だけ更新すると、FS_WD_ANSWER 0xa54d から0x4a9aに変わってしまいます。 FS_WD_ANSWER 0x4a9aから0x9535に変更できるものは何ですか? Re:FS26 S32K3 FLT_ERR_CNT Sbc_fs26_InitDevice()で0に減らすことはできません。 こんにちはケイト WDを変更するために一度だけ書いたことを理解していません。 FS_WD_TOKENレジスタの内容を定義する場合は、毎回WDの回答を計算して入力する必要があります。 Re:FS26 S32K3 FLT_ERR_CNT Sbc_fs26_InitDevice()で0に減らすことはできません。 Hi guoweisun, 「ウォッチドッグチャレンジrでノーマルモードに入るシーケンス」を使用したのは、S32K311のため。 FS_WD_ANSWERの変更タイミングは、Sbc_fs26_WdChangeTokenが使われるタイミングですよね? しかし、今では私のコードはSbc_fs26_InitFSConfigureが使用されているときにSbc_fs26_WdChangeToken使用されていました。 つまり、wdの答えを変更するのは1回だけです。 wdの答えが変わる Sbc_fs26_WdChangeTokenをどこに追加すればよいですか? Re:FS26 S32K3 FLT_ERR_CNT Sbc_fs26_InitDevice()で0に減らすことはできません。 Hi  以下を参照してください。 ウォッチドッグシンプルでノーマルモードに入るシーケンス INIT FSおよびSimple WD対応が必要 WDウィンドウを開く SET_REG:FS26:安全性:FS_WDW_DURATION:0x008B SET_REG:FS26:安全性:FS_NOT_WDW_DURATION:0xF144 1 回適切な wd refresh を送信して INIT ウィンドウを閉じます SET_REG:FS26:安全性:FS_WD_ANSWER:0x5AB2 Clean Faultエラーカウンタ SET_REG:FS26:安全性:FS_WD_ANSWER:0x5AB2 SET_REG:FS26:安全性:FS_WD_ANSWER:0x5AB2 SET_REG:FS26:安全性:FS_WD_ANSWER:0x5AB2 SET_REG:FS26:安全性:FS_WD_ANSWER:0x5AB2 SET_REG:FS26:安全性:FS_WD_ANSWER:0x5AB2 SET_REG:FS26:安全性:FS_WD_ANSWER:0x5AB2 dbg モードを終了します SET_REG:FS26:安全性:FS_STATES:0x4000 FS0BおよびFS1Bをリリース SET_REG:FS26:安全性:FS_RELEASE_FS0B_FS1B:0xB2A5 ウォッチドッグチャレンジャーでノーマルモードに入るまでのシーケンス INIT FSおよびWD Challengerが必要です WDウィンドウを開く SET_REG:FS26:安全性:FS_WDW_DURATION:0x008B SET_REG:FS26:安全性:FS_NOT_WDW_DURATION:0xF144 ZD refresh を 1 回送信して INIT ウィンドウを閉じます SET_REG:FS26:安全性:FS_WD_ANSWER:0xa54d Clean Faultエラーカウンタ SET_REG:FS26:安全性:FS_WD_ANSWER:0x4a9a SET_REG:FS26:安全性:FS_WD_ANSWER:0x9535 SET_REG:FS26:安全性:FS_WD_ANSWER:0x2a6a SET_REG:FS26:安全性:FS_WD_ANSWER:0x54d4 SET_REG:FS26:安全性:FS_WD_ANSWER:0xa9a9 SET_REG:FS26:安全性:FS_WD_ANSWER:0x5353 dbg モードを終了します SET_REG:FS26:安全性:FS_STATES:0x4000 FS0BおよびFS1Bをリリース SET_REG:FS26:安全性:FS_RELEASE_FS0B_FS1B:0xA565 Re:FS26 S32K3 FLT_ERR_CNT Sbc_fs26_InitDevice()で0に減らすことはできません。 Hi guoweisun, ご返信ありがとうございます。 WDの更新を続行するにはどうすればよいですか? タイマーを使用してカウントすると、Sbc_fs26_TimeWaitClearFault()でシャットダウンします。 それとも、ウォッチドッグデューティのオープンな例がありますか? S32DKには、無限のウォッチドッグの例しかありません。 Re:FS26 S32K3 FLT_ERR_CNT Sbc_fs26_InitDevice()で0に減らすことはできません。 Hi  あなたの質問のために: 1:それはWDrefreshルーチンコードを追加する必要があるということですか? [GWの]正しい場合は、障害エラーカウンタが0に減少するまでWDを更新し続ける必要があります。
View full article
NTM88Kxx5S 上的 PWU 的最大唤醒中断时间是多少? Hello, 我正在使用 NTM88Kxx5S 轮胎压力监测传感器,我想了解可以使用周期性唤醒 (PWU) 定时器配置的最大唤醒中断时间。 根据文档(UM11227),PWUCS0 寄存器允许将 WUT[7:0] 位配置为最高 255 的值,并且 WDIV[7:0] 位也可以设置为最高 255。根据我的计算: WCLK(WDIV = 255)的时间为:WCLK=(255+1)×0.504秒=256×0.504秒=129.024秒 RCLK(WUT = 255)导致最大时间为:RCLK=129.024秒×255=32,903.04秒 这相当于大约 9 小时 8 分钟。 我想确认这是否确实是使用 NTM88Kxx5S 上的 PWU 可以实现的最大唤醒中断时间,或者是否有任何其他因素可能会增加或限制这个时间。 非常感谢! 回复:NTM88Kxx5S 上的 PWU 的最大唤醒中断时间是多少? Hello Israel, 请参阅UM11227中的表74。WCLK 可以通过 WDIV 位设置为 0.504s 至 4.584s。129.024s 这个值太高了。 如果 WDIV 位设置为 0,则 WCLK 将为 0.504s。如果255=0xff,那么就是4.584秒。 fLFO=1000Hz WDIV=0 WCLK=(504+16*0)/1000=504/1000=0.504秒 WDIV=255 WCLK=(504+16*255)/1000=(504+4080)/1000=4584/1000=4.584秒 然后您可以选择直到下一个中断产生的RCLK唤醒时钟的数量。 您可以将其设置为从最小 0.504 秒到最大 1168.92 秒。最高值约等于19分29秒。 最诚挚的问候, Jozef
View full article
使用 C29X 加密协处理器和 Green Hills 软件保护智慧城市基础设施 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 借助物联网,市政当局可以通过互联网控制我们的基础设施,曾经物理安全的基础设施现在却容易受到攻击。使用 NXP 加密平台上的 Green Hills 加密工具包和 INTEGRITY RTOS,安全防火墙可以使我们的基础设施利用新的物联网技术。       特性 互联网连接、安全通信和 M2M 管理 运行经过认证的INTEGRITY RTOS 的密码学参考板 演示显示平板电脑连接到设备,能够在私密、防黑客的系统中改变设备的行为   特色恩智浦产品 加密协处理器|恩智浦 链接 实时操作系统 (RTOS)、嵌入式开发工具、优化编译器、IDE 工具、调试器 - Green Hills…… 利用 Green Hills Softwa 保障物联网安全 框图   智慧城市
View full article
ブレークポイントFreeRtosデバッグ こんにちは 私は有効なブレークポイントを持つことができません、またFreeRtosタスク(スレッド)私はそれらを見ることができません。4つのタスクを作成します。 もしかしたら、うまく設定されていないのかもしれません。私はFreertos s32k344の例に基づいています。 たぶん私のデバッガーはFreeRtosをサポートしていません、私のデバッガーは次のとおりです。 Re:ブレークポイントFreeRtosのデバッグ Hi, 私はS32 DS V3.4を使用しており、2つのタスクで無料のRTOSを使用しています。デバッグしようとすると、ブレークポイントが最初にヒットしますが、再開オプションをトリガーした後、ブレークポイントがヒットしません。 どなたかこのエラーを解決するための提案をお願いします。 Re:ブレークポイントFreeRtosのデバッグ ありがとうございます。ブレークポイントが解決されると、FreeRTOS デバッグ機能が機能します。 Re:ブレークポイントFreeRtosのデバッグ こんにちは@AchrafOukheir  共有画像によると、すべてのブレークポイントをスキップを選択したようです。このコマンドは、現在のビュー内のすべてのブレークポイントをスキップとしてマークします。スキップとしてマークされたブレークポイントは、実行を一時停止しません。 B.R. VaneB
View full article
K32L2BのセグメントLCDで障害検出を有効にする はじめに: K32L2BのSLCDは、BPからFPへの短絡を検出する能力を持っていますが、2つの隣接するBPまたはFP間の短絡を検出するための直接的な方法はないため、LCDの機能を活用してBPからFPへの短絡を検出し、2つの隣接するBPの短絡と2つの隣接するFPの短絡を検出します。 プロジェクトの説明: 添付のデモプロジェクトには、次の 2 つの関数があります。 ボイドfault_diffplane(ボイド);・FPからBPへの短絡>検出 ボイドfault_sameplane(ボイド);->隣接するBPのショートとFPのショートを検出する 最初のステップは、すべてのLCDピン番号でアレイを初期化し、すべてのBPをアレイにグループ化し、すべてのFPピンを同じアレイ内にまとめることです。これは、両方の機能に障害検出ロジックを簡単に実装するために行われます。 例えば。LCD_PINS[12]={14,15,59,60,20,24,26,27,40,42,43,44};開始4はBPで、残りはFPです BPからFPへの障害の検出は、fault_diffplane()関数を使用して簡単に行われますが、fault_sameplane()関数の場合は、ピンが実際にFPまたはBPであるかどうかに関係なく、最初にLCDピンを代替のBPおよびFPピンとして再初期化する必要があります。 注: fault_diffplane() は任意の FP と BP の間の短絡を検出できますが、fault_sameplane() は LCD_PINS 配列内の隣接する FP と隣接する BP の間の短絡のみを検出できます。 また、fault_sameplane()は、アプリケーションでの実際の構成に関係なく、代替のBPおよびFPとしてLCDピンを再初期化する必要があるため、ユーザーはこの問題を回避するために、アプリケーションでこの機能(コードの開始にある可能性があります)を慎重に使用する必要があります。 上記の障害検出関数のいずれかが呼び出されると、障害カウントが配列に格納されます fault_count_difP fault_count_samP[] ユーザーは、fault_count_difP[] および fault_count_samP[] 配列のそれぞれの LCP ピン インデックスでカウントが減少するのを確認できます。 以下は、LCDピン59(BP)がピン43(FP)と短絡した場合のスクリーンショットです ピン59(BP)がピン60(BP)と短絡した場合 FRDM K32L2B開発ボードLCDでテストされたリファレンスプロジェクトが添付されています。 ありがとうございます マドゥール
View full article
プログラムを使用してRT1052を制御し、スリープモードに入る NXPテクニカルサポート様: こんにちは!RT1052の場合、NVIC_SystemReset()コマンドを使って強制的にリセットできます。では、強制的にスリープ状態にするコマンドはありますか?       Best Regards. Re: プログラムを使用して RT1052 を制御し、スリープモードに入る ありがとうございます!フィードバックに基づいてテストしてみます。 Re: プログラムを使用して RT1052 を制御し、スリープモードに入る Hi @FromCH0 , 同様の API があり、対応するルーチンを提供しています。詳細については、evkbimxrt1050_power_mode_switch_bm_rt10xx を参照してください。 Have a great day, Kan ------------------------------------------------------------------------------- Note: - If this post answers your question, please click the "Mark Correct" button. Thank you! - We are following threads for 7 weeks after the last post, later replies are ignored Please open a new thread and refer to the closed one, if you have a related question at a later point in time. -------------------------------------------------------------------------------
View full article
キーがゼロかどうかを確認します Hi, NVMに保存されているキーがゼロかどうかを確認したいです。可能ですか?キーの形式は BIN_OCTET です。 Crypto_Hse_KeyElementGet APIを使用して試してみましたが、応答としてHSE_SRV_RSP_INVALID_ADDRが返ってきます。 これに関するどんな助けも大歓迎です! Re:キーがゼロかどうかを確認します こんにちは @shravani  私の知る限り、SHEキーを使用しています。SHEキーはエクスポートできず(SHE RAMキーのみが例外です)、SHEキーのKeyInfoを取得することもできません。この場合、SHEキーが空かどうかを確認する唯一のオプションは、そのようなキーを使用してみることです。それでも空の場合は、CRYPTO_E_KEY_EMPTYエラーが発生します。 よろしくお願いします。 Lukas
View full article
FREEMASTER 3.1 value error(MBDT) 私はS32K3XX freemasterの例を使用しています(ターゲットボードはS32K312です) MBDTのfreemasterの例は、マイクロコントローラーに正常にコンパイルできます ただし、変数の値は変更されません 写真はFreeMasterの設定です。 何が問題になっているのか確認するのを手伝ってください。 Re: FREEMASTER 3.1 value error(MBDT) 返信ありがとうございます、シリアルポート.@を使用してfreemasterで成功を収めましたIrina_Costachescu Re: FREEMASTER 3.1 value error(MBDT) Hello @jackie_YYY  FreeMASTERプロジェクト内では、実行中のターゲットアプリケーションに接続するためにシリアル通信を使用する必要があります。 以下の記事(リンク)をご確認ください。S32K3 の MBDT で FreeMASTER を使用する方法、ブロック機能の詳細、動作モード、およびプロジェクト内の変数を検査する方法のデモ例について説明します。 これが役立つかどうか教えてください、 Irina
View full article
LPC55s36 上的 VBUS 禁用 Hi 我正在使用lpc55s36。在我的电路图中,vbus 引脚未连接并保持开路。问题是,当我通过 USB 连接时,我无法在笔记本电脑的端口列表中检测到我的嵌入式设备。 有没有什么办法可以删除与 VBUS 检测相关的代码,以便我可以访问笔记本电脑上的端口并通过 PUTTY 与我的嵌入式设备通信。 我浏览了lpcxpresso55s36usb_dev_cdc_vcom_lite_bm 的 SDK 示例代码。 回复:LPC55s36 上的 VBUS 禁用 Hello @madhubanti  感谢您的回复。 没有代码可供检查,因为它不受代码控制。这是硬件行为。 BR 爱丽丝 回复:LPC55s36 上的 VBUS 禁用 感谢您的澄清!EVK 板上的电路设计使得您不能忽略 PIO1_31 引脚。 但是如果我们想将 vcom_cdc_lite_bm 的 sdk 示例代码用作我们设备代码库中的 usb 驱动程序代码,那么在固件端在哪里进行此检查?要查找哪个文件或变量? 到目前为止,我还没有在固件方面找到。对于我们正在构建的设备,它使用LPC55s36 MCU。因此,如果我们能够知道 vbus 检测发生在哪里,我们就可以在设备固件中定制该部分代码。 期待您的回复! 最好的 马杜班蒂 回复:LPC55s36 上的 VBUS 禁用 Hello @madhubanti  对于设备的 0A 版本,不会检查 VBUS 电压。因此,USB_VBUS 可以保持断开状态。然而,此检测功能是在 1B 设备中实现的。在 1B 设备中,PIO1_31 应连接到 VBUS。您可以参考LPCXpresso5536-evb的原理图。在此原理图上,对于 1B 版本设备,连接 JP46 的引脚 1 - 2。   BR 爱丽丝   回复:LPC55s36 上的 VBUS 禁用 我的电路有以下连接 如您所见,USB0_3V3 引脚已连接到电压。但PIO1_31引脚即USB_VBUS引脚一直保持断开状态。由于 VDD 引脚始终连接到电源,此设置是否不起作用? 我们还为另一台设备实现了相同的电路,但它使用 zephyr os,并且无需连接 PIO1_31 引脚即可工作。 您能否向我们解释一下为什么这对于 SDK 代码的裸机实现不起作用,但在使用 zephyr 实现时却可以起作用。 回复:LPC55s36 上的 VBUS 禁用 Hello @madhubanti  抱歉,没有代码可以删除 VBUS 检测。设备需要检查VBUS电压。 BR 爱丽丝 回复:LPC55s36 上的 VBUS 禁用 我也正在使用 USBFS 引脚。
View full article
使用 S12ZVM 实现 BLDC 六步控制速度调节 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 抽象的 本文介绍了六步 BLDC 电机控制应用的基本扩展程序,重点关注S12ZVM MCU设备。 抽象的 简介 BLDC六步控制 速度缩放 时序 换乘期 速度计算 应用说明链接 计算精度 实际应用 相关资源 简介 根据有关 BLDC 速度计算的各种问题,我决定编写此文档以使规模计算清晰明了。如果有需要更详细解释的地方,请将其作为参考和评论。 BLDC六步控制 本文档与 BLDC 电机的六步控制相关,以梯形反电动势形电压而闻名。关键是使用两相直流电流产生扭矩,同时第三相未连接。当转子移动时,相位被切换(换向)以保持定子磁通领先于转子磁通。许多应用笔记(例如AN4718或AN4704)中详细描述了这些原理。换向瞬间可由霍尔传感器或反电动势信号监测(所谓的“无传感器”)驱动。对于磁场定向控制,请参阅AN5135或AN5327中讨论的 PMSM 控制。 速度缩放 与基于霍尔传感器的控制相比,详细描述无传感器算法更有益。然而,方法几乎相同。 时序 电机速度是根据非活动相上的 BEMF 电压的零交叉检测来计算的。这些零交叉事件时间是通过在 ADC 例程检测到零交叉时(或发生霍尔传感器换向事件时)捕获计时器(TIM0CNT)寄存器来测量的。这意味着,时间由定时器 TIM0 设置进行缩放。没有关于如何设置计时器的一般指导。但是,应将计时器设置为覆盖两次换向之间合理数量的刻度(这与高速下的速度精度相关),并且应该能够覆盖非常低的速度下彼此“远离”的两个换向,而不会发生计时器溢出。 一个好的做法是: 两次换向之间至少有 100 个定时器刻度 两次换向之间最大 16 位 = 65535 个刻度 可以使用霍尔传感器事件来遵循相同的方法。 换乘期 在应用中,零交叉(或霍尔传感器)周期由periodZC_F_PhA、periodZC_R_PhA等或periodZC[6]捕获,定义为 tU16 (16 位无符号)。如上所述,使用计时器来捕获周期。 在电动机理论中,我们认识到“电”速度和“机械”速度。“电”速度与旋转场相关。机械转速与转子转速直接相关。这两个速度之间的关系由极点或极对的数量决定: (1)机械转速=电气转速/极对数=电气转速/(极数/2) 在下文中,我们将讨论三相BLDC 电机。 速度计算 要计算电机的一次“电”旋转 = 6 次换向(或 6 次过零),应将所有 6 个换向时间周期相加。对于这种情况,将生成的“ period6ZC ”定义为 tU32 (或无符号长整型),以防止所有六个 16 位零交叉周期相加时发生溢出。 如果将所有 6 个零交叉周期相加,您将获得每次“电”旋转的计时器滴答数。这意味着,如果电机是 2 极电机(= 1 极对电机),那么它将是转子每次“机械”旋转的时间。在这种情况下: (2)机械转速=电气转速; 只需将其乘以极对数,即可轻松获得高极电机每次机械旋转的时间。 (3)机械每转一圈的时间 =周期6ZC *极对数  每6个零交叉的周期“ period6ZC ”在控制环路内计算,通常在1毫秒定时器中断程序中计算。由于速度(转子频率)只是一个反转的时间周期,我们可以使用以下代码行来计算实际速度: (4)实际速度 = 速度计算数字 / 周期6ZC; 现在,如何读取它的刻度以及SPEED_CALC_NUMERATOR是什么?我们假设“ actualSpeed ”是 tFrac32 (1.31 格式的有符号 32 位数字)。这意味着最大小数部分的数字是 1.0,用整数值 2^31 = 2,147,483,648 来表示。为什么要使用 32 位数字而不是 16 位数字是显而易见的 - 因为period6ZC是 32 位值,所以结果应该具有相同的分辨率或宽度。 任务是找到正确的SPEED_CALC_NUMERATOR 。让我们考虑用于捕获零交叉事件时间的 S12ZVM 设备和计时器 TIM0。预分频器设置为 16(TIM0TSCR2_PR = 4),总线时钟为 12.5MHz,定时器滴答为 12.5MHz / 16 = 781.25 kHz,时间尺度为1.28us 。 假设电机的最大机械转速为10,000 RPM ,电机有6 个极对。这将给我们 (5)(10,000 RPM)/(60秒)= 166.67每秒转数, (6) 166.67*(6极对数)= 每秒 1000 电转,因此 (7) 1000 *(6 次换向)= 每秒 6000 次换向/零交叉。 (8)这样一来,每次换向所需的时间为 1/6000 = 166.67us。 (9)最大速度下每个周期的刻度 = 166.67 us / 1.28us = 130.28 使用我们的1.28us计时器,我们可以以最大速度捕捉最多130 个周期。 对于电机的最大转速10,000 RPM ,我们可以简单地将 (4) 中所示的“实际速度”计算重新排列到 (13) 和 (14) 中,假设: (10)   actualSpeed = FRAC32(1.0) = 2,147,483,648 (11)周期6ZC = 6 个周期 * 130 = 780(向下舍入,因为该值仍然是整数) 对于S12ZVM设备,使用16位(tFrac16)计算比32位更方便。因此,我们可以利用缩放来达到 使用 32 位实际速度来防止溢出 只需正确缩放即可使用与 16 位数字相同的 32 位数字 得益于 16 位计算,它足够好,同时又足够快 诀窍就隐藏在演员阵容中 实际速度 从 Frac32 到 Frac16: (12)速度误差 = 所需速度 - (tFrac16)实际速度; 这意味着,只有较低的 15 位被视为速度(假设实际速度永远不会超过 32767,因此第 16 个“符号”位将始终为零)。对于最大速度和SPEED_CALC_NUMERATOR确定,“ actualSpeed ”应该是 32767(这是有符号 tFrac16 的范围)。公式(4)可用于计算SPEED_CALC_NUMERATOR ,如下所示: (13) 32767 = 速度计算计算器 / 780 (14)速度计算计算器 = 780 * 32,767 = 25,558,260 因此 #定义速度计算数值 25558260 使用公式 (4),最小周期 6ZC的速度为: (15)实际速度 = 速度计算分子 / 周期6ZC = 25,558,260 / 780 = 32,767; 用低 15 位屏蔽该值并将其转换为 tFrac16 将得到 1.0。由于速度刻度已经由电机的最大转速10,000 RPM决定,因此我们可以通过以下方式简单计算出实际速度: (16)   RealScaleSpeedRPM = (tFrac16)actualSpeed / 32,767 * MAX_SPEED = (tFrac16)actualSpeed / 32,767 * 10,000. 应用说明链接 在应用说明 AN4704 中,有几个用于控制应用程序的宏常量。这些常数应该使用以下定义来计算,并借助SPEED_SCALE (速度真实尺度的浮点表示)。 #定义速度尺度 10000.0// 用于正确计算以下内容: #定义REQUIRED_RUN_SPEED FRAC16(2000.0/SPEED_SCALE)// 2000 转/分 #define MIN_SPEED FRAC16(500.0/SPEED_SCALE) // 向下按钮控制的最小速度为 500 rpm(应至少为电机额定速度的 10%) #定义 MAX_SPEED FRAC16(5000.0/SPEED_SCALE)// 向上按钮控制的最大速度为 5 krpm #define SPEED_STEP FRAC16(100.0/SPEED_SCALE) // 100 rpm,按钮控制的上/下步进   如果应用程序使用 FreeMASTER 进行显示或控制,则也应在 FreeMASTER 项目中更新比例。AN4704 的新 FM 尺度为: 变量名称 可变的监视设置 所需速度 实数类型变换:线性:a = 速度尺度 = 10,000;b = 0 actualSpeed 有符号整数,大小 = 4 显示为:真实 位字段组成:字(0xffff) 实数类型变换:线性:a = 速度尺度 / 32767.0= 0.3051851;b = 0 计算精度 现在,让我们来看看速度分辨率(或准确度): 在全速下,如果一个周期改变 1 个刻度,那么你将得到 周期6ZC 最大速度从 780 增加到 781,差异为 12.8041 RPM。越高 速度尺度 越大,误差越大。如果假设是所有 6 个时期都发生变化(因此 周期6ZC 将从 780 变为 786),最终的速度变化将是 76.336 RPM。这使得速度误差为 10,000 RPM +- 76,即 0.76%。 就准确性而言,将最大速度(或 SPEED_SCALE)设置为应用程序的最大速度是有意义的,而不是从电机数据表中复制一些较高的数字。嗯,应用程序的最大速度不应该超过电机的最大速度,但如果速度等级不必要地高,那就没有帮助了。 实际应用 在实际应用中,计算出的速度( actualSpeed )反映了周期6ZC的所有偏差和变化。因此,对period6ZC进行某种过滤是一种很好的做法,可以通过平均或使用低通滤波器来实现。如果丢失一个或多个零交叉,则应该有一种机制来处理和检测电机是否停转(机械速度与换向失去锁定)或者是否仅仅是对信号的干扰。失速检测或霍尔信号故障/损坏检测是高质量应用面临的挑战之一。 相关资源 S12ZVM MCU - NXP S12ZVM 主页 AutoMCDevKits - NXP汽车电机控制开发解决方案 AN4718 - 使用 S12ZVM 的三相 BLDC 霍尔传感器应用 AN4704 -带 S12 MagniV MC9S12ZVM 的三相无传感器 BLDC 电机控制套件 AN5201 - 在 S12ZVM128 设备中集成 LIN 驱动器和 BLDC 无传感器电机控制器 AN5330 - S12ZVM 设备迁移指南 概述 回复:使用 S12ZVM 实现 BLDC 六步控制速度调节 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 非常清楚。在我读到这篇论文之前,我认为 SPEED_CALC_NUMERATOR 是一个“神奇数字”。
View full article
NFCコックピット - USB-VCOM経由で64バイト以上を転送 Hello, NFC Cockpit v8.1.0.0 を CLEV6630BM 開発ボードで使用しています。いくつかのタグで遊んでいると、非常に長いデータブロックの問題に遭遇しました。確認したところ、VCOMは複数のチャンクに分割する前に、最大64バイトしかサポートしていないようです。64 バイトを超えると、致命的なエラーが発生します。 デバッグ中は、UcBalPCTestApp.exeツールを使用してUSB-VCOMをキャッチしました。このケースに添付されているログを見つけてください。複数のデータチャンク(>64バイト)を送信する必要がある場合、すぐに失敗することがわかります。 この制限を回避する方法はありますか? ご支援いただきありがとうございます! NFCフロントエンド・ソリューション NFCリーダー・ライブラリ 日時:NFCコックピット - USB-VCOMを介して64バイト以上を転送 こんにちは@EduardoZamora  前回の投稿は忘れてください。私はいくつかのJLinkハードウェアを見つけ、CLEV6630BM FWをNFCCockpitインストールディレクトリ(firmware / Secondary_RC663 / BootLoader_And_Nfcrdlib_SimplifiedAPI_EMVCo_Secondary.bin)で提案された最新のものに更新することができました。デフォルトのFWがVCOMドライバーを適切に処理しないとは思いませんでした... ポインタをありがとう! 日時:NFCコックピット - USB-VCOMを介して64バイト以上を転送 とにかくファームウェアを更新してみます。 日時:NFCコックピット - USB-VCOMを介して64バイト以上を転送 こんにちは@EduardoZamora  迅速なフィードバックをありがとう。私たちはそれについてソフトウェア開発を行っていないので、LPC FWには触れていません。ガイドラインのようにドライバーをインストールしましたが、NFCockpitは、使用しているコマンドに関係なく、一般的に正常に動作しています。また、念のためドライバーを再インストールしようとしましたが、最新バージョンのNFCCockpit8.1.0.0を使用しています。 このシナリオでは、Type A PICCを使用して次の手順を実行します。 レイヤー3のアクティブ化-> OK レイヤー4をアクティブにする-> OK NDEFファイルの選択(データ交換00、A4、00、0C、02、E104)-> OK X バイトの読み取り (データ交換 00 B0 0000 XX) これは 0x36 バイトまで OK です これは 0x37 バイトで失敗します NFCCockpitのログファイルを確認すると、UcBalPCTestApp.exeツールを使用しているときと同じエラーが表示されます:0x37バイトから、何らかの理由でパケットが64バイトのパケットのチャンクに分割されているようです。 2つのログを比較すると、「ADBプロセスを読み込めません。adbが環境変数の一部であるかどうかを確認します」例外? ありがとうございます! 日時:NFCコックピット - USB-VCOMを介して64バイト以上を転送 Hello @Yann_O お元気でいらっしゃいますか。 確認のために、 評価ボードのクイックスタートガイド、第3章に記載されている手順に従ってCLRC663しましたか。 NXP NFC Cockpit User Guide, Section 3.3 for the NFC Cockpit FW programming(NFCコックピットFWプログラミング用)また、NFCコックピットのバージョンに応じた最新のドライバーバージョンを使用してください。 NFC Cockpitでのテストではどのような手順を踏んでいますか?これは、私の側でシナリオを再現しようとするのに役立ちます。 マイコンのBAL - PCテストアプリケーションをテストしましたが、エラーはスローされませんでした。この投稿に添付されているテストから取得したログを見つけてください。 よろしく エドゥアルド。
View full article
无法让计算机连接到 LPCXpresso54628 板 我在连接 NPX 板时遇到了问题。下面是我连接电路板的方式。 我尝试运行 LPCScrypt,但一直出现此错误。 还尝试通过 MCUXpresso IDE 激活调试器,但没有任何结果。 这是我在设备管理器中看到的。 回复:无法让计算机连接到LPCXpresso54628板 看来问题出在 USB 上。谢谢! 回复:无法让计算机连接到LPCXpresso54628板 是的,我已经安装了LPCXpresso Link2 USB驱动程序包。 卸载设备并更新驱动程序、使用不同的 PC、使用不同的 USB 线都无法解决问题。 回复:无法让计算机连接到LPCXpresso54628板 > 还尝试通过 MCUXpresso IDE 激活调试器,但什么也没有出现。 这意味着您在安装 LPCXpresso 时遇到了 LPC-Link 驱动程序的安装。这是正确的吗? > 这是我在设备管理器中看到的。 看起来好像缺少驱动程序。您是否尝试过从“设备管理器”中安装/重新安装驱动程序? 您是否尝试过其他 USB 端口(在同一台电脑上)? 您尝试过其他电脑吗? 回复:无法让计算机连接到LPCXpresso54628板 Hi @Goku  如果您插入 USB 电缆,它将为电路板供电并且 LED 将闪烁。然而,当我看到图片时,你的 LED 并没有闪烁。因此请尝试更换 USB 电缆和新电路板。如果USB线没问题的话,那应该是板子坏了。 希望这对你有帮助。 BR 悬挂
View full article
IMX6QでのCairoグラフィックライブラリの使用 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> このドキュメントでは、OpenGL ES 2.0 または OpenVG を使用してハードウェア アクセラレーションを使用して画面上に何かを描画するための Cairo のセットアップについて説明します。 紹介:   ご存知のように、私が言及したライブラリ(OpenGL、ES、OpenVG)を使用して、imx6qのハードウェアアクセラレーションでフレームバッファに描画できますが、これらのライブラリを使用すると少し扱いが難しくなります。つまり、OpenGLまたはOpenVGを使用するのは一種の難しい仕事ですが、なぜですか?私はそれを明確にするためにここに例を持ってきましょう、あなたが姿勢航空機のシンボルを描きたいと想像してください、このシンボルは、それが含む完全な姿勢シンボルのように見えるように描画される要素のいくつかの必要があります。 1-サークル 2ライン張り 3-Text 4-トライアングル 5-いくつかのカスタム形状、たとえば、水平方向に描画される2本のLのような線 あなたがOpenGLと特にOpenGL ESの経験を持っている場合は、円、線、三角形などを描くことは本当に難しい仕事ではないことに気づくでしょう、もちろん、OpenGLでこれらのプリミティブを描画するには、コードのわずか3行でそれらを描画できるCairo APIとは対照的に、より多くのコード行が必要ですが、最も難しい仕事は、OpenGLで テキストを 描画することですあなたが対処しなければならない単純なテキストを描画したいときFreeTypeのような追加のライブラリがあります,...グリフ機能をフェッチし、その後、ビットマップテクスチャにテキストを描画するためにアトラスアプローチを使用して、アプリで文字が必要な場合は、テクスチャ内の前に保存されたグリフの文字の位置にアクセスできる、フェッチして使用することができます、また、この場合は2つの特定のOpenGL ESシェーダーで作業する必要があります。 ですから、OpenGLやOpenVGを使って図形を描くのは、本当に使いこなせる人や困りごとが多ければ大丈夫だと思います。:D個人的には、高レベルのAPIを使用してから、アプリケーションの他の側面に焦点を当てることを好みます。 カイロのコンパイル:   このドキュメントはCairoを構成またはコンパイルすることを意図したものではなく、OpenGL ESバックエンドを使用してYOCTO、Buildroot、またはその他の組み込みLinuxディストリビューションビルダーを使用して簡単に構成およびコンパイルできると確信しています(YOCTOとBuildrootは 組み込みLinuxディストリビューションではありません。カスタム1つを作成できます)手動でコンパイルすることもできます。 設定するには: ./configure --prefix=/home/super/Desktop/ROOTFS/MY_ROOTFS/usr --host=${CROSS_COMPILE} CFLAGS="-I/home/super/Desktop/ROOTFS/MY_ROOTFS/usr/include/ -DLINUX -DEGL_API_FB" LIBS="-L/home/super/Desktop/ROOTFS/MY_ROOTFS/usr/lib/ -lz" --enable-xlib=no --enable-egl --enable-glesv2 コンパイルするには: 作成する ちなみに、あなたはあなた自身のボードに適した構成を見つけることができます。カイロには多くのオプションがあります。 カイロの表面を作る方法:   Cairoで図形を描画した経験がある場合は、cairo_t*タイプからAPIが動作し、画面上に形状が表示される描画機能へのサーフェスが必要であることをご存知でしょう。 OpenGL ES を使用する Cairo サーフェスを作成するには、EGL (EGL は Khronos レンダリング API (OpenGL、OpenGL ES、OpenVG など) と基礎となるネイティブ プラットフォーム ウィンドウ システムとの間のインターフェイスです)[1] を正しく設定し、そこから Cairo サーフェスを作成する必要があります。                  EGLint config_attributes[] =                 { EGL_RENDERABLE_TYPE、                                                EGL_OPENGL_ES2_BIT,                                                EGL_RED_SIZE, 8, EGL_GREEN_SIZE、8、 EGL_BLUE_SIZE、8、 EGL_ALPHA_SIZE,EGL_DONT_CARE,                                                EGL_SURFACE_TYPE,EGL_WINDOW_BIT, EGL_DEPTH_SIZE、16、 EGL_SAMPLES、4、 EGL_NONE                 };   OpenVGでOpenGL ES v 2.0を変更する場合は、EGL_RENDERABLE_TYPE(つまりEGL_OPENGL_ES2_BIT)のパラメータをEGL_OPENVG_BITに変更するだけで十分です。 次のコードが図1の画面に表示されます。   図1:IMX6QでのCairoによる簡単な描画 //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   //======================================================================== // Name        : testCairo.cpp // Author      : Ali Sarlak // Version     : 1.0 // Copyright   : GPL // Description : EGL+Cairo GLIB //========================================================================   #include #include #include < EGL/egl.h> #include < EGL/eglext.h> #include < EGL/eglplatform.h> #include < カイロ/cairo-gl.h> #include < EGL/eglvivante.h> #include     #define DISPLAY_WIDTH 640 #define DISPLAY_HEIGHT 480 名前空間 std を使用する 。   int main() { printf("開始\n");     printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");     EGLContext eglContext; EGLSurface eglSurface; EGLブーリーン結果B;       /* ディスプレイハンドルを取得し、EGL を初期化します */ EGLintメジャー、 マイナー;     EGLDisplay eglDisplay = eglGetDisplay(EGL_DEFAULT_DISPLAY);   resultB = eglInitialize(eglDisplay, &major , &minor );       EGLint config_attributes[] =     { EGL_RENDERABLE_TYPE、             EGL_OPENGL_ES2_BIT,             EGL_RED_SIZE, 8, EGL_GREEN_SIZE、8、 EGL_BLUE_SIZE、8、 EGL_ALPHA_SIZE,EGL_DONT_CARE,             EGL_SURFACE_TYPE,EGL_WINDOW_BIT, EGL_DEPTH_SIZE、16、 EGL_SAMPLES,      4,4 EGL_NONE     };   EGLint numberConfigs = 0;     EGLConfig* matchingConfigs=NULL;       if (EGL_FALSE             == eglChooseConfig(eglDisplay, config_attributes, NULL, 0, &numberConfigs))     { printf("eglChooseConfig EROR\n");     }     if (numberConfigs == 0)     { printf("eglChooseConfig EROR\n");     }   printf("構成の数 = %d\n", numberConfigs);     /* 一致する設定のリストを保存するためのスペースを確保します... */ matchingConfigs = (EGLConfig*) malloc(numberConfigs * sizeof(EGLConfig));       if (EGL_FALSE == eglChooseConfig(eglDisplay, config_attributes, matchingConfigs, numberConfigs, &numberConfigs))     { printf("eglChooseConfig EROR\n");         if(matchingConfigs!=NULL)         { フリー(matchingConfigs); matchingConfigs=NULLです。         }         return -1;     }       printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");       EGLint display_attributes[] =     { EGL_WIDTH、 DISPLAY_WIDTH、 EGL_HEIGHT、 DISPLAY_HEIGHT、 EGL_NONE };       /*ウィンドウ属性*/ EGLint window_attribList[] =     { EGL_NONE     };       EGLNativeDisplayType eglNativeDisplayType = fbGetDisplay(0);       EGLNativeWindowType eglNativeWindow = fbCreateWindow(eglNativeDisplayType,             0、             0、 DISPLAY_WIDTH、 DISPLAY_HEIGHT);   eglSurface = eglCreateWindowSurface(eglDisplay,matchingConfigs[0],eglNativeWindow,window_attribList);       if (eglSurface == EGL_NO_SURFACE)     { printf("eglSurface = %x\n", eglGetError());     }       const EGLint attribListCtx[] =     {             EGL_KHR_create_contextが必要です EGL_CONTEXT_CLIENT_VERSION、2、 EGL_NONE     };       eglContext = eglCreateContext(eglDisplay, matchingConfigs[0], EGL_NO_CONTEXT,  attribListCtx);      //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~     if (eglContext == EGL_NO_CONTEXT)     {         printf("eglContext = %x\n", eglGetError());         return -1;     }       cairo_device_t* cdt = cairo_egl_device_create(eglDisplay, eglContext);       eglMakeCurrent(eglDisplay, eglSurface, eglSurface, eglContext);   cairo_surface_t *surface = cairo_gl_surface_create_for_egl(cdt, eglSurface, DISPLAY_WIDTH,DISPLAY_HEIGHT);         cairo_t *cr = nullptr; cr = cairo_create(表面);     if(!cr)     { printf("間違ったcairo_t!\n");         return -1;     }     //*********************************************************************************************     for (int index = 0; index < 1; ++index) {         cairo_set_source_rgb (cr, 0, 0, 0);           cairo_move_to (cr, 0, 0); cairo_line_to(CR、200、200);         cairo_move_to (cr, 200, 0); cairo_line_to (cr, 0, 200); cairo_set_line_width (cr, 1); cairo_stroke (CR);           cairo_rectangle (cr, 0, 0, 100,100);         cairo_set_source_rgba (cr, 1, 0, 0, 0.8); cairo_fill (CR);          cairo_rectangle (cr, 0, 100, 100, 100);         cairo_set_source_rgba (cr, 0, 1, 0, 0.60); cairo_fill (CR);          cairo_rectangle (cr, 100, 0, 100, 100);         cairo_set_source_rgba (cr, 0, 0, 1, 0.40); cairo_fill (CR);          cairo_rectangle (cr, 100, 100, 100, 100);         cairo_set_source_rgba (cr, 1, 1, 0, 0.20); cairo_fill (CR); cairo_surface_flush(表面);         eglSwapBuffers(eglDisplay,eglSurface);     }       カイロが表面から写真を作成できることを確認するために、PNGファイルを作成しました cairo_status_t s = cairo_surface_write_to_png(表面, "surface.png");     カイロで作った写真です【OK】 cairo_destroy(cr);      if (CAIRO_STATUS_SUCCESS == s)     { printf("ステータス = OK \n");     }     else     { printf("ステータス = エラー %d>\n" , s);     }      if(matchingConfigs!=NULL)     { フリー(matchingConfigs); matchingConfigs=NULLです。     }   cairo_surface_destroy(表面); printf("終了!\n");     return 0; } GPUを使用しているアプリケーションを確認する方法:   あなたが見ているなら https://community.nxp.com/thread/324670グラフィカルアプリケーションをプロファイリングして、GPUを使用しているかどうかを調査したり、vAnalyzerでパフォーマンスを測定してアプリケーションを分析したりできます。 私が言及したリンクによると、ubootで galcore.gpuProfiler = 1 を設定し、 /sys/module/galcore/parameters/gpuProfiler ファイルを確認する(cat、vi、nanoなどでファイルを読み取ります)出力が1の場合、すべてのことは正しい方法で行われます最後のステップは、いくつかの環境変数をエクスポートすることです。   export VIV_PROFILE=1 エクスポート VP_OUTPUT=sample.vpd export VP_FRAME_NUM=1000 export VP_SYNC_MODE=1   VIV_PROFILE[0,1,2,3], VP_OUTPUT[any string], VP_FRAME_NUM[1,N], VP_SYNC_MODE[0,1]   注:VIV_PROFILE[0]vProfilerを無効にする(デフォルト)、VIV_PROFILE[1]vProfilerを有効にする、VIV_PROFILE[2]アプリケーション呼び出しによる制御、VIV_PROFILE[3]vProfilerでプロファイルするフレームをVP_FRAME_STARTとVP_FRAME_ENDで制御できます。     アプリケーションがGPUを使用している場合、smaple.vpdファイルが作成され、そうでない場合はvpdファイルがありません。 [1] - https://www.khronos.org/egl 全般
View full article