Multi Source Translation Content

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

Multi Source Translation Content

讨论

排序依据:
RDK01DB1563 硬件或 FT232H 模块固件 你好 我可能在批量编程时损坏了编程器,目前无法连接芯片。我需要以下文件:RDK01DB1563 硬件文件或 FT232H 模块固件,以便排除故障。 BR Re: RDK01DB1563 HARDWARE OR FT232H module firmware 你好 有关硬件原理图和电路图,请参阅用户手册 UM11235 - TEA2016DB1514 USB 至 I²C 硬件接口。 本文件包含完整的电路图(见第 3 章)。 关于 FT232H 模块固件,由于该模块使用标准 FTDI 驱动程序软件包,因此不需要或提供任何自定义固件。有关安装 FT232H 驱动程序的详细信息,请参阅 UM11521 - RDK01DB1563 入门,第 4.1 章 安装软件,其中说明了如何自动安装或在需要时手动安装 FT232H 驱动程序。 BRs, Tomas
查看全文
imx8ulp 功能域间外设数据共享 你好 我正在尝试了解i.MX 8ULP上的外设和跨功能域数据共享,尤其是在一个功能域处于低功耗状态时。 从参考手册中的图 6(i.MX 8ULP 架构图)中,我了解哪些外设与实时域 (RTD) 和应用域 (APD) 相关。不过,我想确认一下在以下情况下哪些是可能的,哪些是不可能的: 1) 在 APD 低功耗状态下,RTD 访问 APD 外设 如果 APD 处于非常低的功耗模式(例如,挂起到 RAM 或其他低功耗状态),是否支持 RTD 从 APD 自有外设访问数据? 如果可以,建议采用什么方法(共享内存、DMA 等)? 是否存在电源模式限制,即由于时钟/电源受限而无法访问 APD 外围设备? 同样,反过来也是可能的: 2) RTD 处于低功耗时,APD 可访问 RTD 外围设备 当 RTD 处于最低/低功耗状态时,APD 能否访问 RTD 所有外设的数据?如果是,建议采用什么方法? 3) RTD 和 DSP 功能域之间的外围设备/数据共享(在 RTD 内) 我们也很好奇这是如何适用于 RTD 中的 DSP 功能域的: RTD 和 DSP 之间的外设/数据共享处理方式是否与 RTD↔APD 共享类似,还是因为 DSP 位于 RTD 内部而有所不同? 在图 6 中,我们注意到从 DSP 功能域横杆到 RTD 横杆(有一条线表示连接)的连接上似乎缺少了 Sx 标签。这是文档错误吗? 该图似乎暗示数据只能在 RTD → DSP 之间流动,而不是在 DSP → RTD 之间流动,这似乎不是故意的。您能确认正确的访问方向吗? 4) APD 访问 DSP 功能域数据 最后,APD 如何访问 DSP 功能域生成的数据? APD 是通过横梁链(APD → RTD → DSP)访问 DSP 资源,还是有更直接/标准的机制? 谢谢! i.MX8ULP Re: imx8ulp peripheral data sharing between domains 你好@ meketok 希望你一切都好。 这个问题问得好。 你可以从 U-启动 看看 imx8ulp.dtsi ,看看通过 Per_Bridge1 可以访问该外围设备。 但在 Linux 环境中不建议这样做,因为通过桥接器从 APD(Cortex A)访问 M33 外设会产生"侧信道。"如果 Cortex A 崩溃,它可能会挂起 M33 的总线,从而违背硬件隔离的目的。 顺祝商祺! 萨拉斯 Re: imx8ulp peripheral data sharing between domains 大家好, ,这的确是一个有趣的话题。 1) 是否可以使用 rpmsg 驱动程序?它有哪些限制(即带宽、延迟)? 2) 支持此功能需要在 M33 上运行哪些确切的 M33 固件? 至少 i.MX 8ULP EVK 使用 I2C0 和 I2C1(与 RTD 功能域相关的总线)与传感器和其他外围设备通信。 Re: imx8ulp peripheral data sharing between domains 你好@Spal_13 希望你一切都好。 实际上,这些功能域有自己的外围设备,这些外围设备不是共享的。 请看参考手册的图 6. i.MX 8ULP 架构图: 您可以看到无法从非所有者的功能域访问外围设备。 以 APD 为参考: 您可以看到 APD 可以访问的 GPIO 包括 GPIOE、GPIOF 和 GPIOD(GPIOD 通过 LPAVD)。 您可以在imx8ulp.dtsi 中确认这一点: 顺祝商祺! 萨拉斯 Re: imx8ulp peripheral data sharing between domains @Manuel_Salas 你能解释一下你向 @Spal_13 展示的连接图中各个功能域的紫色 AXI 总线吗? 您能解释一下为什么 A35 内存映射中会出现 RTD 外设桥 0 和外设桥 1 吗? 您能解释一下为什么 APD 外设桥 3 和外设桥 4 会出现在 M33 内存映射中吗? 表 2. A35 系统内存图 表 5. CM33 内存映射 Re: imx8ulp peripheral data sharing between domains @Manuel_Salas 能否请您解释一下这里的代码? u-boot 在 AP 功能域中运行并访问 RTD 功能域 i2c0。 端口(iomux)和 i2c0 模块。为什么? uboot-imx/板/freescale/imx8ulp_evk/imx8ulp_evk.c 位于 lf-6.12.3-1.0.0 · nxp-imx/uboot-imx · GitHub #define I2C_PAD_CTRL (PAD_CTL_ODE) static const iomux_cfg_t lpi2c0_pads[] = { IMX8ULP_PAD_PTA8__LPI2C0_SCL | MUX_PAD_CTRL(I2C_PAD_CTRL), IMX8ULP_PAD_PTA9__LPI2C0_SDA | MUX_PAD_CTRL(I2C_PAD_CTRL), }; #define TPM_PAD_CTRL (PAD_CTL_DSE) static const iomux_cfg_t tpm0_pads[] = { IMX8ULP_PAD_PTA3__TPM0_CH2 | MUX_PAD_CTRL(TPM_PAD_CTRL), }; void mipi_dsi_mux_panel(void) { int ret; struct gpio_desc desc; /* It is temp solution to directly access i2c, need change to rpmsg later */ /* enable lpi2c0 clock and iomux */ imx8ulp_iomux_setup_multiple_pads(lpi2c0_pads, ARRAY_SIZE(lpi2c0_pads)); writel(0xD2000000, 0x28091060);    Re: imx8ulp peripheral data sharing between domains 我对这个问题也非常感兴趣。 1.@Spal_13的问题都与芯片有关,包括各种可能情况的问题。 2。恩智浦的电路板支持包 Linux只是可以在iMX8ULP芯片上运行的众多场景之一。恩智浦的软件设计就是这样。只是恩智浦的电路板支持包 Linux不这样做。只是恩智浦电路板支持包 Linux 的应用场景不涉及这一点。你无法根据当前的 BSP 场景来解释芯片的功能。 3.你对图 6(即 MX 8ULP 架构图)的理解与@meketok完全相反。meketok 的问题直接指向了相反的答案。坦率地说,我目前认为 meketok 是对的,而你错了。 4.请逐一回答@meketok的问题。 Re: imx8ulp peripheral data sharing between domains 你好,@Manuel_Salas、 基本 8ULP 架构假定两个内核可以协同使用,以实现最佳功效。 例如,APD 可能会进入睡眠/掉电模式,而 RTD 保持活动状态,从传感器采集数据,然后将其独立保存到缓冲区。只有在检测到用户干预(触摸、按钮、运动)时,APD 才会激活。 但是,当你说M33总线可能会被挂起时,就会出现严重的限制。那我们为什么需要这个 M33 核心呢? 如果可能存在这种挂起的情况,那么我们大家(恩智浦和社区)应共同研究解决方法,并且必须清楚地描述"危险的" 场景。 此外,imx8ulp EVK(假设黄金样本)演示了与 APD 的 RTD 连接外围设备的交互式工作: 1) 我们可以访问 I2C0 (RTD) 总线设备: root@imx8ulpevk:~# i2cget -f -y 0 0x60 0x00 root@imx8ulpevk:~# i2cget -f -y 0 0x6c 0xc1 root@imx8ulpevk:~# i2cget -f -y 0 0x6c 2 0x61 2)与 DTS 相对应: &i2c_rpbus_0 { #address-cells =<1> ; #size-cells =<0> ; status ="okay" ;   mpl3115@60 { // 高度计 兼容 ="FSL,MPL3115" ; reg =<0x60> ; };   ite_bridge: it6161@6c { // MIPI 转 HDMI 兼容 ="ite,it6161" ; reg =<0x6c> ;          }; };   3)我们还可以看到按下与 RTD 相连的按钮 SW7/8 (PTB13/12) 所产生的事件:   root@imx8ulpevk:~# evtest /dev/input/event0 输入驱动程序版本为 1.0.1 输入设备 ID:总线 0x19 供应商 0x0 产品 0x0 版本 0x0 输入设备名称:" rpmsg-keys " 支持的活动 事件类型 0 (EV_SYN) 事件类型 1 (EV_KEY) 事件代码 114(KEY_VOLUMEDOWN) 事件代码 115(KEY_VOLUMEUP) 属性: 测试...(中断退出) 事件:时间 1748573575.153335、类型 1(EV_KEY),代码 115(KEY_VOLUMEUP),值 1 事件:时间 1748573575.153335、-------------- SYN_REPORT ------------ 事件:时间 1748573575.332514、类型 1(EV_KEY),代码 115(KEY_VOLUMEUP),值 0 事件:时间 1748573575.332514、-------------- SYN_REPORT ------------ 事件:时间 1748573579.152752、类型 1(EV_KEY),代码 114(KEY_VOLUMEDOWN),值 1 事件:时间 1748573579.152752、-------------- SYN_REPORT ------------ 事件:时间 1748573579.309757、类型 1(EV_KEY),代码 114(KEY_VOLUMEDOWN),值 0 事件:时间 1748573579.309757、-------------- SYN_REPORT ------------   Re: imx8ulp peripheral data sharing between domains 你有答案了吗?
查看全文
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. -------------------------------------------------------------------------------
查看全文
Flexera 许可加密狗 你好 我们使用 Flexera 许可证密钥使用 CodeWarrior 5.2 和 11.1 已经有一段时间了。本来一切正常,但突然之间,CodeWarrior Suites 似乎再也无法识别加密狗了。 lmtools 可以正确显示 FLEXid: 我的 license.dat 文件位于以下路径: C:\Program Files (x86)\Freescale\CWS12v5.2 C:\Freescale\CW MCU v11.1\MCU 在 CodeWarrior 5.2 中,我遇到了以下错误: 而在 11.1 版中,我得到的是 我使用的电脑运行的是 Windows 11。我们有一些使用 Windows 10 操作系统的旧笔记本电脑,在使用时没有任何问题。 如有任何帮助,我们将不胜感激! 谢谢! 扎克
查看全文
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)に関する情報が含まれています。 よろしくお願いします、 ジュリアン
查看全文
RW612 IO_MUX_SetPinMux(IO_MUX_FC3_USART_DATA); の IO 多重化機能を変更するにはどうすればよいでしょうか? この機能は、I/O を多重化するために使用しますか? /*! * @brief IO_MUX ピンの MUX モードを設定します。 * @note パラメータにはピン機能 ID マクロを入力できます。 * * これは、GPIO2/GPIO3 を Flexcomm0 UART RX/TX として設定する例です。 * @コード * IO_MUX_SetPinMux(IO_MUX_FC0_USART_DATA); * @endcode * * これは、GPIO6/GPIO10 を Flexcomm1 I2C SDA/SCL として設定する例です。 * @コード * IO_MUX_SetPinMux(IO_MUX_FC1_I2C_6_10); * @endcode * * @Param pinLowMask GPIO0-31 ピン マスク。 * @Param pinHighMask GPIO32-63 ピン マスク。 * @Param gpioFcSetMask IO_MUX_GPIO_FC_MASK() で定義される、設定する GPIO および Flexcomm レジスタマスク * @Param gpioFcClrMask クリアするGPIOおよびFlexcommレジスタマスク。IO_MUX_GPIO_FC_MASK()で定義されます。 * @Param fselSetMask 設定するFSELレジスタマスク * @Param fselClrMask クリアするFSELレジスタマスク * @Param ctimerSetMask IO_MUX_CTIMER_MASK() で定義される、設定する C_TIMER_IN/C_TIMER_OUT レジスタマスク * @Param ctimerClrMask クリアする C_TIMER_IN/C_TIMER_OUT レジスタマスク。IO_MUX_CTIMER_MASK() で定義されます。 * @Param sctimerSetMask 設定するSC_TIMERレジスタマスク * @Param sctimerClrMask クリアするSC_TIMERレジスタマスク / 静的インラインvoid IO_MUX_SetPinMux(uint32_t pinLowMask, uint32_t ピンハイマスク、 uint32_t gpioFcSetMask、 uint32_t gpioFcClrマスク、 uint32_t fselSetMask、 uint32_t fselClrMask、 uint32_t ctimerSetMask、 uint32_t ctimerClrMask、 uint32_t sctimerSetMask、 uint32_t sctimerClrマスク) このマクロは設定ツールで生成されたのでしょうか?数値やマスクされたマクロが満載で、全く読めません。 #IO_MUX_FC3_USART_DATA を定義する \ 0x05000000U, 0x00000000U, /* ピンマスク */ \ IO_MUX_GPIO_FC_MASK(0, 3, 0x200), IO_MUX_GPIO_FC_MASK(1, 3, 0x1EE), /* GPIO&FCマスク */ \ 0x00000000U, 0xC0000000U, /* FSELマスク */ \ IO_MUX_CTIMER_MASK(0, 0), IO_MUX_CTIMER_MASK(0x40, 0x40), /* CTimerマスク */ \ IO_MUX_SCTIMER_MASK(0, 0), IO_MUX_SCTIMER_MASK(0x10, 0x10) /* SCTimerマスク */ 別の IO に変更するにはどうすればいいでしょうか? Re: RW612 IO_MUX_SetPinMux(IO_MUX_FC3_USART_DATA); IO复用如何修改? お返事ありがとうございます。 1. シリアル ポート (UART) 通信用に別の I/O ポート セットを選択します。 2. SDKを読んでいて、その中のコードを参照しています。MCUXpressoスタイルのコードに初めて触れたので、よくわからない部分があります。MCUXpresso を 使ってFlexCommをUARTとして実装する方法についてのドキュメントやウェブページ はありますか ? 3. 現在、ボードをダウンロードできません。 私はM33を選択しました。 ダウンロードできません J-linkは有料製品であり、既存の製品ではあまりサポートされていないため、あまり気に入っていません。代わりにCMSIS-DAPを使いたいと思っています。 しかし、ファームウェアを更新する方法を見つけることができませんでした。 プログラムのダウンロード機能を緊急に有効にする必要があり、ご協力をお願いいたします。 Re: RW612 IO_MUX_SetPinMux(IO_MUX_FC3_USART_DATA); IO复用如何修改? こんにちは、 SDK の例に基づいてアプリケーションを構築することをお勧めします。 Config Tools を使用してペリフェラルを変更または構成する必要はありません。必要に応じてソースコードを変更できます。 RW612用のモジュールを使用していますか? 具体的に何を達成したいのか説明していただけますか? よろしくお願いいたします。 ダニエル。 Re: RW612 IO_MUX_SetPinMux(IO_MUX_FC3_USART_DATA); IO复用如何修改? ダウンロードに成功しました。 Re: RW612 IO_MUX_SetPinMux(IO_MUX_FC3_USART_DATA); IO复用如何修改? こんにちは、 FRDM-RW612を使用していることをご確認ください。 UM12160をご覧ください。搭載デバッガーのファームウェアを更新するには、JP2 をショートする必要があります。セクション 3.5 に記載されている手順に従ってください。 よろしくお願いいたします。 ダニエル。
查看全文
GUI Guider v1.7.2 オフライン テンプレートをダウンロードできません。 公式サイトからGUI Guider v1.7.2 オフライン テンプレートをダウンロードできません。ダウンロードしたバージョンは自動的に最新の 1.10.1 バージョンに更新されます。サーバーのリソース パスが正しいかどうかを確認してください。 Re: I can't download the GUI Guider v1.7.2 Offline Template. こんにちは@zzxx 、 この問題を報告していただきありがとうございます。試してみましたが、まさに説明どおりに動作しました。これを社内チームに報告し、修正が提供されるのを待ちます。 BR セレステ Re: I can't download the GUI Guider v1.7.2 Offline Template. こんにちは@zzxx 、 現時点ではこの問題に関してそれ以上の進展はありません。クリスマス休暇および EMEA と AMEC のタイム ゾーン全体の休日期間のため、プロセッシング時間は通常より長くなる場合がありますのでご了承ください。 皆様のご理解とご協力に心より感謝申し上げます。 楽しい一日をお過ごしください! BR セレステ Re: I can't download the GUI Guider v1.7.2 Offline Template. こんにちは@zzxx 、 すべてが順調に進んでいることを祈っています。問題が解決したことをお知らせしたかったのです。   BR セレステ    
查看全文
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
查看全文
What could be the reason for the ABIST2_EXT self-test failure of the S32K3X4EVB-T172? I am using the S32K3X4EVB-T172 for development. I tried using Sbc_fs26_PerformAbist2Check to check: SBC_FS26_MOR_VPRE = 0 SBC_FS26_MOR_VCORE = 1 SBC_FS26_MOR_LDO1 = 2 SBC_FS26_MOR_LDO2 = 3 SBC_FS26_MOR_TRK1 = 4 SBC_FS26_MOR_TRK2 = 5 SBC_FS26_MOR_VREF = 6 SBC_FS26_MOR_VEXT = 7 However, I found that only Sbc_fs26_PerformAbist2Check(SBC_FS26_MOR_VEXT) makes ABIST2_PASS of FS_DIAG_SAFETY1 show as 0 / ABIST2 Fail or not executed, but I don't know why? Could the issue be due to an incompatible OTP configuration of the FS26 part number PFS2613AMDA2AD used in the S32K3X4EVB-T172, or is it a faulty FS26 IC? Re: What could be the reason for the ABIST2_EXT self-test failure of the S32K3X4EVB-T172? I confirmed on EVB that it's the OTP that's causing it, same as I said before. If the OTP turns off the VMON behind it, you don't need to configure the bit of the corresponding channel. Re: What could be the reason for the ABIST2_EXT self-test failure of the S32K3X4EVB-T172? Yes, when executing ABIST2 self-tests, only ABIST2_EXT fails and shows ABIST2_PASS = 0, which may be a failure or not executed, but I can't think of a reason, but all other ABIST2 self-tests work and show 1 for PASS = ABIST2_PASS.
查看全文
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,以及如何运行的? 🙂
查看全文
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 使用したプログラマーを指定していただけますか?
查看全文
MCUXpresso IDEとSDKのインストール (日本語ブログ) 0. この記事は? NXPのマイコン用ソフトウェア開発環境MCUXpressoとそのSDKは無料で提供されていて,誰でも簡単にインストール可能!すぐにサンプル・コードを動かしてみることができます.😃 このブログ記事は,MCUXpresso IDEとSDKのインストール方法をステップ・バイ・ステップで紹介します. ※ この記事では使用する基板の例としてFRDM-MCXA153を使います インストール手順の解説動画を公開しました.視聴はこちらのリンクから.   目次 0. この記事は? 1. MCUXpresso IDEって? 2. nxp.comへのログイン 3. MCUXpresso IDEのインストール 4. SDKのインストール 4.1 MCUXpresso IDEの起動とワークスペース 4.2 SDKのインストール手順 4.3 準備完了! 5. おまけ:このまま基板の動作を試してみるには 参考資料 1. MCUXpresso IDEって? NXPが提供している汎用マイコンの各種サンプル・コードは,NXPが無料で提供するソフトウェア開発環境:MCUXpressoで動作するように作られています. このMCUXpressoには「MCUXpresso IDE (以下IDE)」と「MCUXpresso VisualStudio Code (以下VSC)」の2種類があり,IDEはすべての機能をひとつにまとめたアプリケーション.VSCはMicrosoft社が提供するVisualStudio Codeのプラグインとして提供されています. このブログではこの2種類のうち,IDEとSDKのインストールの方法を紹介します. IDEはWindows,macOS,Linuxで動作し,いずれのOSでも同じユーザ・インターフェースでの操作が可能です. MCUXpressoで動作するサンプル・コードを試してみるには,まずその準備としてIDEをインストールし,さらに動作させるマイコン/基板(ターゲット)のSDKをインストールしておかなければなりません. IDEはIntegrated Development Environmentの略で,統合開発環境アプリケーションです.このアプリケーションにはソースコードを編集するエディタをはじめ,コンパイラやリンカといったツールチェーン,コードをプロジェクト単位にまとめて,さまざまな設定と一緒に管理してくれるソフトウェアなどが含まれています. SDKはSoftware Development Kitの略で,マイコン・チップ毎に必要なドライバ・コード,設定情報が含まれています.SDKは作成しようとするマイコン・チップや基板(ターゲット)ごとにインストールしておかなければなりません. ではこれらのインストール方法をステップごとに解説しましょう. この記事はmacOSを用いた例となっていますが,WindowsやLinuxでもほぼ同じ操作でインストールできます. 2. nxp.comへのログイン これ以降の作業を行うには,あらかじめnxp.comにログインしておかなくてはなりません. もしまだ nxp.com のアカウントをお持ちでない場合には,先に登録を済ませたのちにログインしてください. MyNXPアカウントの登録方法はこちら 3. MCUXpresso IDEのインストール IDEのインストーラをMCUXpresso IDEのダウンロードサイトからダウンロードします.このダウンロードにはnxp.comでのユーザ登録が必要なので,もしまだであればあらかじめ済ませておきましょう. MCUXpresso IDEのダウンロードサイト行き「ダウンロード」ボタンを押す. ページがスクロールし,ダウンロードページへのリンク・ボタンが表示される.この「ダウンロード」ボタンを押す. MCUXpresso IDEのリンクをクリック. 利用規約が表示される.問題がなければ「I Agree (同意)」ボタンを押す. 自分が使うOSに合わせたインストーラを選んでリンクをクリック. ダウンロードするインストーラはLinuxならファイル名末尾の拡張子が「.deb.bin」のものを.Windowsなら「.exe」を. macOS用は拡張子が「.pkg」ですが2種類あります.M1以降のMシリーズ(Arm)プロセッサ搭載のMacなら「MacOSX - aarch64」,インテルCPU搭載のMacなら「MacOSX - 86-64」をダウンロードします. ※ バージョン番号が違う場合は読み替えてください ダウンロードが完了したら,インストーラを起動.表示される手順に従ってインストールを完了させます.   4. SDKのインストール   4.1 MCUXpresso IDEの起動とワークスペース MCUXpresso IDEのインストールが完了したら,MCUXpresso IDEを起動します. macOSでは,起動後にワークスペースをどこにするか聞いてきます(ガイド動画2:49付近).ワークスペースとは作業を行うためのフォルダです. デフォルトではユーザ・フォルダの中の,「Documents」の中に新しいフォルダが作られます. ※ 下図はデフォルト設定表示の例.この例ではdemoというユーザ名で作業しているので「/Users/demo/..」のような指定となっています.  ワークスペース(フォルダ)はユーザ・フォルダの中なら好きな場所にできます.下図の例ではユーザ・フォルダの中に「mcux」を作り,さらにその中で「project0」という名のワークスペースが作られます. 4.2 SDKのインストール手順 起動(起動とワークスペースを指定を完了)すると,下図のようなウェルカム表示が現れるのでこの中の「Download and Install SDKs」をクリック. しばらくサーバへの問い合わせを行ったあと,下図のような表示となります.このデフォルトの表示状態では右側と下側の表示が隠れてしまっているので,ウィンドウのサイズを拡げるか,表示を適宜スクロールします. ウィンドウサイズを拡げて表示域を確保 表示右上部の検索フィールドに,使用する基板やマイコンの型番を入力. ここでは例としてFRDM-MCXA153を使うので「A153」を入力した.その結果,FRDM-MCXA153基板が候補として表示された. FRDM-MCXA153基板を選択すると「Install」ボタンがハイライト表示されるので,これをクリック インストール中はダイアログボックスが表示される インストールが完了すると,ウェルカム表示に戻る. この表示をタブのクローズボタンで閉じる. IDEのデフォルト表示状態になる. 下部中央の表示枠(ペイン)のInstalled SDKタブにインストールされたSDKが表示される 4.3 準備完了! これで準備は整いました! 左上のペイン内の「Project Explorer」で,新しいプロジェクトを作成したり,SDKやGitHubまたはダウンロードしてきたプロジェクトをインポートして実行してみることが可能です. 5. おまけ:このまま基板の動作を試してみるには SDKにはサンプル・コードが含まれています. ここまでFRDM-MCXA153を例としてSDKをインストールしたので,そのままこの中にあるサンプル・コードを試してみることにします. まず基板とコンピュータをUSBケーブルで接続しておきます.FRDM-MCXA153では「MCU-Link」の表示のあるUSBコネクタを使います(写真参照). IDEの左上ペイン内,Project Explorerタブにある「Import SDK example(s)...」をクリック. インストールされているSDKが表示されるので「Next>」をクリック. サンプル・コードのリストが表示される. LEDチカチカ(=Lチカ)の例が「driver_examples」→「gpio」→「gpio_led_output」にあるので,下図のように階層をたどってチェックマークを入れ,「Finish」ボタンを押す. サンプル・コードがインポートされた. 青い虫のアイコン(Start debugging project)をクリック. ターゲットを選択するダイアログボックスが現れるので,表示された基板の情報を確認して「OK」ボタンを押す. コードがビルドされ,マイコンのフラッシュ・メモリに書き込まれます.そのあとコードが実行できる状態で一時停止. 黄色の四角とと緑の三角が組み合わさったアイコン(Resume)をクリックすると,基板上でコードが実行されます. このサンプル・コードはGPIO(General Purpose Input/Output = 汎用入出力)ピンにHIGHとLOWを交互に出すものでした.このピンが赤色のLEDに繋がれているので,LEDが点滅します. 参考資料 解説動画:さぁはじめよう!MCUXpresso IDE 関連情報:MCUXpresso for VSCとSDKのインストール (日本語ブログ) 変更履歴: 2025-05-07:初版 2025-06-26:「nxp.comへのログイン」の項を追加 2025-10-28:リンクの訂正 2025-11-10:リンクの更新 2025-11-14:インストール手順解説動画へのリンクを追加 / 参考資料の項を追加 2025-11-18:冒頭部の画像と使用基板の注釈追加.動画リンク画像変更 2026-03-17:「MCUXpresso IDEって?」の項の図を訂正 2026-04-05:「MCUXpresso IDEの起動とワークスペース」の項を追加 2026-07-24:章番号と目次を追加.「0. この記事は?」内,動画紹介リンクの強調  ========================= 本投稿の「Comment」欄にコメントをいただいても、現在返信に対応しておりません。 お手数をおかけしますが、お問い合わせの際には「NXPへの技術質問 - 問い合わせ方法 (日本語ブログ)」をご参照ください。 (既に弊社NXP代理店、もしくはNXPとお付き合いのある方は、直接担当者へご質問いただいてもかまいません。) NXPのマイコン:MCXシリーズのソフトウェア開発にはMCUXpresso IDEが無料で使えます. またさまざまなMCUXpresso IDEで使えるサンプル・コードが提供されています.ここではIDEとSDKのインストールの手順を解説します. これを読めば,誰でも簡単に開発環境&SDKをインストールできて,サンプル・コードまで動かすことができます! General Purpose Microcontrollers MCUXpresso MCUXpresso IDE MCX 日本語ブログ
查看全文
多層スタック上の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 部门。
查看全文
当前的 FSS 版本"S32N_FSS_FW_R21-11_1.8.1" 是否支持 S32N53? 你好,团队、 客户 HKMC 将从 S32N55 移至 S32N53。 所以我的问题是 当前的 FSS 版本"S32N_FSS_FW_R21-11_1.8.1" 是否支持 S32N53? 如果不是,什么时候会版本支持 S32N53 的 FSS? 顺祝商祺! 谢谢您! HSE_FW 优先级:高 Re: Does current FSS version "S32N_FSS_FW_R21-11_1.8.1" support S32N53? 你好,谭生、 我们计划在本月(7月底)发布的版本中提供支持; 谢谢! 辛杜
查看全文
S32K344 CAN 接收 参考 "Can_Example_S32K344 "示例项目。 CAN_43_FLEXCAN_MAINFUNCTION_MULTIPLE_WRITE "变为 "STD_ON","Can_43_FLEXCAN_MainFunction_Read" "被禁用,因此无法接收 CAN 信号。 Can_43_FLEXCAN_MainFunction_Read_CanMainFunctionRWPeriods_0" 未启用。 我已经安装了 3 个频道,“FLEXCAN_0”、“FLEXCAN_2” 和 “FLEXCAN_5”。         附带的是 "FLEXCAN_0 "的 "Can_43_FLEXCAN "设置屏幕。 Re: S32K344 CAN receive 你好,@toru88、 应该没有问题。传输时,请确认波特率和采样点是否设置正确。您使用的是两块板还是 CAN 分析仪工具? 社区中有一些 CAN 示例,请参考: [RTD600 MCAL & IP] S32K3X4EVB-T172 FlexCAN 示例中断/轮询-恩智浦社区 示例 S32K344 FlexCAN_Ip TX/RX/EnhanceRXFIFO DMA 测试 S32DS3.5RTD400 - NXP 社区 示例 S32K358 FlexCAN TXRX ISR S32DS35 RTD400/500 - NXP Community 致以最诚挚的问候, Julián Re: S32K344 CAN receive 你好,胡利安 由于无法更改到版本 6.0,我能够通过执行以下定义进行构建。 这个答复有问题吗? #define CAN_43_FLEXCAN_MAINFUNCTION_READ_PERIOD_CanMainFunctionRWPeriods_0 CAN_43_FLEXCAN_MAINFUNCTION_READ_PERIOD_0 #define CAN_43_FLEXCAN_MAINFUNCTION_READ_PERIOD_CanMainFunctionRWPeriods_1CAN_43_FLEXCAN_MAINFUNCTION_READ_PERIOD_1 #define CAN_43_FLEXCAN_MAINFUNCTION_READ_PERIOD_CanMainFunctionRWPeriods_2 CAN_43_FLEXCAN_MAINFUNCTION_READ_PERIOD_2 #defineCAN_43_FLEXCAN_MAINFUNCTION_WRITE_PERIOD_CanMainFunctionRWPeriods_3 CAN_43_FLEXCAN_MAINFUNCTION_WRITE_PERIOD_3 #define CAN_43_FLEXCAN_MAINFUNCTION_WRITE_PERIOD_CanMainFunctionRWPeriods_4CAN_43_FLEXCAN_MAINFUNCTION_WRITE_PERIOD_4 #define CAN_43_FLEXCAN_MAINFUNCTION_WRITE_PERIOD_CanMainFunctionRWPeriods_5 CAN_43_FLEXCAN_MAINFUNCTION_WRITE_PERIOD_5 我正在尝试让它工作,但无法发送/接收 CAN。 我参考 “Can_Example_S32K344” 进行设置。 我认为如果取消选中 "Can Loop Back Mode(可回环模式)",就可以从外部发送/接收 CAN 数据。 CAN 数据接收到 MCU 的终端。 是否有任何在 CAN 总线上发送和接收帧的示例代码? 致以最诚挚的问候, toru88 Re: S32K344 CAN receive 你好,@toru88、 你说得对。我测试了您的项目,没有生成主函数 RW 周期的正确定义。但是,这个问题似乎已在6.0.0版本中修复(我目前正在使用RTD代码包)。您能将 RTD 更新到新版本吗? 如果没有,只需编辑Can_43_FLEXCAN_Cfg.h即可。文件,如下所示。 从这里: /** * @brief Period for cyclic call of Main Function Read/Write */ #define CAN_43_FLEXCAN_MAINFUNCTION_READ_PERIOD_0 (0.001F) #define CAN_43_FLEXCAN_MAINFUNCTION_READ_PERIOD_1 (0.001F) #define CAN_43_FLEXCAN_MAINFUNCTION_READ_PERIOD_2 (0.001F) #define CAN_43_FLEXCAN_MAINFUNCTION_WRITE_PERIOD_3 (0.001F) #define CAN_43_FLEXCAN_MAINFUNCTION_WRITE_PERIOD_4 (0.001F) #define CAN_43_FLEXCAN_MAINFUNCTION_WRITE_PERIOD_5 (0.001F) #define CAN_43_FLEXCAN_MAINFUNCTION_MULTIPLE_WRITE (STD_ON) #define CAN_43_FLEXCAN_MAINFUNCTION_MULTIPLE_READ (STD_ON) 对此 /** * @brief Period for cyclic call of Main Function Read/Write */ #define CAN_43_FLEXCAN_MAINFUNCTION_READ_PERIOD_CanMainFunctionRWPeriods_0 (0.001F) #define CAN_43_FLEXCAN_MAINFUNCTION_READ_PERIOD_CanMainFunctionRWPeriods_1 (0.001F) #define CAN_43_FLEXCAN_MAINFUNCTION_READ_PERIOD_CanMainFunctionRWPeriods_2 (0.001F) #define CAN_43_FLEXCAN_MAINFUNCTION_WRITE_PERIOD_CanMainFunctionRWPeriods_3 (0.001F) #define CAN_43_FLEXCAN_MAINFUNCTION_WRITE_PERIOD_CanMainFunctionRWPeriods_4 (0.001F) #define CAN_43_FLEXCAN_MAINFUNCTION_WRITE_PERIOD_CanMainFunctionRWPeriods_5 (0.001F) #define CAN_43_FLEXCAN_MAINFUNCTION_MULTIPLE_WRITE (STD_ON) #define CAN_43_FLEXCAN_MAINFUNCTION_MULTIPLE_READ (STD_ON) Re: S32K344 CAN receive 你好,胡利安 我有同样的设置,但结果不同。 无法生成 RWPeriods_0/1/2。 附上设置屏幕截图。 我还附上了正在开发的 S32K 项目。 请检查 "AGV_CTRL.mex"。 用户程序已删除。 S32K Design Studio for S32 Platform 的版本为 "Verison 3.5"。 致以最诚挚的问候, toru88 Re: S32K344 CAN receive 你好,@toru88、 当仅定义了 1 个 RW 周期时,使用单个函数进行轮询: void Can_43_FLEXCAN_MainFunction_Read(void); 另一方面,当定义多个周期时,会针对不同的时间要求定义多个轮询函数: void Can_43_FLEXCAN_MainFunction_Read_CanMainFunctionRWPeriods_0(void); void Can_43_FLEXCAN_MainFunction_Read_CanMainFunctionRWPeriods_1(void); // etc. 但是,您还需要在 CanHardwareObject 容器中正确配置 CAN 实例各自的 RWperiod,否则,在生成代码时,将不会生成 RWPeriods_0/1/2/3: 致以最诚挚的问候, Julián Re: S32K344 CAN receive 你好 Julián_AragónM 感谢您的答复。 感谢您的回复。 CAN_43_FLEXCAN_MAINFUNCTION_MULTIPLE_WRITE "变为 "STD_ON","Can_43_FLEXCAN_MainFunction_Read "从编译目标中删除。 以下定义尚未完成。 - CAN_43_FLEXCAN_MAINFUNCTION_READ_PERIOD_CanMainFunctionRWPeriods_0 - CAN_43_FLEXCAN_MAINFUNCTION_READ_PERIOD_CanMainFunctionRWPeriods_1 - CAN_43_FLEXCAN_MAINFUNCTION_READ_PERIOD_CanMainFunctionRWPeriods_2 由于未设置该定义,因此无法启用以下功能。 因此,在 Main 中调用的代码中会出现编译错误。 -can_43_flexcan_mainfunction_read_canMainFunctionrwperiods_0-can_43_flexcan_mainfunction_read_canMainfunctionrwperiods_1-can_43_flexcan_mainfunctionrwperiods_read_c anMainfunctionrwp 该代码尚未运行,无法版本。 顺祝商祺! toru88 Re: S32K344 CAN receive 你好,@toru88、 您能提供更多信息吗?您是否在 FlexCAN 接收方面遇到问题?您提到""Can_43_FLEXCAN_MainFunction_Read" 已禁用,因此无法接收 CAN。",您的主代码中是否无法读取帧? 如果可能,请分享您的项目(或 main.c文件),这样我就能了解你的日常工作是什么了。 此外,您还可以参考 RTD 中的示例。它们与本培训演示中显示的相同:S32K3xx 通信模块:带有 rtd 和低级驱动程序的 flexcan。 这些项目配置为环回,因此需要启用正常/用户模式并初始化收发器输出引脚(CAN_H& CAN_L)。 还有一些社区帖子提供了一些实例: 示例 S32K344 FlexCAN_Ip TX/RX/EnhanceRXFIFO DMA 测试 S32DS3.5RTD400 - NXP 社区 已解决:S32K344 EVB 与 MCAL FLEXCAN TJA1153 - NXP Community 致以最诚挚的问候, Julián
查看全文