Multi Source Translation Content

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

Multi Source Translation Content

讨论

排序依据:
Custom S32G399A board: No frames cross switch-facing RGMII bus in either direction Board: Custom S32G399A based module, derived from S32G-VNP-RDB3. PFE_MAC1 connected via RGMII (PE_02–PE_13) to an NXP SJA1110A switch port 2, configured as the DSA CPU port (in-tree sja1105 driver, kernel 6.x BSP43.0). Topology: - PFE_MAC0: SGMII via SerDes1 lane1, Mode 1 - PFE_MAC1: RGMII to SJA1110A port 2 (DSA CPU port) — the port in question - PFE_MAC2: SGMII via SerDes0 lane1 The S32G MACs are configured as follows: +---------+--------------+------------------+ |                    | LANE 0               | LANE 1                        | +---------+--------------+------------------+ | SERDES0    | GMAC (SGMII) | PFE_MAC2 (SGMII)  | | SERDES1      | NOT USED        | PFE_MAC0 (SGMII) | +---------+--------------+------------------+ Full U-Boot hwconfig: hwconfig=pcie0:mode=sgmii,clock=ext,fmhz=100,xpcs_mode=both;pcie1:mode=sgmii,clock=ext,fmhz=100,xpcs_mode=0 pfeng_mode=enable,sgmii,rgmii,sgmii DTS for port@2 (switch side): port@2 { reg = <2>; label = "OBC-1"; ethernet = <&pfe_netif1>; phy-mode = "rgmii"; rx-internal-delay-ps = <0>; tx-internal-delay-ps = <0>; fixed-link { speed = <1000>; full-duplex; }; }; DTS for pfe_netif1 (MAC side): &pfe_netif1 { phy-mode = "rgmii"; status = "okay"; fixed-link { speed = <1000>; full-duplex; }; }; PFE_MAC1 (pfe1) link state — confirmed up and correctly configured at the Linux/driver level: dmesg at boot: [ 5.264108] pfeng 46000000.pfe: netif name: pfe1 [ 5.274127] pfeng 46000000.pfe: netif(pfe1) linked phyif: 1 [ 5.279692] pfeng 46000000.pfe: netif(pfe1) mode: std [ 5.284853] pfeng 46000000.pfe: netif(pfe1) HIFs: count 1 map 02 [ 6.012884] pfeng 46000000.pfe pfe1 (uninitialized): Subscribe to HIF1 [ 6.019438] pfeng 46000000.pfe pfe1 (uninitialized): Host LLTX disabled [ 6.026270] pfeng 46000000.pfe pfe1 (uninitialized): Enable HIF1 [ 6.032374] pfeng 46000000.pfe pfe1 (uninitialized): setting MAC addr: 00:04:9f:be:ef:01 [ 6.040545] pfeng 46000000.pfe pfe1 (uninitialized): PTP HW addend 0x80000000, max_adj configured to 46566128 ppb [ 6.060939] pfeng 46000000.pfe pfe1 (uninitialized): Registered PTP HW clock successfully on EMAC1 [ 6.070441] pfeng 46000000.pfe pfe1: registered [ 6.207482] pfeng 46000000.pfe pfe1: configuring for fixed/rgmii link mode [ 6.214306] pfeng 46000000.pfe pfe1: Set TX clock to 125000000Hz [ 6.220158] pfeng 46000000.pfe pfe1: Link is Up - 1Gbps/Full - flow control off [ 5.257995] pfeng 46000000.pfe: EMAC0 interface mode: 4 [ 5.290707] pfeng 46000000.pfe: EMAC1 interface mode: 9 [ 5.323320] pfeng 46000000.pfe: EMAC2 interface mode: 4 [ 5.354571] pfeng 46000000.pfe: Interface selected: EMAC0: 0x4 EMAC1: 0x9 EMAC2: 0x4 [ 5.382609] pfeng 46000000.pfe: TX clock on EMAC0 for interface sgmii installed [ 5.390050] pfeng 46000000.pfe: RX clock on EMAC0 for interface sgmii installed [ 5.404998] pfeng 46000000.pfe: TX clock on EMAC1 for interface rgmii installed [ 5.419918] pfeng 46000000.pfe: Defer enabling of RX clock on EMAC1 for interface rgmii (ret: -5) [ 5.434235] pfeng 46000000.pfe: TX clock on EMAC2 for interface sgmii installed [ 5.448374] pfeng 46000000.pfe: RX clock on EMAC2 for interface sgmii installed [ 5.667058] pfeng 46000000.pfe: EMAC timestamp external mode bitmap: 0 [ 5.998447] pfeng 46000000.pfe pfe0 (uninitialized): Registered PTP HW clock successfully on EMAC0 [ 6.060939] pfeng 46000000.pfe pfe1 (uninitialized): Registered PTP HW clock successfully on EMAC1 [ 6.130296] pfeng 46000000.pfe pfe2 (uninitialized): Registered PTP HW clock successfully on EMAC2 [ 6.215040] pfeng 46000000.pfe: RX clock on EMAC1 for interface rgmii installed Live DTB confirms the kernel matches the source DTS: # cat /proc/device-tree/soc/pfe@46000000/ethernet@11/phy-mode rgmii ip a output: 6: pfe1: mtu 1536 qdisc mq state UP group default qlen 1000 link/ether 00:04:9f:be:ef:01 brd ff:ff:ff:ff:ff:ff inet6 fe80::204:9fff:febe:ef01/64 scope link All SJA1110 DSA slave ports correctly enumerated. This confirms the sja1105 DSA driver bound successfully to pfe1 as the CPU port/DSA master and parsed the static config without error. Clock tree: both TX and RX RGMII clocks enabled and attached to the correct consumer: # cat /sys/kernel/debug/clk/clk_summary | grep pfe1 pfe1_tx_mii 0 0 0 125000000 0 0 50000 Y deviceless no_connection_id pfe1_rx_mii 0 0 0 125000000 0 0 50000 Y deviceless no_connection_id pfe1_tx_rmii 0 0 0 125000000 0 0 50000 Y deviceless no_connection_id pfe1_rx_rmii 0 0 0 125000000 0 0 50000 Y deviceless no_connection_id pfe1_tx_rgmii 1 1 0 125000000 0 0 50000 Y ethernet@11 tx_rgmii pfe1_rx_rgmii 1 1 0 125000000 0 0 50000 Y ethernet@11 rx_rgmii pfe1_tx_sgmii 0 0 0 125000000 0 0 50000 Y deviceless no_connection_id pfe1_rx_sgmii 0 0 0 125000000 0 0 50000 Y deviceless no_connection_id So pfe1 is UP, LOWER_UP, correctly bound to the SJA1110 as DSA master, running in RGMII mode with both clocks enabled — this rules out pfe1 being down, unbound, or misconfigured at the Linux/driver level. The open question is specifically whether frames actually cross the physical RGMII pins between PFE_MAC1 and SJA1110 port 2. Issue: No traffic appears to cross the RGMII bus between PFE_MAC1 and SJA1110 port 2 in either direction, despite everything on both sides of that bus being independently up: Test 1 — S32G -> switch direction Setup: ip addr add 192.168.1.100/24 dev EPS-100bt1-9 ethtool -S pfe1 | grep '^ p02_' > before tcpdump -i pfe1 -e -nn -c 20 > capture.txt & arping -c 10 -I EPS-100bt1-9 192.168.1.6 ethtool -S pfe1 | grep '^ p02_' > after # arping -c 10 -I EPS-100bt1-9 192.168.1.6 ARPING 192.168.1.6 from 192.168.1.100 EPS-100bt1-9 Sent 10 probes (10 broadcast(s)) Received 0 response(s) $ cat capture.txt tcpdump: verbose output suppressed, use -v[v]... for full protocol decode listening on pfe1, link-type NULL (BSD loopback), snapshot length 262144 bytes 18:08:36.352535 AF Unknown (4294967295), length 64: 0x0000: ffff 0004 9fbe ef01 dadb 0c09 0806 0001 ................ 0x0010: 0800 0604 0001 0004 9fbe ef01 c0a8 0164 ...............d 0x0020: ffff ffff ffff c0a8 0106 0000 0000 0000 ................ 0x0030: 0000 0000 0000 0000 0000 0000 ............ [... 9 more identical ARP frames, all correctly DSA-tagged (dadb 0c09) and well-formed, plus one unrelated IPv6 background frame interleaved ...] # diff before after --- before +++ after @@ -1,4 +1,4 @@ - p02_: 1 + p02_: 0 p02_n_runt: 0 p02_n_soferr: 0 p02_n_alignerr: 0 # grep n_rxfrm before after before: p02_n_rxfrm: 0 after: p02_n_rxfrm: 0 Test 2 — switch -> S32G direction Setup Partner board is a separate SJA1105 switch based board. # ping -c 10 -I t1-6 192.168.1.100 (run on a separate SJA1105/1110-family switch board connected to our port 9 / 100BASE-T1 / EPS-100bt1-9) # diff before after (ethtool -S EPS-100bt1-9) - n_rxfrm: 0 + n_rxfrm: 9 <- port 9 physically received 9 frames from the wire # diff before after - p02_n_txfrm: 0 + p02_n_txfrm: 9 <- switch fabric forwarded all 9 toward the CPU port # tcpdump -i pfe1 -e -nn -c 20 (same window) listening on pfe1, link-type NULL (BSD loopback), snapshot length 262144 bytes [-- nothing captured --] Port 9 received 9 real frames; the fabric forwarded all 9 toward port 2 — but nothing arrived at pfe1. So the SJA1110's own fabric counters show all 9 frames successfully forwarded from port 9 to port 2's egress. But tcpdump -i pfe1 -e -nn on the S32G during this exact test shows NOTHING received. So the DSA/software layer on the S32G side believes it's sending (case 1). The switch's internal fabric believes it's sending toward the CPU port (case 2). Neither side has any confirmation that the other actually received anything across the physical RGMII bus. Every layer adjacent to this bus works individually; the bus itself has no confirmed successful crossing in either direction. What's been ruled out so far: - pfeng_mode / hwconfig (xpcs_mode) — confirmed correct; EMAC1 mode is RGMII (0x9), not SGMII (it was previously misconfigured as SGMII due to xpcs_mode=both on SerDes1 forcing PFE_MAC1's XPCS into SGMII; corrected to xpcs_mode=0 since PFE_MAC0 alone only needs XPCS0) - PFE_MAC1 TX/RX clock enablement — confirmed enabled at the correct rate (125MHz) in clk_summary - DSA tagging and CPU port binding — confirmed working (port netdevs exist, frames get tagged with the correct destination port in the DSA header) - SJA1110 internal fabric/forwarding — confirmed working between two other ports (9 and 2) using real external traffic - BASE-T1 link partner — confirmed passing real frames into the switch (port 9 n_rxfrm increments from genuine wire traffic) What hasn't been ruled out / open questions: - Whether 1000 Mbps RGMII with zero internal delay on both MAC and switch sides (rx/tx-internal-delay-ps=0, plain "rgmii" not "rgmii-id") is compatible without delay added by board trace length — have not yet tried forcing the link down to 100 Mbps as a timing-margin test 1. Is rx/tx-internal-delay-ps=0 on both ends at 1000 Mbps RGMII expected to work, or does this combination typically require delay compensation unless the PCB explicitly accounts for it? 2. Am I missing any other configuration? Happy to share full register dumps, if required. Appreciate any pointers before we probe the PE_02-13 bus with a logic analyzer (limited probe access due to board layout, so it is not so convenient currently. Thanks. Re: Custom S32G399A board: No frames cross switch-facing RGMII bus in either direction Hi @Joey_z @db16122 I am attaching the relevant sections of the schematics here. The connection flow is as follows: We use PE_02 to PE_13 on the S32G3 chip shown in s32g3_pfe_mac1_connections.png for the PFE_MAC1. They go to a board to board connector (shown in Board_to_board_connector.png) that routes these signals to  a different board that has the switch. The switch connections are shown in SJA1110_A.png and SJA1110_B.png. So the connection is PE_xx pins -> board connectors -> switch (SJA1110) Please let me know if you have any questions. I have also raised a support ticket ( #00990408) with the same details.  Re: Custom S32G399A board: No frames cross switch-facing RGMII bus in either direction Hi,pcentauri92 Thank you for your reply. Please provide me with the schematic diagrams related to your ETH, particularly the ones for PFE_MCA1 and SJA1110 sections. You can create an internal support system case. In the information description, @Joey, then provide your schematic diagram information. Refer to this website: https://support.nxp.com BR Joey Re: Custom S32G399A board: No frames cross switch-facing RGMII bus in either direction Hi @Joey_z , Thank you for the response. The module in question here is a custom design that uses the S32G399A chip along with the NXP SJA1110A ethernet switch. We based this design on the S32G-VNP-RDB3 development platform but we made quite a few changes from the base design. The PFE_MAC1 using RGMII is one of those changes.  I am also attaching the dts file override where we change the PFE_MAC1 mode and pinmux here. PFE_MAC1 mode configuration: /* pfe_mdio1 is already disabled in the base config in s32gxxxa-rdb.dtsi */ &pfe_mdio1 { /* occupied by GMAC0 */ status = "disabled"; }; /* * pfe_netif1 = PFE_MAC1 — management port to Switch-A port 2. * Overrides the base "sgmii" stub in s32gxxxa-rdb.dtsi. * Plain "rgmii" (no -id/-txid) since both MAC and switch add zero delay. * No phy-handle: the link partner is the SJA1110A switch, described as a * fixed-link on switch port@2. MDIO is not needed for link management here. */ &pfe_netif1 { phy-mode = "rgmii"; status = "okay"; fixed-link { speed = <1000>; full-duplex; }; }; PFE_MAC1 pinmux: /* * PFE_MAC1 RGMII pinmux — management port to Switch-A. * * All RX pad SSS values confirmed from S32G3 IOMUX spreadsheet. * TX path: output pads only, no IMCR needed. * RX path: input pads + IMCR registers to route pads into PFE_MAC1. * * Note: PE_07 (TXD3) uses FUNC3, not FUNC2. Similarly PE_08 (RX_CLK) output uses FUNC3; its IMCR (CR#859) uses FUNC2. */ pfe1rgmii_pins: pfe1rgmii_pins { /* TX outputs: PE_02=TX_CLK, PE_03=TX_EN, PE_04=TXD0, PE_05=TXD1, PE_06=TXD2 PE_07 (TXD3) */ pfe1rgmii_grp0 { pinmux = , /* PE_02: PFE_MAC1_TX_CLK */ , /* PE_03: PFE_MAC1_TX_EN */ , /* PE_04: PFE_MAC1_TXD0 */ , /* PE_05: PFE_MAC1_TXD1 */ , /* PE_06: PFE_MAC1_TXD2 */ ; /* PE_07: PFE_MAC1_TXD3 */ output-enable; slew-rate = ; }; /* RX inputs — pads set to FUNC0 (input mode); routing into PFE_MAC1 is handled by the IMCR entries in pfe1rgmii_grp2 below. NXP input mux pattern: pad=FUNC0 + IMCR=FUNC2 */ pfe1rgmii_grp1 { pinmux = , /* PE_08: input */ , /* PE_09: input */ , /* PE_10: input */ , /* PE_11: input */ , /* PE_12: input */ ; /* PE_13: input */ input-enable; slew-rate = ; }; /* IMCR input mux — selects which pad drives each PFE_MAC1 RX signal. CR#866 routes PE_02 (TX_CLK pad) back into PFE_MAC1_TX_CLK_I; required even for RGMII TX because the MAC samples its own TX_CLK internally. All entries at FUNC2 per S32G3 IOMUX spreadsheet. */ pfe1rgmii_grp2 { pinmux = , /* CR#866: PFE_MAC1_TX_CLK_I ← PE_02 */ , /* CR#859: PFE_MAC1_RX_CLK_I ← PE_08 */ , /* CR#865: PFE_MAC1_RXDV_I ← PE_09 */ , /* CR#861: PFE_MAC1_RXD_I[0] ← PE_10 */ , /* CR#862: PFE_MAC1_RXD_I[1] ← PE_11 */ , /* CR#863: PFE_MAC1_RXD_I[2] ← PE_12 */ ; /* CR#864: PFE_MAC1_RXD_I[3] ← PE_13 */ }; }; Please let me know if you need any other information.    Re: Custom S32G399A board: No frames cross switch-facing RGMII bus in either direction any schematics sharing from hardware side for RGMII bus between PFE_MAC1 and SJA1110 port 2 ? Re: Custom S32G399A board: No frames cross switch-facing RGMII bus in either direction Hi,pcentauri92 Thank you for your detail information According to my understanding, there seems to be a problem with the communication when using PFE_MAC1 RGMAII and Port 2 of SJA1110A on your development board. Is that correct? The default configuration of S32G-VNP-RDB3 is that PFE_MAC0/1 operates in SGMII mode and is connected to SJA1110. On your development board, why did you consider using RGMII mode? It is recommended to modify the corresponding software configuration. BR Joey
查看全文
S32DS 问题涉及对外部文件的引用 目前,我们正在使用演示项目。项目文件夹 SDK/platform/drivers/src 目录中的文件是外部链接文件,这让我很难与他人共享该项目,因为我找不到这些文件。我想知道是否有办法将链接的文件挂载到项目中(不包括逐个复制的方法)。 Re: S32DS issue regarding the reference to external files 您好@NXP2 , 这是基于旧版 SDK 的 S32DS 项目的预期行为。一些 SDK 驱动程序文件被添加为 Eclipse 链接资源,因此它们会显示在项目树中,但物理文件仍然保留在已安装的 SDK 包位置。   对于共享此类项目,建议的方法是将项目与另一台 PC 上所需的确切 S32DS/SDK 代码包,软件包版本一起提供。如果需要完全独立的项目,则必须将 SDK 文件复制到项目中,并相应地更新链接的资源/版本路径。   请注意,由 S32 配置工具生成的较新的基于 RTD 的项目会在更新代码步骤期间自动将所需/生成的驱动程序文件复制到项目中。 顺祝商祺! 帕维尔 Re: S32DS issue regarding the reference to external files 目前使用的版本是 S32SDK_S32K1XX_RTM_4.0.2。如下图所示,这两个文件来自不同的文件夹。我们需要为此做任何设置吗? Re: S32DS issue regarding the reference to external files 您好@NXP2 , 您使用的是哪个版本的SDK,对应哪个S32K系列? 顺祝商祺! 帕维尔
查看全文
i.MX 95 SPSDK によるセキュアブート (日本語ブログ) はじめに i.MX 95 でのセキュアブートに使用する署名付きのコンテナ・イメージを Secure Provisioning SDK (SPSDK) で作成し、起動する手順です。 i.MX 95 では、セキュアブートのデジタル署名アルゴリズムとして、クラシックなRSA暗号や楕円曲線デジタル署名暗号 (ECDSA)に加えて、耐量子暗号 (PQC)の ML-DSA もサポートされています。 ここでは、ECDSA と PQC ML-DSA 両方の署名認証を行うHybrid boot での実現例を見ていきます。 セキュアブート・プロセス(概念図) 署名付きイメージの作成 SRKH : Super Root Key Hash i.MX 95 AHAB (Advanced High Accuracy Boot) セキュアブート・フロー 本記事は、i.MX 95 向けのLinux BSP を一度ビルド済みの前提で紹介します。 ビルド方法については以下の記事をご参照ください。 ビルドするターゲットを、i.MX 95 のマシン名とする必要がありますが、同様の方法になります。  [入門] Yocto Linux BSPのビルド方法 - i.MX FRDMボード編 (日本語ブログ) [入門] Yocto Linux BSPのビルド方法 - i.MX 8M Plus編 今回動作確認に使用した環境 ハードウェア:開発ボード i.MX 95 19x19 LPDDR5 EVK ソフトウェア:Linux BSP Version L6.18.2-1.0.0 ツール:SPSDK version 3.9.0, Linux 版 eMMC/SDブートであれば、FRDM i.MX 95開発ボード(FRDM-IMX95 / LPDDR4X対応)でも同様の手順で実施することができます。 目次 1. Linux BSP での準備 2. SPSDK のインストール 3. 鍵の作成 4. YAMLファイルの準備 5. ワークスペースの準備 6. 署名付きイメージの作成  7. 署名付きイメージの導入 8. SRKH (Super Root Key Hash) eFuse のプログラム 9. ライフサイクルを OEM Closed に更新 10. ELE イベントの確認 11. ブートローダの直接署名   eMMC/SDブートとFlexSPI NORブートでは、準備手順や実行するコマンドが一部異なります。そのため、確認したいブートデバイスに応じた手順を実施してください。 1. Linux BSP での準備 1.1 ブートローダ FlexSPI NOR ブート BSP デフォルトでのブートローダは、eMMC/SD ブート用となっています。 FlexSPI NOR ブートの場合には、 / /conf/local.conf ファイルに下記を追記しておきます。 UBOOT_CONFIG = "fspi" eMMC / SD / FlexSPI NOR ブート共通 u-boot の  CONFIG_AHAB_BOOT  を有効にしてビルドしたブートローダを使用します。 $ cd $ source setup-environment $ bitbake u-boot-imx -c cleansstate $ bitbake u-boot-imx -c configure $ bitbake u-boot-imx -c devshell 別のシェルが開きますので、u-boot コンフィグレーションを変更します。 # make O=../../build/ / menuconfig O= で指定するビルド・ディレクトリのパスは、実際の環境に合わせます。 ../../build/ /.config で、 CONFIG_AHAB_BOOT=y  となっていることを確認し、元のシェルに戻ります。 # exit 元のシェルで、再ビルドを行います。 $ bitbake u-boot-imx -c compile -f $ bitbake imx-boot 1.2 Linux カーネルとデバイスツリー BSP でビルドされたバイナリをそのまま利用します。 ビルドされたバイナリは、BSP の  /tmp/deploy/images/ / に作成されています。 2. SPSDK のインストール SPSDK Installation Guide に従い、Python 仮想環境 venv を準備してインストールします。 インストール後、バージョン情報やヘルプ表示ができるかを確認します。 (venv) $ spsdk --version (venv) $ spsdk --help PQCプラグインも追加します。 (venv) $ pip install spsdk-pqc 3. 鍵の作成 ECDSA SECP384 の秘密鍵/公開鍵を、4ペア作成します。 (venv) $ mkdir -p keys/secp384r1 (venv) $ nxpcrypto -v key generate -k secp384r1 -o keys/secp384r1/srk0_secp384r1.pem (venv) $ nxpcrypto -v key generate -k secp384r1 -o keys/secp384r1/srk1_secp384r1.pem (venv) $ nxpcrypto -v key generate -k secp384r1 -o keys/secp384r1/srk2_secp384r1.pem (venv) $ nxpcrypto -v key generate -k secp384r1 -o keys/secp384r1/srk3_secp384r1.pem PQC ML-DSA の秘密鍵/公開鍵も、4ペア作成します。 (venv) $ mkdir keys/mldsa65 (venv) $ nxpcrypto -v key generate -k mldsa65 -o keys/mldsa65/srk0_mldsa65.pem (venv) $ nxpcrypto -v key generate -k mldsa65 -o keys/mldsa65/srk1_mldsa65.pem (venv) $ nxpcrypto -v key generate -k mldsa65 -o keys/mldsa65/srk2_mldsa65.pem (venv) $ nxpcrypto -v key generate -k mldsa65 -o keys/mldsa65/srk3_mldsa65.pem i.MX 95 内蔵eFuse に公開鍵のハッシュ Super Root Key Hash (SRKH) を書いたあと、イメージをビルドしなおした時は、その公開鍵とペアとなる秘密鍵で署名する必要があるので、作成したすべての鍵は保存しておきます。 秘密鍵は、第三者に開示しないようにします。 4. YAMLファイルの準備 SPSDK では、YAMLファイルに、コンテナヘッダ設定や、秘密鍵、公開鍵および、署名付きイメージを構成するバイナリファイルのパスを指定します。 あわせて、今回の動作確認で使用したYAMLファイルの例もご参照ください。 YAMLファイルでのコンテナヘッダ設定や、鍵を指定する項目は、次のようになっています。 コンテナヘッダ YAMLキー 内容 srk_set SRK Set used_srk_id SRK Selection srk_revoke_mask SRK Revoke Mask gdet_runtime_behavior GDET enablement check_all_signatures Check all signatures fastboot Fast Boot fuse_version Fuse Version sw_version SW Version コンテナヘッダの各フィールドは、i.MX 95 Reference Manual の、『Container header details』に記載されています。 鍵の指定 YAMLキー 内容 signer クラシック 秘密鍵 signer_#2 PQC 秘密鍵 srk_table クラシック 公開鍵テーブル srk_table_#2 PQC 公開鍵テーブル すべてのYAMLファイルで同じ鍵を指定します。 4.1 ブートローダ用YAML ファイル YAMLファイルのテンプレートを作成し、spl.yaml と uboot.yaml を準備します。 (venv) $ nxpimage ahab get-template -f mimx9596 -o ahab_template.yaml (venv) $ cp ahab_template.yaml spl.yaml (venv) $ cp ahab_template.yaml uboot.yaml spl.yaml i.MX 95 内蔵SRAM にロードされ、DRAM 初期化トレーニングなどを実施する部分までのファイルを指定します。 YAML キー 内容 binary_container ELE ブート・ファームウエア(マスク・レビジョン専用のバイナリ) lpddr_imem LPDDR4X or 5 初期化ファームウエア lpddr_imem_qb LPDDR4X or 5 初期化ファームウエア lpddr_dmem LPDDR4X or 5 初期化データ lpddr_dmem_qb LPDDR4X or 5 初期化データ oei_ddr OEI system_manager System Manager spl U-boot SPL cortex_m7_app (Option) M7 image image_path (Option) FCB copy image uboot.yaml U-boot SPL でDRAMにロードされる部分のファイルを指定します。 YAML キー 内容 atf ARM Trusted Firmware uboot U-boot tee (Option) OP-TEE OS (Option) 4.2 FCB の取り出し - FlexSPI NOR ブートのみ FlexSPI NOR ブート用のYAMLファイルでは、FCB (FlexSPI Configuration Block)も指定します。そのため、FlexSPI NOR ブート向けにビルドした通常の署名なしブートローダ (flash.bin) から、SPSDK コマンドにて、FCB を取り出しておきます。 i.MX 95 内蔵eFuse のFlexSPI_NOR_FCB_Offset (デフォルト 0x400) にFCB が配置されています。そのオフセットから 512 バイト分を取り出し、 fcb.bin を作成します。 (venv) $ nxpimage utils binary-image extract -b flash.bin -a 0x400 -s 0x200 -o fcb.bin 4.3 OSコンテナ用YAML ファイル YAMLファイルのテンプレートから、os_cntr.yaml を準備します。 (venv) $ cp ahab_template.yaml os_cntr.yaml os_cntr.yaml では、キー image_path で、Linux カーネルと使用するデバイスツリーのパスをセットし、その他必要なパラメータも設定します。 4.4 デジタル署名アルゴリズムの選択 i.MX 95 内蔵eFuse やコンテナヘッダのFlags で選択することになります。 eFuse コンテナヘッダの Flags フィールド コンテナヘッダの Flags フィールドにある "Bit 15: Check all signature" = 0x1 とすることで、eFuse のELE_BOOT_CRYPTO 設定によらず、コンテナ内にあるすべての署名を認証します。 コンテナヘッダの Flags フィールドの "Check all signature"は、YAML キー "check_all_signature" で指定します。 5. ワークスペースの準備 SPSDK でワークスペースを作成し、必要な鍵ファイル、YAML ファイル およびバイナリファイルを配置します。 5.1 ワークスペースの作成 (venv) $ nxpimage bootable-image get-templates -f mimx9596 -o workspace 5.2 鍵ファイル 鍵の作成で作ったkeys フォルダごと持ってきます。 5.3 YAML ファイル例 動作確認に使用したYAMLファイルを、imx95-spsdk-yaml-examples.tar.gz に添付しています。 5.4 バイナリファイル Yocto Linux BSP からバイナリファイルを持ってくる場合、 ブートローダを構成するバイナリ $ bitbake -e imx-boot | grep ^S= により表示されるパスの、 iMX95/ にあるバイナリからコピーします。 Linux カーネル / /tmp/deploy/images/ /Image-- - - .bin を コピーします。 デバイスツリー / /tmp/deploy/images/ /にあるdtb で、使用するもの1つコピーします。 YAMLファイルの例 を使用する場合、 ・Linux カーネルは、Image ・デバイスツリーは、imx95.dtb という名前で、それぞれ配置します。 5.5 eMMC / SD ブート 下記のようなファイル構成となります。 YAMLファイルの例を使用する場合、spl.yaml は、DRAMタイプにより、emmc_sd/spl-lpddr4x.yaml または spl-lpddr5.yaml から名前を変更して配置します。 上記では、ELE ブート・ファームウエア は、RevC 品 (B0マスク)用の mx95b0-ahab-container.img となっています。 5.6 FlexSPI NOR ブート 下記のようなファイル構成となります。fcb.binも必要です。 YAMLファイルの例を使用する場合、fspi_nor/から、bootable_image_fspi_nor.yaml をコピーしてきます。 また、spl_fspi_nor-lpddr5.yaml を spl.yaml に名前を変更し配置します。 上記では、ELE ブート・ファームウエア は、RevC 品 (B0マスク)用の mx95b0-ahab-container.img となっています。 6. 署名付きイメージの作成 署名付きブートローダと署名付き OS コンテナのイメージを、 SPSDK で作成します。 ワークスペースの準備 で作成されたディレクトリに移動して作業します。 (venv) $ cd workspace/imx_boot_flash_all/imx95-19x19-lpddr5-evk/ 6.1 署名付きブートローダ 鍵ファイルとバイナリファイルを指定する spl.yaml と uboot.yaml を、bootable_image.yaml から呼び出します。 署名付きブートローダ signed_flash.bin と、SRKH eFuse プログラム用のスクリプト (*.bcf) が作成されます。 eMMC / SD ブート (venv) $ nxpimage -v bootable-image export --config bootable_image.yaml -o output/signed_flash.bin 下記のような情報が、表示されます。 FlexSPI NOR ブート (venv) $ nxpimage -v bootable-image export --config bootable_image_fspi_nor.yaml -o output/signed_flash.bin 下記のような情報が、表示されます。 eMMC/SDとの違いとして、FCB が先頭についているのが分かります。 イメージの検証を行うことができます。 // eMMC / SD ブート (venv) $ nxpimage -v bootable-image verify -f mimx9596 -b output/signed_flash.bin -m serial_downloader // FlexSPI NOR ブート (venv) $ nxpimage -v bootable-image verify -f mimx9596 -b output/signed_flash.bin -m flexspi_nor 6.2 署名付きOSコンテナ os_cntr.yaml の内容で、署名付き OS コンテナのイメージを作成します。 (venv) $ nxpimage -v ahab export -c os_cntr.yaml 下記のような情報が、表示されます。 イメージの検証を行うことができます。 (venv) $ nxpimage -v bootable-image verify -f mimx9596 -b output/os_cntr_signed.bin -m serial_downloader 7. 署名付きイメージの導入 作成した署名付きブートローダおよび署名付きOSコンテナを導入する方法です。 7.1 署名付きブートローダ i.MX95 ボードのブートデバイスに、signed_flash.bin を書き込みます。 ボードのデバッグ・ポートとシリアル・ダウンロード・ポートを、PC に接続します。 u-boot が起動する場合には fastboot モードにします。 u-boot=> fastboot 0 もしくは、BOOT_MODE を シリアル・ダウンロード・モード として起動しておきます。 SPSDKで書き込みます。 // eMMC (venv) $ nxpuuu write -b emmc -f mimx9596 output/signed_flash.bin // SD (venv) $ nxpuuu write -b sd -f mimx9596 output/signed_flash.bin // FlexSPI NOR (venv) $ nxpuuu write -b qspi -f mimx9596 output/signed_flash.bin SPSDK の nxpuuu コマンドではなく、通常の uuu または u-boot コマンドを使用して書き込むことも可能です。 7.2 署名付きOSコンテナ あらかじめBSP イメージが書き込んであるeMMC もしくはSDカード の boot パーティションに、os_cntr_signed.bin を入れます。 u-boot コマンドで、i.MX95 の接続されたeMMC または SDカードを、USBストレージとしてみせることで、PCにマウントさせます。 シリアル・ダウンロード・ポートをPC に接続しておく必要があります。 // eMMC u-boot=> ums mmc 0 // SDカード u-boot=> ums mmc 1 PC にマウントされた boot パーティションに 、os_cntr_signed.bin をコピーしたあと、u-boot で Ctrl-C を押します。 もしくは、別の手段で os_cntr_signed.bin を、boot パーティションに入れておきます。 署名付きOSコンテナの起動時、下記のような表示が出ます。 CONFIG_AHAB_BOOT  を有効にした u-boot では、通常のLinux Image (署名なし)ではなく、 os_cntr_signed.bin (署名付き)が使用されます。 7.3 動作確認 この段階では、i.MX95 のライフサイクルの状態は、OEM Open のため、u-boot や Linux が起動しますが、KEY HASH の検証失敗が、ELE イベントで検出されます。 8. SRKH (Super Root Key Hash) eFuse のプログラム 8.1 eFuse 書き込み i.MX 95 SRKH eFuse に、公開鍵のハッシュ値を書き込みます。 一度書き込むと元に戻せません。 書き込んだデバイスで、署名付きブートローダや署名付きOS コンテナを更新するときは、書き込んだ SRKH のもととなる公開鍵のペアである秘密鍵を使い署名します。 別の鍵ペアを使う場合には、現在のSRKH をRevoke し、4組作成しておいた鍵ペアで未使用のものを使用します。 i.MX 95 ボードのシリアル・ダウンロード・ポートをPCに接続し、 u-boot はあらかじめ fastboot モードにしておきます。 u-boot=> fastboot 0 署名付きイメージの作成で作られたSRKH eFuse のプログラミング用スクリプト(*.bcf) を使い、 SPSDK で書き込みます。 SRKH eFuse のプログラミング用スクリプトには、 i.MX 95 eFuse の word index が記載されています。 // OEM_SRKH (venv) $ nxpele -f mimx9596 batch output/ahab_oem0_srk0_hash_nxpele.bcf // OEM_PQC_SRKH (venv) $ nxpele -f mimx9596 batch output/ahab_oem0_srk1_hash_nxpele.bcf 8.2 eFuse 値の確認 SPSDK の nxpele コマンドで、 eFuse のword index を指定しリードして、値を確認することができます。 // OEM_SRKH[31:0] word index = 128 (venv) $ nxpele -f mimx9596 read-common-fuse -i 128 // OEM_PQC_SRKH[511:480] word index = 463 (venv) nxpele -f mimx9596 read-common-fuse -i 463 など SPSDK の代わりに、U-boot コマンド もしくは System Manager モニタのコマンドで、eFuse にリード・ライトアクセスすることもできます。 U-boot u-boot=> fuse read u-boot=> fuse prog System-Manager >$ fuse.r >$ fuse.w 8.3 動作確認 この段階では、i.MX 95 のライフサイクルの状態は、OEM Openですが、SRKH プログラム済みのため、改ざんがなければ、ELEイベントは検出されません。 改ざんがあっても、その部分が動作に影響しなければ、OEM Openのため起動しますが、認証の失敗が ELE イベントで検出されます。 9. ライフサイクルを OEM Closed に更新 i.MX 95 出荷直後のライフサイクルは、OEM Open です。 デバッグ終了後に、i.MX 95 のライフサイクルを OEM Closed に変更します。 OEM Closed にしたあとの留意点 OEM Openには戻せません。 CONFIG_AHAB_BOOT=y とした u-boot を含んだブートローダで起動すると、署名の無いイメージや、不正な署名付きイメージは起動できなくなります。 CONFIG_AHAB_BOOT=y としていない u-boot を含んだブートローダでは、署名なし Linux Image で起動できてしまいますので、必ず署名付きOS コンテナ os_cntr_signed.bin で起動させるため、 CONFIG_AHAB_BOOT=y とした u-boot を含んだブートローダを使用します。 動作確認後、署名なしのLinux Image やデバイスツリーは、boot パーティションから削除します。 9.1 SPSDK i.MX 95 ボードのシリアル・ダウンロード・ポートはPCと接続し、u-boot は、あらかじめfastboot モードにしておきます。 u-boot=> fastboot 0 SPSDK でライフサイクルを更新します。 (venv) $ nxpele -f mimx9596 forward-lifecycle-update -l OEM_CLOSED Forward Lifecycle update ends successfully. (venv) $ 9.2 U-boot u-boot=> ahab_close OEM Closed とした後、 uuu で BSP イメージ (wic ファイル) を書き込む場合にも、署名付きブートローダを使用する必要があります。 10. ELE イベントの確認 ELE (Edgelock Secure Enclave) は、i.MX 95 の内蔵ブロックで、セキュアブート時のコンテナ・イメージの認証を行います。 SPSDK および U-boot、System Manager コマンドで、ELE の状態を確認することができます。 10.1 SPSDK シリアル・ダウンロード・ポートとPCを接続し、U-boot でfastboot モードにしてから行います。 u-boot=> fastboot 0 SPSDK でELE イベントを取得します。 (venv) $ nxpele -f mimx9596 get-events 10.2 U-boot CONFIG_AHAB_BOOT=y  としたU-boot で使用できるコマンドです。 デバイスのライフサイクルにより、OEM Open または OEM closed も表示されます。 u-boot=> ahab_status 10.3 System Manager >$ ele events 10.4 表示例 ELE イベント(SRKH 値の不一致)が検出されたとき SPSDK U-boot (OEM open時) System Manager ELE イベント検出がないとき SPSDK U-boot (OEM close後) System Manager   11. ブートローダの直接署名 既存の署名なしブートローダのバイナリに、 SPSDK で直接署名を追加することも可能です。 この場合、SPSDK がブートローダ・バイナリのコンテナから構成を解釈します。 YAML ファイルで、各イメージごとの細かい設定は指定できませんが、コンテナヘッダの設定と秘密鍵および公開鍵のパスを指定するのみで、署名付きブートローダを作成することができます。 11.1 テンプレートの作成 (venv) $ nxpimage ahab get-template -f mimx9596 -o ahab_sign.yaml --sign (venv) $ cp ahab_sign.yaml sign.yaml 11.2 YAML ファイル sign.yaml に、コンテナヘッダの設定と秘密鍵および公開鍵のパスを指定します。 YAMLファイルの例 を使用する場合、 direct_signing/sign.yaml をコピーしておきます。 11.3 署名の追加 既存のブートローダのバイナリ flash.bin に署名処理を行います。 // eMMC / SD (venv) $ nxpimage ahab sign -c sign.yaml -b flash.bin -o output/flash_directsign.bin -fs output // FlexSPI NOR (venv) $ nxpimage ahab sign -c sign.yaml -b flash.bin -o output/flash_directsign.bin -fs output -m flexspi_nor output/flash_directsign.bin と、SRKH eFuse のプログラミング用スクリプト output/*.bcf が作成されます。 おわりに SoC 起動イメージの保護を実現するため、i.MX 95 セキュアブートに使用する署名付きイメージを、SPSDK を使って作成し、起動するまでの流れを紹介しました。今回はi.MX 95 AHAB で新たに追加されたPQCを利用する手順例で示しました。 ========================= 本投稿の「Comment」欄にコメントをいただいても、現在返信に対応しておりません。 お手数をおかけしますが、お問い合わせの際には「NXPへの技術質問 - 問い合わせ方法 (日本語ブログ)」をご参照ください。 (既に弊社NXP代理店、もしくはNXPとお付き合いのある方は、直接担当者へご質問いただいてもかまいません。) i.MX95 でのセキュアブートに使用する署名付きのコンテナ・イメージを Secure Provisioning SDK (SPSDK) で作成し、起動する手順をハンズオン形式で学べる内容となっています。 楕円曲線デジタル署名暗号 (ECDSA)と、耐量子暗号 (PQC) ML-DSA 両方の署名認証を行うHybrid boot での実現例を紹介します。 (作業時間:半日 *一度i.MX 95向けの Linux BSP のビルドが完了している前提) i.MX Processors Security 日本語ブログ
查看全文
Ara Vision Examples Multi-Stream YOLOv8 Object Detection  This post shows a walkthrough of the ARA2 Vision Examples demo and its multi-stream YOLOv8 object detection application. The ara2-vision-examples demo provides vision AI examples for NXP i.MX platforms using Ara240 DNPU acceleration. It demonstrates real-time video processing with AI/ML inference capabilities such as object detection, classification, pose estimation, and semantic segmentation. This walkthrough focuses on the Go Point launch of the application, which uses GStreamer to process up to eight simultaneous video streams, run YOLOv8 object detection on each stream, and display the results in a single mosaic view.   Key Features Multi-stream video processing from 1 to 8 streams YOLOv8 object detection accelerated by Ara240 DNPU Support for YOLOv8n, YOLOv8s, YOLOv8m, YOLOv8l, and YOLOv8x models GStreamer-based video pipeline Mosaic display output with bounding boxes Runtime options for stream count, model selection, synchronization, and endpoint selection FPS and IPS performance overlay per stream   Running the Demo Run the application with the default settings: multistream_yolov8 Run with a specific number of streams: multistream_yolov8 -s 4 Select a different YOLOv8 model: multistream_yolov8 -s 4 --model yolov8s Run eight streams for maximum throughput: multistream_yolov8 -s 8 --sync false Enable synchronized playback: multistream_yolov8 -s 4 --sync true   Walkthrough Video In the attached video, it is shown how to launch the application from GoPoint, configure the number of streams, select different YOLOv8 models, and view the object detection results in the mosaic display.  This video is currently being processed. Please try again in a few minutes. (view in My Videos) Summary Ara-Vision-Examples is the reference application showcasing edge vision AI on the Ara240 Discrete NPU (DNPU). It runs real-time object detection, classification, pose estimation and semantic segmentation over single or multiple (up to eight) video streams, rendering bounding boxes, labels and confidence scores. Links ARA2 Vision Examples repository: https://github.com/nxp-imx-support/ara2-vision-examples Multi-stream YOLOv8 README: https://github.com/nxp-imx-support/ara2-vision-examples/blob/main/tasks/object-detection/yolov8n/multistream-gstreamer/README.md ARA2-M2-16G-GT ARA240 Hands-On Training
查看全文
EB tresos activation failed Hi Team, I was trying to download and activate a copy of EB Tresos by using EB Client License Administrator V1.5.1 with the following activation code: 6A94-974F-C73A-28C1 (valid until 03/31/2026) as reported on the NXP website. Anyway the activation fails repeatedly, with the following error messages: ERROR: flxActAppActivationSend (50040,41147,10248) The quantity specified exceeds maximum quantity allowed (0). Connection to FlexNet Operations Server failed. Could you please help me on this? Thanks & Regards, Sai Re: EB tresos activation failed Hi friend, I have same problem.  I think NXP team have not refreshed the license.  And I think the responsible team is on Lunar New Year holiday. Let’s wait and see. Log : Activating NodeLocked License 6A94-974F-C73A-28C1, Number Of Licenses: 1 Status: 4, Creating request Status: 5, Request created Status: 6, Context created Status: 7, Connected to remote server Status: 8, Request Sent Status: 9, Polling for response Status: 11, Done ERROR: flxActAppActivationSend (50040,41147,10248) The quantity specified exceeds maximum quantity allowed (0). Connection to FlexNet Operations Server failed. Re: EB tresos activation failed The code is refreshed. Let's check. I activated it successfully. Re: EB tresos activation failed Hello, It means that maximum amount of activation with this license key has been depleted. I have notified admin to update the code with one one if possible. Best regards, Peter
查看全文
Arducam B0353 Camera Integration with i.MX93 Dear Team, We need to integrate the Arducam B0353 MIPI 2-lane camera (https://www.arducam.com/arducam-full-hd-color-global-shutter-camera-for-raspberry-pi-2-3mp-ar0234-wide-angle-pivariety-camera-module-b0353.html) with the i.MX93 / i.MX9352 platform. We are new to this platform and would like to know the procedure for camera integration. If anyone has already integrated this camera (or a similar MIPI CSI-2 camera), please share: Integration steps Driver details Device tree configuration (if available) Looking forward to your support. Regards, Ajnas C Re: Arducam B0353 Camera Integration with i.MX93 I couldn't open the link, based on your link name description, the camera is ar0234? for the dts, you can refer to the imx93 dts as below which uses AP1302,  https://github.com/nxp-imx/linux-imx/blob/lf-6.12.y/arch/arm64/boot/dts/freescale/imx93-11x11-evk.dts for the camera driver, nxp doesn't offer this, need customer ask for the vendor, you also can check if current bsp has your camera driver or not https://github.com/nxp-imx/linux-imx/tree/lf-6.12.y/drivers/media/i2c
查看全文
Creating SREC file for HAB bootable image generation I'm generating command line tools for flashing the application image to the NOR flash of the MIMXRT1170 (EVKB board). I know that the nxpimage tool helps create SREC format files from axf/elf files like this:  nxpimage utils binary-image convert -i "%AXF_FILE%" -f s19 -o "%SREC_FILE%"   But the SREC file generated is different from the SREC file that is created when using the MCUXpresso Secure Provisioning Tool in terms of the contents and addressing. When I use the MCUXpresso Secure Provisioning Tool to load an elf/axf file to create a bootable image, it adds the srec file and parsed dcd file in the source folder of the MCUXpresso Secure Provisioning Tool's workspace.  I would like to know how those srec and parsed dcd file is generated by the MCUXpresso Secure Provisioning Tool. Also checking if there is a way to extract the parsed DCD file from SREC/elf/axf file separately with any CLI tools?   I know that the MCUXpresso Secure Provisioning Tool can be invoked from CLI to automate the whole process, but we are trying to create a script that can flash the MCU with just the nxpimage and blhost tools.     Re: Creating SREC file for HAB bootable image generation Hi @tj787 , What can be seen here is the following command creates this output into specified “parsed-directory”: nxpimage.exe hab parse -f mimxrt1176 -o parsed-directory -b my-application-with-dcd.bin Hope that helps, Have a great day, Kan ------------------------------------------------------------------------------- Note: - If this post answers your question, please click the "Mark Correct" button. Thank you! - We are following threads for 7 weeks after the last post, later replies are ignored Please open a new thread and refer to the closed one, if you have a related question at a later point in time. -------------------------------------------------------------------------------
查看全文
mm9z1_638の現在の精度は1%の要件を超えています こんにちは、Nxpパートナー AN12301 キャリブレーション ガイドを実行した後、mm9z1_638 からの現在の読み取り値を記録します。精度要件の 1% を超える読み取りが 3 ~ 5 件あることがわかりました。ソフトウェアまたはハードウェアのローパス フィルターはありますか?ローパス係数をどのように決定しますか?ガイドラインを参照しますか? Re: mm9z1_638 current accuracy is out of 1% requirement こんにちは、トーマス ありがとうございます。別の電流源を変更します。失敗条件が修正されました。 しかし、6Aの精度は+/-1%を満たすことができず、ノイズは約100mAです。100mA のノイズを減らすための提案はありますか?または 100mA のノイズは許容できます。 Br、 マイク・リャン Re: mm9z1_638 current accuracy is out of 1% requirement こんにちは、Mikeさん データを見ると、定期的に低い数値が出ているようですが、これはどこから来ているのでしょうか?これはテスト機器またはソフトウェアからのものでしょうか? この定期的なイベントが問題を引き起こしているようです。 よろしくお願いいたします。 トーマス
查看全文
The KW45 FlexCAN can trigger a receive interrupt and receive the messages sent by itself I am debugging the FlexCAN driver of the KW45 chip and have found that when the receive filter MASK is not configured, the FlexCAN module can trigger its own receive interrupt and receive the messages sent by itself. Is this behavior normal? If it is, what is the underlying reason? For example, modify the flexcan_interrupt_transfer code in the SDK as shown in the attachment.  uart log : ********* FLEXCAN Interrupt EXAMPLE ********* Message format: Standard (11 bit id) Message buffer 0 used for Rx. Message buffer 1 used for Tx. Interrupt Mode: Enabled Operation Mode: TX and RX --> Normal ********************************************* Please select local node as A or B: Note: Node B should start first. Node:A Press any key to trigger one-shot transmission Rx MB ID: 0x321, Rx MB data: 0x0, Time stamp: 60127 Press any key to trigger the next transmission! Rx MB ID: 0x321, Rx MB data: 0x1, Time stamp: 3624 Press any key to trigger the next transmission! Rx MB ID: 0x321, Rx MB data: 0x2, Time stamp: 18344 Press any key to trigger the next transmission! Rx MB ID: 0x321, Rx MB data: 0x3, Time stamp: 56722 Press any key to trigger the next transmission! Rx MB ID: 0x321, Rx MB data: 0x4, Time stamp: 55297 Press any key to trigger the next transmission! Rx MB ID: 0x321, Rx MB data: 0x5, Time stamp: 53656 Press any key to trigger the next transmission! Rx MB ID: 0x321, Rx MB data: 0x6, Time stamp: 30470 Press any key to trigger the next transmission! Rx MB ID: 0x321, Rx MB data: 0x7, Time stamp: 22438 Press any key to trigger the next transmission! Rx MB ID: 0x321, Rx MB data: 0x8, Time stamp: 1009 Press any key to trigger the next transmission! Re: The KW45 FlexCAN can trigger a receive interrupt and receive the messages sent by itself Hello, I have resolved the issue and need to set:   flexcanConfig.disableSelfReception = TRUE;
查看全文
[RTD600 IP] S32K3X4EVB-T172 GPIOウェイクアップ このサンプル プロジェクトでは、WKPU + SIUL2 (GPIO) の基本機能を使用および構成する方法をユーザーに示します。 ------------------------------------------------------------------------------ * テストハードウェア: S32K3X4EVB-T172 (SCH-53148 REV B2) * MCU: S32K344 * IDE: S32DS v3.5 および S32DS v3.6.x * SDKリリース: RTD 6.0.0 * デバッガ: PE Micro * ターゲット: internal_FLASH ------------------------------------------------------------------------------ このサンプル ルーチンは、GPIO 割り込みウェイクアップ用に WKPU ユニットを構成します。これは最も単純な WKPU の例です。ピン PTB19 (WKPU42) はウェイクアップ用に構成されています。 ルーチンはSW5が押されるのを待機し、緑色の LED をオフにして、次の処理を実行する Wkpu_EnterStandby() 関数に入ります。 コアクロックを FIRC に切り替えます。 WKPU インスタンスを初期化します。 WKPU42 (PTB19) を設定します。 スタンバイ(または高速スタンバイ)状態になります。 SW6を押すと、MCU が起動してリセットし、 SW5が再度押されるかどうかをポーリングします。 この例は現状のまま提供されており、保証やサポートはありません。
查看全文
在线客服微【xins4698】万宝路公司现场负责人申请上下分直属游戏流程 在线客服微【xins4698】万宝路公司现场负责人申请上下分直属游戏流程 LPC Marketing LPC11xx LPC12xx lpc13xx lpc15xx LPC51Uxx LPC546xx LPC54xxx LPC55xx LPC800
查看全文
S32K388 と MC33771B SPI BMS: MBDT、コード生成、AI 展開 NXPコミュニティの皆様、こんにちは。 実際のリチウムイオン電池パックをターゲットに、SPI通信を介してS32K388-Q289とFRDM-MC33771B-SPI-EVBを使用した統合BMSを開発しています。調査を進めるうちに、S32K3 シリーズに使用できる BMS 固有のサンプル プロジェクトとリファレンス実装が比較的少ないことに気付きました。そのため、このタイプのアプリケーションに推奨されるワークフローとサポートされているツールチェーンを確認するのは困難でした。 私の目標は、以下の内容を含む完全な組み込み BMS スタックを MCU に実装することです。 セル電圧/温度モニタリング(BCC経由) セルバランス制御 SOC / SOH推定アルゴリズム(ディープラーニングベースのアプローチを含む) MCU上でのリアルタイム操作 可能な場合はモデルベース デザインのワークフロー (そうでない場合は S32DS C プロジェクト) 最初に MATLAB/Simulink Model-Based Design Toolbox (MBDT) を使用する予定ですが、セットアップで完全なサポートが利用できない場合は、S32 Design Studio (S32DS) に進みます。 以下の質問についてご指導いただければ幸いです。 1) S32K3 BMSアプリケーション用のMBDTサポートおよびトレーニング・マテリアル BMS関連の開発(SPIベースのBCC通信、サンプリング/プロセッシング、保護ロジック、リアルタイム監視など)に特化したS32K3シリーズでMBDTを使用するための公式ドキュメント、ユーザーガイド、トレーニングコース、またはアプリケーションノートはありますか? 2) MBDTモデルとディープラーニングモデルの統合とコード生成 Simulink (MBDT) で BMS ロジックを開発し、Deep Learning Toolbox を使用して構築された SOC/SOH モデルを追加すると、次のようになります。 - これらを 1 つの統合 Simulink モデルに組み合わせることはできますか? - はいの場合、Embedded Coder を使用して統合モデルを C コード (またはその他のサポートされている組み込みコード) に自動的に生成し、S32K388 に展開できますか? 3) S32K388におけるリアルタイム推論の実現可能性 (2)のコード生成が実行可能であれば: - 展開されたモデルは、MCU 上のライブ バッテリー データ (電圧/電流/温度) を使用してリアルタイム推論 (SOC/SOH 推定) を実行できますか? - S32K388 には、推奨される制約やベスト プラクティス (固定小数点と浮動小数点、サポートされるレイヤーの種類、モデル サイズの制限、推論のタイミングに関する考慮事項など) はありますか? 4) MBDTにおけるセーフティ制約/保護ロジック セーフティのために、次のような保護ロジックを実装する必要があります。 - 過電圧/低電圧しきい値 - 過熱/低温しきい値 - 障害処理と安全状態の動作 これらの制限と保護ロジックを MBDT/Simulink に直接実装し、生成された組み込みコードに含めることは可能ですか? S32K ターゲットの参考例(BMS またはセーフティロジック)があれば、共有してください。 5) S32K388とFRDM-MC33771B-SPI-EVBおよび代替品との互換性 S32K388-Q289 は、BMS アプリケーション用に SPI 経由で MC33771B と連携するために正式にサポート/推奨されていますか? この組み合わせが推奨されない場合は、S32K3 ベースの BMS 開発用に公式にサポートされている BCC + リファレンス プラットフォーム (SPI または TPL) を提案していただけますか? 6) デバイス上でのトレーニング(オンライン学習)と推論のみのワークフロー 組み込み AI の観点から: - オンデバイス トレーニング (リアルタイムのバッテリー データを使用したオンライン学習) は S32K3 MCU でサポートまたは推奨されていますか? - または、PC でのオフライン トレーニング + MCU での推論のみというアプローチが推奨されますか? オフライントレーニングが推奨される場合、推奨されるワークフローを説明する公式リファレンスはありますか? 7) S32K388におけるAI推論のパフォーマンス/メモリガイダンス S32K3 (特に S32K388) 上で AI 推論を実行するためのベンチマークやガイドラインはありますか? - フラッシュ/RAM使用量の予想 - 典型的な推論レイテンシの範囲 - 最適化アプローチ(固定小数点、量子化、軽量アーキテクチャ) 😎 MBDT + DL 統合が推奨されない場合の推奨代替ワークフロー 完全な統合と自動コード生成が推奨/サポートされていない場合、S32K3 に AI モデルを展開するための推奨ワークフローは何ですか?例えば: - モデルを軽量なC推論コードに手動で変換する - CMSIS-NNのようなアプローチを使用する(該当する場合) - NXPミドルウェア/推奨ライブラリ/サンプル(例:eIQ)の使用 サポートありがとうございます。ドキュメントのリンク、トレーニング リファレンス、SDKs の例、ベスト プラクティスの推奨事項などがあれば、非常に役立ちます。 よろしくお願いいたします。 Re: S32K388 with MC33771B SPI BMS: MBDT, code generation, and AI deployment こんにちは@SonHyunTaek 、 プロジェクトに関する詳細な質問をコミュニティ フォーラムに投稿していただきありがとうございます。以下の回答は MBDT ソフトウェアの観点から提供されていることに注意してください。ハードウェアの観点からは、コンポーネントの組み合わせに関してより良いアプローチがある可能性があります。また、BMS の目標電圧とパック電流検知が必要かどうかを知っておくことも役立ちます。SPI 経由でコネクテッドされた単一の AFE を使用する予定なので、最大 48V の BMS システムをターゲットにしているものと想定します。 ご提案いただいたデバイスの組み合わせに関してですが、ハードウェア レベルでは、S32K3 は MC33771B と完全に互換性があります。しかし、ソフトウェアの観点から見ると、状況はより複雑になります。S32K3 用の MBDT は、MCAL レイヤーの NXP リアルタイム・ドライバ (RTD) 上にコードを生成するように構築されていますが、BMS 用の MBDT は、RTD と互換性のある BMS SDK 上にコードを生成します。BMS SDK には、Simulink からアクセスできるピン、クロック、ペリフェラルの外部構成ツールと、すぐに実行できるサンプルが含まれています。 ご注意ください: - MBDT for BMS 1.2.0 は、S32K388 をサポートしていない MBDT for S32K3 1.4.0 でのみ動作します。 - BMS SDKはRTD 3.0.0とのみ互換性があります。S32K3 1.4.0 の MBDT によって使用されます。当時、S32K388 は入手できませんでした。 - BMS 用 MBDT および S32K3 用 MBDT は、バッテリー ジャンクション ボックス機能を備えたハードウェアデザインで通常使用される MC33774、MC33775、MC33664、MC33665、MC33772C などの新しい AFE 部品のみをサポートします。 これらの制限はソフトウェア パッケージ (RTD および BMS SDK) に起因します。使用する予定の MC33771B には C SDK ドライバーが含まれていますが、S32K3 と MC33771B を接続するためのすぐに実行可能な互換性のある C ドライバーがないため、カスタム コードを使用して手動で MBDT に統合する必要があります。つまり、組み込み SW: MC33771B/MC33772B 用のバッテリー・セルコントローラ ソフトウェア ドライバでは、手動の C コーディングと MBDT への統合が必要です。これを実行する方法 (S32K1 用の MBDT に基づく) を説明した記事は、こちらにあります。 以下であなたの質問に答え、最後にいくつかの解決策を提案します。 1. MBDTのサポートとトレーニング 私たちが提供する最高のリソースは、 MBDT コミュニティページで入手できます。右側には、S32K3 用の MBDT を使用して基本的なタスクを実行する方法を説明した、モデルベース デザイン ツールボックスの初心者向けガイドがあります。さらに、バッテリー・マネジメントシステムについての洞察を提供する BMS ウェビナーもあります。 MathWorks と共同で作成した BMS に関する最新のウェビナーへのリンクは次のとおりです。 NXP S32 デバイス向けバッテリー システム開発の合理化。 2. ディープラーニングモデルの統合 MathWorks とのこれまでのコラボレーションでは、ディープラーニング ベースの充電状態 (SOC) 推定アルゴリズムを Simulink から直接展開し、PIL モードでテストすることに成功しました。はい、Embedded Coder は Simulink モデルから直接ニューラル ネットワークを生成でき、MBDT と組み合わせて S32K3 に展開できます。 関連するウェビナーへのリンクは次のとおりです。 NXP S32K3マイクロコントローラへのディープラーニングベースのSOC推定アルゴリズムの導入 3. S32K388におけるリアルタイム推論の実現可能性 はい、リアルタイム推論は実現可能です。以前の研究では、セル電圧、電流、温度を入力として使用しました。これらの値は実行時に AFE によって測定され、ニューラル ネットワークに提供されます。ベストプラクティスとして、PIL モードでの集中的なテストはパフォーマンスの評価に役立ちます。最適化手法を試して、最適な構成を特定することもできます。 4. セーフティ上の制約 セーフティ要件のロジックを Simulink に実装し、対応するコードを自動的に生成できます。MathWorks は、S32K3 で使用および展開した例を提供しています。 リチウムイオンバッテリー・マネジメントアルゴリズムの設計とテスト 5. S32K388とFRDM-MC33771B-SPI-EVBの互換性および代替品 Simulink からニューラル ネットワーク アプリケーションを直接テストするには、最新バージョンの S32K3 用 MBDT を使用します。これにより、展開の実現可能性を確認し、現時点で利用可能なすべての MCU に対してベンチマーク テストを実行できます。 ハードウェアの観点からは、いくつかのオプションがあります。 a. 提案されたソリューション(S32K358 + MC33771C)を続行する MC33771B ではなく、より新しく、SPI をサポートし、電流測定機能を備えている MC33771C から始めてください。カスタム コードを使用して MC33771C ドライバを Simulink に直接統合し、BMS 1.8.0 用の MBDT を使用できます。 b. サポートされているMCUを使用してSimulinkでBMS用のMBDTを使用する たとえば、セル監視用の MC33774/MC33775 と電流測定用の MC33772C を搭載した S32K358 (すべて SPI 経由)。このセットアップは、MBDT for BMS および MBDT for S32K3 1.4.0 で動作します。ただし、最初にニューラル ネットワークが S32K358 で実行されることをテストします。 c. AFE部品を搭載したS32K3または最新のBMA7318を使用する 注意: このCASE、BMS 用の MBDT を使用して Simulink からコードを展開することは直接サポートされていません。Simulink でアプリケーション ロジックとニューラル ネットワーク C コードを生成し、S32 Design Studio を使用して AFE と手動で統合することもできます。 6. デバイス上でのトレーニングと推論のみのワークフロー これはアプリケーションの要件によって異なります。これまでのアプローチは推論のみで、MATLAB でネットワークをトレーニングし、それを MCU に展開していました。推奨リソース: ディープラーニングを使用したバッテリー状態の推定。続いて、上記のポイント 2 で説明したウェビナーが開催されます。 7. S32K388におけるAI推論のパフォーマンスとメモリに関するガイダンス パフォーマンスはアプリケーションによって異なります。ニューラル ネットワークがすでにトレーニングされている場合は、生成されたコードを S32K3 ファミリの PIL モードでテストし、実行をプロファイルして、S32K388 がニーズを満たしているかどうかを判断します。参考までに、前述の SOC アルゴリズムは、S32K344 および S32K358 で正常にテストされました。 要約すると、Embedded Coder を使用すると、ニューラル ネットワークからコードを生成し、PIL モードでパフォーマンスをテストできます。検証後、生成されたコードを S32 Design Studio にインポートし、必要に応じて S32K388 に展開します。 お役に立てば幸いです。 マリウス
查看全文
S32N55: sequence ID in gPTP bridge device when acting as a GM Hi team, I was testing the bridge device behavior in the gPTP example. I use the GrayVIP_1_0_22_0. According to the User Manual, if the bridge does not receive any Sync messages after StartupTimeoutS, it should start operating as a GM. However, I observed that in this situation, the Sequence ID in both Sync and Sync Follow-Up frames remains at 1024 and does not increase. After checking the related code, I found that when the bridge transitions to GM mode, the Sequence ID used for generating Sync messages is taken from the prSyncMachines[prDomain->u8SlaveMachineId].u16SequenceId of the slave port. If the slave port has not received any Sync messages, this value is never updated, which causes the Sequence ID in the Sync messages sent by the master port to remain unchanged. This behavior suggests that the bridge cannot function properly as a GM under this mechanism. Could you please help explain why the bridge is designed to behave this way? BR, Bridget GPTP_STACK Re: S32N55: sequence ID in gPTP bridge device when acting as a GM Hello @Bridget,  The team has picked up a case and will provide an answer as soon as possible  Best regards, Radu Re: S32N55: sequence ID in gPTP bridge device when acting as a GM Hi @Bridget, We are working to reproduce the issue and will discuss further steps in the team. I will get back to you. Thanks, Lukas Re: S32N55: sequence ID in gPTP bridge device when acting as a GM @Bridget, As it turns out, this behavior of the gPTP Bridge is intended, and in line with the 802.1as standard. The Bridge is supposed to relay Sequence ID received on master port. If the Grand Master is lost, the Sequence ID indeed stops being updated - this is one of the ways that downstream devices are able to tell when GM is lost. For a Bridge that never had a GM in the first place, the Sequence ID is random per standard. Our interpretation of random is that nothing about the Sequence ID is guaranteed, or should be assumed. A hardcoded 1024 is considered compliant to that (could be any other number). Is the Sequence ID causing issues in your application? As you have surely observed, Endpoints are perfectly capable of synchronizing to the Bridge, regardless of Sequence ID. Apologies for taking so long. Please do let me know if anything is unclear. BR, Lukas
查看全文
チップ関連のリソースとドキュメントをダウンロードする方法 例: S32K3xx_interrupt_map.xlsx Re: 如何下载芯片的相关资源的文档 こんにちは@PQF データシートとガイダンスマニュアルは公式ウェブサイトからダウンロードできます。これらの資料はガイダンスマニュアルの添付ファイルに含まれています。 https://www.nxp.com/products/S32K3
查看全文
FS32K144HAT0MMHT用セーフティ周辺ドライバ(SPD)に関するお問い合わせ – 入手状況と無料ソース こんにちは、チームの皆さん FS32K144HAT0MMHT MCU を使用して新しい ISO 26262 (ASIL-B) プロジェクトを開始しており、セーフティ ペリフェラル ドライバ (SPD) がどのように動作するかを理解したいと考えています。 SPD パッケージはどこからダウンロードできますか? また、NXP ソフトウェア ライセンス & サポート ポータルでは、SW32K1-SPD-D のような特定のパッケージ名が必要ですか? SPD は無料ですか、または標準の RTD/SDKs ダウンロードに含まれていますか、それとも別のライセンスが必要ですか? 初期開発で SPD ドライバを研究できるサンプルや無料ソースはありますか? SPD または関連リソースの検索に関するガイダンスがあれば幸いです。 ご回答をお待ちしています。 Re: Inquiry about Safety Peripheral Drivers (SPD) for FS32K144HAT0MMHT – Availability and Free Sourc こんにちは@KAVINKUMAR7 、 S32K1 – セーフティ ペリフェラル ドライバ (SPD)には、次のドライバのみが含まれています。 S32K1用拡張MCEMドライバ、バージョン1.0.1 https://www.nxp.com/webapp/swlicensing/sso/downloadSoftware.sp?catid=SW32K1-SPD-D&_gl=1*ao7djc*_ga*M... 。 ドライバは、無料で入手できる S32K1xx 標準ソフトウェア パッケージに含まれています。 S32K1/S32M24x リアルタイム・ドライバ、ASR R21-11、バージョン 2.0.0 P04 と互換性があります。 ただし、このドライバの機能例は提供されていません。 よろしくお願いいたします。 ダニエル Re: Inquiry about Safety Peripheral Drivers (SPD) for FS32K144HAT0MMHT – Availability and Free Sourc こんにちは、 この SPD は生産をサポートします。実稼働環境での使用に適しているかどうか確認していただけますか? Re: Inquiry about Safety Peripheral Drivers (SPD) for FS32K144HAT0MMHT – Availability and Free Sourc こんにちは@KAVINKUMAR7 、 はい、そうです。リリースノートを参照してください。 このバージョンは RTM (製造準備完了) レベルです。 よろしくお願いいたします。 ダニエル Re: Inquiry about Safety Peripheral Drivers (SPD) for FS32K144HAT0MMHT – Availability and Free Sourc こんにちは、 ご返答ありがとうございます。 最新の S32 Design Studio IDE をインストールし、リリースノートに記載されているように RTM (Ready to Manufacture) RTD SDK を使用しました。CAN サンプル プロジェクトは、提供された SDK と構成ツールを使用して直接生成されました。 ただし、この設定でも、次のビルド エラーが発生します。 致命的なエラー: Port_Ci_Port_Ip_Types.h:そのようなファイル、又はディレクトリはありません エラー発生場所: ボード/Port_Ci_Port_Ip_Cfg.c:56 #include "Port_Ci_Port_Ip_Types.h" Re: Inquiry about Safety Peripheral Drivers (SPD) for FS32K144HAT0MMHT – Availability and Free Sourc こんにちは@KAVINKUMAR7 、 これは互換性の問題のようです。 正しい S32DS IDE バージョンでは、互換性のある RTD と、SPD リリース ノートに指定されている SPD のみをインストールする必要があります。追加の RTD バージョンは存在しない必要があります。複数の RTD バージョンが必要な場合は、個別の IDEs をインストールすることをお勧めします。 追加の質問は SPD とは関係がなくなったため、さらにサポートが必要な場合は新しいThreadを作成してください。 よろしくお願いいたします。 ダニエル
查看全文
启用密码保护后无法移除 NTAG213 上的写保护 (AUTH0/ACCESS) 您好,NXP团队, 我正在使用 PN7160 NFC 控制器和恩智浦 Linux NF CDemoApp 处理 NTAG213 标签。 我的成功经验 我修改了nfcDemoApp (main.c),通过配置在 NTAG213 上启用只写密码保护: 工务司 包装 AUTH0 访问(prot = 0) 写保护正常工作: 移动 NFC 应用程序无法再写入 只有从我的应用程序中发送 PWD_AUTH 后,才能进行写入操作 将 AUTH0 RESET 为 0xFF 清除接入 重写配置页面 我还使用恩智浦 NFC TagInfo / NFC Tools应用程序在另一个 NTAG213 上启用了写保护,结果也达到了预期效果。 我面临的问题 现在,我在这两种情况下都 无法移除写保护: 使用我自己的代码 (nfcDemoApp) 使用恩智浦 NFC 工具/TagWriter移动应用程序 即使使用正确的密码 (PWD_AUTH) 进行了身份验证,但尝试:仍失败。 我的理解是 根据 NTAG213 数据表,我明白了: PWD_AUTH 应允许在 RF 会话期间写入受保护的页面 身份验证后,应该可以修改 AUTH0 和 ACCESS NTAG213 没有用于密码保护的永久锁定位(与锁字节不同) 但在实际操作中,我无法将标签恢复到未受保护的状态。 问题 启用 NTAG213 基于密码的写保护后,官方是否支持移除或禁用该保护? 成功设置 PWD_AUTH 后,AUTH0 和 ACCESS 页面是否可以写入,还是一旦设置后就永久受保护? 是否有将 NTAG213 恢复到可写(未受保护)状态的推荐顺序? 恩智浦 NFC Tools / TagWriter 是否能移除 NTAG213 上的密码保护,还是需要自定义原始命令处理? 身份验证后是否需要完全RESET(RF 会话RESET/电源重启)才能修改配置页面? 如果恩智浦团队能提供任何指导或说明,将非常有帮助。 感谢您的支持。 致以最诚挚的问候, Niranjan Re: Unable to remove write protection on NTAG213 after enabling password protection (AUTH0/ACCESS) 我使用 RFIDDiscover。它可以更改配置页面中的设置,取消保护。
查看全文
How to measure power consumption for individual power rails on the i.MX 8M Mini LPD4-EVK? Hi, I have the i.MX 8M Mini LPD4-EVK up and running, and I would like to perform power consumption measurements on specific independent power rails, such as VDD_1V8 and NVCC_DRAM_1V1. I have located the corresponding PMIC outputs (BUCK8 and BUCK7) on the schematic, but I noticed that there are no onboard shunt resistors (sense resistors) for these lines. Could you please advise on the best method to measure the current (or power) for these rails? Thanks! Re: How to measure power consumption for individual power rails on the i.MX 8M Mini LPD4-EVK? Hello, In the case of i.MX8MM we do not have a board to do the power measurement in each power rail as occurs in other boards such as i.MX 8M Plus Evaluation Kit Enabling Power Measurement. If you need to measure this you need to design a new SOM board to include these shut resistors or maybe you could try to rework the board to add a shunt resistor in a trace. You can use the schematics of the mentioned board as reference to add the resistors and do the measurement. i.MX 8M Plus Power Measurement Board Design Files Best regards. Re: How to measure power consumption for individual power rails on the i.MX 8M Mini LPD4-EVK? Okay, thanks.
查看全文
IMX415 相机移植 imx8mplus 您好, 我正在将索尼 IMX415 摄像头传感器移植到恩智浦 i.MX8M Plus (IMX8MP) 平台上。 在移植过程中,一些参考提到了通过 ISP 调整工具生成 XML 文件。 我的问题是 我真的需要生成 XML 文件才能让 IMX415 在 IMX8M Plus 上运行吗? 这些 XML 文件是否必须用于基本的传感器调试(通过 V4L2 / ISI 进行流式传输)? IMX8MPLUS Re: IMX415 camera porting imx8mplus 这是一个好问题。 仍然需要 xml 配置/校准文件,请参见此处: -AN13712: 800 万像素 ISP OS08A20 传感器 -AN13713: 800 万像素 ISP 新相机移植 我不知道为什么恩智浦最近删除了这个文件。 Re: IMX415 camera porting imx8mplus 我认为您需要 xml 文件。您可以先使用分辨率相同的设备,然后再进行微调。 另见: https://community.nxp.com/t5/i-MX-Processors/IMX8M-Plus-ISP/m-p/2220156/emcs_t/S2h8ZW1haWx8dG9waWNfc3Vic2NyaXB0aW9ufE1JN0JJTUJFRVZXMTA2fDIyMjAxNTZ8U1VCU0NSSVBUSU9OU3xoSw#M242307 Re: IMX415 camera porting imx8mplus 你好, ,关于 XML 文件,我还有一个疑问。 目前,我有用于相机传感器 OS08A20 的 XML 文件,能否将相同的 XML 文件用于 imx415 传感器? Re: IMX415 camera porting imx8mplus 感谢您的回复,但您说从最近的 isp-imx 项目中删除 xml 文件是什么意思?在移植新相机传感器时是否不再需要它们? Re: IMX415 camera porting imx8mplus 他们删除了近期 isp-imx 项目中的 xml 文件,但您可以从早期项目中获取这些文件: ,将 xx 替换为以前的版本: isp-imx-4.2.2.xx.0.bin 例如检查: https://www.nxp.com/lgfiles/NMG/MAD/YOCTO/isp-imx-4.2.2.18.0.bin https://www.nxp.com/lgfiles/NMG/MAD/YOCTO/isp-imx-4.2.2.20.0.bin 等... Re: IMX415 camera porting imx8mplus 如何获取 XML 文件?如果你有任何想法,请告诉我。对于 OS08A20,我看到一个文件名为"Sensor0_Entry_os08a20.cfg" 的文件,文件中包含: name="os08a20" drv ="os08a20.drv" mode= 0 [mode.0] xml ="OS08a20_8M_10_1080p_linear.xml" dwe ="dewarp_config/sensor_dwe_bypass_1080P_config.json" [模式.1] xml ="OS08a20_8M_10_1080p_hdr.xml" dwe ="dewarp_config/sensor_dwe_bypass_1080P_config.json" [模式.2] xml ="OS08a20_8M_10_4k_linear.xml" dwe ="dewarp_config/sensor_dwe_bypass_4K_config.json" [模式.3] xml ="OS08a20_8M_10_4k_hdr.xml" dwe ="dewarp_config/sensor_dwe_bypass_4K_config.json 我的疑问是,这些 json 文件有必要吗? Re: IMX415 camera porting imx8mplus PS:还需要相应的 json 文件,因为无论如何都需要配置广角鱼眼畸变校正模块,即使你将其设置为绕过也是如此。
查看全文
闪存中的常数 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 我正在使用 IAR 工具集,设备是 MKE02Z64。我有几个常量值想放在闪存中(如果可能的话)以释放 RAM,但我找不到用 IAR 工具实现的方法。 最初,我使用的只是一个相当标准的:const uint16_t foobar; 这样一来,foobar 仍然处于数据内存中。我接下来试了试(根据我在网上找到的资料):const volatile uint16_t foobar @"FLASH"; 这没有产生任何错误或警告,但 foobar 仍在数据内存中,而不是代码内存中。 能做到吗? 谢谢! Re: const in flash memory Great explanation of how `const` works when stored in flash memory, especially for embedded systems where every byte matters. It’s interesting how efficient memory placement can tighten performance without changing logic. I recently explored similar structured info on Cass County Justice while researching data storage and organization best practices. Posts like this are helpful for bridging theory with real-world application. 很好地解释了 “const” 在闪存中存储时的工作原理,特别是对于每个字节都很重要的嵌入式系统。有趣的是,在不改变逻辑的情况下,高效的内存布局可以提高性能。最近,我在研究数据存储和组织的最佳实践时,在卡斯县司法局 探索了类似的结构化信息。这样的帖子有助于将理论与实际应用相结合。 Re: const in flash memory <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 看来 Mark Butcher 是对的--我查看了链接器的输出,实际上,const 存在闪存中。让我感到不解的是,生成的映射文件显示 const 为"Data" ,而不是"Code" ,我以为它说的是内存部分,而不是实际的数据类型。 感谢您的回复! Re: const in flash memory <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 嗨,戴夫、 请查看以下示例,了解如何将 Const 置于 IAR IDE 软件的 Flash 地址。 在 *.icf 文件中定义一个 [.我的参数] 部分的起始地址,并将该部分置于 ROM 内存中: 定义符号 __region_FlexNVM_start__ = 0x10000000; 置于 mem:__region_FlexNVM_start__ { 只读部分 .myparameter}; 在代码文件 (*.c) 中,将数据放入该部分: const char parameter1[16] @".myparameter"= {0x0, 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0xA, 0xB, 0xC, 0xD, 0xE, 0xF}; IAR 在专用地址中放置变量的另一种方法: #pragma location=0x3000 const int test1 = 1; const int test2 @ 0x3004 = 2; 然后,我在地图文件中找到了以下结果: test1 0x00003000 0x4 数据 GB hello_world.o[1] test2 0x00003004 0x4 数据 GB hello_world.o[1] 如果我使用以下代码 #pragma location=0x3000 const int test1 = 1; const int test2 = 2; 然后只把 test1 变量放在 0x3000,把 test2 放在另一个地方,映射结果如下: test1 0x00003000 0x4 数据 GB hello_world.o[1] test2 0x000016ec 0x4 数据 GB hello_world.o[1] 将变量放入专用地址的另一种方法: 在 .icf文件定义的内存区域,如 定义符号 __ICFEDIT_region_ROM_DATA_start__ = 0x0003F800; 定义符号 __ICFEDIT_region_ROM_DATA_end__ = 0x0003FFFF; 定义区域 ROM_DATA_region = mem:[从 __ICFEDIT_region_ROM_DATA_start__   to __ICFEDIT_region_ROM_DATA_end__]; 置于 ROM_region { 只读,代码块重定位}; 在 C 代码中,例如 #define NVM_DATA _Pragma("location=\"NVM_DATA\"" ) NVM_DATA 常量 int test1 = 1; NVM_DATA const int test2 = 2; _Pragma("location=\"NVM_DATA\"" ) 与 #pragma location="NVM_DATA 相同。" 希望能有所帮助。 祝您愉快, 、 马辉 ----------------------------------------------------------------------------------------------------------------------- 注:如果本帖回答了您的问题,请点击正确答案按钮。Thank you! ----------------------------------------------------------------------------------------------------------------------- Re: const in flash memory <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 你好,戴夫 @"FLASH" 仅用于 volatile 常量。 IAR(默认)行为是将常量(全局和静态)放入 Flash,尽管严格来说,const 关键字意味着该变量具有只读属性,而不是它位于特定的内存区域中(尽管嵌入式系统通常会像这样工作是有感知)。 例如 static const unsigned char usb_language_string[] = {4, DESCRIPTOR_TYPE_STRING, LITTLE_SHORT_WORD_BYTES(UNICODE_LANGUAGE_INDEX)}; 静态常量 unsigned char manufacturer_str[] = {10, DESCRIPTOR_TYPE_STRING, 'M',0, 'a',0, 'n',0, 'u',0}; static 常量 unsigned char product_str[] = {16, DESCRIPTOR_TYPE_STRING, 'M',0, 'y',0, ' ',0, 'P',0, 'r',0, 'o',0, 'd',0}; 静态常量 unsigned char serial_number_str[] = {10, DESCRIPTOR_TYPE_STRING, '0',0, '0',0, '0',0, '1',0}; static const unsigned char config_str[] = {10, DESCRIPTOR_TYPE_STRING, 'C',0, 'o',0, 'n',0, 'f',0}; static 常量 unsigned char interface_str[] = {8, DESCRIPTOR_TYPE_STRING, 'I',0, 'n',0, 't',0}; 静态常量无符号 char *ucStringTable[] = {usb_language_strring, manufacturer_str, product_str, serial_number_str, config_str, interface_str}; 地图显示 usb_language_string 0x00003d24 manufacturer_str 0x00003d28 product_str 0x00003d34 serial_number_str 0x00003d44 config_str 0x00003d50 interface_str 0x00003d5c ucStringTable 0x1ffff11c 请注意,除了最后一个阵列外,其他阵列都放入了闪存。我无法解释为什么规则会有一些例外,而你的特殊情况可能就是这样的例外,不管是出于什么原因。 也许最好直接联系 IAR,因为我也找不到控制最后几个剩余异常的方法。幸运的是,就我所见,它只影响到极少数这类东西。 此致 Mark Kinetis:µTasker Kinetis 支持 KE:支持 µTasker FRDM-KE02Z/支持 µTasker FRDM-KE02Z40M/支持 µTasker FRDM-KE06Z 欲获得完整的"开箱即用" Kinetis 体验并加快产品上市时间
查看全文
Problem of the CAN sampling point test value being too small for S32K3 Hi, NXP When developing with S32K311, an external crystal oscillator of 16 MHz is selected. When configuring CANFD, the CAN clock source uses the AIPS_PLAT_CLK at 60 MHz. 80% sampling point is configured for the data field, and TDC is enabled. However, the actual measured sampling point in CANOE can only reach 72%. This issue also occurs in tests on other models such as the S32K312 and S32K342. The following is one of our configurations where we set the sampling points and test data. We configured the sampling point to be 76%, but the actual test result was 67%. Best Regards, xianlong Re: Problem of the CAN sampling point test value being too small for S32K3 Hi@wuxianlong Could you please share your project, i will take time to test it. Re: Problem of the CAN sampling point test value being too small for S32K3 Hi, @Senlent  We have modified multiple configurations. Under the condition that S32K3 is configured to 80%, the best result tested by CANoe is 72% Best Regards, xianlong Re: Problem of the CAN sampling point test value being too small for S32K3 Hi@wuxianlong For CAN FD data phase the latest possible sample point must be set in CANoe. Then the VH6501 sends frames and lengthens the individual bits by one tick after each interval. This seems to be a configuration issue with your VH6501. You can try modifying the parameters here to 70%, 76.667%, and 80% and then testing again. Re: Problem of the CAN sampling point test value being too small for S32K3 Hi,@Senlent  We consulted several experienced engineers. They described that there are also problems with the small sampling point test in S32K1 and K3, and this problem may not be strongly related to the MCU.However, the test results vary when different testing instruments are used. When using CANoe for testing, the test results are all on the low side. They suggest that the sampling point configured for S32K3 can be appropriately increased under the actual test requirement of 80%. You can use any NXP demo to conduct a test, and this phenomenon should be reproducible. Best Regards, xianlong Re: Problem of the CAN sampling point test value being too small for S32K3 Hi@wuxianlong This should still be a testing issue, not caused by the MCU. However, I will spend some time doing some simple tests. I will probably use an oscilloscope to test directly, which should be the most accurate measurement method. Re: Problem of the CAN sampling point test value being too small for S32K3 Hi,@Senlent  If you have more convincing results, please share them with us as well. We used some other instruments for testing, and the obtained sampling points are relatively close to what we expected in the settings. However, for customers, CANoe has a very high level of industry recognition. Best Regards, xianlong Re: Problem of the CAN sampling point test value being too small for S32K3 Hi@wuxianlong It's possible that the client's tests are flawed; please trust your own testing. I will take some time to conduct a few tests, but this isn't a priority for me and may take a few days to get back to you. Re: Problem of the CAN sampling point test value being too small for S32K3 ok Re: Problem of the CAN sampling point test value being too small for S32K3 Hi@wuxianlong I'm sorry, I cannot perform this test. I do not have suitable interference equipment to conduct it, and the test results in the FLEXCAN report already prove that the test passed. I can send you the relevant proof privately. Re: Problem of the CAN sampling point test value being too small for S32K3 Thank you very much.
查看全文