Multi Source Translation Content

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

Multi Source Translation Content

Discussions

Sort by:
在应用定时测量过程中发生低于阈值的意外 VC_OV 事件 您好,      我使用的是采样率为 24 的应用定时测量模式,并将过压 (OV) 阈值设置为 4250 mV。 但是,在充电过程中,当电池电量达到80%左右(约4077 mV)时,某些电池偶尔会触发信号 VC_OV 事件。手动测量后,实际电池电压不会超过 OV 临界值。 是什么原因导致了这种行为,即即使测量电压明显低于阈值,也会发生 VC_OV 事件? 感谢您的帮助。 Mark 回复: Unexpected VC_OV Events Below Threshold during Application Timed Measurement 您好,马克, 请下载 MC33774A 功能安全手册并参阅其中的第 10、11 节。有一种 FTME(容错测量误差)的描述就是针对你这种情况的。 请从 MC33774A 产品页面的 “功能安全” 部分下下载功能安全手册。 致以最崇高的敬意 约瑟夫 回复: Unexpected VC_OV Events Below Threshold during Application Timed Measurement 你好,约瑟夫、 非常感谢你们一如既往的支持。 硬件设计已经过当地 FAE 的审查和确认。由于 MC33774A 已完全集成到电池模块中,我们无法使用示波器直接探测单个电池的电压,这一点令人遗憾。 我们还怀疑,对充电电流的控制不足可能会导致瞬态尖峰,进而引发零星的过电压(OV)事件。您的专业解释进一步证实了我们的假设,即这些事件很可能是由瞬态行为引起的。 作为后续问题,我们想问: 您是否推荐任何基于软件的方法来帮助识别由瞬态峰值引起的 OV 事件? 再次感谢您的宝贵帮助。 致以最崇高的敬意, Mark 回复: Unexpected VC_OV Events Below Threshold during Application Timed Measurement 您好,马克, 感谢您提供零件编号和示意图。但是,在原理图中,我看不出你是否在Cells和CTx CBx引脚之间使用了推荐的元器件。有关这些推荐元器件,请参阅 MC33774A 完整数据表中的第 11.1.1.2 节。 请从 MC33774A 产品页面 的 "安全 "部分下载 MC33774A 的 完整数据表。 在快速充电过程中,可能会出现短暂超过 OV 门限的瞬态电压。这些峰值可能无法通过手动测量捕获,但可以由 MC33774A 检测到。请使用示波器测量触发信号 OV 的单个电池的电压,以检查是否存在瞬态电压。 请确保在充电/测量过程中没有打开平衡装置。在平衡过程中,不保证测量电压。 致以最崇高的敬意 约瑟夫 回复: Unexpected VC_OV Events Below Threshold during Application Timed Measurement 你好,约瑟夫、 谢谢您的答复。 很抱歉之前没有提供足够的信息。 我们使用 MC33774ATP1AE。 这里是零件示意图。 感谢您的帮助。 致以最崇高的敬意 Mark Re: Unexpected VC_OV Events Below Threshold during Application Timed Measurement 您好,马克, 请分享您正在使用的元器件的完整部件号。 请分享您的示意图,包括电压等级和部件值。 致以最崇高的敬意 约瑟夫
View full article
IMX8MP MLの例が動作しない こんにちは、 私はBSP 5.15.71-2.2.2を実行しており、 https://www.nxp.com/docs/en/user-guide/UG10166.pdfの機械学習の例を試してみたかったのです。セクション8.1 この例に基づいて、この特定のパイプラインを実行すると(ヘッドレスで実行しているため、waylandsink が fakevideosink に変更されているだけです) GST_DEBUG=3 gst-launch-1.0 --no-position v4l2src device=/dev/video2 ! video/x-raw,width=640,height=480,framerate=24/1 ! tee name=t t. ! queue max-size-buffers=2 leaky=2 ! imxvideoconvert_g2d ! video/x-raw,width=300,height=300,format=RGBA ! videoconvert ! video/x-raw,format=RGB ! tensor_converter ! tensor_filter framework=tensorflow-lite model=/home/root/ssd_mobilenet_v2_coco_quant_postprocess.tflite custom=Delegate:External,ExtDelegateLib:libvx_delegate.so ! tensor_decoder mode=bounding_boxes option1=mobilenet-ssd-postprocess option2=/home/root/ssd_labels.txt option3=0:1:2:3,50 option4=640:480 option5=300:300 ! mix. t. ! queue max-size-buffers=2 ! imxcompositor_g2d name=mix latency=30000000 min-upstream-latency=30000000 sink_0::zorder=2 sink_1::zorder=1 ! fakevideosink ハードウェアアクセラレーションのimxcompositor_g2dは次のエラーを発生します ** Message: 19:38:14.427: accl = cpu Vx delegate: allowed_cache_mode set to 0. Vx delegate: device num set to 0. Vx delegate: allowed_builtin_code set to 0. Vx delegate: error_during_init set to 0. Vx delegate: error_during_prepare set to 0. Vx delegate: error_during_invoke set to 0. WARNING: Fallback unsupported op 32 to TfLite Setting pipeline to PAUSED ... Pipeline is live and does not need PREROLL ... Pipeline is PREROLLED ... Setting pipeline to PLAYING ... 0:00:00.964549750 1671 0xaaaaedd5fb00 WARN imxcompositor gstimxcompositor.c:1540:gst_imxcompositor_aggregate_frames: set rotate failed 0xaaaaee03eb40 W [HandleLayoutInfer:274]Op 162: default layout inference pass. W [HandleLayoutInfer:274]Op 162: default layout inference pass. 0:00:01.005968875 1671 0xaaaaedd5fb00 WARN imxcompositor gstimxcompositor.c:1540:gst_imxcompositor_aggregate_frames: set rotate failed 0xaaaaee03ec60 0:00:01.050180875 1671 0xaaaaedd5fb00 WARN imxcompositor gstimxcompositor.c:1540:gst_imxcompositor_aggregate_frames: set rotate failed 0xffff4c013480 0:00:01.089492750 1671 0xaaaaedd5fb00 WARN imxcompositor gstimxcompositor.c:1540:gst_imxcompositor_aggregate_frames: set rotate failed 0xaaaaee03eea0 ログや私が試した他のパイプラインから、VX デリゲートは正常に動作し、HW オブジェクト検出を実行します。発生する唯一の問題は、imxcompositor_g2d の場合です。HW イメージ コンポジターを使用する際に気付かない特定の制限はありますか? グラフィックスとディスプレイ マルチメディア ソフトウェア不具合の疑い Yocto Project Re: IMX8MP ML Example not working 私の側でこれをテストしましたが、エラーログは見つかりませんでした。以下のメッセージは警告メッセージで、古いBSPにも存在します。これはエラーメッセージではありません。この警告メッセージについては以前にGPUチームに報告しました。 0:00:01.005968875 1671 0xaaaaedd5fb00 WARN imxcompositor gstimxcompositor.c:1540:gst_imxcompositor_aggregate_frames: set rotate failed 0xaaaaee03ec60 Re: IMX8MP ML Example not working いいえ、シンクは、偽のシンク、UDP シンク、その他のいずれであってもマターありません。具体的には、 imxcompositor_g2dコンポーネントに特定しました。ソフトウェアベースのコンポジターコンポーネントに変更したため、パイプラインは正常に動作します。 Re: IMX8MP ML Example not working パイプラインは waylandsink では機能するが、waylandsink から fakevideosink では失敗するということでしょうか?
View full article
Why is TPM input capture returning large distance values (~12 meters) with 24 MHz TPM clock on i.MX9 Hello NXP Community, I’m using the i.MX93 (Cortex-M33) and trying to interface an ultrasonic distance sensor (like HC-SR04) using TPM input capture. I'm measuring the pulse width between the rising and falling edge on the ECHO pin using TPM3 (input capture on channel 2). The TPM clock is configured at 24 MHz, and the distance is calculated using the formula: float timeUs = (ticks / tpmClk) * 1e6; float distanceCm = timeUs / 58.0f; Here is my full code for reference:-  #include "fsl_debug_console.h" #include "board.h" #include "app.h" #include "fsl_tpm.h" #include "fsl_rgpio.h" #include "fsl_lpuart.h" /*******************************************************************************  * Definitions  ******************************************************************************/ /*******************************************************************************  * Prototypes  ******************************************************************************/ /*******************************************************************************  * Variables  ******************************************************************************/ volatile bool tpmIsrFlag = false; volatile uint32_t risingTime = 0; volatile uint32_t fallingTime = 0; volatile bool gotRisingEdge = false; /*******************************************************************************  * Code  ******************************************************************************/ void Init_LPUART(void) {     lpuart_config_t config;     /* Get default UART config (8N1, no parity, no flow control) */     LPUART_GetDefaultConfig(&config);     /* Modify parameters as needed */     config.baudRate_Bps = 115200U;     config.enableTx = true;     config.enableRx = true;     /* Initialize the UART with the specified parameters */     LPUART_Init(BOARD_LPUART, &config, BOARD_LPUART_CLK_FREQ); } float CalculateDistance(void) {     uint32_t ticks;     if (fallingTime >= risingTime)         ticks = fallingTime - risingTime;     else         ticks = (TPM_MAX_COUNTER_VALUE(DEMO_TPM_BASEADDR) - risingTime) + fallingTime; /* Overflow handled */     float tpmClk = CLOCK_GetIpFreq(LPTPM_CLOCK_ROOT); /* You may adjust to TPM clock */     float timeUs = (ticks * 1.0f / tpmClk) * 1e6;     PRINTF("TPM Clock : %.2f\r\n",tpmClk);     float distanceCm = timeUs / 58.0f;     return distanceCm; } void SetUp(void) {     rgpio_pin_config_t out_config ={         kRGPIO_DigitalOutput,         0,     };         /* Trigger pin */     RGPIO_PinInit(BOARD_RGPIO,TRIG_PIN,&out_config);     RGPIO_PinWrite(BOARD_RGPIO,TRIG_PIN,0); } void SendTrigPulse(void) {     RGPIO_PinWrite(BOARD_RGPIO, TRIG_PIN, 1);     SDK_DelayAtLeastUs(10, SystemCoreClock);     RGPIO_PinWrite(BOARD_RGPIO, TRIG_PIN, 0); } void TPM_INPUT_CAPTURE_HANDLER(void) {     uint32_t status = TPM_GetStatusFlags(DEMO_TPM_BASEADDR);     if (status & TPM_CHANNEL_FLAG)     {         uint32_t capturedValue = TPM_GetChannelValue(DEMO_TPM_BASEADDR, BOARD_TPM_INPUT_CAPTURE_CHANNEL);         if (!gotRisingEdge)         {             risingTime = capturedValue;             gotRisingEdge = true;             // Switch to falling edge detection             TPM_SetupInputCapture(DEMO_TPM_BASEADDR,BOARD_TPM_INPUT_CAPTURE_CHANNEL,kTPM_FallingEdge);         }         else         {             fallingTime = capturedValue;             tpmIsrFlag = true;             gotRisingEdge = false;             // Switch back to rising edge detection for next measurement             TPM_SetupInputCapture(DEMO_TPM_BASEADDR,BOARD_TPM_INPUT_CAPTURE_CHANNEL,kTPM_RisingEdge);         }         // Clear interrupt flag for this channel         TPM_ClearStatusFlags(DEMO_TPM_BASEADDR, TPM_CHANNEL_FLAG);     }     SDK_ISR_EXIT_BARRIER;     // tpmIsrFlag = true;     // /* Clear interrupt flag.*/     // TPM_ClearStatusFlags(DEMO_TPM_BASEADDR, TPM_CHANNEL_FLAG);     // SDK_ISR_EXIT_BARRIER; } /*!  * @brief Main function  */ int main(void) {     tpm_config_t tpmInfo;     /* Board pin, clock, debug console init */     BOARD_InitHardware();     SetUp(); /* Set up the GPIO */     // Init_LPUART(); /* Initialise one more UART */     /* Print a note to terminal */     PRINTF("\r\nTPM input capture example\r\n");     PRINTF("\r\nOnce the input signal is received the input capture value is printed\r\n");     TPM_GetDefaultConfig(&tpmInfo);     /* Initialize TPM module */     TPM_Init(DEMO_TPM_BASEADDR, &tpmInfo);     /* Setup input capture on a TPM channel */     TPM_SetupInputCapture(DEMO_TPM_BASEADDR, BOARD_TPM_INPUT_CAPTURE_CHANNEL, kTPM_RisingEdge);     /* Set the timer to be in free-running mode */     TPM_SetTimerPeriod(DEMO_TPM_BASEADDR, TPM_MAX_COUNTER_VALUE(DEMO_TPM_BASEADDR));     /* Enable channel interrupt when the second edge is detected */     TPM_EnableInterrupts(DEMO_TPM_BASEADDR, TPM_CHANNEL_INTERRUPT_ENABLE);     /* Enable at the NVIC */     EnableIRQ(TPM_INTERRUPT_NUMBER);     TPM_StartTimer(DEMO_TPM_BASEADDR, kTPM_SystemClock);     while (1)     {         tpmIsrFlag = false;         SendTrigPulse();         while (!tpmIsrFlag)         {             __NOP(); // Wait for capture         }         float distance = CalculateDistance();         PRINTF("RisingTime : %u\r\n",risingTime);         PRINTF("FallingTime : %u\r\n",fallingTime);         PRINTF("Distance: %.2f cm\r\n", distance);         SDK_DelayAtLeastUs(60000,SystemCoreClock);     } }   However, I'm consistently getting distance values around 1228 cm to 1260 cm, which is abnormally large, even when there's a wall very close to the sensor (e.g., <50 cm). Here are some example readings: TPM Clock : 24000000.00 RisingTime : 1172965159 FallingTime : 1174675524 Distance: 1228.71 cm TPM Clock : 24000000.00 RisingTime : 1283028325 FallingTime : 1284738837 Distance: 1228.82 cm TPM Clock : 24000000.00 RisingTime : 1448107508 FallingTime : 1449851665 Distance: 1252.99 cm TPM Clock : 24000000.00 RisingTime : 269392922 FallingTime : 269436317 Distance: 31.17 cm TPM Clock : 24000000.00 RisingTime : 278665048 FallingTime : 278708444 Distance: 31.18 cm TPM Clock : 24000000.00 RisingTime : 287937289 FallingTime : 287977974 Distance: 29.23 cm TPM Clock : 24000000.00 RisingTime : 297205949 FallingTime : 297248662 Distance: 30.68 cm TPM Clock : 24000000.00 RisingTime : 306477012 FallingTime : 306519726 Distance: 30.69 cm I'm unsure why these values are consistently too large.  i.MX93EVK  Clock|Timers Re: Why is TPM input capture returning large distance values (~12 meters) with 24 MHz TPM clock on i Thank you for your response! Re: Why is TPM input capture returning large distance values (~12 meters) with 24 MHz TPM clock on i Hello, Large distance values (~12 meters) from an HC-SR04 ultrasonic sensor using TPM input capture often stem from incorrect pulse width measerement of signal. The sensor measures distance by timing the duration of the echo pulse, and if the measurement includes the trigger pulse or is otherwise inaccurate, it can lead to inflated distance readings.    Here's a breakdown of the potential causes and solutions: 1. Incorrect Pulse Width Measurement: Trigger Pulse Included: The input capture might be capturing the time from the rising edge of the trigger pulse to the falling edge of the echo pulse, instead of just the echo pulse itself.    Solution: Ensure the input capture is configured to measure the duration of the echo pulse only. This typically involves setting up the timer to trigger on the rising edge of the echo signal and capture the falling edge.    2. Signal Interference: Early Echo Detection: The sensor's receiver might detect the signal from the transmitter before it bounces off an object, leading to an artificially long pulse width.    Oblique Reflections: Reflections from angled surfaces can cause the echo signal to be weak or delayed, leading to inaccurate distance readings.    Solution: Shielding: Use a small tube or shroud over the transmitter and receiver to minimize early detection and improve signal directionality.    Multiple Readings: Take multiple readings and filter out excessively large values or calculate an average.    NewPing Library: Consider using the NewPing library, which is designed to handle these issues.  4. Software Implementation: Timer Configuration: Incorrect timer prescaler or clock settings can affect the accuracy of the pulse width measurement.    Delay between Pings: The sensor has a minimum time between pings, and exceeding this can lead to inaccurate readings.    Solution: Check Timer Settings: Verify the timer's prescaler and clock configuration to ensure accurate time measurement.    Appropriate Delays: Ensure sufficient delay between pings to allow the sensor to reset and stabilize.      Regards  
View full article
yolo11 object detection int8 quantized model using eiq does not detect objects I had a YOLOv11 object detection model. I took the yolo11n.pt model and converted it to ONNX format. After that, I simplified the ONNX model using onnxsim. Then, using onnx2tf, I converted the model to the SavedModel (.pb) format. Subsequently, using NXP's eIQ Toolkit, I converted this .pb model to an INT8 quantized model. For this, I used the COCO128 dataset (100+ images) as the calibration dataset. The model was successfully converted, but it does not detect any objects, whereas the INT8 model obtained using the Ultralytics export API produces correct detections. When I checked the internal weights of both models, they were different, and the model outputs for the same image also differed significantly. Please help me convert the .pb model correctly so that detections happen as expected. i.MX 8 Family | i.MX 8QuadMax (8QM) | 8QuadPlus i.MX 8M | i.MX 8M Mini | i.MX 8M Nano Re: yolo11 object detection int8 quantized model using eiq does not detect objects Hi   swapnildaphal: The INT8 model obtained by the yolo official Ultralytics export API also calls the onnx2tf API internally. It should be the same as the method you mentioned: yolo11n.pt -> yolo11.onnx -> yolo11_sim.onnx -> yolo11 tensorflow saved model -> tftlie int8 model.  For EIQ toolkit, the .pb model is converted to int8quantized, which also encapsulates the quantization code of tflite. So after getting the tensorflow saved model, you can use the following code to perform quantization tests. It should be noted that the preprocessing method of the specified model should be consistent with the original preprocessing method during quantization. So you can generate tensorflow saved moel through the conversion API of ultralytics, and then call the official quantization tool of tflite to quantize the model. Regards Daniel
View full article
Jlink は imx93 のデバッグに失敗する JLink を使用して i.MX93 の M33 コアをデバッグする場合、ブレークポイントを設定すると、PC ポインタのみが停止し、さまざまな内部カウンターはカウントを継続するため、正常なデバッグができなくなります。この問題の解決策は何ですか?ご回答ありがとうございます! Re: Jlink fails to debug imx93 はい、単一の M33 コアで試してみましたが、システム カウンターを以前のように停止することはできません。理由が見つかりません。 よろしくお願いいたします。 Re: Jlink fails to debug imx93 こんにちは@leoX 私のテストは単一の M33 と Jlink に基づいていますが、M33 を remoteproc で起動しましたか? よろしくお願いします、 志明 Re: Jlink fails to debug imx93 ご返信ありがとうございます!タスクの実行サイクルを計算するためにタスク内で tstmr を読み取っていますが、ブレークポイントを追加すると計算されたサイクルが増加し、ブレークポイントを追加してもシステム カウンターがカウントを継続していることがわかります。また、A コアを介して M コアを開始しています。M33 のダウンロード モードを設定すると役立ちますか? よろしくお願いいたします。 Re: Jlink fails to debug imx93 こんにちは、 さまざまな内部カウンターのスクリーンショットを共有していただけますか? m33ダウンロードモードを設定しましたか? よろしくお願いします、 志明
View full article
Get CPU temperature on imx93evk in Windows 11 IoT Enterprise Hello, I am using the imx93-evk board to query the CPU temperature on Windows 11 Iot. However, I cannot query the temperature whether I use the command or the third-party software. How can I query the CPU temperature? #imx93 Re: Get CPU temperature on imx93evk in Windows 11 IoT Enterprise Hi  KirkHsu: I would suggest you get in touch with IOT team at  [email protected]. Regards Daniel
View full article
IMX8MP ML 示例无法工作 你好, 我正在运行电路板支持包 5.15.71-2.2.2,我想尝试一下 https://www.nxp.com/docs/en/user-guide/UG10166.pdf 中的机器学习示例第 8.1 节 根据示例运行此指定管道时(唯一的改动是将 waylandsink 改为 fakevideosink,因为我正在无头运行)。 GST_DEBUG=3 gst-launch-1.0 --no-position v4l2src device=/dev/video2 ! video/x-raw,width=640,height=480,framerate=24/1 ! tee name=t t. ! queue max-size-buffers=2 leaky=2 ! imxvideoconvert_g2d ! video/x-raw,width=300,height=300,format=RGBA ! videoconvert ! video/x-raw,format=RGB ! tensor_converter ! tensor_filter framework=tensorflow-lite model=/home/root/ssd_mobilenet_v2_coco_quant_postprocess.tflite custom=Delegate:External,ExtDelegateLib:libvx_delegate.so ! tensor_decoder mode=bounding_boxes option1=mobilenet-ssd-postprocess option2=/home/root/ssd_labels.txt option3=0:1:2:3,50 option4=640:480 option5=300:300 ! mix. t. ! queue max-size-buffers=2 ! imxcompositor_g2d name=mix latency=30000000 min-upstream-latency=30000000 sink_0::zorder=2 sink_1::zorder=1 ! fakevideosink 硬件加速的 imxcompositor_g2d 出现以下错误 ** Message: 19:38:14.427: accl = cpu Vx delegate: allowed_cache_mode set to 0. Vx delegate: device num set to 0. Vx delegate: allowed_builtin_code set to 0. Vx delegate: error_during_init set to 0. Vx delegate: error_during_prepare set to 0. Vx delegate: error_during_invoke set to 0. WARNING: Fallback unsupported op 32 to TfLite Setting pipeline to PAUSED ... Pipeline is live and does not need PREROLL ... Pipeline is PREROLLED ... Setting pipeline to PLAYING ... 0:00:00.964549750 1671 0xaaaaedd5fb00 WARN imxcompositor gstimxcompositor.c:1540:gst_imxcompositor_aggregate_frames: set rotate failed 0xaaaaee03eb40 W [HandleLayoutInfer:274]Op 162: default layout inference pass. W [HandleLayoutInfer:274]Op 162: default layout inference pass. 0:00:01.005968875 1671 0xaaaaedd5fb00 WARN imxcompositor gstimxcompositor.c:1540:gst_imxcompositor_aggregate_frames: set rotate failed 0xaaaaee03ec60 0:00:01.050180875 1671 0xaaaaedd5fb00 WARN imxcompositor gstimxcompositor.c:1540:gst_imxcompositor_aggregate_frames: set rotate failed 0xffff4c013480 0:00:01.089492750 1671 0xaaaaedd5fb00 WARN imxcompositor gstimxcompositor.c:1540:gst_imxcompositor_aggregate_frames: set rotate failed 0xaaaaee03eea0 从日志和我尝试过的其他管道来看,VX 委托工作得很好,它能进行 HW 对象检测。唯一出现的问题是 imxcompositor_g2d。在使用 HW 图像合成器时,是否存在我可能没有注意到的特定限制? 图形与显示 多媒体 疑似软件缺陷 Yocto Project Re: IMX8MP ML Example not working 在我这边测试了这个,没有发现任何错误日志,如下所示的消息是警告消息,它也存在于旧电路板支持包中,这不是错误消息,之前曾向 GPU 团队报告过这条警告消息 0:00:01.005968875 1671 0xaaaaedd5fb00 WARN imxcompositor gstimxcompositor.c:1540:gst_imxcompositor_aggregate_frames: set rotate failed 0xaaaaee03ec60 Re: IMX8MP ML Example not working 不,Sink 并不重要,无论是假 Sink、udp Sink 还是其他。我已经专门在 imxcomposit or_g2d 元器件中识别出来了。因为将其更改为基于软件的合成器元器件,所以流水线运行良好。 Re: IMX8MP ML Example not working 您的意思是,管道在 waylandsink 上正常工作,但在从 waylandsink 到 fakevideosink 的过程中却失败了?
View full article
在 Windows 11 物联网企业版中获取 imx93evk 的 CPU 温度 你好,我正在使用 imx93-evk 板查询 Windows 11 IoT 上的 CPU 温度。 但是,无论使用命令还是第三方软件,我都无法查询温度。 如何查询 CPU 温度? #imx93 Re: Get CPU temperature on imx93evk in Windows 11 IoT Enterprise 嗨,KirkHsu: 我建议您 与 [email protected] 的物联网团队联系 。 此致 丹尼尔
View full article
IMX8MP ML Example not working Hi, I'm running BSP 5.15.71-2.2.2, and I wanted to try out the machine learning example in https://www.nxp.com/docs/en/user-guide/UG10166.pdf section 8.1 When running this given pipeline, based on the example (only thing that has been changed is the waylandsink to fakevideosink as i'm running headless) GST_DEBUG=3 gst-launch-1.0 --no-position v4l2src device=/dev/video2 ! video/x-raw,width=640,height=480,framerate=24/1 ! tee name=t t. ! queue max-size-buffers=2 leaky=2 ! imxvideoconvert_g2d ! video/x-raw,width=300,height=300,format=RGBA ! videoconvert ! video/x-raw,format=RGB ! tensor_converter ! tensor_filter framework=tensorflow-lite model=/home/root/ssd_mobilenet_v2_coco_quant_postprocess.tflite custom=Delegate:External,ExtDelegateLib:libvx_delegate.so ! tensor_decoder mode=bounding_boxes option1=mobilenet-ssd-postprocess option2=/home/root/ssd_labels.txt option3=0:1:2:3,50 option4=640:480 option5=300:300 ! mix. t. ! queue max-size-buffers=2 ! imxcompositor_g2d name=mix latency=30000000 min-upstream-latency=30000000 sink_0::zorder=2 sink_1::zorder=1 ! fakevideosink   The hardware accellerated imxcompositor_g2d gives the following error ** Message: 19:38:14.427: accl = cpu Vx delegate: allowed_cache_mode set to 0. Vx delegate: device num set to 0. Vx delegate: allowed_builtin_code set to 0. Vx delegate: error_during_init set to 0. Vx delegate: error_during_prepare set to 0. Vx delegate: error_during_invoke set to 0. WARNING: Fallback unsupported op 32 to TfLite Setting pipeline to PAUSED ... Pipeline is live and does not need PREROLL ... Pipeline is PREROLLED ... Setting pipeline to PLAYING ... 0:00:00.964549750 1671 0xaaaaedd5fb00 WARN imxcompositor gstimxcompositor.c:1540:gst_imxcompositor_aggregate_frames: set rotate failed 0xaaaaee03eb40 W [HandleLayoutInfer:274]Op 162: default layout inference pass. W [HandleLayoutInfer:274]Op 162: default layout inference pass. 0:00:01.005968875 1671 0xaaaaedd5fb00 WARN imxcompositor gstimxcompositor.c:1540:gst_imxcompositor_aggregate_frames: set rotate failed 0xaaaaee03ec60 0:00:01.050180875 1671 0xaaaaedd5fb00 WARN imxcompositor gstimxcompositor.c:1540:gst_imxcompositor_aggregate_frames: set rotate failed 0xffff4c013480 0:00:01.089492750 1671 0xaaaaedd5fb00 WARN imxcompositor gstimxcompositor.c:1540:gst_imxcompositor_aggregate_frames: set rotate failed 0xaaaaee03eea0 From the logs, and other pipelines i have tried, the VX delegate works just fine, it does HW object detection. The only issue that happens is with imxcompositor_g2d. Are there specific limitations that I might not be aware of while using HW image compositors? Graphics & Display Multimedia Suspected Software Defect Yocto Project Re: IMX8MP ML Example not working tested this on my side, didn't find any error log, the message as below is warning message, which exist in the old bsp too, this isn't the error message, reported to the GPU team about this warning message before 0:00:01.005968875 1671 0xaaaaedd5fb00 WARN imxcompositor gstimxcompositor.c:1540:gst_imxcompositor_aggregate_frames: set rotate failed 0xaaaaee03ec60 Re: IMX8MP ML Example not working No, the sink doesnt matter, be it fake sink, udp sink, or others. I have identified it to the imxcompositor_g2d component specifically. Because changing it to a software based compositor component, the pipeline works just fine. Re: IMX8MP ML Example not working do you mean the pipeline works with waylandsink, then failed with waylandsink to fakevideosink?
View full article
yolo11 物体检测 int8 量化模型使用 eiq 无法检测物体 我有一个 YOLOv11 物体检测模型。我登录了 yolo11n.pt 模型,并将其转换为 ONNX 格式。之后,我使用 onnxsim 简化了 ONNX 模型。然后,我使用 onnx2tf 将模型转换为 SavedModel (.pb) 格式。随后,我使用恩智浦的 eIQ 工具包转换了这个 .pb模型转换为 INT8 量化模型。为此,我使用 COCO128 数据集(100 多幅图像)作为校准数据集。 模型转换成功,但没有检测到任何物体,而使用 Ultralytics 导出应用程序接口获得的 INT8 模型却能正确检测到物体。当我检查这两个模型的内部权重时,它们是不同的,而且同一图像的模型输出也有很大差异。 请帮我转换 .pb正确的模型,使检测结果符合预期。 i.MX 8 系列 | i.MX 8QuadMax (8QM) | 8QuadPlus i.MX 8M | i.MX 8M Mini | i.MX 8M Nano Re: yolo11 object detection int8 quantized model using eiq does not detect objects 你好,swapnildaphal: 由 yolo 官方 Ultralytics 导出 API 获得的 INT8 模型也在内部调用 onnx2tf API。它应该与您提到的方法相同: yolo11n.pt -> yolo11.onnx -> yolo11_sim.onnx -> yolo11 tensorflow saved model -> tftlie int8 model。 对于 EIQ 工具包,.pb模型转换为 int8quantized,它也封装了 tflite 的量化代码。因此,在获得张量流保存的模型后,可以使用以下代码执行量化测试。需要注意的是,在量化过程中,指定模型的预处理方法应与原始预处理方法保持一致。 因此,您可以通过 ultralytics 的转换 API 生成 tensorflow 保存的 moel,然后调用 tflite 的官方量化工具对模型进行量化。 此致 丹尼尔
View full article
How to build and use emulator for imx8m board Hi Sir, I am using imx8m mini EVK and Andriod 9.0 AOSP version. I am successfully able to download and build the AOSP for imx8 EVK board and it is working fine.  To build the AOSP for imx8mm evk I used below commands -       $ source build/envsetup.sh       $ lunch evk_8mm-userdebug       $ make 2>&1 | tee build-log.txt But I want to use emulator for my some development and testing activity. When i execute emulator command   -       $ emulator then emulator opens but it is not booting and working at all. In some blogs and AOSP documentation it is mentioned that it will work for - lunch aosp_x86_64-eng But I want to use emulator with my imx8 mini EVK board. i.e. - lunch evk_8mm-userdebug Please suggest how can I use emulator for my imx8MM build i.e. for ->  lunch evk_8mm-userdebug  What all changes and setting will be required for doing it. Thanks & Regards, Maneesh Android i.MX 8 Family | i.MX 8QuadMax (8QM) | 8QuadPlus i.MX 8M | i.MX 8M Mini | i.MX 8M Nano i.MX6_All i.MX6DL i.MX6Dual i.MX6S i.MX6SL i.MX6SoloX i.MX6UL i.MX7Dual i.MX7Solo i.MX7ULP i.MXRT Linux Re: How to build and use emulator for imx8m board This guide is really helpful for anyone building the emulator specifically for the i.MX8M board. The step-by-step instructions make it easier to set up the environment and get the emulator running smoothly. I’m excited to try it out on my own device and see how well it performs. Thanks for sharing! Re: How to build and use emulator for imx8m board Hi, How did you port the latest android to imx8? I am at the beginning of android system dev, could you give me some advises? I have download the aosp and built it and run it on the emulator, I have  not decided the next step, any advice will be appreciated, Thank you for your time Best regards Re: How to build and use emulator for imx8m board Hello, Unfortunately, the emulation and the aosp_x86_64-eng device is not supported by our BSP. I apologize for the inconvenience this could give you. However, you can download the ASOP code with any changes in the following git. repo init -u https://android.googlesource.com/platform/manifest -b android-9.0.0_r35  # This branch is the revision that our latest Android version uses. repo sync Best regards, Diego. Re: How to build and use emulator for imx8m board Hi, Any Suggestions over my above question ? Thanks, Maneesh Re: How to build and use emulator for imx8m board Hi Sir, As I mentioned in my above post that I am successfully able to compile all of the AOSP Source codes for imx8 Mini Board and able to test it on my imx8m Mini EVK board. But when I try to launch emulator on my ubuntu linux, the emulator window appeared but it remain blacked out forever. Here is the command - $ emulator   Is it possible to launch imx8 mini  AOSP and their Android framework on Android emulator? If possible, what is the steps for it ? or is there an alternative way to do emulation? NOTE - In some blogs and AOSP documentation it is mentioned that it will work for - lunch aosp_x86_64-eng But When I downloaded the AOSP and Try to build it from lunch aosp_x86_64-eng command then it gives error saying  - /bin/bash: -c: line 0: `echo -e "\033[1mvendor/nxp-opensource/fsl_imx_demo/Ethernet/Android.mk: \033[31merror:\033[0m\033[1m" ethernet: Specifies both LOCAL_SDK_VERSION (system_current) and LOCAL_PRIVATE_PLATFORM_APIS (current) but should specify only one "\033[0m" >&2' build/make/core/sdk_check.mk:34: error: done. 14:57:53 ckati failed with: exit status 1 Steps I followed to download and build the AOSP from NXP Website for imx8 - $ repo init -u https://source.codeaurora.org/external/imx/imx-manifest.git -b imx-android-pie -m imx-p9.0.0_2.0.0-ga.xml $ repo sync $ source build/envsetup.sh $ lunch evk_8mm-userdebug $ make 2>&1 | tee build-log.txt Now my question is -> 1. How to use emulator with this AOSP build which is generated by above commands? 2. How to build this downloaded AOSP source code for lunch aosp_x86_64-eng ? 3. From where to download raw AOSP source code for Android Pie without any changes from NXP ? Thanks, Maneesh
View full article
i.MX9 の 24 MHz TPM クロックで TPM 入力キャプチャが大きな距離値 (約 12 メートル) を返すのはなぜですか? NXPコミュニティの皆様、こんにちは。 私はi.MX93 (Cortex-M33)を使用しており、 TPM 入力キャプチャを使用して超音波距離センサ (HC-SR04 など)をインターフェースしようとしています。TPM3 (チャネル 2 の入力キャプチャ) を使用して、ECHO ピンの立ち上がりエッジと立ち下がりエッジ間のパルス幅を測定しています。 TPM クロックは24 MHzに設定されており、距離は次の式を使用して計算されます。 float timeUs = (ティック / tpmClk) * 1e6 ; 浮動小数点距離Cm = timeUs / 58.0f ; 参考までに、ここに完全なコードを示します:- #include "fsl_debug_console.h" #include "board.h" #include "app.h" #include "fsl_tpm.h" #include "fsl_rgpio.h" #include "fsl_lpuart.h" /**************************************************************************************** * 定義 **********************************************************************************/ /**************************************************************************************** * プロトタイプ **********************************************************************************/ /**************************************************************************************** * 変数 **********************************************************************************/ 揮発性ブールtpmIsrFlag = false ; 揮発性uint32_t立ち上がり時間 = 0 ; 揮発性uint32_t落下時間 = 0 ; 揮発性ブールgotRisingEdge = false ; /**************************************************************************************** * コード **********************************************************************************/ void Init_LPUART( void ) { lpuart_config_t 設定; /* デフォルトの UART 設定を取得します (8N1、パリティなし、フロー制御なし) */ LPUART_GetDefaultConfig(&config); /* 必要に応じてパラメータを変更します */ config.baudRate_Bps = 115200U ; config.enableTx = true ; config.enableRx = true ; /* 指定されたパラメータでUARTを初期化します */ LPUART_Init( BOARD_LPUART 、&config、 BOARD_LPUART_CLK_FREQ ); } float CalculateDistance( void ) {     uint32_tティック;     下降時間 >= 上昇時間の場合 ticks = 下降時間 - 上昇時間;     それ以外 ticks = ( TPM_MAX_COUNTER_VALUE ( DEMO_TPM_BASEADDR ) - risingTime) + fallsTime; /* オーバーフロー処理 */     float tpmClk = CLOCK_GetIpFreq( LPTPM_CLOCK_ROOT ); /* TPMクロックに調整できます */     float timeUs = (ティック * 1.0f / tpmClk) * 1e6 ;     PRINTF ( "TPM クロック: %.2f\r\n" ,tpmClk);     浮動小数点距離Cm = timeUs / 58.0f ;     distanceCmを返します。 } voidセットアップ( void ) { rgpio_pin_config_t out_config ={         kRGPIO_デジタル出力、         0 , };     /* トリガーピン */ RGPIO_PinInit( BOARD_RGPIO 、 TRIG_PIN 、 &out_config); RGPIO_PinWrite( BOARD_RGPIO , TRIG_PIN , 0 ); } void SendTrigPulse( void ) { RGPIO_PinWrite( BOARD_RGPIO 、 TRIG_PIN 、 1 ); SDK_DelayAtLeastUs( 10 , SystemCoreClock); RGPIO_PinWrite( BOARD_RGPIO , TRIG_PIN , 0 ); } void TPM_INPUT_CAPTURE_HANDLER ( void ) {     uint32_tステータス = TPM_GetStatusFlags( DEMO_TPM_BASEADDR );     if (ステータス & TPM_CHANNEL_FLAG )     {         uint32_tキャプチャされた値 = TPM_GetChannelValue( DEMO_TPM_BASEADDR 、 BOARD_TPM_INPUT_CAPTURE_CHANNEL );         if (!gotRisingEdge) { 立ち上がり時間 = キャプチャされた値; gotRisingEdge = true ;             // 立ち下がりエッジ検出に切り替える TPM_SetupInputCapture( DEMO_TPM_BASEADDR 、 BOARD_TPM_INPUT_CAPTURE_CHANNEL 、 kTPM_FallingEdge );      }         それ以外 { 落下時間 = キャプチャされた値; tpmIsrFlag = true ; gotRisingEdge = false ;             // 次の測定では立ち上がりエッジ検出に戻る TPM_SetupInputCapture( DEMO_TPM_BASEADDR 、 BOARD_TPM_INPUT_CAPTURE_CHANNEL 、 kTPM_RisingEdge );      }         // このチャネルの割り込みフラグをクリアする TPM_ClearStatusFlags( DEMO_TPM_BASEADDR 、 TPM_CHANNEL_FLAG );    }     SDK_ISR_EXIT_BARRIER ;     // tpmIsrFlag = true;     // /* 割り込みフラグをクリアします。*/     // TPM_ClearStatusFlags(DEMO_TPM_BASEADDR、TPM_CHANNEL_FLAG);     // SDK_ISR_EXIT_BARRIER; } /*! * @briefメイン関数 */ int main( void ) { tpm_config_t tpmInfo; /* ボードピン、クロック、デバッグコンソールの初期化 */ BOARD_InitHardware(); SetUp(); /* GPIO をセットアップする */     // Init_LPUART(); /* もう1つのUARTを初期化します */ /* 端末にメモを印刷する */     PRINTF ( "\r\nTPM入力キャプチャの例\r\n" );     PRINTF ( "\r\n入力信号が受信されると、入力キャプチャ値が出力されます\r\n" ); TPM_GetDefaultConfig(&tpmInfo); /* TPMモジュールを初期化する */ TPM_Init( DEMO_TPM_BASEADDR , &tpmInfo); /* TPMチャネルで入力キャプチャを設定する */ TPM_SetupInputCapture( DEMO_TPM_BASEADDR 、 BOARD_TPM_INPUT_CAPTURE_CHANNEL 、 kTPM_RisingEdge ); /* タイマーをフリーランニングモードに設定する */ TPM_SetTimerPeriod( DEMO_TPM_BASEADDR , TPM_MAX_COUNTER_VALUE ( DEMO_TPM_BASEADDR )); /* 2番目のエッジが検出されたときにチャネル割り込みを有効にする */ TPM_EnableInterrupts( DEMO_TPM_BASEADDR 、 TPM_CHANNEL_INTERRUPT_ENABLE ); /* NVIC で有効にする */ EnableIRQ( TPM_INTERRUPT_NUMBER ); TPM_StartTimer( DEMO_TPM_BASEADDR , kTPM_SystemClock );     一方( 1 )     { tpmIsrFlag = false ; 送信トリガパルス();         while (!tpmIsrFlag) {             __NOP (); // キャプチャを待つ      }         フロート距離 = CalculateDistance();         PRINTF ( "上昇時刻: %u\r\n" ,上昇時刻);         PRINTF ( "落下時間: %u\r\n" ,落下時間);         PRINTF ( "距離: %.2f cm\r\n" , 距離); SDK_DelayAtLeastUs( 60000 ,SystemCoreClock);    } }   しかし、壁がセンサのすぐ近くにある場合でも (たとえば、<50 cm)、一貫して1228 cm ~ 1260 cm 程度の距離値が得られており、これは異常に大きい値です。以下にいくつかの例を示します。 TPM Clock : 24000000.00 RisingTime : 1172965159 FallingTime : 1174675524 Distance: 1228.71 cm TPM Clock : 24000000.00 RisingTime : 1283028325 FallingTime : 1284738837 Distance: 1228.82 cm TPM Clock : 24000000.00 RisingTime : 1448107508 FallingTime : 1449851665 Distance: 1252.99 cm TPM Clock : 24000000.00 RisingTime : 269392922 FallingTime : 269436317 Distance: 31.17 cm TPM Clock : 24000000.00 RisingTime : 278665048 FallingTime : 278708444 Distance: 31.18 cm TPM Clock : 24000000.00 RisingTime : 287937289 FallingTime : 287977974 Distance: 29.23 cm TPM Clock : 24000000.00 RisingTime : 297205949 FallingTime : 297248662 Distance: 30.68 cm TPM Clock : 24000000.00 RisingTime : 306477012 FallingTime : 306519726 Distance: 30.69 cm これらの値が一貫して大きすぎる理由はわかりません。 i.MX93EVK クロック|タイマー Re: Why is TPM input capture returning large distance values (~12 meters) with 24 MHz TPM clock on i ご返信ありがとうございます! Re: Why is TPM input capture returning large distance values (~12 meters) with 24 MHz TPM clock on i こんにちは、 TPM入力キャプチャを使用したHC-SR04超音波センサーから得られる大きな距離値(約12メートル)は、多くの場合、信号のパルス幅測定が不正確であることに起因しています。センサーはエコーパルスの持続時間を計測することで距離を測定しますが、測定にトリガーパルスが含まれている場合や、その他の不正確な点がある場合、距離測定値が実際よりも高くなってしまう可能性があります。    考えられる原因と解決策の内訳は次のとおりです。 1. パルス幅測定の誤り: トリガーパルス付属: 入力キャプチャは、エコー パルス自体だけでなく、トリガー パルスの立ち上がりエッジからエコー パルスの立ち下がりエッジまでの時間をキャプチャしている可能性があります。    ソリューション: 入力キャプチャがエコーパルスの持続時間のみを測定するように設定されていることを確認してください。通常、タイマーを設定してエコー信号の立ち上がりエッジでトリガーし、立ち下がりエッジをキャプチャします。    2. 信号干渉: 早期エコー検出: センサのレシーバは、トランスミッタからの信号が物体に反射する前にそれを検出し、不自然に長いパルス幅を生み出す可能性があります。    斜め反射: 角度のある表面からの反射により、エコー信号が弱くなったり遅延したりして、距離の読み取りが不正確になるCANがあります。    ソリューション: シールド:早期検出を最小限に抑え、信号の方向性を向上させるために、トランスミッタとレシーバの上に小さなチューブまたはシュラウドを使用します。    複数の読み取り:複数の読み取りを行い、過度に大きい値を除外するか、平均を計算します。    NewPing ライブラリ:これらの問題に対処するために設計された NewPing ライブラリの使用を検討してください。  4. ソフトウェアの実装: タイマー設定: タイマー プリスケーラまたはクロックの設定が正しくないと、パルス幅測定の精度に影響するCANがあります。    Ping間の遅延: センサには ping 間の最小時間があり、これを超過すると読み取り結果が不正確になる可能性があります。    ソリューション: タイマー設定の確認:正確な時間測定を確実に行うために、タイマーのプリスケーラとクロックの構成を確認します。    適切な遅延:センサがリセットされて安定できるように、ping 間に十分な遅延を確保します。      よろしくお願いします。  
View full article
如何为 imx8m 板 构建和使用仿真器 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 您好,先生, 我使用的是 imx8m mini EVK 和 Andriod 9.0 AOSP 版本。 我能够成功下载并版本 imx8 EVK 板 的 AOSP,而且运行良好。 为了为 imx8mm evk 版本 AOSP,我使用了以下命令- $ 来源 版本/envsetup.sh $ lunch evk_8mm-userdebug $ make 2>&1 | tee build-log.txt 但我想使用模拟器进行一些开发和测试活动。 当我执行模拟器命令时 模拟器 然后模拟器打开,但它根本无法启动和运行。 在一些博客和 AOSP 文档中提到,它适用于 - 午餐 aosp_x86_64-eng 但是我想在我的 imx8 迷你 EVK 板上使用模拟器。即 - 午餐 evk_8mm-userdebug 请建议我怎样才能在我的 imx8mm 版本中使用模拟器,即用于-> lunch evk_8mm-userdebug 需要做哪些更改和设置? 谢谢& 、 马内什 Android i.MX 8 系列 | i.MX 8QuadMax (8QM) | 8QuadPlus i.MX 8M | i.MX 8M Mini | i.MX 8M Nano i.MX6_All i.MX6DL i.MX6 双核 i.MX6S i.MX6SL i.MX6SoloX i.MX6UL i.MX7 双核 i.MX7 单核 i.MX 7ULP i.MXRT Linux Re: How to build and use emulator for imx8m board 本指南对任何专门为 i.MX8 M 板构建仿真器的人都非常有用。分步说明可以更轻松地安装环境并使仿真器平稳运行。我很高兴能在自己的设备上试一试,看看它的性能如何。感谢您的分享! Re: How to build and use emulator for imx8m board 您好, 你是如何将最新的安卓系统移植到 imx8 上的? 我刚开始开发安卓系统,您能给我一些建议吗? 我已经下载了 aosp 并将其版本并在模拟器上运行,我还没有决定下一步,任何建议将不胜感激, 感谢您抽出宝贵时间 顺祝商祺! Re: How to build and use emulator for imx8m board <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 你好 不幸的是,我们的电路板支持包不支持仿真和 aosp_x86_64-eng 设备。对于这可能给您带来的不便,我深表歉意。 不过,您可以在以下 git 中下载任何修改后的 ASOP 代码。 仓库 init-u https://android.googlesource.com/platform/manifest-b android- 9.0.0_r35 # 这个分支是我们最新安卓版本使用的修订版。 仓库同步 顺祝商祺! 迭戈 Re: How to build and use emulator for imx8m board <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 您好, 对我的上述问题有什么建议? 谢谢! 马内什 Re: How to build and use emulator for imx8m board <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 您好,先生, 正如我在上面的帖子中提到的那样,我能够成功编译 imx8 Mini 板 的所有 AOSP 源代码 而且能够在我的 imx8m Mini EVK 板上对其进行测试。 但是当我尝试在我的ubuntu linux上用上市模拟器时,模拟器窗口出现了,但它永远处于封锁状态。 命令如下 模拟器   是否有可能在安卓模拟器上用上市 imx8 mini AOSP 及其安卓框架? 如果可能,有哪些步骤?还是有其他仿真方法? 备注 在一些博客和 AOSP 文档中提到,它适用于 - 午餐 aosp_x86_64-eng 但是当我下载 AOSP 并尝试从午餐开始版本 aosp_x86_64-eng 命令时,它会出错,说- /bin/bash:-c: line 0: `echo -e"\033[1mvendor/nxp-opensource/fsl_imx_demo/Ethernet/Android.mk:\ 033 [31merro r:\033 [0m\ 033 [1m " 以太网:同时指定 LOCAL_SDK_VERSION (system_current) 和 LOCAL_PRIVATE_PLATFORM_API(当前)但应仅指定一个 "\ 033 [0m " > & 2' build/make/core/sdk_check.mk: 34:错误:完成。 14:57:53 ckati 失败,退出状态为 1 我按照以下步骤从恩智浦网站下载和版本 imx8 的 AOSP- $ 仓库 init -u https://source.codeaurora.org/external/imx/imx-manifest.git -b imx-android-pie -m imx-p9.0.0_2.0.0-ga.xml $ 仓库同步 $ 来源 build/envsetup.sh $ lunch evk_8mm-userdebug $ make 2>&1|tee build-log.txt 现在我的问题是> 1。如何在由上述命令生成的这个 AOSP 版本中使用仿真器? 2。如何为午餐版本这个下载的 AOSP 源代码 aosp_x86_64-eng? 3.从哪里下载未经恩智浦修改的 Android Pie 原始 AOSP 源代码? 谢谢! 马内什
View full article
アプリケーション時間測定中にしきい値を下回る予期しない VC_OV イベント情報が発生した こんにちは、      サンプル レート 24 のアプリケーション タイム測定モードを使用しており、過電圧 (OV) しきい値を 4250 mV に設定しています。 ただし、充電中にバッテリーが約 80% SoC (約 4077 mV) に達すると、一部のセルが VC_OV イベント情報 をトリガーすることがあります。手動測定後、実際のセル電圧は OV しきい値を超えません。 測定された電圧が明らかにしきい値を下回っているにもかかわらず、VC_OV イベント情報が発生するこのような動作の原因は何でしょうか? ご協力ありがとうございます。 Mark 回复: Unexpected VC_OV Events Below Threshold during Application Timed Measurement マーク様へ MC33774A セーフティマニュアルをダウンロードし、セクション 10、11 を参照してください。あなたのようなCASEについては、FTME (Fault Tolerant Measurement Error) の説明があります。 セーフティマニュアルは、 MC33774A 製品ページの「セキュア」セクションからダウンロードしてください。 敬具、 ヨゼフ 回复: Unexpected VC_OV Events Below Threshold during Application Timed Measurement こんにちは、ヨゼフさん。 今後ともどうぞサポートをお願い申し上げます。 ハードウェアデザインはすでに現地の FAE によってレビューされ、確認されています。MC33774A はすでにバッテリー モジュールに完全に統合されているため、残念ながらオシロスコープで個々のセル電圧を直接調べることはできません。 また、充電電流の制御が不十分なために過渡的なスパイクが発生し、それが散発的な過電圧 (OV) イベント情報につながる可能性も考えられました。あなたの専門的な説明により、これらのイベント情報が一時的な行動によって引き起こされた可能性が高いという私たちの仮説がさらに裏付けられました。 続いて、次の質問をさせていただきます。 一時的なスパイクによって特に発生する OV イベントを識別するために推奨されるソフトウェアベースの方法はありますか? 貴重なご支援に改めて感謝申し上げます。 よろしくお願いします、 マーク 回复: Unexpected VC_OV Events Below Threshold during Application Timed Measurement マーク様へ 部品番号と回路図をありがとうございます。ただし、回路図では、セルと CTx CBx ピンの間に推奨コンポーネントが使用されているかどうかはわかりません。これらの推奨コンポーネントについては、MC33774A の完全なデータシートのセクション 11.1.1.2 を参照してください。 MC33774A の完全なデータシートは、 MC33774A 製品ページの「セキュア」セクションからダウンロードしてください。 急速充電中、一時的に OV しきい値を超える電圧過渡が発生するCANがあります。これらのスパイクは手動測定では捕捉できない可能性がありますが、MC33774A では検出できます。過渡電圧があるかどうかを確認するには、オシロスコープを使用して OV をトリガーする個々のセルへの電圧を測定してください。 充電/測定中はバランス調整がオンになっていないことを確認してください。バランス調整中は測定された電圧は保証されません。 敬具、 ヨゼフ 回复: Unexpected VC_OV Events Below Threshold during Application Timed Measurement こんにちは、ヨゼフさん。 ご返答ありがとうございます。 事前に十分な情報を提供できなかったことをお詫び申し上げます。 MC33774ATP1AEを使用しています。そしてここに部品の回路図があります。 ご協力ありがとうございます。 よろしくお願いします、 Mark Re: Unexpected VC_OV Events Below Threshold during Application Timed Measurement マーク様へ 使用しているコンポーネントの完全な部品番号を教えてください。 電圧レベルと部品の値を含む回路図を共有してください。 敬具、 ヨゼフ
View full article
使用 I2C 发送作为主站时无 SCL/SDA 信号 我已将 LPI2C1 安装为主服务器,但在尝试发送时没有得到任何输出。我有上拉电阻,信号仅连接到 1 个从属设备。请参见下文。造成这一问题的可能原因是什么? 初始化: /* 设置 I2C1 中断 */ IntCtrl_Ip_EnableIrq(LPI2C1_IRQn); IntCtrl_Ip_InstallHandler(LPI2C1_IRQn, LPI2C1_Master_Slave_IRQHandler, NULL_PTR); /* Init lpi2c in master mode */ Lpi2c_Ip_MasterInit(LPI2C_CHANNEL_0,&I2c_Lpi2cMasterChannel0); 发送数据: 布尔 I2C_read_fault_status(uint8 *rx_buffer) { TxBuff[0] = 0x78; if (LPI2C_IP_SUCCESS_STATUS == Lpi2c_Ip_MasterSendData(LPI2C_CHANNEL_0, (uint8 *)&TxBuff[0], 1U, FALSE)) { LM5171_data_ptr = rx_buffer; LM5171_data_len = 1; 返回 TRUE; } Re: No SCL/SDA Signals when using I2C Send as Master 我们使用的是 S32K324 部件、S32DS3.5 调试器和 Multilink FX 通用接口。我们的热电阻版本是 4.00 HF02。LPI2C 外设中没有启用调试的选项(与其他外设一样)。我没想到要手动设置该选项!当我设置 DBGEN 位时,信号如期工作。 Re: No SCL/SDA Signals when using I2C Send as Master 您使用的是哪种调试模式?特定的调试器还是板载调试器? Re: No SCL/SDA Signals when using I2C Send as Master Hi@phil_b 能告诉我们您使用的零件编号吗?此外,热电阻版本是? 如果您使用的是 S32K3,请尝试设置该位,然后再试一次。 Re: No SCL/SDA Signals when using I2C Send as Master 当我在调试模式下运行时,信号丢失了。当我拆下调试连接器时,信号还在!有没有办法在调试模式下查看信号?
View full article
i.MX95 decoder performance Hello. I have a question about the performance of the i.MX95 chip. We are planning to decode and output more than 16 channels of 640×480 @ 30 fps, 600 kbps video on the i.MX95. (1) Is this possible, and what is the maximum number of channels it supports? When we used the i.MX8QuadMax, its VPU only supported up to eight simultaneous decoders. (2) Does the i.MX95 also have a fixed number of hardware decoders like the QuadMax, or is its capacity determined dynamically by overall VPU performance? Also, with the i.MX8QuadMax we could only use GStreamer (no native decoder API was provided). (3) Does the i.MX95 offer a dedicated decoder API, or—like the QuadMax—must it be used solely through GStreamer? Thank you. Re: i.MX95 decoder performance Hi, For video decoding, the h264 decoder support 4k60 max or up to 32 streams. For VPU  simultaneous decoders number, it's decided by maximum DDR bandwith and maximum resolution. No native decoder API was provided. Best Regards, Zhiming
View full article
lx2160a カーネル 5.10.35 の SPI モードについて こんにちは: デフォルトの DSPI_TCF_MODE 送信は非常に遅いことがわかりました。SPI 転送を高速化したいのですが、DSPI_DMA_MODE 転送はサポートされていないようです。モードを DSPI_EOQ_MODE に変更すると、カーネルがクラッシュします。SPI を介したデータ転送を効果的に高速化するには、どのような手順を踏む必要があるかを知りたいです。 私の変更点は次のとおりです。 spi-fsl-dspi.c内 静的定数構造体 fsl_dspi_devtype_data ls2085a_data = { .trans_mode = DSPI_EOQ_MODE、 .max_clock_factor = 8、 }; Re: lx2160a kernel 5.10.35 about spi mode NXP が提供する Linux カーネル ソース コードを参照してください。 https://github.com/nxp-qoriq/linux/blob/lf-5.10.y/drivers/spi/spi-fsl-dspi.c 次の 2 つのモードのみがサポートされます。 列挙型dspi_trans_mode { DSPI_XSPI_MODE、 DSPI_DMA_MODE、 };   lx2160a プラットフォームでは DSPI_XSPI_MODE モードを使用してください。 [LX2160A] = { .trans_mode = DSPI_XSPI_MODE、 .max_clock_factor = 8、 .fifo_size = 4、 },
View full article
Jlink fails to debug imx93 When using JLink to debug the M33 core of i.MX93, after setting breakpoints, it seems only the PC pointer is halted, while various internal counters continue counting, preventing normal debugging. What are the solutions for this issue?Thank you for ansering! Re: Jlink fails to debug imx93 Yes, and I tried on single M33 core, the system counter can't be halted as before. I can't find the reason. Best Regards. Re: Jlink fails to debug imx93 Hi @leoX  My test is based on single M33 and Jlink, did you boot M33 with remoteproc? Best Regards, Zhiming Re: Jlink fails to debug imx93 Thank you for your response! I am reading tstmr in a task to calculate the task's execution cycle, but if I add a breakpoint, the calculated cycle increases, indicating that the system counter continues to count when I add a breakpoint. Also, I am starting the M core through the A core. Does setting the download mode for M33 help? Best Regards Re: Jlink fails to debug imx93 Hi, Can you share the screenshot of  various internal counters?  Did you set the m33 download mode? Best Regards, Zhiming
View full article
RT1176 SFPD QSPI IS25LP064D-JKLE 私は評価ボードと同じ方法で FlexSPI1 を実装するカスタム RT1176 ボードをフラッシュしようとしていますが、使用しようとしている IS25LP064D-JKLE をサポートするために、フラッシュ VCC に 3.3V を供給しています。flexspi_nor_config.cを添付しました。およびメモリの設定。デフォルトのflexspi_nor_polling_transfer_cm7を使用しています。Link Application to RAM を有効にしてデバッグすると、「プログラムデータ - 読み出しデータ値が正しくありません!」というエラーが返されます(125行目)。設定上の問題が何なのかまだ把握できていません。現在、MCU Link MR を使用していますが、Jlink にもアクセスできます。カスタムボードにはディップ・スイッチがあり、ブートモード 1 を 1、ブートモード 0 を 0 に設定しています。 Re: RT1176 SFPD QSPI IS25LP064D-JKLE こんにちは@AnteoJ 、 NXP MIMXRTシリーズにご興味をお持ちいただきありがとうございます。 RT1020-EVK で使用されるフラッシュは ISSI_IS25LP064A SO、対応する flexspi_nor_config.c は SDKs 内にあります。まずはこれを確認してください。 また、フラッシュを交換するときは、まず SEC/MCUBootUtility に組み込まれているテンプレートのテストに合格すると、独自のフラッシュを LUT の問題から保護することができます。 よろしくお願いします、 ギャビン Re: RT1176 SFPD QSPI IS25LP064D-JKLE データシートに従って特定のフラッシュの値を調べて置き換えましたが、デバッグを開始すると、依然として IMPRECISERR と UNDEFINSTR が発生します。調整する必要がある追加のパラメータがあるかどうかはわかりません。ここに私のコードがあります: /* * 著作権 2018-2022 NXP * 無断転載を禁じます。 * * SPDXライセンス識別子: BSD-3条項 */ #include "evkbmimxrt1170_flexspi_nor_config.h" /* ツールによって使用されるコンポーネント ID 定義。*/ #ifndef FSL_COMPONENT_ID #FSL_COMPONENT_ID "プラットフォーム.ドライバ.xip_board" を定義します #endif /**************************************************************************************** * コード **********************************************************************************/ #定義されている場合(XIP_BOOT_HEADER_ENABLE) && (XIP_BOOT_HEADER_ENABLE == 1) # __CC_ARM が定義されている場合 || __ARMCC_VERSION が定義されている場合 || __GNUC__が定義されている場合 __attribute__ ((セクション(".boot_hdr.conf")),使用済み)) #elif 定義済み( __ICCARM__ ) #pragma location = ".boot_hdr.conf" #endif #FLASH_DUMMY_CYCLES 0x03 を定義する #FLASH_DUMMY_VALUE 0x03 を定義する const flexspi_nor_config_t qspiflash_config = { .memConfig= { 。タグ= FLEXSPI_CFG_BLK_TAG、 .バージョン= FLEXSPI_CFG_BLK_VERSION、 .readSampleClksrc=kFlexSPIReadSampleClk_Loopback内部的に、 .csホールド時間= 3u、 .csセットアップ時間= 3u、 // DDRモード、ワードアダッサブル、セーフ構成、差動クロックを有効にする .controllerMiscOption= 0x10, .デバイスタイプ= kFlexSpiDeviceType_SerialNOR、 .sflashPadType= kSerialFlash_4Pads、 .シリアルクロック周波数= kFlexSpiシリアルクロック_60MHz、 .sflashA1サイズ= 8u * 1024u * 1024u、 /* フラッシュ設定機能を有効にする */ .configCmdEnable= 1u、 .configModeType[0]= kDeviceConfigCmdType_Generic、 /* 設定コマンドシーケンスを設定する */ .configCmdSeqs[0]= { .seqNum= 1, .seqId= 12, 。予約済み= 0, }, /* フラッシュ内の読み取りレジスタの設定値を準備する */ .configCmdArgs[0]= (FLASH_DUMMY_VALUE << 4)、 .lookupTable= { // LUTを読み込む [0] = FLEXSPI_LUT_SEQ(CMD_SDR, FLEXSPI_1PAD, 0xEB, RADDR_SDR, FLEXSPI_4PAD, 0x20), [1] = FLEXSPI_LUT_SEQ(DUMMY_SDR, FLEXSPI_4PAD, FLASH_DUMMY_CYCLES, READ_SDR, FLEXSPI_4PAD, 0x04), // ステータスLUTの読み取り [4 * 1 + 0] = FLEXSPI_LUT_SEQ(CMD_SDR, FLEXSPI_1PAD, 0x05, READ_SDR, FLEXSPI_1PAD, 0x04), // 書き込み有効LUT [4 * 3 + 0] = FLEXSPI_LUT_SEQ(CMD_SDR, FLEXSPI_1PAD, 0x06, STOP, FLEXSPI_1PAD, 0x0), // セクターLUTを消去する [4 * 5 + 0] = FLEXSPI_LUT_SEQ(CMD_SDR, FLEXSPI_1PAD, 0x20, RADDR_SDR, FLEXSPI_1PAD, 0x18), // ブロックLUTを消去する [4 * 8 + 0] = FLEXSPI_LUT_SEQ(CMD_SDR, FLEXSPI_1PAD, 0xD8, RADDR_SDR, FLEXSPI_1PAD, 0x18), // PapeプログラムLUT [4 * 9 + 0] = FLEXSPI_LUT_SEQ(CMD_SDR, FLEXSPI_1PAD, 0x02, RADDR_SDR, FLEXSPI_1PAD, 0x18), [4 * 9 + 1] = FLEXSPI_LUT_SEQ(WRITE_SDR, FLEXSPI_1PAD, 0x04, STOP, FLEXSPI_1PAD, 0x0), // チップLUTを消去する [4 * 11 + 0] = FLEXSPI_LUT_SEQ(CMD_SDR, FLEXSPI_1PAD, 0x60, STOP, FLEXSPI_1PAD, 0x0), // 読み取りレジスタLUTを設定する [4 * 12 + 0] = FLEXSPI_LUT_SEQ(CMD_SDR, FLEXSPI_1PAD, 0xC0, WRITE_SDR, FLEXSPI_1PAD, 0x01), [4 * 12 + 1] = FLEXSPI_LUT_SEQ(STOP, FLEXSPI_1PAD, 0x00, 0, 0, 0), }, }, .ページサイズ= 256u、 .セクターサイズ= 4u * 1024u、 .ipcmdシリアルクロック周波数= 0x1、 .ブロックサイズ= 64u * 1024u、 .isUniformBlockSize= 偽、 }; #endif /* XIP_BOOT_HEADER_ENABLE */
View full article
为什么 i.MX9 上采用 24 MHz TPM 时钟时,TPM 输入捕获会返回较远的距离值(约 12 米) 你好,恩智浦社区、 我正在使用 i.MX93(Cortex-M33),正在尝试使用 TPM 输入捕获来连接 超声波距离传感器(如 HC-SR04 )。我正在使用TPM3(通道2上的输入捕获)测量ECHO引脚上升沿和下降沿之间的脉冲宽度。 TPM 时钟配置为24 MHz,距离用公式计算: floattimeUs = (ticks / tpmClk) *1e6; floatdistanceCm = timeUs /58.0f; 以下是我的完整代码供参考:- #include "fsl_debug_console.h" #include " board.h " #include "app.h" #include "fsl_tpm.h" #include "fsl_rgpio.h" #include "fsl_lpuart.h" /******************************************************************************* * 定义 ******************************************************************************/ /******************************************************************************* * 原型 ******************************************************************************/ /******************************************************************************* * 变量 ******************************************************************************/ 易变 booltpmIsrFlag = 假; 易变 uint32_t上升时间 = 0; 易变 uint32_tfallingTime = 0; 易变 boolgotRisingEdge = 假; /******************************************************************************* * 代码 ******************************************************************************/ voidInit_LPUART(void) { lpuart_config_t config; /* 获取默认 UART 配置(8N1、无奇偶校验、无流量控制) */ LPUART_GetDefaultConfig(&config); /* 根据需要修改参数 */ config.baudRate_Bps = 115200U; config.enableTx = true; config.enableRx = true; /* 使用指定参数初始化 UART */ LPUART_Init(BOARD_LPUART,&config、 board_lpuart_clk_freq); } 浮点数计算距离void) { uint32_tticks; 如果(fallingTime>= risingTime) ticks = fallingTime - risingTime; 不然 ticks = (tpm_max_counter_value(demo_tpm_baseaddr) - risingTime)+ fallingTime;/* 处理溢出 */ 浮点数tpmClk = CLOCK_GetIpFreq(lptpm_clock_root);/* 可以调整为 TPM 时钟 */ 浮点数timeUs = (ticks *) 1.0f/ tpmClk) * 1e6; PRINTF("TPM Clock :%.2f\r\n",tpmClk); 浮点数distanceCm = timeUs / 58.0f; 返回distanceCm; } void设置void) { rgpio_pin_config_t out_config ={ kRGPIO_DigitalOutput, 0, };     /* 触发信号引脚 */ RGPIO_PinInit(BOARD_RGPIO,TRIG_PIN,&out_config); RGPIO_PinWrite(BOARD_RGPIO,TRIG_PIN,0); } voidSendTrigPulse(void) { RGPIO_PinWrite(BOARD_RGPIO, TRIG_PIN, 1); SDK_DelayAtLeastUs(10,SystemCoreClock); RGPIO_PinWrite(BOARD_RGPIO, TRIG_PIN, 0); } void tpm_input_capture_handler(处理程序) { uint32_tstatus = TPM_GetStatusFlags(demo_tpm_baseaddr); 如果(状态& tpm_channel_flag)     { uint32_tcapturedValue = TPM_GetChannelValue(demo_tpm_baseaddr, board_tpm_input_capture_channel); 如果(!gotRisingEdge) { risingTime = capturedValue; gotRisingEdge = true; // 切换到下降沿检测 TPM_SetupInputCapture(demo_tpm_baseaddr,TPM_SetupInputCapture(,kTPM_FallingEdge);      } 不然 { fallingTime = capturedValue; tpmIsrFlag = true; gotRisingEdge = 假; //切换回上升边缘检测以进行下次测量 TPM_SetupInputCapture(demo_tpm_baseaddr,TPM_SetupInputCapture(,kTPM_RisingEdge);      } // 清除该通道的中断标志 TPM_ClearStatusFlags(demo_tpm_baseaddr, tpm_channel_flag);    } sdk_isr_exit_barrier; // tpmIsrFlag = true; //* 清除中断标志。 // TPM_ClearStatusFlags(DEMO_TPM_BASEADDR, TPM_CHANNEL_FLAG); // sdk_isr_exit_barrier; } /*! * @brief主要功能 */ intmain(void) { tpm_config_t tpmInfo; /* 板引脚、时钟、调试控制台初始化 */ BOARD_InitHardware(); setUp (); /* 安装 GPIO */ // Init_LPUART(); /* 再初始化一个 UART */ /* 向终端打印注释 */ PRINTF( "\ r\n TPM 输入捕获示例\ r\n "); PRINTF ("\ r\n 一旦接收到输入信号,就会打印出输入捕获值\ r\n "); TPM_GetDefaultConfig(&tpmInfo); /* 初始化 TPM 模块 */ TPM_Init(demo_tpm_baseaddr&tpmInfo); /* 在 TPM 通道上设置输入捕获 */ TPM_SetupInputCapture(demo_tpm_baseaddr, TPM_SetupInputCapture(, kTPM_RisingEdge); /* 将计时器设置为自由运行模式 */ TPM_SetTimerPeriod(demo_tpm_baseaddr, tpm_max_counter_value(demo_tpm_baseaddr)); /* 检测到第二个边沿时启用通道中断 */ TPM_EnableInterrupts(demo_tpm_baseaddr, tpm_channel_interrupt_enable); /* 在 NVIC 启用 */ 启用 IRQ(tpm_interrupt_number); TPM_StartTimer(demo_tpm_baseaddr, kTPM_SystemClock); 虽然(1)     { tpmIsrFlag = 假; SendTrigPulse(); 当(!tpmIsrFlag) { __NOP ();//等待捕获      } 浮点数distance = CalculateDistance(); PRINTF("RisingTime :%u\r\n",risingTime); PRINTF("FallingTime :%u\r\n",fallingTime); PRINTF("Distance:%.2f cm\r\n"距离); SDK_DelayAtLeastUs(60000,SystemCoreClock);    } }   但是,我始终得到的距离值在 1228 厘米到 1260 厘米之间,这是不正常的大,即使在离传感器很近的地方有一堵墙(例如<50 厘米)也是如此。下面是一些阅读范例: TPM Clock : 24000000.00 RisingTime : 1172965159 FallingTime : 1174675524 Distance: 1228.71 cm TPM Clock : 24000000.00 RisingTime : 1283028325 FallingTime : 1284738837 Distance: 1228.82 cm TPM Clock : 24000000.00 RisingTime : 1448107508 FallingTime : 1449851665 Distance: 1252.99 cm TPM Clock : 24000000.00 RisingTime : 269392922 FallingTime : 269436317 Distance: 31.17 cm TPM Clock : 24000000.00 RisingTime : 278665048 FallingTime : 278708444 Distance: 31.18 cm TPM Clock : 24000000.00 RisingTime : 287937289 FallingTime : 287977974 Distance: 29.23 cm TPM Clock : 24000000.00 RisingTime : 297205949 FallingTime : 297248662 Distance: 30.68 cm TPM Clock : 24000000.00 RisingTime : 306477012 FallingTime : 306519726 Distance: 30.69 cm 我不知道为什么这些数值总是过大。 i.MX93EVK 时钟|计时器 Re: Why is TPM input capture returning large distance values (~12 meters) with 24 MHz TPM clock on i 谢谢您的答复! Re: Why is TPM input capture returning large distance values (~12 meters) with 24 MHz TPM clock on i 你好 使用 TPM 输入捕获的 HC-SR04 超声波传感器的大距离值(约 12 米)通常源于信号的脉冲宽度测量不正确。传感器通过计时回波脉冲的持续时间来测量距离,如果测量包括触发信号或不准确,则可能导致距离读数膨胀。   以下是潜在原因和解决方案的详细介绍: 1。脉冲宽度测量不正确: 触发信号脉冲包括: 输入捕获可能捕获从触发脉冲的上升沿到回波脉冲下降沿的时间,而不仅仅是回波脉冲本身。   解决方案: 确保将输入捕获配置为仅测量回波脉冲的持续时间。这通常涉及将计时器设置为在回波信号的上升沿触发并捕获下降沿。   2.信号干扰: 早期回声检测 传感器的接收器可能会在发射器从物体反弹之前检测到信号,从而导致人为的脉冲宽度变长。   斜射反射 倾斜表面的反射会导致回声信号变弱或延迟,从而导致距离读数不准确。   解决方案: 屏蔽:在发射器和接收机上使用小管子或护罩,以最大限度地减少早期检测并改善信号方向性。   多次读数: 读取多个读数,过滤掉过大的数值或计算平均值。   NewPing 库: 考虑使用 NewPing 库,该库专门用于处理这些问题。 4.软件实施: 计时器配置: 不正确的计时器预分频器或时钟设置会影响脉冲宽度测量的精度。   Pings 之间的延迟: 传感器有一个最小间隔时间,超过这个时间会导致读数不准确。   解决方案: 检查定时器设置: 检查定时器的预分频器和时钟配置,确保时间测量准确。   适当的延迟:确保 ping 之间有足够的延迟,以使传感器能够 RESET 和稳定。     此致  
View full article