Multi Source Translation Content

キャンセル
次の結果を表示 
表示  限定  | 次の代わりに検索 
もしかして: 

Multi Source Translation Content

ディスカッション

ソート順:
在 FRDM-K64F 上使用 MCUxpresso 25.6 时出现未定义的 SD 卡符号 我想在我的项目中使用 SD 卡来加载双向无线电系统的个人个性化数据。我收到 #include "tx_api.h"并且 #include "tx_event_flags.h" 未定义。 这是因为我没有在 SDK 中包含 Azure RTOS。 我尝试使用“管理 SDK 组件”将 Azure 安装到 SDK 中来解决这个问题,但显然 Azure RTOS 支持在 2.11 版本中被取消了,而我在发现这个问题之前已经为项目加载了该版本。 所以我在线创建了一个新的 SDK,但为了获得 Azure 支持,它又降级到了 2.10 版本。但是,当我尝试更改项目的 SDK 时,它不允许我删除我已有的 SDK,当我尝试添加另一个 SDK 时,它告诉我 SDK 2.x_FRDM-K64F 已经存在。 我如何获得 Azure 支持?我只需要它来访问SD卡! Re: Undefined SD Card symbols using MCUxpresso 25.6 on FRDM-K64F 你好@ve3id , 感谢你的帖子。 提醒一下,在 FRDM-K64F 上,SDK 已经提供了基于 SDHC + FatFs 的 SD 卡文件系统示例,而 FatFs 可以在裸机模式下运行,无需 RTOS。FRDM-K64F SDK 示例包括 frdmk64f_driver_examples_sdcard_fatfs / fatfs_sdcard 风格的项目,用于挂载 SD 卡并执行目录/文件读写操作。 如果您仍然想要 Azure RTOS,对于“SDK 2.x_FRDM-K64F 已存在”的问题,这意味着 IDE 中已经安装了具有该身份的 SDK。MCUXpresso IDE 支持从该视图中删除已安装的 SDK 包。请参考下图进行卸载。 之后,您可以再次尝试安装 SDK v2.10。 希望对您有所帮助。如果您还有其他问题,请告诉我。 BR 塞莱斯特 Re: Undefined SD Card symbols using MCUxpresso 25.6 on FRDM-K64F 谢谢你,塞莱斯特。从文献中并没有明确看出情况确实如此。不过,我已经通过将我的代码复制粘贴到示例中解决了这个问题,现在正在处理下一个问题,即挂载后尝试读取目录时返回零! 干杯 奈杰尔 Re: Undefined SD Card symbols using MCUxpresso 25.6 on FRDM-K64F 你好@ve3id , 不客气,很高兴能帮到您! 如有任何新问题,请随时发帖提问。 BR 塞莱斯特
記事全体を表示
Undefined SD Card symbols using MCUxpresso 25.6 on FRDM-K64F I want to use an SD card in my project to load individual personalisation data fpor a two-way radio system.   I am getting #include "tx_api.h" and #include "tx_event_flags.h" as not defined. This is due to the fact that I did not include azure rtos in the SDK. I try to overcome this by installing azure into the SDK using 'manage sdk components', but I apparently azure rtos support was dropped in 2.11, which I loaded for the project before I saw this problem. So I created a new SDK online, but it drops back to 2.10 to get azure support.  However when I try to change the SDK for my project, it will not let me remove the SDK I have, and when I try to add another one it tells me that SDK 2.x_FRDM-K64F already exists. How can I get azure support.  I only need it for SD card access! Re: Undefined SD Card symbols using MCUxpresso 25.6 on FRDM-K64F Thank you Celeste.  It was not clear from the literature that such was the case.  However I have solved the problem by cutting and pasting my code into the example and have moved on, working on the next problem now which is the fact that it returns zero when trying to read the directory after mounting! Cheers Nigel Re: Undefined SD Card symbols using MCUxpresso 25.6 on FRDM-K64F Hello @ve3id , Thanks for your post. Just a reminder, on FRDM-K64F, the SDK already provides SD card file-system examples based on SDHC + FatFs , and FatFs can run in bare-metal mode without an RTOS, the FRDM-K64F SDK examples include frdmk64f_driver_examples_sdcard_fatfs / fatfs_sdcard style projects for mounting an SD card and doing directory/file read-write operations. If you still want Azure RTOS, for the “SDK 2.x_FRDM-K64F already exists” issue, this means the IDE already has an SDK with that identity installed. MCUXpresso IDE supports deleting installed SDK packages from that view. Please refer to below picture to uninstall. After that, you can try to install SDK v2.10 again. Hope it helps. Please let me know if you have any other questions. BR Celeste Re: Undefined SD Card symbols using MCUxpresso 25.6 on FRDM-K64F Hello @ve3id , You are welcome, glad to help! Any new questions, please feel free to create a new post. BR Celeste
記事全体を表示
S32K328 HSE-B:推荐的采用 Mem_43_INFLS 进行 A/B 交换的架构(无需 Vector FOTA) 您好,NXP团队, 我们目前正处于为运行在 S32K328 上的现有应用程序添加 OTA A/B 交换支持的设计和实施阶段。 这是初步实现,我们是在现有软件的基础上扩展 OTA 功能,而不是集成完整的 FOTA 框架。 当前环境 MCU:S32K328(8 MB P-Flash) AUTOSAR 堆栈:矢量 MICROSAR RTD:S32K3_RTD_6_0_0_QLP04_D2508_ASR_REL_4_7_REV_0000_20250822 二进制传输接口:UART 镜像激活服务:HSE_SRV_ID_ACTIVATE_PASSIVE_BLOCK HSE A/B 切换可通过 RTD 配置实现 OTA 二进制文件通过 UART 由定制的 OTA CDD 接收。 我们目前的 Vector 配置仅包含用于 NvM/Fee (D-Flash) 的 MemAccM。没有用于对应用程序 P-Flash 进行编程的 MemAccM 配置,我们也没有使用 Vector OTA/FOTA。 因此,我们正在考虑使用 OTA CDD 中的 Mem_43_INFLS 直接擦除和编程非活动应用程序闪存。 我们希望就以下几点获得指导。 1. 推荐方法 在不使用 Vector 的 OTA/FOTA 软件包的情况下,Mem_43_INFLS 是否是 A/B 交换设置中管理 OTA 映像编程的推荐底层驱动程序? 或者,MemAccM 是否应该扩展到涵盖 P-Flash 编程,即使是针对自定义 OTA 实现? 2. 非活动闪存块寻址 启用 HSE A/B 切换后: 非活动应用程序 P-Flash 块是否始终通过内存布局中定义的固定物理地址进行访问? HSE 是否为被动模块提供了任何逻辑映射或抽象? 3. 激活的前提条件 成功执行 HSE_SRV_ID_ACTIVATE_PASSIVE_BLOCK 的必要前提条件是什么? 例如: 图像头格式 元数据要求 对齐约束 身份验证/签名要求 闪光状态或属性 4. Flash 控制器并发性 S32K328 上的 C40 闪存控制器是否支持 D-Flash(费用/NvM)和 P-Flash(非活动块)之间的并发操作? 如果不是,那么推荐的同步策略是什么? 应用层调度 RTD司机仲裁 MemAccM 使用情况 5. 推荐架构 以下架构是否符合恩智浦半导体(NXP)的建议? UART ↓ 自定义OTA CDD ↓ Mem_43_INFLS(擦除/写入非活动 P-Flash) ↓ 图像验证 ↓ HSE_SRV_ID_ACTIVATE_PASSIVE_BLOCK ↓ 系统重置 ↓ HSE/BAF激活被动阻断 我们特别想了解这种轻量级方法是否合适,是否符合 HSE 要求。 如果您有任何关于带有 HSE A/B 交换的自定义 OTA 的应用笔记、RTD 示例或参考实现,我们将非常感谢您的指导。 感谢您的支持。 此致, 文卡特什·KV #s32k328 Re: S32K328 HSE-B: Recommended Architecture for A/B Swap using Mem_43_INFLS (without Vector FOTA) 嗨@venkatesh-kv 1.自定义 OTA 实现可以直接使用 Mem_43_INFLS 来擦除和编程被动分区。 MemAccM 是否应该扩展是一个架构决策,主要取决于应用程序是否需要通用的闪存访问和仲裁层。 2. 被动应用程序映像通常使用其物理 P-Flash 地址范围进行编程。HSE 没有为被动块提供专用的逻辑寻址抽象。应用程序/引导加载程序负责将新映像写入非活动分区,之后可以使用 HSE_SRV_ID_ACTIVATE_PASSIVE_BLOCK 在下次 RESET 时激活该分区。 3. 如果使用安全启动,则应相应地更新签名(取决于安全启动模式和其他设置),以便在下次重置后能够成功验证和执行新应用程序。 旧版本的 HSE 固件需要超级用户权限才能执行服务 HSE_SRV_ID_ACTIVATE_PASSIVE_BLOCK。在固件版本 0.2.55.0 及更高版本中,此功能已降级为普通用户权限。 4. 一次只能运行一个闪存操作。闪存访问仲裁的实现由应用程序架构决定。 一般来说,建议避免多个软件组件同时进行闪存操作,并确保闪存访问正确同步,以防止 OTA 编程活动与系统中的任何其他闪存用户发生冲突。 Fee/NvM 和 Mem_43_INFLS 之间没有同步支持。 5. 是的,流程正确。事实上,唯一的要求是,在交换分区之前,被动分区中必须存在有效的应用程序,并且签名(或一般的安全启动配置)应相应地进行更新。 我们有适用于 S32K344 的基本 OTA 演示“SW32K3_OTADEMO_0.8.0_D2203” - 它展示了如何将新应用程序写入被动块,然后请求 AB SWAP(这是 HSE 固件的一个功能)。本演示中使用的是 RTD 1.0.0 版本。 接下来更高级的演示是“S32K396 OTA Demo version 0.4.0”,它展示了如何通过以太网更新固件。这个版本使用的是 RTD 3.0.0。P07。 这两个演示程序都可以在 S32K3 参考软件中找到: https://www.nxp.com/webapp/swlicensing/sso/downloadSoftware.sp?catid=SW32K3-REFSW-D 点击链接,然后搜索“汽车软件 - S32K3 - OTA 演示”。 这些是我们仅有的版本,它只是参考软件,如果需要,用户需要将其迁移到其他衍生版本或更新的 RTD 软件包。 我们提供以下OTA培训: https://www.nxp.com/design/design-center/training/TIP-CONNECTS2021-AUT428 https://www.nxp.com/design/design-center/training/TIP-NXP-AUT-T3955A 这两点都可以在S32K3页面的“培训”部分找到: https://www.nxp.com/products/S32K3 您还可以查看“S32K3XX HSE 和 OTA 高级培训 [TR744101]”,该培训可从“文档”->“安全文件”下载: https://www.nxp.com/products/S32K3 问候, 卢卡斯
記事全体を表示
S32K312温度センサの不正確な読み取り NXPチームの皆様、こんにちは。 S32K312内部温度センサーの作業をしていて、誤った温度表示の助けが必要です。 似たようなスレッドを見て基本的な構成を確認しましたが、ADCの結果は周囲温度を反映していません。 これまでにやったこと: (1) TEMPSENSEクロック有効 -スクリーンショット添付 (2) ADC構成 ADCインスタンス: ADC0 チャネル:温度センサ(TEMPSENSE) トリガーモード:ソフトウェアトリガー (3)測定手順 定期的にADC変換を開始する 変換完了フラグを待機します ADCデータレジスタを読み取る (4)結果 しかし、変換された温度値は実際の周囲温度と一致しません。 S32K312温度センサに関するご説明や説明、参照コードがあれば大変ありがたいです。   ごサポートありがとうございます!   よろしくお願いいたします。 Re: S32K312 temperature sensor inaccurate reading こんにちは、@ SunLucas 温度チャネルは比較的長いサンプリング時間を必要とし、最低でも1.2マイクロ秒です。 したがって、サンプリング時間の設定を確認してください。 Re: S32K312 temperature sensor inaccurate reading さらにADC電圧の基準を 0x50に切り替えましたが、問題は解決しません。 温度測定値は周囲温度( 28℃ )から大きく乖離している。 API経由で取得した温度データは、添付のグラフに示すように、大きな変動を示しています。 Re: S32K312 temperature sensor inaccurate reading こんにちは、@ SunLucas 次に、 TempSenseの電圧供給を5V * 16 = 0x50に設定してください。 Re: S32K312 temperature sensor inaccurate reading TempSenseの電源電圧は0x58に設定されており、ハードウェアのVDD_HV_A電源電圧は5Vです。 Re: S32K312 temperature sensor inaccurate reading こんにちは、@ SunLucas 「TempSense電圧供給」を確認し、現在お使いのハードウェアのVDD_HV_A供給電圧を教えてください。
記事全体を表示
i.MX8MP_EVK:YOCTO 编译错误 do_package()(问题:tar & *at()) 您好, 以下是我的 Yocto 构建参数: 发布版本: imx-linux-walnascar 电路板支持包 版本: imx-6.12.49-2.2.0 机器: imx8mpevk 发行版: fsl-imx-xwayland 过去几个月我一直成功地使用这个版本环境。然而,我突然开始遇到附件中的错误。 为了排查问题,我彻底清理了构建环境,重新初始化了代码仓库( repo init ),再次同步了所有内容,并执行了一次全新的构建。但遗憾的是,问题依旧存在。 请查阅附件中的日志文件。我希望您能帮忙找出根本原因并提出解决方案。 i.MX 8M | i.MX 8M Mini | i.MX 8M Nano Re: i.MX8MP_EVK: YOCTO Compilation Error do_package() (Issue: tar & *at()) bitbake imx-image-core Re: i.MX8MP_EVK: YOCTO Compilation Error do_package() (Issue: tar & *at()) 你使用的是哪个“bitbake 命令”? 我会进行核实。 Re: i.MX8MP_EVK: YOCTO Compilation Error do_package() (Issue: tar & *at()) 感谢您的反馈, 我已检查过我的构建环境,它已经与您推荐的配置相符。 主机操作系统: Ubuntu 22.04.5 LTS (Jammy) GNU tar 版本: GNU tar 1.34 $ cat /etc/os-release PRETTY_NAME="Ubuntu 22.04.5 LTS" ... $ tar --version tar(GNU tar)1.34 然而,我仍然遇到同样的故障。 Re: i.MX8MP_EVK: YOCTO Compilation Error do_package() (Issue: tar & *at()) 请检查 tar 版本,如果主机是 Ubuntu 24.04,而 tar 版本是 1.35。 在容器或虚拟机内构建: Ubuntu 22.04 LTS GNU tar 1.34 Re: i.MX8MP_EVK: YOCTO Compilation Error do_package() (Issue: tar & *at()) 请查收以下文件, 这里我粘贴一些错误信息。 调试:正在执行 Python 配方 extend_recipe_sysroot 注意:直接依赖项为 ['/home/vvdn/LWT_Build/sources/poky/meta/recipes-devtools/binutils/binutils-cross_2.44.bb:do_populate_sysroot', '/home/vvdn/LWT_Build/sources/poky/meta/recipes-devtools/gcc/gcc-cross_14.3.bb:do_populate_sysroot','/home/vvdn/LWT_Build/sources/poky/meta/recipes-devtools/quilt/quilt-native_0.68.bb:do_populate_sysroot', '/home/vvdn/LWT_Build/sources/poky/meta/recipes-kernel/kern-tools/kern-tools-native_git.bb:do_populate_sysroot','virtual:native:/home/vvdn/LWT_Build/sources/poky/meta/recipes-core/coreutils/coreutils_9.6.bb:do_populate_sysroot','virtual:native:/home/vvdn/LWT_Build/sources/poky/meta/recipes-devtools/bison/bison_3.8.2.bb:do_populate_sysroot', 'virtual:native:/home/vvdn/LWT_Build/sources/poky/meta/recipes-devtools/dwarfsrcfiles/dwarfsrcfiles.bb:do_populate_sysroot','virtual:native:/home/vvdn/LWT_Build/sources/poky/meta/recipes-devtools/flex/flex_2.6.4.bb:do_populate_sysroot', 'virtual:native:/home/vvdn/LWT_Build/sources/poky/meta/recipes-devtools/patch/patch_2.7.6.bb:do_populate_sysroot','virtual:native:/home/vvdn/LWT_Build/sources/poky/meta/recipes-devtools/pkgconfig/pkgconfig_git.bb:do_populate_sysroot','virtual:native:/home/vvdn/LWT_Build/sources/poky/meta/recipes-devtools/pseudo/pseudo_git.bb:do_populate_sysroot','virtual:native:/home/vvdn/LWT_Build/sources/poky/meta/recipes-devtools/rpm/rpm_4.20.0.bb:do_populate_sysroot', 'virtual:native:/home/vvdn/LWT_Build/sources/poky/meta/recipes-extended/bc/bc_1.08.1.bb:do_populate_sysroot','virtual:native:/home/vvdn/LWT_Build/sources/poky/meta/recipes-kernel/kmod/kmod_34.1.bb:do_populate_sysroot'] 注意:已安装到系统根目录:[] 注意:由于 sysroot 中已存在以下软件包,因此跳过:['gettext-minimal-native', 'binutils-cross-aarch64', 'cmake-native', 'gcc-cross-aarch64', 'libtool-native', 'm4-native', 'quilt-native', 'texinfo-dummy-native', 'kern-tools-native', 'linux-libc-headers', 'file-native', 'openssl-native', 'coreutils-native', 'expat-native', 'ncurses-native', 'readline-native', 'util-linux-libuuid-native', 'zlib-native', 'bison-native', 'dwarfsrcfiles-native', 'elfutils-native', 'flex-native', 'git-native'、'gnu-config-native'、'json-c-native'、'libedit-native'、'lua-native'、'make-native'、'patch-native'、'perl-native'、'pkgconfig-native'、'pseudo-native'、'python3-native'、'rpm-native'、'bc-native'、'bzip2-native'、'libarchive-native'、'libidn2-native'、'lzlib-native'、'xz-native'、'zstd-native'、'kmod-native'、'acl-native'、'attr-native'、'curl-native'、'gdbm-native'、'gmp-native'、'gnutls-native' 'libtasn1-native', 'libcap-native', 'libffi-native', 'libgcrypt-native', 'libgpg-error-native', 'libmicrohttpd-native', 'libmpc-native', 'libunistring-native', 'mpfr-native', 'nettle-native', 'p11-kit-native', 'popt-native', 'sqlite3-native'] 调试:Python 函数 extend_recipe_sysroot 已完成 调试:正在执行 Python 函数 sstate_task_prefunc 调试:Python 函数 sstate_task_prefunc 已完成 调试:正在执行 Python 函数 do_package 调试:正在执行 Python 函数 package_setup_pkgv 调试:Python 函数 package_setup_pkgv 已完成 调试:正在执行 Python 函数 package_convert_pr_autoinc 调试:Python 函数 package_convert_pr_autoinc 已完成 调试:正在执行 Python 函数 package_prepare_pkgdata 注意:已安装到 pkgdata-sysroot:[] 调试:Python 函数 package_prepare_pkgdata 已完成 调试:正在执行 Python 函数 perform_packagecopy 错误:执行 exec_func_python() 自动生成的 Python 函数时出错: 导致此异常/失败的 Python 调用堆栈跟踪如下: 文件:'exec_func_python() autogenerated',行号:2,函数: 0001: *** 0002:perform_packagecopy(d) 0003: 文件:'/home/vvdn/LWT_Build/sources/poky/meta/classes-global/package.bbclass',行号:363,函数:perform_packagecopy 0359: rpath_replace (dvar, d) 0360:} 0361:perform_packagecopy[cleandirs] = "${PKGD} " 0362:perform_packagecopy[dirs] = "${PKGD} " *** 0363: 0364:python populate_packages() { 0365: oe.package.populate_packages(d) 0366:} 0367:populate_packages[dirs] = " ${D} " 文件:'/usr/lib/python3.10/subprocess.py'行号:421,函数:check_output 0417:否则: 0418:空 = b'' 0419: kwargs['input'] = 空 0420: *** 0421: 返回 run(*popenargs, stdout=PIPE, timeout=timeout, check=True, 0422: **kwargs).stdout 0423: 0424: 0425:class CompletedProcess(object): 文件:'/usr/lib/python3.10/subprocess.py'lineno: 526, function: run 0522: # 我们不调用 process.wait()作为。 __exit__它能帮我们做到这一点。 0523:提高 0524: retcode = process.poll() 0525:如果检查并返回代码: *** 0526: 引发 CalledProcessError(retcode, process.args, 0527: output=stdout, stderr=stderr) 0528: 返回 CompletedProcess(process.args, retcode, stdout, stderr) 0529: 0530: 异常:subprocess.CalledProcessError:命令“tar --exclude=./sysroot-only”-cf - -C /home/vvdn/LWT_Build/build/tmp/work/imx8mpevk-poky-linux/linux-imx/6.12.34+git/image -p -S .| tar -xf - -C /home/vvdn/LWT_Build/build/tmp/work/imx8mpevk-poky-linux/linux-imx/6.12.34+git/package' 返回非零退出状态 2。 子进程输出: 获取到未知目录的 *at() 系统调用,文件描述符为 4 文件描述符 4 的未知基本路径,路径库 无法为“lib”分配绝对路径。 tar:./usr/lib:无法创建目录:地址错误 获取到未知目录的 *at() 系统调用,文件描述符为 4 文件描述符 4 的未知基本路径,路径库 无法为“lib”分配绝对路径。 获取到未知目录的 *at() 系统调用,文件描述符为 4 文件描述符 4 的未知基本路径,路径库 无法为“lib”分配绝对路径。 tar:./usr/lib:无法创建目录:地址错误 tar:./usr/lib/modules:无法创建目录:没有该文件或目录 Re: i.MX8MP_EVK: YOCTO Compilation Error do_package() (Issue: tar & *at()) 我似乎没有权限下载该附件。 请您再发送一次好吗? Re: i.MX8MP_EVK: YOCTO Compilation Error do_package() (Issue: tar & *at()) 嗨@yipingwang 期待您能尽快提供调试方面的支持。 Re: i.MX8MP_EVK: YOCTO Compilation Error do_package() (Issue: tar & *at()) 在你的 Ubuntu 电脑上,使用命令“sudo apt install tar=1.34+dfsg-1build3”
記事全体を表示
カーネル6.12におけるLS1046A 10GB SFP+の設定 こんにちは、 私はLS1046Aを搭載したカスタムボードを持っていて、はんだ付けされたSFP+ 10GBモジュールでfm1-mac9を使用しようとしています。 SERDES 1 の私の RCW は 0x1040 です。 つまり、FM1からMAC9の10GBはRCWの視点から見て十分にカバーされています。SFPの電源やレーザーは正常なようですが、前のSFPと連携・連携できず、DTBの設定が間違っているのではないかと疑っています。 これがそのMACアドレスの現在の設定です。 xfi10g: ethernet@f0000 { ステータス = "正常"; pcsphy-handle = <&pcsphy6>; pcs-handle = <&pcsphy6>; pcs-handle-names = "xfi"; 物理接続タイプ = "10gbase-r"; 固定リンク { 速度 = <10000>; 全二重通信; }; }; mdio@f1000 { ステータス = "正常";   pcsphy6: イーサネット-phy@0{     compatible = "fsl,lynx-pcs";     reg = <0x0>;   }; }; sfp_mac9: sfp { 互換 = "SFF,SFP"; I2Cバス = <&i2C3>; status = "OK"; }; 参考までに、私はlinux-qoriqカーネル6.12を使っていますが、SFPは起動時にEEPROMを正しく読み込んでいます。 fm1-mac9でこのタイプの接続を実行する適切な例はありますか?
記事全体を表示
Example SJA1110 FreeRTOS lwIP MR-T1ETH8 S32DS 3.5 RTD 1.0.2 ********************************************************************************* * Detailed Description: * Updated the example lwip_FreeRTOS_SJA1110 for board MR-T1ETH8 * to enable ping from the command window, from all applicable ports * *ping 192.168.0.200 * *Pinging 192.168.0.200 with 32 bytes of data: *Reply from 192.168.0.200: bytes=32 time=2ms TTL=255 *Reply from 192.168.0.200: bytes=32 time=1ms TTL=255 *Reply from 192.168.0.200: bytes=32 time=1ms TTL=255 *Reply from 192.168.0.200: bytes=32 time=1ms TTL=255 * *Ping statistics for 192.168.0.200: * Packets: Sent = 4, Received = 4, Lost = 0 (0% loss), *Approximate round trip times in milli-seconds: * Minimum = 1ms, Maximum = 2ms, Average = 1ms * * Installed packages to S32DS 3.5 update 14: * SW32SJA11xx_S32DS_3.5.0_RFP_D2206.zip * SJA11XX_RTD_4.4_1.0.1_P02_HF01_D2510_DesignStudio_updatesite.zip * SW32SJA1110_XJA11XX_ETH_PHY_4.4_1.0.8_CD01_D2509_DesignStudio_updatesite.zip * SJA11XX_ETH_SWITCH_4.4_1.0.2_CD01_D2509_DesignStudio_updatesite.zip * SW32SJA11xx_FreeRTOS_11.1.0_0.8.0_CD2_D2411_DesignStudio_updatesite.zip * SJA11XX_TCPIP_2.0.0_CD01_D2510_DesignStudio_updatesite.zip * * EVB * - to enable flashing by Lauterbach TRACE32 - Populate R78, DNP R77 * * Configuration: * - Updated switch configuration * - Updated phy configuration * - Fixed Mcu/McuModuleConfiguration/McuPowerControlUnit - 1V8 and 2V5 * - Fixed Eth configuration * * * * - TCPIP stack: enabled UDP_ECHO, etc. * - Added DIO * - Added nvm_metadata * - MAC learning is disabled * - All available ports initialized * - All ports checked, except 1 Gbit/s ix Industrial connector (J9) * * main.c * - Updated only the header * device.c * - Added LED routines * test.c * - Removed code that shuts down the TCP/IP stack after its predefined timeout * - Added debug stuff * - Commented out the code that initializes 2nd switch * * ----------------------------------------------------------------------------- * Test HW: MR-T1ETH8 * MCU: SJA1110 * Debugger: Lauterbach TRACE32 * Target: RAM or external FLASH (flash_image.bin generated) * EVB connection: any port <-> RDDRONE T1ADAPT (on ports where applicable) <-> USB-to-Ethernet adapter <-> Laptop DELL, Windows 11
記事全体を表示
[S32K3] [RTD 7.0.1]BCTU模块中的三个问题 我在 RTD 代码版本S32K3_RTD_7_0_1_D2602_ASR_REL_4_9_REV_0000_20260206中发现了 BCTU 模块的三个问题。具体问题如下:   问题 1:在文件Adc_TS_T40D34M70I1R0/src/Bctu_Ip.c 的第 1558 行,当前代码使用按位或赋值: BctuBasePtr->FIFOERR |= FifoWatermarkMask;应修改为直接赋值: BctuBasePtr->FIFOERR = FifoWatermarkMask;   问题 2:在文件Adc_TS_T40D34M70I1R0/src/Bctu_Ip.c的第 567 行和第 568 行中,现有代码包含不正确的位移操作。原始代码如下所示: ClrMask |= ((u32Mask & (BCTU_IP_STATUS_FIFO1_OVR_ERR << (Index * 2u))) != 0U) ?(BCTU_FIFOERR_OVR_ERR_FIFO1_MASK << Index) : 0U; ClrMask |= ((u32Mask & (BCTU_IP_STATUS_FIFO1_UNDR_ERR << (Index * 2u))) != 0U) ?(BCTU_FIFOERR_UNDR_ERR_FIFO1_MASK << 索引) : 0U; 这两行代码应按如下方式修改为正确的换行逻辑: ClrMask |= ((u32Mask & (BCTU_IP_STATUS_FIFO1_OVR_ERR << Index)) != 0U) ?(BCTU_FIFOERR_OVR_ERR_FIFO1_MASK << (索引 * 2u)) : 0U; ClrMask |= ((u32Mask & (BCTU_IP_STATUS_FIFO1_UNDR_ERR << Index)) != 0U) ?(BCTU_FIFOERR_UNDR_ERR_FIFO1_MASK << (索引 * 2u)) : 0U;   问题 3: MCAL/SDK 代码生成工具与 BCTU 模块的静态源代码之间存在类型不一致对齐问题。在 MCAL 生成的代码( Adc_TS_T40D34M70I1R0/generate_PB/Adc_RegOperations.m中,第 2397 行),头文件和 C 文件中定义的数组统一采用uint32类型。在 SDK 生成的代码中,头文件和 C 文件中的类型定义不一致: eclipse/mcu_data/components/PlatformSDK_S32K3/Bctu_Ip/Bctu_Ip_PBcfg.h中的数组类型(第 249 行)根据BctuFifoDmaRawData选项是否启用,在uint16和uint32之间切换,而eclipse/mcu_data/components/PlatformSDK_S32K3/Bctu_Ip/Bctu_Ip_PBcfg.c中的相应数组(第 317 行)固定为uint32类型。在静态代码( Adc_TS_T40D34M70I1R0/src/Bctu_Ip.c中,第 1629 行),传输长度(2 字节或 4 字节)是根据BctuFifoDmaRawData配置动态确定的。当取消选中BctuFifoDmaRawData选项时,会出现以下所有异常问题: 1.对于 SDK 项目:头文件和 C 文件之间数组类型不匹配会导致直接编译失败。 2. 对于 MCAL 项目:虽然编译可以成功,但固定的 uint32 数组定义导致一半的内存空间被浪费。此外,每个 uint32 数据单元包含两个 ADC 结果,需要在数据解析期间手动拆分高 uint16 值和低 uint16 值。 以上三个错误存在于官方版本S32K3_RTD_7_0_1_D2602_ASR_REL_4_9_REV_0000_20260206中。我们希望恩智浦软件工程师能在下一个 RTD 版本中修复这些 BCTU 模块缺陷。 Re: [S32K3] [RTD 7.0.1] Three Issues in the BCTU Module 您好@chenwilsoft 您的问题已提交至内部论坛,正在等待设计团队的确认。 Re: [S32K3] [RTD 7.0.1] Three Issues in the BCTU Module 您好@chenwilsoft 感谢您的反馈。 软件团队和我已经确认了这些问题,它们确实是软件漏洞。 我们已将这些问题上报内部,并将在未来的更新中修复它们。
記事全体を表示
S32K348-GPIO EIRQからDMA要求 親愛なるNXPサポートチームへ、 今、GPIO PTD6でEIRQ14の立ち上がりエッジ検出を設定し、このピン信号をDMAチャネルにマッピングし、PIT_1 Timer[0]から現在の値を取得しようとしています。これはフリーランニングとして設定されています。 SIUL2はPTDAで正しく設定されているようで、関連するMCUピンで信号(1Hz)を接続するとこのピンが切り替えられているのが確認できます。 でもDMAは私には合いません 私の推測では、PTD6から>DMAMUX-> DMAチャネル4の適切なチェーンを見つけるのに問題があるのだと思います。そして、これらの情報を正確にどこで見つけられるかも調べてください。 S32K3xx_DMAMUX_map.xlsx から以下の情報を取得しました。 そこで最初の問題です:PTD6(EIRQ14)に専用のソース>リクエストはどれですか? RMマニュアルの表44とはどのように関連しているのでしょうか? 以下は、私が現在取り組んでいるコードの断片です。 PTD6 のセットアップ void Setup_PTD6_EIRQ14_for_DMA ( void ) { /* 1. MSCRレジスタによる物理ピンPTD6の設定 */     // PTD6 は、インデックス MSCR[102] に対応します (スクリーンショットに示されているとおり)     IP_SIUL2 -> MSCR [ 102 ] = 0 ; // レジスタをクリア     IP_SIUL2->MSCR[102] |= (1 << 19); // IBE = 1(入力バッファ有効化 - ピンを入力として設定)     IP_SIUL2 -> IMCR [ 542 - ( 512 )] = 3u ;     オプション:信号が浮かんでいる場合は、プルアップ(PUE=1、PUS=1)またはプルダウン(PUE=1、PUS=0)を有効にすることができます。 /* 2. 回線EIRQ[14]でのエッジ検出の有効化 */     // すべての立ち上がりエッジのタイムスタンプを取得したい     IP_SIUL2 -> IREER0 |= ( 1 << 14 ); // IREER0[EIRE14] = 1 (立ち上がりエッジを有効にする)     IP_SIUL2 -> IFEER0 &= ~ ( 1 << 14 ); // IFEER0[EIRE14] = 0 (立ち下がりエッジを無効化) /* 3. リクエストルーティング: 割り込みからDMAへの変更 */     // このステップにより、エッジがCPU(NVIC)を起動せず、代わりにDMAラインをトリガーすることが保証されます。     IP_SIUL2->DIRSR0 |= (1 << 14); // DIRSR0[DIRS14] = 1(割り込みではなくDMA要求を選択する) /* 4.EIRQのDMA要求生成の最終有効化[14] */     IP_SIUL2->DIRER0 |= (1 << 14); // DIRER0[EIRE14] = 1(DMA要求ラインを起動) }   DMAチャネルの設定: void Setup_eDMA_Channel4_Capture_PIT1 ( void ) { /* 1.eDMAチャネル4のDMAMUX初期化 */     EIRQ14(ソース14)をeDMAチャンネル4にマッピング     IP_DMAMUX_1 -> CHCFG [ 4 ] = DMAMUX_CHCFG_ENBL_MASK | DMAMUX_CHCFG_SOURCE ( 7u ); // EIRQ14 は DMAMUX_1 のソース 7 です     //IP_DMAMUX_0->CHCFG[4] = 0U; /* 2.チャネルPIT_1 4のTCD構成(正確なS32K3ベアメタル構文)*/     // ソース: PIT_1 タイマー 0 の現在の値     IP_TCD -> TCD4_SADDR = ( uint32_t ) & ( IP_PIT_1 -> TIMER [ 0 ]. CVAL );     IP_TCD -> TCD4_SOFF  = 0 ; // ソースはインクリメントされません     IP_TCD -> TCD4_ATTR  = 0x0202 ; // 32ビットソース、32ビットデスティネーション     // マイナーループ: 1回のトリガーで転送されるバイト数     // S32K3では、これはNBYTES_MLOFFNOレジスタに対応します(マイナーループリンクなし)     IP_TCD -> NBYTES4 . TCD4_NBYTES_MLOFFNO = 4 ; // トリガーごとに 4 バイト (32 ビット) を転送     // 宛先: RAM 内の配列     IP_TCD -> TCD4_DADDR = ( uint32_t ) dma_timestamps ;     IP_TCD -> TCD4_DOFF  = 4 ; // 各エッジの後に RAM で 4 バイトシフトする     // 循環バッファ: 配列全体を埋めた後、先頭に戻る     IP_TCD -> TCD4_DLAST_SGA = - ( BUFFER_SIZE * 4 );     // 主要ループカウンタ:ループ内の反復回数の合計     //IP_TCD->CITTER4.TCD4_CITER_ELINKNO = BUFFER_SIZE;     IP_TCD -> CITER4 . TCD4_CITER_ELINKNO = BUFFER_SIZE ;     IP_TCD -> BITER4 . TCD4_BITER_ELINKNO = BUFFER_SIZE ; /* 3.公式マクロによるハードウェアトリガーのeDMAチャネルアクティベーション */     //IP_TCD->CH4_CSR |= DMA_TCD_CH4_CSR_ERQ_MASK; /* 3.ハードウェアトリガーのeDMAチャネル起動(非同期モード有効時)*/     // ビット 0 (ERQ) = 1 -> ハードウェア トリガーを有効にする     // ビット 2 (EARQ) = 1 -> 外部ピン (SIUL2 EIRQ) からの非同期要求を有効にします     IP_TCD -> CH4_CSR |= 3u ; // ERQ=1、EARQ=1 }   おそらくここが重要な部分でしょう。 IP_DMAMUX_1 -> CHCFG [ 4 ] = DMAMUX_CHCFG_ENBL_MASK | DMAMUX_CHCFG_SOURCE ( 7u ); // EIRQ14 は DMAMUX_1 のソース 7 です どの IP_DMAMUX とどの DMAMUX_CHCFG_SOURCE を使用すればよいのか、また、これに関する適切な情報はどこにあるのか、少し混乱しています。 よろしくお願いします オンドレイ   Re: S32K348-GPIO EIRQ to DMA request こんにちは、@ OndrejK 「つまり、MCUには32のTCDチャネルがあり、TCD 0から15はDMAMUX_0に有効で、TCD 15から31はDMAMUX_1に適用されるということですか?" はい、これらの情報はデータシートに記載されています。参考のためにコピーしておきます。 Re: S32K348-GPIO EIRQ to DMA request こんにちは、Senlentさん。 ご回答ありがとうございます。 TCDマッピングについてのあなたの意味がどこから出たのか教えてもらえますか? つまり、MCUは32のTCDチャネルを持ち、TCD 0から15がDMAMUX_0に有効で、TCD 15から31は DMAMUX_1? DMAMUXとeDMAに関する情報について、まだ少し混乱しています。 よろしくお願いします オンドレイ Re: S32K348-GPIO EIRQ to DMA request こんにちは、@OndrejK あなたの理解は正しいです。 PTD6->EIRQ14->DMAMUX1.SOURCE 7. IP_DMAMUX_1->CHCFG[4] = DMAMUX_CHCFG_ENBL_MASK | DMAMUX_CHCFG_SOURCE(7u); // EIRQ14 is source 7 for DMAMUX_1 しかし、TDC設定が間違っています。 私の理解では、それらは以下のようになるはずです。 IP_DMAMUX_1->CHCFG[0] ->TCD 16 IP_DMAMUX_1->CHCFG[4] -> TCD4ではなくTCD20 Re: S32K348-GPIO EIRQ to DMA request こんにちは、センレントさん。 観察結果に基づいて、コードにいくつか変更を加えました。 これが私の最新のコードです。 メイン初期化: Setup_PTD6_EIRQ14_for_DMA ();     Setup_PIT1_Timer0_FreeRunning ();     Setup_DMAMUX_Channel0_ToTCD16_Capture_PIT1 ();      // EIRQ14割り込みフラグをクリアする      IP_SIUL2 -> DISR0 = ( 1 << 14 ); そして、残りのコードは以下のとおりです。 void Setup_PTD6_EIRQ14_for_DMA ( void ) {     // 1. SIUL2 に対するフィルタ前の操作 (AK Už nie je povolený inde)     IP_SIUL2 -> IFCPR = 0U ; // Nastavenie deličky filtra na Functional Clock (bez dodatočného delenia) // 2. Voliteľne vypnite フィルター pre daný EIRQ インデックス アレボ ホ ナスターブテ ナ 最小限のポチェト cyklov // EIRQ14 より前 (v závislosti od mapovania registrov IFMCR):     IP_SIUL2 -> IFMCR [ 14 ] = 0U ; // 0U vypína digitalálny フィルター、hrana prechádza okamžite ako čistýhardvérový トリガー /* 1. MSCRレジスタによる物理ピンPTD6の設定 */     // PTD6 は、インデックス MSCR[102] に対応します (スクリーンショットに示されているとおり)     IP_SIUL2 -> MSCR [ 102 ] = 0 ; // レジスタをクリア     IP_SIUL2->MSCR[102] |= (1 << 19); // IBE = 1(入力バッファ有効化 - ピンを入力として設定)     IP_SIUL2 -> IMCR [ 542 - ( 512 )] = 3u ;     オプション:信号が浮かんでいる場合は、プルアップ(PUE=1、PUS=1)またはプルダウン(PUE=1、PUS=0)を有効にすることができます。 /* 2. 回線EIRQ[14]でのエッジ検出の有効化 */     // すべての立ち上がりエッジのタイムスタンプを取得したい     IP_SIUL2 -> IREER0 |= ( 1 << 14 ); // IREER0[EIRE14] = 1 (立ち上がりエッジを有効にする)     IP_SIUL2 -> IFEER0 &= ~ ( 1 << 14 ); // IFEER0[EIRE14] = 0 (立ち下がりエッジを無効化) /* 3. リクエストルーティング: 割り込みからDMAへの変更 */     // このステップにより、エッジがCPU(NVIC)を起動せず、代わりにDMAラインをトリガーすることが保証されます。     IP_SIUL2->DIRSR0 |= (1 << 14); // DIRSR0[DIRS14] = 1(割り込みではなくDMA要求を選択する) /* 4.EIRQのDMA要求生成の最終有効化[14] */     IP_SIUL2->DIRER0 |= (1 << 14); // DIRER0[EIRE14] = 1(DMA要求ラインを起動) }   void Setup_DMAMUX_Channel0_ToTCD16_Capture_PIT1 ( void ) { /* 1.eDMAチャネル4のDMAMUX初期化 */    // Podľa NXP tabuľky prislúcha SIUL2 DMA要求 4 zdrojový index 7u     //IP_DMAMUX_1->CHCFG[4] = DMAMUX_CHCFG_ENBL_MASK | DMAMUX_CHCFG_SOURCE(7u);     ドキュメントに従い、まずチャネル4を無効にし、次に設定し、最後に有効にしてください     IP_DMAMUX_1 -> CHCFG [ 0 ] = 0u ; /* 2.チャネルPIT_1 4のTCD構成(正確なS32K3ベアメタル構文)*/     // ソース: PIT_1 タイマー 0 の現在の値     IP_TCD -> TCD16_SADDR = ( uint32_t ) & ( IP_PIT_1 -> TIMER [ 0 ]. CVAL );     IP_TCD -> TCD16_SOFF  = 0 ; // ソースはインクリメントされません     IP_TCD -> TCD16_ATTR  = 0x0202 ; // 32ビットソース、32ビットデスティネーション     // マイナーループ: 1回のトリガーで転送されるバイト数     // S32K3では、これはNBYTES_MLOFFNOレジスタに対応します(マイナーループリンクなし)     IP_TCD -> NBYTES16 . TCD16_NBYTES_MLOFFNO = 4 ; // トリガーごとに 4 バイト (32 ビット) を転送     // 宛先: RAM 内の配列     IP_TCD -> TCD16_DADDR = ( uint32_t ) dma_timestamps ;     IP_TCD -> TCD16_DOFF  = 4 ; // 各エッジの後に RAM で 4 バイトシフトする     // 循環バッファ: 配列全体を埋めた後、先頭に戻る     IP_TCD -> TCD16_DLAST_SGA = - ( BUFFER_SIZE * 4 );     // 主要ループカウンタ:ループ内の反復回数の合計     //IP_TCD->CITTER20.TCD20_CITER_ELINKNO = BUFFER_SIZE;     IP_TCD -> CITER16 . TCD16_CITER_ELINKNO = BUFFER_SIZE ;     IP_TCD -> BITER16 . TCD16_BITER_ELINKNO = BUFFER_SIZE ;     //IP_TCD->CH16_CSR |= 3u; // ERQ=1、EARQ=1     DMAMUXチャネル0を有効にする     IP_DMAMUX_1 -> CHCFG [ 0 ] = DMAMUX_CHCFG_ENBL_MASK | DMAMUX_CHCFG_SOURCE ( 6u ); __asm volatile ( "nop" ); __asm volatile ( "nop" );     IP_TCD -> CH16_CSR |= 3u ; }   そして、このアサートが発生すると、EIRQ(14)によるDMA転送を開始できません。デバッガーでは、MCU PTD6ピンの信号を変更するとフラグが表示されます。 次に、手動でSTARTビットでDMA転送を開始できTCD16_CSR TCDチャネルではCITTERの値を減らし、PIT1_TIMER[0]の値をdma_timestampsアレイに格納します。 ちなみに、これは「通常の」SRAMセクションで定義されるべきです。以前、これをdata_cacheセクションに設定していたため、DMA「宛先バスエラー」が発生しました。 新しい定義: __attribute__ ((整列( 32 ))) __attribute__ ((セクション( ".mcal_data" ))) uint32_t dma_timestamps [ BUFFER_SIZE ];   しかし、手動STARTをスキップして(コードの冒頭から設定してはいけません)、PTD6ピンの信号を変えると、DMAチャネルは何もせず、CITTERレジスタは初期化値のままです。 どこに問題があるのか教えてもらえますか? それでも、PTD6-EIRQ(14)の主張フラグからTCD16チャネルへの適切な接続に問題があるようです。 DMAMUXチャネルの正しいソースかもしれませんね? DMAMUX1-CH[0]については、すべてのソース(1~ 😎 DMAMUXのExcelテーブルにリストされているSUIL2インスタンスについて、成功しませんでしたが、ここでも私の手順が正しかったかどうかはわかりません。     Re: S32K348-GPIO EIRQ to DMA request こんにちは、@ OndrejK 参考までに、PTD6を使用して単一のデータ転送のためにDMAをトリガーするデモを作成しました。 これはS32K344 + RTD 7.0.1をベースにしています。 そして私はそれを試してみました。 私の理解は正しいと保証します。 PTD6の場合、ソースは7である必要があります。  IP_DMAMUX_1 -> CHCFG [ 0 ] = DMAMUX_CHCFG_ENBL_MASK | DMAMUX_CHCFG_SOURCE ( 7u ); Re: S32K348-GPIO EIRQ to DMA request こんにちは、Senlentさん。 素晴らしい例をありがとうございました。 いくつか変更を加えた結果、動作するサンプルができました。調整済みプロジェクトを添付しますが、重要な問題が一つありました。 DMAリクエーションを有効にしたSIUL ICUは、DMA TCDチャネル全体が完全に設定される前にセットアップされました。その場合、TCD_SADDRとTCD_DADDRは空(値がゼロ)で、その後SULでDMAリクオンを有効にするとDMAエラー、つまり「ソースバスエラー」が発生します。これが私の理解です。 この初期化の順序変更後。例が私の環境で動作し始めました。 しかし、DMAMUXチャネルとTCDチャネルの正確な関係はまだ理解できません。 あなたは、DMAMUXはCHCGF[0]として構成する必要があると書いていました。 S32k344カスタム開発ボードでアプリをダウンロードして起動したところ、DMAMUX-CHCFG[3]が設定されており、関数のコード Dma_Mux_Ip_Init_Privileged 正確にこの構成に繋がっていることがわかりました。 RegisterIndex = DMA_MUX_IP_GATE_OFFSET((pConfig->pChannelConfigArr[ChannelCount].チャネル)); こちらはLauterbach Trace32デバッガのスクリーンショットで、すべての初期化ステップ後の最終セットアップを見ることができます: Design Studioでは、RTDを7.0.1にアップデートした後の次の設定があります: これは正しいですか?また、ここに3つのDMAマルチプレクサソースの選択肢があるとはどういう意味ですか? Re: S32K348-GPIO EIRQ to DMA request こんにちは、@ OndrejK それは良かったですね。 この設定ツールは、初心者開発者にとっては混乱を招く可能性があります。 S32K348の場合、DMAMUX_3は存在せず、DMAMUX_0とDMAMUX_1のみが存在します。 •S32K310、S32K311、S32K312では、DMAMUX_0チャネル0–5およびDMAMUX_1チャネル0–5はそれぞれeDMA転送制御ディスクリプタ(TCD)0–5およびeDMAトランスファー制御ディスクリプタ(TCD)6–11にマッピングされます。したがって、DMAMUX_0 チャネル6〜15およびDMAMUX_1 チャネル6〜15のプログラミングは期待されていません。しかし、プログラムされた場合、アクセスはチャネル8から15に対してエラー応答、またはチャネル6から7に対してエラー応答なしのいずれかを引き起こします。 •残りのS32K3xxデバイスについては、DMAMUX_0チャネル0–15およびDMAMUX_1チャネル0–15がそれぞれeDMA転送制御ディスクリプタ(TCD)0–15およびeDMAトランスファーコントロールディスクリプタ(TCD)16–31にマッピングされています。 上記はデータシートからの抜粋であり、理解しやすい内容です。 「DMAハードウェアチャネル」はTCD番号に対応します。 DMA_CHANNEL_0~DMA_CHANNEL_15を選択した場合、デフォルトではDMAMUX_0が使用されます。 16~31を選択した場合、デフォルトでDMAMUX_1が使用されます。 例えば、このトピックではPTD6はDMAMUX_1のSource 7に対応し、「DMAハードウェアチャネル」はDMA_CHANNEL_16からDMA_CHANNEL_31までの任意の値に設定できます。 別の例を挙げましょう。もしEIRQ 7をDMAをトリガーすると、「DMAハードウェアチャネル」はDMA_CHANNEL_0からDMA_CHANNEL_15どの値にも設定できます。 Re: S32K348-GPIO EIRQ to DMA request こんにちは、SenLentさん、 DMAチャネルを選ぶことについて、関連するグループから自由に選べるというイメージDMA_MUX その間に他のDMA_MUX<-> <>TCDの組み合わせも試し、自分の側では次の1つだけを操作しました IP_DMAMUX_1->CHCFG[3]およびTCD16。 次に他のものも試してみます。 IP_DMAMUX_1->CHCFG[4]とTCD17。 IP_DMAMUX_1->CHCFG[0]とTCD16。 そして、なぜ正確には IP_DMAMUX_1->CHCFG[3] と TCD16 だけなのか教えてください。働く ? IP_DMAMUX_1->CHCFG[xx]とTCDyyの関係はどうなっているのでしょうか? Re: S32K348-GPIO EIRQ to DMA request こんにちは、@ OndrejK 正しい順番は以下のとおりです。 IP_DMAMUX_0>CHCFG[0]とTCD0。 IP_DMAMUX_0->CHCFG[1]とTCD1。 IP_DMAMUX_0->CHCFG[2]とTCD2。 IP_DMAMUX_0->CHCFG[3]とTCD3。 IP_DMAMUX_0->CHCFG[4]とTCD4。 IP_DMAMUX_0->CHCFG[5]とTCD5。 IP_DMAMUX_0->CHCFG[6]とTCD6。 IP_DMAMUX_0->CHCFG[7]とTCD7。 IP_DMAMUX_0->CHCFG[8]とTCD8。 IP_DMAMUX_0->CHCFG[9]とTCD9。 IP_DMAMUX_0->CHCFG[10]とTCD10。 IP_DMAMUX_0->CHCFG[11]とTCD11。 IP_DMAMUX_0->CHCFG[12]とTCD12。 IP_DMAMUX_0->CHCFG[13]とTCD13。 IP_DMAMUX_0->CHCFG[14]とTCD14。 IP_DMAMUX_0->CHCFG[15]とTCD15。 IP_DMAMUX_1->CHCFG[0]とTCD16。 IP_DMAMUX_1->CHCFG[1]とTCD17。 IP_DMAMUX_1->CHCFG[2]とTCD18。 IP_DMAMUX_1->CHCFG[3]とTCD19。 IP_DMAMUX_1->CHCFG[4]とTCD20。 IP_DMAMUX_1->CHCFG[5]とTCD21。 IP_DMAMUX_1->CHCFG[6]とTCD22。 IP_DMAMUX_1->CHCFG[7]とTCD23。 IP_DMAMUX_1->CHCFG[8]とTCD24。 IP_DMAMUX_1->CHCFG[9]とTCD25。 IP_DMAMUX_1->CHCFG[10]とTCD26。 IP_DMAMUX_1->CHCFG[11]とTCD27。 IP_DMAMUX_1->CHCFG[12]とTCD28。 IP_DMAMUX_1->CHCFG[13]とTCD29。 IP_DMAMUX_1->CHCFG[14]とTCD30。 IP_DMAMUX_1->CHCFG[15]とTCD31。 Re: S32K348-GPIO EIRQ to DMA request こんにちは、SenLentさん。 最新のS32 DSプロジェクトでテストを行い、DMA_MUXの設定をさらに追加しました。 私の設定画面のスクリーンショットはこちらです。 そして、ビルドコードをボードにダウンロードした後の結果がこちらです。 ご覧の通り、DMA_MUXとTCDの割り当て順番は守られていません。 同じバグはRTDソフトウェアでも起きているのでしょうか? Re: S32K348-GPIO EIRQ to DMA request こちらが私のプロジェクトで、先に添付した最新のものを調整したばかりです DMA_MUX_0でDMA_Channel_0とDMA_Channel_1の2チャネルを作成しました。 これらのチャネルにはDMA_MUX_0->CHCFG[3]およびDMA-MUX_0-CHCFG[2]が割り当てられています。 DMA_MUX_1で見られるような「混合」の順序です Re: S32K348-GPIO EIRQ to DMA request こんにちは、@ OndrejK 問題が何なのか分かりません。もっと分かりやすく説明してもらえますか?またはテストプロジェクト全体を教えていただけますか?そうすれば、どこに疑問があるのか教えてください。 Re: S32K348-GPIO EIRQ to DMA request こんにちは、@ OndrejK これは、使用しているデバッガー、あるいはデバッガーのバージョンに関連している可能性が高いことは明らかです。 Re: S32K348-GPIO EIRQ to DMA request こんにちは、@ OndrejK これはあなたが提供してくれたデモです。私は何も変更を加えていません。 これが私のテスト結果です。 Re: S32K348-GPIO EIRQ to DMA request こんにちは、Senlentさん。 その間、私は別の同僚とこの同じプロジェクトをテストしました。同僚はS32DSバージョン3.6.3を使用しています。そしてOzoneデバッガーも使用しましたが、結果はあなたと同じです。 あなたの言う通りみたいですね。でも、私の側で何が起こっているのか全く分かりません。 😞 Re: S32K348-GPIO EIRQ to DMA request こんにちは、SenLentさん。 ついに、ここでの「問題」がどこにあるのか分かりました。 問題は、OzoneとLauterbachが単にDMA_MUX->CHCFGの表示方法が異なることです。最後のコツは、これらのCHCFGレジスタがMCU側(DMA_MUX_1のベースアドレスは0x40284000)にこの順番でマッピングされていることです。 0x40284000 ->CHCFG[3] 0x40284001  ->CHCFG[2] 0x40284002 ->CHCFG[1] 0x40284003 ->CHCFG[0] 0x40284004 ->CHCFG[7] 0x40284005 ->CHCFG[6] 0x40284006 ->CHCFG[5] 0x40284007 ->CHCFG[4] 0x40284008 ->CHCFG[11] .... 下のスクリーンショットをご覧ください そしてこの瞬間から私の結果は意味を持ち、あなたのアドバイスと一致しました 🙂 サポートありがとうございます そして、この問題はCANで解決できるのでしょう Re: S32K348-GPIO EIRQ to DMA request こんにちは、@ OndrejK よろしい。このトピックを閉じるには「解決策として受け入れる」をクリックしてください。
記事全体を表示
アプレット こんにちは、お願いします。どなたか助けてくれませんか? 1.SE051PでカスタムJava Cardアプレットをビルド・ロードするための実際の開発経路(どのSDK、ツール、Java Card/GlobalPlatformバージョンか)はどうなりますか?カスタムアプレッションは工場で(NXPやパートナーによって事前インストール)行われるのか、それともGlobalPlatformのセキュアチャネルを通じて現場で発行後に行うことができるのか、またどのようなキー管理要件が適用されるのか? 2. SE051P部品を入手し、カスタムアプレットを開発・提供する機能を利用するには、ライセンス、NDA、パートナーシップの要件、または最低注文数量はありますか? B. ペイメントとカスタムロジックの共存(1つと2つのセキュア要素) 3. 単一のJCOP Pay(ペイメント)プラットフォームが、EMVCo認証の決済アプレットと独立したアプリケーションロジックを持つ別のカスタムJavaカードアプレットを同時にホストできますか?それともEMVCo認証ではチップは決済アプレットのみを動作させる必要があり、つまりカスタムロジックには別のセキュア要素が必要になるのでしょうか? 4. 単一のチップ上で共存が可能な場合、カスタムアプレットをロードすると支払いアプレットのEMVCo認証に影響または無効化されますか? C. カスタムアプレットで利用可能な単調カウンタと暗号化機能 (SE051P) 5. ネイティブの単調カウンタセキュアオブジェクトは、Java Card API経由でカスタムアプレットからアクセスできるのか、それとも事前インストールされたIoTアプレットインターフェースからのみアクセスできるのか? 6. SE051P上のカスタムアプレットで使用できる署名アルゴリズムとECC曲線はどれですか(例:ECDSA P-256/P-384、Ed25519)?チップ上に保存された値の内部署名(POLICY_OBJ_INTERNAL_SIGNメカニズムと同様)は、カスタムアプレットからも利用できますか? D. コイン型電池(CR2032)デバイス用電源 7. ECDSA P-256署名処理1回あたりの標準的な所要時間(ミリ秒単位)はどれくらいですか?また、SE051Pのアクティブな暗号化処理を行っていないときのアイドル/スタンバイ電流はどれくらいですか?(したがって、1動作あたりのエネルギーと待機レインを推定できます。) 8. CR2032コイン型電池のような高インピーダンス電源で動作する部品の場合、NXPは暗号化動作中の16.5mAのピーク電流に対応するために、特定のデカップリングコンデンサまたはバッファを推奨していますか? 9. SE051Pにおいて、非接触インターフェースはRF電源(リーダーフィールドからエネルギーを引き出す)で動作し、カスタムアプレット操作が可能ですか?それともカスタムオンチップロジックは外部電源(例:バッテリー)が必要ですか?RF駆動の動作が可能であれば、フィールドパワーのみの場合、ECDSA署名、署名検証、単調カウンターインクリメント、セキュアオブジェクト更新、その他の不揮発性メモリ書き込みなどの操作に制約はありますか? 仮想テスト Re: Applet こんにちは、 @aaschi さん。 ご連絡いただきありがとうございます!私の意見は以下の通りです。 1. SE051P上でカスタムJava Cardアプレットをビルド・ロードする実際の開発経路(どのSDK、ツール、Java Card / GlobalPlatformバージョンか)は?カスタムアプレッションは工場で(NXPやパートナーによって事前インストール)行われるのか、それともGlobalPlatformのセキュアチャネルを通じて現場で発行後に行うことができるのか、またどのようなキーマネジメント要件が適用されるのか?これらのトピックに関するドキュメントを提供していますので、セキュアファイルチャネルからリクエストしてください。詳細については、以下をご参照ください。 2. SE051P部品を入手し、カスタムアプレットを開発・提供する機能を利用するには、ライセンス、NDA、パートナーシップの要件、または最低注文数量はありますか?// はい、NDAとMOQが必要です。詳細については、お近くのNXP担当者にお問い合わせください。 B. ペイメントとカスタムロジックの共存(1つと2つのセキュア要素) 3. 単一のJCOP Pay(ペイメント)プラットフォームが、EMVCo認証の決済アプレットと独立したアプリケーションロジックを持つ別のカスタムJavaカードアプレットを同時にホストできますか?それともEMVCo認証はチップが決済アプレットのみを動かすことを要求しているのでしょうか?つまり、カスタムロジックには別のセキュア要素が必要になるのでしょうか?いいえ、2つの安全な要素を使う必要があります。1つは認証済みペイメントSE、もう1つはSE051P/カスタムSEで、専用ロジック用です。 4. 単一のチップ上で共存が可能な場合、カスタムアプレットの読み込みは支払いアプレットのEMVCo認証に影響または無効化しますか?いいえ、それは不可能です。 C. カスタムアプレットで利用可能なモノトニックカウンターと暗号(SE051P)//SE05x IoTアプレットのドキュメントはモノトニックカウンターセキュアオブジェクトをサポートしているため、ハードウェアの観点からはSE051Pでもサポートしているはずですが、カスタムアプレットの実装によります。 5. ネイティブの単調カウンタセキュアオブジェクトは、Java Card API経由でカスタムアプレットからアクセスできるのか、それとも事前インストールされたIoTアプレットインターフェースからのみアクセスできるのか?SE051PにはSE05xのIoTアプレットをインストールできず、自分でカスタムアプレットを開発する必要があります。 6. SE051P上のカスタムアプレットで使用できる署名アルゴリズムとECC曲線はどれですか(例:ECDSA P-256/P-384、Ed25519)?チップ上に保存された値の内部署名(POLICY_OBJ_INTERNAL_SIGNメカニズムと同様)は、カスタムアプレットからも利用できますか? SE05xのIoTアプレットは幅広いアルゴリズムと曲線をサポートしているため、SE051Pも対応可能ですが、カスタムアプレットの実装によります D. コイン型電池(CR2032)デバイス用電源 7. ECDSA P-256署名処理1回あたりの標準的な所要時間(ミリ秒単位)はどれくらいですか?また、SE051Pのアクティブな暗号化処理を行っていないときのアイドル/スタンバイ電流はどれくらいですか?(したがって、1動作あたりのエネルギーと待機レインを推定できます。)ECDSAP-256検証は55ミリ秒未満であることが文書化されていますが、署名タイミングは確認できませんでした。アクティブ非対称暗号電流は最大16.5mAです。この情報はSE05x IoTアプレットからのものであり、カスタムアプレットの場合は、独自の実装によって異なります。 8. CR2032コイン型電池などの高インピーダンス電源で駆動する部品の場合、NXPは暗号化動作中の16.5mAのピーク電流を処理するために、特定のデカップリングコンデンサまたはバッファを推奨していますか?//いいえ特定のCR2032バッファコンデンサ値が見つかりました。設計は約16.5 mAのピークに加え、動作時間とセルのESRを合わせます。 9. SE051Pにおいて、非接触インターフェースはRF電源(リーダーフィールドからエネルギーを引き出す)で動作し、カスタムアプレット操作が可能ですか?それともカスタムオンチップロジックは外部電源(例:バッテリー)が必要ですか?RF駆動の動作が可能であれば、フィールドパワーのみの場合、ECDSA署名、署名検証、単調カウンターインクリメント、セキュアオブジェクト更新、その他の不揮発性メモリ書き込みなどの操作に制約はありますか?//RF駆動の操作SE051の動作はサポートされていますが、カスタムアプレットの暗号/NVMアップデートのRFのみ対応は確認・テストが必要です。 お役に立てば幸いです。 すてきな一日を、 カン ------------------------------------------------------------------------------- 注記: この投稿があなたの質問への回答になっている場合は、「正解としてマーク」ボタンをクリックしてください。ありがとうございます! - 前回の投稿から7週間Threadをフォローしており、その後の返信は無視しています もし後で関連する質問があれば、新しいThreadを開き、閉じたThreadを参照してください。 ------------------------------------------------------------------------------- Re: Applet こんにちは、カンさん。 詳細なご回答ありがとうございました。大変参考になりました。この投稿を正しいものとしてマークします。 質問1のフォローアップとして、あなたが言及したドキュメント(SE051P用のカスタムJava Cardアプレット開発パス — SDK、ツール、Java Card/GlobalPlatformバージョン、アプレットのプロビジョニング)をセキュアファイルチャネル経由でリクエストしたいと思います。 正確な手順を教えていただけますか?具体的には: 1.セキュアファイルチャネルにはどうアクセスすればいいのでしょうか?NXPのサポートポータルでこのコミュニティアカウントにリンクしたプライベートサポートCASEを開くべきでしょうか、それとも別の方法がありますか? 2. NDAが成立する前に利用可能な書類はどれで、質問2で述べたNDAや現地代表の経路が必要なものはどれですか? 現段階の目標は、プロトタイプフェーズを計画するために開発経路のドキュメントを見直すことです。その後、現地代表とのNDA/MOQの協議が行われます。 改めてありがとうございました。 アースチ
記事全体を表示
[S32K3] [RTD 7.0.1] Three Issues in the BCTU Module I have found three problems with the BCTU module in the RTD code version S32K3_RTD_7_0_1_D2602_ASR_REL_4_9_REV_0000_20260206. The detailed issues are listed below:   Issue 1: In file Adc_TS_T40D34M70I1R0/src/Bctu_Ip.c, line 1558, the current code uses bitwise OR assignment: BctuBasePtr->FIFOERR |= FifoWatermarkMask; It should be modified to direct assignment: BctuBasePtr->FIFOERR = FifoWatermarkMask;   Issue 2: In file Adc_TS_T40D34M70I1R0/src/Bctu_Ip.c, lines 567 and 568, the existing code contains incorrect bit shift operations. The original code is shown below: ClrMask |= ((u32Mask & (BCTU_IP_STATUS_FIFO1_OVR_ERR << (Index * 2u))) != 0U) ? (BCTU_FIFOERR_OVR_ERR_FIFO1_MASK << Index) : 0U; ClrMask |= ((u32Mask & (BCTU_IP_STATUS_FIFO1_UNDR_ERR << (Index * 2u))) != 0U) ? (BCTU_FIFOERR_UNDR_ERR_FIFO1_MASK << Index) : 0U; These two lines should be revised to the correct shift logic as follows: ClrMask |= ((u32Mask & (BCTU_IP_STATUS_FIFO1_OVR_ERR << Index)) != 0U) ? (BCTU_FIFOERR_OVR_ERR_FIFO1_MASK << (Index * 2u)) : 0U; ClrMask |= ((u32Mask & (BCTU_IP_STATUS_FIFO1_UNDR_ERR << Index)) != 0U) ? (BCTU_FIFOERR_UNDR_ERR_FIFO1_MASK << (Index * 2u)) : 0U;   Issue 3: There is a type inconsistency alignment issue between the MCAL/SDK code generation tools and the static source code of the BCTU module. In the MCAL generated code (Adc_TS_T40D34M70I1R0/generate_PB/Adc_RegOperations.m, line 2397), the arrays defined in both header and C files uniformly adopt the uint32 type. In the SDK generated code, the type definition is inconsistent between header and C files: the array type in eclipse/mcu_data/components/PlatformSDK_S32K3/Bctu_Ip/Bctu_Ip_PBcfg.h (line 249) switches between uint16 and uint32 depending on whether the BctuFifoDmaRawData option is enabled, while the corresponding array in eclipse/mcu_data/components/PlatformSDK_S32K3/Bctu_Ip/Bctu_Ip_PBcfg.c (line 317) is fixed as uint32 type. In the static code (Adc_TS_T40D34M70I1R0/src/Bctu_Ip.c, line 1629), the transmission length (2-byte or 4-byte) is determined dynamically based on the BctuFifoDmaRawData configuration. All the following abnormal problems occur when theBctuFifoDmaRawData option is unchecked: 1. For SDK projects: The mismatched array types between header and C files cause direct compilation failures. 2. For MCAL projects: Although compilation can succeed, the fixed uint32 array definition leads to half of the memory space being wasted. Besides, each uint32 data unit contains two ADC results, requiring manual splitting of high and low uint16 values during data parsing. The above three bugs exist in the official version S32K3_RTD_7_0_1_D2602_ASR_REL_4_9_REV_0000_20260206. We hope NXP software engineers can fix these BCTU module defects in the next RTD release. Re: [S32K3] [RTD 7.0.1] Three Issues in the BCTU Module Hi@chenwilsoft Your question has been escalated to the internal forum and is awaiting confirmation from the design team. Re: [S32K3] [RTD 7.0.1] Three Issues in the BCTU Module Hi@chenwilsoft Thank you for your feedback. The software team and I have confirmed these issues, they are indeed bugs. We have escalated these issues internally and will fix them in a future update.
記事全体を表示
S32K348-GPIO EIRQ to DMA request Dear NXP Support Team, I.m trying now approach, where GPIO PTD6 has setting as EIRQ14 ,rising edge detection and I want to map this pin signal to the DMA channel, where I try get current value from PIT_1 Timer[0]. This is setup as FreeRunning. Seems that SIUL2 is set correctly for PTDA and I can see toggling on this pin when signal (1Hz) from signal generator is connect on related MCU pin. But DMA not working for me My guess here is that I have problem with finding proper chain from PTD6 ->DMAMUX-> DMA channel 4. and find where exactly I can find these information. From S32K3xx_DMAMUX_map.xlsx I got this: so here is my first issue: Which source->request  is dedicated for PTD6(EIRQ14) ? And how is related Table 44 from RM manual?  Here is fragments of my code which I working on now: Setup PTD6 void Setup_PTD6_EIRQ14_for_DMA(void) {     /* 1. Configuration of physical pin PTD6 via MSCR register */     // PTD6 corresponds to index MSCR[102] (as seen on your screenshot)     IP_SIUL2->MSCR[102] = 0;              // Clear register     IP_SIUL2->MSCR[102] |= (1 << 19);     // IBE = 1 (Input Buffer Enable - configures pin as input)     IP_SIUL2->IMCR[542-(512)] = 3u;     // Optional: if the signal floats, you can enable Pull-Up (PUE=1, PUS=1) or Pull-Down (PUE=1, PUS=0)     /* 2. Activation of edge detection on line EIRQ[14] */     // We want to capture the timestamp on every rising edge     IP_SIUL2->IREER0 |= (1 << 14);        // IREER0[EIRE14] = 1 (Enable Rising Edge)     IP_SIUL2->IFEER0 &= ~(1 << 14);       // IFEER0[EIRE14] = 0 (Disable Falling Edge)     /* 3. Request routing: Change from Interrupt to DMA */     // This step ensures that the edge does not wake up the CPU (NVIC), but triggers the DMA line instead     IP_SIUL2->DIRSR0 |= (1 << 14);        // DIRSR0[DIRS14] = 1 (Select DMA Request instead of Interrupt)     /* 4. Final enable of DMA request generation for EIRQ[14] */     IP_SIUL2->DIRER0 |= (1 << 14);        // DIRER0[EIRE14] = 1 (Activate DMA request line) }   and setup DMA channel: void Setup_eDMA_Channel4_Capture_PIT1(void) {     /* 1. DMAMUX Initialization for eDMA Channel 4 */     // Map EIRQ14 (source 14) to eDMA channel 4     IP_DMAMUX_1->CHCFG[4] = DMAMUX_CHCFG_ENBL_MASK | DMAMUX_CHCFG_SOURCE(7u);  // EIRQ14 is source 7 for DMAMUX_1     //IP_DMAMUX_0->CHCFG[4] = 0U;     /* 2. TCD Configuration for Channel 4 pointing to PIT_1 (Exact S32K3 bare-metal syntax) */     // Source: Current value of PIT_1 Timer 0     IP_TCD->TCD4_SADDR = (uint32_t)&(IP_PIT_1->TIMER[0].CVAL);     IP_TCD->TCD4_SOFF  = 0;       // Source does not increment     IP_TCD->TCD4_ATTR  = 0x0202;  // 32-bit source, 32-bit destination     // Minor Loop: Number of bytes transferred per single trigger     // In S32K3 this corresponds to the NBYTES_MLOFFNO register (no minor loop linking)     IP_TCD->NBYTES4.TCD4_NBYTES_MLOFFNO = 4;  // Transfer 4 bytes (32-bit) per trigger     // Destination: Our array in RAM     IP_TCD->TCD4_DADDR = (uint32_t)dma_timestamps;     IP_TCD->TCD4_DOFF  = 4;       // Shift by 4 bytes in RAM after each edge     // Circular buffer: wrap around to the beginning after filling the entire array     IP_TCD->TCD4_DLAST_SGA = -(BUFFER_SIZE * 4);     // Major Loop Counter: Total number of iterations in the loop     //IP_TCD->CITTER4.TCD4_CITER_ELINKNO = BUFFER_SIZE;     IP_TCD->CITER4.TCD4_CITER_ELINKNO = BUFFER_SIZE;     IP_TCD->BITER4.TCD4_BITER_ELINKNO = BUFFER_SIZE;     /* 3. eDMA channel activation for hardware triggers via official macro */     //IP_TCD->CH4_CSR |= DMA_TCD_CH4_CSR_ERQ_MASK;     /* 3. eDMA channel activation for hardware triggers (With asynchronous mode enabled) */     // Bit 0 (ERQ) = 1  -> Enables hardware triggers     // Bit 2 (EARQ) = 1 -> Enables asynchronous requests from external pins (SIUL2 EIRQ)     IP_TCD->CH4_CSR |= 3u;  // ERQ=1, EARQ=1 }   Here I guess is key line: IP_DMAMUX_1->CHCFG[4] = DMAMUX_CHCFG_ENBL_MASK | DMAMUX_CHCFG_SOURCE(7u);  // EIRQ14 is source 7 for DMAMUX_1 where I'm little bit confused which IP_DMAMUX and which DMAMUX_CHCFG_SOURCE I need to use and where is proper information about this. Best regards Ondrej    Re: S32K348-GPIO EIRQ to DMA request Hi@OndrejK "Is this meaning, that MCU have 32 TCD channels and TCD 0 to 15 is valid for DMAMUX_0 and TCD 15 to31 is for DMAMUX_1 ?" yes, you can find these info in the datasheet, I copy it for your reference. Re: S32K348-GPIO EIRQ to DMA request Hi Senlent, thank you for your answer. please, can you pointed me from where popup your meaning about TCD mapping?  Is this meaning, that MCU have 32 TCD channels and TCD 0 to 15 is valid for DMAMUX_0 and TCD 15 to31 is  for DMAMUX_1 ? So I'm still little bit confused about information regarding DMAMUX and eDMA.  Best regards  Ondrej Re: S32K348-GPIO EIRQ to DMA request Hi@OndrejK Your understanding is correct: PTD6->EIRQ14->DMAMUX1.SOURCE 7. IP_DMAMUX_1->CHCFG[4] = DMAMUX_CHCFG_ENBL_MASK | DMAMUX_CHCFG_SOURCE(7u); // EIRQ14 is source 7 for DMAMUX_1 However, the TDC settings are incorrect. My understanding is that they should be as follows: IP_DMAMUX_1->CHCFG[0] ->TCD 16 IP_DMAMUX_1->CHCFG[4] -> TCD 20 instead of TCD4 Re: S32K348-GPIO EIRQ to DMA request HI SenLent,  I made some changes in my code based on my observation. Here is my latest code: main initialization:       Setup_PTD6_EIRQ14_for_DMA();     Setup_PIT1_Timer0_FreeRunning();     Setup_DMAMUX_Channel0_ToTCD16_Capture_PIT1();      //clear EIRQ14 interrupt flag      IP_SIUL2->DISR0 = (1 << 14); and here is rest of code: void Setup_PTD6_EIRQ14_for_DMA(void) {     // 1. Aktivácia hodinového deliča pre filtre v SIUL2 (ak už nie je povolený inde)     IP_SIUL2->IFCPR = 0U; // Nastavenie deličky filtra na Functional Clock (bez dodatočného delenia) // 2. Voliteľne vypnite filter pre daný EIRQ index alebo ho nastavte na minimálny počet cyklov // Pre EIRQ14 (v závislosti od mapovania registrov IFMCR):     IP_SIUL2->IFMCR[14] = 0U; // 0U vypína digitálny filter, hrana prechádza okamžite ako čistý hardvérový trigger     /* 1. Configuration of physical pin PTD6 via MSCR register */     // PTD6 corresponds to index MSCR[102] (as seen on your screenshot)     IP_SIUL2->MSCR[102] = 0;              // Clear register     IP_SIUL2->MSCR[102] |= (1 << 19);     // IBE = 1 (Input Buffer Enable - configures pin as input)     IP_SIUL2->IMCR[542-(512)] = 3u;     // Optional: if the signal floats, you can enable Pull-Up (PUE=1, PUS=1) or Pull-Down (PUE=1, PUS=0)     /* 2. Activation of edge detection on line EIRQ[14] */     // We want to capture the timestamp on every rising edge     IP_SIUL2->IREER0 |= (1 << 14);        // IREER0[EIRE14] = 1 (Enable Rising Edge)     IP_SIUL2->IFEER0 &= ~(1 << 14);       // IFEER0[EIRE14] = 0 (Disable Falling Edge)     /* 3. Request routing: Change from Interrupt to DMA */     // This step ensures that the edge does not wake up the CPU (NVIC), but triggers the DMA line instead     IP_SIUL2->DIRSR0 |= (1 << 14);        // DIRSR0[DIRS14] = 1 (Select DMA Request instead of Interrupt)     /* 4. Final enable of DMA request generation for EIRQ[14] */     IP_SIUL2->DIRER0 |= (1 << 14);        // DIRER0[EIRE14] = 1 (Activate DMA request line) }   void Setup_DMAMUX_Channel0_ToTCD16_Capture_PIT1(void) {     /* 1. DMAMUX Initialization for eDMA Channel 4 */    // Podľa NXP tabuľky prislúcha SIUL2 DMA request 4 zdrojový index 7u     //IP_DMAMUX_1->CHCFG[4] = DMAMUX_CHCFG_ENBL_MASK | DMAMUX_CHCFG_SOURCE(7u);     //follow doc ,first disable channel 4, then configure it, and finally enable it     IP_DMAMUX_1->CHCFG[0] = 0u;     /* 2. TCD Configuration for Channel 4 pointing to PIT_1 (Exact S32K3 bare-metal syntax) */     // Source: Current value of PIT_1 Timer 0     IP_TCD->TCD16_SADDR = (uint32_t)&(IP_PIT_1->TIMER[0].CVAL);     IP_TCD->TCD16_SOFF  = 0;       // Source does not increment     IP_TCD->TCD16_ATTR  = 0x0202;  // 32-bit source, 32-bit destination     // Minor Loop: Number of bytes transferred per single trigger     // In S32K3 this corresponds to the NBYTES_MLOFFNO register (no minor loop linking)     IP_TCD->NBYTES16.TCD16_NBYTES_MLOFFNO = 4;  // Transfer 4 bytes (32-bit) per trigger     // Destination: Our array in RAM     IP_TCD->TCD16_DADDR = (uint32_t)dma_timestamps;     IP_TCD->TCD16_DOFF  = 4;       // Shift by 4 bytes in RAM after each edge     // Circular buffer: wrap around to the beginning after filling the entire array     IP_TCD->TCD16_DLAST_SGA = -(BUFFER_SIZE * 4);     // Major Loop Counter: Total number of iterations in the loop     //IP_TCD->CITTER20.TCD20_CITER_ELINKNO = BUFFER_SIZE;     IP_TCD->CITER16.TCD16_CITER_ELINKNO = BUFFER_SIZE;     IP_TCD->BITER16.TCD16_BITER_ELINKNO = BUFFER_SIZE;     //IP_TCD->CH16_CSR |= 3u;  // ERQ=1, EARQ=1     //enable DMAMUX channel 0     IP_DMAMUX_1->CHCFG[0] = DMAMUX_CHCFG_ENBL_MASK | DMAMUX_CHCFG_SOURCE(6u);     __asm volatile ("nop");     __asm volatile ("nop");     IP_TCD->CH16_CSR |= 3u; }   And I'm still not able fire up DMA transfer by EIRQ(14) when is this assert. On Debugger I can see flag appear when I change signal on MCU PTD6 pin . Next I can start manually DMA transfer by TCD16_CSR START bit and on TCD channel CITTER value is decreased and value form PIT1_TIMER[0] is stored to my dma_timestamps array. Btw: This should be defined in "normal" SRAM section. I had before set this to data_cache section , what lead to DMA "Destination bus error" new definition: __attribute__((aligned(32))) __attribute__((section(".mcal_data"))) uint32_t dma_timestamps[BUFFER_SIZE];   but If I skip manual START (need to be never set from beginning of code) and I change signal on PTD6 pin , DMA channel do nothing , CITTER register stay on initialize value. Please, can you help identify where I have problem? I still guess that I have issue with proper connection from PTD6-EIRQ(14) asserted flag to the TCD16 channel.  Maybe correct source for DMAMUX channel? For DMAMUX1-CH[0] I tested all sources (1 to 😎 of SUIL2 instances listed on DMAMUX excel table, without any success , but here I'm not sure if my steps was correct too     Re: S32K348-GPIO EIRQ to DMA request Hi@OndrejK I've created a demo for your reference, using PTD6 to trigger DMA for a single data transfer. It's based on S32K344 + RTD 7.0.1. And I've tested it; I can assure you that my understanding is correct. For PTD6, the source should 7.  IP_DMAMUX_1->CHCFG[0] = DMAMUX_CHCFG_ENBL_MASK | DMAMUX_CHCFG_SOURCE(7u); Re: S32K348-GPIO EIRQ to DMA request Hi SenLent, about choosing DMA channel here was my imagine that I can choose freely one from related DMA_MUX groups Meantime I tested other DMA_MUX <->TCD combination and on my side working only next one  IP_DMAMUX_1->CHCFG[3] and TCD16. I got try next others: IP_DMAMUX_1->CHCFG[4] and TCD17. IP_DMAMUX_1->CHCFG[0] and TCD16. And please, why exactly only IP_DMAMUX_1->CHCFG[3] and TCD16. working ? And  how is the relationship between IP_DMAMUX_1->CHCFG[xx] and TCDyy ? Re: S32K348-GPIO EIRQ to DMA request Hi Senlent, thank you very match for your example. After some changes I have working example now. I attach my adjusted project , where was one important issue: SIUL ICU with DMA req enabling  was set up before whole DMA TCD channel was fully configured. In that case TCD_SADDR and TCD_DADDR was empty(zero values) and after that enabling DMA req in SUIL leads to DMA error - "Source bus error" what bring me sense.  After change order of this initialization. example start working for me. But I have still problem understand exact relation between DMAMUX channel and TCD channel. You wrote that DMAMUX should by configured as CHCGF[0].  After downloading and starting app in our S32k344 custom development board i found that DMAMUX-CHCFG[3] is configured and exactly in code in function  Dma_Mux_Ip_Init_Privileged is  line which exactly lead to this configuration: RegisterIndex = DMA_MUX_IP_GATE_OFFSET((pConfig->pChannelConfigArr[ChannelCount].Channel)); here is screenshot from lauterbach Trace32 debugger, where you can see final setup after all initialization steps: In Design studio I have next configuration after updating RTD to 7.0.1: is this correct and what does it mean that here  is  choice of 3 DMA Mux sources? Re: S32K348-GPIO EIRQ to DMA request Hi@OndrejK Good to hear that. This configuration tool may cause some confusion for developers who are just getting started. For the S32K348, there is no DMAMUX_3; only DMAMUX_0 and DMAMUX_1 exist. •For the S32K310, S32K311, and S32K312: DMAMUX_0 channels 0–5 and DMAMUX_1 channels 0–5 are mapped to eDMA Transfer Control Descriptor (TCD) 0–5 and eDMA Transfer Control Descriptor (TCD) 6–11, respectively. Programming of DMAMUX_0 channels 6–15 and DMAMUX_1 channels 6–15 is therefore not expected; however, if programmed, any access will result in either an error response for channels 8–15 or no error response for channels 6–7. •For the remaining S32K3xx devices: DMAMUX_0 channels 0–15 and DMAMUX_1 channels 0–15 are mapped to eDMA Transfer Control Descriptors (TCDs) 0–15 and eDMA Transfer Control Descriptors (TCDs) 16–31, respectively. The above is taken from the data sheet, and it is easy to understand: The “DMA Hardware Channel” corresponds to the TCD number. When you select DMA_CHANNEL_0 ~ DMA_CHANNEL_15, DMAMUX_0 is used by default; when you select 16–31, DMAMUX_1 is used by default. For example, in this topic, PTD6 corresponds to Source 7 of DMAMUX_1, so “DMA Hardware Channel” can be set to any value between DMA_CHANNEL_16 and DMA_CHANNEL_31. Let’s take another example: if you select EIRQ 7 to trigger DMA, then “Dma Hardware Channel” can be set to any value between DMA_CHANNEL_0 and DMA_CHANNEL_15. Re: S32K348-GPIO EIRQ to DMA request Hi@OndrejK Here is the right order: IP_DMAMUX_0>CHCFG[0] and TCD0. IP_DMAMUX_0->CHCFG[1] and TCD1. IP_DMAMUX_0->CHCFG[2] and TCD2. IP_DMAMUX_0->CHCFG[3] and TCD3. IP_DMAMUX_0->CHCFG[4] and TCD4. IP_DMAMUX_0->CHCFG[5] and TCD5. IP_DMAMUX_0->CHCFG[6] and TCD6. IP_DMAMUX_0->CHCFG[7] and TCD7. IP_DMAMUX_0->CHCFG[8] and TCD8. IP_DMAMUX_0->CHCFG[9] and TCD9. IP_DMAMUX_0->CHCFG[10] and TCD10. IP_DMAMUX_0->CHCFG[11] and TCD11. IP_DMAMUX_0->CHCFG[12] and TCD12. IP_DMAMUX_0->CHCFG[13] and TCD13. IP_DMAMUX_0->CHCFG[14] and TCD14. IP_DMAMUX_0->CHCFG[15] and TCD15. IP_DMAMUX_1->CHCFG[0] and TCD16. IP_DMAMUX_1->CHCFG[1] and TCD17. IP_DMAMUX_1->CHCFG[2] and TCD18. IP_DMAMUX_1->CHCFG[3] and TCD19. IP_DMAMUX_1->CHCFG[4] and TCD20. IP_DMAMUX_1->CHCFG[5] and TCD21. IP_DMAMUX_1->CHCFG[6] and TCD22. IP_DMAMUX_1->CHCFG[7] and TCD23. IP_DMAMUX_1->CHCFG[8] and TCD24. IP_DMAMUX_1->CHCFG[9] and TCD25. IP_DMAMUX_1->CHCFG[10] and TCD26. IP_DMAMUX_1->CHCFG[11] and TCD27. IP_DMAMUX_1->CHCFG[12] and TCD28. IP_DMAMUX_1->CHCFG[13] and TCD29. IP_DMAMUX_1->CHCFG[14] and TCD30. IP_DMAMUX_1->CHCFG[15] and TCD31. Re: S32K348-GPIO EIRQ to DMA request Hi Senlent, meantime I tested this same project with my other colleague , which use S32DS version 3.6.3 and Ozone debugger and his results is same as your.  Seems that you have right. but I'm completely out what's going on on my side?  😞 Re: S32K348-GPIO EIRQ to DMA request Hi SenLent, I made test on latest S32 DS project  and I added more DMA_MUX configurations. Here is screenshot of my setup: and here is result after download build code to our board: As you can see, your described order for assigning DMA_MUX and TCD is not followed. Is this same bug on RTD software or ? Re: S32K348-GPIO EIRQ to DMA request Hi@OndrejK It's obvious that this might be related to the debugger you're using, or perhaps the version of the debugger. Re: S32K348-GPIO EIRQ to DMA request Hi@OndrejK This is the demo you provided; I haven't made any modifications. These are my test results. Re: S32K348-GPIO EIRQ to DMA request here is my project, just adjusted latest one which I attached before  I created 2 channel on DMA_MUX_0 as DMA_Channel_0 and DMA_Channel_1. and for these channel is assigned DMA_MUX_0->CHCFG[3] and DMA-MUX_0-CHCFG[2]. Same "mixed" order you can see on DMA_MUX_1 Re: S32K348-GPIO EIRQ to DMA request Hi@OndrejK I can't see what the problem is. Could you explain it more clearly, or provide the complete test project so I can tell you where your doubts lie? Re: S32K348-GPIO EIRQ to DMA request Hi SenLent,  finaly i found where is "issue" here. Problem is that Ozone and Lauterbach just presenting different way od DMA_MUX->CHCFG and final trick is that these CHCFG register is mapped on MCU side (base adress for DMA_MUX_1 is 0x40284000) in this order: 0x40284000 ->CHCFG[3] 0x40284001  ->CHCFG[2] 0x40284002 ->CHCFG[1] 0x40284003 ->CHCFG[0] 0x40284004 ->CHCFG[7] 0x40284005 ->CHCFG[6] 0x40284006 ->CHCFG[5] 0x40284007 ->CHCFG[4] 0x40284008 ->CHCFG[11] .... see my screenshot below and from this moment my result give me sense and corresponding with your tips 🙂 Thank you for your support  and I guess that this ticked can be resolved Re: S32K348-GPIO EIRQ to DMA request Hi@OndrejK Good, please click "ACCEPT AS SOLUTION" to close this topic.
記事全体を表示
[S32K3] [RTD 7.0.1]BCTUモジュールにおける3つの課題 RTDコードバージョンS32K3_RTD_7_0_1_D2602_ASR_REL_4_9_REV_0000_20260206のBCTUモジュールに3つの問題が見つかりました。詳細な問題点は以下のとおりです。   問題 1:ファイルAdc_TS_T40D34M70I1R0/src/Bctu_Ip.cの 1558 行目で、現在のコードではビットごとの OR 代入を使用しています: BctuBasePtr->FIFOERR |= FifoWatermarkMask;これを直接代入に変更する必要があります: BctuBasePtr->FIFOERR = FifoWatermarkMask;   問題2:ファイルAdc_TS_T40D34M70I1R0/src/Bctu_Ip.cの567行目と568行目に、既存のコードに誤ったビットシフト演算が含まれています。元のコードは以下のとおりです。 ClrMask |= ((u32Mask & (BCTU_IP_STATUS_FIFO1_OVR_ERR << (Index * 2u))) != 0U) ?(BCTU_FIFOERR_OVR_ERR_FIFO1_MASK << Index) : 0U; ClrMask |= ((u32Mask & (BCTU_IP_STATUS_FIFO1_UNDR_ERR << (Index * 2u))) != 0U) ?(BCTU_FIFOERR_UNDR_ERR_FIFO1_MASK << インデックス) : 0U; これらの2行は、以下のように正しいシフトロジックに修正する必要があります。 ClrMask |= ((u32Mask & (BCTU_IP_STATUS_FIFO1_OVR_ERR << Index)) != 0U) ?(BCTU_FIFOERR_OVR_ERR_FIFO1_MASK << (Index * 2u)) : 0U; ClrMask |= ((u32Mask & (BCTU_IP_STATUS_FIFO1_UNDR_ERR << Index)) != 0U) ?(BCTU_FIFOERR_UNDR_ERR_FIFO1_MASK << (インデックス * 2u)) : 0U;   問題3: MCAL/SDKコード生成ツールとBCTUモジュールの静的ソースコードの間に型の整合性の問題があります。MCAL で生成されたコード ( Adc_TS_T40D34M70I1R0/generate_PB/Adc_RegOperations.m 、2397行目)では、ヘッダーファイルとCファイルの両方で定義されている配列は、一律にuint32型を採用しています。SDK生成コードでは、ヘッダーファイルとCファイルの型定義が一貫していません。eclipse/mcu_data/components/PlatformSDK_S32K3/Bctu_Ip/Bctu_Ip_PBcfg.hの配列型は(249行目)は、BctuFifoDmaRawDataオプションが有効になっているかどうかに応じてuint16とuint32を切り替え、対応する配列はeclipse/mcu_data/components/PlatformSDK_S32K3/Bctu_Ip/Bctu_Ip_PBcfg.cの対応する配列です(317行目)はuint32型に固定されています。静的コード ( Adc_TS_T40D34M70I1R0/src/Bctu_Ip.c 、1629行目)では、送信長(2バイトまたは4バイト)はBctuFifoDmaRawData構成に基づいて動的に決定されます。BctuFifoDmaRawDataオプションのチェックを外すと、以下の異常な問題がすべて発生します。 1.SDKプロジェクトの場合:ヘッダーファイルとCファイルの配列型が不一致で、直接コン パイル失敗を引き起こします。 2. MCALプロジェクトの場合:コンパイルは成功しますが、固定されたuint32配列定義のため メモリ容量の半分が無駄になります。さらに、各uint32データユニットには2つのADC結果が含まれているため、データ解析時にuint16の高値と低値を手動で分割する必要があります。 上記の3つのバグは、公式バージョンS32K3_RTD_7_0_1_D2602_ASR_REL_4_9_REV_0000_20260206に存在します。NXPのソフトウェアエンジニアが次回RTDリリースでこれらのBCTUモジュールの欠陥を修正できることを期待しています。 Re: [S32K3] [RTD 7.0.1] Three Issues in the BCTU Module こんにちは、@ chenwilsoft あなたの質問は社内フォーラムにエスカレーションされており、設計チームからの確認を待っています。 Re: [S32K3] [RTD 7.0.1] Three Issues in the BCTU Module こんにちは、@ chenwilsoft ご意見ありがとうございます。 ソフトウェアチームと私はこれらの問題を確認しましたが、確かにバグです。 これらの問題は社内でエスカレーションしており、今後のアップデートで修正する予定です。
記事全体を表示
小程序 您好,请问。请问有人能帮帮我吗? 1.在 SE051P 上构建和加载自定义 Java Card 小程序的实际开发路径是什么(需要哪个 SDK、工具和 Java Card / GlobalPlatform 版本)?自定义小程序配置是在工厂完成的(由 NXP 或合作伙伴预加载),还是可以在颁发后通过 GlobalPlatform 安全通道在现场完成的?有哪些密钥管理要求? 2. 获取 SE051P 部件以及开发和配置定制小程序的能力,是否有许可、保密协议或合作要求,或者最低订购量要求? B. 支付逻辑与自定义逻辑的共存(一个安全元件与两个安全元件的对比) 3. 单个 JCOP Pay(支付)平台能否同时托管一个经 EMVCo 认证的支付小程序和一个具有独立应用程序逻辑的单独自定义 Java Card 小程序?或者 EMVCo 认证是否要求芯片仅运行支付小程序——这意味着自定义逻辑需要单独的安全元件? 4. 如果可以在单个芯片上共存,加载自定义小程序是否会影响或使支付小程序的 EMVCo 认证失效? C. 自定义小程序可使用单调计数器和加密功能 (SE051P) 5. 本地单调计数器安全对象是否可以通过 Java Card API 从自定义小程序访问,还是只能通过预装的 IoT 小程序接口访问? 6. SE051P 上的自定义小程序可以使用哪些签名算法和 ECC 曲线(例如,ECDSA P-256/P-384、Ed25519)?是否也可以通过自定义小程序对存储在芯片上的值进行内部签名(如使用 POLICY_OBJ_INTERNAL_SIGN 机制)? D. 纽扣电池(CR2032)设备的功率 7. 单个 ECDSA P-256 签名操作的典型持续时间(以毫秒为单位)是多少?SE051P 在非活动加密操作期间的空闲/待机电流是多少?(以便估算每次运行的能耗和待机能耗。) 8. 对于由高阻抗电源(例如 CR2032 纽扣电池)供电的器件,NXP 是否推荐特定的去耦电容或缓冲器来处理加密操作期间的 16.5 mA 峰值电流? 9. 在 SE051P 中,免接触式接口能否通过射频供电(从读卡器场汲取能量)来运行自定义小程序操作,还是自定义片上逻辑需要外部电源(例如电池)?如果射频供电操作是可能的,那么在仅使用场功率的情况下,ECDSA 签名、签名验证、单调计数器递增、安全对象更新或其他非易失性存储器写入等操作是否存在限制? 虚拟测试 Re: Applet 嗨@aaschi , 感谢您的联系!我的评论如下: 1. 在 SE051P 上构建和加载自定义 Java Card 小程序的实际开发路径是什么(需要哪个 SDK、工具和 Java Card / GlobalPlatform 版本)?自定义小程序配置是在工厂完成的(由 NXP 或合作伙伴预加载),还是可以在颁发后通过 GlobalPlatform 安全通道在现场完成的?有哪些密钥管理要求?// 我们提供有关这些主题的文档,请通过安全文件通道索取。更多详情请参考以下内容。 2. 获取 SE051P 部件以及开发和配置定制小程序的能力,是否有许可、保密协议或合作要求,或者最低订购量要求?是的,需要签署保密协议,并且需要达到最低订购量。请联系您当地的恩智浦代表了解更多详情。 B. 支付逻辑与自定义逻辑的共存(一个安全元件与两个安全元件的对比) 3. 单个 JCOP Pay(支付)平台能否同时托管一个经 EMVCo 认证的支付小程序和一个具有独立应用程序逻辑的单独自定义 Java Card 小程序?或者,EMVCo认证是否要求芯片仅运行支付小程序——这意味着自定义逻辑需要一个单独的安全元件?不,您必须使用两个安全元件——一个经过认证的支付 SE 和一个用于专有逻辑的 SE051P/自定义 SE。 4. 如果可以在单个芯片上共存,加载自定义小程序是否会影响或使支付小程序的EMVCo认证失效?//不,这不可能。 C. 自定义小程序 (SE051P) 可使用单调计数器和加密 // SE05x IoT 小程序文档支持单调计数器安全对象,因此从硬件角度来看,SE051P 也应该支持,但这取决于您的自定义小程序实现。 5. 本地单调计数器安全对象是否可以通过 Java Card API 从自定义小程序访问,还是只能通过预装的 IoT 小程序接口访问?// 您无法在 SE051P 上安装 SE05x 预装的 IoT 小程序,您必须开发自己的自定义小程序。 6. SE051P 上的自定义小程序可以使用哪些签名算法和 ECC 曲线(例如,ECDSA P-256/P-384、Ed25519)?是否也可以通过自定义小程序对存储在芯片上的值进行内部签名(如使用 POLICY_OBJ_INTERNAL_SIGN 机制)? SE05x IoT 小程序支持多种算法和曲线,因此 SE051P 也可能支持,但这取决于您的自定义小程序实现。 D. 纽扣电池(CR2032)设备的功率 7. 单个 ECDSA P-256 签名操作的典型持续时间(以毫秒为单位)是多少?SE051P 在非活动加密操作期间的空闲/待机电流是多少?(以便估算每次运行的能耗和待机能耗。)//ECDSAP-256 验证记录为 <55 毫秒;未找到签名计时。主动式非对称加密电流高达 16.5 mA。这些信息来自SE05x IoT 小程序,对于自定义小程序,则取决于您自己的实现。 8. 对于由高阻抗电源(例如 CR2032 纽扣电池)供电的器件,NXP 是否推荐使用特定的去耦电容或缓冲器来处理加密操作期间 16.5 mA 的峰值电流?//否确定了 CR2032 缓冲电容的具体值;设计峰值电流约为 16.5 mA,加上工作时间和电池 ESR。 9. 在 SE051P 中,免接触式接口能否通过射频供电(从读卡器场汲取能量)来运行自定义小程序操作,还是自定义片上逻辑需要外部电源(例如电池)?如果射频供电操作可行,那么在仅使用场强的情况下,诸如 ECDSA 签名、签名验证、单调计数器递增、安全对象更新或其他非易失性存储器写入等操作是否存在限制?//射频供电支持 SE051 操作,但必须确认和测试对自定义小程序加密/NVM 更新的 RF 专用支持。 希望对您有所帮助。 祝你有美好的一天, 坎 ------------------------------------------------------------------------------- 笔记: - 如果此回复解答了您的问题,请点击“标记为正确答案”按钮。谢谢你! - 我们会持续关注帖子,从最后一条回复发出后持续7周,之后的回复将被忽略。 如果您之后有相关问题,请另开新帖并引用已关闭的帖子。 ------------------------------------------------------------------------------- Re: Applet 嗨,Kan, 感谢您的详细解答,非常有帮助。我会将此帖子标记为正确答案。 关于问题 1:我想通过安全文件通道请求您提到的文档(SE051P 的自定义 Java Card 小程序开发路径 — SDK、工具、Java Card / GlobalPlatform 版本和小程序配置)。 请问您能告诉我具体的操作步骤吗?具体来说: 1.我该如何访问安全文件通道?我应该在与此社区帐户关联的 NXP 支持门户上开一个私人支持案例,还是有其他途径? 2. 在签署保密协议之前,哪些文件可以获取?哪些文件需要通过您在问题 2 中提到的保密协议/当地代表途径获取? 我现阶段的目标是审查开发路径文档,以规划原型阶段;之后将与当地代表讨论保密协议/最低订购量。 再次感谢, 阿斯基
記事全体を表示
Applet Hi, please. Can anyone help me? 1. What is the practical development path to build and load a custom Java Card applet on the SE051P (which SDK, tools, and Java Card / GlobalPlatform version)? Is custom-applet provisioning done at the factory (pre-loaded by NXP or a partner), or can it be done post-issuance in the field via a GlobalPlatform secure channel, and what key-management requirements apply? 2. Are there licensing, NDA, or partnership requirements — or a minimum order quantity — to obtain SE051P parts together with the ability to develop and provision custom applets? B. Coexistence of payment and custom logic (one vs. two secure elements) 3. Can a single JCOP Pay (payment) platform host, simultaneously, an EMVCo-certified payment applet AND a separate custom Java Card applet with independent application logic? Or does EMVCo certification require the chip to run only the payment applet — meaning a separate secure element would be required for the custom logic? 4. If coexistence on a single chip is possible, does loading a custom applet affect or invalidate the EMVCo certification of the payment applet? C. Monotonic counter and crypto available to a custom applet (SE051P) 5. Is the native monotonic Counter secure-object accessible from a custom applet via the Java Card API, or only through the pre-installed IoT applet interface? 6. Which signature algorithms and ECC curves are available to a custom applet on the SE051P (e.g., ECDSA P-256/P-384, Ed25519)? Is internal signing of a value stored on-chip (as with the POLICY_OBJ_INTERNAL_SIGN mechanism) available from a custom applet as well? D. Power for a coin-cell (CR2032) device 7. What is the typical duration (in milliseconds) of a single ECDSA P-256 signature operation, and what is the idle/standby current of the SE051P outside active crypto operations? (So that energy per operation and standby drain can be estimated.) 8. For a part powered by a high-impedance source such as a CR2032 coin cell, does NXP recommend a specific decoupling capacitor or buffer to handle the 16.5 mA peak current during a crypto operation? 9. In the SE051P, can the contactless interface operate RF-powered (drawing energy from the reader field) for custom-applet operations, or does custom on-chip logic require external power (e.g., a battery)? If RF-powered operation is possible, are there constraints — under field power alone — on operations such as ECDSA signing, signature verification, monotonic-counter increment, secure-object update, or other non-volatile memory writes? Virtual test Re: Applet Hi @aaschi , Thanks for the reaching out! Please have my comments as below: 1. What is the practical development path to build and load a custom Java Card applet on the SE051P (which SDK, tools, and Java Card / GlobalPlatform version)? Is custom-applet provisioning done at the factory (pre-loaded by NXP or a partner), or can it be done post-issuance in the field via a GlobalPlatform secure channel, and what key-management requirements apply? // We provide docs on these topics, please request them via the secure file channel. please refer to the following for more details. 2. Are there licensing, NDA, or partnership requirements — or a minimum order quantity — to obtain SE051P parts together with the ability to develop and provision custom applets? // Yes, NDA is needed, and MOQ as well. please check with your local NXP representative for more details. B. Coexistence of payment and custom logic (one vs. two secure elements) 3. Can a single JCOP Pay (payment) platform host, simultaneously, an EMVCo-certified payment applet AND a separate custom Java Card applet with independent application logic? Or does EMVCo certification require the chip to run only the payment applet — meaning a separate secure element would be required for the custom logic?// No, you have to use two secure elements — one certified payment SE and one SE051P/custom SE for proprietary logic. 4. If coexistence on a single chip is possible, does loading a custom applet affect or invalidate the EMVCo certification of the payment applet?// No, it is not possible. C. Monotonic counter and crypto available to a custom applet (SE051P)//The SE05x IoT-applet documentation supports monotonic counter secure objects, so from hardware perspective, it should support by SE051P as well, but it depends on your custom applet implementation. 5. Is the native monotonic Counter secure-object accessible from a custom applet via the Java Card API, or only through the pre-installed IoT applet interface? // you can not install the SE05x pre-installed IoT applet on SE051P, you have to develop your own custom applet.  6. Which signature algorithms and ECC curves are available to a custom applet on the SE051P (e.g., ECDSA P-256/P-384, Ed25519)? Is internal signing of a value stored on-chip (as with the POLICY_OBJ_INTERNAL_SIGN mechanism) available from a custom applet as well? // The SE05x IoT applet supports a broad set of algorithms and curves so SE051P can support but it depends on your custom applet implementation D. Power for a coin-cell (CR2032) device 7. What is the typical duration (in milliseconds) of a single ECDSA P-256 signature operation, and what is the idle/standby current of the SE051P outside active crypto operations? (So that energy per operation and standby drain can be estimated.)//ECDSA P-256 verification is documented as <55 ms; signing timing was not found. Active asymmetric crypto current is up to 16.5 mA. Such info is from The SE05x IoT applet, for a custom applet, it depends on your own implementation. 8. For a part powered by a high-impedance source such as a CR2032 coin cell, does NXP recommend a specific decoupling capacitor or buffer to handle the 16.5 mA peak current during a crypto operation?//No specific CR2032 buffer capacitor value was found; design around 16.5 mA peak plus operation time and cell ESR. 9. In the SE051P, can the contactless interface operate RF-powered (drawing energy from the reader field) for custom-applet operations, or does custom on-chip logic require external power (e.g., a battery)? If RF-powered operation is possible, are there constraints — under field power alone — on operations such as ECDSA signing, signature verification, monotonic-counter increment, secure-object update, or other non-volatile memory writes?//RF-powered SE051 operation is supported, but RF-only support for custom applet crypto/NVM updates must be confirmed and tested. 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. ------------------------------------------------------------------------------- Re: Applet Hi Kan, Thank you for the detailed answers — very helpful. I will mark the post as correct. Following up on question 1: I would like to request the documents you mentioned (custom Java Card applet development path for the SE051P — SDK, tools, Java Card / GlobalPlatform versions, and applet provisioning) via the secure file channel. Could you please let me know the exact procedure? Specifically: 1. How do I access the secure file channel — should I open a private support case on the NXP support portal linked to this community account, or is there another route? 2. Which of these documents are available before an NDA is in place, and which ones require the NDA / local representative path you mentioned in question 2? My goal at this stage is to review the development path documentation to plan the prototype phase; the NDA/MOQ discussion with the local representative would follow. Thank you again, aaschi
記事全体を表示
S32K348-GPIO EIRQ 到 DMA 请求 尊敬的恩智浦技术支持团队: 我现在尝试的方法,将 GPIO PTD6 设置为 EIRQ14,上升沿检测,我想将此引脚信号映射到 DMA 通道,我尝试从 PIT_1 Timer[0] 获取当前值。这是自由奔跑模式。 看起来 SIUL2 已正确设置为 PTDA,当信号发生器发出的信号 (1Hz) 连接到相关的 MCU 引脚时,我可以看到该引脚切换。 但是DMA对我来说不起作用 我的猜测是,我的问题在于找不到从 PTD6 -> DMAMUX -> DMA 通道 4 的正确链路,也找不到在哪里可以找到这些信息。 从 S32K3xx_DMAMUX_map.xlsx 文件中我得到了以下内容: 我的第一个问题是:哪个源->请求是专用的 PTD6(EIRQ14)? RM手册中的表44与此有何关联? 以下是我目前正在编写的部分代码: 设置 PTD6 void Setup_PTD6_EIRQ14_for_DMA ( void ) { /* 1. 通过 MSCR 寄存器配置物理引脚 PTD6 */     // PTD6 对应于索引 MSCR[102](如您的屏幕截图所示)     IP_SIUL2 -> MSCR [ 102 ] = 0 ; // 清除寄存器     IP_SIUL2 -> MSCR [ 102 ] |= ( 1 << 19 ); // IBE = 1(输入缓冲使能 - 将引脚配置为输入)     IP_SIUL2 -> IMCR [ 542 - ( 512 )] = 3u ;     // 可选:如果信号是浮动的,您可以启用上拉(PUE=1,PUS=1)或下拉(PUE=1,PUS=0) /* 2. 激活 EIRQ[14] 线上的边缘检测 */     我们希望捕获每个上升沿的时间戳     IP_SIUL2 -> IREER0 |= ( 1 << 14 ); // IREER0[EIRE14] = 1 (启用上升沿)     IP_SIUL2 -> IFEER0 &= ~ ( 1 << 14 ); // IFEER0[EIRE14] = 0 (禁用下降沿) /* 3. 请求路由:从中断更改为 DMA */     // 此步骤确保边沿不会唤醒 CPU(NVIC),而是触发 DMA 线路。     IP_SIUL2 -> DIRSR0 |= ( 1 << 14 ); // DIRSR0[DIRS14] = 1 (选择 DMA 请求而不是中断) /* 4. 最终启用 EIRQ[14] 的 DMA 请求生成 */     IP_SIUL2 -> DIRER0 |= ( 1 << 14 ); // DIRER0[EIRE14] = 1 (激活 DMA 请求线) }   并建立DMA通道: void Setup_eDMA_Channel4_Capture_PIT1 ( void ) { /* 1. eDMA 通道 4 的 DMAMUX 初始化 */     // 将 EIRQ14(源 14)映射到 eDMA 通道 4     IP_DMAMUX_1 -> CHCFG [ 4 ] = DMAMUX_CHCFG_ENBL_MASK | DMAMUX_CHCFG_SOURCE ( 7u ); // EIRQ14 是 DMAMUX_1 的源 7     //IP_DMAMUX_0->CHCFG[4] = 0U; /* 2. 通道 4 的 TCD 配置指向 PIT_1(完全符合 S32K3 裸机语法) */     // 来源:PIT_1 定时器 0 的当前值     IP_TCD -> TCD4_SADDR = ( uint32_t ) & ( IP_PIT_1 -> TIMER [ 0 ]. CVAL );     IP_TCD -> TCD4_SOFF  = 0 ; // 源值不递增     IP_TCD -> TCD4_ATTR  = 0x0202 ; // 32 位源,32 位目标     // 次要循环:每次触发传输的字节数     // 在 S32K3 中,这对应于 NBYTES_MLOFFNO 寄存器(无次要循环链接)     IP_TCD -> NBYTES4 . TCD4_NBYTES_MLOFFNO = 4 ; // 每次触发信号传输 4 字节(32 位)     // 目标位置:内存中的数组     IP_TCD -> TCD4_DADDR = ( uint32_t ) dma_timestamps ;     IP_TCD -> TCD4_DOFF  = 4 ; // 每次边沿移动后,RAM 中的数据左移 4 个字节     // 循环缓冲区:填充完整个数组后循环回到数组开头     IP_TCD -> TCD4_DLAST_SGA = - ( BUFFER_SIZE * 4 );     // 主要循环计数器:循环中的总迭代次数     //IP_TCD->CITTER4.TCD4_CITER_ELINKNO = BUFFER_SIZE;     IP_TCD -> CITER4 . TCD4_CITER_ELINKNO = BUFFER_SIZE ;     IP_TCD -> BITER4 . TCD4_BITER_ELINKNO = BUFFER_SIZE ; /* 3. 通过官方宏激活硬件触发信号的 eDMA 通道 */     //IP_TCD->CH4_CSR |= DMA_TCD_CH4_CSR_ERQ_MASK; /* 3. 硬件触发信号的 eDMA 通道激活(启用异步模式) */     // 位 0 (ERQ) = 1 -> 启用硬件触发信号     // 位 2 (EARQ) = 1 -> 启用来自外部引脚的异步请求 (SIUL2 EIRQ)     IP_TCD -> CH4_CSR |= 3u ; // ERQ=1,EARQ=1 }   我想关键就在这里: IP_DMAMUX_1 -> CHCFG [ 4 ] = DMAMUX_CHCFG_ENBL_MASK | DMAMUX_CHCFG_SOURCE ( 7u ); // EIRQ14 是 DMAMUX_1 的源 7 我有点困惑,不知道应该使用哪个 IP_DMAMUX 和哪个 DMAMUX_CHCFG_SOURCE,也不知道哪里可以找到相关的正确信息。 此致 翁德雷   Re: S32K348-GPIO EIRQ to DMA request 你好@OndrejK “这是否意味着MCU有32个TCD通道,其中TCD 0到15对DMAMUX_0有效,TCD 15到31对DMAMUX_1有效? ” 是的,这些信息可以在数据手册中找到,我复制下来供您参考。 Re: S32K348-GPIO EIRQ to DMA request 你好 Senlent, 感谢您的解答。 请问您能否指出您所说的TCD映射的含义是从哪里产生的? 这是否意味着,MCU 有 32 个 TCD 通道,其中 TCD 0 到 15 对 DMAMUX_0 有效,而 TCD 15 到 31 对 DMAMUX_0 无效? 对于 DMAMUX_1? 所以,我对DMAMUX和eDMA的相关信息仍然有些困惑。 此致 翁德雷 Re: S32K348-GPIO EIRQ to DMA request 你好@OndrejK 你的理解是正确的: PTD6->EIRQ14->DMAMUX1.SOURCE 7. IP_DMAMUX_1->CHCFG[4] = DMAMUX_CHCFG_ENBL_MASK | DMAMUX_CHCFG_SOURCE(7u); // EIRQ14 is source 7 for DMAMUX_1 但是,TDC 设置不正确。 我的理解是,它们应该如下所示: IP_DMAMUX_1->CHCFG[0] ->TCD 16 IP_DMAMUX_1->CHCFG[4] -> TCD 20 而不是 TCD4 Re: S32K348-GPIO EIRQ to DMA request 嗨 SenLent, 我根据观察结果对代码进行了一些修改。 这是我最新的代码: 主初始化: Setup_PTD6_EIRQ14_for_DMA ();     setup_PIT1_Timer0_FreeRunning ();     Setup_DMAMUX_Channel0_ToTCD16_Capture_PIT1 ();      //清除 EIRQ14 中断标志      IP_SIUL2 -> DISR0 = ( 1 << 14 ); 以下是其余代码: void Setup_PTD6_EIRQ14_for_DMA ( void ) {     // 1. Aktivácia hodinového deliča pre filtre v SIUL2 (ak už nie je povolený inde)     IP_SIUL2 -> IFCPR = 0U ; // 功能时钟的 Nastavenie deličky filtra (bez dodatočného delenia) // 2. Voliteľne vypnite 过滤器预 daný EIRQ 索引 alebo ho nastavte na minimálny počet cyklov // Pre EIRQ14(v závislosti od mapovania registrov IFMCR):     IP_SIUL2 -> IFMCR [ 14 ] = 0U ; // 0U vypína digitalálny过滤器,hrana prechádza okamžite ako čistý Hardvérový触发器 /* 1. 通过 MSCR 寄存器配置物理引脚 PTD6 */     // PTD6 对应于索引 MSCR[102](如您的屏幕截图所示)     IP_SIUL2 -> MSCR [ 102 ] = 0 ; // 清除寄存器     IP_SIUL2 -> MSCR [ 102 ] |= ( 1 << 19 ); // IBE = 1(输入缓冲使能 - 将引脚配置为输入)     IP_SIUL2 -> IMCR [ 542 - ( 512 )] = 3u ;     // 可选:如果信号是浮动的,您可以启用上拉(PUE=1,PUS=1)或下拉(PUE=1,PUS=0) /* 2. 激活 EIRQ[14] 线上的边缘检测 */     我们希望捕获每个上升沿的时间戳     IP_SIUL2 -> IREER0 |= ( 1 << 14 ); // IREER0[EIRE14] = 1 (启用上升沿)     IP_SIUL2 -> IFEER0 &= ~ ( 1 << 14 ); // IFEER0[EIRE14] = 0 (禁用下降沿) /* 3. 请求路由:从中断更改为 DMA */     // 此步骤确保边沿不会唤醒 CPU(NVIC),而是触发 DMA 线路。     IP_SIUL2 -> DIRSR0 |= ( 1 << 14 ); // DIRSR0[DIRS14] = 1 (选择 DMA 请求而不是中断) /* 4. 最终启用 EIRQ[14] 的 DMA 请求生成 */     IP_SIUL2 -> DIRER0 |= ( 1 << 14 ); // DIRER0[EIRE14] = 1 (激活 DMA 请求线) }   void Setup_DMAMUX_Channel0_ToTCD16_Capture_PIT1 ( void ) { /* 1. eDMA 通道 4 的 DMAMUX 初始化 */    // Podľa NXP tabuľky prislúcha SIUL2 DMA 请求 4 zdrojový 索引 7u     //IP_DMAMUX_1->CHCFG[4] = DMAMUX_CHCFG_ENBL_MASK | DMAMUX_CHCFG_SOURCE(7u);     //按照文档操作,先禁用通道 4,然后配置它,最后启用它。     IP_DMAMUX_1 -> CHCFG [ 0 ] = 0u ; /* 2. 通道 4 的 TCD 配置指向 PIT_1(完全符合 S32K3 裸机语法) */     // 来源:PIT_1 定时器 0 的当前值     IP_TCD -> TCD16_SADDR = ( uint32_t ) & ( IP_PIT_1 -> TIMER [ 0 ]. CVAL );     IP_TCD -> TCD16_SOFF  = 0 ; // 源值不递增     IP_TCD -> TCD16_ATTR  = 0x0202 ; // 32 位源,32 位目标     // 次要循环:每次触发传输的字节数     // 在 S32K3 中,这对应于 NBYTES_MLOFFNO 寄存器(无次要循环链接)     IP_TCD -> NBYTES16 . TCD16_NBYTES_MLOFFNO = 4 ; // 每次触发传输 4 字节(32 位)     // 目标位置:内存中的数组     IP_TCD -> TCD16_DADDR = ( uint32_t ) dma_timestamps ;     IP_TCD -> TCD16_DOFF  = 4 ; // 每次边沿移动后,RAM 中的数据左移 4 个字节     // 循环缓冲区:填充完整个数组后循环回到数组开头     IP_TCD -> TCD16_DLAST_SGA = - ( BUFFER_SIZE * 4 );     // 主要循环计数器:循环中的总迭代次数     //IP_TCD->CITTER20.TCD20_CITER_ELINKNO = BUFFER_SIZE;     IP_TCD -> CITER16 . TCD16_CITER_ELINKNO = BUFFER_SIZE ;     IP_TCD -> BITER16 . TCD16_BITER_ELINKNO = BUFFER_SIZE ;     //IP_TCD->CH16_CSR |= 3u; // ERQ=1,EARQ=1     //启用DMAMUX通道0     IP_DMAMUX_1 -> CHCFG [ 0 ] = DMAMUX_CHCFG_ENBL_MASK | DMAMUX_CHCFG_SOURCE ( 6u ); __asm volatile ( "nop" ); __asm volatile ( "nop" );     IP_TCD -> CH16_CSR |= 3u ; }   我仍然无法通过 EIRQ(14) 启动 DMA 传输,即使出现此断言。在调试器中,当我改变MCU PTD6引脚上的信号时,可以看到标志出现。 接下来,我可以通过 TCD16_CSR START 位手动启动 DMA 传输,TCD 通道上的 CITTER 值会减小,并且 PIT1_TIMER[0] 中的值会被存储到我的 dma_timestamps 数组中。 顺便说一下:这应该在“普通”SRAM部分定义。我之前将其设置为数据缓存段,导致出现 DMA“目标总线错误”。 新定义: __attribute__ ((对齐( 32 ))) __attribute__ ((部分( ".mcal_data" ))) uint32_t dma_timestamps [ BUFFER_SIZE ];   但是,如果我跳过手动 START(从代码开始就不需要设置),并且我更改 PTD6 引脚上的信号,DMA 通道不会执行任何操作,CITTER 寄存器保持在初始化值。 请问您能帮我找出问题所在吗? 我仍然认为 PTD6-EIRQ(14) 钳位标志与 TCD16 通道之间的连接存在问题。 可能是DMAMUX通道的正确来源? 对于 DMAMUX1-CH[0],我测试了所有信号源(1 到 😎 我尝试了DMAMUX Excel表格中列出的SUIL2实例,但没有成功,而且我也不确定我的步骤是否正确。     Re: S32K348-GPIO EIRQ to DMA request 你好@OndrejK 我创建了一个演示供您参考,使用 PTD6 触发 DMA 进行单次数据传输。 它基于 S32K344 + RTD 7.0.1。 我已经测试过了; 我可以向你保证,我的理解是正确的。 对于 PTD6,来源应为 7。  IP_DMAMUX_1 -> CHCFG [ 0 ] = DMAMUX_CHCFG_ENBL_MASK | DMAMUX_CHCFG_SOURCE ( 7u ); Re: S32K348-GPIO EIRQ to DMA request 你好 Senlent, 非常感谢你提供的例子。 经过一些修改,我现在有了可以运行的示例。我附上了修改后的项目文件,其中存在一个重要问题: 在整个 DMA TCD 通道完全配置之前,已设置了启用 DMA 请求的 SIUL ICU。在这种情况下,TCD_SADDR 和 TCD_DADDR 为空(值为零),之后在 SUIL 中启用 DMA 请求导致 DMA 错误 - “源总线错误”,这让我明白了。 更改初始化顺序后。例如,它开始对我有用。 但我仍然不太理解DMAMUX通道和TCD通道之间的确切关系。 您写道,DMAMUX 应该配置为 CHCGF[0]。 在我们的 S32k344 定制开发板上下载并启动应用程序后,我发现 DMAMUX-CHCFG[3] 已配置,并且确切地说,在函数Dma_Mux_Ip_Init_Privileged 的代码行中,有一行代码导致了此配置: RegisterIndex = DMA_MUX_IP_GATE_OFFSET((pConfig->pChannelConfigArr[ChannelCount].Channel)); 这是 lauterbach Trace32 调试器的屏幕截图,您可以在其中看到所有初始化步骤之后的最终设置: 在将 RTD 更新到 7.0.1 版本后,我在 Design Studio 中配置如下: 这样理解是否正确?这里可以选择 3 个 DMA 复用源,这意味着什么? Re: S32K348-GPIO EIRQ to DMA request 你好@OndrejK 听到这个消息真好。 对于刚入门的开发人员来说,这个配置工具可能会让他们感到困惑。 对于 S32K348,没有 DMAMUX_3;只有 DMAMUX_0 和 DMAMUX_1。 •对于 S32K310、S32K311 和 S32K312:DMAMUX_0 通道 0–5 和 DMAMUX_1 通道 0–5 分别映射到 eDMA 传输控制描述符 (TCD) 0–5 和 eDMA 传输控制描述符 (TCD) 6–11。因此,不应编程 DMAMUX_0 通道 6-15 和 DMAMUX_1 通道 6-15;但是,如果进行了编程,任何访问都将导致通道 8-15 出现错误响应,或者通道 6-7 没有错误响应。 •对于其余的 S32K3xx 设备:DMAMUX_0 通道 0–15 和 DMAMUX_1 通道 0–15 分别映射到 eDMA 传输控制描述符 (TCD) 0–15 和 eDMA 传输控制描述符 (TCD) 16–31。 以上内容摘自数据手册,很容易理解: “ DMA硬件通道”对应于TCD编号。 当您选择 DMA_CHANNEL_0 到 DMA_CHANNEL_15 时,默认使用 DMAMUX_0; 当您选择 16–31 时,默认使用 DMAMUX_1。 例如,在本主题中,PTD6 对应于 DMAMUX_1 的源 7,因此“DMA 硬件通道”可以设置为 DMA_CHANNEL_16 到 DMA_CHANNEL_31 之间的任何值。 我们再举一个例子:如果您选择 EIRQ 7 来触发 DMA,则“DMA 硬件通道”可以设置为 DMA_CHANNEL_0 到 DMA_CHANNEL_15 之间的任何值。 Re: S32K348-GPIO EIRQ to DMA request 嗨 SenLent, 关于选择DMA通道,我的想法是可以从相关的DMA_MUX组中自由选择一个。 同时,我测试了其他 DMA_MUX<-> 和 TCD 的组合,在我这边只有下一个组合可以正常工作。 IP_DMAMUX_1->CHCFG[3] 和 TCD16。 接下来我尝试了其他方法: IP_DMAMUX_1->CHCFG[4] 和 TCD17。 IP_DMAMUX_1->CHCFG[0] 和 TCD16。 请问为什么只有 IP_DMAMUX_1->CHCFG[3] 和 TCD16?在职的 ? IP_DMAMUX_1->CHCFG[xx] 与 TCDyy 之间是什么关系? Re: S32K348-GPIO EIRQ to DMA request 你好@OndrejK 正确的顺序是: IP_DMAMUX_0>CHCFG[0] 和 TCD0。 IP_DMAMUX_0->CHCFG[1] 和 TCD1。 IP_DMAMUX_0->CHCFG[2] 和 TCD2。 IP_DMAMUX_0->CHCFG[3] 和 TCD3。 IP_DMAMUX_0->CHCFG[4] 和 TCD4。 IP_DMAMUX_0->CHCFG[5] 和 TCD5。 IP_DMAMUX_0->CHCFG[6] 和 TCD6。 IP_DMAMUX_0->CHCFG[7] 和 TCD7。 IP_DMAMUX_0->CHCFG[8] 和 TCD8。 IP_DMAMUX_0->CHCFG[9] 和 TCD9。 IP_DMAMUX_0->CHCFG[10] 和 TCD10。 IP_DMAMUX_0->CHCFG[11] 和 TCD11。 IP_DMAMUX_0->CHCFG[12] 和 TCD12。 IP_DMAMUX_0->CHCFG[13] 和 TCD13。 IP_DMAMUX_0->CHCFG[14] 和 TCD14。 IP_DMAMUX_0->CHCFG[15] 和 TCD15。 IP_DMAMUX_1->CHCFG[0] 和 TCD16。 IP_DMAMUX_1->CHCFG[1] 和 TCD17。 IP_DMAMUX_1->CHCFG[2] 和 TCD18。 IP_DMAMUX_1->CHCFG[3] 和 TCD19。 IP_DMAMUX_1->CHCFG[4] 和 TCD20。 IP_DMAMUX_1->CHCFG[5] 和 TCD21。 IP_DMAMUX_1->CHCFG[6] 和 TCD22。 IP_DMAMUX_1->CHCFG[7] 和 TCD23。 IP_DMAMUX_1->CHCFG[8] 和 TCD24。 IP_DMAMUX_1->CHCFG[9] 和 TCD25。 IP_DMAMUX_1->CHCFG[10] 和 TCD26。 IP_DMAMUX_1->CHCFG[11] 和 TCD27。 IP_DMAMUX_1->CHCFG[12] 和 TCD28。 IP_DMAMUX_1->CHCFG[13] 和 TCD29。 IP_DMAMUX_1->CHCFG[14] 和 TCD30。 IP_DMAMUX_1->CHCFG[15] 和 TCD31。 Re: S32K348-GPIO EIRQ to DMA request 嗨 SenLent, 我在最新的 S32 DS 项目上进行了测试,并添加了更多 DMA_MUX 配置。 这是我的设置截图: 以下是将版本代码下载到我们的板后的结果: 如您所见,您所描述的 DMA_MUX 和 TCD 的分配顺序并未得到遵循。 RTD软件也存在同样的bug吗? Re: S32K348-GPIO EIRQ to DMA request 这是我的项目,我只是调整了我之前附上的最新版本。 我在 DMA_MUX_0 上创建了 2 个通道,分别命名为 DMA_Channel_0 和 DMA_Channel_1。 对于这些通道,分配了 DMA_MUX_0->CHCFG[3] 和 DMA-MUX_0-CHCFG[2]。 DMA_MUX_1 上也出现了同样的“混合”顺序。 Re: S32K348-GPIO EIRQ to DMA request 你好@OndrejK 这是您提供的演示版本;我没有做任何修改。 这是我的检测结果。 Re: S32K348-GPIO EIRQ to DMA request 你好@OndrejK 我看不出问题出在哪里。您能否解释得更清楚一些,或者提供完整的测试项目,以便我能告诉您您的疑问出在哪里? Re: S32K348-GPIO EIRQ to DMA request 你好@OndrejK 很明显,这可能与您使用的调试器或调试器的版本有关。 Re: S32K348-GPIO EIRQ to DMA request 你好 Senlent, 同时,我与另一位同事一起测试了同一个项目,他使用的是 S32DS 3.6.3 版本。Ozone调试器及其结果与你的相同。 看来你是对的。但我完全不清楚我这边发生了什么? 😞 Re: S32K348-GPIO EIRQ to DMA request 嗨 SenLent, 我终于找到问题所在了。 问题在于 Ozone 和 Lauterbach 只是提出了不同的 DMA_MUX->CHCFG 方法,最终的技巧是这些 CHCFG 寄存器在 MCU 端按以下顺序映射(DMA_MUX_1 的基地址为 0x40284000): 0x40284000 ->CHCFG[3] 0x40284001 ->CHCFG[2] 0x40284002 ->CHCFG[1] 0x40284003 ->CHCFG[0] 0x40284004 ->CHCFG[7] 0x40284005 ->CHCFG[6] 0x40284006 ->CHCFG[5] 0x40284007 ->CHCFG[4] 0x40284008 ->CHCFG[11] …… 请看我下面的截图 从现在开始,我的结果让我有所感知,也与你的建议相符。 🙂 感谢您的支持 我想这个问题应该可以解决。 Re: S32K348-GPIO EIRQ to DMA request 你好@OndrejK 好的,请点击“接受为解决方案”关闭此主题。
記事全体を表示
i.MX8QMマルチディスプレイセットアップでのAAOS 15ユーザースイッチクラッシュ こんにちは、チームの皆さん、 私たちは Android オートモーティブ OS 15(AAOS 15) を i.MX8QuadMax ボード 上で マルチ ディスプレイ 構成( メイン ディスプレイ + 乗客 ディスプレイ)で動かしています。 ユーザー 切り替え 時に デフォルトの Car Launcher に 問題 が発生しています: システムは 正常に 起動し 、 ランチャー は メインディスプレイ と 助手席側 ディスプレイの 両方 に 表示され ます 。 現在の ユーザー から 新規ユーザー や ゲスト ユーザーに 切り替え ると 、 メイン ディスプレイ と 乗客 用ディスプレイ の両方 が クラッシュ し、 使用不能 になります 。 The issue is consistently reproducible after ユーザー switching. 私たちは 以下のこと を 知り たい のです 。 i.MX8QM マルチ ディスプレイ システム での AAOS 15 での ユーザー スイッチ ングに関する 既知 の問題 はありますか? Are there any additional configurations required for passenger display handling during user スイッチ? この 問題 を さらに 分析する ために、 どのような ログ や デバッグ 情報 を 収集 す べきでしょうか ? 何かご提案やアドバイスがあれば、ぜひお聞かせください。 ありがとうございます。 Re: AAOS 15 User Switch Crash on i.MX8QM Multi-Display Setup こんにちは、 @AldoG さん。 ご説明ありがとうございます。   弊社で は、 NXP BSPを搭載したNXP i.MX8QM MEK ボード を 使用 し ています 。この 問題 は Android オートモーティブに関連しているため、 AAOS関連 の適切な サポート チャネル や フォーラム を 教え ていただければ 幸いです 質問はありますか? ありがとうございます。 Re: AAOS 15 User Switch Crash on i.MX8QM Multi-Display Setup こんにちは、 NXP MEKボードを使用していますか? もしそうなら、NXP BSPを使っていますか? なお、当サイトはAndroid オートモーティブをサポートしていませんが、BSPリリースで問題が発生した場合は支援が可能です。 よろしくお願いいたします。 アルド。 Re: AAOS 15 User Switch Crash on i.MX8QM Multi-Display Setup こんにちは、 @AldoG さん。 ご 回答 ありがとうござい ます 。完全 な ログキャット、 再現 手順、 および マルチディスプレイを実現するために行った変更点 を添付し まし た 。 再現手順: センター ディスプレイ と 助手席 ディスプレイ を有効にした 状態で、 i.MX8QM 上で AAOS 15 を起動します 。 Open ユーザー Settings on the passenger display. 乗客ディスプレイで 新しいユーザー/ゲストユーザーにスイッチすることもできます。 ユーザー 切り替え 時、 com.android.car.carlauncher は 以下の動作で クラッシュします:   android.view.WindowManager$InvalidDisplayException: ウィンドウを追加できない場合――指定された表示が見つからない ログを見る限り、CarLauncher はユーザー切り替え 後に 使 えな くなった ディスプレイや 無効 な 表示 マッピングで再開しようとしているようです 。 CAN you please advise: これは i.MX8QM の AAOS 15 マルチ ユーザー/マルチディスプレイ シナリオ で 既知 の問題 な のでしょうか? ユーザー 切り替え 時に ディスプレイ を 割り当て る のは どの コンポーネント(OccupantZone、 CarUserService、 TaskDisplayArea、 または WindowManager)ですか? 二次 ディスプレイ での ランチャー 起動 に関する MUMD(マルチユーザー マルチディスプレイ) サポート に関する 既知 の 要件 や パッチ はありますか? Is there any recommended debug information we should collect to identify why the display becomes invalid after the user スイッチ?
記事全体を表示
Regarding the RTC_XTALI signal processing of MIMX9121CVVXCAA Hello, I am considering using the i.MX91 SOC MIMX9121CVVXCAA. Question: The clock for the RTC uses the clock from the oscillator circuit inside the SOC, eliminating the need for an external oscillator. I'm planning to leave the RTC_XTALI and RTC_XTALO pins unconnected. Should I pull down the RTC_XTALI pin on the board? I look forward to your reply. Re: MIMX9121CVVXCAAのRTC_XTALI信号処理について Recommendation If RTC functionality is required, follow the recommendation in UG10147 and use an external 32.768 kHz crystal (with the appropriate load capacitors), or alternatively provide an external clock to RTC_XTALI with a frequency below 50 kHz and an amplitude not exceeding NVCC_BBSM_1P8. If the RTC is not used, simply leave RTC_XTALI and RTC_XTALO unconnected (NC). Do not add a pull-down resistor. In addition, ensure that the insulation resistance from these traces to power and ground remains greater than 100 MΩ to avoid leakage caused by flux residue, moisture, or coupling to adjacent traces. The i.MX 91 does not have an independently operating internal 32.768 kHz oscillator. Therefore, if RTC functionality is not required, RTC_XTALI and RTC_XTALO should be left NC, and a pull-down resistor should not be added. This is because the datasheet specifies that the leakage path from these pins to power or ground should be greater than 100 MΩ. 推奨事項 RTC機能が必要な場合は、UG10147 の推奨に従い、32.768 kHz水晶発振子(負荷容量を含む)を接続するか、RTC_XTALI に周波数50 kHz未満、振幅が NVCC_BBSM_1P8 を超えない外部クロックを入力してください。 RTC機能を使用しない場合は、RTC_XTALI と RTC_XTALO の両方を NC(未接続) のままとしてください。プルダウン抵抗は追加しないでください。 また、フラックス残渣、湿気、または隣接配線によるリーク電流を防ぐため、これらの配線と電源/GND間の絶縁抵抗が 100 MΩ以上 となるようにしてください。 i.MX 91 には、単独で動作する内蔵32.768 kHz発振器はありません。 したがって、RTC機能を使用しない場合は、RTC_XTALI および RTC_XTALO を NC(未接続) のままとし、プルダウン抵抗を追加しないでください。データシートでは、これらのピンから電源またはGNDへのリーク経路は 100 MΩ以上 であることが要求されています。
記事全体を表示
S32Kコンパレータの許容差/オフセット S32K116の比較器でテストを行っています。 入力電圧(238mV)をINN(またはINP)に印加し、バンドギャップを基準にしてからVOSELを0から255に上げ、コンパレータ出力の変化を監視します。 入力電圧とバンドギャップの接続を入れ替えると、MCU2で異なる許容誤差/オフセットが見られるという現象が見られます。(詳細はテスト1およびテスト2を参照) 1) これはVAIOのような既知の機能なのでしょうか、それとも他の何かですか? 2) この許容差/オフセットについて安定していますか?また、校正でこれを除去できますか? (例えば、目標電圧におけるトリガーVOSELを記録するなど) テスト1:入力電圧V-、バンドギャップV+ 、低速モード テスト2:入力電圧V+、バンドギャップV- 、低速モード Re: S32K comparator tolerance/offset 1) 入力ピン CMP0_INは常にチャンネル0に設定されています。(ピン26、PTA0) はい、入力電圧は同じCMP0_INピン26、PTA0を通じて入力されています。 2) バンドギャップ 私が知りたいのは、2つのMCUの違いではありません。INNとINPを入れ替えたときの同じMCUからの許容差やオフセットの違いが原因です。この交換操作の間、バンドギャップは変化しないはずだと私は考えています。(ここでのMCU1のデータはあくまで参考資料として利用しています) 3)VDD/VDDA: 2つのMCUは同じ+3.3Vネットワーク(LDO許容範囲内)を使っています。 MCUのバンドギャップに違いがあることは十分理解していますが、やはり交換時の違いを確認しています。 4) 試験方法 上記のテストデータは入力電圧を上げているのではなく、固定入力電圧を使い、VOSELを上昇させています。(VOSELを減らす方法はまだテストしていませんが、後で確認します。) 固定VOSELで入力電圧を上下に調整する場合、同様の-9mVがあります。 5) ヒステリシス 低速モードでのヒステリシスに関するテストデータはあります。 ここでのテストデータは、入力電圧を固定し、VOSELを増加させるものです。 6) MCUの写真 添付の写真「MCU1.PNG」と「MCU2.PNG」を参照してください。 はんだマスクは FS32K11-6LFMFM-ON96V-S12YM16 Re: S32K comparator tolerance/offset こんにちは、Sid_Zhouさん。 入力電圧はどのCMP0_INピンに接続していますか? INNとINPを入れ替えた場合、入力電圧は依然として同じCMP0_INピンを通して入力されますか? また、バンドギャップ電圧の範囲は0.97~1.03Vです。2つのMCUのバンドギャップ電圧の違いによって引き起こされる問題を、一時的に除外することを検討しましたか?例えば、より正確な外部電圧基準を入力するために別のCMP0_INピンを使うことはできますか? 2つのS32K1のVDD/VDDA電圧が同じかどうか確認しましたか? デバッグ中にOFFSET=1およびHYSTCTR=0であることが確認されていましたか? 入力電圧を上げてVOSELを記録したことに気づきました。入力電圧を下げてVOSELを記録するテストは行いましたか?また、 アナログ比較器のヒステリシス が影響を受けているかも確認してください。ただし、HYSTCTR=0に設定されているようですね。 S32K116写真を2枚撮って、MCUのマスクについて教えてくれ。 よろしくお願いいたします ロビン Re: S32K comparator tolerance/offset 詳しいご説明をありがとうございました。S32K1のデータシートにある VAIO (アナログ入力オフセット電圧)パラメータについてご懸念されていることが理解できました。 内部では、AEチームの説明を見ました: AIOオフセットはコンパレータ自体のオフセットです。INPとINNのオフセットです。 INL誤差はDNLに関する積分であるため、DNL誤差を含みます。 エラーは |V_AIO| + |INL| となります。 私の理解では、外部信号源から直接2つのアナログ電圧を入力 INP と INN にそれぞれ使い、 VAIO をテストする方がバンドギャップ電圧分圧器を使うよりも直感的だと思います。 ご質問についてですが、同じMCUの場合、VAIOは瞬間ごとにランダムに変わる値ではありませんが、動作条件、特に温度によって変動することもあります。データシートのVAIO値は、全温度範囲にわたる保証/最悪ケースの限界として理解すべきです。 しきい値を設計する際には、VAIOを無視できる値、または固定された校正済み値として扱わないでください。マージンは最悪の温度|VAIO|、さらにDAC/INLエラーも加わります。 また、以前の S32K116 コンパレータ許容についての議論も確認しました。 CMPの精度は、お客様のニーズを満たしていないようです。S32K1XXRM Rev14.2の「 44.5.5 自動比較機能 」の項で説明されている機能について検討されましたか? S32K1データシート Rev15の「 表41. 12ビットADC特性(2.7V~3V) 」には、最大 TUE が±8LSBと記載されています。これはCMPよりも正確であるように思われる。 Re: S32K comparator tolerance/offset 詳しい説明をありがとうございました。 ADCの方が私たちのアプリケーションでは精度が高いかもしれないと指摘しました。 しかし、なぜか高レベルアーキテクチャからCMPをセーフティモニターとして使う要件があり、これをADCに変更できるかはわかりません。
記事全体を表示
S32 Design Studio for ARM v2.2のライセンスは期限切れです こんにちは、私のARM v2.2用のS32 Design Studio ライセンスが期限切れになりました。延長してもらえますか? 有効期限:2026年6月29日 製品:ARM v2.2用S32 Design Studio ライセンス:27ED-C7E9-C2B4-9D3E Re: license of S32 Design Studio for ARM v2.2 has expired こんにちは、 お客様のS32DSライセンスが延長されました。
記事全体を表示