Multi Source Translation Content

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

Multi Source Translation Content

讨论

排序依据:
CAN UDSアップデートのためのS32K144統合ブートローダ構成 こんにちは、 私は、S32 Design Studio を使用して、S32K144 EVB 上の NXP Unified Bootloader ソース コードを操作しています。私の目的は、MCU にブートローダを統合し、UDS を使用して CAN 経由でアプリケーション ファームウェアを更新することです。ブートローダーをフラッシュする前に、ソース ファイルまたは構成を変更する必要があるかどうかを確認したいと思います。たとえば、CAN ID やボーレートなどの CAN パラメータを設定したり、S32K144 EVB の HAL/ドライバー移植ファイルを変更したりしますか?または、ブートローダーを何も変更せずにそのまま EVB にフラッシュして評価することはできますか? ブートローダをプログラミングした後、それが正しく実行されていることを確認し、CAN 経由でアプリケーションのフラッシュをテストしたいと思います。ブートローダ モードを強制する方法、ブートローダの実行を確認する方法 (UART ログ、CAN 応答、デバッガなど経由)、ブートローダがアプリケーションにジャンプする方法など、推奨される検証手順について説明していただけますか? さらに、正しいアプリケーション フラッシュ開始アドレス、リンカー設定、ベクター テーブルの場所、必要なスタートアップ コードの変更など、ブートローダーで動作するようにアプリケーション プロジェクトを構築する方法に関するガイダンスも必要です。最後に、S32K144 を使用した UDS フラッシュに使用される一般的な PC 側ツールと、CAN 経由で統合ブートローダをテストするための推奨 CAN インターフェース ハードウェアについて知りたいと思います。 Re: S32K144 Unified Bootloader Configuration for CAN UDS Update こんにちは@padmaja 、 残念ながら、コミュニティで共有されている統合ブートローダーは非公式のデモ版のみ提供されています。 現状のまま 保証もサポートもありません。現在、このデモをサポートするリソースがありません。ドキュメントを通じてご質問にお答えするよう努めますが、フォローアップが表示された場合は、代わりにサポート ページにお問い合わせください。 アプリケーションを MCU にフラッシュし、ECU-BUS 機能のテストを開始できます。CAN ID、ボーレートなどを変更する必要はありません。両方を参照できます 統合ブートローダ – ユーザーガイドとUDS ブートローダ実装ガイド。 Open Bus Toolを使用する前に、CANブートローダをMCUにダウンロードする必要があります。これは、S32DSを使ってプロジェクトをコンパイルすることで実行できます。また、コミュニティ投稿「 HOWTO: S32 Design Studioを使用してマイクロコントローラに個別のelf/srec/hexファイルをダウンロードする」に記載されているように、elf/binaryファイルをアップロードすることもできます。 Open Bus Toolを使用すると、CANバス経由でアプリケーションをダウンロードできます。PEAK CANバスインターフェースをサポートしています。APPプロジェクトは統合ブートローダパッケージに含まれています。 ツールで読み込む必要があるJSONファイルも存在します。このJSONファイルには、フラッシュドライバ(flash_api.bin)とAPPファームウェア(APPファームウェアのフォーマットはS19/hex/binary)に関する情報が含まれています。 よろしくお願いします、 ジュリアン
查看全文
i.MX RT1060 API の LPSPI_MasterTransferEDMA は 24 ビットのフレーム サイズをサポートしていませんか? LPSPI を使用して DMA 経由で 24 ビット フレームを書き込もうとしています。アプリケーションは重要ではありませんが、私の例では、メモリから外部 DAC にデータを送信することです。私はこれを DMA で動作させたいと思っています。なぜなら、最終的には TCD のリンク リストを PIT と一緒に使用して、CPU オーバーヘッドなしで DAC を継続的に更新するためです。これは外部 ADC および DAC を使用する一般的なアプリケーションです。16 ビット DAC/ADC には 24 ビットのフレーム要件があることも一般的です (上位バイトはコマンド用、下位バイトはデータ用)。uint8_t データを使用して転送を 3 バイトに分割するのではなく、uint32_t データを使用して 24 ビットのフレーム サイズで送信し、先頭バイトを無視します。 さて、LPSPI と DMA の構成に移ります。 1.imxRT1060 SDK の API LPSPI_MasterInit 関数の lpspi_master_config_t 構造を使用すると、 bitsPerFrame を 24 に設定できます。DMA を使用せずに標準転送を行う場合、これは問題ではありません。 2. ただし、API の LPSPI_MasterTransferEDMA 関数で DMA を使用する場合、24 ビット フレーム サイズのケースは eDMA ハードウェアによって処理またはサポートされませんか?LPSPI_MasterTransferEDMALite では、DMA 転送幅は edma_transfer_config_t 構造体で設定されます。具体的には、srcTransferSize フィールドと destTransferSize フィールドは、SPI フレーム サイズ (bytesPerFrame) から導出される bytesEachRead 値と bytesLastWrite 値に基づいて構成されます。 /* LPSPI_MasterTransferPrepareEDMALite */ uint32_t bytesPerFrame = ((base->TCR & LPSPI_TCR_FRAMESZ_MASK) >> LPSPI_TCR_FRAMESZ_SHIFT) / 8U + 1U; if (bytesPerFrame <= 4U) { handle->bytesEachWrite = (uint8_t)bytesPerFrame; // for 24bit frames = 3 handle->bytesEachRead = (uint8_t)bytesPerFrame; // .... handle->bytesLastRead = (uint8_t)bytesPerFrame; // .... } /* now back in LPSPI_MasterTransferEDMALite */ switch (handle->bytesEachRead) //bytes each transfer { case (1U): transferConfigRx.srcTransferSize = kEDMA_TransferSize1Bytes; transferConfigRx.minorLoopBytes = 1; if (handle->isByteSwap) { addrOffset = 3; } break; case (2U): transferConfigRx.srcTransferSize = kEDMA_TransferSize2Bytes; transferConfigRx.minorLoopBytes = 2; if (handle->isByteSwap) { addrOffset = 2; } break; case (4U): transferConfigRx.srcTransferSize = kEDMA_TransferSize4Bytes; transferConfigRx.minorLoopBytes = 4; break; default: transferConfigRx.srcTransferSize = kEDMA_TransferSize1Bytes; transferConfigRx.minorLoopBytes = 1; assert(false); break; } デフォルトのケースが発生し、3 バイトのケースは処理されないためエラーが発生します。EDMAハードウェアは3バイト転送をサポートしていますか?基本的に、uint32_tのデータとフレームを3バイトとして扱い、最上位バイトを無視してDMA転送を行いたいのですが、可能ですか? Re: i.MX RT1060 API's LPSPI_MasterTransferEDMA does not support 24bit framesize? こんにちは@azoneさん、 弊社の製品にご興味をお持ちいただき、またコミュニティをご利用いただき誠にありがとうございます。 次のリンクを確認してください。eDMA は 1、2、4、8、16、32、64 バイトの転送サイズをサポートしており、24 ビット (3 バイト) の転送サイズはサポートしていないことが説明されています。 MCUXpresso SDK APIリファレンスマニュアル: EDMA: 拡張ダイレクトメモリアクセス (eDMA) コントローラドライバ よろしくお願いいたします。 メイリュー Re: i.MX RT1060 API's LPSPI_MasterTransferEDMA does not support 24bit framesize? わかりました。確認してくれてありがとう。これで、動作させるために時間を無駄にすることがなくなりました。したがって、唯一の方法は、すべてをuint8_tデータとしてkLPSPI_MasterPcsContinuousで3バイトとして送信することです。これは他のすべてのペリフェラルでも同じ方法で実行しているので問題ありませんが、16ビットDAC実装の場合は不要なオーバーヘッドが発生します。ありがとうございます。
查看全文
S32K314 HSE_FW_0.2.55.0 HSE_FW_0.2.55.0 リリース ノートでは、0.2.55.0 バージョンで次の問題が修正されました: SHE KEY をキー カタログ内の正しいグループに揃える。 私はSHEキーを使用しているので、この問題の影響が何であるかを知りたいです。また、ECUのhseを0.2.40.0から0.2.55.0にアップデートしたい場合、この問題はSHEキーの使用に影響しますか?[ECUにHSE(0.2.40.0)がインストールされ、init catelogがあり、SHEキーが書き込まれ、HSEサービス業者によってのみHSEバージョンが更新されます]。 S32K3 Re: S32K314 HSE_FW_0.2.55.0 こんにちは、ジアユさん SHE キー グループのキー サイズ数が 1 を超える場合、HSE FW 0.2.55.0 フル メモリ更新後に RAM キー カタログ フォーマット サービスが失敗しました。HIS-SHE 仕様には RAM キーが 1 つしかないため、K1 CSEc にも RAM キーが 1 つあります。 クリスマス休暇期間中は、サポートの応答時間は通常より長くなる場合がありますのでご了承ください。場合によっては、ご要望への対応が新年以降になることもあります。ご理解のほどよろしくお願いいたします。 よろしくお願いします、 ロビン --------------------------------------------------------------------------------- 注記: - この投稿があなたの質問への回答である場合は、「解決策として承認」ボタンをクリックしてください。ありがとう! - Threadは最後の投稿から7週間フォローされます。それ以降の返信は無視されます。 後ほど関連する質問がある場合は、新しいThreadを開いて、閉じたThreadを参照してください。 ---------------------------------------------------------------------------------
查看全文
What`s the meaning of the 'P1' in the type of "LPC1769FBD100/P1" Hi All, Recently, I received a pack of LPC1769 chips. The strange thing is that the number at the end of it is P1, which seems a little special, and I have not been able to find out the specific meaning and manual of LPC1769 as a P1. Therefore, I came here specially to consult everyone and hope to get your help. Thanks~~~ LPC1769FBD100  大家好, 最近我收到一包LPC1769芯片,奇怪的是它的末尾编号是P1,似乎有些特殊,而且未能查到有关于LPC1769这款P1的具体含义以及手册。 所以,特地前来,咨询大家,希望得到大家的帮助。谢谢大家。 LPC1769FBD100  Note: Attached image was removed. LPC17xx Re: What`s the meaning of the 'P1' in the type of "LPC1769FBD100/P1" Hi @Kuroky_Rasum, P1 is an internal identifier and does not impact the functionality of the MCU. You can find more details in the following community post. Difference between LPC1769FBD100, 551 / LPC1769FBD100K / LPC1769FBD100/P1K - NXP Community Best Regards, Pablo
查看全文
S32K348 ECC 设置 你好 我有三个问题需要帮助回答,谢谢大家 1. 能否提供 ecc 样品 2. 如何验证功能? Re: S32K348 ECC set 你好 ECC 测试是 SAF/SPD 代码包,软件包的 emCEM 驱动程序的一部分。 您会发现这些例子都有复杂的验证检查。 https://www.nxp.com/design/design-center/software/functional-safety-software/s32-safety-software-framework-saf-and-safety-peripheral-drivers-spd:SAF 如果您更喜欢自己的代码/硬编码测试,请参阅参考手册: 先修课程 RTD 时钟启动时,ME 启用 EIM 和 ERM 的时钟。如果 EIM 调节器没有响应,几乎总是时钟门控问题--首先启用分区/COFB 时钟。 启动代码会在读取之前初始化 SRAM 的 ECC(直写一次),否则第一次读取可能会触发信号多位错误。(Zephyr& SEGGER 笔记强调这是一个常见的陷阱)。 确定与要访问的存储器主控器/区域相对应的 ERM 通道(例如,CM7_0 读取 SRAM)。通道映射位于 RM 中;公开教程总结了这一概念。 高级流程: 启用 EIM 的时钟& ERM 配置 ERM:启用相关通道的 "单位纠正 "中断和 "多位错误 "中断 设置 EIM:选择 SRAM 通道,为注入设置一个数据/检查位(单比特) 读取该内存区域的任何地址 → ERM 应报告可更正的错误 清零,然后在 EIM 中设置两个位(双位) 再读一遍 → 预计是不可纠正的 → 你的处理程序应该捕获/控制故障 可选择擦除(重写)受影响的位置,以清除已纠正的综合症 顺祝商祺! Peter
查看全文
Scarthgap 6.6.52 上的 iMX6ULL 以太网 我已经迁移到使用 6.6.52 内核的 Yocto 版本,我正在努力让以太网正常运行。在迁移时,我注意到 TX_CLK 线路是一个恒定值,而不是正弦时钟。我曾尝试从元第三方层构建多个板,但是我一直看不到时钟信号。 如果我的配置需要更改,请告知: pinctrl_enet1:enet2grp { fsl、引脚 =< MX6UL_PAD_GPIO1_IO07__ENET1_MDC 0x1b0b1 MX6UL_PAD_GPIO1_IO06__ENET1_MDIO 0x1b0b1 MX6UL_PAD_ENET1_RX_EN__ENET1_RX_EN0x1b0b0 MX6UL_PAD_ENET1_RX_ER__ENET1_RX_ER 0x1b0b0 MX6UL_PAD_ENET1_RX_DATA0__ENET1_RDATA000x1b0b0 MX6UL_PAD_ENET1_RX_DATA1__ENET1_RDATA01 0x1b0b0 MX6UL_PAD_ENET1_TX_EN__ENET1_TX_EN 0x1b0b0 MX6UL_PAD_ENET1_TX_DATA0__ENET1_TDATA000x1b0b0 MX6UL_PAD_ENET1_TX_DATA1__ENET1_TDATA01 0x1b0b0 MX6UL_PAD_ENET1_TX_CLK__ENET1_REF_CLK1 0x4001b031 > ; }; &fec1 { pinctrl-names ="default"; pinctrl-0 =<& pinctrl_enet1>; phy-mode ="rmii"; phy-handle =<& ethphy2>; status ="okay" ; mdio { #address-cells =<1>; #size-cells =<0> ; ethphy2: ethernet-phy @2 {cl ocks = < & clks IMX6UL_CLK_ENET2_REF >; 时钟名称 = " rmii-ref "; reg = <1>;};};相同配置在 5.5.15 版上运行,没有这些行:时钟 = < & clks imx6UL_CLK_ENET2_REF >; clock-names = " rmii-ref "; 此外,在查看更改时,我注意到 Yocto 版本之间的 imx6ul.dtsi 文件发生了以下变化:fec2:以太网 @20b4000 {兼容 = " fsl,imx6ul-fec ", " fsl, imx6q-fec "; reg = <0x020b4000 0x4000>;中断 名称 = " int0 "," pps ";中断 = ,< GIC_SPI 121 IRQ_TYPE_LEVEL_HIG H > ; 时钟 = < & clks IMX6UL_CLK_ENET >, < & clks imx6UL_CLK_ENET_AHB >, < & clks imx6UL_CLK_CLK_ENET_PTP >, < & >, < & 点击 IMX6UL_CLK_ENET2_REF_125M >; 时 钟名称 = " ipg ", " ahb ", " ptp ", " enet_clk_ref ", " enet_out "; fsl, num-tx-queues = <1>; fsl,num-rx-queues = <1>; fsl,停止模式 = < & gpr 0x10 4 >;fsl,magic-packet; fsl,wakeup_irq = <0>;状态 = " 禁用 ";};变成: fec2:以太网@ 20b4000 { 兼容 = " fsl,imx6ul-fec "," fsl,imx6q-fec ";reg = <0x020b4000 0x4000>;中断名称 = " int0 "," pps ";中断 = < GIC_SPI 120 IRQ_TYPE_LEVEL_HIGH >, ; 时钟 = < & clks imx6UL_CLK_ENET >, < & clks imx6UL_CLK_CLK_ > < &ENET_PTP >, 86> & clks IMX6UL_CLK_ENET2_REF_SEL >; 时 钟名称 = " ipg ", " ahb ", " ptp ", " enet_clk_ref "; fsl, num-tx-queues = <1> <1> fsl,num-rx-queues = ; fsl,停止模式 = < & gpr 0x10 4 >;fsl,magic-packet; fsl,wakeup_irq = <0>; 状态 = " 已禁用 ";};感谢您的提前帮助。 Re: iMX6ULL Ethernet on Scarthgap 6.6.52 以太网行为, 根 @imx6ul:~# ifconfig eth0:flags=4099 < UP、BROADCAST、MULTU 1500 inet6 fe80:: 230:64 ff: fe3f: f7ff prefixlen 64 scopeid 0x20 eth er 00:30:64:3 f: f7: ff txqueuelen 1000(以太网)RX 数据包 0 字节 (0.0 B) RX 错误 0 已丢弃 0 溢出 0 帧 0 TX 数据包 12 字节 1558 (1.5 KiB) TX 错误 0 丢弃 0 超限 0 载波 0 载波 0 碰撞 0 > lo:flags=73 mtu 65536 inet 127.0.0.1 网络掩码 255.0.0.0 inet6:: 1 prefixlen 128 scopeid 0x10 loop txqueuelen 1000(本地 环回) RX 数据包 93320 字节 7092320 (6.7 MiB) RX 错误 0 丢弃 0 帧 0 个 TX 数据包 93320 字节 70320 字节 7092320 (6.7 MiB) RX 错误 0 丢弃 0 帧 0 个 TX 数据包 93320 字节 92320 (6.7 MiB) TX 错误 0 掉落 0 超支 0 载波 0 次碰撞 0 root @imx6ul:~# ethtool eth0 eth0 的设置: 支持的端口:[TP MII] 支持的链接模式:10BaseT/Half 10BaseT/Full 100BaseT/Half 1000BaseT/全 1000BaseT/全部 1000BaseX/完全支持暂停帧使用:对称 支持自动协商:未报告广告链接模式:10BaseT/Half 10BaseT/Full 100BaseT/Half 100BaseT/Full 100BaseT/Full 100BaseT/Full 100BaseT/Full 100BaseT/Full 100BaseT/Full 100BaseT/Full 100BaseT/Full 全部 1000BaseX/Full 广告暂停帧使用情况:对称 广告自动协商:是 广告的 FEC 模式:未报告速度:未知! 双工:未知! (255) 自动协商:开启 主从 cfg:首选从机 主从状态:从机 端口:双绞线 PHYAD:0 收发器:外部 MDI-X:开启(强制) 支持唤醒:g Wake-on:检测到了 d Link:否 在所有情况下,以太网电缆和硬件均使用先前的电路板支持包版本进行了正确测试。 Re: iMX6ULL Ethernet on Scarthgap 6.6.52 你好 nxp, 我们在将 imx6ul 电路板支持包 从 gatesgarth(5.10)升级到 scarthgap(6.6.52)时遇到了同样的问题。使用的 dts 和 dtsi 已附上,对旧的 电路板支持包(5.10)的 pinctrl 和 reg 属性的微小改动也同样适用。 启动后主板能够分配 ipv6 但是 dmesg 会出现以下紧急情况(忽略除 fec 以外的任何其他消息) [27.822747] Micrel KSZ8081 或 KSZ8091 2188000.ethernet-1:00:attached PHY driver (mii_bus:phy_addr=2188000.ethernet-1:00, irq=POLL) [ 28.170432] flexcan 2094000.can can1: bit-timing not yet defined [ 29.624259] flexcan 2090000.can can0: bit-timing 尚未定义 [ 29.929672] FEC 2188000.Ethernet eth0: Link is Up - Unknown/Unknown - flow control off [ 30.969118] FEC 2188000.ethernet eth0: Link is Down [ 34.840743] weston[580]: memfd_create() 被调用,但未设置 MFD_EXEC 或 MFD_NOEXEC_SEAL [ 37.241251] fec 2188000.ethernet eth0: Link is Up - Unknown/Unknown - flow control off [ 38.249410] FEC 2188000.ethernet eth0: Link is Down [ 39.290339] Micrel KSZ8081 or KSZ8091 2188000.ethernet-1:00:主/从解析失败 [ 39.290406] ------------[ cut here ]------------ [ 39.290429] WARNING: CPU:0 PID: 126 at /drivers/net/phy/phy.c:1259 phy_state_machine+0xb0/0x2e8 [ 39.290546] phy_check_link_status+0x0/0xc0: returned: -67 [ 39.290614] 链接到的模块: caam_jr caamkeyblob_desc caamhash_desc caamalg_desc crypto_engine authenc libdes caam secvio error 8021q [ 39.290858] CPU:0 PID: 126 Comm: kworker/0:5 Not tainted 6.6.52-lts-next-gcec723603de8-dirty#1 [39.290911] 硬件名称:飞思卡尔 i.MX6 Ultralite(设备树)[39.290943] 工作队列:events_power_efficience phy_stack_machine [39.291050] unwind_backtrace 来自 show_stack+0x14 [39.291144] 来自 dump_stack_lvl+0x40/0xx14 [39.291144] show_stack 4c [39.291252] 来自 __warn+0x94/0xc0 [ 39.291357] __ 的 dump_stack_lvl 来自 warn_slowpath_fmt+0x130/0x1bc [39.291443] warn_slowpath_fmt 来自 phy_state_machine+0xstate_machine +0x140/0x290x290 8 [39.291634] process_one_w orkfrom worker_ thread+0x27c/0x4ac [39.291712] worker_thread 来自 kthread+0x110/0x12c [39.291819] kthread 来自 ret_from_fork+0x14/0x28 [39.291915] 异常堆栈 (0xa0d05fb0 到 0xa0d05ff8) [39.291966] 5fa0:00000 0000 00000000 00000000 00000000 [39.292021] 5fc0:00000000 00000000 00000000 00000000 00000000 00000000 [39.292069] 5fe0:00000000 00000000 00000000 [39.292099]---[结束跟踪 00000000000000]---注意:imx6ul.dtsi 未作任何更改并用作比如来自 evk。 对此有任何见解将不胜感激。 Re: iMX6ULL Ethernet on Scarthgap 6.6.52 我在配备 i.MX6 双处理器的 Digi CC6[N] SBC 上从 Thud / DEY-2.6 / 4.9.212 迁移到 Scarthgap / DEY-5.0 / 6.6.52 时遇到了完全相同的问题。 我已验证了所有其他嵌入式系统功能(GPIO、USB、串行等),但 FEC 以太网没有出现。和你一样,我怀疑其中的设备树和/或时钟树出了点问题。这个帖子似乎还表明,可能还有一个与 RGMII(?)时钟有关的驱动程序问题。但是,我已经测试了 “fec_probe” 和 “fec_enet_init”,两者都没有被调用,所以主要的假设是设备树,因为看来至少会在匹配的 DTB 条目上调用 “fec_probe”。 我进行的一项实验是将 Thud / DEY-2.6 / 4.9.212 的 DTB 与 Scarthgap / DEY-5.0 / 6.6.52 内核结合使用,但这项实验毫无结果。结果系统只运行到 "启动内核...... "就挂起了。 我的下一个实验是运行find /sys/kernel/debug/clk/ -type f -print -exec cat {}\;` 在 4.9.212 和 6.6.52 系统上比较时钟树。 Re: iMX6ULL Ethernet on Scarthgap 6.6.52 @Manuel_Salas 我使用了调整后的 IMX6ULL 和 IMX6UL dtsi 文件,以便与之前的 dtsi 基本文件保持一致。两台设备的以太网连接都无法正常工作。反转 fdt 文件后,我们的以太网节点基本相同,但功能没有改变。设备确实会接收 fec,但是它无法获取 IP 地址。此外,当使用ethtool时,两个设备看起来相同。 以下是两个以太网节点(我删除了两个片段中的 mac 地址) 工作以太网(6.1.15内核) : 以太网@20b4000{ 本地计算机地址 = []; 兼容 = "fsl、imx6ul-fec", "fsl,imx6q-fec"; 注册 =<0x20b4000 0x4000>; 中断名 = "中断名", "pps"; 中断 =<0x00 0x78 0x04 0x00 0x79 0x04>; 时钟 =<0x01 0x90 0x01 0x91 0x01 0x30 0x01 0x2e 0x01 0x2e>; 时钟名 = "ipg", "ahb", "ptp", "ENET_CLK_REF", "enet_输出"; fsl,num-tx-queues =<0x01>; fsl,num-rx-queues =<0x01>; fsl,停止模式 =<0x0b 0x10 0x04>; fsl、magic-packet; fsl,唤醒 IRQ =<0x00>; 状态 = "好的"; pinctrl-names = "默认"; pinctrl-0 =<0x0d>; 网络模式 = "rmii"; phy-handle =<0x0e>; phy-reset-gpios =; phy-reset-duration =; mdio{ #address-cells =<0x01>; #size-cells =<0x00>; 以太网-phy@1{ 兼容 = "ethernet-phy-ieee802.3-c22"; 注册 =<0x00>; phandle =<0x0e>; }; }; }; 以太网无法在 yocto 内核 6.6.52 上运行(使用了之前内核中的 dtsi 定义,该内核可在 6.1.15 上运行): 以太网@20b4000{ 本地计算机地址 = [2A A8 1C A9 84 C7] ; [2A A8 1C A9 84 C7] ; [2A A8 1C A9 84 C7]; 兼容 = "fsl、imx6ul-fec", "fsl,imx6q-fec"; 注册 =<0x20b4000 0x4000>; 中断名 = "中断名", "pps"; 中断 =<0x00 0x78 0x04 0x00 0x79 0x04>; 时钟 =<0x01 0x90 0x01 0x91 0x01 0x30 0x01 0x2e 0x01 0x2e>; 时钟名 = "ipg", "ahb", "ptp", "ENET_CLK_REF", "enet_输出"; fsl,num-tx-queues =<0x01>; fsl,num-rx-queues =<0x01>; fsl,停止模式 =<0x0c 0x10 0x04>; fsl、magic-packet; fsl,唤醒 IRQ =<0x00>; 状态 = "好的"; pinctrl-names = "默认"; pinctrl-0 =<0x0d>; 网络模式 = "rmii"; phy-handle =<0x0e>; phy-reset-gpios =; phy-reset-duration =; mdio{ #address-cells =<0x01>; #size-cells =<0x00>; 以太网-phy@1{ 兼容 = "ethernet-phy-ieee802.3-c22"; 注册 =<0x00>; phandle =<0x0e>; }; }; }; Re: iMX6ULL Ethernet on Scarthgap 6.6.52 @Manuel_Salas 我很抱歉,这是从 6.1.55 迁移过来的。(mickledore) to 6.6.52 (scarthgap) 好的,我明白了,那么更新后的 fec 配置应该是这样的: &fec1 { pinctrl-names ="default"; pinctrl-0 =<& pinctrl_enet1>; phy-mode ="rmii"; phy-handle =<& ethphy2>; status ="okay" ; mdio { #address-cells =<1>; #size-cells =<0> ; ethphy2: ethernet-phy@2 { clocks =<& clks IMX6UL_CLK_ENET2_REF_125M>; clock-names ="rmii-ref"; reg =<1>; }; }; }; 我曾尝试在 dtsi 文件中使用较早的 imx6ul 和 6ull 配置文件,但也没有成功。 Re: iMX6ULL Ethernet on Scarthgap 6.6.52 你好@Rashaad 希望你一切都好。 我对你正在使用或不使用的版本有点困惑,但我能看出主要区别在于使用了设备树 5.15.y: <&clks IMX6UL_CLK_ENET2_REF_125M>; 在较新的版本中,如您在设备树 6.6. y 上看到的那样使用: <&clks IMX6UL_CLK_ENET2_REF_SEL>; 你可以尝试将旧配置添加到新的设备树版本中。 顺祝商祺! 萨拉斯 Re: iMX6ULL Ethernet on Scarthgap 6.6.52 此外,版本为 6.5.15 Re: iMX6ULL Ethernet on Scarthgap 6.6.52 我很抱歉,针脚配置是正确的: pinctrl_enet2: enet2grp{ fsl,pins =< MX6UL_PAD_GPIO1_IO07__ENET2_MDC 0x1b0b0 MX6UL_PAD_GPIO1_IO06__ENET2_MDIO 0x1b0b0 MX6UL_PAD_ENET2_RX_EN__ENET2_RX_EN 0x1b0b0 MX6UL_PAD_ENET2_RX_ER__ENET2_RX_ER 0x1b0b0 MX6UL_PAD_ENET2_RX_DATA0__ENET2_RDATA00 0x1b0b0 MX6UL_PAD_ENET2_RX_DATA1__ENET2_RDATA01 0x1b0b0 MX6UL_PAD_ENET2_TX_EN__ENET2_TX_EN 0x1b0b0 MX6UL_PAD_ENET2_TX_DATA0__ENET2_TDATA00 0x1b0b0 MX6UL_PAD_ENET2_TX_DATA1__ENET2_TDATA01 0x1b0b0 MX6UL_PAD_ENET2_TX_CLK__ENET2_REF_CLK2 0x4001b031 >; };   &fec2{ pinctrl-names = "默认"; pinctrl-0 =<&pinctrl_enet2>; 网络模式 = "rmii"; phy-handle =<&ethphy1>; //phy-reset-gpios = < & gpio5 8 GPIO_ACTIVE_LOW >; //phy-reset-duration = <200>; 状态 = "好的"; mdio{ #address-cells =<1>; #size-cells =<0>; ethphy1: 以太网-phy@1{ 兼容 = "ethernet-phy-ieee802.3-c22"; 时钟 =<&clks imx6ul_clk_enet2_ref>; 时钟名 = "rmii-ref"; reg =<0>; }; }; }; Re: iMX6ULL Ethernet on Scarthgap 6.6.52 您好, 我也遇到了同样的问题。你找到解决办法了吗? 此致敬礼, Re: iMX6ULL Ethernet on Scarthgap 6.6.52 您好, 我也遇到了同样的问题。你找到解决办法了吗? 此致敬礼 Re: iMX6ULL Ethernet on Scarthgap 6.6.52 Hi tojo, 我们也遇到了同样的问题,但设法解决了。恩智浦建议我们首先检查时钟正弦波(没问题),还要验证i.MX6UL参考手册中的IOMUXC_GPR_GPR1寄存器,以确保其设置符合预期值。 在我们的案例中,问题与时钟无关,但排除它很有帮助。真正的问题是,在最新的电路板支持包中,PHY的RESET时间变得更加严格。我建议在板上启动后手动 PHY RESET 然后看看。 请注意,我们的板是使用基于 GPIO 的 PHY RESET 的自定义板,而 EVK 使用基于 SPI 控制器的 PHY RESET。 Re: iMX6ULL Ethernet on Scarthgap 6.6.52 嗨,Shanga,感谢您的回复。我会调查的。
查看全文
S32K3 FPU INF 和 NaN 异常 你好、 我正在尝试为 S32K314 芯片上的 FPU 设置例外情况,但我无法弄清楚如何捕捉某些情况。 1) 我试图捕捉溢出和导致 INF 的操作。但是,当 INF 是输入之一时,它会将输出设置为 INF,但不会设置任何标志。如何使用异常捕获以 INF 为输入之一的操作? 2) 我正试图使用异常捕获所有 NaNs(静噪和信号)。显然,我可以捕捉 SNaN,但如何使用异常捕捉 QNaN 呢?或者,我怎样才能让所有 NaNs 都是 SNaNs,或者让我捕捉到所有 NaNs。 谢谢、 约翰 Re: S32K3 FPU Exceptions for INF and NaN 1) INF 作为输入不会引起 IOC 或溢出,因为根据 IEEE-754 标准,它被认为是有效的。 对 INF 的操作可能无效: INF - INF → 无效,结果 = NaN(IOC 集)。 INF × 0 → 无效,结果 = NaN(IOC 设置)。 2)QNaN 不会引发异常;它们会静默传播。只有 SNaN 会引发无效操作条件。
查看全文
LWIP - S32G 中的 TCP/IP 协议栈 你好, 我目前想在 S32G-VNP-RDB2 板 SJA1110 交换机中配置 IPv6 这个 TCP/IP 堆栈包含 在 TCP/IP 堆栈中目前我使用的是 2.1.2版本 Netiface -- ENABLE IPv6 IP 网络 -- 为 IPv6 添加了基本配置 我正在尝试创建一个链接本地地址,我应该能够在任何需要的地方使用这个 IPv6 地址。下面是需要与此代码连接的代码,这样我就可以从交换机 1 的任何端口 ping IP 地址。 ip6_addr_t ipaddr_v6; s8_t chosen_idx; IP6_ADDR(&ipaddr_v6, PP_HTONL(0xFE800000), PP_HTONL(0x0), PP_HTONL(0x3DD79303), PP_HTONL(0x126c0df0)); netif_add_ip6_address(&netif, &ipaddr_v6, &chosen_idx); netif.ip6_addr_state[chosen_idx] = IP6_ADDR_VALID; 那么需要在哪里进行集成 在 TCP/IP 协议栈中还需要做哪些更改 阿特金森 敬上 Re: LWIP - TCP/IP stack in S32G 您好@chenyin_h 事实上,您所附的 TCP/IP 协议栈图像显示的是 2.0.0,但目前我使用的是 1.4.0。 显示为"S32G TCPIP STACK 1.0.4 D2310 示例项目". 因此,我想我需要将 TCP/IP 协议栈 2.0.0 ,请为我导航,我在哪里可以找到您在片段 中共享的 TCP/IP 文件? Atkinson Re: LWIP - TCP/IP stack in S32G 你好,@阿特金森 感谢您的回复。 1.由于软件管理器页面上没有该软件,也许它尚未公开,我建议首先使用 1.0.4 版。版本。 2.1.0.4 是 S32G TCP/IP 协议栈的内部版本,而不是 lwIP 的版本,使用的 lwIP 是 2.1.3、可以满足您的要求 BR 切宁 Re: LWIP - TCP/IP stack in S32G 嗨 @chenyin_h 谢谢你的回复!! 目前我能看到我的 TCP/IP 堆栈版本是 1.4.0 你显示的 TCP/IP 堆栈的图片是 2.0.0 版 汽车软件包管理器 | 恩智浦半导体 我在这里查看了 S32G2 平台的最大容量为 1.4.0 对于 IPv6 它至少需要 2.0.0 或更高版本。那么我在哪里可以找到软件包? 在内置 IPv6 之后你能详细说明一下吗。 在这种情况下,我们如何检查分配给该端口的 MAC 地址,更改 MAC 地址并深入配置? Atkinson Re: LWIP - TCP/IP stack in S32G 你好,@阿特金森 感谢您的回复。 1.好吧,我建议使用基于 GMAC 的 lwIP 演示,PFE 演示已经过时了,而且依赖关系也不好找。 可从以下页面找到 RDB2 的 lwIP 演示(GMAC)。 要获得它,您可能需要将恩智浦账户中恩智浦配置的 S32G TCPIP 堆栈和 FreeRTOS 软件包安装到您的 S32DS 中,安装后,请按: 然后,您就可以找到我提到的演示。 2.默认设置为 IPv4 地址,当前演示可能不直接支持 IPv6。但我认为 IPv6 可能是支持的,因为它只与堆栈本身有关,您可能需要在 lwIP 中启用它,并测试是否存在问题。 BR 切宁 Re: LWIP - TCP/IP stack in S32G 你好@chenyin_h 1.)GMAC 端口有一个 lwIP 演示。PFE 端口也有一个旧的演示。 您能分享这两个实现吗?LWIP 堆栈在这里扮演什么角色? 2.)从描述来看。看来你想使用 SJA1110 端口通过 LwIP 与其他网络设备通信? 实际上,我想介绍包括 IPv6 在内的 lwip 堆栈的基本功能,所以我想在任一 SJA1110/S32G 中测试其可行性。 因此,基本上我想使用 IPv6 来传输 ping 信息或数据。 Atkinson Re: LWIP - TCP/IP stack in S32G 你好,@阿特金森 谢谢您的帖子。 从 S32G 正式软件的角度来看,GMAC 端口有一个 lwIP 演示。PFE 端口也有一个旧的演示版,但不能用于最新版本的软件组合。对于 RDB2 的 SJA1110 端口,没有直接的示例/演示。 从描述来看看来你想使用 SJA1110 端口通过 LwIP 与其他网络设备通信? BR 切宁 Re: LWIP - TCP/IP stack in S32G 你好,@阿特金森 感谢您的回复。 您可以在恩智浦账户中查看是否可用,如果仍然不可用,可能是您的恩智浦账户尚未公开。 如前所述,1.0.4/2.0.0 是" S32GTCPIP STACK" 的版本号,而该协议栈基本上基于 lwIP2.1.3或更新的版本,因此我认为使用 1.0.4您提到的" S32GTCPIP STACK" 版本仍然符合您的要求。 BR 切宁 Re: LWIP - TCP/IP stack in S32G @Atkinson你能否更新一下你是否能在 s32g 上用 lwip 运行 tcpip,以及如何运行的? 🙂
查看全文
MCSPTR2AK396 套件 你好,我知道这个套件包括逻辑板和驱动板。我这里有一个控制器,想用它来控制驱动板。我的问题是:该套件中的驱动板接口是否支持使用杜邦电线连接到我自己的控制器?我的控制器与杜邦电线兼容。 Re: MCSPTR2AK396 kit 感谢您关注我们的产品并为我们的社区做出贡献。 在 MCSPTR2AK396 页面,您可以获取设计文件(包括 BOM),查看您提到的特定连接器。 另一方面,要将其他控制器板连接到反向器板,我们建议使用 S32SDEV-CON18,有关更多详细信息,请参阅以下文章的图 2.3.1 硬件设置: https://community.nxp.com/t5/NXP-Model-Based-Design-Tools/PMSM-Motor-Control-Application-for-S32K396-with-MBDT-and-Custom/ta-p/1830976 希望这些信息对您有所帮助
查看全文
MPC555LF8MZP40 こんにちは。(MPC555XX) がリストされているマルチプログラマーを持っています。MPC555LF8MZP40 を読み書きする必要があります。これまでにこれをやったことがある人はいますか? Re: MPC555LF8MZP40 USB-ML-UNIVERSAL-FX は、独自のプログラミング SW を使用してフラッシュできるはずです。 https://www.pemicro.com/products/product_viewDetails.cfm?product_id=15320180&productTab=5051 PeMicro サポートに相談することをお勧めします。 https://www.pemicro.com/support/index.cfm 歴史的には、以下のCodewarriorバージョンでサポートされています。 https://www.nxp.com/design/design-center/software/development-software/codewarrior-development-tools/codewarrior-legacy/codewarrior-development-studio-for-mpc5xx-classic-ide-v8-7:CW-MPC5XX および CodeWarrior USB TAP BDM プローブ。 ただし、この環境では Windows XP 以前のバージョンを使用する必要があります。 Re: MPC555LF8MZP40 このプロセッサの読み取りと書き込みに使用するプログラマを教えてください。 Re: MPC555LF8MZP40 これは明らかにECUプログラミング用のツールです。製造元にお問い合わせすることをお勧めします。 残念ながら、もっと良い方法はないと思います。 Re: MPC555LF8MZP40 Xhorse マルチプログラムプログラマー Re: MPC555LF8MZP40 使用したプログラマーを指定していただけますか?
查看全文
PN7642 RF Design-in Tips and Tricks Prerequities:  PN7642 design-in recommendations   1// Impedance tuning  PN76 family antenna design guide The target impedance is chosen based on the target application. If full power is required (e.g., POS terminals). The target impedance of 15-17 Ω is recommended. For lower power applications using ULPCD, the higher impedance is typically preferred, 30-50 Ω (symmetrical tuning).   2// Dynamic power control  PN7642 - Basic RF power limitation using DPC   3// H-Field check  There are given limits, especially for the maximum H-field radiated by the reader. Exceeding these limits might lead to destroying the NFC Card/NFC Tag.   The H-Field can be measured with the help of test equipment, as  ISO 10373-6 Test PICC EMVCo 3.0 Test PICC  For indication only, the customers can use "smart" Field Strength Probes as shown below :    Note: The most critical position occurs when the card is placed directly on the NFC antenna . In this case, if the H-field exceeds the maximum allowed level, the output power must be reduced using DPC settings. 4// HF Attenuator value  Turn on the RF Field with the DPC set and enabled from the previous step  Read the CLIF_RXCTRL_STATUS register and check the HF_ATT_VAL as shown below.  The value for the "unloaded" condition with full power shall be approximately 35-45dec.  If the value is out of this range, the customer is required to adjust the Rx resistors to reach this value.  5// Receiver settings  Check the "Power" range and Communication Range with the default settings provided by NXP.  Power Range -> The distance at which the NFC Tag can still generate its answer, but the NFC Reader does not see it  Communication Range -> The distance at which the NFC Tag can still communitate with the NFC Reader  Ideally, Power Range ≈ Communication Range Also, the NFC Reader should not generate any false communications as e.g., "HAL COLLISION ERROR".  The optimisation of the receiver can be done in the following way:  Enter DPC Calibration  Go to the "ARC" menu and "disable" the ARC algorithm This will force the IC to use the RX settings from the following Register/EEPROM SIGPRO_RM_TECH_REG DGRM_RSSI_REG   5.1// SIGPRO_RM_TECH_REG (RM_MF_GAIN parameter) This parameter basically defines the gain of the input amplifier.  Select SIGPRO_RM_TECH_REG  Switch "operation" to EEPROM and choose the required technology  Increase the RM_MF_GAIN to 0x02 (it depends on the setup).     5.2// DGRM_RSSI_REG (DGRM_SIGNAL_DETECT_TH_OVR_VAL parameter) This parameter defines a threshold from which the internal logic starts to decode the incoming signal.  If the threshold is too low or very close to the noise floor, the system can detect the noise as an NFC Communication.  It is therefore,  Threshold + margin > noise floor The best routine is to perform "Signal Detection Threshold" analysis. This can be done with the help of the NFC Cockpit (described in PN7642 design-in recommendations) As a result, the user can obtain the mean value of the "Noise," and suggested "DGRM_SIGNAL_DETECT_TH_OVR_VAL" threshold based on the inserted "Margin."  Maring (m) + Noise mean value (μ) = Threshold  6+16=23 Then this value shall be written in "DGRM_RSSI_REG" EEPROM as shown below.    6// ULPCD Settings  We recommend the following ULPCD Settings as a starting point.  ULPCD VDDPA should be chosen in such a way that the HF Attenuator value is not 0x00! The typical value for HF Attenuator in ULPCD is around 0x05-0x0B.   6.1// RSSI Threshold evaluation  For a proper RSSI Threshold selection, it is recommended to perform the ULPCD Calibration, e.g., 20 times, and check the "jitter" of the RSSI signal for your device.  If you see that the RSSI value is jittering, e.g., 1 unit as shown above. The absolute minimum threshold for this case is 2. However, it is always recommended to include adequate margin (To prevent false wake-ups).   Generally, the margin of 2 units is sufficient. So in this case, the optimum threshold will be 4. 
查看全文
多層スタック上のCLRC663レイアウト 皆さんこんにちは。 私は#CLRC663 を使用して 6 層 PCB を設計しています。アプリケーション ノート AN11019 (rev 1.5) を読むと、第 3.2 章「レイアウト推奨事項」に、CLRC663 評価ボードの下の GND プレーンに関する説明があります。GNDプレーンは基板の中間層にあります SW4301 - CLEV6630B v2.0 PCB では、マッチング回路の下に銅がありません。 前に述べたように、私は多層基板を持っており、マッチングコンポーネント(マッチングコンポーネントレイヤー1 - GNDレイヤー2)の下にGNDプレーンを配置CANかどうかを知りたいです。他のレイヤーの一致するコンポーネントの下にトレースを配置CANか?たとえばレイヤー 3 かレイヤー 6 でしょうか? それとも、スタックのすべての層で、対応するコンポーネントの下の銅をすべて削除する必要がありますか? コメントありがとうございます。 デビッド 接触型スマートカードリーダーIC Re: CLRC663 layout on a multilayer stack こんにちは、トーマス。 まず初めにご返信ありがとうございます。 マッチング回路の下に EMI 制御用の GND プレーンを配置する場合、残りの層の銅領域を削除する必要がありますか? 私のCASEでは 6 層スタックを使用していますが、マッチングが最初の層にあり、GND が 2 番目の層にある場合、他の 4 つの層の銅は削除しないほうがよいと思います。デモボードはそのように作られておらず、その理由は理解できません。 最善の手順について何かアイデアはありますか? 皆様に感謝 デビッド Re: CLRC663 layout on a multilayer stack こんにちは@dramos 通常、以下に示すように、最初の GND レイヤーをマッチング状態に維持します。これは主に EMI の理由によるものです。 BR トーマス
查看全文
揭开Linux中PCIe和CPU地址空间转换的神秘面纱 lspci output on iMX95EVK as PCIe RCiMX95EVK作为PCIe RC时的lspci输出 请仔细观察上述片段。它取自iMX95的控制台,在对特定PCIe设备[iMX8MM即PCIe EP]执行“lspci”后,此设备已枚举为BDF[总线设备功能]01:00.0。 本博客试图揭开围绕lspci输出内存地址信息的神秘面纱。 我们将探讨这一地址的定义、用途及其在PCIe领域的重要性。本博客将重点讨论以下议题:- 1. Linux设备树中的PCIe对应关系 2. 什么是CPU和PCIe地址空间,以及地址空间转换的必要性? 3. 在Linux中为PCIe设备分配资源 4. 如何在Linux PCI子系统中进行地址空间转换?   Linux设备树中的PCIe对应关系 在Linux设备树中,PCIe对应关系可定义PCIe根复合体和端点在系统中的位置。设备树中的PCIe父节点代表PCIe控制器(根复合体/主机桥)。 参考imx95设备树源中的PCIe节点:- pcie@4c300000 {                         compatible = "fsl,imx95-pcie"; reg = <0x00 0x4c300000 0x00 0x10000 0x00 0x4c360000 0x00 0x20000 0x00 0x60100000 0x00 0xfe00000>;                         reg-names = "dbi\0atu\0config";                         #address-cells = <0x03>   …  } pcie@4c300000代表Designware PCIe控制器根复合体,它将作为与其连接的设备/桥的父节点。 -- “compatible”属性则用于标识特定的PCIe控制器。其对应的驱动程序位于drivers/pci/controller/dwc/pci-imx6.c -- “reg”属性可指定PCIe控制器的内存映射寄存器。 PCIe RC下的子节点代表PCIe总线上的设备。它们可以是固定功能设备,例如Wi-fi、以太网、NVMe,也可以是PCIe桥,后者可进一步连接设备。 参考“arch/arm64/boot/dts/freescale/imx95.dtsi” pcie_4ca00000: pcie@4ca00000 { compatible = "pci-host-ecam-generic"; reg = <0x0 0x4ca00000 0x0 0x100000>;                         /* 必须为3。*/              …              …              enetc_port0: ethernet@0,0 { 兼容 = "fsl,imx95-enetc"; reg = <0x000000 0 0 0 0>; clocks = <&scmi_clk IMX95_CLK_ENET>,                                          <&scmi_clk IMX95_CLK_ENETREF>;                                 clock-names = "ipg_clk", "enet_ref_clk"; nvmem-cells = <&eth_mac0>;                                 nvmem-cell-names = "mac-address"; 状态 = "disabled";                         }; }   ethernet@0,0是位于总线0、设备0、功能0的PCIe设备。它是PCIe RC的子设备,内存映射位置为0x4ca00000 这些子设备/桥既可以借助PCI枚举动态发现,也可以在设备树中静态描述,如上文中设备树片段所示,其中“ethernet@0,0”条目以静态方式向RC声明与其连接的以太网子设备。如上例所示,这些子节点嵌套在设备树的PCI父节点中。   什么是CPU和PCIe地址空间,以及地址空间转换的必要性? CPU地址空间是处理器所能查看的系统物理内存映射。 Cortex-A55在iMX95上查看的CPU物理地址空间示例:   起始地址      结束地址    模块 0x48000000       0x4812FFFF    GIC编程寄存器 0x4AA00000      0x4AAFFFFF    Neutron SRAM 0x4AC10000      0x4AC1FFFF    摄像头域块控制 0x4E080000       0x4E08FFFF    DDR控制器 此地址空间是由系统固件/操作系统管理的全局系统视图。这些地址均由硬件设计固定。 另一方面,PCIe地址空间是PCI总线的本地空间,由PCIe子系统管理。该空间中的地址采用动态分配模式。 PCIe地址空间的示例如下:- 0x00000000   -    0x0FFFFFFF 0x10000000-0x1FFFFFFF 0x20000000   -    0x2FFFFFFF 由上文说明可知,CPU和PCIe地址空间运行在各自独立的地址域中。因此,除非部署转换机制,否则CPU无法访问PCIe设备的地址空间。我们将在后续章节中讨论这一内容,但请花几分钟时间来思考以下问题: 问:为什么CPU和PCIe需要独立的地址空间? 答:主要考量因素之一是模块化。我们采用独立的空间设计,确保PCIe设备独立于CPU架构进行设计。同一张卡可以在不同的系统中运行。CPU可以根据需要随时重新映射PCIe空间,从而始终保持灵活性。 此外,不同的地址空间会阻止设备访问任意系统内存。 根据本节的讨论内容,PCIe地址空间显然与CPU地址空间存在本质差异,而事实上——这种差异恰恰赋予其独特优势。因此,我们需要一个能在地址空间之间实现双向转换的实体。 接下来,我们将介绍“iATU”,即内部地址转换单元。在iMX SoC中,这些硬件单元负责执行地址转换。它们是Synopsys DesignWare PCIe控制器的组成部分,可为入站和出站事务提供可编程的地址转换窗口。 对于不熟悉PCIe入站和出站事务的读者,请花些时间阅读这篇技术博客 - 通过用例了解PCIe出站/入站窗口 - 恩智浦网络社区 注意:地址转换仅确保CPU可访问PCIe设备的内存,反之亦然。 到目前为止,读者应对PCIe地址转换形成基本认知。在深入研究Linux PCI子系统中的转换操作之前,让我们先讨论一下如何为PCIe设备分配资源。   在Linux中为PCIe设备分配资源 PCIe设备并未配置直接的CPU指令接口,因此其通过内存映射区域进行通信。设备需要内存来执行DMA操作或MSI/MSIX中断。不同的设备有不同的需求,因此PCIe中的资源可以是映射设备寄存器的MMIO,也可以是DMA传输所需的内存区域。 在Linux中,PCI子系统的pci_assign_resource函数负责在系统初始化期间为PCIe设备分配IO和内存资源,此操作将在枚举PCIe设备后执行。PCI总线上的所有设备均可调用此函数,并根据PCI设备的资源需求进行分配。 但是,Linux中的PCI子系统如何确定PCIe设备需要什么资源? - 每台PCIe设备都设有由PCIe规范定义的配置空间。这包括   BAR[基地址寄存器] - 用于指示设备所需资源的类型[IO/Mem]和规模。 功能 - 用于广播设备功能,例如MSI中断、ASPM低功耗状态等。 通过从PCIe设备读取BAR,我们可以了解设备所需资源的类型和规模。 // 从PCIe设备的BAR中确定资源规模:- 步骤-1:将所有1写入目标BAR寄存器。 步骤-2:读回该值并清除低4位(对于内存BAR)或2位(对于I/O BAR),因为这些状态位并不参与大小的计算 步骤-3:对该值执行按位取反后加1。 步骤-4:返回值表示大小。 举例说明:- 假设在读回上述步骤-2中的值后,BAR返回0xFFFFF000。低4位已清零。 步骤-3:对该值执行按位取反 -> ~(0xFFFFF000) = 0x00000FFF 加1:0x00000FFF + 1 = 0x00001000 得到的值0x1000 = 4096字节表示大小,即BAR需要4KB的内存区域。 // 从PCIe设备的BAR中确定资源类型:-   PCI 配置空间中的基地址寄存器(BAR): 位 0 → 资源类型: 1 = I/O 空间 0 = 内存空间 对于内存BAR: 00 = 32位 10 = 64 位 位1–2 → 寻址类型: 位 3 → 可预取标志 解释值0xFFFFF000,我们得到:   位 0 = 0 → 内存空间 位 1–2 = 00 → 32位地址 位 3 = 0 → 可预取 高位 → 基址(屏蔽后)   pci_read_bases [drivers/pci/probe.c]在Linux PCI子系统中负责确定设备枚举期间的BAR内存大小和类型需求。 毋庸置疑,上述向端点的BAR写入数据并确定资源类型与规模的操作流程,均在PCIe RC上执行。我们的设置如下:- iMX95<------> iMX8MM[RC]                     [EP] 在PCIe RC确定所需的BAR大小后,pci_assign_resource函数会分配一个内存范围,然后设置从该内存范围向PCIe地址空间的转换。 我们以一个lspci日志片段为切入点来撰写这篇博客文章,具体片段如下:- 综上所述,请注意RC驱动程序已分配以下资源: 0x910100000 - 0x910110000作为不可预取的内存地址范围,大小=64KB 上述内存地址范围位于iMX95 SoC上映射的PCIe 1出站空间内存中:-   范围0x910100000 - 0x910110000将映射到端点的PCIe地址空间。这实际上意味着,如果CPU生成此范围内的任何地址[包括起始和结束地址],PCIe控制器则会在RC上向总线中的端点发送PCIe TLP。它可能是对端点内存的读取/写入操作。写入/读取地址将根据地址空间转换来决定。 我们将在下一节详细探讨如何在Linux内核中实现这一转换。   在 Linux PCI 子系统中如何进行地址空间转换?   我们先从部分关键问题入手:- 如何指定0x910100000-0x910110000的范围?内核如何确认其必须映射PCIe 1出站空间,而非PCIe2出站空间或其他地址空间? -- 正如Linux 中的所有优秀设计,这同样始于“设备树二进制”。Uboot会将dtb传递给内核,以便其获取我们的板硬件描述。由于我们使用Torradex的Verdin iMX95 EVK板作为根复合体,因此我们使用的dtb为 imx95-19x19-verdin-adv7535.dtb 我会附上可用的dtb,供读者按需使用。 该dtb包括 -arch/arm64/boot/dts/freescale/imx95.dtsi 让我们重点关注特定的pcie节点:-   “ranges”属性正是本节先前所提问题的答案。  - 此属性可定义父地址空间和子PCI地址空间之间的地址转换规则。   注意:此博客仅关注“ranges”属性,因为它与我们的讨论内容相关。因此,如果读者想了解PCIe节点的其他设备树属性,建议查阅其他资料。  让我们解码“ranges”属性: 具体格式如下:-      3个单元               2个单元             2个单元             因此,一个条目将配置7个单元。我们的dtsi设有2个条目。第一个条目用于IO空间转换,第二个条目则用于内存空间转换。请参考第二个条目:-   0x82000000 0x0 0x10000000 0x9 0x10000000 0 0x10000000 |------PCI地址---------------| |-CPU地址-| |---PCI大小---|   根据上文,我们获得以下信息:- 内存空间可预取 <   0x82000000 0x00 0x10000000 // PCIe 地址:0x10000000   0x09 0x10000000              // CPU/系统地址:0x910000000 0x00 0x10000000 // 大小:256MB >; 0x82000000 = 1000 0010 0000 0000 0000 0000 0000 0000   位 31-30 (10) → 配置空间类型:这表示内存空间。 位29(0) → 不可重定位 位 28 (1) → 可预取 = 否(0 表示不可预取) 位 27–24 (0010) → 地址空间类型 = 内存 因此,0x82000000表示: PCI 内存空间 不可预取 32 位地址空间 注意:- 对于想了解lspci输出为何显示[size=64K]而dts256 MB的人,这是因为256MB是PCIe设备可用的最大地址空间。端点设备根据自身所需地址空间的大小,向系统申请分配。 同样,IO空间转换也是根据“ranges”中的第一个条目创建的:- < 0x81000000 0x00 0x00 → PCI I/O 地址:0x00000000 0x00 0x6ff00000 → CPU/系统地址:0x6ff00000 0x00 0x100000 → 大小:1MB >;   我们在iMX95 Verdin EVK Linux控制台的dmesg输出中也观察到类似情况:-   因此,内存空间映射已从 CPU地址0x910000000 - 0x091fffffff转换为PCIe地址0x10000000 - 0x1fffffff 我们有必要说明使用“ranges”属性的驱动程序。“ranges”属性在“pci_parse_request_of_pci_ranges -> devm_of_pci_get_host_bridge_resources”中进行解析,具体路径是“drivers/pci/of.c” 每个范围中的devm_of_pci_get_host_bridge_resources会自动管理这些资源的内存分配。它能确保在设备断开连接或驱动程序移除时释放这些资源。 我们已确定CPU和PCI地址范围的定义和原因。但是在lspci中,您观察到的是0x910100000,而非0x910000000,后者才是根据dtb指定的起始范围。这是为什么呢? 要回答这个问题,我们需要回溯PCIe设备枚举过程。 如上文所述,在PCIe枚举过程中,Linux PCI驱动程序会确定BAR资源,随后PCI核心驱动程序可能会遵循对齐要求分配地址。正因如此,系统会为EP的BAR0分配PCI总线地址0x10100000,且与0x10000000存在1MB[0x100000]的偏移量。 同时,您还需关注设备树PCI转换窗口:- 0x10100000转换为0x910100000 这一转换并非自动完成。设备树二进制仅指定转换窗口的具体信息,例如目标CPU地址空间和源PCI 地址空间之间的转换关系。实际转换是由iATU完成的。 此操作可在drivers/pci/controller/dwc/pcie-designware-host.c的dw_pcie_iatu_setup函数中完成,具体方式是使用dw_pcie_prog_outbound_atu函数创建出站窗口。 RC上的转换已成功配置,但部分环节仍需完善。 .. .. 入站窗口!! 如果端点(如iMX8MM)上并未配置入站窗口,对0x910100000的读取/写入操作将毫无意义。我们在iMX8MM上使用的是PCI端点测试驱动程序,该驱动程序是Linux社区中的热门选择。如果读者需要了解更多信息,建议访问此页面:- 9. PCI端点框架 — Linux内核文档 pci_epc_map_addr函数(位于drivers/pci/endpoint/pci-epc-core.c中)通过将PCI地址[0x10100000]映射到EP内存中的物理地址来创建入站窗口。读取和写入操作就是通过这种方式进行的。 如果未配置入站窗口,进行读取操作时将出现以下情况:-   现在,一切准备就绪。转换窗口已在PCI驱动程序中配置,且处于Linux控制台环境中。当CPU发起内存读取请求时,将按以下顺序执行:-   对于内存写入操作:- 端点上会出现以下情况:- 最妙的是,整个转换过程由硬件以透明的方式完成 - 您的驱动程序只需读取/写入CPU地址,PCI主机控制器就会自动处理所有转换! —— 我们如何测试地址映射?   要测试读取和写入操作,我们可以针对驱动程序本身作出一些改动,或者使用devmem5用户空间二进制。我们将对iMX8MM进行驱动程序方面的细微修改,并在RC上使用devmem5。 iMX8MM是PCIe端点,我们使用端点测试驱动程序对其进行相应配置。如果您需要实现相同配置,请参照此博客的指引操作 - 在iMX95 torradex板和iMX8MM EVK上启用PCIe端点框架 - 恩智浦网络社区 相反,如果您想将iMX95设为RC并将iMX8MM设为端点,请随时关注此博客 - 如何将iMX95EVK配置为PCIe端点并使用PCIe端点测试框架进行测试 - 恩智浦网络社区 接下来,我们需要完成两个任务:- 1. 在iMX8MM EP中,我们将写入部分随机值 在drivers/pci/endpoint/pci-epf-core.c中,对pci_epf_alloc_space函数进行以下修改:-     “space”是虚拟地址,“phys_addr”是连续的物理地址。 请注意,这是测试转换的初步方式,还有更合适的方案。 在修改后编译内核并用其启动开发板。使用PCI端点测试框架将iMX8MM设为端点。 2. 在iMX95 Verdin EVK [PCIe RC]上,我们将使用devmem5读取地址0x910100000,以验证能否在RC上观测到相同的数据。   以上就是本期的全部内容。此博客篇幅较长,如果您对其中的细节感到困惑,请随时通过私信或评论留言,我将尽力为您解答。 下次再见! Gaurav Sharma IMX95EVK
查看全文
S32 Design Studio v3.5 安装回滚问题 我正在尝试在公司设备(Windows 11)上安装 S32 Design Studio v3.5,一旦安装量达到 6%,它就会回滚并且安装失败。我遵循了以下社区帖子中提供的一些建议 S32 设计回滚安装错误 - NXP 社区 如"以管理员身份运行" 并启用完全控制"C:\Users\name\AppData\Local\Temp" 我附上日志供您参考,请帮助解决这个问题。 激活 | 安装 | 许可 | 安装程序下载 Re: S32 Design Studio v3.5 installation rollback issue "以管理员身份运行" 这个 exe 文件,似乎就能解决问题。如果没有帮助,我建议您咨询 IT 部门。
查看全文
IMXRT1170-EVKB 上的双以太网配置 大家好, 问候! 我正在研究 IMXRT1170-EVKB 板并实现双以太网(ETH0 和 ETH1)以同时以 100M 和 1G 的速度工作。 我首先导入 SDK 示例“evkbmimxrt1170_lwip_ping_bm_cm7”,该示例在同一工作区内以独立模式成功运行。以太网端口选择通过以下方式控制: - “板载网络使用100M以太网端口(1U)” -“板载网络使用100M以太网端口(0U)” 但是,我需要同时启用两个以太网端口(100M 和 1G)。为了实现这一目标,我采取了以下措施: - 使用 lwIP 配置并初始化两个以太网接口(100M 和 1G)。 - 分配唯一的 MAC 地址、PHY 资源和时钟配置。 - 为每个接口创建“netif_100M”和“netif_1G”结构。 驱动程序和配置文件的修改: 1. 在“opt.h”中启用“IP_FORWARD”。 2. 为两个以太网接口启用 ping 初始化。 3. 更新“lwipopts.h”: - 设置“LWIP_SINGLE_NETIF = 0”以允许多个接口。 - 设置“LWIP_NUM_NETIF = 2”来定义网络接口的最大数量。 整合这些更改后,我可以成功地向两个以太网输入发送 ping 消息。但只有“1G以太网(ETH1)有响应”,而“100M以太网(ETH0)没有收到任何响应”。 我已附上终端截图和完整修改后的项目“evkbmimxrt1170_lwip_ping_bm_cm7”以供参考。您能否检查一下我的配置并指出可能导致此问题的任何缺失步骤? 期待您的指导。 提前谢谢! 此致, 库马尔王子 回复:IMXRT1170-EVKB 上的双以太网配置 你好,山姆, 感谢您的快速回复。 我按照建议做了修改。删除/注释了“ netif_set_default(&netif_100M);”,但问题依旧。比如ping响应只来自1G网络,而不是100M网络。 BR, 库马尔王子
查看全文
使用 MCAL 向传输 FIFO 执行 S32K312 LPUART0 DMA 传输。 你好 我确认中断方法正常工作。 但是,DMA 方法不起作用。 在 Mcl_Init(NULL_PRT);中出现硬故障。 uart dma 相关示例使用的是 flexio dma,所以我不确定问题出在哪里。 请检查一下。 Re: Use MCAL to perform S32K312 LPUART0 DMA transfer to the transfer FIFO. 终于解决了 我漏掉了 "dma mux source: enable"。 Re: Use MCAL to perform S32K312 LPUART0 DMA transfer to the transfer FIFO. 你好,Robin Shen。 按照您的指示,激活 DMAMUX_0 不会导致任何错误。 然而,它仍然不起作用。 对于 tx,没有任何操作;对于 rx,当从终端接收到第一 和第二个字节时,会发生 “LPUART_UART_IP_STATUS_RX_OVERRUN”。 这种情况已经持续两周了。 如果您能提供更详细的信息,我将不胜感激。 此外,没有出现 dmarx 和 dmatx 中断。 已使用 DeepL.com 翻译(免费版) Re: Use MCAL to perform S32K312 LPUART0 DMA transfer to the transfer FIFO. 你好 请配置 McuPeripheral -> 外设时钟启用 看来你忘记启用这些外设的时钟门了:EDMA\DMAMUX_0 祝好, Robin ------------------------------------------------------------------------------- 注: - 如果本帖回答了您的问题,请点击"ACCEPT AS SOLUTION" 按钮。谢谢! - 我们会在最后一次发帖后的 7 周内跟踪主题,之后的回复将被忽略 如果您以后有相关问题,请另开新主题并参考已关闭的主题。 -------------------------------------------------------------------------------
查看全文
LPC55S36 I3C 主站在读取长度超过从站数据大小时挂起 我连接了两块用于 I3C 通信的 LPC5536-EVK 板,其中一块配置为 I3C 主板,另一块配置为 I3C 从机。如果主站指定的读取长度超过从站提供的数据量,主站就会卡在读取函数I3C_MasterTransferBlocking 中。根据波形,信号似乎是正确的,因此我认为问题出在主控端。 在我提供的示例中,从属服务器的数据是 [0x01,0x02],长度仅为 2 字节。但是,主服务器将读取长度指定为 3。因此,在第 2 字节的末尾,Slave 将 T-Bit 作为 0 返回,以表示消息结束。 测试步骤: (1) RESET 从属板 (2) RESET 主板 有关 T 位的定义,请参阅《MIPI I3C 基本规范》v1.1.1。 第 5.1.2.3.4 节、SDR 目标返回(读取)数据的第九位为数据结束位 在 I2C 中,"从目标读取 "有一个问题,即只有控制器才能结束读取,因此目标无法控制其返回的数据量。相比之下,在 I3C SDR 中,目标可控制其返回的数据字数;但它也允许 I3C 控制器在必要时提前终止读取。 ... Re: LPC55S36 I3C Master Hangs When Read Length Exceeds Slave Data Size 尽管用户无法确定i3c_masterTransferNonBlocking实际传输了多少字节,但对于我的应用程序来说,这似乎已经足够了。 Re: LPC55S36 I3C Master Hangs When Read Length Exceeds Slave Data Size 我尝试改用I3C_MasterTransferNonBlocking。尽管它不会挂起,但用户无法知道Slave实际提供了多少字节。在我分享的示例中,它需要返回传输计数 = 2 这样的信息。 在你使用 lpcxpresso55s36_i3c_interrupt_b2b_transfer_master 示例进行测试时,尽管你将 dataSize 更改为 50,但之后代码仍会打印固定的32字节,这恰好与从属提供的传输数量相匹配。 在实际应用中,例如我在另一篇关于IBI 与待读通知的文章中提到的情况,在发生 IBI 并执行私人读取后,从属设备的传输计数是不可预测的,可能会发生变化。当主站使用大缓冲区调用读取传输函数时,传输函数需要返回实际传输的计数。 Re: LPC55S36 I3C Master Hangs When Read Length Exceeds Slave Data Size 你好@黄铃铃 我已经测试过了。 您是对的。 我检查了 I3C_MasterReceive 函数。 /* Check RX data */ if ((0UL != rxSize) && (0UL != (base->MDATACTRL & I3C_MDATACTRL_RXCOUNT_MASK))) { *buf++ = (uint8_t)(base->MRDATAB & I3C_MRDATAB_VALUE_MASK); rxSize--; if ((flags & (uint32_t)kI3C_TransferDisableRxTermFlag) == 0UL) { if ((!isRxAutoTerm) && (rxSize == 1U)) { base->MCTRL |= I3C_MCTRL_RDTERM(1U); } } } 它读取数据的大小取决于数据的大小。 我测试了 i3c 中断演示,它支持这一功能。 我将dataSize设置为 50。 它从来没有挂过。 您可以试试看。 BR 哈利
查看全文
恩智浦 OTA 示例中的不可缓存区域 亲爱的各位, 我试图使用这里给出的 OTA 机制示例: https://github.com/nxp-mcuxpresso/mcuxsdk-examples/tree/release/25.09.00-pvw1/_boards/evkbmimxrt1170/ota_examples/mcuboot_opensource 链接器脚本中有一节: /* Specify the memory areas */ MEMORY { m_flash_config (RX) : ORIGIN = 0x30000400, LENGTH = 0x00000C00 m_ivt (RX) : ORIGIN = 0x30001000, LENGTH = 0x00001000 m_interrupts (RX) : ORIGIN = 0x30002000, LENGTH = 0x00000400 m_text (RX) : ORIGIN = 0x30002400, LENGTH = TEXT_SIZE m_qacode (RX) : ORIGIN = 0x00000000, LENGTH = 0x00040000 m_data (RW) : ORIGIN = 0x20240000, LENGTH = 0x00040000 m_data2 (RW) : ORIGIN = 0x202C0000 + RPMSG_SHMEM_SIZE, LENGTH = 0x00080000 - RPMSG_SHMEM_SIZE rpmsg_sh_mem (RW) : ORIGIN = 0x202C0000, LENGTH = RPMSG_SHMEM_SIZE m_core1_image (RX) : ORIGIN = CORE1IMAGE_START, LENGTH = 0x00040000 } Then later there is: __NDATA_ROM = __ram_function_flash_start + (__ram_function_end__ - __ram_function_start__); .ncache.init : AT(__NDATA_ROM) { __noncachedata_start__ = .; /* create a global symbol at ncache data start */ *(NonCacheable.init) . = ALIGN(4); __noncachedata_init_end__ = .; /* create a global symbol at initialized ncache data end */ } > m_data2 . = __noncachedata_init_end__; .ncache : { *(NonCacheable) . = ALIGN(4); __noncachedata_end__ = .; /* define a global symbol at ncache data end */ } > m_data2 这将额外的不可缓存部分定义为 OCRAM2 的剩余部分(从 202C_0000 到 2033_FFFF - 512KB)。 不过,Board_ConfigMPU 确实: https://github.com/nxp-mcuxpresso/mcuxsdk-examples/blob/release/25.09.00-pvw1/_boards/evkbmimxrt1170/board.c #if defined(CACHE_MODE_WRITE_THROUGH) && CACHE_MODE_WRITE_THROUGH /* Region 6 setting: Memory with Normal type, not shareable, write through */ MPU->RBAR = ARM_MPU_RBAR(6, 0x20200000U); MPU->RASR = ARM_MPU_RASR(0, ARM_MPU_AP_FULL, 0, 0, 1, 0, 0, ARM_MPU_REGION_SIZE_1MB); /* Region 7 setting: Memory with Normal type, not shareable, write trough */ MPU->RBAR = ARM_MPU_RBAR(7, 0x20300000U); MPU->RASR = ARM_MPU_RASR(0, ARM_MPU_AP_FULL, 0, 0, 1, 0, 0, ARM_MPU_REGION_SIZE_512KB); #else /* Region 6 setting: Memory with Normal type, not shareable, outer/inner write back */ MPU->RBAR = ARM_MPU_RBAR(6, 0x20200000U); MPU->RASR = ARM_MPU_RASR(0, ARM_MPU_AP_FULL, 0, 0, 1, 1, 0, ARM_MPU_REGION_SIZE_1MB); /* Region 7 setting: Memory with Normal type, not shareable, outer/inner write back */ MPU->RBAR = ARM_MPU_RBAR(7, 0x20300000U); MPU->RASR = ARM_MPU_RASR(0, ARM_MPU_AP_FULL, 0, 0, 1, 1, 0, ARM_MPU_REGION_SIZE_512KB); #endif 将此内存扇区标记为可缓存。 有谁能告诉我,示例代码是否真的将 m_data2 的提醒标记为不可缓存? 或者换句话说--谁能告诉我如何实现这一目标--在我们的应用程序中,我们希望将这一 ram 部分的剩余部分用作非高速缓存。 感谢您的支持 Re: Non-Cachable region in NXP OTA example 你好@jslota13245、 感谢您对 NXP MIMXRT 系列的关注! OCRAM 是一个可缓存区域。针对您的应用场景,请参考本指南: https://community.nxp.com/t5/i-MX-RT-Crossover-MCUs-Knowledge/Using-NonCached-Memory-on-i-MXRT/ta-p/1183369 致以最诚挚的问候, Gavin
查看全文
使用 i.MX28 添加对新型 NAND 的支持——NAND 分析 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 本页介绍如何确定 NAND 驱动程序中使用的 NAND 时序参数。这与可能使用的任何操作系统无关。 分析NAND数据表 我们使用电子表格来捕获和分析 NAND 特性。该电子表格[附加到此 wiki 页面|使用 i.MX28 添加对新 NAND 的支持 - Nand 分析^nand_analysis_template.xls]。 我们分析一个 NAND,如下所述。 我们必须有 NAND 数据表才能进行分析。 将*分析电子表格*复制到一个新文件名,其中包含正在分析的 NAND 的确切零件编号。 填写分析电子表格的第 1 页(“封面”)。 接下来处理第 3 张表: 基本特征。 其他表。 如果 NAND 是数据表中列出的某个系列之一,则使用一个电子表格来分析整个系列。您可以使用“类似”行来查找家庭的其他成员。如果需要,添加更多行。 大多数 NAND 都有异步接口,因此不涉及简单的时钟频率。相反,存在各种设置时间、保持时间和输出延迟,这意味着 NAND 的 I/O 速率受到限制。电子表格比较了 NAND 的时序规格,以查看设置、保持和输出时间的总和是否短于最小读取周期或写入周期时间。该电子表格专门用于 STMP378x/i.MX233/i.mx28 中的 Nand 控制器芯片,因此电子表格执行时序计算,目的是得出这些 CPU 的时序参数 *TSU*、*TDS* 和 *TDH*。如果在计算完所有时间之后,TDS 和/或 TDH 量 {color:#ff0000} 变为红色{color},则计算出的 TDS 和/或 TDH 对于 NAND 的指定周期时间来说太短。在这种情况下: 您必须在软件中增加其中一个或两个。 在分析电子表格中的某处写下您选择的值的注释,但不要弄乱自动计算。 记录闪存如何表示工厂标记的坏块。(有些使用块的第一页,有些使用最后一页,等等)将其与此[当前坏块标记方法超集[ http://wiki.freescale.net/display/PSGSW/Storage+Media%2C+Flash+Bad+Block+Marks ]进行比较用于检测任何闪存工厂坏块。 实例分析 NAND 数据表和分析的示例可以在 [Hynix NAND 页面 | http://wiki.freescale.net/display/PSGSW/Hynix+NAND+Flash+Documents ] 上找到。 i.MX2x 回复:使用 i.MX28 添加对新 NAND 的支持–NAND 分析 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 你好,谢谢你的信息。由于某些原因,链接不起作用。您能否提供分析电子表格的新链接?谢谢,马克
查看全文
实践研讨会:利用恩智浦最新多媒体应用处理器 i.MX 8M Mini 快速推进您的产品开发 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 从 i.MX 8M Mini EVK 开始实践,我们将介绍开箱即用的支持,包括软件、工具、硬件设计指南和演示软件。参加者在完成本课程后应该能够自信地使用 i.MX 8M Mini 开始自己的设计。 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 从 i.MX 8M Mini EVK 开始实践,我们将介绍开箱即用的支持,包括软件、工具、硬件设计指南和演示软件。参加者在完成本课程后应该能够自信地使用 i.MX 8M Mini 开始自己的设计。 i.MX 应用处理器
查看全文