Multi Source Translation Content

取消
显示结果 
显示  仅  | 搜索替代 
您的意思是: 

Multi Source Translation Content

讨论

排序依据:
flexbuilder lsdk2108 支持 SERDES1 协议 0x3333 您好, 我们在自定义主板中使用 LS1046A,图像是使用 flexbuild lsdk2108 编译的,我们的设计与 ARDB 开发套件类似。SERDES1 支持两个 10G 端口和两个 1G 端口,不使用 SERDES2。 我们已经根据我们的自定义主板编译了图像,一切正常,10G 端口 (xgmii) 和 1G 端口 (sgmii) 都运行正常。在我们的一个应用中,我们希望将两个 10G 端口都用作 1G 端口。为此,我们更改了 rcw、uboot 和 linux dts 文件。随函附上这些文件以供参考。 编译和主板启动后,我们可以看到 Linux 日志仍在寻找 10G 端口,而 ubuntu 文件系统没有显示 fm1-mac1 和 fm1-mac2 端口。附上启动日志以供参考。 从启动日志中可以明显看出,我们缺少了一些需要更改的内容。在这方面,要求支持需要修改哪些文件才能满足我们的要求。 谢谢& Regards-- 纳古尔瓦利-赛亚德 Re: flexbuilder lsdk2108 support for SERDES1 protocol 0x3333 您好, 感谢您的回复。按照建议,在 rcw、u-boot 和 linux dts 文件中进行更改。从所附的上一个日志文件中可以看到,初始信息显示如下。 "ETH0:FM1-MAC1,ETH1:FM1-MAC2,ETH2:FM1-MAC3,ETH3:FM1-MAC4,ETH4:FM1-MAC5,ETH5:FM1-MAC6 " 更改 u-boot dts 文件后,出现 fm1-mac1 和 fm1-mac2。请建议我们需要对 eth.c 文件做哪些修改。 此外,是否还需要修改任何其他文件。 谢谢& Regards-- 纳古尔瓦利-赛亚德 Re: flexbuilder lsdk2108 support for SERDES1 protocol 0x3333 你好 是的--对于 LS1046A,将两个 10G SerDes1 端口改为 1G 并不仅仅是 Linux DTS 变动。你需要对齐所有三层:RCW、U-Boot 主板以太网修复和 Linux DTS。如果 Linux 仍在探测 10G 端口,而 fm1-mac1 / fm1-mac2 没有出现,那么最有可能的问题是 U-Boot 在 Linux 启动之前仍在 DT 中禁用这些 MAC 节点 要使两个 LS1046A 10G 端口用作 1G 端口,必须将 RCW 更改为 SGMII 协议,例如 0x3333 ,更新 U-Boot eth.c 以使其不会禁用这些 MAC 节点,并更新 Linux DTS,以便使用正确的 PHY 或固定链路配置将这些端口描述为 sgmii。 此致问候 Re: flexbuilder lsdk2108 support for SERDES1 protocol 0x3333 您好, 我们按照建议修改了 rcw、eth.c、uboot dts 和 linux dts。现在我们可以枚举 Linux 启动后的 fm1-mac1 和 fm1-mac2 端口(附上以供参考)。 但我们无法通过这些端口进行数据通信。 还附上了日志文件以供参考。 请审查这些修改意见,并就需要做哪些修改提出进一步建议。 谢谢 -- 纳古尔瓦利-赛亚德
查看全文
rptr 停留在 AMDGPU [GFX 环测试超时] 中 你好 ,当 Amdgpu 调用 amdgpu_ih_process() 函数时,它会检查 rptr 是否等于 wptr,如果不等于,它就会调用 amdgpu_irq_dispatch() 函数,在这里我得到了以下错误信息 [ 26.272978] [drm:amdgpu_ih_process [amdgpu]] amdgpu_ih_process: rptr 0, wptr 16 [ 26.281052] [drm:amdgpu_irq_dispatch [amdgpu]]未注册中断 src_id:140 of client_id:0 [ 26.454946] amdgpu 0000:01:00.0:[drm:amdgpu_ring_test_helper[amdgpu]]*ERROR* ring gfx 测试失败 (-110) [ 26.465393] [drm:amdgpu_device_init [amdgpu]]]*ERROR* hw_init of IP block failed -110 [ 26.474932] amdgpu 0000:01:00.0:amdgpu: amdgpu_device_ip_init 失败 [ 26.481415] amdgpu 0000:01:00.0:amdgpu: GPU 启动过程中出现致命错误 [ 26.487791] amdgpu 0000:01:00.0:amdgpu:amdgpu:整理设备。 [ 26.494006] [drm:gfx_v8_0_set_eop_interrupt_state [amdgpu]] invalid me 2 [ 26.501433] [drm:gfx_v8_0_set_eop_interrupt_state [amdgpu]] invalid me 2 [ 26.508860] [drm:gfx_v8_0_set_eop_interrupt_state [amdgpu]] invalid me 2 [ 26.516252] [drm:gfx_v8_0_set_eop_interrupt_state [amdgpu]] invalid me 2 Re: rptr is stuck in AMDGPU [GFX ring test timeout] 你好 请分享更多信息,您正在使用什么MPU、自定义或恩智浦EVK、BSP版本以及您正在运行的完整测试。
查看全文
S32G-VNP-RDB3 GMAC 你好,我正在用 GMAC 和 S32G-VNP-RDB3 主板进行帧抢占,但我成功实现了 1G bps。但我想把它改为 10M bps,但我做不到,那么限制必须是 1G bps 吗? Re: S32G-VNP-RDB3 GMAC 首先,感谢您的回答。我有两个 S32G-VNP-RDB3 主板,通过 1:1 的链路将 GMAC 相互连接,然后继续进行帧抢占。使用 M 型磁芯。我没有使用环回,而是继续进行。此时,我如图所示设置了时钟和设置,但我看到了一个现象,此时没有发生帧抢占的握手,就像 tx、rx 一样。我需要一个解决方案! Re: S32G-VNP-RDB3 GMAC 你好,@dongmin、 感谢您联系我们。关于您的问题,抢占配置并不只适用于 1G bps。 我迅速修改了Gmac_Ip_InternalLoopback,使用抢占和 10M bps,结果成功了。请提供以下信息,以便我为您提供更多帮助: 您说"不能" 配置为 10M bps 是什么意思? 请说明您是如何测试这两种配置的。 请说明您是在哪个内核上运行应用程序的。 请分享您的 RTD 和/或 BSP 版本。 谢谢。 Re: S32G-VNP-RDB3 GMAC 我现在就是这么用的! Re: S32G-VNP-RDB3 GMAC 你好@dongmin、 感谢您提供的详细信息。我会尝试在我这边重现这个问题,然后找到解决方案。 如果可能,请提供我在上次答复中要求的信息。 谢谢。 Re: S32G-VNP-RDB3 GMAC 你好,@dongmin、 对不起,我的回复晚了。我无法重现您的问题,能否与我分享您的项目?您可以使用本社区的私人信息功能或创建一个提及本主题的私人支持票据。 谢谢。
查看全文
2026 年最佳 IPTV 服务 Nigma TV 是2026年向美国、加拿大、英国和全球用户推荐的最佳IPTV服务之一——主要是因为它专为最重要的时候的稳定直播而打造。 Nigma TV拥有51,000多个直播频道和16万多部电影和电视剧在线点播,一次订阅即可为用户提供庞大的娱乐库。该服务支持高清、全高清、4K 和 UHD 流媒体,在智能电视、Firestick、Android、iOS、PC、Mac 和流行的 IPTV 播放器应用程序上表现出色。 Nigma TV 脱颖而出的原因在于它注重高峰时段和重大直播活动期间的稳定性。该平台采用防冻技术、快速服务器和流畅播放设计,以减少缓冲并保持流媒体的可靠运行。 对于在 2026 年寻找优质 IPTV 提供商的人来说,Nigma TV 是直播电视、体育、电影、连续剧和国际频道的有力选择。 官方网站:NIGMA.TV
查看全文
tea2376 phase shedding can't edit TEA2376 phase shedding beyond 0 30% or 40% load points in Ringo gui. is there a way to be able to fine tune MTP settings in Ringo? Re: tea2376 phase shedding Hello Lee,  I have forwarded your question to our application engineer supporting the TEA2376, please see his answer below.   There is no advanced tab or additional parameters available to further fine‑tune this setting at this time.   As a workaround, I suggest adjusting the PFC OPP threshold to help shift the phase‑shedding operating point, provided there is sufficient margin in your current OPP setting.   BRs, Tomas
查看全文
2026年版おすすめIPTVプロバイダー無料トライアル The 2026年に最高のIPTVプロバイダは、無料トライアルを提供することで、ユーザーがペイメントを支払う前にストリーミング品質、チャネルの利用可能性、およびデバイスとの互換性をテストできるようにします。これらのサービスは通常、スポーツ、映画、ライブTVなど数千ものグローバルチャネルに加え、柔軟な視聴が可能なVODコンテンツを提供している。ほとんどの無料トライアル期間は24時間から数日間で、バッファリング、速度、画質などのパフォーマンスを評価するのに十分な時間があります。主要なIPTVプロバイダーは、HD、フルHD、4Kストリーミングに対応しており、Firestick、スマートテレビ、Android、iOS、PCなどの人気デバイスと互換性があります。信頼性の高いサービスは、特にライブイベント時において、高い稼働率と最小限のバッファリングに重点を置いています。料金は一般的に手頃で、月額10ドルから20ドル程度であることが多く、IPTVは従来のケーブルテレビに代わる費用対効果の高い選択肢となっている。無料トライアルと迅速なカスタマーサポートの両方を提供するプロバイダーを選ぶことが、2026年にスムーズでリスクのないIPTV体験を確実にする最善の方法です。 公式サイト: https://tinyurl.com/4dwb66uy  
查看全文
s32ds Arm のアクティベーションに失敗しました S32DSを再インストールした後、アクティベーションコード60CA-0D4F-9A08-3EEBを使用した際に、「お使いのソフトウェアのアクティベーションコードは別の機能用です」というエラーメッセージが表示されました。 この問題について確認していただけますか?添付ファイルは私のインストールログです 回复: s32ds arm Activation failed キャンセルボタンをクリックした後、「ソフトウェアのアクティベーションコードは既にこのステーションで使用されています(3 アクティベート済み 2.2)」というエラーメッセージが表示されました。 回复: s32ds arm Activation failed はい、アクティベーションの問題は解決しました。 しかし、S32DSを開いてS32K144用の新しいプロジェクトを作成すると、プロジェクトフォルダを展開したときに「サポートされていないか、認識されない形式です」というエラーポップアップウィンドウが表示されます。ポップアップは通常の方法では閉じられません。 この問題にもかかわらず、プロジェクトは正常にコンパイルされているようだ。このエラーの原因を理解するのを手伝っていただけませんか? 回复: s32ds arm Activation failed こんにちは、 あなたのアカウントを確認したところ、木曜日にS32DSを有効化できたようですが、それでよろしいでしょうか? 回复: s32ds arm Activation failed こんにちは、 プロジェクトを共有していただけますか?このプロジェクトは、OSによる暗号化の影響を受けている可能性があります。
查看全文
LS1028A could not get PHY in U-Boot Hi, I'm developing my project with LS1028A. On my board the management interface (MDC/MDIO) of AR8031 connects to EMDIO. PHY address is 2. I read the PHY register using the following commands in U-Boot: =>mdio read 2 0 Reading from bus emdio-3 PHY at address 2: TT0 - 0x0 According U-Boot code, I know the character ‘T’ means MDIO busy. The EMDIO_CFG register definition gives us the description of all the bits. But how is BSY field set to 1? Does it set by hardware? and in what circumstances will it be set to 1? Besides, I have another test that disconnects the MDIO/MDC between LS1028 and AR8031.  BSY field is still 1. Re: LS1028A could not get PHY in U-Boot Hello, I've also run into the problem where the MDIO bus is unable to read the PHY chip. I was wondering if you could kindly share how you resolved it at the time. Thank you very much. Re: LS1028A could not get PHY in U-Boot Hi, @ainolike  I met the same problem on my project. The reference board has two phy chips(RGMII QSGMII interface) connected to the lsf0204 which work very well. And we add another phy (RGMII interaface) and cause the MDIO BUSY occasionally. Can you tell me how to fix it on your project in the end? Thank you  xinli Re: LS1028A could not get PHY in U-Boot I make a test that is removing lsf0204 from our board. And the MDIO is no longer busy.  Two PHY chips are connected to lsf0204. When disconnect one, theother can be read normally. Re: LS1028A could not get PHY in U-Boot There is a lsf0204 between LS1028A and PHY MDC/MDIO interface. PHY chip is disconnected from lsf0204, the BSY bit of register is still 1. Re: LS1028A could not get PHY in U-Boot I don't know much about hardware. Our hardware engineers say that it's a matter of electrical level. Re: LS1028A could not get PHY in U-Boot > our hardware has some changes. Which exactly changes? Re: LS1028A could not get PHY in U-Boot This problem is probably a hardware problem, because our hardware has some changes. The same U-Boot image can find PHY on the development board. I want to know what the MDIO busy implementation mechanism is, which is not described in detail in LS1028ARM.pdf. Re: LS1028A could not get PHY in U-Boot => md 0x1f8101c00 1f8101c00: 80839549 00008000 00000000 00000003 1f8101c10: 00030001 00000000 00000000 00000000 1f8101c20: 00000000 00000000 00000000 00000000 1f8101c30: 00000000 00000000 00000000 00000000 => md 0x1e00074 01e00074: 00000000 00000000 00000000 00000000 01e00084: 00000000 00000000 00000000 00000000 01e00094: 00000000 00000000 00000000 00000000 01e000a4: 870b0110 00000040 00000000 00000000 Re: LS1028A could not get PHY in U-Boot Please provide raw memory dump of the EMDIO registers and DEVDISR2.
查看全文
The Edge AI board design is based on an i.MX8M Nano processor with an integrated power harvesting un I'm sharing the "Black Dragon 1" model, a tablet designed for use in harsh environments. I'd appreciate your feedback on improving its performance. Re: The Edge AI board design is based on an i.MX8M Nano processor with an integrated power harvestin So what is your details qusestions need us to help you?
查看全文
[FRDM-IMX95] i.MX 95 カメラ+AI - マルチスレッドによる最適化 (日本語ブログ) はじめに 前回、こちらの記事でFRDM-IMX95を用いてYOLOを使った物体認識デモを紹介しました。その記事の中では1フレームの処理を1ループの中で全部シーケンシャルに実施し、12~15fps程度のフレームレートになっていました。 今回は、最適化を行い、フレームレートの大幅な向上を図ってみます。 上記の記事でYOLOv8mが動いている前提での説明します。 (作業時間:10分) *i.MX95カメラ+AI – YOLOv8mの例が完了している前提 最適化の手段 CPUではなくハードウェアアクセラレータを使う いくつかのスレッドに分け、時間のかかる処理を分割して高速化させる ループ内での処理をできるだけ減らす というのが常套手段かと思います。 既存のデモでは、簡単に使えるハードウェアアクセラレータについてはすでに組み込んでいます。 3860x2160といった高い解像度の入力を、プレビュー表示に十分な1280x720へのリサイズをするところにimxvideoconvert_g2d=GPU 2Dを使っています。 今回は、まだ実施していないスレッド分割をやってみます。 マルチスレッドによるパイプライン まずはパイプライン構成の概念から説明します。 カメラ入力+AIでの画像認識では、大きく分けて3つのパートに分かれます。 画像入力パート NPUでの推論パート ポストプロセスパート これらが全部終わって、ようやく画像認識結果がディスプレイに表示されます。 仮に 画像入力に8ms NPU推論に40ms ポストプロセスに12ms かかったという例を考えます。トータル60msかかって、結果1000/60=16.6fpsとなるわけですね。 赤くかこったポストプロセスの箱が、ディスプレイに結果表示が行われるところです。 これを、画像入力スレッド、NPU推論スレッド、ポストプロセススレッドの3本のスレッドにわけると以下のようにできます。 一番時間のかかるスレッドのことをクリティカルパスと言ったりしますが、この場合NPU推論処理がクリティカルパスになりますが、1つのループにかかる時間がクリティカルパスの処理時間に短縮できます。最初のディスプレイ出力結果は上の例よりも遅くなる(=レイテンシが増える)ものの、2回目以降のディスプレイ出力は早くなり、結果的にフレームレートが高くなる、という結果が得られます。 これはCPUのパイプライン処理、周波数を上げる手法と全く同じものです。 フレームレートを高めることを至上目的とする場合、原理的にはAPI単独で一番時間がかかるものを特定してそのAPI単体のスレッドを作成、それ以外のスレッドは、先に特定したクリティカルパスのスレッドを超えないようにAPI、コードをまとめていく、というやり方になるかとは思います。ただその結果スレッドが増えることでのオーバーヘッドが大きくなってしまったり、スレッドの本数分だけレイテンシが追加されることになりますので、現実的なバランス、メンテナンスのしやすさを考慮してスレッド分割するのがいいですね。 Pythonコードのマルチスレッド化 上の例で示したような3つのスレッドに分ける実装をしてみました。 #!/usr/bin/env python3 import os import time import threading import queue import cv2 import numpy as np import tflite_runtime.interpreter as tflite # ============================================================ # 設定 # ============================================================ MODEL_PATH = "/usr/bin/tensorflow-lite-2.19.0/examples/yolov8m_int8_neutron.tflite" LABEL_PATH = "/usr/bin/tensorflow-lite-2.19.0/examples/labels_yolov8.txt" # COCO 80 classes CONF_TH = 0.60 IOU_TH = 0.45 MAX_DET = 50 MIN_BOX_W = 4 MIN_BOX_H = 4 GST_PIPELINE = ( "libcamerasrc " "camera-name=/base/soc/bus@42000000/i2c@42540000/os08a20_mipi@36 ! " "video/x-raw,format=YUY2,framerate=30/1,width=3840,height=2160 ! " "imxvideoconvert_g2d rotation=4 ! " "video/x-raw,width=1280,height=720,format=BGRA ! " "appsink drop=true max-buffers=1" ) # libcamera / TFLite 関連環境変数 os.environ["LIBCAMERA_IPA_MODULE_PATH"] = "/usr/lib/libcamera/ipa-nxp-neo-uguzzi/" os.environ["LIBCAMERA_PIPELINES_MATCH_LIST"] = "nxp/neo,imx8-isi,uvc" # Neutron 使用時は XNNPACK を無効化 os.environ["TFLITE_DISABLE_XNNPACK"] = "1" DELEGATE_LIB = "/usr/lib/libneutron_delegate.so" # ============================================================ # ユーティリティ # ============================================================ def load_labels(path: str) -> list[str]: with open(path, "r", encoding="utf-8") as f: return [line.strip() for line in f] def bbox_iou(box: np.ndarray, boxes: np.ndarray) -> np.ndarray: """1 つの box と複数 box 群との IoU を計算。""" x1 = np.maximum(box[0], boxes[:, 0]) y1 = np.maximum(box[1], boxes[:, 1]) x2 = np.minimum(box[2], boxes[:, 2]) y2 = np.minimum(box[3], boxes[:, 3]) inter_w = np.maximum(0, x2 - x1) inter_h = np.maximum(0, y2 - y1) inter = inter_w * inter_h area1 = (box[2] - box[0]) * (box[3] - box[1]) area2 = (boxes[:, 2] - boxes[:, 0]) * (boxes[:, 3] - boxes[:, 1]) union = area1 + area2 - inter + 1e-6 return inter / union def nms(boxes: np.ndarray, scores: np.ndarray, iou_th: float) -> list[int]: """単純な NMS 実装。""" idxs = np.argsort(scores)[::-1] keep: list[int] = [] while len(idxs) > 0: i = idxs[0] keep.append(i) if len(idxs) == 1: break ious = bbox_iou(boxes[i], boxes[idxs[1:]]) idxs = idxs[1:][ious < iou_th] return keep def sigmoid(x: np.ndarray) -> np.ndarray: return 1.0 / (1.0 + np.exp(-x)) # ============================================================ # スレッド: 1. カメラキャプチャ (+ 前処理 + 入力テンソル作成) # ============================================================ def capture_worker( cap: cv2.VideoCapture, frame_queue: "queue.Queue[tuple]", stop_event: threading.Event, in_h: int, in_w: int, input_dtype: np.dtype, in_scale: float, in_zero: float, ) -> None: """ cap.read() でフレームを取得し、前処理+入力テンソル作成まで行って frame_queue に流すスレッド。 キューには以下のタプルを入れる: (frame_bgr, input_data, scale, left, top, w0, h0) """ canvas = np.full((in_h, in_w, 3), 114, dtype=np.uint8) try: while not stop_event.is_set(): ret, frame_bgra = cap.read() if not ret: print("Failed to read frame") stop_event.set() break frame_bgr = cv2.cvtColor(frame_bgra, cv2.COLOR_BGRA2BGR) h0, w0 = frame_bgr.shape[:2] # 前処理: letterbox scale = min(in_w / w0, in_h / h0) nw, nh = int(w0 * scale), int(h0 * scale) resized = cv2.resize(frame_bgr, (nw, nh)) canvas[:] = 114 top = (in_h - nh) // 2 left = (in_w - nw) // 2 canvas[top : top + nh, left : left + nw] = resized img_rgb = canvas # 必要ならここで BGR→RGB に変更 # 入力テンソル作成 if input_dtype == np.uint8: input_data = np.empty((1, in_h, in_w, 3), dtype=np.uint8) input_data[0, ...] = img_rgb else: # int8 モデル img_f = img_rgb.astype(np.float32) / 255.0 q = (img_f / in_scale + in_zero).astype(np.int8) input_data = q[np.newaxis, ...] # (1, H, W, 3) # 古いフレームを捨てて最新 1 枚だけキープ try: while True: frame_queue.get_nowait() except queue.Empty: pass try: frame_queue.put( (frame_bgr, input_data, scale, left, top, w0, h0), timeout=0.01, ) except queue.Full: # ここに来ることはほぼないが、一応無視 pass finally: cap.release() # ============================================================ # スレッド: 2. 推論 (interpreter.invoke のみ) # ============================================================ def inference_worker( frame_queue: "queue.Queue[tuple]", result_queue: "queue.Queue[tuple]", interpreter: tflite.Interpreter, input_index: int, output_index: int, out_scale: float, out_zero: float, out_dtype: np.dtype, stop_event: threading.Event, ) -> None: """ capture_worker から前処理済み入力テンソルを受け取り、 interpreter.invoke() と出力のデ量子化まで行うスレッド。 後処理用に out(=N×C), スケール情報などを result_queue に渡す。 """ while not stop_event.is_set(): try: frame_bgr, input_data, scale, left, top, w0, h0 = frame_queue.get(timeout=0.1) except queue.Empty: continue # 推論 interpreter.set_tensor(input_index, input_data) interpreter.invoke() out_raw = interpreter.get_tensor(output_index)[0] # 期待形状: (84, 2100) 等 # 逆量子化 if np.issubdtype(out_dtype, np.integer): out_f = (out_raw.astype(np.float32) - out_zero) * out_scale else: out_f = out_raw.astype(np.float32) # 形状正規化: (84, N) または (N, 84) -> (N, 84) if out_f.ndim == 3 and out_f.shape[0] == 1: out_f = out_f[0] if out_f.ndim == 2 and out_f.shape[0] in (84, 85): out = out_f.reshape(out_f.shape[0], -1).T elif out_f.ndim == 2 and out_f.shape[1] in (84, 85): out = out_f else: out = out_f.reshape(-1, out_f.shape[-1]) # 後段用キューに結果を渡す(最新のみ保持) try: while True: result_queue.get_nowait() except queue.Empty: pass try: result_queue.put( (frame_bgr, out, scale, left, top, w0, h0), timeout=0.01, ) except queue.Full: # ここに来ることはほぼないが、一応無視 pass # ============================================================ # スレッド: 3. 後処理(NMS / 描画 / 表示) # ============================================================ def postprocess_worker( result_queue: "queue.Queue[tuple]", labels: list[str], in_h: int, in_w: int, stop_event: threading.Event, ) -> None: """ 推論結果(out)を受け取り、後処理(sigmoid/閾値/NMS/描画)と表示を行うスレッド。 """ fps = 0.0 prev_time = time.time() window_name = "i.MX95 CPU (YOLOv8 via TFLite + OpenCV)" while not stop_event.is_set(): try: frame_bgr, out, scale, left, top, w0, h0 = result_queue.get(timeout=0.1) except queue.Empty: continue # FPS 計算(表示ループベース) now = time.time() dt = now - prev_time if dt > 0: fps = 1.0 / dt prev_time = now num_det, num_ch = out.shape boxes: list | np.ndarray = [] scores: list | np.ndarray = [] classes: list | np.ndarray = [] # YOLOv8 風: [cx, cy, w, h, cls_logits x 80] if num_ch == 84: cx = out[:, 0] cy = out[:, 1] w = out[:, 2] h = out[:, 3] cls_logits = out[:, 4:] # (N, 80) cls_probs = sigmoid(cls_logits) cls_id = np.argmax(cls_probs, axis=1) conf = cls_probs[np.arange(num_det), cls_id] # 信頼度しきい値 mask = conf >= CONF_TH if np.any(mask): cx = cx[mask] cy = cy[mask] w = w[mask] h = h[mask] conf = conf[mask] cls_id = cls_id[mask] # 0〜1 正規化座標 -> 入力解像度 x1 = (cx - w / 2.0) * in_w y1 = (cy - h / 2.0) * in_h x2 = (cx + w / 2.0) * in_w y2 = (cy + h / 2.0) * in_h # letterbox を元画像座標に補正 x1 = (x1 - left) / scale y1 = (y1 - top) / scale x2 = (x2 - left) / scale y2 = (y2 - top) / scale # ボックスの最小サイズでフィルタ bw = x2 - x1 bh = y2 - y1 size_mask = (bw >= MIN_BOX_W) & (bh >= MIN_BOX_H) if np.any(size_mask): x1 = x1[size_mask] y1 = y1[size_mask] x2 = x2[size_mask] y2 = y2[size_mask] conf = conf[size_mask] cls_id = cls_id[size_mask] boxes = np.stack([x1, y1, x2, y2], axis=1).astype(np.float32) scores = conf.astype(np.float32) classes = cls_id.astype(np.int32) # NMS & 描画 if isinstance(boxes, np.ndarray): has_det = boxes.shape[0] > 0 else: has_det = len(boxes) > 0 if has_det: boxes = np.asarray(boxes, dtype=np.float32) scores = np.asarray(scores, dtype=np.float32) classes = np.asarray(classes, dtype=np.int32) keep = nms(boxes, scores, IOU_TH) keep = sorted(keep, key=lambda i: scores[i], reverse=True)[:MAX_DET] for idx in keep: x1, y1, x2, y2 = boxes[idx] cls_id = int(classes[idx]) conf = float(scores[idx]) label = labels[cls_id] if 0 <= cls_id < len(labels) else f"id{cls_id}" x1 = int(max(0, min(w0 - 1, x1))) y1 = int(max(0, min(h0 - 1, y1))) x2 = int(max(0, min(w0 - 1, x2))) y2 = int(max(0, min(h0 - 1, y2))) cv2.rectangle(frame_bgr, (x1, y1), (x2, y2), (0, 255, 0), 2) cv2.putText( frame_bgr, f"{label}:{conf:.2f}", (x1, y1 - 5), cv2.FONT_HERSHEY_SIMPLEX, 0.6, (0, 255, 0), 2, ) cv2.putText( frame_bgr, f"FPS: {fps:.1f}", (10, 30), cv2.FONT_HERSHEY_SIMPLEX, 0.8, (0, 255, 255), 2, ) cv2.imshow(window_name, frame_bgr) if (cv2.waitKey(1) & 0xFF) == ord("q"): stop_event.set() break cv2.destroyAllWindows() # ============================================================ # main # ============================================================ def main() -> None: # TFLite Interpreter 準備 delegate = tflite.load_delegate(DELEGATE_LIB) interpreter = tflite.Interpreter( model_path=MODEL_PATH, experimental_delegates=[delegate], ) interpreter.allocate_tensors() input_details = interpreter.get_input_details() output_details = interpreter.get_output_details() print("Input details :", input_details) print("Output details:", output_details) input_index = input_details[0]["index"] input_shape = input_details[0]["shape"] # [1, H, W, 3] _, in_h, in_w, _ = input_shape input_dtype = input_details[0]["dtype"] output_index = output_details[0]["index"] out_qparams = output_details[0]["quantization_parameters"] out_scale = out_qparams["scales"][0] if len(out_qparams["scales"]) > 0 else 1.0 out_zero = out_qparams["zero_points"][0] if len(out_qparams["zero_points"]) > 0 else 0 out_dtype = output_details[0]["dtype"] labels = load_labels(LABEL_PATH) # 入力量子化パラメータ(int8 モデル用) in_qparams = input_details[0]["quantization_parameters"] in_scale = in_qparams["scales"][0] if len(in_qparams["scales"]) > 0 else 1.0 in_zero = in_qparams["zero_points"][0] if len(in_qparams["zero_points"]) > 0 else 0 # カメラ初期化 cap = cv2.VideoCapture(GST_PIPELINE, cv2.CAP_GSTREAMER) if not cap.isOpened(): raise RuntimeError("Failed to open camera") frame_queue: "queue.Queue[tuple]" = queue.Queue(maxsize=1) result_queue: "queue.Queue[tuple]" = queue.Queue(maxsize=1) stop_event = threading.Event() # スレッド起動 t_capture = threading.Thread( target=capture_worker, args=(cap, frame_queue, stop_event, in_h, in_w, input_dtype, in_scale, in_zero), daemon=True, ) t_infer = threading.Thread( target=inference_worker, args=( frame_queue, result_queue, interpreter, input_index, output_index, out_scale, out_zero, out_dtype, stop_event, ), daemon=True, ) t_post = threading.Thread( target=postprocess_worker, args=(result_queue, labels, in_h, in_w, stop_event), daemon=True, ) print("Press 'q' to quit") t_capture.start() t_infer.start() t_post.start() try: while not stop_event.is_set(): time.sleep(0.1) except KeyboardInterrupt: stop_event.set() t_capture.join() t_infer.join() t_post.join() if __name__ == "__main__": main() 結果 この結果、同じモデルを使って、28~30fpsにまでフレームレートを上げることができました。カメラCMOSセンサからの入力が30fpsですので、狙うべきところまで達成できましたね(動画は割愛)。 各スレッドの処理にかかる時間を測定してみたところ、カメラキャプチャスレッドが33~36ms、NPUの推論スレッドが28~30ms、ポストプロセススレッドが26~30msと、偶然にもいいバランスで調整することができました。 おわりに 今回はパフォーマンス向上の例としてマルチスレッドによるパイプライン化を試してみました。 レイテンシを許容できる前提とはなりますが、効果的なチューニング方法ではないかと思います。 ※この記事には、AI生成コードをベースに投稿者が内容を確認した内容が含まれます。 ========================= 本投稿の「Comment」欄にコメントをいただいても、現在返信に対応しておりません。​ お手数をおかけしますが、お問い合わせの際には「NXPへの技術質問 - 問い合わせ方法 (日本語ブログ)」をご参照ください。​ (既に弊社NXP代理店、もしくはNXPとお付き合いのある方は、直接担当者へご質問いただいてもかまいません。) 前回、こちらの記事でFRDM-IMX95を用いてYOLOを使った物体認識デモを紹介しました。 その記事の中では、12~15fps程度のフレームレートになっていましたが、本記事では最適化を行い、フレームレートの大幅な向上を図ってみます。 (作業時間:10分) *i.MX95カメラ+AI – YOLOv8mの例が完了している前提 i.MX Processors 日本語ブログ
查看全文
Audifort Reviews 2026 - Does it Really Work? Audifort is gaining attention as a natural supplement designed to support hearing health and reduce issues like ringing in the ears. Many audifort reviews and complaints consumer reports suggest that users notice gradual improvements in clarity and focus when taken consistently. If you’re wondering, does audifort really work for tinnitus, is it legit and worth it, the answer depends on expectations. It’s not an instant fix, but many users report reduced discomfort over time. The formula focuses on supporting brain-ear connection and nerve health. Results vary, but consistency is key for noticeable benefits. If you’re planning to try it, always buy audifort from official website in UK USA Canada Australia NZ and IE and worldwide with best discount & 2 free bonuses to ensure authenticity and current offers.  Official Website: https://audifort.smartdiscoveryhub.com
查看全文
ThE Brain Song レビュー 2026:~ 正直なレビューと苦情 興味があります ブレインソングレビュー2026:記憶力と集中力に本当に効果があるのか? このオーディオベースのプログラムは、認知機能に関連する音の周波数を利用して、脳の働きをサポートするように設計されています。多くのユーザーが、毎日継続して使用することで、集中力の向上、記憶力の改善、精神的疲労の軽減を報告しています。このプログラムは、サプリメントや薬を使用するのではなく、脳の活動を刺激することに重点を置いています。しかし、効果は徐々に現れるものであり、即効性のある解決策ではないため、忍耐が必要です。一部のユーザーは、時間の経過とともに微妙な改善に気づく。総じて言えば、「ブレインソング」は、健康的な生活習慣と併せて継続的に使用することで、記憶力と集中力を高めるのに役立つ可能性がある。 詳細レビューはこちらをクリックしてください: https://tinyurl.com/5n6wpjwv #thebrainsong #thebrainsongreviews Re: ThE Brain Song Reviews 2026:~ An Honest Review And COmpaliants 「ブレインソング」は、集中力を高め、ポジティブな気持ちを刺激し、一日を数分で活気づける、究極の脳活性化トラックです。 再生ボタンを押すたびに、より賢く、より穏やかに、より意欲的に感じられるでしょう。 ただ音楽を聴くだけではなく、The Brain Songであなたの脳の潜在能力を最大限に引き出しましょう!
查看全文
Audifort 评论 2026 - 它真的有用吗? Audifort 作为一种旨在支持听力健康和减少耳鸣等问题的天然保健品,正在受到越来越多的关注。许多 audifort 的评论和消费者投诉报告表明,坚持服用后,用户会逐渐提高清晰度和注意力。如果你想知道,audifort 对耳鸣真的有效吗? 虽然不能立竿见影,但许多用户表示,随着时间的推移,不适感会逐渐减轻。该配方主要支持脑耳连接和神经健康。效果各不相同,但坚持不懈是取得明显效果的关键。 如果您打算试用,请务必从英国、美国、加拿大、澳大利亚、新西兰、IE 和全球的官方网站购买 audifort,并享受最优惠的折扣& 2 个免费红包,以确保真实性和当前优惠。 官方网站: https://audifort.smartdiscoveryhub.com
查看全文
SPIドライバ これは、NXPがVeoneer向けに開発したカスタムSPIドライバに関連するものです。弊社では、改善策を検討しており、この案にご賛同いただけるかどうか、ご相談させていただきたいと考えております。 ルーチンSpi_HwTransferでは、要求されたシーケンスの各チャネルに対してwhileループが実行されます。私たちの理解では、このループ内で実行されるプロセスは、シーケンスが要求されるたびに毎回実行する必要があるものではありません。このプロセスは、Spi_Init のコンテキスト内で、すべてのシーケンスとその関連チャネルに対して一度だけ実行すれば十分であると考えています。このロジックをSpi_HwTransferではなくSpi_Initに組み込むことができれば、この操作は1msごとに12回実行されるため、大幅な時間計測の最適化につながる可能性があります。合計で約4%の節約になる可能性がある。 このwhileループをSpi_Initに移動することで、SPIが正しく動作するために必要な機能要件を満たすことができるかどうか、教えていただけますでしょうか。 whileループの一部もこの質問に添付されています。 Re: Spi Driver こんにちは、 @hislimさん プライベートメッセージを送りました。
查看全文
license for codewarrior Good afternoon , I have a problem with license for Codewarrior? How can I do it? Re: license for codewarrior Hi,  did you generated license file from your account? You still have one license available and valid till end of May. 
查看全文
ハードウェアFRDM-RW612でのKNX IoTビルドが失敗しました。 NXPチームの皆様、こんにちは。 下記のリンクの手順に従って作業しましたが、センサとアクチュエーターのサンプルビルドに失敗しました。 この問題を解決するのを手伝っていただけませんか?ありがとうございます。 https://github.com/nxp-appcodehub/dm-knx-iot-apps-with-ets-support-on-nxp-mcus 開発ボード Re: KNX iot build failed in hardware FRDM-RW612. こんにちは、リカルドさん ご返信ありがとうございます。ステップ4:例のビルディング CMDより下で実行され、「西側ビルド」のため停止しました。 # Setup environment first sdk/repo/mcuxsdk/mcux-env.cmd # Then build sh script/build_rw612_knx all build-type=Debug Re: KNX iot build failed in hardware FRDM-RW612. こんにちは、 あなたの調子が良いといいのですが。どの手順で問題が発生しているのか、詳しく教えていただけますか? よろしくお願いいたします。 リカルド Re: KNX iot build failed in hardware FRDM-RW612. こんにちは、 @Shawn_LSQと@Ricardo_Zamora さん。 この投稿で報告された問題に対する回避策を提供します。 Windows CLIでのコンパイルに必要な手順書を見つけました。これはGITのインストールに関連するものです。Gitのインストール時に行うべき手順については、添付の画像を参照してください。これにより、コマンドプロンプトからビルドを実行できるようになります。 ビルドする前に、以下のコマンドを入力する必要があります。 sdk\repo\mcuxsdk\mcux-env.cmd これでそちら側の問題が解決するかどうか教えてください。 BR、 ミハイ
查看全文
eno0を設定できないのはなぜですか?また、MDIO信号ピンの信号レベルが変化しないのはなぜですか? こんにちは、 私はLS1028A評価ボードを使用しています。私はドキュメントに従って、bld -m ls1028ardb コマンドを使用して LS1028A のブートイメージを作成しました。SDカードにイメージを書き込んでシステムを起動した後、システム内でeno0を設定することができません。エラー内容は以下のとおりです。 root@ls1028ardb:~# ifconfig eno0 192.168.0.110 [ 312.156125] net eno0: could not attach to PHY SIOCSIFFLAGS: No such device ログを確認したところ、以下のエラーが見つかりました。 fsl_enetc_mdio 0000:00:00.3: probe with driver fsl_enetc_mdio failed with error -5 ログによると、MDIOドライバがプローブに失敗し、PHYの接続が妨げられたことが示されています。さらに、ログにはenethだけでなく、4つのスイッチポートすべてにおいてPHY接続タイムアウトが発生していることが示されています。 私はオシロスコープを使用して、EMI1_MDIOピンとEMI1_MDCピンの信号レベルを測定しました。EMI1_MDCは670kHzの矩形波を連続的に出力しますが、これは正常な動作のようです。しかし、U-Bootでmdioコマンドを使用してPHY IDを照会する場合、EMI1_MDIOピンは常にハイレベルのままになります。U-Bootコマンドとその出力結果を以下に示します。 => mdio list enetc-0: emdio-3: 2 - AR8031/AR8033 <--> enetc-0 10 - Generic PHY <--> swp0 11 - Generic PHY <--> swp1 12 - Generic PHY <--> swp2 13 - Generic PHY <--> swp3 enetc-2: felix-switch: => => mdio read enetc-2 2 0x02 Reading from bus enetc-2 PHY at address 2: 2 - 0x83 => mdio read enetc-2 2 0x03 Reading from bus enetc-2 PHY at address 2: 3 - 0xe400 => mdio read enetc-0 2 0x02 Reading from bus enetc-0 PHY at address 2: 2 - 0x0 => mdio read enetc-0 2 0x03 Reading from bus enetc-0 PHY at address 2: 3 - 0x0 => mdio read emdio-3 2 0x00 Reading from bus emdio-3 PHY at address 2: TT0 - 0x9200 => mdio read emdio-3 2 0x02 Reading from bus emdio-3 PHY at address 2: TT2 - 0x9200 => mdio read emdio-3 2 0x03 Reading from bus emdio-3 PHY at address 2: TT3 - 0x9200 => 問題はこの部分にあるのではないかと疑っています。しかし、RCW、デバイスツリー、ハードウェアを徹底的に確認しましたが、明らかなエラーは見つかりませんでした。以下は、起動プロセスにおけるタイムアウトログです。 NOTICE: Fixed DDR on board NOTICE: 4 GB DDR4, 32-bit, CL=11, ECC on NOTICE: BL2: v2.12.0(release):lf-6.12.20-2.0.0 NOTICE: BL2: Built : 14:45:11, Dec 4 2025 NOTICE: BL2: Booting BL31 NOTICE: BL31: v2.12.0(release):lf-6.12.20-2.0.0 NOTICE: BL31: Built : 14:45:14, Dec 4 2025 NOTICE: Welcome to ls1028ardb BL31 Phase U-Boot 2025.04 (Dec 04 2025 - 14:45:02 +0800) SoC: LS1028A Rev1.0 (0x870b0110) Clock Configuration: CPU0(A72):1500 MHz CPU1(A72):1500 MHz Bus: 400 MHz DDR: 1600 MT/s Reset Configuration Word (RCW): 00000000: 3c004010 00000030 00000000 00000000 00000010: 00000000 018f0000 0030c000 00000000 00000020: 020031a0 00002580 00000000 00003296 00000030: 00000000 00000010 00000000 00000000 00000040: 00000000 00000000 00000000 00000000 00000050: 00000000 00000000 00000000 00000000 00000060: 00000000 00000000 200e705a 00000000 00000070: bb580000 00000000 Model: LS1028A RDB Board Board: LS1028A Rev1.0-RDB, Version: C, boot from SD FPGA: v8 (RDB) SERDES1 Reference : Clock1 = 100.00MHz Clock2 = 100.00MHz DRAM: 3.9 GiB DDR 3.9 GiB (DDR4, 32-bit, CL=11, ECC on) Using SERDES1 Protocol: 47960 (0xbb58) PCIe1: pcie@3400000 Root Complex: no link PCIe2: pcie@3500000 Root Complex: no link Core: 58 devices, 26 uclasses, devicetree: separate WDT: Started watchdog@c000000 with servicing every 1000ms (60s timeout) WDT: Started watchdog@c010000 with servicing every 1000ms (60s timeout) MMC: FSL_SDHC: 0, FSL_SDHC: 1 Loading Environment from MMC... Reading from MMC(0)... *** Warning - bad CRC, using default environment EEPROM: Invalid ID (ff ff ff ff) In: serial Out: serial Err: serial SEC0: RNG instantiated Net: TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT Warning: enetc-0 (eth0) using random MAC address - 3a:b9:c4:9e:93:20 eth0: enetc-0 Warning: enetc-2 (eth1) using random MAC address - 62:d9:2b:9d:bd:a5 , eth1: enetc-2TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTPHY reset timed out TTTTTTTTTTTTT, eth2: swp0TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTPHY reset timed out TTTTTTTTTTTTT, eth3: swp1TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTPHY reset timed out TTTTTTTTTTTTT, eth4: swp2TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTPHY reset timed out TTTTTTTTTTTTT, eth5: swp3 これらの問題の原因を特定するのにご協力いただけますでしょうか? よろしくお願いします。 Re: Why Cannot eno0 Be Configured and Why Is There No Signal Level Change on the MDIO Signal Pin? dts ファイル arch/arm64/boot/dts/freescale/fsl-ls1028a-rdb.dts では、コメントに従って、以下の修正を行ってください。 &enetc_mdio_pf3 { sgmii_phy0: イーサネット-phy@2 { reg = <0x2>;// カスタムボード上の enetc0 の実際の PHY アドレスで PHY アドレスを変更してください。         }; /* VSC8514 QSGMII クアッド PHY */ qsgmii_phy0: イーサネット-phy@10 { reg =<0x10> ; // カスタムボード上の実際の PHY アドレス swp0 を使用して PHY アドレスを変更してください。         }; qsgmii_phy1: ethernet-phy@11 { reg =<0x11> ;// カスタムボード上のswp1の実際のPHYアドレスでPHYアドレスを変更してください。         }; qsgmii_phy2: イーサネット-phy@12 { reg =<0x12> ;// カスタムボード上のswp2の実際のPHYアドレスでPHYアドレスを変更してください。         }; qsgmii_phy3: イーサネット-phy@13 { reg =<0x13> ; // カスタムボード上のswp3の実際のPHYアドレスでPHYアドレスを変更してください。         }; }; Re: Why Cannot eno0 Be Configured and Why Is There No Signal Level Change on the MDIO Signal Pin? 以前は、flex-installerツールをバージョン2108に戻していませんでした。指示通りにUbuntuシステムのフラッシュと起動をすべて完了しました。しかし、eno0ネットワークカードは依然として認識されません。当社のハードウェアは、「spf-39071_a1.pdf」という文書に基づいて作成されたカスタムボードです。eno0ネットワークカードに対応するPHYチップはAR8033からAR8031に変更され、CPLDチップに書き込まれたプログラムはバージョンv8です。 そこで、私は以下の質問をしたいと思います。 AR8033をAR8031に交換した場合、完全な互換性はありますか?また、ソフトウェアの変更は必要ですか? CPLDチップに書き込まれたプログラムのバージョンは、PHYチップのリセットに影響しますか? ご提供いただいたプログラムは、この開発ボードに対応し、ネットワークカードを正しく認識できますか? ログは以下に添付されています。ご返信をお待ちしております。 Re: Why Cannot eno0 Be Configured and Why Is There No Signal Level Change on the MDIO Signal Pin? 上記で提供したログファイルは、あなたが指示した手順に正確に従って設定されています。詳細は下記のスクリーンショットをご覧ください。 Re: Why Cannot eno0 Be Configured and Why Is There No Signal Level Change on the MDIO Signal Pin? SDカードを展開し、SDカードからUbuntuのルートファイルシステムを起動するには、上記の手順に従ってください。 Ubuntuのrootfsには「ethtool」コマンドがあります。 Re: Why Cannot eno0 Be Configured and Why Is There No Signal Level Change on the MDIO Signal Pin? eno0の設定がまだできません。EMI1_MDIOピンは常にハイレベルに保持されます。このログファイルから、U-Bootとカーネルの起動プロセスがそれぞれ正常かどうか確認していただけますか?また、提供いただいた3つのファイルは、開発ボード上で正常に起動しますか?正常に起動する場合、私の側のハードウェアに問題がある可能性はありますか?問題が発生した場合、ログから特定できますか? Re: Why Cannot eno0 Be Configured and Why Is There No Signal Level Change on the MDIO Signal Pin? 以下の手順に従って、LSDK 21.08のプレビルドイメージをダウンロードしてください。 $ wget https://www.nxp.com/lgfiles/sdk/lsdk2108/firmware_ls1028ardb_sdboot.img $ wget https://www.nxp.com/lgfiles/sdk/lsdk2108/boot_LS_arm64_lts_5.10.tgz $ wget https://www.nxp.com/lgfiles/sdk/lsdk2108/rootfs_lsdk2108_ubuntu_main_arm64.tgz 次に、それらをSDカードに展開します。 $ wget https://www.nxp.com/lgfiles/sdk/lsdk2108/flex-installer&& chmod +x flex-installer && sudo mv flex-installer /usr/bin $ flex-installer -i pf -d /dev/sdb $ flex-installer -f firmware_ls1028ardb_sdboot.img-b boot_LS_arm64_lts_5.10.tgz -r rootfs_lsdk2108_ubuntu_main_arm64.tgz-d /dev/sdb 注:/dev/sdbは、お使いのPC上のSDカードデバイス名です。 次に、SDカードをターゲットボードに挿入し、LS1028ARDBスイッチの設定を以下のように構成して、ターゲットボードがSDカードから起動するように設定します。 ブートソース SW2[1:8] SW3[1:8] SW5[1:8] SDカード(SDHC1)1000_1000 1111_0000 0011_1001 SDカードからLinuxを起動し、「ethtool」を使用してリンクの状態を確認してください。 Re: Why Cannot eno0 Be Configured and Why Is There No Signal Level Change on the MDIO Signal Pin? U-Boot内からPCにpingすることもできません。また、EMI1_MDCの出力周波数は670kHzでしょうか?弊社のハードウェアエンジニアが、この件について私に確認を求めています。 Re: Why Cannot eno0 Be Configured and Why Is There No Signal Level Change on the MDIO Signal Pin? u-bootからeno0経由で外部にpingできるかどうか確認してください。
查看全文
IMX8MP Linuxシステムを使用してCM7ファームウェアを実行すると、システムがブロックされました。 こんにちは、NXPサポートの皆様、 現在、IMX8MP CM7用のファームウェア開発に取り組んでいますが、いくつか問題が発生しています。 VS Code 用の MCUpresso を使用して、hello_world サンプルファームウェアをコンパイルしました。以下の操作を実行した際、システムが停止し、動作しなくなりました。A53のデバッグ用シリアルポートからもログは出力されませんでした。設定が正しく行われていない箇所を指摘していただけますか?TKS。 デバイスツリーの構成は以下のとおりです。 メモリ@40000000 { device_type = "memory"; reg = <0x0 0x40000000 0 0x40000000>; / * 1GB DDR */ };   予約メモリ { #address-cells = <2>; #size-cells = <2>; 範囲;   /* 128MB */ linux、cma { compatible = "shared-dma-pool"; 再利用可能。 サイズ = <0 0x8000000>; alloc-ranges = <0 0x40000000 0 0x40000000>; linux、cma-default; };   /* CM7上で動作するRTOS用に16MBを予約する */ m7_reserved: m7@7E000000 { 地図なし; reg = <0 0x7E000000 0 0x1000000>; };   vdev0vring0: vdev0vring0@7D000000 { reg = <0 0x7D000000 0 0x8000>; 地図なし; };   vdev0vring1: vdev0vring1@7D008000 { reg = <0 0x7D008000 0 0x8000>; 地図なし; };   vdevbuffer: vdevbuffer@7D100000 { compatible = "shared-dma-pool"; reg = <0 0x7D100000 0 0x100000>; 地図なし; };   rsc_table: rsc-table@7D0FF000 { reg = <0 0x7D0FF000 0 0x1000>; 地図なし; }; };   imx8mp-cm7 { compatible = "fsl,imx8mn-cm7"; rsc-da = <0x7D000000>; クロック = <&clk IMX8MP_CLK_M7_DIV>; クロック名 = "core"; mbox-names = "tx", "rx", "rxdb"; mboxes = <μ 0 1 μ 1 1 μ 3 1>; メモリ領域 = <&m7_reserved>、 <&vdevbuffer>、 <&vdev0vring0>、 <&vdev0vring1>、 <&rsc_table>; ステータス = "正常"; fsl、起動遅延ms = <500>; }; i.MX 8M | i.MX 8M Mini | i.MX 8M Nano Linux Re: When executing the CM7 firmware using the IMX8MP Linux system, the system blocked NXPのサポートチームが対応するまでの間、いくつかヒントをお送りします。 このツリー(https://github.com/nxp-imx/linux-imx/tree/lf-6.18.y )とこのdtsを使って試していただけますか? https://github.com/nxp-imx/linux-imx/blob/lf-6.18.y/arch/arm64/boot/dts/freescale/imx8mp-evk-rpmsg.dts Re: When executing the CM7 firmware using the IMX8MP Linux system, the system blocked こんにちは、 @Dzenさん お元気でお過ごしのことと思います。 AN5317 の第 9.1 章 i.MX Linux rproc サポート に従ってデバイスツリーを構成してみてください。 @dbalutaさんが提案したのと同じです。 よろしくお願いいたします。 サラス。 回复: When executing the CM7 firmware using the IMX8MP Linux system, the system blocked ありがとう、 ブートプロセスで「run prepare_mcore」コマンドを送信することにより、sysfs方法を使用してCM7のファームウェアを実行することができました。 しかし、CM7ファームウェアの動作中に、以下のエラーが依然として発生しました。私は「boards\evkmimx8mp\demo_apps\hello_world」というプロジェクトを使用しました。ログを見る限り、SAI/オーディオの設定に問題があるようです。しかし、clock_config.c(添付ファイル)内のオーディオ関連のコンテンツは既に削除しました。ファイル)にもかかわらず、エラーは依然として発生しました。何か適切に修正されていない箇所があれば教えてください。 [ 122.890817] 内部エラー: 同期外部アボート: 0000000096000210 [#1] PREEMPT_RT SMP [ 122.890822] リンクされたモジュール: fsl_jr_uio caam_jr caamkeyblob_desc caamhash_desc caamalg_desc crypto_engine authenc libdes crct10dif_ce snd_soc_imx_card polyval_ce polyval_generic snd_soc_fsl_micfil snd_soc_fsl_sai snd_soc_fsl_utils imx_pcm_dma snd_soc_tas5805m caam secvio error leds_serial_gpio fuse [ 122.890866] CPU: 0 PID: 248 Comm: irq/221-sai 汚染なし 6.6.36-rt35-lts-next#1 [ 122.890873] ハードウェア名: NXP i.MX8MPlus EVK ボード (DT) [ 122.890875] pstate: 20000005 (nzCv daif -PAN -UAO -TCO -DIT -SSBS BTYPE=--) [ 122.890881] pc : regmap_mmio_read32le+0x8/0x60 [ 122.890891] lr : regmap_mmio_read+0x44/0x70 [ 122.890896] sp : ffff800082fcbcc0 [ 122.890898] x29: ffff800082fcbcc0 x28: 0000000000000000 x27: 0000000000000000 [ 122.890905] x26: ffff8000800f3e90 x25: ffff8000800f198c x24: ffff000005f3b500 [ 122.890913] x23: ffff000005b60000 x22: ffff000005bea400 x21: ffff800082fcbd84 [ 122.890920] x20: 0000000000000008 x19: ffff000005afecc0 x18: ffffffffffffffff [ 122.890928] x17: 0000000100000100 x16: 000010003d000000 x15: ffff000036d5ac40 [ 122.890935] x14: 00000505d7fc02f4 x13: 00143f3c7cb53818 x12: 0000000000000055 [ 122.890942] x11: 0000000000000001 x10: 0000000000000a10 x9 : ffff800082fcbd30 [ 122.890951] x8 : ffff000008096170 x7 : ffff000036d5a440 x6 : 0000000000143f3c [ 122.890957] x5 : ffff80008098ce58 x4 : 0000000000000008 x3 : 0000000000000008 [ 122.890964] x2 : ffff80008098d5d8 x1 : 0000000000000008 x0 : ffff800082fb0008 [ 122.890971]通話追跡: [ 122.890974] regmap_mmio_read32le+0x8/0x60 [ 122.890979] _regmap_bus_reg_read+0x70/0xb0 [ 122.890986] _regmap_read+0x60/0xd8 [ 122.890993] regmap_read+0x4c/0x78 [ 122.890998] fsl_sai_isr+0x48/0xec [snd_soc_fsl_sai] [ 122.891012] irq_forced_thread_fn+0x3c/0xc8 [ 122.891021] irq_thread+0x174/0x23c [ 122.891028] kthread+0x110/0x114 [ 122.891034] ret_from_fork+0x10/0x20 [ 122.891043] コード: b5000001 d65f03c0 f9400000 8b214000 (b9400000) [ 122.891048] ---[ トレース終了 0000000000000000 ]--- [ 122.891051] カーネルパニック - 同期していません: 同期外部アボート: 割り込みで致命的な例外が発生しました [122.891055] SMP: セカンダリCPUを停止します [ 122.891062] カーネルオフセット: 無効 [ 122.891064] CPU機能: 0x0,00000008,00020000,1000421b [ 122.891068] メモリ制限: なし [ 123.748394] ---[ カーネルパニック終了 - 同期していません: 同期外部アボート: 割り込みで致命的な例外が発生しました ]---
查看全文
Codewarrior tap and script writing I'm using CW_VSPA_v10.3.10. After successfully debugging my code, I don't know how to deploy it to the hardware with codewarrior tap. The board I'm using is LA1224. I tried to write a script and load into ccs but failed, so are there any examples or instructions that can tell me how to write a script? Re: Codewarrior tap and script writing There are two ways to launch LA1224/VSPA in CW, 1. Debug Configuration UI Here you can set correct connection, then click 'Debug' to launchLA1224/VSPA 2. Debugger shell Here you can run tcl script to launch LA1224/vspa In folder Help/pdf there is a file "Targeting VSPA.pdf" in which the above settings are introduced in detail. Besides in folder Example there are sample projects showing the steps/settings
查看全文
i.mx8M Plus Pin function of AD28 Hi NXP Team, We are designing a Hardware platform using the MIMX8ML6NKZACVB Processor. We are planning to use the AD28 Soc pin for the power enable function of the SD card. This power enable (PWR_EN) signal has to be maintained at 1.8V and connected at the B2B Connector. From the Confiq tool, this pin AD28 has 2 alternate functions, like USDCH2_RESET & GPIO. Please confirm which function I need to consider this AD28 pin for the Power Enable (PWR_EN) Function in my design I have checked this pin, AD28, in the i.mx8M plus reference schematics document SCH-46368, and found that the signal SD2_RESET_B is connected to the PCA9450 (PMIC) SW_EN pin. 1. Please confirm this pin acts as USDCH2 or GPIO in EVK. 2. Please confirm in EVK Schematics NVCC_SD2 is powered at 3.3V or 1.8V Re: i.mx8M Plus Pin function of AD28 I discussed with the AE team, please refer to the following update. On the NXP EVK board, ball AD28 is assigned as SD2_RESET_B to control the load switch inside PCA9450C for SD card connected to SD2 IF. This setting is enabled by the ROM code and Linux BSP to support SD 3.0 well. To make it work correctly, SD2_RESET_B shall be pulled up to NVCC_SD2 with 4.7KOhms resistor.   To support SD 3.0, NVCC_SD2 is set as 3.3V out of reset and will be set as 1.8V to support high speed access. That means SD2_RESET_B signal level is switched between 3.3V and 1.8V also. Customers can use the load switch inside PCA9450C by connecting VSD_3V3 to the B2B connector with 2 or more pins for cost-down. If customers want to use external load switch on the base board instead, it can be enabled with SD2_RESET_B (so called as PWR_EN) which has been pulled up to NVCC_SD2 with 4.7KOhms resistor on the CPU board. Please just connect SD2_RESET_B together with the left signals of SD2 IF to the B2B connector. Re: i.mx8M Plus Pin function of AD28 Yes. It would be fine if the external load switch can be enabled by 1.8V level signal. Re: i.mx8M Plus Pin function of AD28 Hello NXP Team, Thanks for you reply. We will provide the PWR_EN signal connection from the AD28 Pin directly to the B2B Connector. Re: i.mx8M Plus Pin function of AD28 Hello NXP Team, Thanks for the reply. We are planning to use the External Load switch on the Base Board. Please confirm this PIN AD28 when working for the PWR_EN signal, it will be under the USDCH2 bank, so can I directly connect this signal to the B2B Connector to enable the load switch in the Base Board?
查看全文