Multi Source Translation Content

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

Multi Source Translation Content

Discussions

Sort by:
起動時にSIGTRAPを受信するMCALの例 皆さん、こんにちは。 私はS32K3X4EVB-T172を使用しており、USB-OpenSDA(J40)で接続され、+ 12V電源で接続されています。 s32DS 3.6.0をインストールしましたが、Platform_Software_Integration_S32K3XX と SW32K3_S32M27x_RTD_R21-11_5.0.0。 S32K3XX Autosar R21-11 RTD 5.0.0 の例、特に Port_Example_s32k344 の例を試しました。 コードをビルドして起動すると、ユーザーLEDが赤く点灯します(例でコード化されているように)が、スクリーンショットに示すように、プログラムはすぐにSIGTRAPで一時停止します。 Capture.PNG MCALも使用している例Uart_Example_S32K344でも同じSIGTRAPの問題が発生しています。 MCALを使用しない例のSiul2_Port_Ip_Example_S32K344を試してみても問題はありません。この例は完璧に実行できます。 このSIGTRAPがMCALの例に表示される理由を理解するのを手伝ってもらえますか? 感謝 ピエール Re:起動時にSIGTRAPを受信するMCALの例 こんにちはペトル、 無限ループで変化はありません。 SIGTRAP割り込みは、LEDが1回、2回、または3回点滅した後に発生します。そのため、プログラムの終了には到達しませんでした。
View full article
JN5189 I was using OM15080-JN5189, and the firmware was the factory firmware. When conducting the zgwui test with the nxp tool, no matter what instructions were sent, there was no response. I performed the operation according to the ttug.pdf file.May I ask how I should configure it or what firmware to flash? 2025-04-24_164053.png 回复: JN5189 Hello. You can download JN-AN-1244 from here: https://www.nxp.com/webapp/sps/download/license.jsp?colCode=JN-AN-1244 BR, Mihai 回复: JN5189 Thank you for your reply. I can use it now, but I can't find the file JN-AN-1244. Could you please give me the relevant link? liushuiwuqing_0-1745909577846.png Re: JN5189 Hello, Hope you are doing well. Could you clarify what the "ttug.pdf" refers to? What is the process that you did to program the devices? Is there a specific guide or document you are following? I would recommend checking out the following documents: Zigbee 3.0 Getting Started DK6 Production Flash Programmer User Guide included in the SDK files under this path: SDK\docs\DK6-UG-3127-Production-Flash-Programmer Zigbee 3.0 IoT Control Bridge UserGuide under the path JN-AN-1247.zip\JN-AN-1247\Doc Best Regards, Ana Sofia.
View full article
iw611/iw612 および LE オーディオ NXPサポートの皆様へ iw611/iw612 リリースノート for Linux (RN00104) に準拠 ファームウェアはBluetooth LEオーディオをサポートしています これはLC3コーデックもサポートされているということですか? ありがとうございます よろしくお願いいたします。 埠頭
View full article
S32K344 SPI + DMA Lpspi_Ip_AsyncTransmitFast この質問は、次の質問と似ているかもしれません https://community.nxp.com/t5/S32K/S32K312-LPSPI-DMA-AsyncTransmitFast/m-p/1923811  私はデバイスに2つのspiトランザクションを送信する必要があります。Lpspi_Ip_AsyncTransmitFastを使おうとしています。 const Lpspi_Ip_FastTransferType ft[] = { { .ExternalDevice = &Lpspi_Ip_DeviceAttributes_SpiExternalDevice_0_Instance_0, .TxBuffer = txbuf_wren, .RxBuffer = rxbuf_wren, .DefaultData = 0, .Length = 1, .KeepCs = false, }, { .ExternalDevice = &Lpspi_Ip_DeviceAttributes_SpiExternalDevice_0_Instance_0, .TxBuffer = txbuf, .RxBuffer = rxbuf, .DefaultData = 0, .Length = 10, .KeepCs = false, } }; void send_spi_txn(void) { Lpspi_Ip_StatusType status = Lpspi_Ip_AsyncTransmitFast( ft, 2, Lpspi_Ip_Callback_lpspi_0_dma ); if (status != LPSPI_IP_STATUS_SUCCESS) { failed_spi_dma = true; } }   私はすでにLpspi_Ip_AsyncTransmitを使用して単一のトランザクションを送信し、次に完了コールバックから別のトランザクションを送信することをテストしましたが、これは明らかに理想的ではないので、代わりにtransferlistを使用できるようにしたいと思います。 問題は、データが送信されていないことです。初めて Lpspi_Ip_AsyncTransmitFast が呼び出されたときは成功が報告されますが、その後のすべての呼び出しは失敗します。また、SPI転送がないことも確認できます。ロジックアナライザーでは、しかし私がただLpspi_Ip_AsyncTransmitとき、すべてが正常に動作します。 日時:S32K344 SPI + DMA Lpspi_Ip_AsyncTransmitFast 残念ながら、S32DSを使用してRTDを構成し、ドライバー構成ファイルを生成しているだけなので、プロジェクトを投稿することはできません。 しかし、私は問題を解決することができました、そして当然のことながら、それはDMAのデータキャッシュの問題でした。 セットアップの問題については、次のようにします。 スキャッターギャザーチャンネルが正しくリンクされていませんでした。(各チャンネルは次のチャンネルにリンクする必要があり、最後のチャンネルは最終としてマークする必要があります) TX/RX DMA チャネルの優先順位が正しくありませんでした (Rx が Tx よりも高い) TX/RX DMA チャネルの完全割り込みの優先順位が正しく設定されていませんでした。(tx が rx より高い) そして、データキャッシュの問題はMemMap.hに要約されますファイル。 NXPは、以下の定義を使用します。 #define MCL_START_SEC_VAR_CLEARED_UNSPECIFIED_NO_CACHEABLE #include "Mcl_MemMap.h" /* Pointer to the DMA Initialization Configuration. Based on this configuration pointer, the DMA Driver obtains all information for the Logic Channels and corresponding Channel Configurations. The Pointer is loaded when Dma_Ip_Init() is called. */ static const Dma_Ip_InitType * Dma_Ip_pxInit; #define MCL_STOP_SEC_VAR_CLEARED_UNSPECIFIED_NO_CACHEABLE #include "Mcl_MemMap.h" そして  _MemMap.h この場合 #pragma GCCセクションbss ".mcal_bss_no_cacheable" #ifdef MCL_START_SEC_VAR_CLEARED_UNSPECIFIED_NO_CACHEABLE /** * @file Mcl_MemMap.h */ #undef MCL_START_SEC_VAR_CLEARED_UNSPECIFIED_NO_CACHEABLE #define ENTERED_MCL_START_SEC_VAR_CLEARED_UNSPECIFIED_NO_CACHEABLE #ifndef MEMMAP_MATCH_ERROR #define MEMMAP_MATCH_ERROR #else #ifndef MCL_STOP_SEC_VAR_CLEARED_UNSPECIFIED_NO_CACHEABLE #error "MemMap.h, no valid matching start-stop section defined." #endif #endif /** * @file Mcl_MemMap.h */ #undef MEMMAP_ERROR #pragma GCC section bss ".mcal_bss_no_cacheable" #endif   GCC の場合、S32DS IDE に付属している GCC バージョンを使用するか、特定のバージョンの GCC をダウンロードしない限り、これらの種類のプラグマはサポートされていません。 だから今のところ、私はDMAを使用していたすべてのRTDファイルを調べ、手動で適切なセクション属性を追加して、それらをキャッシュ不可にするか .mcal_bss_no_cacheable または .mcal_data_no_cacheableso上記のスニペットのために追加しなければなりませんでした。   __attribute__((section(".mcal_bss_no_cacheable"))) static const Dma_Ip_InitType * Dma_Ip_pxInit; コンパイラを満足させるために、すべての  _MemMap.h を空のダミーファイルに置き換えました。つまり、すべての __attribute__(((section()))コンパイラディレクティブを手動で追加する必要があります。 日時:S32K344 SPI + DMA Lpspi_Ip_AsyncTransmitFast 訂正: 'Lpspi_Ip_LPSPI_0_IrqTxDmaHandler' は実際には呼び出されますが、一度だけ呼び出されます。その後は二度と呼び出されません 日時:S32K344 SPI + DMA Lpspi_Ip_AsyncTransmitFast @PetrSまたは@davidtosenovjan、どちらかが私が確認できるものについて何か提案がありますか? さらに、TX チャネルの DMA 割り込みが繰り返し呼び出されていることに気付きました。コールバックを呼び出すことになっていますがLpspi_Ip_LPSPI_0_IrqTxDmaHandler決して呼び出しません。 Screenshot 2024-09-09 at 4.11.50 PM.png Screenshot 2024-09-09 at 4.11.45 PM.png
View full article
NHS3100 app_demo_dp_url 更新了 NDEF 消息 你好。我正在使用 app_demo_dp_url 作为基线并使用传感器读数对其进行更新。传感器读数大约需要 200 毫秒(积分时间)。我如何更新 NDEF 消息并“通知”阅读器(智能手机)有更新的消息? 当测量时间超过 50 毫秒时,我的手机将停止正确读取标签并返回“空标签”。提前致谢
View full article
将 AN12214 电机控制软件导入到 MCUXpresso 我正在尝试将源代码导入 RT1060 的 AN12214。 我运行 AN12214SW.exe 来提取源代码,并使用文件->导入,将现有项目放入工作区。我选择搜索嵌套项目并将项目复制到工作区。 我为 RT1060 选择了 AN12214SW 和 pmsm_ref_sol。 AN12214SW 进口精品。 pmsm_ref_sol 没有。尽管所有文件都有一个小黄色,但文件目录结构可以正确导入!图标。没有任何文件被复制到目录中。如果我将一个同名文件放在空白目录中,McuXpresso 仍然拒绝查看它。如果我将具有不同名称的文件放在目录中,它将出现在项目资源管理器中,我可以从 McuXpresso 打开它。 如何让 McUXpresso 正确导入项目? 我正在运行 MCUXpresso IDE v24.9 [Build 25] 并且有 SDK_2.x_EVK-MIMXRT1060已安装 回复:将 AN12214 电机控制软件导入到 MCUXpresso 我找到了解决办法。如果我不选择“将项目复制到工作区”,我就可以构建它。
View full article
S32K148 MCAL ENET EBERR 问题 您好 .遇到了问题. 以下是描述 目前正在配置S32K148-MCAL的Eth模块. port中配置好pin脚 fhz2000_0-1726739311772.png 配置eth fhz2000_1-1726739350182.png 生成代码后 组入 先调用eth_init Eth_Init(&Eth_Config_VS_0); 随后使能控制器 Eth_SetControllerMode(EthConf_EthCtrlConfig_EthCtrlConfig_0, ETH_MODE_ACTIVE); 在此过程中 fhz2000_3-1726739557897.png     Base->ECR |= ((uint32)(0x2U) | (0x100U));     Base->ECR |= ((uint32)1U << (4U)); 是可以正常配置ETHEREN为1的 fhz2000_5-1726740319507.png 但是一旦尝试初始化收发时,便会BUS ERROR fhz2000_6-1726740363772.png 后续的发送更不可能了 请问我该如何继续调查 回复: S32K148 MCAL ENET EBERR 问题 感谢 问题解决 问题解决 感谢回复 问题已经 解决 原因是没配置MCAL的RM模块导致MPU模块没初始化ENET相关的内存访问权限 回复: S32K148 MCAL ENET EBERR 问题 问题进展更新 : 现在追查到MPU的 CESR 寄存器了.看起来好像是uDMA尝试访问内存时被内存保护察觉到并拦截了. fhz2000_0-1726749164182.png fhz2000_1-1726749178708.png
View full article
GStreamer dmabufheaps の問題 カーネル 6.6 に切り替えた後、GStreamer を実行できません。 dmaに問題があると思います。 imx8mp:~$ GST_DEBUG=*dma*:5 gst-launch-1.0 videotestsrc ! autovideosink Setting pipeline to PAUSED ... Pipeline is PREROLLING ... 0:00:00.072033375 889 0xffff88000b70 WARN dmabufheapsmemory gstdmabufheaps.c:98:gst_dmabufheaps_allocator_mem_init: Could not open dmabufheaps driver 0:00:00.072123500 889 0xffff88000b70 WARN dmabufheapsmemory gstdmabufheaps.c:119:gst_dmabufheaps_allocator_obtain: No allocator named dmabufheapsmem found (gst-launch-1.0:889): GStreamer-CRITICAL **: 06:27:14.679: gst_buffer_pool_config_set_allocator: assertion 'allocator != NULL || params != NULL' failed 0:00:00.077851750 889 0xffff88000b70 WARN dmabufheapsmemory gstdmabufheaps.c:119:gst_dmabufheaps_allocator_obtain: No allocator named dmabufheapsmem found (gst-launch-1.0:889): GStreamer-CRITICAL **: 06:27:14.684: gst_buffer_pool_config_set_allocator: assertion 'allocator != NULL || params != NULL' failed (gst-launch-1.0:889): GStreamer-CRITICAL **: 06:27:14.685: gst_object_unref: assertion 'object != NULL' failed 0:00:00.078302375 889 0xffff88000b70 DEBUG wl_dmabuf gstwllinuxdmabuf.c:141:gst_wl_linux_dmabuf_construct_wl_buffer: Creating wl_buffer from DMABuf of size 307200 (320 x 240), DRM fourcc AR24 (gst-launch-1.0:889): GStreamer-Allocators-CRITICAL **: 06:27:14.685: gst_dmabuf_memory_get_fd: assertion 'gst_is_dmabuf_memory (mem)' failed error marshalling arguments for add: dup failed: Bad file descriptor Error marshalling request: Bad file descriptor 0:00:01.078829000 889 0xffff88000b70 ERROR wl_dmabuf gstwllinuxdmabuf.c:217:gst_wl_linux_dmabuf_construct_wl_buffer: zwp_linux_buffer_params_v1 time out 0:00:01.078882000 889 0xffff88000b70 ERROR wl_dmabuf gstwllinuxdmabuf.c:225:gst_wl_linux_dmabuf_construct_wl_buffer: can't create linux-dmabuf buffer Pipeline is PREROLLED ... Setting pipeline to PLAYING ... Redistribute latency... New clock: GstSystemClock ^Chandling interrupt. Interrupt: Stopping pipeline ... Execution ended after 0:00:02.173458875 Setting pipeline to NULL ... 私はwaylandディスプレイサーバー、weston(v 12.0.4)を使用していますコンポジターおよびgStreamer v1.24.0として VPU、GPU、DMA、...の間でバージョンが一致していませんか?どうすれば確認できますか?出力 abov には、「dmabufheaps ドライバーを開けませんでした」という警告が表示されます。どのドライバーを意味していますか?このドライバーは誰が提供しますか? 実際、私はグラフィックやマルチメディアのものにmeta-imxレイヤーを使用しています。もしかしたら、それは権利の問題かもしれません。 私はこの問題を調査するアイデアが恋しいです。ですから、どんな提案でもいただけるとありがたいです。 日時:GStreamer dmabufheapsの問題 名前変更の理由がわかりました。カーネルコンフィグCONFIG_CMA_SIZE_MBYTESが devicetree の linux,cma 項目のサイズを指定すると、新しいカーネルはデバイスの名前を "Reserved" に変更します。   私の場合、カーネル構成は次のとおりです。 CONFIG_CMA_SIZE_MBYTES=320   デバイスツリー (imx8mp.dtsi): resmem: reserved-memory { #address-cells = <2>; #size-cells = <2>; ranges; ocram: ocram@900000 { no-map; reg = <0 0x900000 0 0x70000>; }; /* * Memory reserved for optee usage. Please do not use. * This will be automaticky added to dtb if OP-TEE is installed. * optee@56000000 { * reg = <0 0x56000000 0 0x2000000>; * no-map; * }; */ /* global autoconfigured region for contiguous allocations */ linux,cma { compatible = "shared-dma-pool"; reusable; size = <0 0x3C000000>; alloc-ranges = <0 0x40000000 0 0xC0000000>; linux,cma-default; }; ... 0x3C000000は960MiBです。つまり、カーネル構成からは320MiBを超えていました。サイズを0x14000000に変更した後、/dev/dma_heapのデバイス名は、linux,cmaおよびlinux,cma-uncachedで期待どおりになりました。 日時:GStreamer dmabufheapsの問題 私はいくつかの調査を行い、名前が変更された2つのデバイスがあることがわかりました。 /dev/dma_heap/linux,cma は /dev/dma_heap/reserved と呼ばれるようになりました /dev/dma_heap/linux,cma-uncached は /dev/dma_heap/reserved-uncached という名前になりました 私は古い名前でこの新しいデバイスへの2つのシンボリックリンクを作りました、そして今ではgstreamerはうまく機能します。 デバイスの名前が変更されたのはなぜですか?そして、どうすればこれを変更できますか?
View full article
ADC 读取和 PWM 占空比控制 我已经在 S32K344EVB-172 上编写了此代码,并且运行良好。我可以读取 adc 数据并用 adc 值控制占空比。 现在,我已经为 S32K358 配置了此代码,并尝试在 S32K358 中使用此代码,但我得到的是 adc 数据“0”。
View full article
IMX6D UVC HI 我将IMX6D当作UVC USB と PC の接続を介した画像、win10 と win11 の少し前のバージョンでは、UVC 画像として正常に認識でき、通常の機能動作中、win11 が最新バージョンに更新されると、このデバイスは無法認証され、デバイス管理者が黄色を表示します。 i.MX6Dual Re: IMX6D UVC こんにちは、 これはおそらくWindows 11のドライバアップデートが原因です。UVCカメラドライバをロールバックしてみてください。 https://learn.microsoft.com/en-us/answers/questions/4113572/usb-2-0-hd-uvc-ウェブカメラドライバーの更新 Zhiming_Liu_0-1752713979313.png よろしくお願いします、 志明
View full article
How to Protect Core Peripherals from Non-Trusted ISRs on S32M244 (ARM Cortex-M4F) Hello all, I'm working with the S32M244 which uses an ARM Cortex-M4F core. I understand that the AIPS module can be used to protect system peripherals by configuring access rights. However, I'm concerned about protecting core peripherals (e.g., NVIC, Sys Tick, SCB) from non-trusted ISRs. Since all ISRs on Cortex-M4F run in privileged mode, even non-trusted ISRs can potentially access core peripherals. Given that: The Cortex-M4F does not support Trust Zone, The ARM MPU is not available on S32M244, AIPS does not cover core peripherals, What are the recommended strategies to restrict access to core peripherals from non-trusted ISRs? Thanks in advance. S32M2  Re: How to Protect Core Peripherals from Non-Trusted ISRs on S32M244 (ARM Cortex-M4F) Hello @Gokul_1, It is not possible to restrict the ISRs from accessing the registers as you pointed out. In general, every ISR should be as short as possible, use code review and static analysis, the non-rusted ISR can be placed in sectors that are write-protected (FPROT). S32M24x targets ASIL-B applications, refer to the safety manual that describes software safety measures that should be implemented to achieve the desired system level of functional safety integrity. Regards, Daniel
View full article
flash.bin FRDM IMX93 こんにちは、皆さん。 FRDM iMX93を使用しています。解凍後、 https://www.nxp.com/document/guide/getting-started-with-frdm-imx93 :GS-FRDM-IMX93?section=build-and-run に従ってみましたが、すべて完璧に動作しました。 今、私はカスタムの U-Boot、ATF、OPTEE が欲しいです。yocto と同じハッシュを使用しましたが、完璧にビルドできました。私は mkimage を使用して flash.bin を作成しましたが、この時点まではすべて正常です。 しかし、この flash.bin をフラッシュしようとすると (Balena を使用)、コンソールに何も起こりません。 動作中の yocto からフラッシュ、bin を使用しようとしましたが、同じで、起動しません。 flash.bin のみを使用して起動可能なイメージを作成するにはどうすればCANますか? u-boot を見ると、ブートによってカーネルの rootfs が後で追加されることがわかります。 よろしくお願いいたします。 あんぱ Re: flash.bin FRDM IMX93 SO 私にとってはこれが解決策でした: dd if=iMX93/flash.bin of=bootable.img bs=1K seek=32 conv=fsync Balena bootable.img が起動する場合よりも優れています。なぜエラーが発生するのかを解明する必要がありますが、少なくともコンソール出力は確認できます。 U-Boot SPL 2024.04-00003-g7e135e087e8(2025年7月19日 - 19:10:15 +0000) SOC: 0xa1009300 LC: 0x40010 パワーマネジメントIC: PCA9451A PMIC: オーバードライブ電圧モード エラー: ele_volt_change_start_req: ret -5、応答 0xf429 エラー: ele_volt_change_finish_req: ret -5、応答 0xf429 DDR: 3733MTS DDR: 3733MTS DRAM 2GB DRAMが一致しました M33準備OK 通常のブート BOOTROMから起動しようとしています ブートステージ: プライマリブート イメージオフセット 0x8000、ページサイズ 0x200、ivt オフセット 0x0 ROM_APIで0x40400からイメージをロードする 「同期中止」ハンドラ、ESR 0x02000000 elr: 00000000204e0000 lr: 000000002049dafc x 0: 00000000204e0000 x 1: 0000000020501ba0 x 2: 0000000000000fc0 x 3: 0000000083200040 x 4: 00000000204b6958 x 5: 0000000083200450 x 6: 0000000000000001 x 7: 0000000083200450 x 8: 000000000000000f0 x 9: 00000000796d7959 x10: 00000000796d7959 x11: 0000000000000001 x12: 0000000000000001 x13: 00000000000000012 x14: 0000000000000001 x15: 00000000000000003 x16: 00000000204a5ef4 x17: 0000000000000000 x18: 0000000020501c10 x19: 00000000204b9af8 x20: 00000000204b9ae0 x21: 0000000020501bb0 x22: 00000000デッドビーフ x23: 00000000204b9ae0 x24: 000000000000000f x25: 0000000000000000 x26: 00000000204ad81c x27: 00000000204ad000 x28: 00000000204ad804 x29: 0000000020501b30 コード: 00000000 00000000 00000000 00000000 (00000004) CPU をリセットしています... リセットしています... Re: flash.bin FRDM IMX93 返信ありがとうございます。試してみます。これが機能する場合、uuu ツールが ROM ブートによって認識されるヘッダーを挿入することを意味しますか?ブートシーケンスに関する詳細なドキュメントはありますか? Re: flash.bin FRDM IMX93 こんにちは、 Balena の代わりに UUU を使用することをお勧めします。 次のコマンドを試してください: uuu -b flash.bin よろしくお願いいたします。
View full article
SCTIMER Interupt 在 FRDM-MCXN947 板上的用法 亲爱的恩智浦社区 目前,我正在使用板载 SCTIMER 外设开发一个程序。我正试图通过 SCTIMER 在状态实现的第三个状态下启动 CTIMER0 外设,以产生 PWM 信号。该 PWM 信号被路由至 GPIO 引脚。为了实现这一点,我需要在第三个状态下实现中断,以便在该状态下专门启动 CTIMER0。不过,由于经验不足,我在编写此类中断程序时遇到了一些麻烦。你能帮帮我吗? 我目前正在编写的代码如下: void SCT0_IRQHandler(void) { SCTIMER_EventHandleIRQ(SCT0_PERIPHERAL); // 只有当 SCTIMER 达到状态 2 时才启动 CTIMER CTIMER_StartTimer(CTIMER0_PERIPHERAL); PRINTF("CTIMER started from SCTIMER state 2 event.\r\n"); } 静态 void SCT0_init(void) { CTIMER0_init(); SCTIMER_Init(SCT0_PERIPHERAL,&SCT0_initConfig); /* 启用 NVIC 中的中断 SCT0_IRQN 请求 */ /* 状态 0 初始化 */ SCTIMER_SetupPwm(SCT0_PERIPHERAL,&SCT0_pwmSignalsConfig[0]、 kSCTIMER_EdgeAlignedPwm, 100U, SCT0_CLOCK_FREQ,&SCT0_pwmEvent[0]); SCTIMER_SetupPwm(SCT0_PERIPHERAL,&SCT0_pwmSignalsConfig[2]、 kSCTIMER_EdgeAlignedPwm, 100U, SCT0_CLOCK_FREQ,&SCT0_pwmEvent[2]); SCTIMER_CreateAndScheduleEvent(SCT0_PERIPHERAL、 kSCTIMER_OutputRiseEvent, 0, kSCTIMER_Out_0, kSCTIMER_Counter_U,&SCT0_event[0]); SCTIMER_SetupNextStateAction(SCT0_PERIPHERAL, 1, SCT0_event[0]); SCTIMER_IncreaseState(SCT0_PERIPHERAL); /* 状态 1 初始化 */ /* 为 PWM 安排周期事件 */ SCTIMER_ScheduleEvent(SCT0, SCT0_pwmEvent[0]); /* 安排 PWM 的脉冲事件 */ SCTIMER_ScheduleEvent(SCT0, SCT0_pwmEvent[0] + 1); SCTIMER_SetupPwm(SCT0_PERIPHERAL,&SCT0_pwmSignalsConfig[1]、 kSCTIMER_EdgeAlignedPwm, 100U, SCT0_CLOCK_FREQ,&SCT0_pwmEvent[1]); SCTIMER_CreateAndScheduleEvent(SCT0_PERIPHERAL、 kSCTIMER_OutputRiseEvent, 0, kSCTIMER_Out_0, kSCTIMER_Counter_U,&SCT0_event[1]); SCTIMER_SetupNextStateAction(SCT0_PERIPHERAL, 2, SCT0_event[1]); SCTIMER_IncreaseState(SCT0_PERIPHERAL); /* 状态 2 初始化 */ /* 为 PWM 安排周期事件 */ SCTIMER_ScheduleEvent(SCT0, SCT0_pwmEvent[0]); /* 安排 PWM 的脉冲事件 */ SCTIMER_ScheduleEvent(SCT0, SCT0_pwmEvent[0] + 1); SCTIMER_SetupPwm(SCT0_PERIPHERAL,&SCT0_pwmSignalsConfig[3]、 kSCTIMER_EdgeAlignedPwm, 100U, SCT0_CLOCK_FREQ,&SCT0_pwmEvent[3]); SCTIMER_CreateAndScheduleEvent(SCT0_PERIPHERAL、 kSCTIMER_OutputRiseEvent, 0, kSCTIMER_Out_0, kSCTIMER_Counter_U,&SCT0_event_startCTimer); SCTIMER_SetCallback(SCT0_PERIPHERAL, SCT0_IRQHandler, SCT0_event_startCTimer); 启用 IRQ(SCT0_IRQn); } 下图显示了开始时的波形。目标是在黄色 PWM 信号的第四个上升沿开始蓝色 PWM 信号。 Starting_Process_SCT_CT.png 时钟|计时器 开发板 MCX N Re: SCTIMER Interupt Usage on FRDM-MCXN947 board 您好@Kevin_Pang, 您遇到的问题似乎在下一个主题中讨论过。我建议按照 ZhangJennie 提供的建议进行操作,看看是否有助于解决问题。 BR Habib Re: SCTIMER Interupt Usage on FRDM-MCXN947 board 亲爱的 Habib, 我试着运行了一个基本的 sdk 示例,但还是遇到了同样的错误。 谨致问候、 凯文 Re: SCTIMER Interupt Usage on FRDM-MCXN947 board 你好 @Kevin_Pang,你 能否尝试运行一个 SDK 示例,比如 " hello_world、" 来确定异常是由你的代码引起的还是你的板特有的? BR Habib Re: SCTIMER Interupt Usage on FRDM-MCXN947 board 亲爱的哈比卜 感谢您的联系。 我现在在开发板上遇到了问题。因此,在尝试调试我的项目时,它引发了一个异常:"Unable to open probe index 1" ,错误信息为:"Probe not open" 。之后,它就无法与核心连接了。在我的设置没有任何改变的情况下,这种情况突然发生了。您能帮我解决这个问题吗? 谨致问候, Kevin Pang Re: SCTIMER Interupt Usage on FRDM-MCXN947 board 您好@Kevin_Pang, ,很高兴您的问题得到了解决。如果有什么需要我帮忙的,请告诉我。 BR Habib Re: SCTIMER Interupt Usage on FRDM-MCXN947 board 问题解决了: 我已经找到了正确编程中断的解决方案。代码实现如下(CTIMER init 未显示): void SCT0_IRQHandler(void) { SCTIMER_EventHandleIRQ(SCT0_PERIPHERAL); } 无效 启动_CTIMER(void) { // 只有当 SCTIMER 达到状态 2 时才启动 CTIMER CTIMER_StartTimer(CTIMER0_PERIPHERAL); PRINTF("CTIMER started from SCTIMER state 2 event.\r\n"); } 常数 sctimer_config_tSCT0_initConfig = { .enableCounterUnify = true、 .clockMode = kSCTIMER_System_ClockMode, .clockSelect = kSCTIMER_Clock_On_Rise_Input_0, .enableBidirection_l = false、 .enableBidirection_h = false、 .prescale_l = 0U、 .prescale_h = 0U、 .outInitState = 0U、 .inputsync = 0U }; 常数 sctimer_pwm_signal_param_tSCT0_pwmSignalsConfig[4] = { { .输出 = kSCTIMER_Out_0, .level = kSCTIMER_HighTrue, .dutyCyclePercent = 50U }, { .输出 = kSCTIMER_Out_1, .level = kSCTIMER_HighTrue, .dutyCyclePercent = 100U }, { .输出 = kSCTIMER_Out_1, .level = kSCTIMER_HighTrue, .dutyCyclePercent = 0U }, { .输出 = kSCTIMER_Out_1, .level = kSCTIMER_HighTrue, .dutyCyclePercent = 0U } }; uint32_tSCT0_pwmEvent[4]; uint32_tSCT0_event[4]; uint32_tSCT0_event_startCTimer; 静态 void SCT0_init(void) { SCTIMER_Init(SCT0_PERIPHERAL,&SCT0_initConfig); /* 启用 NVIC 中的中断 SCT0_IRQN 请求 */ /* 状态 0 初始化 */ SCTIMER_SetupPwm(SCT0_PERIPHERAL,&SCT0_pwmSignalsConfig[0]、 kSCTIMER_EdgeAlignedPwm, 100U, SCT0_CLOCK_FREQ,&SCT0_pwmEvent[0]); SCTIMER_SetupPwm(SCT0_PERIPHERAL,&SCT0_pwmSignalsConfig[2]、 kSCTIMER_EdgeAlignedPwm, 100U, SCT0_CLOCK_FREQ,&SCT0_pwmEvent[2]); SCTIMER_CreateAndScheduleEvent(sct0_peripheral、 kSCTIMER_OutputRiseEvent, 0, kSCTIMER_Out_0, kSCTIMER_Counter_U,&SCT0_event[0]); SCTIMER_SetupNextStateAction(SCT0_PERIPHERAL, 1, SCT0_event[0]); SCTIMER_IncreaseState(SCT0_PERIPHERAL); /* 状态 1 初始化 */ /* 为 PWM 安排周期事件 */ SCTIMER_ScheduleEvent(SCT0, SCT0_pwmEvent[0]); /* 安排 PWM 的脉冲事件 */ SCTIMER_ScheduleEvent(SCT0, SCT0_pwmEvent[0] + 1); SCTIMER_SetupPwm(SCT0_PERIPHERAL,&SCT0_pwmSignalsConfig[1]、 kSCTIMER_EdgeAlignedPwm, 100U, SCT0_CLOCK_FREQ,&SCT0_pwmEvent[1]); SCTIMER_CreateAndScheduleEvent(sct0_peripheral、 kSCTIMER_OutputRiseEvent, 0, kSCTIMER_Out_0, kSCTIMER_Counter_U,&SCT0_event[1]); SCTIMER_SetupNextStateAction(SCT0_PERIPHERAL, 2, SCT0_event[1]); SCTIMER_IncreaseState(SCT0_PERIPHERAL); /* 状态 2 初始化 */ /* 为 PWM 安排周期事件 */ SCTIMER_ScheduleEvent(SCT0, SCT0_pwmEvent[0]); /* 安排 PWM 的脉冲事件 */ SCTIMER_ScheduleEvent(SCT0, SCT0_pwmEvent[0] + 1); SCTIMER_SetupPwm(SCT0_PERIPHERAL,&SCT0_pwmSignalsConfig[3]、 kSCTIMER_EdgeAlignedPwm, 100U, SCT0_CLOCK_FREQ,&SCT0_pwmEvent[3]); SCTIMER_CreateAndScheduleEvent(sct0_peripheral、 kSCTIMER_OutputRiseEvent, 0, kSCTIMER_Out_0, kSCTIMER_Counter_U,&SCT0_event_startCTimer); SCTIMER_SetCallback(SCT0_PERIPHERAL, Start_CTIMER, SCT0_event_startCTimer); SCTIMER_EnableInterrupts(SCT0, (1U<< SCT0_event_startCTimer)); 启用 IRQ(SCT0_IRQn); } Kevin_Pang_0-1752496755589.png  
View full article
マルチ管理者モードでのコミッショニング中に応答がないため JN5189 RCP で OTBR エージェントがタイムアウトする 問題の概要 JN5189 RCP で OTBR を使用してマターマルチ管理者コミッショニング中に障害が発生しています。CHIPTool Android APK を使用したプライマリコミッショニングが正常に完了しました。ただし、CHIP Tool CLI を使用した二次コミッショニングは失敗します。 このプロセス中、otbr-agent ログには RCP との通信時にタイムアウトが繰り返し発生したことが記録され、エージェントが応答しなくなります。回復する唯一の方法は、エージェントを手動でリセットするか、RCP を再接続することです。 セットアップの詳細 コンポーネント: バージョン/説明 -----------------------------|-------------------------------------------------------- プライマリコミッショナー:CHIPTool Android APK セカンダリコミッショナー: CHIP ツール CLI (Linux) Thread デバイス:Nanoleaf A27バルブ RCP プラットフォーム: UART 経由の NXP JN5189 RCPファームウェアコミット: dfbe12280af4a87cb9ae0c0c1d90d71de3372d82 (ot-nxpから) OTBR プラットフォーム: Ubuntu 22.04 (x86_64) カーネルバージョン: Linux 6.8.0-60-generic ##63~22.04.1-UbuntuSMP プリエンプトダイナミック OTBRコミット: b8bab1babcb040251b51a69ccb4008fb4b9e2d3f CHIP ツール CLI コミット: 9af93fd3e9eab4315e1097b19112ebac01d1ad94 再現手順 JN5189 RCP をコネクテッドして初期化した状態で OTBR を起動します。 CHIPTool Android APK を使用してプライマリコミッショニングを実行します (成功)。 APK を使用して、複数管理者のコミッショニング ウィンドウを開きます。 CHIP ツール CLI を使用して二次コミッショニングを試みます。 otbr-agent の動作とログ出力を観察します。 Re: OTBR Agent Timeout with JN5189 RCP During Commissioning in Multi-Admin Mode Due to No Response こんにちは、ルイス。 1) ボーレート「1000000」を使用してみましたが、通信中にフレーミング エラーが発生します。 UART_DRIVER と SERIAL_MGR の両方でテストしました。これら 2 つのうち、より信頼性が高く、好ましい選択肢としてどちらをお勧めしますか? さらにデバッグするために、ログを有効にして、USART FIFO オーバーフロー レジスタの値を確認しました。FIFOSTAT に RXERR ビットが設定されていることに気付きました。 参考までに、USART0 は 32 MHz (XTAL から供給) でクロックされ、メイン クロックは 48 MHz で動作しています。 BR、 ヴィカシュ Re: OTBR Agent Timeout with JN5189 RCP During Commissioning in Multi-Admin Mode Due to No Response こんにちは、ヴィカシュ ボーレートはホストが確立したものに依存します。アドバイスとして、「1000000」を試してみるとよいかもしれません。参考までに、このボーレートは K32W の例ではデフォルトです。 JN5189 では USART0 と USART1 を使用してソフトウェア フロー制御がサポートされていますが、ハードウェア フロー制御の方が信頼性が高く、データに干渉しません。決定は各お客様に委ねられます。UM11138 23.6.5.2 章に記載 よろしくお願いいたします。 ルイス Re: OTBR Agent Timeout with JN5189 RCP During Commissioning in Multi-Admin Mode Due to No Response こんにちは、ルイス。 ご返信ありがとうございます。 私は、nRF52840 DK を搭載した Raspberry Pi 4B を使用してセットアップをテストしましたが、その構成では RCP TX タイムアウトやリセットは発生しませんでした。このことから、この問題は JN5189 の RCP イメージまたは UART 構成に関連している可能性が高いと考えられます。 最終的なハードウェア セットアップでは、RTS/CTS ハードウェア フロー制御はサポートされていないSO、フロー制御のない UART に制限されます。次の制約を考慮すると: 1) ハードウェア フロー制御が利用できない場合に JN5189 RCP に推奨される UART ボー レートは何ですか? 2) データ損失のリスクを軽減するために調整する必要があるバッファ サイズ、タイミング パラメータ、またはドライバ レベルの設定はありますか? 3) このシナリオではソフトウェア フロー制御 (XON/XOFF) はサポートまたは推奨されますか? よろしくお願いします ヴィカシュ Re: OTBR Agent Timeout with JN5189 RCP During Commissioning in Multi-Admin Mode Due to No Response こんにちは、 UART クロックはタイミング精度に影響します。UART クロックが不安定な場合は、ホストと RCP 間の同期が失われる可能性があります。 デバイス間のボー レートを慎重に一致させ、許容マージンをテストして、より低いボー レートを試すこともできます。 あるいは他の選択肢として、FRO32Kの代わりに、より正確なクロック周波数を提供するXTAL32K発振器に切り替えることもできます。詳細については、ユーザーマニュアル[UM11138]の4.4.4章を参照してください。UM11138 よろしくお願いいたします。 ルイス Re: OTBR Agent Timeout with JN5189 RCP During Commissioning in Multi-Admin Mode Due to No Response こんにちは、 ご返信ありがとうございます。 いくつか質問と意見があります。 UART クロック ソースはタイミング精度とデータ サンプリングに大きな影響を与えますか? 現在、システムはクロック ソースとして FRO32K を使用するように構成されています。 観察: ホストとの通信をテストする場合: 1 Mbps では、10 回中 3 回程度成功します。 115200 では通信が成功することはほとんどありません。 この問題は、低周波数 (32.768 kHz) クロックを使用しているために UART ボー レートの生成が不正確になることに関連している可能性があります。 Re: OTBR Agent Timeout with JN5189 RCP During Commissioning in Multi-Admin Mode Due to No Response こんにちは、 返事が遅くなり申し訳ありません。JN5189はUSART0のハードウェアフロー制御をサポートしています。詳細については、ユーザーマニュアル[UM11138]の23.6.5.1章をご覧ください。UM11138 ボーレートはホストが確立したものに依存します。 よろしくお願いいたします。 ルイス Re: OTBR Agent Timeout with JN5189 RCP During Commissioning in Multi-Admin Mode Due to No Response こんにちは、ルイス。 両端のログを確認したところ、RCP 側でデータの破損や損失が発生していることに気付きました。 この特定のCASEにおいて、JN5189 に最適な UART ボー レートを提案していただけますか? Re: OTBR Agent Timeout with JN5189 RCP During Commissioning in Multi-Admin Mode Due to No Response こんにちは、ルイス。 フィードバックと参考リンクの共有をありがとうございます。 i.MX8M プラットフォームはすでに注文済みで、現在は到着を待っています。その間、既存の JN5189 セットアップを使用してデバッグを継続したいと思います。 その一環として、JN5189 が UART インターフェース上のハードウェア フロー制御をサポートしているかどうかを確認したかったのです。これにより、問題を切り分けながら通信の安定性を評価することができます。 ありがとう ヴィカシュ Re: OTBR Agent Timeout with JN5189 RCP During Commissioning in Multi-Admin Mode Due to No Response こんにちは、 ファイル nxp_vendor_hook.cpp を確認します。このファイルは、JN5189 と K32W061 の両方に宛てられています。 テスト目的のためだけに、i.MX8M を使用して問題の根本原因を特定することをお勧めします。 以下のリンクは、コンサルティングのためにi.MXでOpen Thread Border Routerを実行する例にリダイレクトします。 ターゲットにOpenThread Border RouterとOpenther Deamonを設定する方法 よろしくお願いいたします。 ルイス Re: OTBR Agent Timeout with JN5189 RCP During Commissioning in Multi-Admin Mode Due to No Response こんにちは、ルイス。 早急なご対応ありがとうございます。 次の 2 つのプラットフォームでセットアップをテストしましたが、両方で同じ問題が発生しました。 i) ノートPC(Ubuntu) ii) ルーター(OpenWRT) 1) コミッショニング プロセス中の私の観察では、Thread エンド デバイスは、要求に応じてチップ ツール コミッショナーに一連のメッセージを迅速に送信します。この急激なトラフィックの急増により、RCP が一部のパケットをドロップする可能性がありますが、OTBR はこれを予期して待機している可能性があります2)。 2) 外部委託に関しては、主な制約は PSKd であると考えています。そのため、Thread グループに懸念を表明し、現在は返答を待っています。 3) 次の問題もご覧頂けますでしょうか? K32W061 プラットフォーム用にビルディングするときに使用される nxp_vendor_hook.cpp ファイルがあります。 JN5189 プラットフォームに同様のファイルが存在するかどうか、またはコンパイル時に DOT_NCP_VENDOR_HOOK_SOURCE マクロを有効にすることで、JN5189 の既存の nxp_vendor_hook.cpp を再利用できるかどうかが疑問です。 Re: OTBR Agent Timeout with JN5189 RCP During Commissioning in Multi-Admin Mode Due to No Response こんにちは、 コンピューターの代わりに MCU/MPU を使用して OTBR を実行することをテストしましたか?NXP がサポートする例とガイドラインはさまざまなホストのテストを対象としており、それに関する詳細情報があります。 K32W061 のコンパイルは JN5189 にも適用できます。どちらも非常に似ています。 また、これが追加のコミッショニングの問題に当てはまる場合は、 External Commissioning | OpenThreadで確認していただけますか? よろしくお願いいたします。 ルイス Re: OTBR Agent Timeout with JN5189 RCP During Commissioning in Multi-Admin Mode Due to No Response nxp_vendor_hook.cppがありますK32W061 プラットフォーム用にコンパイルするときに使用されるファイル。 JN5189プラットフォーム用の同様のファイルはありますか?または、JN5189で再利用するには、 コンパイル中の DOT_NCP_VENDOR_HOOK_SOURCE マクロを含める/有効にすることで可能ですか? ?
View full article
モデルベース設計のインストール問題 MATLABでインストールされたNXPパッケージを検証する際にエラーが発生します >> NXP_サポート_パッケージ_S32K1xx contains の使用エラー 最初の引数はテキストである必要があります。 NXP_Support_Package_S32K1xx>OpenToolbox_Callbackでエラーが発生しました(行 231 ) 結果(i) = 含まれている(ツールボックス(i).名前、'NXP_MBDToolbox_S32K1xx'); ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ gui_mainfcnのエラー(行 95 ) feval(varargin{:}); ^^^^^^^^^^^^^^^^^^ NXP_Support_Package_S32K1xx (行34 )のエラー gui_mainfcn(gui_State, 可変長引数{:}); ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ matlab.graphics.internal.figfile.FigFile/read>@(hObject,eventdata)NXP_Support_Package_S32K1xx('OpenToolbox_Callback',hObject,eventdata,guidata(hObject))でエラーが発生しました   matlab.ui.internal.controller.uicontrol.UIControlController/triggerActionEvent の使用中にエラーが発生しました( 行 76) UIControl コールバックの評価中にエラーが発生しました。   Re: Model based design installtion problem こんにちは、ジェリー。 私も同じ問題を抱えていました。 NXP_Support_Package_S32K3xx.m で、次の行を置き換えます。 結果(i) = 含まれている(ツールボックス(i).名前、'NXP_MBDToolbox_S32K3xx');   と: 空の場合(ツールボックス(i).名前) そうでない場合、 結果(i) = 含まれている(ツールボックス(i).名前、'NXP_MBDToolbox_S32K3xx'); end   私のCASE、toolboxes 変数に空のメンバーがあり、それがエラーの原因だったようです。 AlexCloutierDyname_0-1753212718436.png この置換を .m 内で 3 回実行する必要があります。 お役に立てば幸いです。 アレックス   Re: Model based design installtion problem SO、どうやって解決するのでしょうか? Re: Model based design installtion problem こんにちは、 ここでの主なエラーは次のとおりです。 contains の使用エラー 最初の引数はテキストである必要があります。 これは、contains に渡される変数 toolboxes(i).Name が、本来は文字列または char 配列であるはずなのに、そうではないことを意味します。 宜しくお願いします、 Tim
View full article
S32G399A 无法从 或非 闪存启动 你好 我们在板上使用 Micron 或非 Flash MT35XU512ABA1G12-0AUT。 而且我们从或非闪存启动时遇到了问题。(简单的应用是拨动 PE_01 使 LED 闪烁)。 我在下面附上了相关文件: 1.QuadSPI 参数文件:test_Qspi.bin 2.引导加载程序+应用程序组合 bin:led_test_0606_blob2.bin 3.S32 闪存工具算法:fsdk_qSpi_mt35xu512.bin JalseyXie_1-1749190402676.png 您能帮忙检查一下是否缺少任何步骤吗? 谢谢。 此致, 贾尔西 Re: S32G399A Fail to Boot from NOR Flash 您好,我今天又遇到了一个问题,在刻录时只能擦除,不能继续,请帮我看看。 读取闪存 ID 也是正确的 LONGGANGSU_0-1753806039310.png LONGGANGSU_1-1753806052649.png Re: S32G399A Fail to Boot from NOR Flash 我已经解决了这个问题,谢谢。 Re: S32G399A Fail to Boot from NOR Flash 你好,@LONGGANGSU、 是的,我们使用自定义 qspi 参数管理从或非闪存启动。 但是对于你正在使用的或非闪存,你应该能够使用 S32FT 中的这个算法从闪存中启动。 JalseyXie_0-1753665092831.png Re: S32G399A Fail to Boot from NOR Flash 您好,请问您的问题是否已经解决?我目前使用的 S32G399A 芯片的闪存型号为 MX25UW51245。我目前的情况是,可以使用 FLASH TOOLS 工具成功刻录和验证。但是,当我将 BOOTMOD 配置为 RCON 时,它无法从闪存启动。我可以使用示波器测量 SCK 和 CS 信号。SCK 时钟频率为 28MHz,但只持续了约 1.3 毫秒。 Re: S32G399A Fail to Boot from NOR Flash hi,JalseyXie 抱歉,回复晚了。 请检查以下地址是否填写正确。 Joey_z_0-1749700840290.png 如果您确认燃烧方法没有问题。 你可以尝试使用 M 或 A 内核来检查刻录到或非 FLASH 的内容是否正确,看看你的烧录算法是否有任何问题。 希望能帮到你。 BR 乔伊 Re: S32G399A Fail to Boot from NOR Flash 你好@Joey_z、 关于这个职位,您有任何更新吗? 我在社区中发现了类似的问题:或非刷新到 SRAM 后 QSPI 启动无法加载映像应用程序-恩智浦社区 此致, 贾尔西 Re: S32G399A Fail to Boot from NOR Flash 你好@Joey_z、 在 S32 闪存工具中使用fsdk_qSpi_mt35xu512.bin 闪存没有出错,但我不确定美光闪存是否兼容这种算法。 是的,使用调试器切换 PE_01 就可以了。 此致, 贾尔西 Re: S32G399A Fail to Boot from NOR Flash 嗨,JalseyXie 感谢您与我们联系。 您可以使用 fsdk_qSpi_mt35xu512.bi 吗? 通常在 S32 Flash 工具中使用算法对或非 Flash 进行编程?另外,您能否使用简单应用程序的调试器来切换 PE_01? BR 乔伊
View full article
H264エンコード前のグラフィック付きIMX8ビデオオーバーレイ こんにちは。私たちは 1920x1080p30 ビデオカメラを使用した目視検査システムを設計しています。 低電力システムでは、H264 エンコードの前とディスプレイの前に、ビデオ ストリームにグラフィックをオーバーレイする必要があります。iMX8M-Plus のような SOC でこれを行う方法に関する情報が見つかりません。iMX6 には、最大解像度 1024x1024 (1920x1080 の場合は 4 倍) でビデオ ストリームにグラフィックを合成/オーバーレイできる IPU がありました。iMX8M ファミリでは、ビデオ プロセッシングのこの側面が失われているようです。 SO、2D または 3D GPU は、通常の表示作業も実行しながら、メモリへのこの合成/オーバーレイを実行する必要があると思います。これを処理するための gstreamer プラグインは存在しないようです、SO何かを作成する必要があります。しかし、この段階で私が知りたいのは、次のことです。 1. iMX8-Plus ハードウェアは、CPU 使用率を最小限に抑えてこれを実現できますか (カメラは YUV I422/I421 で、コンポーザー/オーバーレイ出力は VPU エンコーダー (NV12 ?) とディスプレイに供給する必要があります)? 2. これについてどのように進めればよいか、何かアイデアはありますか?通常の X11/Wayland グラフィックス GUI が使用されている間は GPU を使用し、ゼロ コピー DMA バッファー パイプラインなどを通じてデータを供給する必要があります。 Terry Re: IMX8 Video overlay with graphics before H264 encode 私たちのアプリケーションでは簡単です。オーバーレイ QImage は、1 秒に 1 回程度非同期的に作成されます (実際には 2 つの QImage があり、1 つは描画用、もう 1 つは切り替え用の Mutex による表示用です)。 gstreamer appsrc 要素は、5 fps でビデオ フレームを送信するように構成されており、QImage を取得して、imxcompositor_g2d を介して gstreamer ストリームに挿入します。 ogstOverlaysrc=gst_bin_get_by_name(GST_BIN(ogstPipeline), "appsrc"); if(ogstOverlaySrc){ g_object_set(G_OBJECT(ogstOverlaySrc), "caps", gst_caps_new_simple("video/x-raw", "format", G_TYPE_STRING, "BGRA", "width", G_TYPE_INT, osize.width(), "height", G_TYPE_INT, osize.height(), "framerate", GST_TYPE_FRACTION, 5, 1, NULL), NULL); g_object_set(G_OBJECT(ogstOverlaySrc), "stream-type", 0, // GST_APP_STREAM_TYPE_STREAM "format", GST_FORMAT_TIME, "is-live", FALSE, NULL); g_signal_connect(ogstOverlaySrc, "need-data", G_CALLBACK(gstOverlayAddFrameCallback), gpointer(this)); } パイプライン ビット: imxcompositor_g2d name=c latency=20000000 sink_1::alpha=1.0 ! identity drop-allocation=true v4l2src device=/dev/video3 ! video/x-raw,width=1920,height=1080,framerate=25/1 ! c.sink_0 appsrc name="appsrc" ! videoconvert ! video/x-raw,format=ARGB ! c.sink_1 Re: IMX8 Video overlay with graphics before H264 encode 詳しいご回答ありがとうございます!もしよろしければ、これに基づいてさらにいくつか質問します。 1.QT オーバーレイとビデオ フレームをどのように同期させていますか?データ オーバーレイは、対応するビデオ フレームに正しく同期される必要があると思われます。 2. QT + Gstreamer の組み合わせについてはあまり詳しくないのですが、この 2 つがどのようにインターフェースされるかについてもう少し詳しく教えていただけますか?QT アプリ内で Gstreamer を使用してビデオを取得する方法についていくつかの情報を見つけましたが、それは私たちがやろうとしていることではありませんでした。 PS: あなたの投稿を最初に解釈すると、オーバーレイを画像として保存し、それを appSrc を使用して挿入していると思われます。そのリンクは私にとってはよく分かりません。 ありがとう! Re: IMX8 Video overlay with graphics before H264 encode そうですね、1920x1080p25 のビデオ ストリームを送信するアナログ カメラがあり、それにオーバーレイしています。Qt を使用して、フル 1920 x 1080 サイズの QImage にオーバーレイ イメージを作成し、次に gstreamer appSrc を使用して、これをアルファ = 1.0 のビデオ ストリームとともに imxcompositor_g2d ソースの 1 つに挿入します。 私たちの場合、これ以上の速度は必要ないため、Qt 描画側での CPU 使用率を節約するために appSrc gstreamer オーバーレイ フレームを 5 fps で生成しましたが、問題なく 25 fps を完全に実行できました。 FHD ビデオ ストリームをキャプチャし、テキスト/グラフィックをオーバーレイし、H264 エンコードしながら LCD パネルに表示し、ファイルに保存し、サウンド ストリームを管理する当社のシステムでは、imx8mp の全体的な使用率 (4コア) は約 25% です。 しかし、IMX8mp を gstreamer で操作するのは、ちょっとした危険地帯です。詳細なドキュメントがなく、内部的には比較的複雑なシステムであるため、効率的に動作させるには、gstreamer の配置や設定(多くはわかりにくい)を試行錯誤する必要があることがよくあります。 Re: IMX8 Video overlay with graphics before H264 encode @TerryBarnaby1 、このソリューションを使用して、どのようなフレームレートを実現できましたか?私たちはさまざまなオプションを評価していますが、カメラからキャプチャしたフレームに図形を描画したりテキストを重ねたりするための潜在的な解決策に関するリソースはほとんどありません。 よろしくお願いします! Re: IMX8 Video overlay with graphics before H264 encode こんにちは、テリー 私のCASE、位置と解像度が設定されたビデオウィンドウを内部に持つシンプルなWaylandアプリケーションのようなユースケースを考えてみましょう。最善のアプローチは何でしょうか?複数の egl サーフェスを使用しますか?あるいはウェイランドの地下表面ですか?どちらのアプローチがより良いかご提案いただけますか? Re: IMX8 Video overlay with graphics before H264 encode こんにちは 上記の質問に関して何か情報はありますか? waylandsink にはアルファ プロパティに関する制限がありますか? また、GPU/VPU を使用してクロマキー プロパティを使用する方法については何かアイデアがありますか? Re: IMX8 Video overlay with graphics before H264 encode こんにちはNXP waylandsink のアルファ プロパティが機能しません (5.4.70- imx8mplus) 、何か制限がありますか? Re: IMX8 Video overlay with graphics before H264 encode こんにちは 複数のビデオを実行するシンプルなWaylandアプリケーションを検討してください もう 1 つのポイントとして、waylandsink (imx8m-plus) のアルファ プロパティを使用しようとしていますが、機能しません。ここには何か制限がありますか? Re: IMX8 Video overlay with graphics before H264 encode それはあなたが具体的に何をしたいかによると思います。iMX8mp ハードウェア、実装された gstreamer モジュール、Wayland サーバー コード、GUI ツールキットなどを理解する必要がありますが、その情報は不足しており、私は専門家ではありません。また、W ayland GUI レイヤーの意味によっても異なります。 私の場合、Qtウィンドウに表示する前にビデオストリームにテキストをオーバーレイし、さらにH264エンコードしてファイルに出力する必要がありました。Qt GUIプラットフォームを使用しています。コードでは、ビデオにオーバーレイされるグラフィカル「レイヤー」(この例ではtest1.pngから取得)を、通常のQt描画プリミティブを使用してQt QImageで生成し、gstreamerの「appsrc name=\"appsrc\" ! videoconvert ! imagefreeze ! c.sink_1」部分パイプラインを使用してimxcompositor_g2dに送り込んでいます。画面出力は「waylandsink name=\"videoSink\"」で、このwaylandsink領域をアプリケーション内の特定のQtウィンドウ上で移動およびサイズ調整するためのC++ GUIコードが含まれています。 Re: IMX8 Video overlay with graphics before H264 encode こんにちは、テリー ご意見ありがとうございます。ビデオ レイヤーと Wayland GUI レイヤーをブレンドしたい場合、同様のアプローチで可能ですか? Re: IMX8 Video overlay with graphics before H264 encode 現在の (NXP Yocto hardknott) ベースの Linux では、グラフィックス 2D エンジンを使用してオーバーレイ プロセッシングを実行できることがわかりました。gstreamed imxcompositor_g2d モジュールはこれをCAN。典型的な gstreamer コマンドは次のようになります。 gst-launch-1.0imxcompositor_g2d name=c sink_1::alpha=0.5 !waylandsink v4l2src デバイス=/dev/video3 !ビデオ/x-raw、幅=1920、高さ=1080、フレームレート=30/1 !c.sink_0 マルチファイルrc location=./test1.png caps=image/png,framerate=1/1 !pngdec !画像フリーズ!c.シンク_1 これにより、フル HD カメラ ストリームが取得され、その上に test1.png ファイルがオーバーレイされます。imxcompositor_g2d に続いて、このビデオ ストリームを "vpuenc_h264 に渡すCAN。h264parse !アビムックス!「filesink location=/tmp/temp.avi」と入力して、ハードウェア h264 エンコーダーを使用してエンコードし、必要に応じて h264 エンコーダーだけでなくディスプレイにも出力します。 Re: IMX8 Video overlay with graphics before H264 encode こんにちは 私も同様の要件で作業しており、imx8m plus プラットフォームでビデオ オーバーレイをテストする方法を理解したいと思いますが、残念ながら、2021 年 1 月 13 日の L5.4.70_2.3.0 の Linux ユーザー ガイドのドキュメントには imx8m-plus 固有の情報がなく、プラグインoverlaysinkも利用できません。 Re: IMX8 Video overlay with graphics before H264 encode どうもありがとう。 「i.MX Linux ®ユーザー ガイド」にビデオ プロセッシング アーキテクチャ (ハードウェアおよびソフトウェア レイヤー/API およびパッケージ) の概要と履歴が記載されており、NXP Yocto BSP およびコミュニティ Yocto BSP でこれがどのようにサポートされているかが説明されていると便利です。 Re: IMX8 Video overlay with graphics before H264 encode ハイ はい、 imx-gst1.0-plugin が gstreamer1.0-plugins-imx に置き換えられました。 i.MX6ファミリでは、ビデオレンダリングはDRIではなくG2Dに依存します。 i.MX8ファミリでは、WaylandがDRIを使用しているため、ビデオレンダリングはDRIに依存します。 Re: IMX8 Video overlay with graphics before H264 encode 情報ありがとうございます。ただし、これは特定の NXP BSP リリースに固有の情報です。 カスタム ボード用の Yocto リリースを作成する必要があるため、最新のビデオ プロセッシング gstreamer 要素を取得するには、これ用の Yocto ビルドを構成する必要があります。NXP「Yocto」ビルドはコミュニティ ビルド (より主流) とは異なり、BSP タイプと 3 つの異なるカーネル バリアント、そしてさまざまなカーネル ドライバ構成などの付属品がすべて存在します。また、古い Yocto ビルドには、さまざまな gstreamer 要素やドライバなどがあります。 私は、現在および計画中のビデオ プロセッシング ソフトウェア ツリーの基礎が何であるかを理解しようとしているだけなので、ビルドではこれに従います。カスタム ボードにはコミュニティの Yocto BSP を使用すると言われていますが、これは NXP Yocto wrt ビデオ プロセッシングとはまったく異なります。例えば、ユーザーレベルではgstreamer1.0-plugins-imxがありますおよびimx-gst1.0-プラグインどちらのパッケージも、IMX6DL 用のコミュニティ ベースの Yocto dunfell ビルドではビルドされません。 imx-gst1.0-pluginはパッケージはgstreamer1.0-plugins-imxから引き継がれましたすべての IMX バリアントで、これは DRI GPU インターフェース ルートに依存しますか? 私は、最も賢明な方法で開発できるように、ハードウェア ビデオ プロセッシング ソフトウェア/ハードウェア アーキテクチャ/パッケージとその履歴全体を理解したいと考えています。 Terry Re: IMX8 Video overlay with graphics before H264 encode ハイ すべての BSP リリース ノートと i.MX GStreamer 1.0 プラグインの詳細は、i.MX_Linux_Release_Notes.pdf (マルチメディア) に記載されています。 i.MX_Linux_Users_Guide.pdf では、テストの実行方法について説明しています。 最後に言及した点については、リリースノートに次のように書かれています。 i.MX 6ファミリ: • overlaysink : G2Dベースのビデオシンクプラグイン • imxv4l2sink: V4L2ベースのビデオシンクプラグイン Re: IMX8 Video overlay with graphics before H264 encode 情報ありがとうございます。imx8m は一部のビデオプロセッシングをサポートしていないことがわかりましたが、2D GPU を搭載していないためリリースしていませんでした。この iMX8 シリーズは非常に乱雑で、部品の命名も奇妙です。 しかし、基本的な疑問は残ります。私たちのデザインでは imx8mq をターゲットにしておらず、おそらく IMX8M-Plus または IMX8-DualXPlus を使用することになるでしょう。私が決定しようとしているのは、一般的な H264 の前に、ハードウェア ビデオ合成をサポートする適切な Yocto リリースを構築する方法です。 ソフトウェア サポートは過去 5 年間で大きく変化しており、Yocto リリースを作成するためのルートは多数あり、カーネル内外のグラフィックスおよびビデオ プロセッシング ドライバの変更も数多く行われています。これらの変更や、方向性がどこに向かっているのか、どのようなユーザー レベル API とカーネルおよびカーネル レベル API が必要なのかについての、簡単な全体ガイドは存在しないようです。SO私はこれを理解して、最初にビデオプロセッシングのコンセプトをテストし、次にボードをデザインして、このカスタム ボードに適した Yocto ビルドを作成できるようにしたいと考えています。 例えば、imx-gst1.0-pluginはパッケージはgstreamer1.0-plugins-imxを置き換えましたパッケージと、いつ、どのような低レベル API/ドライバが必要/サポートされるか (DRI ?)。iMX6 と iMX8M-Plus に互換性のあるシステムを構築したいのですが、それが可能かどうかわかりません。 Terry Re: IMX8 Video overlay with graphics before H264 encode ハイ i.MX8MQには2D GPUがないSO、 imxcompositor_g2dは使用できません。別のimxcompositorを試すCAN。 BR Re: IMX8 Video overlay with graphics before H264 encode 情報ありがとうございます。これを試して、この出力が H264 VPU エンコーダーを介して取得CANこと、およびこれの全体的な CPU 使用率を証明したいと思います。しかし、gstreamer imxcompositor_g2d プラグインはどこでどうやって入手すればいいのでしょうか?私は、iMX6 および iMX8 テスト プラットフォームに適したコミュニティまたは nxp ベースの Yocto ビルドを構築しようとしていますが、このプラグインを見たことはありません。NXP gstreamer プラグインは現時点ではかなり混乱しているようです。 このユーザーレベルの部分はgstreamer1.0-plugins-imxにあるべきでしょうか?パッケージ ? 「 https://github.com/Freescale/fsl-community-bsp-platform -b dunfell」を使用してIMXコミュニティYoctoリリースをビルドすると、gstreamer1.0-plugins-imxをビルドできませんパッケージ。 IMX NXP Yocto リリースをビルドする場合: " https://source.codeaurora.org/external/imx/imx-manifestimx8mqevk マシンの「-b imx-Linux-zeus -m imx-5.4.70-2.3.0.xml」では、ビルド内に確認できる限り imxcompositor_g2d プラグインがありません (imx8mqevk がないため実行できません)。また、ビルド (IMAGE_INSTALL_append) に「gstreamer1.0-plugins-imx」を追加すると、「imx8mqevk (not in COMPATIBLE_MACHINE)」というエラーが発生します。 SO、機能する imxcompositor_g2d gstreamer プラグインを提供する適切な Yocto Linux システムを構築するには、何を構築すればよいのでしょうか? Re: IMX8 Video overlay with graphics before H264 encode ハイ 1.YUV422 および YUV420 入出力フォーマットもサポートされ、エンコーダー (NV12) をサポートします。 2.7.3.16をご覧くださいi.MX_Linux_User's_Guide.pdf のビデオ構成 imxcompositor_g2d は対応するハードウェアを使用してビデオ合成を高速化します。複数の ビデオを 1 つにまとめます。合成時にビデオのポジショニング、サイズ、回転を指定CAN。ビデオカラースペース変換は 入力ビデオと出力ビデオが同じでない場合も自動的に実行されます。各ビデオにはアルファ値とZオーダー値をCAN設定し、 アルファブレンディングとビデオブレンディングシーケンスを取得します。
View full article
CAAMとカーネル暗号テスト <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> こんにちは、皆さん。 LinuxのさまざまなバージョンやさまざまなボードでCAAMを有効にすると、いくつかの不安なエラーメッセージが表示されます。 カーネルの自己テスト。 SABRE-SD 3.10.31-alpha でのテスト root@imx6qsabresd:~# dmesg ... alg: ハッシュ: hmac-sha1-caam のテスト 1 が失敗しました 00000000: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00000010: f1 46 は 00 です alg: ハッシュ: sha1-caam のテスト 1 が失敗しました 00000000: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00000010: 9c d0 d8 9d alg: ハッシュ: hmac-sha224-caam のテスト 1 が失敗しました 00000000: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00000010: 47 b4 b1 16 99 12 ba 4f 53 68 4b 22 alg: ハッシュ: sha224-caam のテスト 1 が失敗しました 00000000: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00000010: 2a ad bc e4 bd a0 b3 f7 e3 6c 9d a7 root@imx6qsabresd:~# cat /proc/cmdline コンソール=ttymxc0,115200 ip=dhcp ルート=/dev/mmcblk0p2 rootwait caam カーネル構成は、いくつかのデバッグ フラグを追加した標準の v7_defconfig と基本的に同じです。 ~/linux-imx6$ ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- savedefconfig を作成します スクリプト/kconfig/conf --savedefconfig=defconfig Kconfig ~/linux-imx6$ diff defconfig arch/arm/configs/imx_v7_defconfig 253a254 > CONFIG_USB_PHY=y 329d329 < CONFIG_DEBUG_LOCK_ALLOC=y 334d333 < # CONFIG_CRYPTO_MANAGER_DISABLE_TESTSが設定されていません カーネル3.0.35_4.1.0でも同じ結果が出ていますおよび Nitrogen6x 上の 3.10.17-1.0.0-ga。 これについて何か知見をお持ちの方はいらっしゃいますか? よろしくお願いいたします。 エリック i.MX6_すべて Linux Re: CAAM and kernel crypto tests SecretCryptos は、匿名の暗号取引のためのワンストップ ソリューションです。暗号ミキサの使用や安全な取引所での取引をお考えの場合でも、SecretCryptos はすべての取引の完全なプライバシーと匿名性を保証します。 SecretCryptos 暗号ミキサと取引所 すべてのミキサページ(コインあたり) SecretCryptos 暗号ミキサー|ビットコイン (BTC) ミキサー|イーサリアム (ETH) ミキサー|テザー (USDT) ミキサー| USD コイン (USDC) ミキサー| BNB (BSC) ミキサー|ライトコイン (LTC) ミキサー|ドージコイン (DOGE) ミキサー| XRP (リップル) ミキサー|ソラナ (SOL) ミキサー| TRON (TRX) ミキサー| TON (トンコイン) ミキサー|ポリゴン (MATIC) ミキサー|アバランチ (AVAX) ミキサー|カルダノ (ADA) ミキサー|ポルカドット (DOT) ミキサー|柴犬 (SHIB) ミキサー インスタント暗号通貨取引 暗号通貨取引所 62a314_66eab6e98f404d46a2d43c76933e6802~mv2 Re: CAAM and kernel crypto tests <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> ありがとう、ジョン Re: CAAM and kernel crypto tests <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> この問題に対する適切な修正は、Herbert Xuのcrypto-2.6にあります。木。具体的には、 LKML: Herbert Xu: Crypto Fixes for 3.13およびLKML: Herbert Xu: Re: Crypto Fixes for 3.13 で問題が修正されます。3.10.xxにバックポートする必要がある Re: CAAM and kernel crypto tests <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> Freescale の Steve Cornelius 氏と他の人々のおかげで、この問題はキャッシュの一貫性と関係があることを示すことができました。 特に、CAAM ドライバは、すべての入力と出力がキャッシュ ライン境界 (i.MX6 では 32 バイト) に揃えられることを想定しています。 testmgr コードは元々ソフトウェア実装をテストするために作成されたため、カーネル 3.10.17 時点では特定の配置が保証されず、それが障害の原因となっていましたが、これを解決するための簡単な更新によってエラーを防ぐことができます。 crypto testmgr: 結果バッファをキャッシュラインに合わせる · e3e7ad4 · boundarydevices/linux-imx6 · GitHub コミット ログに記載されているように、入力と出力のこの要件はユーザー空間コードにも存在するため、アプリケーションは割り当てに注意する必要があります。 Re: CAAM and kernel crypto tests <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> jamesboneさん、このCASEの最新情報はありますか? Re: CAAM and kernel crypto tests <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> まだ修正されていません。 Re: CAAM and kernel crypto tests <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> この問題は修正されましたか? それとも、解決策はただ遅延するだけですか? 私も同じ問題を抱えています。しかし、テストを成功させるには、遅延値を最大 100usec まで変更する必要があります。 それは大きな問題です。 Re: CAAM and kernel crypto tests <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> jamesboneさん、このCASEのフォローアップを続けてもらえますか? Re: Re: CAAM and kernel crypto tests <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> さらに詳しく: caam_jr_dequeue () の次の 2 つの場所のどちらにも同じ udelay(20) があっても、テストは成功しません。 Linux-imx6/ドライバ/crypto/caam/jr.c at boundary-imx_3.10.17_1.0.0_ga · boundarydevices/Linux-imx6 · GitHub Linux-imx6/ドライバ/crypto/caam/jr.c at boundary-imx_3.10.17_1.0.0_ga · boundarydevices/Linux-imx6 · GitHub Re: Re: CAAM and kernel crypto tests <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> これらのテストに関するさらに詳しい情報は… caam_jr_enqueue() の最後にある udelay(20) 呼び出しによりテストは成功します。SO、何らかのタイミング バグであると思われます。 ~/linux-imx6$ git diff diff --git a/ドライバ/crypto/caam/jr.c b/ドライバ/crypto/caam/jr.c インデックス 80ddddb..c8c4a7e 100644 --- a/ドライバ/crypto/caam/jr.c +++ b/ドライバ/crypto/caam/jr.c @@ -288,6 +288,7 @@ int caam_jr_enqueue(構造体デバイス *dev, u32 *desc, spin_unlock_bh(&jrp->inplock); + 遅延(20); 0を返します。 } EXPORT_SYMBOL(caam_jr_enqueue); Re: Re: CAAM and kernel crypto tests <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> さらなる更新: 3.10.17-1.0.0-ga でのその後の起動では、ゼロの 8 バイトだけが表示されます。 alg: ハッシュ: hmac-sha1-caam のテスト 1 が失敗しました 00000000: 00 00 00 00 00 00 00 00 e2 8b c0 b6 fb 37 8c 8e 00000010: f1 46 は 00 です alg: ハッシュ: sha1-caam のテスト 1 が失敗しました Re: CAAM and kernel crypto tests <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 追加メモ: テスト失敗時に表示される値: alg: ハッシュ: hmac-sha1-caam のテスト 1 が失敗しました 00000000: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00000010: f1 46 は 00 です 予想された結果と似ているように見えます。これは、crypto/testmgr.c の hmac-sha1 の最初のテスト ベクトルです。 静的構造体hash_testvec hmac_sha1_tv_template[] = {   { .key = "\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b", .ksize = 20, .plaintext = "こんにちは", .psize = 8, .ダイジェスト = "\xb6\x17\x31\x86\x55\x05\x72\x64" 「\xe2\x8b\xc0\xb6\xfb\x37\x8c\x8e\xf1」 「\x46\xbe」、 ... シーケンス「f1 46 be」が期待値と一致することに注意してください。 また、失敗した各テストの最初の 16 バイトがゼロとして表示されることにも注意してください。 Re: CAAM and kernel crypto tests <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> こんにちは、ジェイミー。 3.0.35_4.1.0でテストしていることに気づかなかったようです。3.10.17-1.0.0-ga、および 3.10.31_1.0.0-alpha。 それぞれに、他のページからのパッチがすでに含まれています。 dma_map_sg_chained へのパッチ: http://git.freescale.com/git/cgit.cgi/imx/linux-2.6-imx.git/commit/?h=imx_3.0.35_4.0.0&id=b30237c79003223c6e8035d5be183cd4f0b469f9 3.10.17 ソース: https://github.com/boundarydevices/linux-imx6/blob/boundary-imx_3.10.17_1.0.0_ga/drivers/crypto/caam/sg_sw_sec4.h#L96 driver_algs へのパッチ: http://git.freescale.com/git/cgit.cgi/imx/linux-2.6-imx.git/commit/?h=imx_3.0.35_4.0.0&id=6068d7a77b2101c172fc2f003f90b1febbf99505 3.10.17 ソース: https://github.com/boundarydevices/linux-imx6/blob/boundary-imx_3.10.17_1.0.0_ga/drivers/crypto/caam/caamalg.c#L2083 また、私たちが目にしている問題はハッシュ アルゴリズムにのみ関係するものであることを明確に説明していませんでした。 よろしくお願いいたします。 エリック Re: CAAM and kernel crypto tests <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 親愛なるエリックへ Linux 3.0.35の場合CAAMの適切な機能を得るには、いくつかのパッチが必要です。 Q&A: iMX6 の Linux で CAAM ドライバが機能しないのはなぜですか? すてきな一日を、 ハイメ ----------------------------------------------------------------------------------------------------------------------- 注: この投稿で質問が解決した場合は、「正解」ボタンをクリックしてください。ありがとう! -----------------------------------------------------------------------------------------------------------------------
View full article
非法--1010 和 1111--完全合法指令的例外情况 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 在我认为完全合法的 68EN360 指令上,我们看到了随机的非法--1010-和 1111-例外情况 代码正在耗尽 FLASH(29F800 或类似设备) 在异常处理程序中,我会读取故障程序计数器上的指令,以便进行比较。它总是匹配的。   我认为是在 3 个字指令的中间出现错误跳转,但我也见过在一系列简单的 1 字指令(简单寄存器移动、寄存器运算等)的中间出现错误跳转。我还看到过在不以 Fxxx 开头的指令上出现 F 行仿真异常。 此外,奇怪的是,该问题在 SW 更新后出现,之后的更新又消失了,之后的更新又出现了。   我们偶尔会遇到因指针错误而导致的总线错误,以及因堆栈损坏而导致的非常明显的非法指令返回,但我们大多都能或多或少地立即找出问题所在。   这个问题确实让我们束手无策,我们面临着在软件中解决这个问题的巨大压力。   不知道是否与https://community.freescale.com/message/87784#87784有关 有什么好办法吗?   此致, L di/dt 概述 Re: Illegal- 1010- and 1111-exception on perfectly legal instructions 这是一个有趣的观点,即即使在涉及看似有效的指示的情况下,也会出现例外情况。有时,要了解此类问题背后更深层次的法律解释,需要查阅详细的当地案例数据或司法见解。您可以在以下网站了解更多信息 县治安法官以更好地了解县级系统内如何处理此类例外情况。交叉参考此类问题以确保清晰度和准确性总是有帮助的。 Re: Illegal- 1010- and 1111-exception on perfectly legal instructions <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 翻阅我的旧邮件 更新: 闪存制造商和 DIMM 插座发生了变化。所有问题都符合规格,但恰好暴露了 PCB 设计/布局的问题: 地址线有振铃,FLASH 制造商和 DIMM 插座的微小差异对振铃的影响微乎其微。 运气不佳,某些地址序列的某些地址线从 "1 "变为 "0",导致闪存锁存错误地址(违反设置/稳定时间)。 PCB 设计师添加了串联阻抗匹配电阻,只有几个欧姆,并根据我们的布局进行了微调,使信号看起来更漂亮。清理了一些可疑的线路,与其他线路相比,有几条线路实在太长了。实际的布局变化很小。 我不知道我们最终为此付出了多少代价。 经验教训:即使是速度如此之慢的 33MHz CPU,精心布局和阻抗匹配也非常重要。仅仅完成布局和简单检查 "能用 "是不够的。 该问题现已解决。 我平时的 Sig 奇怪地很合适。 此致问候 - L di/dt。 Re: Illegal- 1010- and 1111-exception on perfectly legal instructions <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 罗布,进展如何? 请随时通知我们!笑一笑 顺祝商祺! Re: Illegal- 1010- and 1111-exception on perfectly legal instructions <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 我写道 > 不过,鉴于 68360 是...哎呀! 20 岁了!数据表的日期是 1993 年。本产品 > 一定在过去的某个时候起过作用。最近有什么变化? 这也意味着产品必须很旧,使用的板必须很旧。 有人检查过其中一些板是否是在 2001 年和 2002 年 "电容 Plague " 如火如荼的黑暗时期制造的吗? http://en.wikipedia.org/wiki/Capacitor_plague 如果你阅读了上面的精彩文章,它详细介绍了 "正常" 电容的使用寿命(以及因 "Plague" 而提前失效的电容)。如果您的某些故障板已有 10-15 年的使用寿命,则电容可能已经枯竭,可能无法再工作。不同版本的软件可能会产生不同的工作电流模式,再加上旧的电容,可能会导致观察到的问题。 Tom Re: Illegal- 1010- and 1111-exception on perfectly legal instructions <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> > 代码快用完了 您是否有足够的 RAM 来编译代码,使其在 RAM 的地址上运行,然后在启动时从 FLASH 复制到 RAM 并从那里执行? 这应该将问题区分为 " 从 FLASH " 读取问题或 " 从该总线 " 上的任何地方读取的问题。 如果它能解决问题,而你又有足够的内存,你也许可以将其作为半永久性的解决方案。 不过,鉴于 68360 是...哎呀! 20 岁了!数据表的日期是 1993 年。这种产品在过去的某个时期一定起过作用。最近有什么变化? 啊,是的,你说过: > 此外,奇怪的是,问题出现在软件更新之后、 因此,在新旧版本之间进行 " 二进制切换 ",并尝试缩小导致问题的最小更改范围。如果没有发现明显的问题,就开始将新旧代码重新链接到(比如)增加的 4k 或 16k 地址边界,看看是否有移位后的"好" 变坏,或者"坏" 变好。 打印并比较两个版本的 MAP 文件,看看功能是否移动了,或者重要的东西是否跨越了以前没有跨越的地址边界。我的代码并查看 " 热点循环 " 在哪里,看看移动这些 " 热点 "(比如在 FLASH 的开头或结尾将它们全部链接起来)能否改变问题。 我猜这东西是用以太网的。加载网络。基本上就是把 **** ping 出来。运行多个 Linux shell,然后"ping -f" 从 5 个或 20 个 shell 同时运行。如果这项活动能让失败的次数更多,那么你的测试效果就会更好。 Tom Re: Illegal- 1010- and 1111-exception on perfectly legal instructions <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> > 我发现有几个指令中包含绝对地址,比如 >"MOVE.B D0,(00012345)" ,出现总线错误,故障地址为 FFFF2345 你有 16 位闪存总线或 32 位闪存总线吗?如果您使用的是 16 位,那么地址的获取是在两个周期内进行的,高字优先,而这个周期不知为何出了问题。 如果你有 32 位总线,那么上半部分的读取效果很差。 它能读一读的事实要么是一辆带上拉的露天总线(你有引体向上拉吗?)或者它已经读取了 FLASH 中被删除的部分。我猜你没有引体向上,所以我怀疑是后者。 可能发生这种情况的原因是,其中一个闪存芯片将高位地址位采样为"" ,从而读取了一个高位(已擦除)内存位置,而不是你想读取的位置。奇怪的是,另一个 "闪电侠 "找到了正确的地址。 这似乎表明你的水平和/或时机都不理想。最糟糕的情况是,所有地址位都从全零变为全一,只有一个可怜的地址位试图保持低电平。电容耦合(来自所有其他轨道)和电感耦合,再加上驱动芯片(CPU)上的"接地反弹" ,可以在闪存芯片锁存该地址时将该低地址提升到阈值以上。 因此,在地址转换与向闪存芯片发送信号以开始新周期之间,需要增加时序余量。 你还应该用一台好的示波器在地址总线上寻找这样的东西。您还应该查找欠压和过压的证据,它们会导致 RAM 和 FLASH 芯片轻微失常,尤其是当"" 、发生欠压和过压的引脚数量以及温度升高时。 如果你的代码已更改为 " busy " 越过地址边界(0x07fffff0 到 0x08000000),并且数据总线上的地址也是 " 繁忙 " 它可能会越过阈值并触发信号这种情况。 地址总线中有串联电阻器吗?你在数据总线中有它们吗? 数据总线转换(记住 CPU、RAM 和 ROM 交替驱动该总线)也可以耦合到地址总线。数据总线转换和地址总线转换之间的理论和测量/观察到的时间关系是什么?还有控制总线信号? 该芯片的某些时钟线具有可变的驱动强度,但数据线、地址线或控制线则没有。较新的芯片具有这种功能,而且非常有用。我在 MCF5329 上出现了严重的内存损坏,只有当我调低驱动器强度时,它才会消失,因为下冲和超调导致同步动态随机存取存储器发疯了。 您的芯片是 BGA、PGA 还是 QFP?你们的接地和旁路情况如何? 这会发生在多个板上吗?它是在新建的硬件上开始发生的,还是新软件在所有板上都会触发这种情况? Tom Re: Illegal- 1010- and 1111-exception on perfectly legal instructions <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 谢谢,这很有帮助。 唯一的 DMA 由片上外设处理。 在有以太网和没有以太网的系统上都能观察到这个问题,但流量并不大。 闪光灯是标准配置,大牌制造商生产,无连发。 测试版本的最大等待状态、定时放松设置、传输之间的最大延迟等待时间都出现了同样的问题。 在正常室温下也会出现问题。 有趣的是,它似乎喜欢"F"s 我发现了一些指令中包含绝对地址的情况,比如"MOVE.B D0,(00012345)" 总线错误,故障地址为 FFFF2345 (非真实地址) 问题往往出现在 SW 执行量最大的部分 改变链接器中模块的顺序似乎会影响问题出现的频率以及问题出现在哪个模块中。 我们曾经遇到过 CPM 负载问题,它导致在模块中断寄存器中设置 SPI 中断,但在出现多次同时中断的情况下从未向 CPU 钳位。不过这个问题已经解决了(在最后一次服务中断后对中断待处理寄存器进行额外检查)。 Re: Illegal- 1010- and 1111-exception on perfectly legal instructions <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 阅读 CPU 的所有勘误表。你用的是哪种面具?快速阅读 B0 勘误表就会发现各种损坏问题。 我在使用 MPC860 时也遇到过类似的问题,它的缓存和分支预测存在缺陷,每隔一周左右就会损坏一次分支,但 68000 不应该复杂到出现这类问题的程度(首先它没有缓存)。 由于内存中的代码对齐方式(ALIGNMENT)不同,这个问题在不同的软件版本中时有发生。当我们的版本失败时,添加一条指令(将所有其他指令向下移动)通常会使问题消失。 因此,请尝试在代码的不同部分添加"NOP" (或同等的内容),以"移动" ,看看是否能使问题消失。你应该能够对任何敏感区域进行 " 二进制切割 " 以归零。 试着在闪存循环中添加等待状态,看看是否有什么不同。 热,冷?高压和低电压等级? 您是否有任何可能会干扰总线周期的 DMA 设备?总线上有门阵列芯片吗?" burst 模式是 " Flash 吗? 试着找到能让它更频繁失败的方法。例如,是否与以太网流量有关?CPM 负载? 当你得到"崩溃" 时,检查 CPU 的所有寄存器,然后用它来证明"你认为 CPU 是如何到达那里的" 它确实是如何到达那里的。查看堆栈,看看它之前在哪个函数中,以及堆栈中保存了哪些之前的函数。然后看看该函数对寄存器做了什么,再看看能否计算出该函数运行到什么程度才会出错。你可能会发现其中的规律。 你能把逻辑分析器挂在总线上吗?这可能是追踪故障位置的唯一方法。你并不需要所有东西,仅捕获底部 12 个地址位可能足以让你回溯发生的事情。 Tom
View full article
如何使用 s32k144 aips? HI 我需要动态保护和解除保护闪存。 因此,我研究了 MPU、闪存保护寄存器和 AIPS。 无法解决 MPU 和闪存保护寄存器问题。 而 AIPS(外设访问保护)的解释不足以在 RM 中使用。 我认为 OPACR 中的 wp bits 与此有关。 但我不知道每个 wp 位都指向哪里。 请详细说明如何使用 AIPS? 谢谢! 顺祝商祺! 菲利普 Re: How to use s32k144 aips? 你好,@minsky、 您能创建一个新的主题吗? Re: How to use s32k144 aips? 你好,请问外设的访问控制如何确定在哪个寄存器的哪个插槽中? Re: How to use s32k144 aips? 你好,菲利普、 X "表示 S32K1 衍生型号上有外设访问控制。 FTFC 的外设访问控制位于 OPACRA 的 0 号插槽。 这取决于您的要求,如果您想保护 FTFC 寄存器不被写入,则设置 OPACRA[WP0] = 1。 此致, 丹尼尔 Re: How to use s32k144 aips? 你好,丹尼尔 kmh48301_0-1643929795415.png X'是什么意思? 您想对哪些外设寄存器进行写保护? :我想对 FTFC 进行写保护。 因此,应该是 OPACR Slot1。 但我该如何保护呢? 谢谢! 顺祝商祺! 菲利普 Re: How to use s32k144 aips? 你好,菲利普、 您想对哪些外设寄存器进行写保护? 请参阅 RM 随附的S32K1xx_Mamory_Map.xlsx。 danielmartynek_0-1643893300395.png danielmartynek_1-1643893329578.png danielmartynek_3-1643893452245.png 此致, 丹尼尔
View full article