Multi Source Translation Content

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

Multi Source Translation Content

Discussions

Sort by:
S32K MC Devkit 软件在特定速度下的电机控制异常 你好,我正在使用 S32K BLDC/PMSM 开发套件中的固件(特别是 PMSM FOC 2Sh 固件)在空载条件下运行 BLDC 电机。在操作电机时,我注意到某些转速(如 2000、3000 和 4000)下的图形与其他转速(如 2500 和 3500)下的图形不同,后者通常遵循更一致的模式。使用转速计测量时,实际转速通常与目标转速一致,但在特定转速下,电机无法准确保持所需的转速,尽管误差不是很大。(例如 ±10 RPM)您能解释一下为什么会出现这个问题吗? Set RPM to 2000将转速设置为 2000 Set RPM to 2500将转速设置为 2500 Set RPM to 3000将转速设置为 3000 Set RPM to 3500将转速设置为 3500 Set RPM to 4000将转速设置为 4000 Re: Anomaly motor control at certain speed on S32K MC Devkit software 感谢您关注我们的产品并为我们的社区做出贡献。 似乎是电机参数调整问题... 根据 S32K BLDC/PMSM 开发套件的不同,默认使用Sunrise 电机 42BLY3A78-24110或Linix 45ZWN24-40 电机,并使用以下参数文件(例如): _Leo__1-1756330298677.png 如果更换电机,必须输入相应的电气参数,并调整不同控制方案的参数。 我建议您将以下培训作为参考,学习如何使用我们的 MCAT 工具: 电机控制应用调谐 (MCAT) 工具 - PMSM 伺服调谐 希望这些信息对您有所帮助。
View full article
Yocto BSP imx-5.4.70-2.3.0imx-image-full のビルディング中にフェッチ失敗 (spirv-tools / glslang) が発生しました こんにちは、 Yocto BSP imx-5.4.70-2.3.0 (ブランチ: imx-linux-zeus、マニフェスト: imx-5.4.70-2.3.0.xml) をビルドしようとしていますが、imx-image-full のビルド中にフェッチ エラーが発生しました。 エラーは次のとおりです: エラー: spirv-tools-git-r0 do_fetch: URL のフェッチャー失敗: 'git://github.com/KhronosGroup/SPIRV-Tools.git;name=spirv-tools;branch=main;protocol=https'。どのソースからも URL を取得できません。 エラー: glslang-git-r0 do_fetch: URL のフェッチャー失敗: 'git://github.com/KhronosGroup/glslang'。どのソースからも URL を取得できません。 興味深いことに、bitbake の外部で手動でフェッチしようとすると、正常に動作します。 git クローンhttps://github.com/KhronosGroup/glslang.git git チェックアウト 703bd9caab50b139428cea1aaff9974ebee5742e git クローンhttps://github.com/KhronosGroup/SPIRV-Tools.git git チェックアウト 9b3cc3e05337358d0bd9fec1b7a51e3cbf55312b したがって、ネットワーク接続は正常であり、リポジトリにアクセスできます。 Yocto のフェッチャーがここで失敗する理由を誰か教えてくれませんか? プロトコルの不一致 (git:// と https://) はありますか? レシピを更新したり、zeus ブランチのパッチを適用したりする必要がありますか? または、これらの依存関係を正常に取得するための推奨される回避策はありますか? よろしくお願いいたします。 評価ボード Re: Yocto BSP imx-5.4.70-2.3.0 Fetch failure (spirv-tools / glslang) while building imx-image-full こんにちは@binil ! ドキュメントを確認しているときに、GitHub が git:// プロトコルをサポートしなくなったことに気付きました。リポジトリでの作業を続行するには、HTTPS または SSH にスイッチする必要があります。 それに応じてリポジトリの URL を更新してください。 よろしくお願いします、 チャビラ Re: Yocto BSP imx-5.4.70-2.3.0 Fetch failure (spirv-tools / glslang) while building imx-image-full binil_0-1756185701144.png 添付画像をご確認ください Re: Yocto BSP imx-5.4.70-2.3.0 Fetch failure (spirv-tools / glslang) while building imx-image-full こんにちは@binil 、 NXP サポートにお問い合わせいただきありがとうございます。 フェッチエラーを示すログファイルを共有していただけますか?問題をより深く理解するために、自分の側で分析したいと思います。 並行して、私の側でエラーを再現してみます。 よろしくお願いします、 チャビラ
View full article
需要有关工业传感器边缘处理和云同步的建议 大家好,我正在使用恩智浦i.MX RT MCU 开发一个工业传感器项目,边缘设备可以处理基本的异常检测,但我也需要一种可靠的方式将数据与云端同步以进行更深入的分析。 主要挑战是构建 # 混合云设置,让节点在连接出现问题时离线运行,然后在连接恢复后安全同步。我正在寻找有关安全 MQTT/HTTPS 的最佳恩智浦连接模块、避免间歇同步期间数据丢失的方法以及有关大规模管理固件空中 (@FOTA) 更新的任何技巧的建议。 如果有人有类似架构或参考设计的经验,我将不胜感激你的建议。
View full article
如何将 OpenGL ES2.0 移植到 IMX6Q? 我有一个 imx6Q 芯片,它移植了 Linux3.14.52 版本,并有 GPU 内核模块的驱动程序。现在我需要使用 OpenGL ES2.0,但在 NXP 官方网站上仍然找不到合适的库或预编译库。您能帮忙提供吗?谢谢 Re: How to port OpenGL ES2.0 to IMX6Q? hI@mattie236 我将休假一周,在此期间可能无法回复。如果您赶时间,可以创建一张新票据。我的其他同事会支持你的。谢谢您的理解。 Re: How to port OpenGL ES2.0 to IMX6Q? 为较旧的嵌入式 Linux 系统(例如内核为 3.14.52 的 i.MX 6Q)寻找正确的图形库是一项挑战,因为这些库是专有的,与特定的板支持代码包 (BSP) 相关联。我不能提供这些文件,因为它们不能公开再发布。最好的方法是在恩智浦的档案或社区论坛上搜索与您的内核版本相匹配的官方电路板支持包,因为它将包含必要的用户空间库。或者,你也可以试试开源的 Etnaviv 驱动程序,不过其兼容性和功能可能会因内核不同而有所差异。 Re: How to port OpenGL ES2.0 to IMX6Q? 你好@125672 请参阅附件文件第 3.3 章 B.R
View full article
需要用于 PC 的软件工具,以加载 bin 文件,通过 Uart 测试固件升级 我在带有 MKM35Z512VLL7 控制器的智能电表项目中使用 AN12837SW 参考设计。我查看了"固件升级和引导加载程序代码( 通过 UART" ),但仍有一些疑问。请澄清以下几点: 我应该在电脑上使用哪个软件工具来测试固件升级过程? 我应该如何加载 .bin文件,将其分成 256 字节的区块,然后添加 CRC 数据进行传输? 我已经阅读了AN12829 号文件,但我无法清楚地理解 OTA 帧格式。能否请您详细解释一下? 是否有测试固件升级功能的特定软件工具或其他文档? Re: Need Software tool for PC to load bin file to test Firmware upgrade through Uart 请找到随附的 FWUpgradeClient.exe 源代码。它是在 Visual Studio IDE 中版本 的 C++ 代码。 BR, Omar Re: Need Software tool for PC to load bin file to test Firmware upgrade through Uart 我正在检查 AN 上引用的 Fwtransferclient 是否可供参考。以及软件中其他命令的详细信息。 只要符合 AN12829 中有关通信的详细规定,选择任何工具都可以。我对 DLMS 不熟悉,无法确认是否可以使用,这需要贵方验证。 BR, Omar Re: Need Software tool for PC to load bin file to test Firmware upgrade through Uart 亲爱的先生 感谢您的反馈, (i) 我查看了 AN12829 中 5.1.2.3 的描述。 但是在 AN12837SW 智能电表固件设计中,在 comportcommandprocessing.c 函数中还有更多 OTA 命令可用 k_cmdfwuinit、k_cmdfwu hdr 、 k_cmdfwutx。 此外,在接收固件代码(communication.cv)时,可以使用 1 字节的 Auth-Enc-Flag 和 AES-GCM-128 解密固件。因此,AN12829 文档与 AN12837SW 固件不正确匹配。这是我的困惑。 (ii) 如何准备 " PC 工具 " 用于通过 uart3 进行固件升级测试。恩智浦有任何参考工具/任何文档吗?恩智浦在 AN12829 中提到,它已经由 " FWtransferclient.exe " 进行了测试。我在哪里能得到这个工具?我们可以把电脑工具当作自己的工具安排吗? (iii) 能否使用DLMS总监进行固件测试? (iv) 哪种串行终端工具最适合编写C语言脚本。如何启动脚本 . 我期待您提供宝贵的解决方案。 Re: Need Software tool for PC to load bin file to test Firmware upgrade through Uart 1.目前还没有专门的工具。预计 PC 主机工具将由用户根据 5.1.2.3 的描述创建,其中详细说明了通信框架应如何设置。 2.您可以创建一个 python 脚本,将图像分割成 256 字节的块,但没有具体的方法。 3.能否请您更具体地说明您的疑问?哪部分不清楚?你是指图 10 中框架所在的流程吗? -命令 nxpfwutx。 文件大小/块大小 -固件按块划分。为了识别固件块,将随块一起传输 4 字节长的区块号。每次接收到新文件块并将其编程到目标闪存库时,都会更新并保存当前块计数。 -命令 nxpfwuact。 4.AN 中提到一个名为 FWUpgradeClient 的自定义工具,让我检查一下是否可用。 BR, Omar
View full article
S32K144 EB 配置WDG没有自己生成Wdg_Cfg.h 你好NXP团队:        我用EB配置MCAL Wdg(4.3.1)没有自己生成Wdg_Cfg.h,不知道问题出在哪里了。EB配置如下: General配置: 时钟参考配置: WDG配置: 代码生成: 回复: S32K144 EB 配置WDG没有自己生成Wdg_Cfg.h Alex_Hua_0-1757471889936.png 原因找到了,GPT这边的回调必须是这个名字才能生成Wdg_Cfg.h,神坑 回复: S32K144 EB 配置WDG没有自己生成Wdg_Cfg.h 最好你翻译为英文 这样看的人多一点 回复: S32K144 EB 配置WDG没有自己生成Wdg_Cfg.h CAN配置多路的时候我也遇到过,后来配置正确后,Cfg生成了。Wdg配置项就这么多,试了好像不行 回复: S32K144 EB 配置WDG没有自己生成Wdg_Cfg.h 1.任意改动一个IO口,然后生成代码,看看是否会改变DIO_CFG.h或者Port_CFg.h 2.检查生成代码的路径是否正确 3.检查配置是否有误,我之前配置can的时候,eb没报错,但生成的文件就是没有改动。后面排查出是,某个地方配置错误了,所以也建议你多排查排查。 4.对比网上配置看门狗还有EB自带的例程,看看哪里有不同的地方,后续再按照你的需求去改 这是我的个人经验,如果还是解决不了,就等着看看社区大佬的回复吧
View full article
MPC8343 良い一日! MPC8343EA をサポートするソフトウェア製品はどれですか? 間違った HRCW エントリを設定する必要があります。 SEGGER J-LINKを持っています。 ありがとう。 Re: MPC8343 デバッグソフトウェア https://www.nxp.com/design/software/development-software/codewarrior-development-tools/codewarrior-network-applications/codewarrior-development-suites-for-networked-applications:CW-DS-NETAPPS デバッグツール CodeWarrior Tap バージョン。Fと初期バージョン。 手元にあるなら、ぜひ試してみてください。 よろしくお願いいたします。
View full article
我在哪里可以下载支持电路板支持包。 LLCE 的 license-llce.rtf 文件 HI 小组、 客户是 PEGATRON - NORMALIZED。 我正试图在 S32G399ardb3 BSP44 版本中添加 llce-can 功能。 我在 local.conf 中添加了以下两行。 不,它显示我有一个错误,我找不到 license-llce.rtf 文件、 在哪里可以下载"license-llce.rtf" 文件? Br、 于 Linux BSP LLCE Re: Where can I download license-llce.rtf file with the BSP LLCE enablement 你好@Yu_Song、 Linux 电路板支持包 44 与 LLCE 固件版本 1.0.9 兼容。 下载并安装固件(在 Windows 机器上通常位于 C:\NXP\S32G_LLCE_1_0_9 )后,根目录中将出现以下文件: . ├── eclipse ├── firmware ├── license.rtf ├── sample_app_llce └── uninst.exe 要继续,请将该目录中的 license.rtf 文件与 LLCE 固件二进制文件一起复制到 NXP_FIRMWARE_LOCAL_DIR Yocto 变量参考的文件夹中。完成这些步骤后,您可以重新启动 Yocto 版本。 谨致 Ghennadi Re: Where can I download license-llce.rtf file with the BSP LLCE enablement 大家好 这里有更新吗? BR、 于
View full article
在 S32K396 flexPWM(中心对齐模式)上,我的 Sine-PWM 占空比更新有时会导致脉冲拉伸 亲爱的社区 我正在使用 FlexPWM 生成三相正弦 PWM 占空比。每 100 µs(PWM 最大计数 15999),在 VAL0 处取半周期 PWM ISR,CPU 时钟为 160Mhz、 在 ISR 内部,我清除加载值,然后更新 VAL2/VAL3 占空比值并设置 LDOK。 查询: 在示波器跟踪中,当占空比发生变化时,偶尔会像错过比较一样延伸一个 PWM 周期,但使用固定占空比时,脉冲是干净的。 不涉及 ADC 或重型 ISR 负载。 重装模式为全循环,机会均等。 谁能指出 eFlexPWM 可能跳过比较的确切条件(更新时序、LDOK 处理、故障逻辑等),以及确保无故障值班更新的推荐方法? 须藤代码 : main( ) { float x = 0;//占空比计数器 int direction = 1; // 1 = 向上,-1 = 向下 float step = 50; /* 初始化时钟、pwm、端口、PIT 定时器 - 100uSec */ for(;;) { if(toggleLed == TRUE) { /* 呼吸 PWM 占空比更新 */ x += 方向 * 步长 如果 (x>= PWM_MAX) { x = PWM_MAX; direction = -1; // 切换为递减 } else if (x<= PWM_MIN) { x = PWM_MIN; direction = 1; // 切换到递增 } FlexPwm_Ip_ClearLoadValue(INSTANCE_1, 1U<< SubModule_0); FlexPwm_Ip_UpdateDutyCycle(INSTANCE_1, SubModule_0, FLEXPWM_IP_PWMA, x); FlexPwm_Ip_LoadValue(INSTANCE_1, 1U<< SubModule_0, TRUE); toggleLed = FALSE; } } 在 100uSec 的 PIT 定时器中,toggleLed 更新为 TRUE。 这个代码也有同样的问题。请检查并提供此问题的根本原因。PFA 剪辑,以观察问题。 需要紧急支援! Re: On S32K396 FlexPWM (center-aligned mode), my sine-PWM duty updates sometimes cause stretched pul 请使用所附项目。 Re: On S32K396 FlexPWM (center-aligned mode), my sine-PWM duty updates sometimes cause stretched pul 您好, 我已经测试了您的项目。它直接将我发送到硬故障。 此外,我注意到在引脚工具中,您使用的是 FlexPWM 1,而在 FlexPwm_Ip 驱动程序中,您使用的是实例 0。 另一方面,在 Siul2_Port 驱动程序中,引脚工具中使用的每个引脚都没有端口引脚配置。如需参考,请查阅其他 RTD 示例。 请检查您共享的文件是否正确? 此示例是否与 S32K396-BGA-DC1 兼容? Re: On S32K396 FlexPWM (center-aligned mode), my sine-PWM duty updates sometimes cause stretched pul PWM 频率:10Khz 增加步长并观察 PWM 波形,您将能够观察到缺失的 PWM 脉冲。 Re: On S32K396 FlexPWM (center-aligned mode), my sine-PWM duty updates sometimes cause stretched pul 嗨,里奥、 请参见所附项目。 谢谢, Meet Re: On S32K396 FlexPWM (center-aligned mode), my sine-PWM duty updates sometimes cause stretched pul 感谢您关注我们的产品并为我们的社区做出贡献。 能否请您分享一下您的项目,只隔离问题?这将允许我们使用 S32K396-BGA-DC1 板在我们这边对其进行调试。 还请分享我们重现该问题的详细步骤。 Re: On S32K396 FlexPWM (center-aligned mode), my sine-PWM duty updates sometimes cause stretched pul 仅供参考。 故障模块已禁用。 /* FlexPwm 实例 0 配置*/ const FlexPwm_Ip_InstanceCfgTypes FlexPwm_Ip_InstanceCfg_I0 = { /* 输出启用 */ 1904U、 /* MaskOutput */ 0U、 /* 主控制运行 */ 7U、 /* FaultFunctionalityEnable */ (boolean)FALSE、 /* FaultGlitchStretchEnable */ FALSE、 /* 故障过滤计数器 */ 0U、 /* 故障过滤周期 */ 0U、 /* NoCombinationalPath */ 0U、 /* FaultChCfg */&FlexPwm_Ip_FaultCfg_I0、 /* SubModuleCfgArray */ FlexPwm_Ip_SubModCfg_I0_Array、 /* NumSubModuleCfg */ 3U }; Meetkumar_0-1758124380031.png Meetkumar_1-1758124395111.png Meetkumar_2-1758124409114.jpeg
View full article
NXP RT1010 で OTFAD と HAB を使用する場合、フラッシュ ロックまたは保護機能はありますか? こんにちは、NXPさん 前述のとおり、Renesas AT25SF321B フラッシュが使用中に予期せずロックされることが判明しました。 HABとOTFADが有効になっている場合、フラッシュ書き込みの不具合などの特定の操作によって、 フラッシュがロック状態(不揮発性保護)に入りますか? Re: When using OTFAD and HAB on the NXP RT1010, are there any flash locking or protection features ? こんにちは@martin_lapis お返事ありがとうございます この部分の私の理解に基づくと、フラッシュ パラメータは SPT を通じて調整CAN。変更されたパラメータはフラッシュの特定のブロックに書き込むCAN、ROM コードはフラッシュからデータを読み取ります。次に、最大周波数など、SPT で定義された設定に従ってフラッシュを構成します。 同じ構成バージョンを使用しているので、理論的には違いはないはずです。しかし、一部のデバイスではフラッシュがロックされていることがわかりました そこで、ROMコード操作の何らかのメカニズムがフラッシュロック機能(不揮発性保護)をトリガーする可能性があるかどうかを尋ねたかったのです。 Omar_hong_0-1758611861821.png Re: When using OTFAD and HAB on the NXP RT1010, are there any flash locking or protection features ? こんにちは@Omar_hong BRC (ブート ROM コード) が外部フラッシュをセットアップすると、アプリケーション コードにある FCB ブロックが処理されます。FCB の一部には、フラッシュが構成された時点でコマンド (LUT レコード) を実行する役割を担うdeviceModeCfgEnableセクションとconfigModeEnableセクションが含まれています。 この機能を使用すると、不揮発性保護や外部フラッシュ チップが提供するその他の保護機能を設定CAN。 もちろん、これには、SDK ベースのアプリケーションのflexspi_nor_config構造によって表される FCB を深く理解する必要があります。 よろしくお願いいたします。 マーティン Re: When using OTFAD and HAB on the NXP RT1010, are there any flash locking or protection features ? こんにちは@martin_lapis お返事ありがとうございます 前述の「フラッシュ ロック」とは、ルネサスの不揮発性保護 (NVP) を指します。ただし、この NVP 機能は現在のプログラムでは有効になっていません。それにもかかわらず、システムが予期せず不揮発性保護状態に入る可能性が極めてわずかにあります。 したがって、動的復号化中または MCU ROM 実行中に、ルネサスの不揮発性保護をトリガーできるメカニズムは存在しないと想定するのは正しいでしょうか? Re: When using OTFAD and HAB on the NXP RT1010, are there any flash locking or protection features ? こんにちは@Omar_hong 私の知る限り、RT1010 には HAB または OTFAD セキュリティ機能の使用に関連する保護機能はありません。RT1170 または RT1180 RT MCU ラインで使用可能な RDC または TRDC モジュールは、RT1010 には存在しません。 「フラッシュロック」の意味がよく分かりませんが、フラッシュセクターへの不要な変更を防ぐという意味であれば、ルネサスのフラッシュチップに実装されている不揮発性保護機能を使用して、フラッシュメモリの機密領域を保護することができます。 。 martin_lapis_0-1758267925402.png マーティン
View full article
SJA1110 CBS構成 こんにちは、 クレジット ベースのシェーピング パラメータをテストするために、SJA110 - EVM ボードを使用しています。 CBSパラメータは以下の通りです アイドルスロープ = 50Mbps 送信スロープ=-50Mbps Lo_credit = -750 ハイクレジット = 73 これらの値をCBSレジスタに設定するにはどうすればよいでしょうか(ユーザーマニュアルの説明が分かりにくいです) Hi_credit = 73、lo_credit = 750 では期待どおりの結果が得られません。 注: デフォルトの 0x3FFFFFFF を設定すると、スイッチ出力で正しい帯域幅である 50Mbps が観測されます。
View full article
尝试使用演示应用程序设置选项 A 时,获取 GSR 值 = C7040001 原问题回复:GM S32K324 需要配置垫圈 - 第 2 页 - NXP 社区 客户 - GM 客户尝试使用 RTD 和 tresos 在默认垫圈配置 0b00 的 S32K344 设备中设置时钟选项 A,但出现了 C7040001 错误。 当 FAE 在他们那里使用 RTD 示例尝试相同的配置时,也遇到了同样的问题。 当我尝试在默认垫圈配置下直接向所需寄存器(PLL、MC_CGM)写入值来设置时钟配置选项 A 时,我这边工作正常。 请帮我解决这个问题。我在这里附上了FAE的demo_app项目供你参考。 RTD:SW32K3_S32M27x_RTD_R21-11_6.0.0_D2506 开发软件包 3.6.2 优先级:高 RTD S32DS 来源:恩智浦内部来源:恩智浦内部 Re: Getting GSR value = C7040001, when trying to set option A using Demo app 你好,@Nhi_Nguyen、 我发现了错误,我之前是用通用 HSE 固件和标准演示程序进行测试的,所以才会在 GSR 寄存器中出现错误。 我用标准 HSE 固件(2.55)测试了该应用程序,现在在我这里运行正常。 您可以关闭此票。感谢您的支持。 此致 Dhvani Singhal Re: Getting GSR value = C7040001, when trying to set option A using Demo app 你好,@Nhi_Nguyen、 非常感谢你的确认。我会在我这边再试一次。然后告诉你。 此致 Dhvani Singhal Re: Getting GSR value = C7040001, when trying to set option A using Demo app 你好@DhvaniSinghal、 我试着更改了 UTEST,并确认这没有造成任何问题。它正确地遵循了《马币》。我为此使用了 Demo 应用程序。 顺祝商祺! Nhi Re: Getting GSR value = C7040001, when trying to set option A using Demo app 你好@DhvaniSinghal、 1.遵循 RM,应该相同。如果不是,则应来自 HW,如果 HW 团队没有更新 RM,我们不会处理此问题。要测试您的请求,我需要用 Mem 驱动程序创建项目,这需要更多时间,但从我的角度来看,我们不需要这样做,因为我在这里没有发现任何问题。 2。RTD 示例在未安装 HSE 的板上运行。我从另一支队伍借了这个板。我想你可以从 HSE 固件版本中找到 HSE 代码包,对吧?您可以向他们询问0x00000101 的值。抱歉,我不在 HSE 工作,所以对此一无所知。 顺祝商祺! Nhi Re: Getting GSR value = C7040001, when trying to set option A using Demo app 你好,@Nhi_Nguyen、 非常感谢。如果您在UTEST中对垫圈位( HSE_CLK_MODE_AN_GSKT_CTRL= 0x00000101)进行编程,那么它应该也能正常工作。对不对? 还有一个问题,如果UTEST 中的默认垫片配置是 ( HSE_CLK_MODE_AN_GSKT_CTRL= 0x00000101),为什么您的 S32K344 样品中没有? 此致 Dhvani Singhal Re: Getting GSR value = C7040001, when trying to set option A using Demo app 你好@DhvaniSinghal、 这就是情况(2): 这是案例 (1) 演示应用程序: 如果您需要更多信息,请告诉我。 顺祝商祺! Nhi Re: Getting GSR value = C7040001, when trying to set option A using Demo app 你好,@Nhi_Nguyen、 请运行应用程序至第 68 行,查看 HSE 是否仍处于活动状态。如 (1),您在运行应用程序时只分发了 PLL API。 此致 Dhvani Singhal Re: Getting GSR value = C7040001, when trying to set option A using Demo app 你好@DhvaniSinghal、 我没有发现您所附的演示程序有任何问题。返回结果为 (1),没有任何变化。 (2) 我使用了您的演示程序,并按照 (2) 中的图像更改了 PLL,使其与您的寄存器相同,结果没有问题。 顺祝商祺! Nhi Re: Getting GSR value = C7040001, when trying to set option A using Demo app 你好,@Nhi_Nguyen、 HSE 固件仅在安全启动的情况下配置 PLL。因此,屏幕截图中的共享配置仅适用于安全启动的情况。但是在这里,我们在非安全启动中配置时钟。 您是否再次尝试过共享演示应用程序?在将时钟配置为选项 A 后,向 HSE 固件发出服务。我对演示程序有疑问,演示程序中缺少一些东西。 或者,如果您有任何演示应用程序,我们可以在设备中配置时钟选项A。请与我分享该项目。 此致 Dhvani Singhal Re: Getting GSR value = C7040001, when trying to set option A using Demo app 你好@DhvaniSinghal、 好的,我又看了一下您的 UTEST,是选项 A。 我的板之前安装了 HSE 固件。就是这样: 如果 HSE 固件会导致问题,可能是因为时钟配置是在 HSE 固件中设置的,需要在应用程序中保留。 关于这一点,我想您可以询问 HSE 小组。 您尝试将时钟配置更改为 (2) 并运行了吗? 顺祝商祺! Nhi Re: Getting GSR value = C7040001, when trying to set option A using Demo app 你好,@Nhi_Nguyen、 谢谢您的解释。但根据 DCF 值的共享片段,S32K344 的 HSE_CLK_MODE_AN_GSKT_CTRL 默认值为0x00000101。我没有在UTEST中为时钟配置编程任何值。这是默认值。 请提供测试所用的 HSE FW 版本和 SBAF 版本。另外,请检查在执行 FAE 演示应用程序后,您是否收到任何 HSE 服务的响应。 我在同一个样品上用相同的 HSE 固件版本测试了这两个应用程序。只有在演示应用程序项目(FAE)中才会出错。请在下面找到屏幕截图以供参考。 我使用的是:HSE FW 版本:s32k3x4_hse_fw_0.5.0_2.55.0_pb250130 SBAF 版本: 0.15.0 RC6 此致 Dhvani Singhal Re: Getting GSR value = C7040001, when trying to set option A using Demo app 你好@DhvaniSinghal、 这是 FAE 项目,我称之为 (1) 这是根据您的寄存器相应更改的时钟,因为我在比较您的寄存器和 FAE 项目时看到了 PLLDV 之间的差异,我称之为 (2) 就我而言,UTEST 如下: 未对HSE_CLK_MODE_AN_GSKT_CTRL进行更改,因此默认为选项 A 但在您的案例中,HSE_CLK_MODE_AN_GSKT_CTRL 被设置为选项 A++,这只是针对 S32K388。 在我看来 - 项目(1)或(2)的时钟配置没有问题,因为 GSR 没有升高。 - 您的问题应该是 HSE 时钟选项更改为 A++(仅支持 S32K388)造成的。因为您使用的是 S32K344,所以在更改HSE_CLK_MODE_AN_GSKT_CTRL时无法切换到 A++。也许就是这个原因。 - 对于解决方案,我想你可以选择其中之一: + 再次安装 HSE 固件,将 UTEST 配置 RESET 为默认选项 A。 + 使用 MemInfls 清除 dcf_client_utest_misc。 顺祝商祺! Nhi Re: Getting GSR value = C7040001, when trying to set option A using Demo app 你好,@Nhi_Nguyen、 它是 MU 登记册的一部分。请找到以下片段以供参考: 是,在 GSR - C7040001 的值中,04 表示时钟错误。 寄存器的预期值全是 0。 请运行应用程序一次以查看此错误。 此致 Dhvani Singhal Re: Getting GSR value = C7040001, when trying to set option A using Demo app 你好@DhvaniSinghal、 因为我不在 HSE 工作,所以我还有一个问题,如何读取寄存器 GSR?是否在 MU 中? 在 GSR - C7040001 的值中,04 表示 HSE 时钟错误?该寄存器的期望值是多少?是 00 而不是 04 吗? 顺祝商祺! Nhi Re: Getting GSR value = C7040001, when trying to set option A using Demo app 你好,@Nhi_Nguyen、 GSR - C7040001:这表明 HSE 时钟上发生了 CMU(时钟监控单元)篡改事件。它通常发生在时钟设置超出预期范围时。 我已经在 S32K344 设备 上测试了 时钟配置选项 A ,它在我这端运行正常。 请查看数值片段: 此致 Dhvani Singhal Re: Getting GSR value = C7040001, when trying to set option A using Demo app 你好@DhvaniSinghal、 - 什么是C7040001 错误?您能描述一下这个问题吗? - 请将 PLL、MC_CGM 中所有寄存器的值以及自己编写寄存器时的代码发给我。 顺祝商祺! Nhi
View full article
S32k312 の最大 LPUART 転送速度 (bps) はどれくらいですか? こんにちは S32k312 の最大 LPUART 転送速度 (bps) はどれくらいですか? Re: S32k312的LPUART transfer rate最大是多少bps ? 当社製品にご興味をお持ちいただき、また当社コミュニティに貢献していただき、ありがとうございます。 リファレンスマニュアルの77.3.1 ボーレート生成セクションを参照してください。 この情報が役に立つことを願います。
View full article
我可以在哪里获得演示图像 我有一个 i.mx93 evk。 我可以在哪里获得演示图像?
View full article
S32K144 EEPROMのデータの書き込み問題 AN11983にS32K144のEEPROMの設定を依頼し、0x14000000 0x14000004など4アドレスごとに正常にデータを書き込むことができますが、上記のアドレスでない場合、例えばデータが0x14000001 0x14000002 0x14000003に書き込まれている場合などは、「F:\...\...\Debug_FLASH/../Project_Settings/Startup_Code/startup_S32K144 です。S」が表示されますが、どこがうまく設定されていないのか、それとも他の理由なのか聞いてもいいですか?
View full article
S32K3 SHE key update 1. In K3 HSE_B Firmware RM document, FID is defined by 6 bit, so K3 not support to FID-5bit, right?[In K146 chip, FID not only support to 6 bit, but also 5 bit.] So, in S32K3, if use FID-5bit to generate M1-M3, SHE key cannot be updated, right? JiayuZhou_0-1728703913045.png 2. In S32K3 MCAL's crypto driver, SHE key's M4 stored in key element 2(CRYPTO_KE_MAC_PROOF), and M5 stored in key element 6(CRYPTO_KE_CIPHER_PROOF). but, As far as I know, M4M5 should store in key element 2, not element 6. Does NXP's crypto code not comply with autosar standard? JiayuZhou_1-1728704593426.png Re: S32K3 SHE key update 1. There's no difference. According to SHE specification, FID is used only for M2 calculation and it looks like this: lukaszadrapa_0-1729068195045.png So, M2 is the CBC-encrypted concatenation of the new counter value CID, the according flags FID, a pattern to fill the first block with ‘0’ bits and the new key KID. VERIFY_ONLY extension flag is added to the end of FID - it replaces the first zero in that 95bits padding. If you keep VERIFY_ONLY zero, it meets SHE specification. No other changes are necessary, no specific HSE firmware is needed. The behavior will correspond to SHE spec without this extension. 2. As I wrote, this was reported short time ago, it's not resolved yet. I expect that only the CRYPTO_KE_CIPHER_PROOF definition will be changed from 6 to 2 as required by the standard. And because it's not resolved yet, I can't provide expected release date. Regards, Lukas Re: S32K3 SHE key update Hi,lukaszadrapa, 1.In your figure, S32K3 don't have SFE flag like S32K1, so it only support to FID 6 bit, can not meet to FID 5bit, because it must configure VERIFY_ONLY bit. Wether NXP provide HSE firmware to support to use FID 5bit? 2.when is the next RTD provide? Can you provide a way to modify the relevant code in the current RTD? We‘re using this RTD to develop SW currently and already need to use this function. Re: S32K3 SHE key update Hi @JiayuZhou  1. This extension of SHE spec is available on both CSEc on K1 and HSE on K3. It’s up to you if you will use it or not. Both options are possible: From AN5401 for S32K1: lukaszadrapa_0-1728994930679.png  From HSE FW RM for S32K3: lukaszadrapa_1-1728995010732.png 2. Yes, you are right. I can see that this was already reported short time ago. This will be fixed in next RTD versions in the near future. Regards, Lukas
View full article
İ.MX8 Dual Camera Under Single MIPI CSI Hi all, I want to get stream from two of my cameras in single MIPI CSI. Currently I have the setup below: kayakaantuna_0-1729161764913.png I did find some useful information on the below forum post: bring up dual Camera under single mipi csi  however, those modifications didn't work for me, but it was a good head start. I change the device tree like below: fragment@9 { target = <&irqsteer_csi0>; __overlay__ { status = "okay"; }; }; fragment@10 { target = <&irqsteer_csi1>; __overlay__ { status = "okay"; }; }; fragment@11 { target = <&mipi_csi_0>; __overlay__ { #address-cells = <1>; #size-cells = <0>; status = "okay"; /* Camera 0 MIPI CSI-2 (CSIS0) */ port@0 { reg = <0>; mipi_csi0_ep_0: endpoint { remote-endpoint = <&as0149_serdes_ep_0>; data-lanes = <1 2>; csis-hs-settle = <10>; }; }; port@2 { reg = <2>; mipi_csi0_ep_1: endpoint { remote-endpoint = <&as0149_serdes_ep_1>; data-lanes = <1 2>; csis-hs-settle = <10>; }; }; }; }; fragment@12 { target = <&isi_0>; __overlay__ { status = "okay"; cap_device { status = "okay"; }; m2m_device { status = "okay"; }; }; }; fragment@12 { target = <&isi_1>; __overlay__ { status = "okay"; cap_device { status = "okay"; }; m2m_device { status = "okay"; }; }; }; fragment@13 { target = <&mipi_csi_1>; __overlay__ { #address-cells = <1>; #size-cells = <0>; status = "okay"; /* Camera 2 MIPI CSI-2 (CSIS2) */ port@1 { reg = <1>; mipi_csi1_ep_0: endpoint { remote-endpoint = <&as0149_serdes_ep_2>; data-lanes = <1 2>; }; }; port@3 { reg = <3>; mipi_csi1_ep_1: endpoint { remote-endpoint = <&as0149_serdes_ep_3>; data-lanes = <1 2>; }; }; /* Camera 3 MIPI CSI-2 (CSIS3) */ }; }; fragment@14 { target = <&isi_4>; __overlay__ { status = "okay"; cap_device { status = "okay"; }; m2m_device { status = "okay"; }; }; }; fragment@14 { target = <&isi_5>; __overlay__ { status = "okay"; cap_device { status = "okay"; }; m2m_device { status = "okay"; }; }; }; };   and here is the changes I made on the `imx8-mipi-csi2-sam.c` and `imx8-media-dev.c`.  diff --git a/drivers/staging/media/imx/imx8-media-dev.c b/drivers/staging/media/imx/imx8-media-dev.c index 0d0355844eab..c18a1b15265f 100644 --- a/drivers/staging/media/imx/imx8-media-dev.c +++ b/drivers/staging/media/imx/imx8-media-dev.c @@ -35,8 +35,8 @@ #define ISI_OF_NODE_NAME "isi" #define MIPI_CSI2_OF_NODE_NAME "csi" -#define MXC_MAX_SENSORS 3 -#define MXC_MIPI_CSI2_MAX_DEVS 2 +#define MXC_MAX_SENSORS 4 +#define MXC_MIPI_CSI2_MAX_DEVS 4 #define MXC_NAME_LENS 32 @@ -516,6 +516,7 @@ static int mxc_md_create_links(struct mxc_md *mxc_md) source->name, sink->name); } else if (mxc_md->mipi_csi2[sensor->id].sd) { mipi_csi2 = &mxc_md->mipi_csi2[sensor->id]; + v4l2_info(&mxc_md->v4l2_dev, "sensor->id is (%d)\n", sensor->id);//joan source = &sensor->sd->entity; sink = find_entity_by_name(mxc_md, mipi_csi2->sd_name); @@ -523,7 +524,9 @@ static int mxc_md_create_links(struct mxc_md *mxc_md) sink_pad = source_pad; mipi_vc = (mipi_csi2->vchannel) ? 4 : 1; + v4l2_info(&mxc_md->v4l2_dev, "mipi_vc is (%d)\n", mipi_vc); for (j = 0; j < mipi_vc; j++) { + v4l2_info(&mxc_md->v4l2_dev, "j is (%d)\n", j); ret = media_create_pad_link(source, source_pad + j, sink, @@ -958,8 +961,8 @@ static int mxc_md_register_platform_entities(struct mxc_md *mxc_md, static int register_sensor_entities(struct mxc_md *mxc_md) { struct device_node *parent = mxc_md->pdev->dev.of_node; - struct device_node *node, *ep, *rem; - struct v4l2_fwnode_endpoint endpoint; + struct device_node *node, *ep, *ep1, *rem, *rem1; + struct v4l2_fwnode_endpoint endpoint, endpoint1; struct i2c_client *client; struct v4l2_async_subdev *asd; int index = 0; @@ -967,9 +970,12 @@ static int register_sensor_entities(struct mxc_md *mxc_md) mxc_md->num_sensors = 0; + v4l2_info(&mxc_md->v4l2_dev, "port full name is %s\n", mxc_md->pdev->dev.of_node->name);//joan + /* Attach sensors linked to MIPI CSI2 / paralle csi / HDMI Rx */ for_each_available_child_of_node(parent, node) { struct device_node *port; + struct device_node *port1; if (!of_node_cmp(node->name, HDMI_RX_OF_NODE_NAME)) { mxc_md->sensor[index].fwnode = of_fwnode_handle(node); @@ -990,16 +996,25 @@ static int register_sensor_entities(struct mxc_md *mxc_md) continue; /* csi2 node have only port */ - port = of_get_next_child(node, NULL); + //port = of_get_next_child(node, NULL);//joan + port1 = of_get_next_child(node, NULL);//joan + port = of_get_next_child(node, port1);//joan + v4l2_info(&mxc_md->v4l2_dev, "port full name is %s\n", port->full_name);//joan + v4l2_info(&mxc_md->v4l2_dev, "port name is %s\n", port->name);//joan if (!port) continue; /* port can have only endpoint */ ep = of_get_next_child(port, NULL); + ep1 = of_get_next_child(port1, NULL); + v4l2_info(&mxc_md->v4l2_dev, "ep full name is %s and ep name is %s\n", ep->full_name, ep->name);//joan + if (!ep) return -EINVAL; memset(&endpoint, 0, sizeof(endpoint)); + memset(&endpoint1, 0, sizeof(endpoint1)); + ret = v4l2_fwnode_endpoint_parse(of_fwnode_handle(ep1), &endpoint1); ret = v4l2_fwnode_endpoint_parse(of_fwnode_handle(ep), &endpoint); if (WARN_ON(endpoint.base.port >= MXC_MAX_SENSORS || ret)) { v4l2_err(&mxc_md->v4l2_dev, @@ -1007,14 +1022,21 @@ static int register_sensor_entities(struct mxc_md *mxc_md) return -EINVAL; } + if (endpoint1.base.port ==2)//joan + endpoint1.base.port=0; //joan + if (endpoint1.base.port ==3)//joan + endpoint1.base.port=1; //joan mxc_md->sensor[index].id = endpoint.base.port; + mxc_md->sensor[index+1].id = endpoint1.base.port; if (!of_node_cmp(node->name, MIPI_CSI2_OF_NODE_NAME)) mxc_md->sensor[index].mipi_mode = true; /* remote port---sensor node */ + rem1 = of_graph_get_remote_port_parent(ep1); rem = of_graph_get_remote_port_parent(ep); of_node_put(ep); + of_node_put(ep1); if (!rem) { v4l2_info(&mxc_md->v4l2_dev, "Remote device at %s not found\n", @@ -1025,6 +1047,7 @@ static int register_sensor_entities(struct mxc_md *mxc_md) /* * Need to wait sensor driver probed for the first time */ + client = of_find_i2c_device_by_node(rem1); client = of_find_i2c_device_by_node(rem); if (!client) { v4l2_info(&mxc_md->v4l2_dev, @@ -1033,7 +1056,12 @@ static int register_sensor_entities(struct mxc_md *mxc_md) return -EPROBE_DEFER; } + mxc_md->sensor[index+1].fwnode = of_fwnode_handle(rem1); mxc_md->sensor[index].fwnode = of_fwnode_handle(rem); + asd = v4l2_async_notifier_add_fwnode_subdev( + &mxc_md->subdev_notifier, + mxc_md->sensor[index+1].fwnode, + struct v4l2_async_subdev); asd = v4l2_async_notifier_add_fwnode_subdev( &mxc_md->subdev_notifier, mxc_md->sensor[index].fwnode, @@ -1043,9 +1071,9 @@ static int register_sensor_entities(struct mxc_md *mxc_md) return PTR_ERR(asd); } - mxc_md->num_sensors++; + mxc_md->num_sensors += 2; - index++; + index += 2; } return 0; @@ -1118,8 +1146,8 @@ static int mxc_md_probe(struct platform_device *pdev) mxc_md_clean_unlink_channels(mxc_md); } else { /* no sensors connected */ - mxc_md_unregister_all(mxc_md); - v4l2_async_notifier_unregister(&mxc_md->subdev_notifier); + //mxc_md_unregister_all(mxc_md); + //v4l2_async_notifier_unregister(&mxc_md->subdev_notifier); } } } @@ -1168,7 +1196,19 @@ static struct platform_driver mxc_md_driver = { .remove = mxc_md_remove, }; -module_platform_driver(mxc_md_driver); + +static int __init mxc_md_driver_init(void) +{ + return platform_driver_register(&mxc_md_driver); +} + +static void __exit mxc_md_driver_exit(void) +{ + platform_driver_unregister(&mxc_md_driver); +} + +late_initcall(mxc_md_driver_init); +module_exit(mxc_md_driver_exit); MODULE_AUTHOR("Freescale Semiconductor, Inc."); MODULE_DESCRIPTION("MXC Media Device driver"); diff --git a/drivers/staging/media/imx/imx8-mipi-csi2-sam.c b/drivers/staging/media/imx/imx8-mipi-csi2-sam.c index 1d12365520a6..c94dd8ee721d 100644 --- a/drivers/staging/media/imx/imx8-mipi-csi2-sam.c +++ b/drivers/staging/media/imx/imx8-mipi-csi2-sam.c @@ -46,7 +46,7 @@ #define CSIS_DRIVER_NAME "mxc-mipi-csi2-sam" #define CSIS_SUBDEV_NAME "mxc-mipi-csi2" -#define CSIS_MAX_ENTITIES 2 +#define CSIS_MAX_ENTITIES 4 #define CSIS0_MAX_LANES 4 #define CSIS1_MAX_LANES 2 @@ -1486,6 +1486,7 @@ static int mipi_csis_parse_dt(struct platform_device *pdev, struct csi_state *state) { struct device_node *node = pdev->dev.of_node; + struct device_node *node1; state->index = of_alias_get_id(node, "csi"); @@ -1495,7 +1496,9 @@ static int mipi_csis_parse_dt(struct platform_device *pdev, if (of_property_read_u32(node, "bus-width", &state->max_num_lanes)) return -EINVAL; - node = of_graph_get_next_endpoint(node, NULL); + //node = of_graph_get_next_endpoint(node, NULL); + node1 = of_graph_get_next_endpoint(node, NULL); + node = of_graph_get_next_endpoint(node, node1); if (!node) { dev_err(&pdev->dev, "No port node\n"); return -EINVAL; @@ -1505,10 +1508,14 @@ static int mipi_csis_parse_dt(struct platform_device *pdev, of_property_read_u32(node, "csis-hs-settle", &state->hs_settle); of_property_read_u32(node, "csis-clk-settle", &state->clk_settle); of_property_read_u32(node, "data-lanes", &state->num_lanes); + of_property_read_u32(node1, "csis-hs-settle", &state->hs_settle); + of_property_read_u32(node1, "csis-clk-settle", &state->clk_settle); + of_property_read_u32(node1, "data-lanes", &state->num_lanes); state->wclk_ext = of_property_read_bool(node, "csis-wclk"); of_node_put(node); + of_node_put(node1); return 0; } with the above changes I manage to get this log from the dmesg: [ 13.882103] mxc-mipi-csi2 58227000.csi: lanes: 2, name: mxc-mipi-csi2.0 [ 13.910417] mxc-mipi-csi2 58247000.csi: lanes: 2, name: mxc-mipi-csi2.1 [ 13.925936] mxc-isi 58110000.isi: mxc_isi.1 registered successfully [ 13.933616] mxc-isi 58150000.isi: mxc_isi.5 registered successfully [ 13.945677] mx8-img-md: Registered mxc_isi.1.capture as /dev/video2 [ 13.952694] mx8-img-md: Registered mxc_isi.5.capture as /dev/video3 [ 13.959160] mx8-img-md: port full name is camera [ 13.963813] mx8-img-md: port full name is port@0 [ 13.968440] mx8-img-md: port name is port [ 13.972455] mx8-img-md: ep full name is endpoint and ep name is endpoint [ 13.979270] mx8-img-md: port full name is port@1 [ 13.983896] mx8-img-md: port name is port [ 13.987913] mx8-img-md: ep full name is endpoint and ep name is endpoint [ 13.994738] mx8-img-md: Registered sensor subdevice: as0149 3-005f (1) [ 14.002070] mx8-img-md: Registered sensor subdevice: as0149 3-005e (2) [ 14.009413] mx8-img-md: created link [mxc_isi.1] => [mxc_isi.1.capture] [ 14.016050] mx8-img-md: created link [mxc-mipi-csi2.0] => [mxc_isi.1] [ 14.022527] mx8-img-md: created link [mxc_isi.5] => [mxc_isi.5.capture] [ 14.029150] mx8-img-md: created link [mxc-mipi-csi2.1] => [mxc_isi.5] [ 14.035616] mx8-img-md: sensor->id is (1) [ 14.039634] mx8-img-md: mipi_vc is (1) [ 14.043386] mx8-img-md: j is (0) [ 14.046632] mx8-img-md: created link [as0149 3-005f] => [mxc-mipi-csi2.1] [ 14.054212] mx8-img-md: sensor->id is (1) [ 14.058238] mx8-img-md: mipi_vc is (1) [ 14.061997] mx8-img-md: j is (0) [ 14.065228] mx8-img-md: created link [as0149 3-005e] => [mxc-mipi-csi2.1] [ 14.072817] mxc-md bus@58000000:camera: mxc_md_create_links [ 14.078833] mxc-md bus@58000000:camera: mxc_md_do_clean get remote pad fail [ 14.085829] mxc_md_clean_unlink_channels: clean channel fail(0) however as you can see I have a remote pad fail error, and also below error: [ 18.034390] mxc-mipi-csi2.0: is_entity_link_setup, No remote pad found! I can see that it links on the media-ctl: root@sm2s-imx8:~/test-suite/camera# media-ctl -p -d 1 Media controller API version 5.15.71 Media device information ------------------------ driver mxc-md model FSL Capture Media Device serial bus info hw revision 0x0 driver version 5.15.71 Device topology - entity 1: mxc_isi.1 (16 pads, 2 links) type V4L2 subdev subtype Unknown flags 0 pad0: Sink pad1: Sink <- "mxc-mipi-csi2.0":5 [ENABLED] pad2: Sink pad3: Sink pad4: Sink pad5: Sink pad6: Sink pad7: Sink pad8: Sink pad9: Sink pad10: Sink pad11: Sink pad12: Source -> "mxc_isi.1.capture":0 [ENABLED] pad13: Source pad14: Source pad15: Sink - entity 18: mxc_isi.1.capture (1 pad, 1 link) type Node subtype V4L flags 0 device node name /dev/video2 pad0: Sink <- "mxc_isi.1":12 [ENABLED] - entity 22: mxc_isi.5 (16 pads, 2 links) type V4L2 subdev subtype Unknown flags 0 pad0: Sink pad1: Sink pad2: Sink pad3: Sink pad4: Sink pad5: Sink <- "mxc-mipi-csi2.1":5 [ENABLED] pad6: Sink pad7: Sink pad8: Sink pad9: Sink pad10: Sink pad11: Sink pad12: Source -> "mxc_isi.5.capture":0 [ENABLED] pad13: Source pad14: Source pad15: Sink - entity 39: mxc_isi.5.capture (1 pad, 1 link) type Node subtype V4L flags 0 device node name /dev/video3 pad0: Sink <- "mxc_isi.5":12 [ENABLED] - entity 43: mxc-mipi-csi2.0 (8 pads, 1 link) type Node subtype V4L flags 0 device node name /dev/v4l-subdev0 pad0: Sink pad1: Sink pad2: Sink pad3: Sink pad4: Source pad5: Source -> "mxc_isi.1":1 [ENABLED] pad6: Source pad7: Source - entity 52: mxc-mipi-csi2.1 (8 pads, 3 links) type Node subtype V4L flags 0 device node name /dev/v4l-subdev1 pad0: Sink <- "as0149 3-005f":0 [ENABLED,IMMUTABLE] <- "as0149 3-005e":0 [ENABLED,IMMUTABLE] pad1: Sink pad2: Sink pad3: Sink pad4: Source pad5: Source -> "mxc_isi.5":5 [ENABLED] pad6: Source pad7: Source - entity 61: as0149 3-005f (1 pad, 1 link) type V4L2 subdev subtype Sensor flags 0 pad0: Source -> "mxc-mipi-csi2.1":0 [ENABLED,IMMUTABLE] - entity 63: as0149 3-005e (1 pad, 1 link) type V4L2 subdev subtype Sensor flags 0 pad0: Source -> "mxc-mipi-csi2.1":0 [ENABLED,IMMUTABLE] however when I try to stream I get the following error: [ 1271.639925] subdev->entity.num_pads = 16 [ 1271.639952] subdev->entity.num_pads = 8 [ 1271.644613] mxc-mipi-csi2.0: is_entity_link_setup, No remote pad found! [ 1271.655623] subdev->entity.num_pads = 16 [ 1271.655638] subdev->entity.num_pads = 8 [ 1271.659931] subdev->entity.num_pads = 16 [ 1271.685547] subdev->entity.num_pads = 16 [ 1271.689520] subdev->entity.num_pads = 8 [ 1271.693488] mxc-mipi-csi2.0: is_entity_link_setup, No remote pad found! [ 1271.706157] subdev->entity.num_pads = 16 [ 1271.706178] mxc-mipi-csi2.0: mipi_csi2_enum_framesizes, No remote pad found! [ 1271.717394] subdev->entity.num_pads = 16 [ 1271.717408] mxc-mipi-csi2.0: mipi_csi2_enum_framesizes, No remote pad found! [ 1271.728498] subdev->entity.num_pads = 16 [ 1271.728509] mxc-mipi-csi2.0: mipi_csi2_enum_framesizes, No remote pad found! [ 1271.739767] subdev->entity.num_pads = 16 [ 1271.739788] mxc-mipi-csi2.0: mipi_csi2_enum_framesizes, No remote pad found! [ 1271.754653] subdev->entity.num_pads = 16 [ 1271.754669] mxc-mipi-csi2.0: mipi_csi2_enum_framesizes, No remote pad found! [ 1271.768329] subdev->entity.num_pads = 16 [ 1271.768344] mxc-mipi-csi2.0: mipi_csi2_enum_framesizes, No remote pad found! [ 1271.779549] subdev->entity.num_pads = 16 [ 1271.779561] mxc-mipi-csi2.0: mipi_csi2_enum_framesizes, No remote pad found! [ 1271.790708] subdev->entity.num_pads = 16 [ 1271.790727] mxc-mipi-csi2.0: mipi_csi2_enum_framesizes, No remote pad found! [ 1271.803980] subdev->entity.num_pads = 16 [ 1271.803996] mxc-mipi-csi2.0: mipi_csi2_g_frame_interval, No remote pad found! [ 1271.837543] subdev->entity.num_pads = 16 [ 1271.837568] mxc-mipi-csi2.0: mipi_csi2_s_power, No remote pad found! [ 1271.847946] mxc_isi.1: Call subdev s_power fail! maybe if I solve the padding error I might able to get a stream ? hopefully :). Can you help me on this ? I kind of stuck at this.  Thanks! i.MX 8 Family | i.MX 8QuadMax (8QM) | 8QuadPlus Re: İ.MX8 Dual Camera Under Single MIPI CSI Hi all, Below you can find how you can create virtual channels in i.mx8 board. I manage to create 4 virtual channels and get a stream from all 4 of them: diff --git a/drivers/staging/media/imx/imx8-media-dev.c b/drivers/staging/media/imx/imx8-media-dev.c index 0d0355844..4d86eadc0 100644 --- a/drivers/staging/media/imx/imx8-media-dev.c +++ b/drivers/staging/media/imx/imx8-media-dev.c @@ -35,8 +35,8 @@ #define ISI_OF_NODE_NAME "isi" #define MIPI_CSI2_OF_NODE_NAME "csi" -#define MXC_MAX_SENSORS 3 -#define MXC_MIPI_CSI2_MAX_DEVS 2 +#define MXC_MAX_SENSORS 4 +#define MXC_MIPI_CSI2_MAX_DEVS 4 #define MXC_NAME_LENS 32 @@ -515,7 +517,11 @@ static int mxc_md_create_links(struct mxc_md *mxc_md) "created link [%s] => [%s]\n", source->name, sink->name); } else if (mxc_md->mipi_csi2[sensor->id].sd) { - mipi_csi2 = &mxc_md->mipi_csi2[sensor->id]; + if(mxc_md->mipi_csi2[i].sd == 0) + mipi_csi2 = &mxc_md->mipi_csi2[1]; + else + mipi_csi2 = &mxc_md->mipi_csi2[0]; + v4l2_info(&mxc_md->v4l2_dev, "sensor->id is (%d)\n", sensor->id); source = &sensor->sd->entity; sink = find_entity_by_name(mxc_md, mipi_csi2->sd_name); @@ -523,7 +529,12 @@ static int mxc_md_create_links(struct mxc_md *mxc_md) sink_pad = source_pad; mipi_vc = (mipi_csi2->vchannel) ? 4 : 1; + v4l2_info(&mxc_md->v4l2_dev, "mipi_vc is (%d)\n", mipi_vc); for (j = 0; j < mipi_vc; j++) { + v4l2_info(&mxc_md->v4l2_dev, "j is (%d), sink pad is (%d), source_pad is (%d)\n", j, sink_pad, source_pad); + if(sensor->id == 1) + sink_pad++; + ret = media_create_pad_link(source, source_pad + j, sink, @@ -958,8 +969,8 @@ static int mxc_md_register_platform_entities(struct mxc_md *mxc_md, static int register_sensor_entities(struct mxc_md *mxc_md) { struct device_node *parent = mxc_md->pdev->dev.of_node; - struct device_node *node, *ep, *rem; - struct v4l2_fwnode_endpoint endpoint; + struct device_node *node, *ep, *ep1, *rem, *rem1; + struct v4l2_fwnode_endpoint endpoint, endpoint1; struct i2c_client *client; struct v4l2_async_subdev *asd; int index = 0; @@ -967,9 +978,12 @@ static int register_sensor_entities(struct mxc_md *mxc_md) mxc_md->num_sensors = 0; + v4l2_info(&mxc_md->v4l2_dev, "port full name is %s\n", mxc_md->pdev->dev.of_node->name); + /* Attach sensors linked to MIPI CSI2 / paralle csi / HDMI Rx */ for_each_available_child_of_node(parent, node) { struct device_node *port; + struct device_node *port1; if (!of_node_cmp(node->name, HDMI_RX_OF_NODE_NAME)) { mxc_md->sensor[index].fwnode = of_fwnode_handle(node); @@ -990,16 +1004,25 @@ static int register_sensor_entities(struct mxc_md *mxc_md) continue; /* csi2 node have only port */ - port = of_get_next_child(node, NULL); + //port = of_get_next_child(node, NULL); + port1 = of_get_next_child(node, NULL); + port = of_get_next_child(node, port1); + v4l2_info(&mxc_md->v4l2_dev, "port full name is %s\n", port->full_name); + v4l2_info(&mxc_md->v4l2_dev, "port name is %s\n", port->name); if (!port) continue; /* port can have only endpoint */ ep = of_get_next_child(port, NULL); + ep1 = of_get_next_child(port1, NULL); + v4l2_info(&mxc_md->v4l2_dev, "ep full name is %s and ep name is %s\n", ep->full_name, ep->name); + if (!ep) return -EINVAL; memset(&endpoint, 0, sizeof(endpoint)); + memset(&endpoint1, 0, sizeof(endpoint1)); + ret = v4l2_fwnode_endpoint_parse(of_fwnode_handle(ep1), &endpoint1); ret = v4l2_fwnode_endpoint_parse(of_fwnode_handle(ep), &endpoint); if (WARN_ON(endpoint.base.port >= MXC_MAX_SENSORS || ret)) { v4l2_err(&mxc_md->v4l2_dev, @@ -1007,14 +1030,21 @@ static int register_sensor_entities(struct mxc_md *mxc_md) return -EINVAL; } + if (endpoint1.base.port ==2) + endpoint1.base.port=1; mxc_md->sensor[index].id = endpoint.base.port; + mxc_md->sensor[index+1].id = endpoint1.base.port; if (!of_node_cmp(node->name, MIPI_CSI2_OF_NODE_NAME)) mxc_md->sensor[index].mipi_mode = true; /* remote port---sensor node */ + rem1 = of_graph_get_remote_port_parent(ep1); rem = of_graph_get_remote_port_parent(ep); of_node_put(ep); + of_node_put(ep1); if (!rem) { v4l2_info(&mxc_md->v4l2_dev, "Remote device at %s not found\n", @@ -1025,6 +1055,7 @@ static int register_sensor_entities(struct mxc_md *mxc_md) /* * Need to wait sensor driver probed for the first time */ + client = of_find_i2c_device_by_node(rem1); client = of_find_i2c_device_by_node(rem); if (!client) { v4l2_info(&mxc_md->v4l2_dev, @@ -1033,7 +1064,12 @@ static int register_sensor_entities(struct mxc_md *mxc_md) return -EPROBE_DEFER; } + mxc_md->sensor[index+1].fwnode = of_fwnode_handle(rem1); mxc_md->sensor[index].fwnode = of_fwnode_handle(rem); + asd = v4l2_async_notifier_add_fwnode_subdev( + &mxc_md->subdev_notifier, + mxc_md->sensor[index+1].fwnode, + struct v4l2_async_subdev); asd = v4l2_async_notifier_add_fwnode_subdev( &mxc_md->subdev_notifier, mxc_md->sensor[index].fwnode, @@ -1043,9 +1079,9 @@ static int register_sensor_entities(struct mxc_md *mxc_md) return PTR_ERR(asd); } - mxc_md->num_sensors++; + mxc_md->num_sensors += 2; - index++; + index += 2; } return 0; diff --git a/drivers/staging/media/imx/imx8-mipi-csi2-sam.c b/drivers/staging/media/imx/imx8-mipi-csi2-sam.c index 1d1236552..d2ba5c890 100644 --- a/drivers/staging/media/imx/imx8-mipi-csi2-sam.c +++ b/drivers/staging/media/imx/imx8-mipi-csi2-sam.c @@ -46,7 +46,7 @@ #define CSIS_DRIVER_NAME "mxc-mipi-csi2-sam" #define CSIS_SUBDEV_NAME "mxc-mipi-csi2" -#define CSIS_MAX_ENTITIES 2 +#define CSIS_MAX_ENTITIES 4 #define CSIS0_MAX_LANES 4 #define CSIS1_MAX_LANES 2 @@ -1486,6 +1486,7 @@ static int mipi_csis_parse_dt(struct platform_device *pdev, struct csi_state *state) { struct device_node *node = pdev->dev.of_node; + struct device_node *node1; state->index = of_alias_get_id(node, "csi"); @@ -1495,7 +1496,9 @@ static int mipi_csis_parse_dt(struct platform_device *pdev, if (of_property_read_u32(node, "bus-width", &state->max_num_lanes)) return -EINVAL; - node = of_graph_get_next_endpoint(node, NULL); + //node = of_graph_get_next_endpoint(node, NULL); + node1 = of_graph_get_next_endpoint(node, NULL); + node = of_graph_get_next_endpoint(node, node1); if (!node) { dev_err(&pdev->dev, "No port node\n"); return -EINVAL; its very messy way to do such thing but for now, it works without an issue.  The above code basically parses device tree and connects two cameras into csi2.0 and other two to csi2.1. And since we have isi subdevices you can get a stream from all 4 of them. Hopefully this will help someone in future.   Re: İ.MX8 Dual Camera Under Single MIPI CSI Hello @B target=_blankio_TICFSL, I check out the latest BSP, if I understood it correctly, the approach is basically didn't changed. I can get some output from video3 and video4, which is both connected to csi2.0. [ 14.313983] mx8-img-md: num_sensors is (4) [ 14.318097] mx8-img-md: sensor is (as0149 2-005f), sd (69904512) [ 14.324920] mx8-img-md: sensor->id is (0) [ 14.328947] mx8-img-md: mipi_vc is (1) [ 14.332708] mx8-img-md: j is (0) [ 14.335973] mx8-img-md: created link [as0149 2-005f] => [mxc-mipi-csi2.0] [ 14.343561] mx8-img-md: sensor is (as0149 2-005e), sd (70127744) [ 14.350392] mx8-img-md: sensor->id is (1) [ 14.354419] mx8-img-md: mipi_vc is (1) [ 14.358179] mx8-img-md: j is (0) [ 14.361413] mx8-img-md: created link [as0149 2-005e] => [mxc-mipi-csi2.0] [ 14.369019] mx8-img-md: sensor is ((efault)), sd (0) [ 14.374009] mx8-img-md: sensor is ((efault)), sd (0) [ 14.378987] mxc-md bus@58000000:camera: mxc_md_create_links but the output is green, and at the top of the screen there are statics. Like below: kayakaantuna_0-1729490439884.jpeg How can I possibly solve this ? Also from media-ctl -p -d 1: - entity 85: mxc-mipi-csi2.0 (8 pads, 4 links) type Node subtype V4L flags 0 device node name /dev/v4l-subdev0 pad0: Sink <- "as0149 2-005f":0 [ENABLED,IMMUTABLE] <- "as0149 2-005e":0 [ENABLED,IMMUTABLE] pad1: Sink pad2: Sink pad3: Sink pad4: Source -> "mxc_isi.0":0 [ENABLED] pad5: Source -> "mxc_isi.1":1 [ENABLED] pad6: Source pad7: Source I see both of my cameras connected to port0, which basically means when I try to stream from video3 or video4 both of my cameras tries to go into stream. May be this is the problem why I'm getting the green screen output from the MIPI CSI ? I appreciate any help I can get on this.  Thanks. Re: İ.MX8 Dual Camera Under Single MIPI CSI Hi, My kernel version is 5.15.71_2.2.0, the one you linked is Linux 6.6.36_2.1.0. Is it possible to compare the changes and apply it on my own and work it that way ? Thanks. Re: İ.MX8 Dual Camera Under Single MIPI CSI Hi, https://www.nxp.com/design/design-center/software/embedded-software/i-mx-software/embedded-linux-for-i-mx-applications-processors:IMXLINUX Regards Re: İ.MX8 Dual Camera Under Single MIPI CSI Hello Bio_TICFSL, Yes I connect my camera into mipi_csi_1. Where can I find the `latest BSP` ?  thanks Re: İ.MX8 Dual Camera Under Single MIPI CSI Hello, Have you connected the MIPI port? since it looks like you are not attached nothing on it, please try the latest BSP it include support for dual camera, but check your hardware camera firts. Regards
View full article
The S32DS license for ARM 2018R1 is expiring soon Hello, my license of S32 Design Studio for ARM Version 2018.R1 expiration soon Could you please extend it ? Thanks.  My activation Code: 0D34-286B-9EE6-E692 Thanks a lot Re: The S32DS license for ARM 2018R1 is expiring soon It's ok, thank you very much Re: The S32DS license for ARM 2018R1 is expiring soon Hi,  your S32DS License has been extended. Please activate S32DS again with your old code. 
View full article
HSE S32K358 ステータス・レジスタが 0 を返す fptheophile_0-1730124559124.png HSE_FW_ABSWAP_2.40をインストールしましたが、そしてこれまでのところ、乱数生成、署名検証などのサービスを使用することができました。しかし、何らかの理由で、ステータスレジスタを読み取ろうとすると、FSRでは0しか表示されませんが、実際にそうであればHSEサービスを使用することさえできないはずなので、正常ではありません。 何が原因なのかわかりません。 ありがとうございました。 よろしくお願いします。 Re: HSE S32K358 Status レジスタが 0 を返す クイックアップデート、実際にはあなたが正しかったそれは私の問題を解決しました。 私はチャンネル0でいくつかのステータスを持っています、ありがとう! Re: HSE S32K358 Status レジスタが 0 を返す 遅くなってすみません、今週は確認できなくて。来週の月曜日にボードを受け取る必要があります。
View full article
LS1046A DMA功能 LS1046 上的 DMA 控制器是否支持 DMA 链接模式,其中链中的每个链接对应一个 DMA 描述符,并且在链初始化和启动后,DMA 控制器会自动按顺序完成所有 DMA 操作? 回复:LS1046A DMA功能 是的,它支持这个功能。 回复:LS1046A DMA功能 那么如果我们按照这些步骤,LS1046应该支持这个功能吗? 回复:LS1046A DMA功能 那么如果我们按照这些步骤,LS1046应该支持这个功能吗? 回复:LS1046A DMA功能 通道链接(或链接)是一种机制,其中一个通道设置 另一个通道(或其自身)的 TCDn_CSR[START] 位,从而启动服务 请求该频道。当正确启用时,EDMA 引擎会自动 在主循环或次循环完成时执行此操作。 详情请参考LS1046ARM.pdf中的“18.6.6通道链接”。
View full article