Multi Source Translation Content

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

Multi Source Translation Content

Discussions

Sort by:
ST7701ドライバ Hello ST7701 ディスプレイ コントローラと通信しようとしています。 いくつか例はありますか?可能であれば、共有していただける方はいらっしゃいますか? i.MX RT1170 ボードを使用しています。SDK のサンプルには、HX8394、RM68191、および RM68200 ディスプレイ コントローラ用のドライバが見つかりました。ST7701 に似たものを見つけたいと思います。 誰か助けてくれませんか? ありがとうございます。 フランチェスコ・ソリート Re: ST7701 drivers こんにちは、 @SolitoFrancescoさん、 現時点では、 ST7701 ディスプレイ コントローラ用の SDK にはドライバ サポートがありません。このコントローラとの統合は手動で行う必要があります。 ディスプレイ コントローラとの互換性を保つには、LCDIF モジュールの解像度値、同期信号、クロック周波数を調整することが重要です。EVK を使用する場合は、SDK ドライバを使用して次の関数の値を調整できます。 BOARD_InitLcdifClock() BOARD_InitMipiDsiClock() BOARD_SetMipiDsiConfig () これらの関数は同期値のマクロとともにすべて「display_support.c」で参照されています。このファイルは、ディスプレイ コントローラ のサポートを調整するときに重点的に扱うファイルになります。   また、次のアプリケーションノートも必ずご覧ください。LCDディスプレイのセットアップ方法やその他の役立つ考慮事項について、さらに詳しく説明しています。i.MX RT eLCDIF RGBモードの使用例(NXP.com)   BR、 エドウィン。 Re: ST7701 drivers おはよう ディスプレイ製造元とドライバ製造元から受け取った指示に従って、ご指摘のファイルを変更しました。MIPI を介してドライバ レジスタに書き込み、読み取ることができます。オシロスコープで差動 MIPI 波形を見ることはできますが (「構成」フェーズ後も)、ディスプレイにはまだ何も表示されません。私は「mipi_dsi_compiance_test」というNXP SDK のデモ例を使用しています。 もっと助けていただけますか? ありがとうございます。 フランチェスコ・ソリート Re: ST7701 drivers こんにちは、 @SolitoFrancescoさん、 実行中にコードをデバッグできましたか?何かエラーメッセージが印刷されていますか?データ ラインにはどのようなデータ パターンが表示されますか?これらのパターンは、readme.md ファイルに記載されている予想されるパターンと一致していますか? BR、 エドウィン。 Re: ST7701 drivers こんにちは。サンプル プロジェクトは、ディスプレイ DEMO_PANEL_RK055MHD091 で正常に動作します。次に、最終的なアプリケーションで使用するパネルに切り替えました。解像度が異なる (480x800) ため、定義を調整しました。その後、ドライバを変更しました(fsl .hおよび.cファイル) を読み込み、ディスプレイと通信できるようになりました。レジスタへの書き込みと読み出しが可能です。しかし、ディスプレイの構成後、サンプル プロジェクトがイメージ バッファーの送信を開始すると、オシロ スコープ上で MIPI 波形が表示されますが、ディスプレイには何も表示されません。専用コマンドを使用してすべてのピクセルをオンにしてみたところ、画面が完全に白く表示されるため、ディスプレイは壊れていないと考えられます。私が理解できないのは、問題がディスプレイの構成にあるか、またはサンプル プロジェクトで適応させる必要がある他の何かにあるかということです。ディスプレイメーカーとコントローラメーカーに問い合わせましたが、各方面からの可能な限りの支援が必要です。ディスプレイに搭載されているコントローラー用の fsl ドライバーを入手することは可能ですか?Sitronix ST7701 です。私にお知らせください。ありがとう、そしてよろしく。フランチェスコ Re: ST7701 drivers こんにちは、 私も同じ状況です (同じドライバと解像度、ベースは開発ボードで動作したテスト例です)。コントローラーは構成されており、ステータスも読み取ることができ (エラーなし)、DSI ラインにデータも存在しますが、画面には何も表示されません。 dsi_dpi_config の videoMode を kDSI_DpiBurst から他のモードに変更しても効果はありません。 画面がビデオストリームを受け入れていないようですね? Re: ST7701 drivers こんにちは、フランチェスコさん。 ディスプレイを動作させることができました。 DisplayTFT_SetMipiDsiConfig 関数に次の行を追加します。 dsiConfig.enableNonContinuousHsClk= 真; たとえば、次の行の後: DSI_GetDefaultConfig(&dsiConfig); dsiConfig.numLanes = DISPLAY_MIPI_DSI_LANE_NUM; dsiConfig.autoInsertEoTp= 真; ディスプレイ IC が正しく構成されており (必要な場合は、画面の構成を共有できます)、ディスプレイ クロック (私の設定は約 26 MHz) も正しく構成されていることを前提としています。 よろしくお願いいたします、クリス Re: ST7701 drivers こんにちは、リノ ご提案ありがとうございます。私のアプリケーションでも動作するようです。素晴らしい。おそらく何かをより適切に設定する必要があると思いますが、今は画面に画像が表示されるようになりました。 可能であれば、設定を共有していただければ、私の設定と比較して、より改善することができます。何か違うことが分かったらここでお知らせします。 改めて感謝申し上げます。enableNonContinuousHsClk 設定はどこで思いつきましたか? 敬具、 フランチェスコ Re: ST7701 drivers こんにちは、リノ 私の設定とあなたの設定を比較しています(最後にここにアップロードします)。 その間、私が気づいたのは、私が使用しているのは ST7701 ですが、おそらくあなたは ST7701S (末尾に S が付く) を使用しているということです。似ていると思いますが、よく分かりません。 気づいたことは、初期化をまったく行わなくてもディスプレイが機能するようになったことです。起動は「ゆっくり」で明るさも低いですが、動作します。次に、0xE0 から 0xEF までの設定 (ST7701 データシートに記載されていない) のみを送信すると、ディスプレイが非常に高速に起動し、正しい色で表示されます。その他の設定はすべて必要ないようです(奇妙に聞こえます)。 連絡を取り合いましょう。終わったら比較を共有します。 改めてお礼申し上げます。 敬具、 フランチェスコ Re: ST7701 drivers こんにちは、 ファイルは SDK 内の他のドライバに基づいて作成されました。 遅延を短いものに変更することもできます。 今朝、設定手順を確認し、ディスプレイメーカーの推奨に従っていくつか変更してみましたが、それ以上の改善が見られなかったため、DSI 設定自体を詳しく調べ始めました。クロックは正常で、ビデオ モード (バースト モード) も正常であることはわかっているので、残されたオプションは DSI 自体のオプションのみでした。 以下の内容(およびドキュメントの他の部分)を理解します。 https://docs.nxp.com/bundle/AN13573/page/topics/連続クロックと非連続クロック.html BR、クリス Re: ST7701 drivers こんにちは、リノ お約束どおり、あなたと私の設定の比較を添付ファイルでご覧ください。詳しくは触れませんでしたが、私や皆さんが相違点の中に何か興味深いものを見つけたら、ぜひここに書き続けましょう。 敬具 フランチェスコ Re: ST7701 drivers こんにちは、フランチェスコさん。 遅れてごめんなさい。 あなたの比較を見て、多くの違いに気づきました。それは、一部は画面自体によるものです(私たちはガラス/タッチ/スクリーンのサンドイッチを使用しており、それに対する構成修正がありました - 少なくともサプライヤーはそう説明していました) 🙂 ) が表示されます。 電源制御などの一部の設定は起動には必要ありませんが、品質の向上(コントラスト/ガンマ設定)に必要です。 面白いのは、それを実行しているかどうかに関係なく、この「Sunlight Readable Enhancement」と呼ばれる機能全体が必須だということです。このデータに基づいて、最適なパラメータを自動的に設定します。これらが間違っているか欠落している場合(デフォルト値)、自動的に設定されるまでに時間がかかります -> そのため、お気づきのとおり、起動が遅くなります。 ドキュメント自体はかなりイライラさせるもので、多くのコマンドはドキュメント化されておらず、それらなしでは画面を完全に起動することが不可能な場合がよくあります。これはこのモデルに限ったことではなく、他のいくつかの Sitronix モデルでも同様の現象が発生しました。 敬具、 クリス
View full article
S32K148锁死 S32K148 MCU用J-LINK错刷Flash,再用J-LINK链接发生如下错误,JLINK unsecured已没用,怎么解决? Connecting ... - Connecting via USB to probe/ programmer device 0 - Probe/ Programmer firmware: J-Link V9 compiled Dec 13 2022 11:14:50 - Probe/ Programmer S/N: 25994751 - Device "S32K148" selected. - Target interface speed: 50 kHz (Fixed) - VTarget = 3.301V - ConfigTargetSettings() start - ConfigTargetSettings() end - Took 305us - InitTarget() start - SWD selected. Executing JTAG -> SWD switching sequence. - Protection bytes in flash at addr. 0x400 - 0x40F indicate that readout protection is set. For debugger connection the device needs to be unsecured. Note: Unsecuring will trigger a mass erase of the internal flash. - Executing default behavior previously saved in the registry. - Device will be unsecured now. - Timeout while unsecuring device. Erase never stops. - InitTarget() end - Took 2.17s - Found SW-DP with ID 0x2BA01477 - DPv0 detected - CoreSight SoC-400 or earlier - Scanning AP map to find all available APs - AP[2]: Stopped AP scan as end of AP map has been reached - AP[0]: AHB-AP (IDR: 0x24770011, ADDR: 0x00000000) - AP[1]: JTAG-AP (IDR: 0x001C0000, ADDR: 0x01000000) - Iterating through AP map to find AHB-AP to use - AP[0]: Skipped. Could not read CPUID register - AP[1]: Skipped. Not an AHB-AP - Attach to CPU failed. Executing connect under reset. Re: S32K148锁死 Hi@dongkuili 首先不见得保证能恢复,因为加密段被你写入了错误持续值,可能并不支持mass erase擦除 可以阅读该文档6. S32K1xx系列MCU芯片锁死(lockup)现象 https://mp.weixin.qq.com/s?__biz=MzI0MDk0ODcxMw==&mid=2247485716&idx=1&sn=979631aa2385a4e3c7651ee75ee252b4&chksm=e9124d92de65c484f1cfec7de451958cfd5cf818c46a4f71a7d3dd8a522af229c5a18aad58ff&scene=21#wechat_redirect Re: S32K148锁死 Hi@dongkuili 这和你使用什么软件没关系,按照文章中说的,直接去测试reset管脚的波形来判断是否可能被恢复,不能的话就不要再浪费你的时间了。 Re: S32K148锁死 谢谢回复 仔细看了链接文档和芯片手册,多次尝试还是无法通过mass erase恢复,想用S32FlashTool_v2.3.4,但不支持S32K148,有支持S32K148的S32FlashTool吗?
View full article
spi 示例代码 你好,我正在研究恩智浦提供的名为 "Spi_Transfer_S32K312 "项目中的 spi 示例代码。我想知道代码中每个函数的含义,能否告诉我头文件的位置? mingimin_0-1766466097344.png Re: spi example code 你好@mingimin 头文件位于项目目录中的 RTD → include 下。 此外,我建议您阅读 S32K3/S32M27x SPI 驱动器集成手册和 RTD 随附的用户手册。这些文件提供了有关驱动程序的详细信息,包括其限制、硬件和软件要求、使用指南和配置说明。它们有助于深入了解驾驶员的行为和能力。 例如,您可以在以下路径找到这些资源: C:\NXP\S32DS.3.5\S32DS\software\PlatformSDK_S32K3\RTD\Spi_TS_T40D34M50I0R0\doc 请注意,具体路径可能因 S32DS 版本和安装目录而异。 BR、VaneB
View full article
LPC1768+SSP0+GPDMAに問題あり SSP0 で DMACR を開いて BUF にデータを送信した後、DMACR がゼロにリセットされ、SSP0DR は変化し続けますが、BUF データは変更されないのはなぜでしょうか。割り込み中に DMACR を再度開こうとしましたが、BUF データにはまだ変化がありませんでした。 コード構成は次のとおりです。 #定義 SPI_RX_LEN 5386 外部U8 SPIRXBUF[SPI_RX_LEN]; void DMAInit_SPI_RX(U8 *destAddr, U32 len) { U32 パート1 = (長さ > 4095) ?4095 : 長さ; U32 パート2 = (長さ > 4095) ?(len - 4095) : 0;// 拆分传输(单道最大4095字节)   LPC_SC->PCONP |= (1 << 29); // 使用GPDMA時間钟 LPC_GPDMA->DMACConfig |= (1 << 0);//GPDMA を使用する LPC_GPDMA->DMACIntTCClear |= 0x01; // 清除道0传输完了标志 LPC_GPDMA->DMACIntErrClr |= 0x01; // 清除道0错误标志   // 链表项1:传输part1字节 lli[0].srcAddr= (U32)&LPC_SSP0->DR; // ソース:SPI0データ寄存器 lli[0].宛先アドレス= (U32)destAddr; // 目的:缓冲区開始 lli[0].コントロール= (part1 & 0x0FFF) // 传输大小(字节数) | (0x00 << 12) // 源突発大小 | (0x00 << 15) // 目的発行大小 | (0x00 << 18) //ソースデータ宽度 | (0x00 << 21) //目的データ宽度 | (0x00 << 26) //源地址不变(外设寄存器) | (0x01 << 27) //目的地址自增 | (1U << 31); // 使用中断   // 链表项2:传输part2字节(若必要) (パート2 > 0)の場合 { lli[0].nextLLI = (U32)&lli[1]; // 指向链表项2 lli[1].srcAddr= (U32)&LPC_SSP0->DR; lli[1].destAddr= (U32)(destAddr +part1); // 缓冲区偏移 lli[1].コントロール= (part2 & 0x0FFF) // 传输大小(字节数) | (0x00 << 12) // 源突発大小 | (0x00 << 15) // 目的発行大小 | (0x00 << 18) //ソースデータ宽度 | (0x00 << 21) //目的データ宽度 | (0x00 << 26) //源地址不变(外设寄存器) | (0x01 << 27) //目的地址自增 | (1U << 31); // 使用中断 lli[1].nextLLI= 0; // 结束链表 } そうでない場合、 { lli[0].nextLLI = 0; }   // 配置DMA通道0 LPC_GPDMACH0->DMACCConfig = 0; LPC_GPDMACH0->DMACCLLI = (U32)&lli[0]; // 链表開始地址 LPC_GPDMACH0->DMACCSrcAddr = lli[0].srcAddr;// ソース地址(SPI0 DR) LPC_GPDMACH0->DMACCDestAddr = lli[0].destAddr;// 目的地址 LPC_GPDMACH0->DMACCコントロール = lli[0].control;// 制御文字 LPC_GPDMACH0->DMACCConfig = (0x01 << 15) //中断错误 | (0x01 << 14) //終端计数中断 | (0x02 << 11) // 传输種類:外设到内存 | (0x00 << 6) //目的外设:保存器 | (0x01 << 1) // ソース外设:SSP0 RX(参考手册) | (0x01 << 0); // 道使い能   GPDMAEnabe(); }     void DMA_IRQHandler(void) { if(LPC_GPDMA->DMACIntTCStat & 0x01) // 通道0転送完了 { LPC_GPDMA->DMACIntTCClear = 0x01; // 清除标志 //SSPSlave_Init(); // RUN_LAMP_GLITTER; // LPC_SSP0->DMACR |= (1 << 0); // LPC_GPDMACH0->DMACCConfig |= (0x01 << 0); LPC_GPDMA->DMACConfig |= (1 << 0);//GPDMA を使用する 時間++; } if(LPC_GPDMA->DMACIntErrStat & 0x01) // 通道0错误 { LPC_GPDMA->DMACIntErrClr = 0x01; // 清除标志 } } void SSPSlave_Init(void) { LPC_SC->PCONP |= (1 << 21); /* 打开SSP電源 */ /************************************************************************ * 初期化SSPの通信方式、データ長は8bit、フレーム形式はSPI、SCKは低能率に設定されています。 * データは SCK の 2 番目の時間にサンプリングされ、ビットレートが設定されます。 **********************************************************************/ LPC_SSP0->CR0 = (0x00 << 😎 | /* SCR 設定 SPI ビット速度 */ (0x01 << 7) | /* CPHA 時間钟输出相位 */ (0x00 << 6) | /* CPOL 時間钟出力性 */ (0x00 << 4) | /* FRF 帧格式 00=SPI,01=SSI, */ /* 10=マイクロワイヤー,11=保留 */ (0x07 << 0); /* DSS データ長度,0000-0010= 保持 */ /* 0011=4 位、0111=8 位、1111=16 位*/ LPC_SSP0->CPSR = 2; /* 時間钟分周波数寄存器*/   LPC_SSP0->CR1 = (0x00 << 3) | /* SOD 从机输出禁能,0=允许 */ (0x01 << 2) | /* MS 主从选择,1=从机 */ (0x01 << 1) | /* SSE SSP 使用能,1=使用能 */ (0x00 << 0); /* LBM 回写モード */   sysTimeDlay(5); LPC_SSP0->DMACR |= (1 << 0);   } LPC17xx Re: LPC1768+SSP0+GPDMA some problem こんにちは@Lee_Lee DMA は「空の SSP FIFO を読み取っている」と思いますが、アクセス幅が正しくないため、データがメモリに正しく書き込まれていません。 現在何を設定していますか (0x00<<18)//ソースデータ宽度 (0x00<<21)//目的データ宽度 しかし、LPC では次のようになります。 SSPのDRレジスタは16ビットのレジスタである。 Harry_Zhang_0-1765963833177.png 8 ビット SPI モードを使用している場合でも、SSP0->DR への DMA アクセスは 16 ビット アクセスである必要があります。 DMAは実際にはメモリにデータを正しく書き込んでいない その結果、BUF は変更されません。 SO、ソースと des の幅を 16 に変更してみると CAN と思います。 BR ハリー
View full article
The RT speech recognition system based on VIT to obtain weather information 1.  Abstract NXP EdgeReady solution can use RT106/5 S/L/A/F to achieve speech recognition, but the relevant support software libraries for the RT4-bit series are limited to the S/L/A/F series, if you want to use normal RT chips, how to achieve speech recognition functions? NXP officially launched the VIT software package in the SDK, which can support RT1060, RT1160, RT1170, RT600, RT500 to achieve SDK-based speech recognition functions. For the acquisition of weather information, usually customer can connect with a third-party platform or the cloud weather API, using http client method to access directly, the current weather API platforms, you can register it, then call the API directly, so you can use the RT SDK lwip socket client method to call the corresponding weather API, to achieve real-time specific geographical location weather forecast data.     This article will use MIMXRT1060-EVK to implement customer-defined wake-up word(WW) and voice recognition word recognition(VC) based on SDK VIT lib, and LWIP socket client to achieve real-time weather information acquisition in Shanghai, then print it to the terminal, this article mainly use the print to share the weather information, for the sound broadcasts, it also add the simple method to broadcast the fixed sound with mp3 audio data, but for the freely sound broadcast, it may need to use real-time TTS function, which is not added now.     The system block diagram of this document is as follows:   1.jpg Fig 1 System Block diagram The VIT custom wake-up word of this system is "小恩小恩", and after waking up, one of the following recognition words can be recognized: ”开灯”("Turn on the lights"),“关灯”("Turn off the lights"),”今天天气”("Today's weather"),“明天天气”("Tomorrow's Weather"),“后天天气”("The day after tomorrow's weather"). Turn on the light or Turn off the lights , that is to control  the external LED red light on the EVK board. ”今天天气” gets today’s weather forecast, it is in the following format:                     "date": "2022-05-27",                     "week": "5",                     "dayweather": "阴",                     "nightweather": "阴",                     "daytemp": "28",                     "nighttemp": "21",                     "daywind": "东南",                     "nightwind": "东南",                     "daypower": "≤3",                     "nightpower": "≤3" “明天天气”,“后天天气” are the same format, but it is 1-2 days after the date of today. To get the weather data, the MIMXRT1060-EVK board needs to connect the network to achieve the acquisition of the Gaode Map(restapi.amap.com) Weather API data. 2.  Related preparations 2.1 Weather API Platform     At present, there are many third-party platforms that can obtain weather on the Internet for Chinese, such as: Baidu Intelligent Cloud, Baidu Map API, Huawei cloud platform, Juhe weather, Gaode Map API, and so on. This article tried several platform, the test results found: Baidu intelligent cloud, the number of daily free calls is small, the need for real-time synthesis of AK, SK, cumbersome to call; Baidu Map API needs to upload ID card information; Several others have a similar situation. In the end, the Gaode Map API with convenient registration, many daily calls and relatively full feedback weather data information was selected.     Here, we mainly talk about the Gaode Map API usage, the link is: https://lbs.amap.com/api/webservice/guide/api/weatherinfo Create the account and the API key, then add the relevant parameters to implement the call of the weather API, the application for API Key is as follows: 2.jpg Fig 2 Gaode map API key The following diagram shows the call volume:   3.jpg Fig 3 Gaode Map API call volume This is the API calling format:   4.jpg Fig 4 Weather API calling parameters So, the full Gaode Map API link should like this: https://restapi.amap.com/v3/weather/weatherInfo?key=xxxxxxx&city=xxx&extensions=all&output=JSON If need to test the Shanghai weather, city code is 310000. 2.2 Postman test weather API     Postman is an interface testing tool, when doing interface testing, Postman is equivalent to a client, it can simulate various HTTP requests initiated by users, send the request data to the server, obtain the corresponding response results, and verify whether the result data in the response matches the expected value. Postman download link: https://www.postman.com/   After finding the proper weather API platform and the calling link, use the postman do the http GET operation to capture the weather data, refer to the Fig 4, fill the related parameters to the postman: 5.jpg Fig 5 Postman call weather API Send Get command, we can find the weather information in the position 7, the complete all information is: {     "status": "1",     "count": "1",     "info": "OK",     "infocode": "10000",     "forecasts": [         {             "city": "上海市",             "adcode": "310000",             "province": "上海",             "reporttime": "2022-05-27 17:34:12",             "casts": [                 {                     "date": "2022-05-27",                     "week": "5",                     "dayweather": "阴",                     "nightweather": "阴",                     "daytemp": "28",                     "nighttemp": "21",                     "daywind": "东南",                     "nightwind": "东南",                     "daypower": "≤3",                     "nightpower": "≤3"                 },                 {                     "date": "2022-05-28",                     "week": "6",                     "dayweather": "小雨",                     "nightweather": "中雨",                     "daytemp": "24",                     "nighttemp": "20",                     "daywind": "东南",                     "nightwind": "东南",                     "daypower": "≤3",                     "nightpower": "≤3"                 },                 {                     "date": "2022-05-29",                     "week": "7",                     "dayweather": "大雨",                     "nightweather": "小雨",                     "daytemp": "23",                     "nighttemp": "20",                     "daywind": "南",                     "nightwind": "南",                     "daypower": "≤3",                     "nightpower": "≤3"                 },                 {                     "date": "2022-05-30",                     "week": "1",                     "dayweather": "小雨",                     "nightweather": "晴",                     "daytemp": "27",                     "nighttemp": "20",                     "daywind": "北",                     "nightwind": "北",                     "daypower": "≤3",                     "nightpower": "≤3"                 }             ]         }     ] } We can see, it can capture the continuous 4 days information, with this information, we can get the weather information easily. From the postman, we also can see the Get code, like this: 6.jpg Fig 6 postman API HTTP code     With this API which already passed the testing, it can capture the complete weather information, here, we can consider adding the working http API to the MIMXRT1060-EVK code.    2.3 VIT custom commands     From the maestro code of the RT1060 SDK, we can know that the SDK already supports the VIT library, what is VIT?     VIT's full name: Voice Intelligent Technology, the library provides voice recognition services designed to wake up and recognize specific commands, control IOT, and the smart home. 7.jpg Fig 7 VIT system block diagram     In NXP RT1060 SDK code, the generated wake word and command word have been provided and placed in the VIT_Model.h file. If in the customer's project, how to customize the wake word and command word? With the NXP's efforts, we have made a web page form for customers to choose their own command, and then generate the corresponding VIT_Model.h file for code to call. VIT command word generation web page is: https://vit.nxp.com/#/home     Login the NXP account, choose the RT chip partn umber, wakeup word, voice command. Please note, the current supported RT chip is: RT1060,RT1160,RT1170,RT600,RT500 The following is the example for generating wakeup word and voice command:   8.jpg Fig 8 Custom VIT configuration 9.jpg Fig 9 generated result Download the generated model, you can get VIT_Model_cn.h, open to see the command word information and related model data stored in the const PL_MEM_ALIGN (PL_UINT8 VIT_Model_cn[], VIT_MODEL_ALIGN_BYTES) array, the command word information is as follows: WakeWord supported : " 小恩 小恩 " Voice Commands supported     Cmd_Id : Cmd_Name       0    : UNKNOWN       1    : 开灯       2    : 关灯       3    : 今天 天气       4    : 明天 天气       5    : 后天 天气 Use the RT1060 SDK maestro_record demo to test this custom command result:   10.jpg Fig 10 Custom Wakeup word and voice command test From the test result, we can see, both the wakeup word and voice command is detected. 3 Software code 3.1 LWIP socket client code capture weather API From chapter 2.2, we have been able to obtain the weather API and through testing, we can successfully achieve weather acquisition, so we need to add relevant commands in combination with the needs of our own system. For the acquisition of the weather API, the lwip code based on the RT1060 SDK is in the form of socket client. The relevant code is as follows: #define PORT 80 #define IP_ADDR "59.82.9.133" uint8_t get_weather[]= "GET /v3/weather/weatherInfo?key=xxx&city=310000&extensions=all&output=JSON HTTP/1.1\r\nHost: restapi.amap.com\r\n\r\n\r\n\r\n"; if (sys_thread_new("weather_main", weathermain_thread, NULL, HTTPD_STACKSIZE, HTTPD_PRIORITY) == NULL) LWIP_ASSERT("main(): Task creation failed.", 0); static void weathermain_thread(void *arg) { static struct netif netif; ip4_addr_t netif_ipaddr, netif_netmask, netif_gw; ethernetif_config_t enet_config = { .phyHandle = &phyHandle, .macAddress = configMAC_ADDR, }; LWIP_UNUSED_ARG(arg); mdioHandle.resource.csrClock_Hz = EXAMPLE_CLOCK_FREQ; IP4_ADDR(&netif_ipaddr, configIP_ADDR0, configIP_ADDR1, configIP_ADDR2, configIP_ADDR3); IP4_ADDR(&netif_netmask, configNET_MASK0, configNET_MASK1, configNET_MASK2, configNET_MASK3); IP4_ADDR(&netif_gw, configGW_ADDR0, configGW_ADDR1, configGW_ADDR2, configGW_ADDR3); tcpip_init(NULL, NULL); netifapi_netif_add(&netif, &netif_ipaddr, &netif_netmask, &netif_gw, &enet_config, EXAMPLE_NETIF_INIT_FN, tcpip_input); netifapi_netif_set_default(&netif); netifapi_netif_set_up(&netif); PRINTF("\r\n************************************************\r\n"); PRINTF(" TCP client example\r\n"); PRINTF("************************************************\r\n"); PRINTF(" IPv4 Address : %u.%u.%u.%u\r\n", ((u8_t *)&netif_ipaddr)[0], ((u8_t *)&netif_ipaddr)[1], ((u8_t *)&netif_ipaddr)[2], ((u8_t *)&netif_ipaddr)[3]); PRINTF(" IPv4 Subnet mask : %u.%u.%u.%u\r\n", ((u8_t *)&netif_netmask)[0], ((u8_t *)&netif_netmask)[1], ((u8_t *)&netif_netmask)[2], ((u8_t *)&netif_netmask)[3]); PRINTF(" IPv4 Gateway : %u.%u.%u.%u\r\n", ((u8_t *)&netif_gw)[0], ((u8_t *)&netif_gw)[1], ((u8_t *)&netif_gw)[2], ((u8_t *)&netif_gw)[3]); PRINTF("************************************************\r\n"); sys_thread_new("weather", weather_thread, NULL, DEFAULT_THREAD_STACKSIZE, DEFAULT_THREAD_PRIO); vTaskDelete(NULL); } static void weather_thread(void *arg) { int sock = -1,rece; struct sockaddr_in client_addr; char* host_ip; ip4_addr_t dns_ip; err_t err; uint32_t *pSDRAM= pvPortMalloc(BUF_LEN);// host_ip = HOST_NAME; PRINTF("host name : %s , host_ip : %s\r\n",HOST_NAME,host_ip); while(1) { sock = socket(AF_INET, SOCK_STREAM, 0); if (sock < 0) { PRINTF("Socket error\n"); vTaskDelay(10); continue; } client_addr.sin_family = AF_INET; client_addr.sin_port = htons(PORT); client_addr.sin_addr.s_addr = inet_addr(host_ip); memset(&(client_addr.sin_zero), 0, sizeof(client_addr.sin_zero)); if (connect(sock, (struct sockaddr *)&client_addr, sizeof(struct sockaddr)) == -1) { PRINTF("Connect failed!\n"); closesocket(sock); vTaskDelay(10); continue; } PRINTF("Connect to server successful!\r\n"); write(sock,get_weather,sizeof(get_weather)); while (1) { rece = recv(sock, (uint8_t*)pSDRAM, BUF_LEN, 0);//BUF_LEN if (rece <= 0) break; memcpy(weather_data.weather_info, pSDRAM,1500);//max 1457 } Weather_process(); memset(pSDRAM,0,BUF_LEN); closesocket(sock); vTaskDelay(10000); } }  3.2 VIT detect customer command code    Put the generated VIT_Model_cn.h to the maestro_record folder path:   vit\RT1060_CortexM7\Lib    The specific wake word and voice command related code can be viewed from the code vit_pro.c, mainly involving function is: int VIT_Execute(void *arg, void *inputBuffer, int size) The code is modified as follows, mainly to record the wake and wake word number, for specific function control, the command directly controlled here is the local "开灯:turn on the light", "关灯:turn off the light" command, as for the weather command needs to call the socket client API, so in the main lwip call area combined with the command word recognition number to call: if (VIT_DetectionResults == VIT_WW_DETECTED) { PRINTF(" - WakeWord detected \r\n"); weather_data.ww_flag = 1; //kerry } else if (VIT_DetectionResults == VIT_VC_DETECTED) { // Retrieve id of the Voice Command detected // String of the Command can also be retrieved (when WW and CMDs strings are integrated in Model) VIT_Status = VIT_GetVoiceCommandFound(VITHandle, &VoiceCommand); if (VIT_Status != VIT_SUCCESS) { PRINTF("VIT_GetVoiceCommandFound error: %d\r\n", VIT_Status); return VIT_Status; // will stop processing VIT and go directly to MEM free } else { PRINTF(" - Voice Command detected %d", VoiceCommand.Cmd_Id); weather_data.vc_index = VoiceCommand.Cmd_Id;//kerry 1:ledon 2:ledoff 3:today weather 4:tomorrow weather 5:aftertomorrow weather if(weather_data.vc_index == 1)//1 { GPIO_PinWrite(GPIO1, 3, 1U); //pull high PRINTF(" led on!\r\n"); } else if(weather_data.vc_index == 2)//2 { GPIO_PinWrite(GPIO1, 3, 0U); //pull low PRINTF(" led off!\r\n"); } // Retrieve CMD Name: OPTIONAL // Check first if CMD string is present if (VoiceCommand.pCmd_Name != PL_NULL) { PRINTF(" %s\r\n", VoiceCommand.pCmd_Name); } else { PRINTF("\r\n"); } } }  3.3 Voice recognize weather information    In the weather_thread while, check the wakeup word and voice command, if meet the requirement, then create the socket connection, write the API and capture the weather data.   The related code is: while(1) { //add the command request, only cmd == weather flag, then call it. if((weather_data.ww_flag == 1)) { if(weather_data.vc_index >= 3) { // create connection //write API and read API Weather_process(); } memset(weather_data.weather_info, 0, sizeof(weather_data.weather_info)); weather_data.ww_flag = 0; weather_data.vc_index = 0; } vTaskDelay(10000); } void Weather_process(void) { char * datap, *datap1; datap = strstr((char*)weather_data.weather_info,"date"); if(datap != NULL) { memcpy(today_weather, datap,184);//max 1457 if(weather_data.vc_index == 3) { PRINTF("\r\n*******************today weather***********************************\n\r"); PRINTF("%s\r\n",today_weather); return; } } else return; datap1 = strstr(datap+4,"date"); if(datap1 != NULL) { memcpy(tomorr_weather, datap1,184);//max 1457 if(weather_data.vc_index == 4) { PRINTF("\r\n*******************tomorrow weather*******************************\n\r"); PRINTF("%s\r\n",tomorr_weather); return; } } else return; datap = strstr(datap1+4,"date"); if(datap != NULL) { memcpy(aftertom_weather, datap,184);//max 1457 if(weather_data.vc_index == 5) { PRINTF("\r\n*******************after tomorrow weather**************************\n\r"); PRINTF("%s\r\n",aftertom_weather); } } else return; }   Function Weather_process is used to refer to the voice recognized weather number to get the related date’s weather, and printf it. 4 Test result  the test result video: (view in My Videos) Print the log results as shown in Figure 11, after testing, you can see that the wakeup word and voice command can be successfully recognized, in the recognition of word sequence numbers 3, 4, 5 is the weather acquisition, you can successfully call the lwip socket client API, successfully obtain weather information and printf it.   11.jpg Fig 11 system test print result  evkmimxrt1060_maestro_weather_backup.zip is the project without sound playback, weather information will print to the terminal! 5 Meet issues conclusion 5.1 LWIP failed to get weather    When creating the code, call the postman provided http code: GET /v3/weather/weatherInfo?key=8f777fc7d867908eebbad7f96a13af10& city=310000& extensions=all& output=JSON HTTP/1.1 Host: restapi.amap.com    Add it to the socket API function: uint8_t get_weather[]= "GET /v3/weather/weatherInfo?key=xxx&city=310000&extensions=all&output=JSON HTTP/1.1\r\nHost: restapi.amap.com\r\n\r\n\r\n\r\n";    The test result is:   12.jpg Fig 12 socket weather API return issues     We can see, server connection is OK, http also return back the data, but it report the parameter issues, after checking, we use the postman C code, and put it to the get_weather: uint8_t get_weather[]= "GET /v3/weather/weatherInfo?key=xxx&city=310000&extensions=all&output=JSON HTTP/1.1\r\nHost: restapi.amap.com\r\n\r\n\r\n\r\n"; Then, it can capture the weather data, the same as postman test result. 5.2 VIT LWIP merger memory is not enough     After combining the maestro_record and lwip socket code together, compile it, it will meet the DTCM memory overflow issues. 13.jpg Fig 13 memory overflow After optimize, still meet the DTCM overflow issues, so, at last, choose to reconfigure the FlexRAM: OCRAM 192K, DTCM 256K, ITCM 64K Compile it, and the memory overflow issues disappear:   14.jpg Fig 14 FlexRAM recofiguration 5.3 Print Chinese word in tera    Directly use teraterm, when the weather API returns the Chinese word, the print out information is the garbled code, and then after the following configuration, to achieve Chinese printing: Setup  ->  Terminal Locale    : american->chinese Codepage : 65001 ->936 15.jpg Fig 15 Tera Term Chinese word print In summary, after various data collection and problem solving, in MIMXRT1060-EVK board  combined with the official SDK complete the function of customizing VIT voice commands to obtain real-time weather and local control.So, even if the ordinary RT series which is not S/L/A/F series, you also can use VIT to implement speech recognition functions. 6 Add the sound broadcast    This chapter mainly gives the method how to add the sound broadcast with the mp3 video data which is stored in the memory, but to the realtime weather data playback, it is not very freely, it needs to check the weather data, and use the video mp3 data lib get the correct mp3 data, as it is not the online TTS method.     So, here, just share one example add the sound broadcast, eg: WW : “小恩小恩”    ->   “小恩来了,请吩咐!” VC  :“今天天气”   ->   “温度32.1度” VC playback is fixed now, if need to play real data, it needs to generate the mp3 voice data lib, then according to the feedback weather information, to generate the correct weather mp3 data array, and play it, as this is a little complicated, but not difficult, so here, just use one fixed sound give an example of it. 6.1 MP3 playback audio data preparation     For audio broadcasting which need to convert the Chinese word into MP3 files, you can use some online speech synthesis software, here use Baidu online speech synthesis function, you can view the previous article, chapter 2.2.2 online speech synthesis: https://community.nxp.com/t5/i-MX-RT-Knowledge-Base/RT106L-S-voice-control-system-based-on-the-Baidu-cloud/ta-p/1363295     If use the Baidu online speech synthesis generated mp3 file to convert to the c array directly, it will meet the first audio play issues, so, here we use the Audacity to convert the mp3 file, the convert configuration is like this: 16.jpg  Fig 16 Audacity convert configuration     After the regeneration of mp3, you can use xxd .exe to convert the mp3 file to an array of C files, and then put it into RT-related memory or external flash , xxd .exe can be found at the following link: https://github.com/baldram/ESP_VS1053_Library/issues/18 The convert command like this: xxd -i your-sound.mp3 ready-to-use-header.c Convert the xiaoencoming.mp3 and temptest.mp3 file to the C array, then modify the data to the C file, save file as: xiaoencoming.h and temptest.h. Here, take xiaoencoming.c as an example: #define XIAOEN_MP3_SIZE  6847 unsigned char xiaoencoming_mp3[XIAOEN_MP3_SIZE] = {   0x49, 0x44, 0x33, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x21, 0x54, 0x58, …   0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55 }; unsigned int xiaoencoming1_mp3_len = XIAOEN_MP3_SIZE;//6847; Until now, the playback audio data is finished.     Copy xiaoencoming.h and temptest.h to project path: evkmimxrt1060_maestro_weather_mp3\source 6.2 Play the MP3 data from memory    Here, share the related code. 6.2.1 app_streamer.c added code    #include "xiaoencoming.h" #include "temptest.h" void *voice_inBuf = NULL; void *voice_outBuf = NULL; status_t STREAMER_file_Create(streamer_handle_t *handle, char *filename, int eap_par) { STREAMER_CREATE_PARAM params; OsaThreadAttr thread_attr; int ret; ELEMENT_PROPERTY_T prop; MEMSRC_SET_BUFFER_T inBufInfo = {0}; SET_BUFFER_DESC_T outBufInfo = {0}; PRINTF("Kerry test begin!\r\n"); if(filename == "temptest.mp3") inBufInfo = (MEMSRC_SET_BUFFER_T){.location = (int8_t *)temptest_mp3, .size = TEMPtest_MP3_SIZE}; else if(filename == "xiaoencoming.mp3") inBufInfo = (MEMSRC_SET_BUFFER_T){.location = (int8_t *)xiaoencoming_mp3, .size = XIAOEN_MP3_SIZE}; /* Create message process thread */ osa_thread_attr_init(&thread_attr); osa_thread_attr_set_name(&thread_attr, STREAMER_MESSAGE_TASK_NAME); osa_thread_attr_set_stack_size(&thread_attr, STREAMER_MESSAGE_TASK_STACK_SIZE); ret = osa_thread_create(&msg_thread, &thread_attr, STREAMER_MessageTask, (void *)handle); osa_thread_attr_destroy(&thread_attr); if (ERRCODE_NO_ERROR != ret) { return kStatus_Fail; } /* Create streamer */ strcpy(params.out_mq_name, APP_STREAMER_MSG_QUEUE); params.stack_size = STREAMER_TASK_STACK_SIZE; params.pipeline_type = STREAM_PIPELINE_MEM; params.task_name = STREAMER_TASK_NAME; params.in_dev_name = "buffer"; params.out_dev_name = "speaker"; handle->streamer = streamer_create(&params); if (!handle->streamer) { return kStatus_Fail; } prop.prop = PROP_DECODER_DECODER_TYPE; prop.val = (uintptr_t)DECODER_TYPE_MP3; ret = streamer_set_property(handle->streamer, prop, true); if (ret != STREAM_OK) { streamer_destroy(handle->streamer); handle->streamer = NULL; return kStatus_Fail; } prop.prop = PROP_MEMSRC_SET_BUFF; prop.val = (uintptr_t)&inBufInfo; ret = streamer_set_property(handle->streamer, prop, true); if (ret != STREAM_OK) { streamer_destroy(handle->streamer); handle->streamer = NULL; return kStatus_Fail; } handle->audioPlaying = false; error: PRINTF("End STREAMER_file_Create\r\n"); PRINTF("Kerry test end!\r\n"); return kStatus_Success; } The code implements the thread build, creates a streamer, defines it as playing from memory, decodes the properties for MP3, and specifies an array of MP3 files in memory. Specify a different array of mp3 files in memory based on the calling file name. 6.2.2 cmd.c added code void play_file(char *filename, int eap_par) { STREAMER_Init(); int ret = STREAMER_file_Create(&streamerHandle, filename, eap_par); if (ret != kStatus_Success) { PRINTF("STREAMER_file_Create failed\r\n"); goto file_error; } STREAMER_Start(&streamerHandle); PRINTF("Starting playback\r\n"); file_playing = true; while (streamerHandle.audioPlaying) { osa_time_delay(100); } file_playing = false; file_error: PRINTF("[play_file] Cleanup\r\n"); STREAMER_Destroy(&streamerHandle); osa_time_delay(100); } Play file, it calls the STREAMER_file_Create API function, start play, and wait the play finished, then release the STREAMER. shellRecMIC API function add the VIT recorded flag, which is used to play feedback audio file. static shell_status_t shellRecMIC(shell_handle_t shellHandle, int32_t argc, char **argv) { … //kerry PRINTF("Kerry MP3 stream data test!\r\n"); PRINTF("---weather_data.ww_flag =%d--\r\n ", weather_data.ww_flag); PRINTF("---weather_data.vc_inde =%d--\r\n ", weather_data.vc_index); PRINTF("---weather_data.mp3_flag =%d--\r\n ", weather_data.mp3_flag); if(weather_data.ww_flag == 1) { play_file("xiaoencoming.mp3", 0); } if(weather_data.vc_index == 3) { play_file("temptest.mp3", 0); } if(weather_data.mp3_flag != 0) { weather_data.ww_flag = 0; weather_data.vc_index = 0; } weather_data.mp3_flag = 0; /* Delay for cleanup */ osa_time_delay(100); return kStatus_SHELL_Success; } If detect the Wakeup Word: “小恩小恩”, play feedback audio: “小恩来了请吩咐”. If detect the voice command: “今天天气”, play feedback audio: “温度32.1度”, please note, this playback just an example, it is the fixed audio, you also can create audio word lib, then according to the received weather information, combine the related word audio together, then playback it. This is a little complicated, but not difficult. So, if need to play the free audio, also can consider the online TTS method in real time. 6.2.3 VIT WW and VC flag VIT_Execute function int VIT_Execute(void *arg, void *inputBuffer, int size) { … if (VIT_DetectionResults == VIT_WW_DETECTED) { PRINTF(" - WakeWord detected \r\n"); weather_data.ww_flag = 1; //kerry weather_data.mp3_flag = 1; } else if (VIT_DetectionResults == VIT_VC_DETECTED) { // Retrieve id of the Voice Command detected // String of the Command can also be retrieved (when WW and CMDs strings are integrated in Model) VIT_Status = VIT_GetVoiceCommandFound(VITHandle, &VoiceCommand); if (VIT_Status != VIT_SUCCESS) { PRINTF("VIT_GetVoiceCommandFound error: %d\r\n", VIT_Status); return VIT_Status; // will stop processing VIT and go directly to MEM free } else { PRINTF(" - Voice Command detected %d", VoiceCommand.Cmd_Id); weather_data.vc_index = VoiceCommand.Cmd_Id;//kerry 1:ledon 2:ledoff 3:today weather 4:tomorrow weather 5:aftertomorrow weather weather_data.mp3_flag = 2; if(weather_data.vc_index == 1)//1 { GPIO_PinWrite(GPIO1, 3, 1U); //pull high PRINTF(" led on!\r\n"); } else if(weather_data.vc_index == 2)//2 { GPIO_PinWrite(GPIO1, 3, 0U); //pull low PRINTF(" led off!\r\n"); } // Retrieve CMD Name: OPTIONAL // Check first if CMD string is present if (VoiceCommand.pCmd_Name != PL_NULL) { PRINTF(" %s\r\n", VoiceCommand.pCmd_Name); } else { PRINTF("\r\n"); } } } return VIT_Status; } Until now, all the code is added. 6.2.4  playback audio test result     This is the audio playback test result: (view in My Videos)   17.jpg Fig 17 playback audio log   From the test result, we can see, we also can use the mp3 data which is stored in the memory and play it as audio playback.   The code project is: evkmimxrt1060_maestro_weather_mp3.zip. i.MXRT 106x
View full article
車両ネットワーク:TSN(Time Sensitive Networking)により、自動運転のための予測可能で信頼性が高く、堅牢なイーサネットネットワークを実現 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> Time-Sensitive Networkingは、産業用および車載用イーサネット領域で次に話題になる世界です。このセッションでは、TSN規格を掘り下げて、自動車分野に最も関連性の高い主要な機能に焦点を当てます。また、SJA1105TEL車載イーサネットスイッチで実装できる潜在的なユースケースや、このようなスイッチを車に採用するためのエコシステムについても説明します。 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> Time-Sensitive Networkingは、産業用および車載用イーサネット領域で次に話題になる世界です。このセッションでは、TSN規格を掘り下げて、自動車分野に最も関連性の高い主要な機能に焦点を当てます。また、SJA1105TEL車載イーサネットスイッチで実装できる潜在的なユースケースや、このようなスイッチを車に採用するためのエコシステムについても説明します。
View full article
S32K344 - FOC integrated with FreeRTOS S32K344 - FOC integrated with FreeRTOS This example demonstrates a 3-phase Permanent Magnet Synchronous Motor (PMSM) vector control (Field Oriented Control - FOC) drive with 2- shunt current sensing with and without position sensor integrated in FreeRTOS environment. This design serves as an example of motor control design using NXP S32K3 automotive family. tomasfedor_0-1707898002875.png Example was designed on S32K344 Brushless Direct Current and Permanent Magnet Synchronous Motor Control Development Kit.  tomasfedor_4-1707405434276.png C-project based examples are part of MCSPTE1AK344 Development Kit Application Software. An innovative drivers set, Real-Time Drivers (RTD),are used to configure and control the MCU. It complies with Automotive-SPICE, ISO 26262, ISO 9001 and IATF 16949. Production-ready Automotive Math and Motor Control Library set provides essential building blocks for algorithm. FreeMASTER is used as useful run-time debugging tool. Application software contains:  MCSPTE1AK344_PMSM_FOC_2Sh_ll_FreeRTOS - Low-level drivers of RTD and S32 Design Studio Configuration Tools (S32CT) are used to demonstrate non-AUTOSAR approach. Since the motor control structure of the example is similar to dual shunt example, detailed description of the example can be found in application note AN13767 and FreeRTOS related part in AN12881 .
View full article
i.MX95 ISP Camera Compatibility Guide The purpose of this page is to provide supportive information for the selection of suitable camera modules that are supported by the i.MX95. The guide is attached in this page. This helps customers evaluate project feasibility and integration aspects when considering i.MX 95 SoCs for their products. It is strongly recommended to consult with NXP and the camera module vendor before finalizing the choice of the camera part number to ensure compatibility, availability, longevity, and pricing requirements. NXP Supported Sensors: Sensor Vendor Image Sensor Max Resolution Camera Module OmniVision OS08A20 8MP IMX95-OS08A20 | NXP Semiconductors EXPI-OS08A20 OmniVision OX05B1S 5MP OmniVision OX03C10 3MP Onsemi AR0144 1MP AR0144   Partner Enabled Sensors: Partner Sensor Vendor Image Sensor Max Resolution ISP Tuning Camera Module Location FRAMOS Sony IMX662 2MP ✔ FSM:GO Munich, Germany/ Canada/USA Sony IMX678 8MP Sony IMX900 3.2MP Sony IMX676 12MP Onsemi Onsemi AR2020 19MP Module available through Future Electronics Entron OmniVision OS08A20 8MP ✔ EXPI-OS08A20 China Onsemi AR0820 8MP Order with Entron Onsemi AR0823 8MP Technexion Onsemi AR0144 1MP Onsemi AR0145 1MP Onsemi AR0234 2MP Onsemi AR0235 2MP Onsemi AR0236 2MP Onsemi AR0521 5MP Onsemi AR0522 5MP Onsemi AR0544 5MP Onsemi AR0821 8MP   Onsemi AR0822 8MP Onsemi AR0830 8MP Onsemi AR1335 13MP PHYTEC Onsemi AR0144 1MP Germany/ China/India/ USA Onsemi AR0234 2.3MP Onsemi AR0521 5MP E-consystems Sony IMX662 2.4MP Riverside, CA, USA/India Sony IMX900 3.2MP IMX95EVK
View full article
LPC54018 クラッシュ問題 お客様は LPC54018J2M で問題を経験しています。 状況は次のように説明されます。 お客様が I2C 経由で Ether Back Up CODE ブロックに新しいバージョンをプログラムしてファームウェアを更新した後、再起動時に、BOOT CODE はまず Ether Back Up CODE に新しいファームウェアがあるかどうかを確認します。存在する場合、Ether CODE を上書きしてから実行します。 フラッシュメモリの配置 |-------------------------------------| 0x10000000 - 0x1000FFFF | ブートコード(64k) 10000| |-------------------------------------| 0x10010000 - 0x100fffff | イーサコード(960k) f0000| |-------------------------------------| 0x10100000 - 0x101effff | イーサバックアップコード(960k) f0000| |-------------------------------------| 0x101f0000 - 0x10200000 |予約済み(64k) 10000| |-------------------------------------| 少数のユニットでは、ファームウェアのアップデートが完了すると、一定期間ソフトウェアは正常に動作します。しかし、しばらくすると、コードが突然動かなくなってしまいました。このような場合、再プログラムや消去を試みてもシステムを回復することはできず、IC を交換する必要があります。 異常のある IC については、JTAG を使用してさらにテストを実行しました。最初は、サンプル コードをプログラムしても正常に実行されず、フラッシュ直後に IC が停止してしまいます。 upload_44c1df325efcbfd1bf742fc095949c9e.png お客様ソフトウェアの場合、ブート コードはフラッシュ メモリをチェックし、SPIFI 初期化中に停止します。 ただし、SDK_2.x_LPC54018J2M (バージョン 24.12) のサンプル コードを JTAG 経由でプログラムすると、IC は正常に動作し、その後のプログラミングも期待どおりに動作します。 異常な IC の場合、お客様コードを直接再プログラムしても正常な動作は回復しません。異常状態から回復するためには、まずサンプルコードをプログラムする必要があります。 お客様コードは現在、SDK 2.11 に基づいて開発されています。 正常な動作を復元するサンプルコードは SDK 24.12 からのものです。 可能であれば新しいバージョンにアップデートすることをお客様に提案しましたが、これには時間がかかる可能性があります。 したがって、ここでは、この問題の原因が SDK のバージョンに関連しているのか、メモリ構成を調整する必要があるのかについて説明します。 現在、JTAG 経由でデバイスを回復することは可能ですが、この問題の発生を完全に防ぐ方法を見つけたいと考えています。 LPC54xxx Re: LPC54018 Crash Issue こんにちは@ZRay ご投稿ありがとうございます! これはLPC54XXデバイスのエラッタに関連している可能性があり、エラッタシートLPC540xx_LPC54S0xxの機能的問題の説明3.8 ROM.1に記載されています。ブート失敗時にペリフェラルピンが構成または駆動されたままになります。 また、 MCUXpresso SDK リリース ノートを確認することをお勧めします。また、常に利用可能な最新バージョンの SDK を使用することをお勧めします。 あなたが言及したサンプル コードではピン構成が実行されましたか?
View full article
以太网驱动程序读取 PHY 地址(LAN 9646) 大家好 我尝试用Eth_43_GMAC_ReadMii 函数读取 LAN 9646 的 PHY 地址,但返回的结果出乎意料。我只想问,这个功能是否适合用于读取 PHY 地址。感谢您的阅读。 Re: Read PHY address (LAN 9646) by Ethernet driver 您好, 是的,Eth_43_GMAC_ReadMii 是使用第 22 条通过 MDIO 读取 PHY 寄存器的函数。 不清楚您在函数中使用了哪些参数,以及得到了什么读数。确保使用设备数据表中指定的正确的 PHY 和寄存器地址进行标准 MIIM 寄存器(直接)访问。 还要确保选择了 MIIM 接口,根据设备 DS,它不是默认接口,而是通过捆绑选项配置的。   BR, Petr
View full article
IMX8MPプロセッサのHABエラー 皆様、i.MX8MPボードでHAB署名を検証しようとしていますが、次のようなエラーが発生します。 HAB 構成:0xf0、HAB 状態:0x66 --------- HABイベント情報1 ----------------- イベント情報: 0xdb 0x00 0x14 0x45 0x33 0x0f 0xc0 0x00 0xbe 0x00 0x0c 0x00 0x03 0x17 0x00 0x00 0x00 0x00 0x00 0x50 STS = HAB_FAILURE (0x33) RSN = HAB_INV_INDEX (0x0F) CTX = HAB_CTX_COMMAND (0xC0) ENG = HAB_ENG_ANY (0x00) --------- HABイベント情報2 ----------------- イベント情報: 0xdb 0x00 0x14 0x45 0x33 0x0c 0xa0 0x00 0x00 0x00 0x00 0x00 0x42 0x5a 0x00 0x00 0x00 0x00 0x00 0x20 STS = HAB_FAILURE (0x33) RSN = HAB_INV_ASSERTION (0x0C) CTX = HAB_CTX_ASSERT (0xA0) ENG = HAB_ENG_ANY (0x00) --------- HABイベント情報3 ----------------- イベント情報: 0xdb 0x00 0x14 0x45 0x33 0x0c 0xa0 0x00 0x00 0x00 0x00 0x00 0x40 0x40 0x00 0x00 0x00 0x00 0x00 0x04 STS = HAB_FAILURE (0x33) RSN = HAB_INV_ASSERTION (0x0C) CTX = HAB_CTX_ASSERT (0xA0) ENG = HAB_ENG_ANY (0x00) これらは開発環境から来ています U-Boot SPL 2023.04-lf_v2023.04+g1e5b6c6bf2 誰かこのトピックに関してアドバイスをくれませんか?前もって感謝します Re: HAB Error on IMX8MP processor これを修正できた可能性はありますか?私もsrk1からsrk2に変更しようとすると同じ問題が発生します Re: HAB Error on IMX8MP processor こんにちは、 RSN = HAB_INV_INDEX (0x0F) は、指定されたインデックスのキーが間違っているか、インストールされたキーのターゲット インデックスが利用できないことを示します。csf ファイルを確認します。 これらのエラーの詳細については、HAB API を参照してください。API には、署名用にダウンロードする CST ツールが含まれています。 よろしくお願いします。 Harvey
View full article
S32K5 SAFリリーススケジュール こんにちは、チーム お客様である PATAC が当社の S32K5 SAF を評価しています。彼らは、現在の S32K5 SAF では実際の CASE の要件を満たさない非常に限られた機能しか提供されていないことを知っています。SO彼らはS32K5 SAFの詳細なスケジュールを提供するよう求めています。 おおよそのリリース時間。 次のリリースではどの機能とモジュールがサポートされますか? ありがとう、そしてよろしく。 リチャード 優先度: 中 SAFETY_SW 出典: 直接お客様 Re: S32K5 SAF release schedule こんにちは@RaduBraga 、 これのアップデートはありますか? BR リチャード Re: S32K5 SAF release schedule こんにちは@RichardLiさん、 計画では、2026 年 7 月に K5 PRC をリリースし、すべての SAF モジュールの完全な機能をカバーすることを目指しています。 敬具、 ラドスラフ Re: S32K5 SAF release schedule こんにちは@RadoslavB 、 フィードバックありがとうございます。今年の1月末にリリース予定のSAF EARバージョンについて何か予定はありますか?ほとんどの機能がカバーされますか? BR リチャード Re: S32K5 SAF release schedule こんにちは@RichardLiさん、 今年の 1 月には EAR リリースはありません。 EAR 0.8.0 は、非常に限定された機能で 2025 年 12 月にリリースされましたが、7 月 26 日の PRC までは他に何も計画されていません。 敬具、 ラドスラフ
View full article
Clarification needed for MK70 DDR control register 21 specification Hello all,  I am running into an issue with a MK70FX512VMJ12 controlling the DDR on a legacy board. We are using MQX. The issue comes from the following line in the bootloader: ddr->CR21 = 0x00060232; I assume that line sets the DDR_CR21 register (as described on the section 34.4.22 of the K70 reference manual) to 0x00060236. The reference manual states that the register field is split into 2 fields. 31–16 MR1DAT0 Data to program into memory mode register 1 for chip select . 15–0 MR0DAT0 Data to program into memory mode register 0 for chip select . Most DDR manufacturers call those registers Mode Register (MR or MRS) and Extended Mode Register (EMR1, EMR2, EMR3). Should I assume that data from field 15-0 will be written by the state machine to the DDR's MR (Mode Register) and data from field 31-16 to EMR? I suspect, and need confirmation from support engineers, that the state machine issues the necessary control signals irrespective of the values set in the DDR_CR21. That is because considering the data I write on bits 31-16 of the DDR_CR21 (0x0006) which assigns 000 to the 3 MSB bits, for proper operation those should be set to 001 as required by DDR specifications. Note from DDR specs: "The extended mode register is written by asserting LOW on CS#, RAS#, CAS#, WE#, BA1 and HIGH on BA0, while controlling the states of address pins A0 ~ A12."   dodocolby_0-1765462377582.png The settings needed for BA2, BA1, and BA0 are '001', while the values I write to DDR_CR21 is '000'. Does the DDR SDRAM controller overwrites those values set in DDR_CR21 to the correct ones? Thank you, dodocolby Re: Clarification needed for MK70 DDR control register 21 specification Hello @dodocolby , Thanks for using our community. I have noticed your question. I need some time to research before getting back to you. If there are any updates during this period, please feel free to share them anytime. BR Celeste Re: Clarification needed for MK70 DDR control register 21 specification Hello @dodocolby , Could you please let me know the mask set of your chip?  As far as I know, mask set 3N96B part has Errata e10521.   Also, what version of MQX are you using? I understand that MQX 4.x has an issue concerning the SIM_MCR DDRDQSDIS reset state, this bit needs to be cleared.   Although MQX is no longer supported, I noticed that in previous cases they all used  ddr->CR21 = 0x00040232;  instead of the value you mentioned: 0x00060232.   For example, K70 DDR2 read failure with increasing temperature - NXP Community  K70 DDR2 temperature affect read data - NXP Community   That’s why I’m asking the questions above.   BR Celeste Re: Clarification needed for MK70 DDR control register 21 specification Hello, I am using MQX 4.2 and 5N96B. dodocolby_0-1765990752157.jpeg We implemented "K70 DDR2 read failure with increasing temperature - NXP Community K70 DDR2 temperature affect read data - NXP Community", and it seems the device is not sensitive to temperature anymore. Thank you   Re: Clarification needed for MK70 DDR control register 21 specification Hello @dodocolby , Yes, the reason I referenced those two links is because I noticed the code they mentioned uses ddr->CR21 = 0x00040232 instead of 60232 . I just wanted to confirm that point, as I don’t have access to the MQX code on my side, it’s no longer supported. In addition, I’ve already reached out to the internal team to help address your question further. I’ll let you know as soon as I hear back from them. Thanks for your understanding. BR Celeste Re: Clarification needed for MK70 DDR control register 21 specification Hello @dodocolby , Sorry for the long wait. I haven’t received any updates from our internal team yet, likely due to the Christmas holidays. Please note that our response time may be longer than usual because of the holiday periods across the EMEA and AMEC time zones. I will also be on leave starting tomorrow until January 5th. If this matter is urgent, you may consider creating a new case and mentioning this link. Other colleagues will be able to locate my internal contact through this case, and there’s a chance you might receive an update before January 5th. If it’s not urgent, I will continue to follow up once I return. We truly appreciate your understanding and patience. Have a pleasant day! BR Celeste Re: Clarification needed for MK70 DDR control register 21 specification Hello @dodocolby , Hope you are great. I am sorry for the late reply. Please see the reply from our internal team: " Because the DDR controller can support many different memory sizes and configurations with different total numbers of address pins, the mode register data loaded into the MRnDATA fields should not include the bank address values. The controller will automatically drive the correct bank address value (along with the other control signals for the mode register write command). The register value only needs to include the address line portion. " Hope it helps. Please let me know if you have other questions. BR Celeste Re: Clarification needed for MK70 DDR control register 21 specification Thank you for the confirmation.
View full article
SimulinkにFEEを統合する こんにちは、NXP MBDTチームの皆様。 MBDT 1.5 で Simulink の FEE を使用したいのですが、MBDT 1.5 には FEE 関連のライブラリ ブロックがありません。 したがって、MATLAB 関数ブロックから FEE API を呼び出す予定です。 FEE 、 Mem_43_INFLS 、 MemAccを設定した後、デジタル入力読み取りブロックを 1 つだけ含むモデルを構築しようとしました。しかし、次のエラーが発生しました。 「MemIf_Types.h」が見つかりません プロジェクトに手動で新しいフォルダを作成する場合は、MemIf_Types.hを配置します。その中に、モデル設定 → カスタム コード → インクルード ディレクトリでフォルダー パスを追加すると、MemIf_Types.h のエラーが解決されます。 しかし、その後、 RTDまたは生成されたフォルダーに既に存在する他のヘッダー ファイルに対して新しいエラーが表示されます。 誰か助けてくれませんか? ありがとうございます。 Re: integrating FEE in Simulink こんにちは、NXP MBDTチームの皆様。 FEE を統合した後、モデルを構築できるようになりましたが、Fee_GetStatus からのステータス戻り値が MEMIF_UNINIT であるため、コード実行が do .... while ループで停止してしまいます。 する { Fee_MainFunction(); MemAcc_MainFunction(); ステータス = Fee_GetStatus(); } while (ステータス != MEMIF_IDLE); これが私の設定.mexですモデル付きのファイル。助けていただけませんか? Re: integrating FEE in Simulink こんにちは@dragostomaさん、 ご返信ありがとうございます。しかし、MBDT フラッシュ / nvm 書き込みがプログラム S32K3xx をフリーズするため、添付のモデルをビルドできません。 また、このモデルは Mem_43_INFLS API のみを使用しており (フラッシュを処理しています)、実際の手数料アルゴリズムは使用されていません。 Re: integrating FEE in Simulink こんにちは、 @KaleRushikeshさん、 S32K3 向けモデルベース デザイン ツールボックスにご興味をお持ちいただきありがとうございます。 FEE、Mem_43_INFLS、および MemAcc コンポーネントのサポートが S32K3 1.6.0 リリースで導入されました。このバージョンのツールボックスでは、すぐに使用できる Simulink ブロックが提供され、カスタム コードの実装に比べてセットアップ プロセスが簡素化されるため、このバージョンのツールボックスを使用することを強くお勧めします。 ただし、現時点で最新バージョンへの移行が実現できない場合は、FEE コンポーネントを適切に構成するためのガイダンスとして、次のThread ( MBDT flash / nvm write freezes program S32K3xx ) を確認することをお勧めします。 進捗状況をお知らせください。 よろしくお願いいたします。 ドラゴス
View full article
PCDを介してPICCのアプリケーションキーを変更し、返されたデータ長が正しくないことを確認します。 PCDを介してPICCのアプリケーションキー操作を変更し、返されたデータ長が正しくないことを確認します。 カード情報は次のとおりです。 タグタイプ: ISO-14443-4 NXP MIFARE DESFire 既存のテクノロジ: IsoDep、NfcA、NdefFromatable シリアル番号: 04:15:7D:8A:FE:70:80 ATQA:0x0344 サック:0x20 ATS:0x80 1. アプリケーションを選択: コマンド:5A 00 00 01 応答:00 90 00 2. 検証を開始する コマンド:AA 00 回答:AF 4E 89 84 C2 88 DD BF 17 39 A7 85 D6 BA E6 63 C1 質問 1: 結果が 16 バイトの乱数として返されるのはなぜですか?ドキュメントによれば、8 ビットの乱数を返すとのことです。結果がドキュメントと異なるのはなぜですか? 質問 2: ドキュメントには検証コマンドが 0A であると記載されています。ドキュメントに従って次のコマンドを送信しました。 コマンド:90 0A 00 00 01 00 00 応答:91 AE なぜでしょうか?
View full article
S32K 示例 S32K1xx S32K144 示例 S32K144 CMP 轮询 S32DS2.0 示例 S32K144 验证后门访问密钥 S32DS1.3 示例 S32K144 FlexCAN0 RXFIFO DMA nonSDK S32DS13 示例 S32K144 PDB ADC 触发 DMA ISR S32DS 示例 S32K144 Flash RW simple S32DS 示例 S32K144 DMA 内存复制测试 S32DS S32K144 EEEPROM 使用示例 示例 S32K144 EEEPROM 使用 - 无 SDK 示例 S32K144 RTC VLPS 示例 S32K144 WDOG RCM 中断 示例 S32K144 SRAM ECC 注入  S32K144 RAM 保留示例 S32DS.R1 示例 S32K144 I2C主设备 MPL3115A2 S32DSR1_v3 示例S32K144 FlexCAN RXFIFO DMA S32DS.ARM.2018.R1  示例 S32K144_printf_implementation - S32DS_1.0 示例 S32K144 在 FreeRTOS 下使用 UART printf/scanf - S32DS 示例 使用 LPIT 定时器实现可配置周期函数调用的 S32K144 SDK 示例 S32K144 .noinit章节用法 示例 S32K144 PDB ADC DMA S32DS.ARM.2018.R1 示例 S32K144 RAM 自检简单 S32DS 2018.R1 示例 S32K144 位置无关代码  示例 S32K144 FlexCAN 虚拟网络停止模式测试 S32DS.ARM.2.2 示例 S32K144 LPIT DMA LPSPI 示例 S32K144 FlexCAN TX/RX/Error ISR 测试 S32DS2.2 示例 S32K144 FlexIO 空闲检测 S32DS2.2 S32K146 示例 S32K146 Set_whole_FlexRAM-as_RAM S32DS.ARM.2.2 S32K148 示例 S32K148 PDB0-PDB1 环 S32DS3.4 RTM4.0.3 示例 S32K148 PDB0-PDB1 环 DMA S32DS3.4 RTM4.0.3 示例 S32K148 GPIO 中断 S32K116 示例 S32K116 WDOG 快速测试 示例 S32K116 LPUART LIN 从机 TXRX ISR S32DS.ARM.2.2 示例 S32K116 FlexCAN PN 停止 S32DS.ARM.2.2 示例 S32K116 FlexCAN VLPR 测试 S32DS.ARM.2.2 S32K118 示例 S32K118-SRAM-keep_data_over_SW_reset v0_1 S32DS.ARM.2.2 S32K3xx S32K344 示例 S32K344 PIT BTCU ADC DMA DS3.4 RTD100   示例 S32K344 FlexCAN_Ip TX/RX/EnhanceRXFIFO 测试 S32DS3.4 RTD200   示例 Siul2_Port_Ip_Example_S32K344_ITCM_DTCM S32DS3.4RTD300   示例 S32K358 FlexCAN TXRX ISR S32DS35 RTD400/500    
View full article
Kernel Deadlock When VPP Crashes on LX2160A (LSDK‑20.05, VPP 22.06, DPDK 21.11) Dear NXP Support, We are seeing a kernel deadlock when VPP crashes on our LX2160A‑based custom hardware. Below are our environment details and the observed behavior. 1. System and Software Versions SoC / Board: LX2160A, custom hardware Data plane: DPDK + VPP LSDK: 20.05 Kernel: 4.19.90-rt35 MC firmware: 10.36.0 VPP: 22.06 DPDK: 21.11 2. DPAA2 Interface Mapping dprc.1/dpni.7 (interface: eth4, end point: dpmac.3) dprc.1/dpni.1 (interface: eth1, end point: dpmac.4) dprc.1/dpni.0 (interface: eth0, end point: dpsw.0.1) dprc.1/dprc.3/dpni.6 (end point: dpmac.9) dprc.1/dprc.3/dpni.5 (end point: dpmac.7) dprc.1/dprc.3/dpni.4 (end point: dpmac.8) 3. VPP LCP and TAP/TUN Configuration VPP LCP is creating TAP pairs (tap1/N3, tap2/cu, tap3/cu2). itf-pair: [0] TenGigabitEthernet0 tap1 N3 10 type tap itf-pair: [1] TenGigabitEthernet1 tap2 cu 11 type tap itf-pair: [2] TenGigabitEthernet2 tap3 cu2 12 type tap 4. Problem Description When VPP crashes or terminates abnormally: The vpp_main process enters uninterruptible sleep (D state). A kernel worker thread is blocked on rtnl_lock. ps -eo pid,stat,comm,args | grep vpp_main 21670 Dl vpp_main [vpp_main] ps -eo pid,comm,wchan | grep -E ip 9510 kworker/0:0+ipv rtnl_lock cat /proc/21670/stack [<0>] __switch_to+0xe8/0x150 [<0>] __flush_work.isra.13+0x134/0x248 [<0>] flush_work+0xc/0x18 [<0>] rollback_registered_many+0x1a8/0x560 [<0>] unregister_netdevice_queue+0x90/0x118 [<0>] __tun_detach+0x37c/0x390 [<0>] tun_chr_close+0x30/0x90 [<0>] __fput+0x8c/0x1b8 [<0>] ____fput+0xc/0x18 [<0>] task_work_run+0x90/0xb0 [<0>] do_exit+0x2b4/0x9a0 [<0>] do_group_exit+0x38/0xa0 [<0>] get_signal+0xac/0x5c8 [<0>] do_signal+0x80/0x2a8 [<0>] do_notify_resume+0xd0/0x110 [<0>] work_pending+0x8/0x10 [<0>] 0xffffffffffffffff cat /proc/9510/stack [<0>] __switch_to+0xe8/0x150 [<0>] rtnl_lock+0x14/0x20 [<0>] addrconf_verify_work+0xc/0x20 [<0>] process_one_work+0x1e0/0x318 [<0>] worker_thread+0x40/0x440 [<0>] kthread+0x128/0x130 [<0>] ret_from_fork+0x10/0x18 [<0>] 0xffffffffffffffff how to fix it ! Re: Kernel Deadlock When VPP Crashes on LX2160A (LSDK‑20.05, VPP 22.06, DPDK 21.11) You could use Layerscape Linux Distribution POC Rev. 6.1.55_2.2.0 release. It integrates: DPDK v22.11 VPP v2302
View full article
i.MX8MP 添加 HD3SS3220 Type-C 导致 LAN 唤醒失败 我正在开发 6.12.34 内核并修改内核设备树 imx8mp-evk.dts。 nxp-imx/imx-Manifest:i.MX 版本清单 (imx-linux-wal nascar) 当按如下方式在设备树中添加 hd3s3220 type-c 控制器时,WOL 失败了。 /{ connector { compatible = "usb-c-connector"; label = "USB-C"; data-role = "dual"; status = "disabled"; ports { #address-cells = <1>; #size-cells = <0>; port@0 { reg = <0>; hs_ep: endpoint { remote-endpoint = <&usb3_hs_ep>; }; }; port@1 { reg = <1>; ss_ep: endpoint { remote-endpoint = <&hd3ss3220_in_ep>; }; }; }; }; }; &iomux { pinctrl_hd3ss3220: hd3ss3220grp { fsl,pins = < MX8MP_IOMUXC_ECSPI2_MISO__GPIO5_IO12 0x140 >; }; }; &i2c2 { clock-frequency = <400000>; pinctrl-names = "default"; pinctrl-0 = <&pinctrl_i2c2>; status = "okay"; hd3ss3220@67 { compatible = "ti,hd3ss3220"; reg = <0x67>; pinctrl-names = "default"; pinctrl-0 = <&pinctrl_hd3ss3220>; interrupt-parent = <&gpio5>; interrupts = <12 IRQ_TYPE_LEVEL_LOW>; ports { #address-cells = <1>; #size-cells = <0>; port@0 { reg = <0>; hd3ss3220_in_ep: endpoint { remote-endpoint = <&ss_ep>; }; }; port@1 { reg = <1>; hd3ss3220_out_ep: endpoint { remote-endpoint = <&usb3_role_switch>; }; }; }; }; }; &usb_dwc3_1 { dr_mode = "otg"; hnp-disable; srp-disable; adp-disable; usb-role-switch; status = "okay"; ports { #address-cells = <1>; #size-cells = <0>; port@0 { reg = <0>; usb3_hs_ep: endpoint { remote-endpoint = <&hs_ep>; }; }; port@1 { reg = <1>; usb3_role_switch: endpoint { remote-endpoint = <&hd3ss3220_out_ep>; }; }; }; }; 调用挂起命令后,WOL 功能失败。 根据我的检查,唤醒功能是受支持的 root@imx8mpevk:~# ethtool -s eth0 wol g root@imx8mpevk:~# ethtool eth0 Settings for eth0: Supported ports: [ TP MII ] Supported link modes: 10baseT/Full 100baseT/Full 1000baseT/Full Supported pause frame use: Symmetric Receive-only Supports auto-negotiation: Yes Supported FEC modes: Not reported Advertised link modes: 10baseT/Full 100baseT/Full 1000baseT/Full Advertised pause frame use: Symmetric Receive-only Advertised auto-negotiation: Yes Advertised FEC modes: Not reported Link partner advertised link modes: 10baseT/Half 10baseT/Full 100baseT/Half 100baseT/Full 1000baseT/Full Link partner advertised pause frame use: Symmetric Link partner advertised auto-negotiation: Yes Link partner advertised FEC modes: Not reported Speed: 1000Mb/s Duplex: Full Auto-negotiation: on master-slave cfg: preferred slave master-slave status: slave Port: Twisted Pair PHYAD: 1 Transceiver: external MDI-X: Unknown Supports Wake-on: ug Wake-on: g Current message level: 0x0000003f (63) drv probe link timer ifdown ifup Link detected: yes root@imx8mpevk:~# dmesg | grep -i wake [ 3.148381] imx-dwmac 30bf0000.ethernet: Wake-Up On Lan supported [ 13.933830] stmmac: wakeup enable root@imx8mpevk:~# cat /sys/class/net/eth0/device/power/wakeup enabled 但是 6.6.52 内核(imx-linux- scarthgap)上同样的设备树设置效果很好!! 谁能帮帮我? i.MX 8 系列 | i.MX 8QuadMax (8QM) | 8QuadPlus Linux Re: i.MX8MP adding HD3SS3220 Type-C cause Wake on LAN failed 你好, 请尝试在 dts 中使用IRQ_TYPE_EDGE_FALLING。 致敬, Zhiming Re: i.MX8MP adding HD3SS3220 Type-C cause Wake on LAN failed 虽然将中断信号改为"IRQ_TYPE_EDGE_FALLING" ,但唤醒功能仍然不起作用。 目前,通过以下设置,唤醒功能运行良好。 / { connector { compatible = "usb-c-connector"; label = "USB-C"; data-role = "dual"; status = "disabled"; ports { #address-cells = <1>; #size-cells = <0>; port@0 { reg = <0>; hs_ep: endpoint { remote-endpoint = <&usb3_hs_ep>; }; }; port@1 { reg = <1>; ss_ep: endpoint { remote-endpoint = <&hd3ss3220_in_ep>; }; }; }; }; }; &i2c2 { clock-frequency = <400000>; pinctrl-names = "default"; pinctrl-0 = <&pinctrl_i2c2>; status = "okay"; hd3ss3220@67 { compatible = "ti,hd3ss3220"; reg = <0x67>; pinctrl-names = "default"; pinctrl-0 = <&pinctrl_hd3ss3220>; interrupt-parent = <&gpio5>; interrupts = <12 IRQ_TYPE_LEVEL_LOW>; wakeup-source; ports { #address-cells = <1>; #size-cells = <0>; port@0 { reg = <0>; hd3ss3220_in_ep: endpoint { remote-endpoint = <&ss_ep>; }; }; port@1 { reg = <1>; hd3ss3220_out_ep: endpoint { remote-endpoint = <&usb3_role_switch>; }; }; }; }; }; &iomux { pinctrl_hd3ss3220: hd3ss3220grp { fsl,pins = < MX8MP_IOMUXC_ECSPI2_MISO__GPIO5_IO12 0x140 // USB_SW_INTn (AH20) >; }; }; &usb3_phy1 { fsl,phy-tx-preemp-amp-tune-microamp = <1800>; fsl,phy-tx-vref-tune-percent = <116>; status = "okay"; }; &usb3_1 { status = "okay"; }; &usb_dwc3_1 { dr_mode = "otg"; hnp-disable; srp-disable; adp-disable; usb-role-switch; role-switch-default-mode = "host"; snps,dis-u1-entry-quirk; snps,dis-u2-entry-quirk; status = "okay"; ports { #address-cells = <1>; #size-cells = <0>; port@0 { reg = <0>; usb3_hs_ep: endpoint { remote-endpoint = <&hs_ep>; }; }; port@1 { reg = <1>; usb3_role_switch: endpoint { remote-endpoint = <&hd3ss3220_out_ep>; }; }; }; }; 但如你所见,连接器的状态被设置为"disabled" ,这是为什么呢? 删除这一行后,唤醒功能就失效了。 Re: i.MX8MP adding HD3SS3220 Type-C cause Wake on LAN failed 嗨 @AlanWen 我个人认为,这个问题可能与内核通用元器件的升级有关,不应归因于 i.MX 相关的驱动程序。由于我没有相同的硬件平台,所以无法准确找出问题所在。 致敬, Zhiming Re: i.MX8MP adding HD3SS3220 Type-C cause Wake on LAN failed 但在 6.6.52 内核版本中,使用相同的设置,在没有连接器状态行的情况下,唤醒功能也能正常工作。 如下所示: / { connector { compatible = "usb-c-connector"; label = "USB-C"; data-role = "dual"; ports { #address-cells = <1>; #size-cells = <0>; port@0 { reg = <0>; hs_ep: endpoint { remote-endpoint = <&usb3_hs_ep>; }; }; port@1 { reg = <1>; ss_ep: endpoint { remote-endpoint = <&hd3ss3220_in_ep>; }; }; }; }; }; &i2c2 { clock-frequency = <400000>; pinctrl-names = "default"; pinctrl-0 = <&pinctrl_i2c2>; status = "okay"; hd3ss3220@67 { compatible = "ti,hd3ss3220"; reg = <0x67>; pinctrl-names = "default"; pinctrl-0 = <&pinctrl_hd3ss3220>; interrupt-parent = <&gpio5>; interrupts = <12 IRQ_TYPE_LEVEL_LOW>; wakeup-source; ports { #address-cells = <1>; #size-cells = <0>; port@0 { reg = <0>; hd3ss3220_in_ep: endpoint { remote-endpoint = <&ss_ep>; }; }; port@1 { reg = <1>; hd3ss3220_out_ep: endpoint { remote-endpoint = <&usb3_role_switch>; }; }; }; }; }; &iomux { pinctrl_hd3ss3220: hd3ss3220grp { fsl,pins = < MX8MP_IOMUXC_ECSPI2_MISO__GPIO5_IO12 0x140 // USB_SW_INTn (AH20) >; }; }; &usb3_phy1 { fsl,phy-tx-preemp-amp-tune-microamp = <1800>; fsl,phy-tx-vref-tune-percent = <116>; status = "okay"; }; &usb3_1 { status = "okay"; }; &usb_dwc3_1 { dr_mode = "otg"; hnp-disable; srp-disable; adp-disable; usb-role-switch; role-switch-default-mode = "host"; snps,dis-u1-entry-quirk; snps,dis-u2-entry-quirk; status = "okay"; ports { #address-cells = <1>; #size-cells = <0>; port@0 { reg = <0>; usb3_hs_ep: endpoint { remote-endpoint = <&hs_ep>; }; }; port@1 { reg = <1>; usb3_role_switch: endpoint { remote-endpoint = <&hd3ss3220_out_ep>; }; }; }; };
View full article
尝试运行 DMA 示例 Lpspi_Ip_Transfer_S32K344 尝试运行 DMA 示例 Lpspi_Ip_Transfer_S32K344,发现以下错误。 我们有 S32 Design Studio 版本 3.5 和 S32K3 实时驱动程序 AUTOSAR 4.4 版本 2.0.0。 在尝试编译时,我们收到了关于缺少包含文件的错误信息,例如 #include"StandardTypes.h". 请告知我们需要使用哪些版本才能通过 spi 支持 DMA。 jnaus_0-1765916948297.png Re: Trying to run DMA example Lpspi_Ip_Transfer_S32K344 你好@jnaus RTD 2.0.0 在 DMA 方面没有问题。 您只需在添加"Dma 后点击"更新代码" 即可。" Senlent_0-1765961640703.png
View full article
AMMCLIB COS_FLT wave fault Hi,  I've encountered a very strange problem. When using the Simulink model of the AMMCLIB library, the output of the floating-point cosine function has spikes. Why is this? I can use the sin function and the cos function in the Simulink standard library normally.I hope to get your help. Chris_Tigger_0-1754322560482.png matlab version : 2025a AMMCLIB version: 1.1.22 回复: AMMCLIB COS_FLT wave fault The input can be -pi ~pi ,I think.
View full article