Multi Source Translation Content

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

Multi Source Translation Content

讨论

排序依据:
gpio-hogデモの使用方法 i.MX 8ファミリ | i.MX 8QuadMax (8QM) | 8QuadPlus i.MX 8M | i.MX 8M Mini | i.MX 8M Nano i.MX6 全て i.MX6SL i.MX7Dual i.MX7Solo i.MX7ULP Linux SCM-i.MX6DQ
查看全文
IPv6+AES.docx <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> これは、QorIQ T1040RDB and T2080RDB SDK1.7 IPv6 +AESテスト・ガイドです。 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> これは、QorIQ T1040RDB and T2080RDB SDK1.7 IPv6 +AESテスト・ガイドです。
查看全文
bossac_windows.zip <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 适用于 UDOO 的 Arduino IDE 补丁 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 适用于 UDOO 的 Arduino IDE 补丁 研讨会文件
查看全文
Freescale's commonly used offline programming tools <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 1. CycloneMAX, Support Kinetis, ColdFire V2/V3/V4, Power MPC5xx/8xx, Qorivva MPC5xxx, DSC, MAC7xxx PE Micro, http://www.pemicro.com/ 2. Flasher ARM Supports the full range of ARM cores, including the traditional ARM7, ARM9 and ARM11, as well as the new Cortex-A, Cortex-M and Cortex-R series, and can power the target board.    Segger, SEGGER - The Embedded Experts - Flasher ARM 3. Flasher Portable Supports the full range of ARM cores, including the traditional ARM7, ARM9 and ARM11, as well as the new Cortex-A, Cortex-M and Cortex-R series, battery-powered, portable programmer.    Segger, SEGGER - The Embedded Experts-Flaser Portable 4. SmartPRO Supports Kinetis, S12, S12X, ColdFireV2. Zhou Ligong, http://www.zlgmcu.com/ 5. MCP-104    支持飞思卡尔ARM based Microcontroller Kinetis.    祥佑科技(Micetek), http://www.micetek.com 6.Xeltek programmer, http://www.xeltek.com 7. Hilo programmer, http://www.hilosystems.com.tw Kinetis Hardware Support
查看全文
新しいWebライセンスシステム - 2014年12月8日 & Freescaleアカウントの問題。 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 月曜日からWebライセンスシステムを変更しました。 フリースケール・アカウントでログインし、「ソフトウェア・ライセンスとサポート」をクリック     すべての登録を一覧表示するには:   詳細については、FAQ を参照してください。   問題: 登録に関連付けられたフリースケール・アカウントのみが、新しいWebライセンスにインポートされています。 フリースケール・アカウントが登録 (スイート) にリンクされていなかった場合、フリースケール・アカウントは新しいWebライセンス・システムで作成されていません。 この場合、[ ソフトウェア ライセンスとサポート ] をクリックすると、次の情報が表示されます。   これは、新しいフリースケール・アカウントを作成する場合にも当てはまります。   WebライセンスシステムでFreescaleアカウントをインポートするにはどうすればよいですか? 登録を購入した場合は、このダイアログから登録できます。 それ以外の場合は、Freescaleアカウントから開発ツールの評価版をダウンロードするだけです。 私のテストでは、HC12 v5.1のEvalをダウンロードしました。   結果 ソフトウェアライセンスとサポートをクリックすると、次の情報が表示されます。   これで、アカウントが新しいWebライセンスにインポートされました。 全般
查看全文
[I.MX93] eMMC 设计:上拉和下拉电阻 尊敬的恩智浦社区: 我目前正在为 I.MX93 进行 eMMC PCBA 设计,并注意到 NXP EVK 设计与我们最初的设计之间存在一些差异。我想就此事寻求澄清。 根据我查看的 eMMC 设计指南,CMD 和 DAT0-DAT7 通常需要上拉电阻,而 DS 需要下拉电阻。 但是,在SPF-94611_B1.pdf中引用您的设计后,我注意到这些额外的外部电阻器并不存在于 eMMC 电路中。 您能否确认这些外部电阻的缺失是否是因为 I.MX93 内部存在 DAT0-DAT7 和 CMD 的内部上拉或下拉电阻? 如果这种理解是正确的,您能否建议在软件中适当配置内部上拉或下拉设置是否足以满足设计要求? 谢谢您的支持,期待您的指导! 此致, 霍华德 回复:[I.MX93] eMMC 设计:上拉和下拉电阻 你好@Chou ! 感谢您联系 NXP 支持! 在 iMX93-EVK 板中,我们在这些引脚中配置内部上拉电阻。但我建议放置外部上拉电阻来保证逻辑状态。 这是一个参考示意图 上拉电阻在u-boot 设备树中配置,并维护Linux 设备树上的配置 此致! Chavira
查看全文
How do S32G-VNP-RDB3 A and M7 cores work together Dear NXP, We refer to the PDF document of S32G-VNP-RDB3 Software Enablement Guide to complete the verification of M7 LED routines and enable Linux BSP35.0 on the Cortex-A53 core. There is a question at present, that is, how can the A core and the M7 core run at the same time? Is the communication method between the A core and the M7 core shared memory or other methods? Does NXP have any relevant guidance documents for the above issues? Thank you! Re: How do S32G-VNP-RDB3 A and M7 cores work together Hi @chenyin_h , I see, the problem is solved, thank you very much! Re: How do S32G-VNP-RDB3 A and M7 cores work together Hello, thanks for your reply The zip and exe files you mentioned are the names of the corresponding software packages. As I replied to your other post, you can find the corresponding software in your account, and then click to enter the next page to locate the version you mentioned. BR Chenyin Re: How do S32G-VNP-RDB3 A and M7 cores work together Hi @chenyin_h  Where can I download the zip file and exe file described in this document? The files are as follows: •SW32G_RTD_4.4_3.0.2_HF01_DS_updatesite_D2204.zip • SW32G_IPCF_4.6.0_D2205_updatesite.zip • SW32_FreeRTOS_10_4_6_UOS_3_0_2_DS_updatesite_D2204.zip • S32G_SDHC_RTM_1_0_1_HF1_D2207_updatesite.zip • SW32G_RTD_4.4_3.0.2_HF01_D2204.exe • Platform_Software_Integration_S32G2_2022_06.exe I searched for a long time on the NXP official website but couldn't find it. Re: How do S32G-VNP-RDB3 A and M7 cores work together Hello For the patch file associated with AN13750, you can refer to the following figure to download: It is recommended that you read the contents of AN13750 carefully to reproduce and compile. It is recommended to use the BSP version consistent with the document for experiment. If you are familiar with it, you can also use other BSP versions, but you may encounter problems not mentioned in the document. BR Chenyin Re: How do S32G-VNP-RDB3 A and M7 cores work together Hi @chenyin_h , Thanks for the guide! I found AN13750.pdf Documentation, and find the corresponding source code in GitHub . I just use bsp35.0, bootloader I am planning to try to generate it with Yocto. Where can I get some of the patches described in the document? I also couldn't find the patches on the NXP official website, or bsp35.0 Does the version require these patches? Thanks! Re: How do S32G-VNP-RDB3 A and M7 cores work together Hello, thank you for your valuable question We provide a Bootloader example that can boot the M&A cores simultaneously, and they can communicate through shared memory. Regarding your question, we recommend that you download and read the document AN13750 from the Documents column on the product interface for detailed information. The content in the document may be able to directly answer your question. Hope this helps. BR Chenyin
查看全文
如何在没有 Yocto 的情况下构建 U-Boot、内核和 Linux 应用程序 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />  本文参考了《i.MX Linux® 用户指南》(修订版 L4.1.15_2.1.0-ga,2017 年 5 月) 作为示例(可在附件中找到),请参阅第 4.5.12 节(如何构建: U-Boot 和 Kernel 在独立环境中)。 首先,生成一个开发 SDK,其中包括用于编译的工具、工具链和小型 rootfs。 放置到主机上。   • 使用以下命令从 Yocto Project 构建环境生成 SDK。如要设置 Yocto Project 构建 环境,请按照 i.MX Yocto Project 用户指南(IMXLXYOCTOUG)中的步骤进行操作。在以下命令中, 将 设置为您正在构建的机器。   可能是以下之一:   • imx6qpsabreauto • imx6qpsabresd • imx6ulevk • imx6ull14x14evk • imx6ull9x9evk • imx6dlsabreauto • imx6dlsabresd • imx6qsabreauto • imx6qsabresd • imx6slevk • imx6sllevk • imx6solosabreauto • imx6solosabresd • imx6sxsabresd • imx6sxsabreauto • imx7dsabresd “populate_sdk”会生成一个脚本文件,用于在没有 Yocto Project 的情况下设置环境。此 SDK 应在每次发布时更新 从当前版本中获取最新的头文件、工具链和工具。   $ DISTRO=fsl-imx-fb MACHINE= source fsl-setup-release.sh -b build-fb   $ DISTRO=fsl-imx-fb MACHINE= bitbake core-image-minimal -c populate_sdk   或   $ bitbake meta-toolchain     从运行 bitbake 的构建目录中,将 tmp/deploy/sdk 目录下的 sh 文件复制到用于构建的主机上,并执行该脚本安装 SDK。 默认安装位置为 /opt,但也可以放置在主机上的任意位置。     注意:每次在新的 shell 会话中使用 SDK 前,都需要运行 source 命令加载环境设置脚本,例如:   $。/opt/fsl-imx-fb/4.1.15-2.0.0/environment-setup-cortexa9hf-neon-poky-linux-gnueabi   或   $ source /opt/fsl-imx-fb/4.1.15-2.0.0/environment-setup-cortexa9hf-neon-poky-linux-gnueabi   来自 Yocto Project Mega-Manual 注 默认情况下,此工具链不会构建静态二进制文件。如果您希望使用该工具链构建此类库,请确保您的镜像已包含相应的静态开发库。使用 IMAGE_INSTALL 变量在您的 local.conf 文件中安装相应的库包。以下是使用 glibc 静态开发库的示例: IMAGE_INSTALL_append = “glibc-staticdev”   在主机上,以下是构建 U-Boot 和内核的步骤: • 在主机上,构建之前请使用以下命令设置环境。   $ export CROSS_COMPILE=/opt/fsl-imx-fb/4.1.15/environment-setup-cortexa9hf-vfp-neon-pokylinux-gnueabi   $ export ARCH=arm • 如要构建 U-Boot,请查找目标启动的配置。在以下示例中,i.MX 6ULL 是目标。   通过克隆下载源代码   $ git clone http://git.freescale.com/git/cgit.cgi/imx/uboot-imx.git -b imx_v2016.03_4.1.15_2.0.0_ga   $ cd uboot-imx $ make clean $ make mx6ull_14x14_evk_defconfig $ make u-boot.imx   • 如要构建内核,请执行以下命令:   通过克隆下载源代码   $ git clone http://git.freescale.com/git/cgit.cgi/imx/linux-imx.git -b imx_4.1.15_2.0.0_ga   $ cd linux-imx $ make defconfig $ make   • 将应用程序 (Hello World) 构建为 test.c:   $ source /opt/fsl-imx-fb/4.1.15-2.0.0/environment-setup-cortexa9hf-neon-poky-linux-gnueabi $ cd ~/test/ $ arm-poky-linux-gnueabi-gcc --sysroot=/opt/fsl-imx-fb/4.1.15-2.0.0/sysroots/cortexa9hf-neon-poky-linux-gnueabi -mfloat-abi=hard test.c 检查编译后的代码 (a.out) 是否为 ARM 可执行文件   $ file ./a.out   ./a.out: ELF 32 位 LSB 可执行文件,ARM 架构,EABI5 版本 1(SYSV),动态链接,解释器 /lib/ld-linux-armhf.so.3,适用于 GNU/Linux 2.6.32。BuildID[sha1]=0e5c22dcf021748ead2c0bd51a4553cb7d38f6f2,未剥离   将文件 a.out 复制到目标 Linux 文件系统,并在运行之前再次检查:   root@imx6ul7d:/unit_tests/1# file a.out   a.out: ELF 32位LSB可执行文件,ARM,EABI5版本1(SYSV),动态链接,解释器/lib/ld-linux-armhf.so.3,适用于GNU/Linux 2.6.32,BuildID[sha1]=0e5c22dcf021748ead2c0bd51a4553cb7d38f6f2,未剥离   要确定运行我们的应用程序所需的 Linux 库:   root@imx6ul7d:/unit_tests/1# ldd a.out     linux-vdso.so.1 (0x7ee93000)   libc.so.6 => /lib/libc.so.6 (0x76e64000) /lib/ld-linux-armhf.so.3 (0x76f9d000)   如果某些库文件未位于文件系统中,您可能会看到以下信息:   -sh: root@imx6ul7d:/unit_tests/1#./a.out: 没有这样的文件或目录   最后,运行 a.out:   root@imx6ul7d:/unit_tests/1# ./a.out 你好,世界 root@imx6ul7d:/unit_tests/1# i.MX6_全部 i.MX7 双核 i.MX7 单核 Linux Yocto Project 回复:如何在没有 Yocto 的情况下构建 U-Boot、内核和 Linux 应用程序 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> Hello,   注意: 每次您想在新的 shell 会话中使用 SDK 时,都需要 source 环境设置脚本,例如   $。/opt/fsl-imx-fb/4.1.15-2.0.0/environment-setup-cortexa9hf-neon-poky-linux-gnueabi   或   $ source /opt/fsl-imx-fb/4.1.15-2.0.0/environment-setup-cortexa9hf-neon-poky-linux-gnueabi 此致, 尤里。 回复:如何在没有 Yocto 的情况下构建 U-Boot、内核和 Linux 应用程序 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 我遇到一个问题,您能帮忙查看并指导我如何解决吗? goko@PC:~/fsl-release-bsp/uboot-imx$ make cleanmake: /opt/fsl-imx-fb/4.1.15-2.1.0/environment-setup-cortexa7hf-neon-poky-linux-gnueabigcc:命令未找到/bin/sh: 1: /opt/fsl-imx-fb/4.1.15-2.1.0/environment-setup-cortexa7hf-neon-poky-linux-gnueabigcc:未找到dirname:缺少操作数尝试 'dirname --help' 以获取更多信息。goko@PC:~/fsl-release-bsp/uboot-imx$ make mx6ull_14x14_evk_defconfig   HOSTCC  scripts/basic/fixdep   HOSTCC  scripts/kconfig/conf.o   HOSTCC  scripts/kconfig/zconf.tab.o   HOSTLD  scripts/kconfig/conf # # 配置已写入 .config #goko@PC:~/fsl-release-bsp/uboot-imx$ make u-boot.imxmake: /opt/fsl-imx-fb/4.1.15-2.1.0/environment-setup-cortexa7hf-neon-poky-linux-gnueabigcc:命令未找到/bin/sh: 1: /opt/fsl-imx-fb/4.1.15-2.1.0/environment-setup-cortexa7hf-neon-poky-linux-gnueabigcc:未找到dirname:缺少操作数尝试 'dirname --help' 以获取更多信息。scripts/kconfig/conf --silentoldconfig Kconfig CHK include/config.h UPD include/config.h GEN include/autoconf.mk/bin/sh: 1: /opt/fsl-imx-fb/4.1.15-2.1.0/environment-setup-cortexa7hf-neon-poky-linux-gnueabigcc:未找到make[1]: *** [include/autoconf.mk]错误 1make: *** 没有规则来生成目标 `include/config/auto.conf',该目标被 `include/config/uboot.release' 所需。停止。 回复:如何在没有 Yocto 的情况下构建 U-Boot、内核和 Linux 应用程序 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> CurtisWald  您好,Yuri,我在阅读帖子 DOC-334814 时想提到,一旦从元工具链环境脚本中设置了环境,变量 CC 可以用于“构建应用程序(Hello World)作为 test.c”部分;以下是 CC 的定义示例,该定义将根据所使用的 MACHINE 而唯一:   CC=arm-poky-linux-gnueabi-gcc  -march=armv7ve -mfpu=neon  -mfloat-abi=hard -mcpu=cortex-a7 --sysroot=/opt/fsl-imx-x11/4.1.30-7ULP_alpha/sysroots/cortexa7hf-neon-poky-linux-gnueabi 此示例提供如下: $ arm-poky-linux-gnueabi-gcc --sysroot=/opt/fsl-imx-fb/4.1.15-2.0.0/sysroots/cortexa9hf-neon-poky-linux-gnueabi -mfloat-abi=hard test.c但是可以使用以下命令:$ $CC test.c -o test使用 $CC 会添加一些额外的定义,如上所示。谢谢,-Curtis
查看全文
imx93-EVK-PWM_LED このドキュメントは、iMX93 PWMとPWMLEDのイネーブル化についてです HW: Mix93 11x11 EVK SW: lf-6.6.3-1.0.0です PWM: TPM3 CH0, CH2 TPM4 CH2 注:i.MX PWMと PWMLEDはすでに lf-6.6.3-1.0.0で有効になっています Linux
查看全文
i.MX 8M+:使用 yocto 生成的工具链构建内核工具时出错 当我尝试使用通过 Yocto 为 i.MX 8M+ 评估套件创建的工具链编译内核工具时遇到了构建错误。我能够构建设备树、内核和模块;只是工具出现故障。具体来说就是spidev_test。该工具链是根据 i.MX Yocto 文档通过“bitbake -c populate_sdk”生成的,并且一直运行良好。 以下是我所看到的: $ source /opt/fsl-imx-xwayland/6.6-scarthgap/environment-setup-armv8a-poky-linux $ make tools/spi DESCEND spi CC /home/ian/build/imx-yocto-bsp/linux-imx/tools/spi/spidev_test.o In file included from spidev_test.c:11: /opt/fsl-imx-xwayland/6.6-scarthgap/sysroots/x86_64-pokysdk-linux/usr/lib/aarch64-poky-linux/gcc/aarch64-poky-linux/13.3.0/include/stdint.h:9:16: fatal error: stdint.h: No such file or directory 9 | # include_next | ^~~~~~~~~~ compilation terminated. 我可以通过将“ -I/opt/fsl-imx-xwayland/6.6-scarthgap/sysroots/x86_64-pokysdk-linux/usr/include”添加到 CFLAGS 来绕过这个问题,但后来我遇到了这个问题: DESCEND spi CC /home/ian/build/imx-yocto-bsp/linux-imx/tools/spi/spidev_test.o In file included from /opt/fsl-imx-xwayland/6.6-scarthgap/sysroots/x86_64-pokysdk-linux/usr/include/features.h:527, from /opt/fsl-imx-xwayland/6.6-scarthgap/sysroots/x86_64-pokysdk-linux/usr/include/bits/libc-header-start.h:33, from /opt/fsl-imx-xwayland/6.6-scarthgap/sysroots/x86_64-pokysdk-linux/usr/include/stdint.h:26, from spidev_test.c:11: /opt/fsl-imx-xwayland/6.6-scarthgap/sysroots/x86_64-pokysdk-linux/usr/include/gnu/stubs.h:7:11: fatal error: gnu/stubs-32.h: No such file or directory 7 | # include | ^~~~~~~~~~~~~~~~ compilation terminated. 我看到工具链(不正确?)链接到 stubs-32 并破解链接到 stubs-64 (arm64 目标)。当我再次尝试时,我得到了这个: $ make tools/spi DESCEND spi CC /home/ian/build/imx-yocto-bsp/linux-imx/tools/spi/spidev_test.o In file included from spidev_test.c:11: /opt/fsl-imx-xwayland/6.6-scarthgap/sysroots/x86_64-pokysdk-linux/usr/include/stdint.h:98: warning: "__INT64_C" redefined 98 | # define __INT64_C(c) c ## LL | : note: this is the location of the previous definition /opt/fsl-imx-xwayland/6.6-scarthgap/sysroots/x86_64-pokysdk-linux/usr/include/stdint.h:99: warning: "__UINT64_C" redefined 99 | # define __UINT64_C(c) c ## ULL | : note: this is the location of the previous definition LD /home/ian/build/imx-yocto-bsp/linux-imx/tools/spi/spidev_test-in.o LINK /home/ian/build/imx-yocto-bsp/linux-imx/tools/spi/spidev_test /opt/fsl-imx-xwayland/6.6-scarthgap/sysroots/x86_64-pokysdk-linux/usr/libexec/aarch64-poky-linux/gcc/aarch64-poky-linux/13.3.0/ld: cannot find Scrt1.o: No such file or directory /opt/fsl-imx-xwayland/6.6-scarthgap/sysroots/x86_64-pokysdk-linux/usr/libexec/aarch64-poky-linux/gcc/aarch64-poky-linux/13.3.0/ld: cannot find crti.o: No such file or directory /opt/fsl-imx-xwayland/6.6-scarthgap/sysroots/x86_64-pokysdk-linux/usr/libexec/aarch64-poky-linux/gcc/aarch64-poky-linux/13.3.0/ld: cannot find crtbeginS.o: No such file or directory /opt/fsl-imx-xwayland/6.6-scarthgap/sysroots/x86_64-pokysdk-linux/usr/libexec/aarch64-poky-linux/gcc/aarch64-poky-linux/13.3.0/ld: cannot find -lgcc: No such file or directory /opt/fsl-imx-xwayland/6.6-scarthgap/sysroots/x86_64-pokysdk-linux/usr/libexec/aarch64-poky-linux/gcc/aarch64-poky-linux/13.3.0/ld: cannot find -lgcc_s: No such file or directory /opt/fsl-imx-xwayland/6.6-scarthgap/sysroots/x86_64-pokysdk-linux/usr/libexec/aarch64-poky-linux/gcc/aarch64-poky-linux/13.3.0/ld: cannot find -lc: No such file or directory /opt/fsl-imx-xwayland/6.6-scarthgap/sysroots/x86_64-pokysdk-linux/usr/libexec/aarch64-poky-linux/gcc/aarch64-poky-linux/13.3.0/ld: cannot find -lgcc: No such file or directory /opt/fsl-imx-xwayland/6.6-scarthgap/sysroots/x86_64-pokysdk-linux/usr/libexec/aarch64-poky-linux/gcc/aarch64-poky-linux/13.3.0/ld: cannot find -lgcc_s: No such file or directory /opt/fsl-imx-xwayland/6.6-scarthgap/sysroots/x86_64-pokysdk-linux/usr/libexec/aarch64-poky-linux/gcc/aarch64-poky-linux/13.3.0/ld: cannot find crtendS.o: No such file or directory /opt/fsl-imx-xwayland/6.6-scarthgap/sysroots/x86_64-pokysdk-linux/usr/libexec/aarch64-poky-linux/gcc/aarch64-poky-linux/13.3.0/ld: cannot find crtn.o: No such file or directory collect2: error: ld returned 1 exit status make[3]: *** [Makefile:42: /home/ian/build/imx-yocto-bsp/linux-imx/tools/spi/spidev_test] Error 1 make[2]: *** [Makefile:73: spi] Error 2 make[1]: *** [/home/ian/build/imx-yocto-bsp/linux-imx/Makefile:1362: tools/spi] Error 2 make: *** [Makefile:234: __sub-make] Error 2 看起来工具链中有些东西没有正确设置。或者,我的系统环境中缺少了什么?有什么线索可以说明这里发生了什么吗? i.MX 8M | i.MX 8M Mini | i.MX 8M Nano Linux Yocto Project 回复:i.MX 8M+:使用 yocto 生成的工具链构建内核工具时出错 啊,检查一下!我的自定义图像是“imx-image-multimedia”的变体;我还没有构建“full-image”。谢谢! 回复:i.MX 8M+:使用 yocto 生成的工具链构建内核工具时出错 Hello, 看起来您必须构建完整图像才能编译它,因为出于某种原因我收到了 stubs-32 位和完整图像 stubs64。 此致
查看全文
_libc_init_array()はどこで定義されていますか? Hello,  私はS32K344マイクロコントローラに取り組んでおり、C ++コードを実行する必要があります。C ++がSDKプロジェクトで公式にサポートされていないことがわかった後、nxpコミュニティページで説明されている回避策のいくつかを実装しようとしました。 要するに、SDKを使用してCプロジェクトを作成し、C ++の性質を追加し、main.cの名前をmain.cppに変更し、標準リンカファイルをプロジェクト設定のプロジェクトで作成されたリンカファイルに変更します(画像を参照)。 この手順の後、私はmain.cppでプロジェクトを構築することができます。ただし、main の外部で宣言されたオブジェクトは実行または初期化されません。 この問題に対して私が見つけた解決策の1つは、main()の先頭に__libc_init_array()を含めることです。ここでの問題は、この機能が見つからないことです。この依存関係を解決するためにライブラリを追加するにはどうすればよいですか?C ++でmainの外部オブジェクトを初期化する他の解決策はありますか?コンソール出力: ビルドファイル: ../RTD/src/Clock_Ip_ExtOsc.c 起動:標準S32DS Cコンパイラ arm-none-eabi-gcc "@RTD/src/Adc_Sar_Ip.args" -MMD -MP -MF "RTD/src/Clock_Ip_ExtOsc.d"-MT「RTD/src/Clock_Ip_ExtOsc.o」-o "RTD/src/Clock_Ip_ExtOsc.o""../RTD/src/Clock_Ip_ExtOsc.c" ../src/main.cpp:関数 'int main()'では、次のようになります。 ../src/main.cpp:59:2: エラー: '__libc_init_array' はこのスコープで宣言されていませんでした 59 |__libc_init_array(); |^~~~~~~~~~~~~~~~~ make: *** [src/subdir.mk:20:src/main.o]エラー 1 make: *** 未完成の仕事を待っています...。 Re:_libc_init_array()はどこで定義されていますか? Hi,  _libc_init_array STD C ライブラリの一部です (例: libc_nano.a)。C++ を使用している場合は、リンク、STD、C ライブラリ、および呼び出し_libc_init_arrayは必要ありません。
查看全文
VS Code によって使用される Python 仮想環境 MCUXpressoインストーラではv1.3以降およびVS Code用MCUXpresso拡張機能で、Pythonに仮想環境(VE)を使用しています。このVEをCLIから手動で使用するには、新しいモジュールをインストールするか既存モジュールをアップグレードして、VEを有効にする必要があります。 上記VEを有効にするために、スクリプト(Windowsではactivate.batファイル)を実行します。MCUXpressoインストーラのログにこのスクリプトへのパスが表示されます。Windowsでは、通常このスクリプトは C:\Users\ \.mcuxpressotools\.venv\Scripts\activate.bat にインストールされます。コマンド・ウィンドウからこのスクリプトを実行すると、VEが有効になります。以下のスクリーンショットで、スクリプトの実行後に、(.venv)というVE名がプロンプトに表示されていることにご注目ください。 これで、このVE内でPythonコマンドを実行できるようになりました。システムに複数のPythonバージョンがインストールされている場合にVE Pythonを使用するには、VE Python実行可能ファイルへのフル・パスを使用します。たとえば、WindowsでこのVEにpipをインストールするには、次のコマンドを実行します。 C:\Users\ \.mcuxpressotools\.venv\Scripts\python.exe -m ensurepip --upgrade
查看全文
基于 S32K344 的三相无传感器 PMSM 电机控制套件(使用 MBDT 模块) 本文内容与 AN13902:《基于 S32K344 的三相无传感器 PMSM 电机控制套件(使用 MBDT 模块)》完全一致 1. 简介 基于模型的设计工具箱 (Model-Based Design Toolbox,MBDT) 支持通过 MATLAB® 和 Simulink® 环境实现面向 NXP 处理器的基于模型的设计流程。 该工具箱旨在助力开发日益复杂的应用,它是一组工具和库的集合,可帮助客户在 MCU 和处理器上进行原型设计并加速算法开发。 MBDT 整合了 NXP 工具(实时驱动程序、配置工具、汽车数学和电机控制库 (AMMCLib)、编译器和工具链),提供完整的开发解决方案,具有以下优势: 代码/算法的可重用性 易于理解/易于遵循的图表 自动代码生成 S32K3 是基于 Arm ® Cortex ® -M7 的微控制器系列,提供单核、双核和锁步核配置,支持高达 ASIL(汽车安全完整性等级)D 功能安全的汽车和工业应用,运行频率高达 240MHz,配备浮点单元 (FPU)。S32K3 适用于电机控制、电池管理系统(BMS)或车身控制模块 (BCM) 等应用。 2. 电机控制 PMSM 示例 适用于 S32K3 的 MBDT 插件包含一个电机控制示例 (s32k3xx_mc_pmsm.mdl),支持以下功能: 三相 PMSM 速度矢量控制 (FOC) 采用两个分流电阻的电流检测 通过无传感器算法或编码器位置传感器估算轴位置和速度 使用 FreeMASTER 调试工具的应用控制用户界面 如需安装适用于 S32K3 的 MBDT 插件,请查看 NXP MBDT 页面下的《S32K3xx 基于模型的设计工具箱 - 快速入门指南》。 s32k3xx_mc_pmsm.mdl 示例展示了如何使用 MCSPTE1AK344 无刷直流电机 (BLDC) 和永磁同步电机 (PMSM) 电机控制开发套件,通过两个分流电流传感器实现永磁同步电机 (PMSM) 的磁场定向控制 (FOC) 矢量控制。此 Simulink® 模型配置为与 Sunrise 42BLY3A78-24110 电机配合使用,但用户可加载 “s32k3xx_mc_pmsm_data_linix.m” 脚本以使用 Linix 45ZWN24-40 电机。 应用程序部署到目标设备后,RGBLED0_GREEN 应保持常亮。通过提供的项目选择所需的电机速度,然后在 FreeMASTER 中按下 “On/Off” 按钮。或者,可按下 USER_SW0 按钮(板上的 SW6)以顺时针(CW)模式启动电机,或按下 USER_SW1 按钮(板上的 SW5)以逆时针(CCW)模式启动电机。同时按下两个按钮或复位按钮将停止电机。同时按下两个按钮或复位按钮可停止电机。 若无误,电机应开始旋转,且 RGBLED0_GREEN 将开始闪烁。若出现任何错误,电机将不运行,且 RGBLED0 将从绿色变为红色常亮。 2.1 必需软件 S32 Design Studio for S32 Platform 3.4 EB tresos Studio 27.1 FreeMASTER 3.2 带 “ARM Cortex-M 处理器嵌入式编码器” 和 “NXP_Support_Package_S32K3xx” 的 MATLAB R2021a NXPModel-Based Design Toolbox for S32K3xx 版本 1.3.0 2.2 必要硬件 个人电脑或笔记本电脑 MCSPTE1AK344 BLDC 和 PMSM 电机控制开发套件,包含: DEVKIT-MOTORGD 板 S32K3X4EVB-Q172板 Sunrise 42BLY3A78-24110 电机 12V 电源 Micro-USB 线缆 2.3 准备演示 MCSPTE1AK344 与原始 S32K3X4EVB-Q172 板相比有一些修改。如需了解具体变化,请查看 NXP 网站上的《MCSPTE1AK344 电机控制套件的 S32K3X4EVB-Q172 板修改 schematic 附录》。 检查 DEVKIT-MOTORGD 上的板载跳线 J9、J10 和 J11 是否处于下图中的 2-3 位置,以通过分流电阻启用相电流测量: 将 micro-USB 电缆连接在主机 PC 和 OpenSDA USB 端口(J40)之间,并将 SW1 切换到 S32K3X4EVB-Q172 板上的位置 2。 将 12V 电源连接到DEVKIT-MOTORGD板,并将 S32K3X4EVB-Q172 板上的SW1从2位置切换到1位置。 SW1 旁边的四个 LED 应亮起并呈橙色常亮,若它们闪烁,将开关从位置 1 移至 2 再移回 1,以启动无活动看门狗的 SBC。 在 MATLAB® 中打开 s32k3xx_mc_pmsm.mdl。用户可在 Sunrise 42BLY3A78-24110 电机(MCSPTE1AK344 套件)或 MCSPTE1AK144 开发套件中的 Linix 45ZWN24-40 电机之间选择。如需从默认的 Sunrise 电机更换,点击 “电机选择” 模块中的 “Linix 电机参数”。 构建程序并下载到目标板,RGBLED0_GREEN 亮起。 从 “FreeMASTER_control” 文件夹打开 “S32K_PMSM_Sensorless.pmp”FreeMASTER 项目,点击 “Tools” 菜单,然后点击 “Connection Wizard”,接着点击两次 “Next”,选择分配给 S32K3X4EVB-Q172 板的 COM 端口和 115200 波特率。 2.4 运行演示 在 “S32K_PMSM_Sensorless” 项目中,点击 “App Control” 选项卡,使用速度仪表选择所需速度,然后点击 “On/Off” 按钮。 或者,按下 USER_SW0 按钮以顺时针(CW)模式启动电机,按下 USER_SW1 按钮以逆时针(CCW)模式启动电机。 同时按下两个按钮或复位按钮将停止电机。 若出现任何故障,电机将停止,故障将在 FreeMASTER 项目中显示,且 RGBLED0_RED 将亮起。如需再次运行电机,点击 “Fault” 按钮清除故障,然后重新启动电机。 电机旋转时,RGBLED0_GREEN 将每秒闪烁一次。 3. Model Overview 下图展示了包含所有模块的模型概览: 主要模块如下: Initialize 模块包含 S32K344 MCU 和 GD3000 预驱动器的函数 Hardware_interrupt_handler 调用测量模块并驱动电机控制算法 测量读取ADC FIFO缓冲区并调用以下模块 Board buttons 控制电机的启动(顺时针或逆时针)和停止 State machine 子系统包含电机控制应用程序的主要 “StateFlow”,以及在每个状态中执行的 S 函数 Motor selection 模块包含 Sunrise 或 Linix 电机的参数 RGBLED0 toggle 模块控制绿色 LED 的闪烁 Update PWM 模块调用外设模块以更新新的占空比数值 Var. Init. 模块包含模型和 FreeMASTER 中使用的大多数变量 FreeMASTER Recorder 模块将数据从模型传输到 PC 3.1 初始化函数 生成代码中运行的第一个模块用于配置: 通过 FreeMASTER 进行通信 模数转换器 (ADC) - ADC0 和 ADC1 实例 GD3000 逆变器板驱动器 六个PWM通道 触发“MBD_e_init”事件 3.2 ADC 中断和测量 硬件中断处理程序由 ADC(模数转换器)激活,并以 100μs 的周期循环调用以采样 FOC 状态变量,它是该电机控制应用程序的主要驱动程序。 DEVKIT-MOTORGD 上的分流电阻用于测量电机定子相电流。电流流过逆变器的每个桥臂 (R56、R57 和 R58),产生的电压降输入运算放大器进行增益调整和信号滤波,然后由 ADC 外设读取。R60 用作直流母线电流的低侧分流电阻。 尽管 S32K344 包含三个 ADC,且板上有三个分流电阻(R56、R57 和 R58),但本应用中同时仅监控两个电流,以展示 ADC 单触发模式和 BCTU 控制模式的并行使用。第三个定子电流通过以下公式获得: 有关电流测量的特定硬件的更多详细信息,请参见《基于 S32K344 的三相无传感器 PMSM 电机控制套件(使用 RTD 底层 API)》应用笔记 AN13767 的第 3.3 章 “相电流测量”。 硬件中断处理程序调用测量块子系统: Measurement 模块读取 ADC FIFO(先进先出)缓冲区,并使用多路复用器 (MUX) 创建一个包含 3 个信号的总线,每个信号包含相应 ADC 通道的值: 此子系统还为其他子系统生成函数调用: 板载按钮 (Board Buttons) 状态机 (State Machine) 3.3 板载按钮 该模块提供启动电机顺时针(CW)或逆时针(CCW)方向并停止电机的功能: 当按下 USER_SW0 按钮时,电机沿顺时针方向启动,而当按下 USER_SW1 按钮时,电机沿逆时针方向启动。 同时按下两个按钮将停止电机并重新准备系统以便再次启动。 FreeMASTER 工具可读取两个全局变量(btSpeedUp 和 btSpeedDown),以顺时针或逆时针方向启动或停止电机。 通过连续按下同一按钮来逐步增加/减小速度,这会触发下面的 If Action 子系统: 如果 “cntSpeedUp” 值大于 “MBD_SPEED_UP_CNT”,计数器值将重置为 0;否则,它将随着子系统的每次运行而增加。 4. 状态机 这是MATLAB模型中的主电机控制模块,也是最复杂的一个: 主状态机模块控制电机控制应用程序的流程: 应用程序状态机由以下六个状态组成: INIT – local_MBD_init FAULT – local_MBD_fault READY – local_MBD_ready CALIB – 本地_MBD_校准 ALIGN – local_MBD_align RUN – local_MBD_run INIT状态是第一个执行的状态,在此状态下,PWM输出被禁用,变量被重置为零。 初始化后,RGBLED0_GREEN 设置为 “点亮”,并在设备进入 “READY” 状态之前设置 “MBD_ready”。 系统进入CALIB状态后,测量 A 相和 B 相电流的偏移量。 接着是电机的 ALIGN 阶段,启动斜坡启动,电机进入 RUN 状态,在此状态下电机从开环切换到闭环。 每个状态都会调用模型子系统,接下来我们将详细研究这些构建元素。 4.1 计算事件 该模块基于原始 ADC 读数计算所有定子电流,并计算事件和直流母线电压: 查看 “ Compute Events and ADCs” 模块内部: 仅当电机在 OnOffState 设置为 OFF 且 OnOffSwitch 设置为 TRUE 时启动,或者电机在 OnOffState 设置为开启 ON 且 OnOffSwitch 设置为 FALSE 时停止,才会生成事件。 该子系统检查 OnOffState 是否等于 1,如果为真,它将设置事件的输出为 MBD_e_app_on;否则,输出为关闭。 Calc_iABC获取ADC的原始值并将其转换为实际电流: 它还使用以下公式确定第三个定子电流: UDC_filt 模块获取原始 ADC 值并计算原始和滤波后的直流母线电压: 原始 ADC 值经过偏移和乘以 MATLAB 脚本 “s32k3xx_mc_pmsm_data.m” 中的常数 MBD_U_DCB_MAX。 AMMCLib 函数 GDFLIB_FilterMA 实现指数移动平均滤波器。滤波器将根据预设值初始化内部状态。 此预设的目的是避免过大的瞬态。在这种情况下,使用常数12是因为额定直流电压为12伏。 UDC_filt 模块的输出更新两个全局变量: Udcb_Filt Udcb_Raw 这些变量特别重要,因为它们在故障状态下的电流环路中用于检查过压、在对齐状态中以及用于消除直流母线纹波。 4.2 初始化状态 此代码块将所有变量重置为其默认初始状态,并调用一个函数来禁用PWM: InitLeds 模块将 RGBLED0 设置为零,同时将 OnOffState、OnOffSwitch 和 SwitchFaultClear 也设置为零: 在所有变量设置完成后,MBD_e_init_done 被发送到全局变量 Event。 4.3 故障状态 该模块检查 MBD_State 是否为故障状态,然后检查可能出现的各种错误,例如过流、过压和欠压: 还会检查 A、B 或 C 各相的过流,以及直流母线过压和直流母线过流。 如果达到任何限制,将触发禁用 PWM 输出的函数调用。 4.4 对齐状态 该子系统通过为 D 和 Q 参考设置恒定值来对齐电机轴: SetStates子系统设置变量并重置对齐过程所需的计数器: 逆帕克变换由Calc_uAIBReq用于计算Ud和Uq电压: Wait_to_align 模块使用计数器等待电机轴机械对齐: 对齐子系统使用计时器等待,直到计数器为负,然后重置所有以下变量:DutyCycleValues (:)、uDQReq1、uDQReq2、iDQReq1、iDQReq2、Rst_FastLoop、Rst_SlowLoop、trackingToSensorless、speedLoopCntr、openLoop_wRotEl、pospeControl_wRotEl、sensorless_wRotEl、sensorless_thRotEl、openLoop_thRotEl: 在所有值设置完成后,MBD_e_align_done将被发送到 Event 全局变量。 最后一个子系统用于消除直流母线纹波并计算 PWM 占空比: 它使用了两个 AMMCLib 函数“GMCLIB_ElimDcBusRip”和“GMCLIB_SvmStd_FLT”。 “GMCLIB_ElimDcBusRip” 函数提供了一种计算方法,用于重新计算所需定子电压矢量的直轴 Uα 和交轴 Uβ 分量,以补偿功率级直流母线上的电压纹波。 “GMCLIB_SvmStd_FLT”函数将两相(α-β)正交坐标系中的值转换为由两组星形连接的三相定子绕组(f32A-f32B-f32C)和(f32D-f32E-f32F)组成的六相系统,使用空间矢量调制(SVM)算法。 为了说明从定子参考电压(α 和 β)到改进型空间矢量调制 (SVM) 的转换,我们可以仔细观察下面的波形: 我们采用改进型空间矢量调制,通过持续上下偏移三相电压系统,实现直流母线电压的充分利用。 这种偏移称为 “三次谐波注入”,能够使基波振幅提高 15.5%,与标准正弦 PWM 调制相比,可使电机达到更高的速度范围或输出更大的扭矩。 4.5 就绪状态 此状态包含 2 个块 GreenLedOn 和 ReadyStateSetStates,如下图所示: GreenLedOn 模块将 RGBLED0 设置为纯绿色常亮,并关闭另外两个颜色的 LED。 “ReadyStateSetStates” 将值“MBD_e_ready”发送到 Event,并将常量“MBD_ready”发送到“MBD_State”全局变量。 就绪状态子系统还会生成一个函数调用来禁用 PWM 输出。 4.6 校准状态 该模块计算 A 相和 B 相电流的偏移量,并使用计数器等待,直至可以重置变量: “Calculate_I_ABCoffsets”使用 MATLAB 脚本中的“IphaseAB_raw”值和常数“MBD_I_MAX”作为 AMMCLib 模块的输入。 “GDFLIB_FilterMA_FLT” 函数模块实现了一个指数移动平均滤波器,用于计算原始相电流与脚本 “s32k3xx_mc_pmsm_data.m” 文件中设置为常数的最大电流 “MBD_I_MAX” 之间的偏移量。 该函数返回一个单精度浮点值,表示步骤 (k) 中输入信号的滤波值。 计数器的实现很简单,每一步都使用递减并进行比较: 如果 “CalibCnt” 计数器值大于 “CalibTimer” 值,它将触发 “ResetVariables” 子系统: 这将设置所有上述变量,并将值“MBD_e_calib_done”发送到事件全局状态。 4.7 运行状态 这是主要的应用模块,包含重置函数和电机控制环路: “Rst_FastLoop”变量用于在用户希望停止并重新启动电机时重置电机控制算法。 电机控制算法如下图所示,从电流采集、Clark+Park 变换、反电动势和角度跟踪观测器、电流环路、反 Park 变换加直流母线纹波补偿到 PWM 输出: 上述示意图与应用笔记 AN13767《基于 S32K344 的三相无传感器 PMSM 电机控制套件(使用 RTD 底层 API)》中的电机控制应用类似:   4.8 电机控制算法概述 为了简化控制系统,我们可以从模块集的角度 “线性” 审视这种电机控制算法: 第一步是获取电机定子相电流。 分流电阻上的电压降被送入运算放大器进行放大和信号滤波,然后输入到模数转换器(ADC)。 随后,ADC 用于检测两相电流,然后电机控制算法根据基尔霍夫定律计算第三相电流,该定律指出流入节点的电流之和为零: 然后使用正向 Clark 变换将三相系统转换为两相正交系统 (α,β)。 然后使用 Park 变换将静止系统转换为旋转 d-q 参考系,之后将其输入到反电动势和角度跟踪观察器中,以计算下一个 PWM 换向的指令电压。 使用反 Park 变换将 d-q 坐标转换回 α 和 β 静止坐标系。 空间矢量调制 (SVM) 模块使用反 Clark 变换生成电机绕组的三相电压,完成从电流采集到生成电压指令的电机控制环路。 有关方程、静止和旋转参考系的更多信息,请参阅应用笔记 AN13767 的第 3.2 章 “正交相同步参考系中的 PMSM 模型”。 5. 电流环路 (Fast Loop) 在称为磁场定向控制 (FOC) 的变频驱动控制方法中,电流控制至关重要。将定子相电流转换为正交旋转两相系统后,会得到两个独立的电流分量。 直轴(d 轴)电流分量称为磁通产生分量,与磁通量正交的交轴(q 轴)分量称为转矩产生分量。 电流控制环路用于以高精度、高动态性和高带宽控制三相电机的转矩和磁通量。 回顾 MATLAB 模型,让我们按照从 ADC 信号采集到 PWM 输出电压指令的相同逻辑进行介绍。 首先,我们将 ADC 原始值输入到 “Calc_iABC” 模块中,该模块计算三相电流,然后使用 “CurrentSenseProcessing” 模块将其转换为单精度浮点数。 其次,是正向 Clark 变换子系统: 这使用“GMCLIB_Clark_FLT”单精度浮点函数,用于将三相(A-B-C)坐标系中的值转换为两相(α-β)正交坐标系,遵循以下方程: 接下来是Park变换,使用“GMCLIB_Park_FLT”函数: 这根据以下方程将两相(α-β)静止正交坐标系中的值转换为两相(d-q)旋转正交坐标系中的值: 其中,(theta_e) 表示转子磁通的电气位置。 电流环路模块接收 d-q 电流坐标作为输入,如下所示: “AMCLIB_CurrentLoop” 函数实现电流控制环路,它是 FOC 的组成部分,代表电机控制结构中最内层的环路。 电流控制环路包含两个递归形式的 PI 控制器,其参数可在 AMMCLib 模块内配置: 这些参数可在模型文件夹的脚本 “s32k3xx_mc_pmsm_data.m” 中修改。 电流环路的输出是所需的 Ud 和 Uq 指令电压,它们被送入反 Park 模块: “GMCLIB_ParkInv”函数计算逆帕克变换,将两相(d-q)旋转正交坐标系中的量转换为两相(α-β)静止正交坐标系,使用以下方程: 接下来,两个信号馈送到 DC 总线 Ripple Compensation 模块: 接下来,这两个信号送入直流母线纹波补偿模块: DutyCycleValues值用于更新生成 PWM 信号的 MCU 定时器,这些信号被输入到 GD3000 MOSFET 驱动器中。 “sin-cos” 模块计算转子位置 (theta_e) 的正弦值和余弦值:😞 这些信号是角度估计所必需的,并被送入 Park 和反 Park 模块。 反电动势和角度跟踪观察器模块的顶部包含以下内容: “AMCLIB_BemfObsrvDQ”函数返回实际旋转参考系与估计旋转参考系之间的相位误差: 反电动势和角度跟踪观察器模块的底部包含“AMCLIB_TrackObsrv_FLT”函数: 位置跟踪观测器具有一个 PI 控制器,用于计算工作点 Θestim = Θe 附近的线性近似。 该块的参数是: 观察者将“Omega_e”输入到速度回路中,该回路在此模型中被称为慢速回路。 以上所有模块都是电机控制算法“Fast Loop”的一部分,对于当前控制逻辑至关重要。 该函数接收由 “AMCLIB_BemfObsrvDQ” 计算的相位误差 (Θerr),并使用它来估计转子的角速度和位置。 估计的转子位置是通过在锁相环(PLL)中将γ-δ参考框架的相位误差(Θerr)驱动至零来获得的。 PLL 结构如下图所示: 此外,我们将介绍其他所需的模块或子系统。 6. Speed Loop(Slow Loop) Speed Loop 子系统的运行速度远低于 Current Loop: 当计数器 “speedLoopCntr” 等于变量 “MBD_SPEED_LOOP_CNTR” 时,慢速环路子系统运行,其执行速度是快速环路的 1/10: 首先,进入该子系统后,计数器 “speedLoopCntr” 重置为零,然后进行检查: 如果 “PosMode” 等于 2,意味着电机处于无传感器模式,它将设置速度: “PosMode1” 内部有一个小型状态机,用作速度限制器: 这将速度输出限制在两个限值之间:“-HighLimSpeed” 和 “+HighLimSpeed”。 速度环路模块实现 “AMCLIB_FWSpeedLoop” 函数: “AMCLIB_FWSpeedLoop” 函数在 FOC 外环控制中实现速度 PI 控制器,并为永磁同步电机实现弱磁算法: 上述 diagram 所示的外环中,“AMCLIB FWSpeedLoop” 函数实现了速度 PI 控制器和弱磁控制器。 7. 开环 该模块使用AMMCLib库中的几个函数计算开环“theta_e”: 为了计算 theta,我们知道角速度 (ω) 等于角位置 θ 随时间的变化率: 此外,我们可以根据以下公式对 omega 进行积分: 现在让我们看看 MATLAB 中的实现: 这将 “FwSpeedLoop_pRamp_fltState” 变量值除以常数 “MBD_WEL_MAX”,并将其转换为 32 位分数数据类型。 Open Loop 的第二部分由以下组成: “GFLIB_IntegratorTR” 函数使用梯形(双线性)变换实现离散积分器。 结果被转换为 32 位分数数据类型,并乘以常数 “pi”。 系统中有四种运行模式: 根据具体场景,每种模式会修改不同的参数。 force mode 施加开环 omega,其他变量为零: tracking mode 将控制 omega 设置为零,theta 设置为开环值: 当电机在闭环(无传感器)模式下运行时,位置模式为第二种情况。 这将变量 “sensorless_thRotEl” 中的 “theta_e” 除以常数 “pi”,并将其转换为 32 位分数数据类型。 默认模式是: 自动模式由一个状态机组成,该状态机根据开环速度切换“PosMode”: 函数“MLIB_Abs_FLT”返回开环电气欧米茄的绝对值。 “PosMode” 状态机有以下状态: 根据 Open Loop Speed 有 3 种状态: 强制模式 = 0 跟踪模式 = 1 Sensorless模式 = 2 这确保电机控制算法根据速度自动切换运行模式。 8. RGBLED0 切换 该模块实现一个定时器,用于切换 RGBLED0_GREEN 的状态。 该子系统的第二个功能是关闭另外两个 LED,为 RGBLED0_BLUE 和 RGBLED0_RED 的 NXP 函数模块 Dio_WriteChannel 赋予值 0。 定时器使用变量 “LEDCounter”,该变量在快速环路的每个周期递增,并与值 2500 进行比较。 如果大于 2500,它将把计数器值重新初始化为 0,并触发 If Action 子系统: 在此子系统中,将 LEDState 与逻辑 “1” 进行比较,并进行按位异或屏蔽,将结果值赋予 RGBLED0_GREEN 的变量和函数 Dio_WriteChannel。 9. Update PWMs 该模块根据硬件缩放和每个通道的预先计算值生成相应的PWM占空比值。 占空比以数组形式存储在一个数据变量中,对应三个通道。 它们与常数 “32768” 相乘以实现占空比偏移,然后被输入到每个 PWM 通道。 此外,“DutyCycleValues” 会根据相同 PWM 模块的相位偏移输入进行调整,Sync Update 输入为常数 “1”,这意味着每个通道都是同步的。 该子系统使用 NXP PWM 模块和 “PWM_SetDutyPhaseShift” 函数来对齐三个通道:PWM0、PWM1 和 PWM2。 10. FreeMASTER 配置 GUI 打开 “S32K_PMSM_Sensorless” 项目,点击 “App Control” 页面,使用速度仪表选择所需速度,然后点击 “On/Off” 按钮: 此外,用户可以查看各种参数,例如下面的 IDQ currents: 我们还可以仔细查看三相电机电流: 三相电流以 RGB 颜色表示,根据电机负载不同,其峰值为 1.4 [A]。 11. 结论 MCSPTE1AK344 开发套件提供了一整套硬件功能,与上述的 s32k3xx_mc_pmsm.mdl 示例配合使用,为使用恩智浦(NXP)适用于 NXP Model-Based Design Toolbox for S32K3 进行电机控制算法建模创造了完整的开箱即用体验。 MBDT 在 Simulink® 环境中集成了 NXP 的各类工具,如汽车数学与电机控制库 (AMMCLib)、编译器、配置工具、实时驱动程序 (RTD) 和工具链。它与 Embedded Coder® 一起,为微控制器生成优化代码,确保最先进的软件循环能够在恩智浦微控制器上以最高性能运行。 要了解更多关于适用于 S32K3 的基于模型的设计工具箱的功能,请访问 MBDT 社区页面。你可以在此处发起话题,与创建 MBDT 工具箱的工程师直接交流。除了专注于电池管理系统、AUTOSAR 或电机控制应用的典型应用演示外,你还可以参加 NXP MBDT 培训和课程,如初学者指南系列。 你也可以访问 NXP.com,获取有关 NXP 所提供的开发生态系统的更多信息。 12. 参考文献 MCSPTE1AK344:适用于 BLDC 和 PMSM 电机控制的 S32K344 开发套件 NXP 社区的 “使用 NXP 基于模型的设计工具箱的三相 PMSM 控制研讨会” NXP 社区的模块 4:空间矢量调制 适用于 S32K14x 器件的汽车数学与电机控制库 (AMMCLib) 套装 应用笔记:AN13767:使用 RTD 底层 API 的带 S32K344 的三相无传感器 PMSM 电机控制套件 应用笔记:AN13884:使用 RTD AUTOSAR API 的带 S32K344 的三相无传感器 PMSM 电机控制套件 应用笔记:AN13902:使用 MBDT 模块的带 S32K344 的三相无传感器 PMSM 电机控制套件   目录 1. 引言  2. 电机控制 PMSM 示例 3. Model Overview  4. 状态机 5. 电流环(快速环) 6. 速度环(慢速环) 7.开环 8. RGBLED0 切换 9. Update PWMs  10. FreeMASTER 配置 GUI 11. 结论 12. 参考文献 本文内容与 AN13902:《基于 S32K344 的三相无传感器 PMSM 电机控制套件(使用 MBDT 模块)》完全一致 示例模型
查看全文
RT1050のブータブル・イメージの作成 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> ブート時間のテスト – ブータブル・イメージの作成 ブータブル・イメージの構造: ブータブル・イメージは以下で構成されています。 FlexSPI 設定ブロック(FCB) イメージ・ベクトル・テーブル (IVT) ブートデータ デバイス設定データ(DCD) プログラム・イメージ CSF、証明書、署名(これらはオプションで、ハイ・アシュアランス・ブートでのみ必要です) 以下、それぞれについて簡単に説明します。 FlexSPI 設定ブロック(FCB) FCBはFlexSPIの通信の設定を構成します。使用するポートの数、FlexSPIコントローラの動作クロック速度などを設定します。最初に行われるのはこの設定です。それ以外のものはすべてフラッシュ・メモリに保存されているためです。他のものを読み取るために、まずフラッシュを設定する必要があります。 イメージ・ベクトル・テーブル(IVT) IVTは、すべてのものが格納されているアドレスをメモリに伝えるテーブルです。 ブートデータ ブートデータには、メモリの開始アドレスへのポインタが含まれています。 デバイス設定データ(DCD) DCDには、ペリフェラルを設定するための設定データが含まれています。 プログラム・イメージ プログラム・イメージには、アプリケーションに組み込むように記述したコードが含まれています。 CSF、証明書、署名 これらはオプションです。ハイ・アシュアランス・ブートのシーケンスで必要となります。この記事では説明しません。 ブート・イメージの各部分を大まかに示した概略図は次のとおりです。 ブータブルイメージ生成ソフトウェア/ツール: MCUXpresso – MCUXpresso IDEをダウンロードしてください フラッシュローダ – RT1050のページ > ソフトウェアとツール > フラッシュローダからダウンロードします。 このフォルダには、MFGTool、elftosbツール、その他のドキュメントが含まれています。 DCD.binファイル:私が使用したファイルはこちらのドキュメントにあります。 https://community.nxp.com/docs/DOC-340655 ブータブル・イメージ作成の概要 MCUXpressoは、HyperflashおよびQSPI XiP用のブータブル・イメージを作成できますが、SDRAMまたは内部SRAMの場所から、あるいは独自のメモリ・モジュールからブートして実行する場合は、ブータブル・イメージを作成する必要があります。それには、MCUXpressoでSレコードまたはELFイメージを生成し、次にフラッシュローダ・ツール・スイート(elftosbおよびmfgtool)を使用してブータブル・イメージを作成したうえで、ボードにアップロードするブータブル・プログラムを作成します。 以下、一般的なプロセスの全体の流れを説明します。その後のセクションでは、Hyperflash XiP、SDRAM、SRAMのそれぞれについて、より詳細なステップ・バイ・ステップ・ガイドを示します。 MCUXpressoの設定と出力 まずは、MCUXpressoでアプリケーション・コードを準備します。MCUXpressoの [MCU Settings(MCU設定)] 部分のメモリ構成エディタで、起動元に合わせてメモリ割り当てを変更します。必要に応じて、ブート・イメージでdcdを有効にするかどうかをプリプロセッサ設定で指定します。 バイナリ・ユーティリティを使用して、MCUXpressoからSレコード(.s19)ファイルを生成します。 Elftosbツール – .binファイル生成 このツールはフラッシュローダに含まれています。imxコマンドを呼び出すときに、プログラム・イメージを含むSレコード・ファイル、dcd.binファイル(Sレコードに含まれている場合もある)、FCB?、およびbd_file(メモリ構成に応じて提供される)を入力として渡します。elftosbツールは出力として.binファイルを生成します。 Elftosbツール – ブータブル・イメージの生成 続いて、kinetisコマンドを指定してelftosbツールを再度呼び出します。これにより、.binファイルがboot_image.sbファイルに変換されます。 MFGツール 次に、MFGToolを使用してボードのプログラム・イメージを生成し、アップロードします。 そのためには、ボードのSW7をOFF-ON-OFF-ONに設定し、ジャンパをJ1(5-6)からJ1(3-4)に切り替える必要があります。USBケーブルをJ9に接続して、ボードに電力を供給します。次に、ボードをコンピュータに接続し、MFGToolを実行します。[Start(開始)] をクリックすると、イメージがアップロードされます。   この後、ブータブル・イメージがボードにアップロードされ、準備は完了です。 ボードが正常に起動できるように、ピン・ヘッダを必ず元に戻してください。Hyperflashから起動するには、J1(5-6)とSW7をOFF-ON-ON-OFFに設定します。 さて、次のセクションでは、起動したい特定のメモリ位置に応じて、何をすべきかの具体例を詳しく説明いたします。 ブータブル・イメージの生成 – XiP Hyperflash これはMCUXpressoでも実行可能ですが、このプロジェクトの場合は、独自のdcdファイルを使用するために、従来のフラッシュローダ・ツールを使用しました。 MCUXpressoの設定と出力 まず、メモリ構成エディタでメモリ割り当てを変更するために、[Edit project settings(プロジェクト設定の編集)] >> [C/C++ Build(C/C++ビルド)] >> [MCU settings(MCU設定)] >> [Edit(編集)] を開きます。次のように表示されます。 次に、[C/C++ Build(C/C++ビルド)] >> [Settings(設定)] > [MCU C compiler(MCU Cコンパイラ)] > [Preprocessor(プリプロセッサ)] に移動します。使用するdcd.binファイルがある場合は、XIP_boot_header_enableとXIP_boot_header_DCD_enableの両方を0に設定します。ない場合は、これらのフィールドを1に設定します。 [Apply and Close(適用して閉じる)] をクリックします。 デバッグ部分に移動し、[Binary Utilities(バイナリ・ユーティリティ)] をクリックして、MCUXpressoからSレコード(.s19)ファイルを生成します。 [Build(ビルド)] をクリックして、プロジェクトを再ビルドします。 この.s19ファイルをコピーします。 Elftosbツール – .binファイル生成 フラッシュローダ・ツールで、[Tools(ツール)] > [elftosb] > [Win] に移動し、.s19ファイルとdcd.binファイルをこのフォルダにドロップします。 管理者モードでコマンド・プロンプトを起動し、「cd [elftosbディレクトリ]」コマンドを使用して、このフォルダに移動します。 .binファイルを生成するには、次のコマンドを呼び出します。 elftosb.exe -f imx -V -c ../../bd_file/imx10xx/imx-flexspinor-normal-unsigned-dcd.bd -o ivt_flexspi_nor_led_blinky.bin HYPERFLASH_led_blinky.s19 このコマンドは基本的に、imx-flexspinor bdリンカ・ファイルを使用して、内部にdcd.binヘッダを含む.binファイルを生成しています。HYPERFLASH_led_blinky.s19は、MCUXpressoから取得した実際のファイル名に変更する必要があります。 Elftosbツール – ブータブル・イメージの生成 次に、boot_image.sbを生成する必要があります。 続いて、kinetisコマンドを指定してelftosbツールを再度呼び出します。これにより、.binファイルがboot_image.sbファイルに変換されます。 コマンドは次のとおりです。 elftosb.exe -f kinetis -V -c ../../bd_file/imx10xx/program_flexspinor_image_hyperflash.bd -o boot_image.sb ivt_flexspi_nor_led_blinky_nopadding.bin 注:最初に実行したimxコマンドの出力が、このコマンドの入力(ivt_flexspi_nor_led_blinky_nopadding.bin)と一致する必要があります。また、出力はboot_image.sbという名前のままにする必要があります。別の名前ではうまくいきません。 MFGツール 次に、MFGToolを使用してボードのプログラム・イメージを生成し、アップロードします。 そのためには、ボードのSW7をOFF-ON-OFF-ONに設定し、ジャンパをJ1(5-6)からJ1(3-4)に切り替える必要があります。USBケーブルをJ9に接続して、ボードに電力を供給します。次に、ボードをコンピュータに接続し、MFGToolを実行します。[Start(開始)] をクリックすると、イメージがアップロードされます。   最後の手順で作成した boot_image.sb ファイルをコピーしてください。それを Tools > mfgtools-rel > Profiles > MXRT105X > OS Firmware ディレクトリに移動し、ここにドロップしてください。 次に、ボード上のSW7をOFF-ON-OFF-ONに設定し、下部のジャンパを切り替えて、ボードに電源を供給します。次に、USBケーブルをJ9に接続します。これにより、ボードをプログラムできます。 mfgtools-relフォルダに戻り、MFGToolを開きます。[HID-compliant vendor-defined device(HID準拠のベンダ定義デバイス)] と表示されているはずです。表示されない場合は、SW7と右下の電源ピンを再確認します。   [Start(開始)] をクリックします。成功すると次のように表示されます。 ここで言う成功とは、ブータブル・イメージをボードにアップロードできたというだけの意味です。通常はこれで正常に動作します。しかし、後でボードが想定どおりに動作しなかった場合は、プロセッサの他のステップに問題がある可能性があります。正しいリンカ・ファイルを使用していることと、MCUXpressoの設定が正しいことを確認してください。 [Stop(停止)] を押して終了します。 ボードが正常に起動できるように、ピン・ヘッダを必ず元に戻してください。Hyperflashから起動するには、J1(5-6)とSW7をOFF-ON-ON-OFFに設定します。 ブータブルイメージ生成 – SDRAM このガイドは、https://community.nxp.com/docs/DOC-340655の内容に基づいています。そちらにあるファイルをダウンロードし、解凍します。問題はほとんどありませんが、PDFドキュメントの最初のステップだけは少し不明瞭です。 MCUXpressoの設定と出力 まず、MCUXpressoの [MCU Settings(MCU設定)] 部分のメモリ構成エディタで、メモリ割り当てを変更します。次のようになります。 次に、[Settings(設定)] > [MCU C compiler(MCU Cコンパイラ)] > [Preprocessor(プリプロセッサ)] に移動し、XIP_boot_header_enableとXIP_boot_header_DCD_enableの両方を0に設定します。 [Apply and Close(適用して閉じる)] をクリックします。 [C/C++ Build(C/C++ビルド)] >> [Settings(設定)] >> [MCU Linker(MCUリンカ)] >> [Manage linker script(リンカ・スクリプトの管理)] に移動し、[Link application to RAM(アプリケーションをRAMにリンク)] チェックボックスをオンにします。 デバッグ部分に移動し、[Binary Utilities(バイナリ・ユーティリティ)] をクリックして、MCUXpressoからSレコード(.s19)ファイルを生成します。 [Build(ビルド)] をクリックして、プロジェクトを再ビルドします。 コンソールで、メモリの割り当てが正しいかどうかを確認できます。 この.s19ファイルをコピーします。 Elftosbツール – .binファイル生成 フラッシュローダ・ツールで、[Tools(ツール)] > [elftosb] > [Win] に移動し、.s19ファイルとdcd.binファイルをこのフォルダにドロップします。 SDRAMからの起動には別の手順があります。imx-sdram-normal-unsigned-dcd.bdファイル(前述のリンク先にあり)を、[Tools(ツール)] > [bd_file] > [imx10xx] にドラッグします。 管理者モードでコマンド・プロンプトを起動し、「cd [elftosbディレクトリ]」コマンドを使用して、このフォルダに移動します。 .binファイルを生成するには、次のコマンドを呼び出します。 elftosb.exe -f imx -V -c ../../bd_file/imx10xx/imx-sdram-normal-unsigned-dcd.bd -o evkbimxrt1050_led_blinky.bin SDRAM1_led_blinky.s19 このコマンドは基本的に、imx-flexspinor bdリンカ・ファイルを使用して、内部にdcd.binヘッダを含む.binファイルを生成しています。HYPERFLASH_led_blinky.s19は、MCUXpressoから取得した実際のファイル名に変更する必要があります。 Elftosbツール – ブータブル・イメージの生成 次に、boot_image.sbを生成する必要があります。 続いて、kinetisコマンドを指定してelftosbツールを再度呼び出します。これにより、.binファイルがboot_image.sbファイルに変換されます。 コマンドは次のとおりです。 elftosb.exe -f kinetis -V -c ../../bd_file/imx10xx/program_flexspinor_image_hyperflash.bd -o boot_image.sb evkbimxrt1050_led_blinky_nopadding.bin 最初に実行したimxコマンドの出力が、このコマンドの入力と一致する必要があります。また、出力はboot_image.sbという名前のままにする必要があります。別の名前ではうまくいきません。なお、コマンドの中でflexspinor_image_hyperflashと指定していますが、これは間違いではありません。技術的に、まずはHyperflashから起動する必要があることに変わりはなく、その後ですべてをSDRAMにコピーすることになるからです。 boot_image.sbファイルをコピーします。 MFGツール 次に、MFGToolを使用してボードのプログラム・イメージを生成し、アップロードします。 そのためには、ボードのSW7をOFF-ON-OFF-ONに設定し、ジャンパをJ1(5-6)からJ1(3-4)に切り替える必要があります。USBケーブルをJ9に接続して、ボードに電力を供給します。次に、ボードをコンピュータに接続し、MFGToolを実行します。[Start(開始)] をクリックすると、イメージがアップロードされます。   最後の手順で作成した boot_image.sb ファイルをコピーしてください。それを Tools > mfgtools-rel > Profiles > MXRT105X > OS Firmware ディレクトリに移動し、ここにドロップしてください。 次に、ボード上のSW7をOFF-ON-OFF-ONに設定し、下部のジャンパを切り替えて、ボードに電源を供給します。次に、USBケーブルをJ9に接続します。これにより、ボードをプログラムできます。 mfgtools-relフォルダに戻り、MFGToolを開きます。[HID-compliant vendor-defined device(HID準拠のベンダ定義デバイス)] と表示されているはずです。表示されない場合は、SW7と右下の電源ピンを再確認します。 [Start(開始)] をクリックします。成功すると次のように表示されます。 ここで言う成功とは、ブータブル・イメージをボードにアップロードできたというだけの意味です。通常はこれで正常に動作します。しかし、後でボードが想定どおりに動作しなかった場合は、プロセッサの他のステップに問題がある可能性があります。正しいリンカ・ファイルを使用していることと、MCUXpressoの設定が正しいことを確認してください。 [Stop(停止)] を押して終了します。 ボードが正常に起動できるように、ピン・ヘッダを必ず元に戻してください。Hyperflashから起動するには、J1(5-6)とSW7をOFF-ON-ON-OFFに設定します。 ブータブルイメージ生成 – SRAM こちらはアプリケーションノートがなかったため少し厄介でしたが、さほど難しくはありませんでした。 MCUXpressoの設定と出力 まず、MCUXpressoの [MCU Settings(MCU設定)] 部分のメモリ構成エディタで、メモリ割り当てを変更します。次のようになります。すべてをDTC RAMにコピーするようにリンクしています。 次に、[Settings(設定)] > [MCU C compiler(MCU Cコンパイラ)] > [Preprocessor(プリプロセッサ)] に移動し、XIP_boot_header_enableとXIP_boot_header_DCD_enableの両方を0に設定します。 [Apply and Close(適用して閉じる)] をクリックします。 [C/C++ Build(C/C++ビルド)] >> [Settings(設定)] >> [MCU Linker(MCUリンカ)] >> [Manage linker script(リンカ・スクリプトの管理)] に移動し、[Link application to RAM(アプリケーションをRAMにリンク)] チェックボックスをオンにします。   デバッグ部分に移動し、[Binary Utilities(バイナリ・ユーティリティ)] をクリックして、MCUXpressoからSレコード(.s19)ファイルを生成します。 [Build(ビルド)] をクリックして、プロジェクトを再ビルドします。 アプリケーションがSRAMにリンクされていることを、コンソールで次のように確認できます。 この.s19ファイルをコピーします。 Elftosbツール – .binファイル生成 フラッシュローダ・ツールで、[Tools(ツール)] > [elftosb] > [Win] に移動し、.s19ファイルとdcd.binファイルをこのフォルダにドロップします。 管理者モードでコマンド・プロンプトを起動し、「cd [elftosbディレクトリ]」コマンドを使用して、このフォルダに移動します。 DTCM RTAMに固有の手順として、[Tools(ツール)] >> [bd_file] >> [imx10xx] に移動し、imx-dtcm-unsigned-dcd.bdファイルを開いて、ivtOffsetアドレスを0x1000に変更します。SDカード起動のデフォルトは0x400です。 念のために示すと、bdファイルは次のようになります。 .binファイルを生成するには、次のコマンドを呼び出します。 elftosb.exe -f imx -V -c ../../bd_file/imx10xx/imx-dtcm-unsigned-dcd.bd -o evkbimxrt1050_led_blinky.bin SRAM1_led_blinky.s19 このコマンドは基本的に、imx-flexspinor bdリンカ・ファイルを使用して、内部にdcd.binヘッダを含む.binファイルを生成しています。SRAM_led_blinky.s19は、MCUXpressoから取得した実際のファイル名に変更する必要があります。 Elftosbツール – ブータブル・イメージの生成 次に、boot_image.sbを生成する必要があります。 続いて、kinetisコマンドを指定してelftosbツールを再度呼び出します。これにより、.binファイルがboot_image.sbファイルに変換されます。 コマンドは次のとおりです。 elftosb.exe -f kinetis -V -c ../../bd_file/imx10xx/program_flexspinor_image_hyperflash.bd -o boot_image.sb evkbimxrt1050_led_blinky_nopadding.bin 最初に実行したimxコマンドの出力が、このコマンドの入力と一致する必要があります。また、出力はboot_image.sbという名前のままにする必要があります。別の名前ではうまくいきません。なお、コマンドの中でflexspinor_image_hyperflashと指定していますが、これは間違いではありません。技術的に、まずはHyperflashから起動する必要があることに変わりはなく、その後ですべてをSDRAMにコピーすることになるからです。 MFGツール 次に、MFGToolを使用してボードのプログラム・イメージを生成し、アップロードします。 そのためには、ボードのSW7をOFF-ON-OFF-ONに設定し、ジャンパをJ1(5-6)からJ1(3-4)に切り替える必要があります。USBケーブルをJ9に接続して、ボードに電力を供給します。次に、ボードをコンピュータに接続し、MFGToolを実行します。[Start(開始)] をクリックすると、イメージがアップロードされます。 最後の手順で作成した boot_image.sb ファイルをコピーしてください。それを Tools > mfgtools-rel > Profiles > MXRT105X > OS Firmware ディレクトリに移動し、ここにドロップしてください。 次に、ボード上のSW7をOFF-ON-OFF-ONに設定し、下部のジャンパを切り替えて、ボードに電源を供給します。次に、USBケーブルをJ9に接続します。これにより、ボードをプログラムできます。 mfgtools-relフォルダに戻り、MFGToolを開きます。[HID-compliant vendor-defined device(HID準拠のベンダ定義デバイス)] と表示されているはずです。表示されない場合は、SW7と右下の電源ピンを再確認します。 [Start(開始)] をクリックします。成功すると次のように表示されます。 ここで言う成功とは、ブータブル・イメージをボードにアップロードできたというだけの意味です。通常はこれで正常に動作します。しかし、後でボードが想定どおりに動作しなかった場合は、プロセッサの他のステップに問題がある可能性があります。正しいリンカ・ファイルを使用していることと、MCUXpressoの設定が正しいことを確認してください。 [Stop(停止)] を押して終了します。 ボードが正常に起動できるように、ピン・ヘッダを必ず元に戻してください。Hyperflashから起動するには、J1(5-6)とSW7をOFF-ON-ON-OFFに設定します。 ここで言う成功とは、ブータブル・イメージをボードにアップロードできたというだけの意味です。通常はこれで正常に動作します。しかし、後でボードが想定どおりに動作しなかった場合は、プロセッサの他のステップに問題がある可能性があります。正しいリンカ・ファイルを使用していることと、MCUXpressoの設定が正しいことを確認してください。 この後、ブータブル・イメージがボードにアップロードされ、準備は完了です。 i.MXRT 105倍 Re: RT1050のブータブル・イメージの作成 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> この3日間、いろいろ試しましたがうまくいきません。RT1050-EVKBを使用しています。MCUXpressoからのイメージのダウンロードは問題なく成功しました。イメージの作成と、フラッシュへの書き込みもできましたし、DTC RAMやITC RAMにもコピーされます。私はNXP-MCUBootutilityかMCUXpressoセキュア・プロビジョニング・ツールを使用しており、どちらの使用も問題ありません。次に必要なのは、XIPでSDRAMから実行されるイメージを作成することです。見つけた情報をすべて試しましたが、うまくいきません。プロビジョニング・ツールのサンプル・イメージについては、evkbimxrt1050_iled_blinky_ext_FLASHとevkbimxrt1050_iled_blinky_SDRAMを取得して書き込み、実行させることができています。つまりツールセットの問題ではありません。明らかに、私が何かのやり方を間違っているか、何かを抜かしているかです。私のSDKはバージョン2.3です。実にシンプルなガイドに思えるのですが、私が個々の手順で何か見落としているのだと思います。ヒントをいただけますか?手始めに知りたいのは、MCUXpressoを使ってXIPイメージをビルドしダウンロードする手順です。どのコンパイラ定義を設定する必要があるでしょうか。イメージを0x60002000から実行させることと、フラッシュを最上位にする必要があることはわかっています。他に何があるでしょうか。 よろしくお願いいたします。 Larry 編集: 驚きの結末です。他に何があったのか、答えが判明しました。MCUXPresso IDEが最新バージョンになっておらず、そのことを当のIDEが認識していなかったのです!!私は別のプロジェクトでV10.3をこれまで1年使用してきました。私は繰り返しアップデートを確認していましたが、利用可能なアップデートはないという表示が出ていました。このIDEは、バージョン11.1が出ていることを把握していなかったのです。RT1050 SDK v2.7はこのバージョンと連携し、フラッシュ書き込み機能もすべて自動で対応しています!!すごいです!RT1050 SDK2.3は対応していません。 Re: RT1050のブータブル・イメージの作成 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> Adrian、 私の Flashloader ダウンロードには、あなたが使用した「-dcd」bd ファイルが見当たりません。 Re: RT1050のブータブル・イメージの作成 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> なぜ.s19ファイルが必要なのですか。 Re: RT1050のブータブル・イメージの作成 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> このツールをお試しいただくこともできます。このツールを使用すると、ベアイメージをさまざまなブートデバイスに簡単にフラッシュでき、ヘッダー(ivt、boot data...)を気にする必要はありません。 GitHub - JayHeng/nxp-sec-boot-ui: NXP MCU (Kinetis、i.MXRT、LPC) ROM ブートローダーを操作するためのワンストップGUIツールで、これは… Re: RT1050のブータブル・イメージの作成 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 結局、私のフラッシュローダに問題があることがわかりました。 今日イメージの作成に成功し、それをフラッシュに書き込んで、SDRAMで実行できました。 その後、フラッシュローダなしで、MCUXpressoでバイナリ・イメージを作成することもできました。Segger Ozoneで正しい場所にロードする必要がありますが、すべて正常に動作します。 Manuelさん、もしフィレンツェにいらっしゃったら、ビールを1杯おごりますよ 😉 Giuseppe Re: RT1050のブータブル・イメージの作成 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> こんにちは、マヌエルさん。この興味深い文書をありがとうございます。 残念ながら、バイナリを作成しようとするとelftosbがクラッシュします。S19ファイルのアドレスは正しいのですが、「セクション0x0」を探し続けます。これはSDRAMと内部RAMバージョンの両方で発生します。 ありがとうございます Giuseppe Re: RT1050のブータブル・イメージの作成 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> こんにちは。非常に興味深いドキュメントです。 SDやQSPIからブートした場合に、SDRAMからソフトウェアを実行することも可能ですか? この手順はRT1020でも使えますか?それともRT1050専用ですか?
查看全文
BTCU機能に影響を与えないeMIOSトリガーの動的更新 BTCUとeMIOS[S32k358を使用]に関する機能的な質問があります。eMIOSを使用してBTCUトリガーを設定し、各PWM立ち上がりエッジのADC値をキャプチャしましたが、期待どおりに機能します。しかし、プログラム内で eMIOS 周波数を動的に変更すると、BTCU のトリガーが停止し、BTCU 通知機能が呼び出されません。BTCUトリガーADCの機能を維持しながら、eMIOS周波数を更新する方法はありますか?   これを達成するのを手伝ってもらえますか?BTCUの機能やコールバックを呼び出す機能に影響を与えずに、コード内のトリガーを動的に変更する必要があります。 Re:BTCU機能に影響を与えない動的eMIOSトリガー更新 Hi, あなたがそれを走らせたのを見てよかったです。 さらにコメントするには、コードでチャネルを指定します これはどうやらあなたがお持ちのeMIOS設定には対応していないようです。 BR, Petr Re:BTCU機能に影響を与えない動的eMIOSトリガー更新 PWM_CHANNEL は 22 で、EMIOS は 0 です。PWMPeriod を 32767 に設定するか、既定値を含む他の値に設定するかに関係なく、変更すると BCTU のトリガーが停止することがわかりました。 根本的な原因はわかりませんが、LCU から供給される TRIGMUX を介して BCTU トリガーを追加することで回避策を実装しました。このトリガーは eMIOS 内部バス から供給され、デッド タイムが含まれているため、トリガーがシフトされます。この構成では、周波数が変化してもシステムは動作します。 ご意見をいただければ幸いです。しかし、私は主要な問題を完全にデバッグすることができませんでした。感謝! Re:BTCU機能に影響を与えない動的eMIOSトリガー更新 Hi, トリガーを停止したときのPWM_CHANNEL、PWM_BCTU、およびPWMPeriodの値は何ですか。 PWM_BUS_CHANNELが 22 であるとします。 関数によって返されたステータスを確認しましたか? BR, Petr Re:BTCU機能に影響を与えない動的eMIOSトリガー更新 はい、eMIOS PWMをテストしてパルスを確認しましたが、問題なく動作しています。ただし、次の設定に示すように、BCTU はトリガーされません。 重要な観察事項の 1 つは、内部バスを使用すると、すべてが正常に機能し、問題なく周期を更新できるということです。しかし、eMIOSでは位相シフトも必要ですが、これは内部バスでは不可能なため、この問題に直面しています。 私は以前にも同様のアプローチを使用して、バスを介してeMIOSの周波数を変更し、PWMでさまざまな周波数と位相シフトを生成しました。 Re:BTCU機能に影響を与えない動的eMIOSトリガー更新 Hi, 選択したカウンターバス、MCBモードで実行されているチャネルのEmios_Mcl_Ip_SetCounterBusPeriod設定期間、最も一般的です。チャネルAレジスタを書き込むだけです。期待値 (>1) の場合、新しい値は次の期間に更新されます。 これは問題を引き起こさないでしょう、このチャネルはおそらくBCTUをトリガーしません。別のチャネルが使用され、このカウンター バスから実行されている場合、そのデューティ サイクルは周期の値を超えないようにする必要があります。 OPWFMB/OPWFM で実行されているチャネルの設定期間Emios_Pwm_Ip_SetPeriod、グローバルまたはローカルのカウンター バスから実行されていないチャネルは、内部カウンタを使用します。 では、BCTUをトリガーするチャネルの更新時にPWMが生成されているのがわかりますか?トリガーされたコンバージョンを完了できるほど期間が長いですか? BR, Petr Re:BTCU機能に影響を与えない動的eMIOSトリガー更新 ここでeMIOSを更新しています。強調表示された行をコメントアウトすると、その行は機能し、BTCU関数に移行します。ただし、コメントを外して頻度を更新すると、機能しません。   Re:BTCU機能に影響を与えない動的eMIOSトリガー更新 Hi, 特定のコード スニペットと BCTU 設定は正常に見えますが、eMIOS がどのように構成され、チャネルの PWM 周波数/デューティ/トリガーが変更されたかについての情報は提供されません。 eMIOS チャネル フラグは BCTU トリガーのソースであるため、eMIOS チャネルでフラグが生成されている限り、BCTU がトリガーされます。 BR, Petr
查看全文
S32K344-DCF示例 你好 有没有关于 DCF 的示例程序或详细文档? 顺祝商祺! Simon 回复:S32K344-DCF示例 您好@PetrS ,您是否有关于在交付给 TIER1 时已存在于 uC 中的默认 DCF 记录的描述? 请参阅附件,它们未出现在 DCF 客户端 (xls) 中 非常感谢,Ovidiu 回复:S32K344-DCF示例 Hi, 1.是的,只需继续写入未编程的地址,在您的情况下为0x1B000770。 2. 正如您所写,奇偶校验位于控制字的位 1 中。使用的奇偶校验方案是偶校验。因此,数据字和奇偶校验字段中 1 的个数需要为偶数。因此,对于数据0x00000100,应该设置奇偶校验,因此控制字将为 0x00100006。 BR, Petr 回复:S32K344-DCF示例 Hi @PetrS  谢谢你的回答 1.在我使用的EVB Flash中,地址0x1B000768处已经有一条记录。此记录用于配置 dcf_client_utest_misc。 如果我想以不同的方式配置 dcf_client_utest_misc,我可以继续写入后面未编程的地址吗?例如,写入 0x00000100 和 0x00100004。 3.请问Parity在哪儿,是DCF Control Word的bit 1吗?因为RM的描述让我很困惑。 顺祝商祺! Simon 回复:S32K344-DCF示例 Hi, 1. DCF 记录是 OTP 中的一些数据,这些数据只能编程一次,不可擦除,您只需在最后一个记录后添加新记录即可。您需要确定 UTEST 闪存中的目标程序地址。DCF记录从0x1B000700开始。找出第一个由 0xFF 填充的双字。这是目标程序地址:“0x1B000768” 对于每次新的写入,这个地址肯定会增加。 2. 是的,示例中的描述被交换了 3. 应正确计算并相应设置奇偶校验,但必须始终清除停止位。否则,该记录将被视为最后一条,而下一条将被忽略。 BR, Petr 回复:S32K344-DCF示例 你好@PetrS 感谢您的回复,我对该示例有以下疑问 1.为什么dcf_client_utest_misc数据写入的Flash地址是0x1B000768?根据RM中S32K3xx_DCF_clients.xlsx的描述,UTEST-DCF记录的起始地址不是0x1B000708吗?那么其他DCF客户端的写入地址是什么呢? 2. 如下图所示,DCF Control Word 和 DCF Data Word 的描述是不是颠倒了? DCF Control Word 的值应该是 0x00100004,对吗? 3.如果要设置奇偶校验位和停止位,应该分别设置为0x00100006和0x00100005吗? 顺祝商祺! Simon 回复:S32K344-DCF示例 Hi, 有关更多信息,请参阅第 37 章设备配置格式 (DCF) 记录和附加到设备 RM 的 S32K3xx_DCF_clients excel 文件。 您可以参考下面的示例了解如何使用 RTD 代码编程 DCF 记录; https://community.nxp.com/t5/S32K-Knowledge-Base/Example-S32K344-decouple-RTD400-Ip-C40-DS35-v1/ta-p/1866329 BR, Petr
查看全文
Yocto 项目:从 Linux 主机读取 SD 卡镜像中的分区 截至 2015 年 4 月撰写本文时,通过 Yocto 项目构建生成的默认 SD 卡镜像,其所有软件镜像都经过妥善对齐,可直接用于制作 SD 卡。 2020 年 10 月 7 日更新:SD 卡镜像名称已更新,Yocto 项目默认生成的镜像以 .wic 为后缀。.sdcard 和 .wic 文件的处理流程相同。 图像中有两个分区: 一个 W95 FAT32 (LBA) 分区,包含 Linux zImage 以及各种设备树二进制 (dtb) 文件 一个Linux根文件系统。 每个分区都可以从您的 Linux 主机计算机挂载,然后您可以读取或写入分区内容。 以下步骤基于 Yocto 项目版本 L3.14.28_1.0.0_GA,针对 imx6sxsabresd 机器的 core-image-base 配方。 镜像名称:core-image-base-imx6sxsabresd.sdcard 运行 fdisk 命令查看镜像内容: $ fdisk -l core-image-base-imx6sxsabresd.sdcard Disk core-image-base-imx6sxsabresd.sdcard: 100 MB, 100663296 bytes 4 heads, 32 sectors/track, 1536 cylinders, total 196608 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x00074663 Device Boot Start End Blocks Id System core-image-base-imx6sxsabresd.sdcard1 8192 24575 8192 c W95 FAT32 (LBA) core-image-base-imx6sxsabresd.sdcard2 24576 188415 81920 83 Linux 确定每个分区在 SD 卡镜像中的起始字节偏移量: core-image-base-imx6sxsabresd.sdcard1 从扇区 8192 开始。一个扇区单位为 512 字节。           8192 * 512 = 4194304 core-image-base-imx6sxsabresd.sdcard2 从扇区 24576 开始。 24576 * 512 = 12582912 挂载分区 首先创建挂载点: $ sudo mkdir /mnt/{mp1,mp2} sdcard1分区 $ sudo mount -o loop,offset=4194304 core-image-base-imx6sxsabresd.sdcard /mnt/mp1 NOTE: An alternate method for determining the offset, see below: $ sudo mount -o loop,offset=$((512 * 8192)) core-image-base-imx6sxsabresd.sdcard /mnt/mp1 sdcard2 分区 $ sudo mount -o loop,offset=12582912 core-image-base-imx6sxsabresd.sdcard /mnt/mp2 查看每个已挂载分区的内容 $ ls /mnt/mp1 imx6sx-sdb.dtb imx6sx-sdb-lcdif1.dtb imx6sx-sdb-reva.dtb imx6sx-sdb-sai.dtb imx6sx-sdb-emmc.dtb imx6sx-sdb-m4.dtb imx6sx-sdb-reva-ldo.dtb zImage $ ls /mnt/mp2 bin boot dev etc home lib lost+found media mnt proc run sbin sys tmp usr var 操作完成后,卸载并删除挂载点 $ sudo umount /mnt/{mp1,mp2} $ sudo rm /mnt/{mp1,mp2}
查看全文
CANバスを介して通信すること 1. はじめに これは、ビギナーズ・ガイド・シリーズの第4回目の記事で、MR-CANHUBK344 評価ボードを使用して、CANバスを介してCANメッセージを送受信できるようにCANペリフェラルを構成する方法を紹介することを目的としています。 MR-CANHUBK344ボードの詳細や、MBDTを使用してMR-CANHUBK344ボード上でSimulink ® モデルを実行するステップバイステップの手順については、シリーズの最初の記事「MR-CANHUBK344でのデジタル入力/出力の操作」を確認してください。 この記事のアプリケーションは、デジタル入力とアナログ入力を読み取り、それらをCANバスを介して1つのCANインスタンスから別のCANインスタンスに送信する前に処理し、受信したメッセージに基づいてデジタル出力とアナログ出力を制御することにより構成されています。 1.1.追加の必須ソフトウェア 最初の記事でご紹介した要件に加え、この記事で開発するアプリケーションには、MathWorksのVehicle Network Toolbox TM が必要です。 1.2.オプションのハードウェア この記事では、CANバスとやりとりを行えるデバイスを使用して、CANバスを介して送信されるメッセージを紹介します。使用している特定のモデルは、PCAN-USB Pro FDです。 2. CAN設定 この章では、ボードのコンポーネントが相互に正しく通信を行うために、構成プロジェクトで変更しなければならない点に焦点を当てます。DIO、ADC、PWM の設定については前回の記事で説明しましたので、今回は主にCAN関連の設定に焦点を当てます。 2.1.ハードウェアの接続 MR-CANHUBK344 ボードには6 つの CAN インスタンスがあり、その中に 3 つの異なるトランシーバーがあります。CAN0 と CAN1 は TJA1443ATK を使用し、CAN2 と CAN3 は TJA1463ATK を使用し、CAN4 と CAN5 は TJA1153 を使用します。各CANインスタンスには、デイジーチェーン配線を可能にするために、互いに配線された2つの同一のコネクタがあり、AとBのラベルが付いています。 この記事では、CAN0とCAN1のインスタンス間の通信に焦点を当てます。 注意:CANバスは通常、両端に60Ωの終端抵抗が必要です。これは、付属のCAN Termボードのいずれかを使用して行うことができます。 CANインスタンスが適切に動作するためには、未使用のコネクタ(ある場合)は、MR-CANHUBK344パッケージに同梱されているCAN Termボードに接続する必要があります。 以下に、CAN0インスタンスがトランシーバーに接続され、それらの間で信号がどのようにルーティングされるかを示す回路図があります。 2.2.ピンの構成 CANインスタンスのピンは、回路図内のコンポーネント名を検索することで見つけることができます。 この記事の目的のために、以下に必要なピンを抽出しました。_RX ピンと _TX ピンは CAN インスタンスに直接リンクされていますが、_ERRN、_STB、および _EN ピンは、上の回路図に示すように、CAN インスタンスに関連付けられたトランシーバーに対応しています。 ピンの構成を開始するには、S32 Configuration Tools内のPins Toolを開く必要があります。モデルの構成プロジェクトをすばやく開くには、MBDTブロックをダブルクリックして表示されるウィンドウからConfigure(構成)ボタンをクリックします。ソフトウェアが開いたら、Pin(ピン)ボタンをクリックすると、Pins Toolが開きます。 Pins Tool内では、Pinsタブと呼ばれる左上のウィンドウに焦点を当てます。 まず、検索バーに名前を入力して、追加しようとしているピンが構成にすでに存在するかどうかを確認します。 ここでは、この目的で他のピンが構成されていないことがわかります(左側のボックスに緑色のチェックマークがないためです)。 これは、構成する12個のピンごとに実行する必要があります。このプロセスは、最初の記事「MR-CANHUBK344でのデジタル入出力の操作」で詳しく紹介されています。 ここでは、ピンがすでに存在するケースを説明します。古い構成を削除するために実行すべきステップは、緑色のチェックマークをクリックし、ポップアップ・ウィンドウで現在選択されているオプションのチェックを外すことです。 すべてのピンを確認した後、構成したいピンの追加を開始できます。 注意:CAN_RX、CAN_ERRNは入力であり、CAN_TX、CAN_STB、CAN_ENは出力です。CAN_STB と CAN_ENは出力です。なぜなら、トランシーバーを通常の動作モードに切り替えて初期化するために、これらに適切な値を設定するからです。一方、CAN_ERRNは入力です。これは、トランシーバーの初期化時に発生する可能性のある問題をMCUに通知するために使用されます。 これを行うには、検索バーにピンの値を入力します。例として、構成しているピンの一部を見てみましょう:LED_CAN0ピンは、CANコネクタの近くに配置された赤色のLEDに接続されています。このLEDは、ボード上の他のLEDと同様に、CANとは別に使用されます。また、他のLEDと同様に逆論理を共有しています。 対応する値はPTC18であり、これをフィルターに入力します。その後、Identifier(識別子)とLabel(ラベル)のフィールドにピンの名前を入力します。次に、左側のチェックマークをクリックし、表示されたウィンドウで適切なオプションを選択します。ここでは、LED用にSIUL2:gpio,82オプションを選択します。出力であるLEDを構成するため、ピンの方向を指定するウィンドウでOutput(出力)オプションを選択します。 他のピンの場合もプロセスは同様ですが、CAN_RXピンとCAN_TXピンを構成する際には、使用可能な信号のリストから別の信号を選択する必要があることに注意してください。設定しているピンの違いにより、CAN_ERRN、CAN_EN、CAN_STB は入力/出力として SIUL2 周辺機器に接続されており、CAN_RX と CAN_TX はそれぞれの CAN 周辺機器に接続されています。CAN0_RXピンの見え方は次のとおりです: これは、構成後のCAN0およびCAN1インスタンスの信号の様子です。 信号を同様に表示するには、下部のウィンドウのRouting Details(詳細のルーティング)という検索バーに「CAN」と入力してください。 次に、強調表示されたボタンをクリックしてPeripherals Tool(ペリフェラル・ツール)に戻る必要があります。 2.3.コンポーネントの構成 2.3.1.CanController CAN インスタンスの設定を開始するには、まず Can_43_FlexCAN コンポーネントを開き、CanConfigSet パネル内の CanController タブに移動します。 ここでは、CAN0とCAN1のインスタンスに対応する2つのCANコントローラを構成します。 CanControllerセクションは、アプリケーションの要件に応じてCANコントローラのインスタンスを構成するために必要なすべての設定を提供します。他のものよりも頻繁にやり取りすることが予期されているものもあるため、これらが何を行うのかを説明することに焦点を当てています。 Name(名前)フィールドは、コントローラに関連づけられた名前を管理し、他のメニューでコントローラを参照するために使用されます。 Can Hardware Channel(CANハードウェア・チャネル)は、現在のコントローラに接続されている物理的なCANインスタンスを制御します。 Can Controller Activation(Canコントローラの有効化)チェックボックスをオンにすると、Canコントローラが有効になります。それがないと、コントローラは動作しません。 CAN Rx/Tx Processing Type(CAN Rx/Tx処理タイプ)は、ポーリングに設定されている間、PDU(プロトコル・データ・ユニット)イベントを処理するために、CAN_MainFunction_Read()およびCAN_MainFunction_Write()を通じて読み取りおよび書き込み操作を有効化/無効化します。パラメータがPOLLING(ポーリング)またはMIXED(ミックス)に設定されている場合、記載された機能はRX Indication(RX表示)またはTX Confirmation(TX確認)のためにポーリングを行います。パラメータがMIXED(ミックス)に設定されている場合、属性CanHardwareObjectUsesPollingがtrue(真)に設定されているハードウェア・オブジェクトのみが影響を受けます。あるいは、パラメータがINTERRUPTに設定されている場合、 Can FD ISO は、コントローラでフレキシブルデータレート機能が有効かどうかを制御します。この例では、CANインスタンス間の通信にCan FDプロトコルを使用するため、これが確認されます。 Can Controller Default Baudrate(CANコントローラのデフォルト・ボーレート)フィールドは、コントローラに割り当てるボーレート構成を選択する役割を担っています。ボーレートの構成は、次の画面に表示されます。 CanCpuClockRefを使用すると、基準クロックを選択できます。CANペリフェラルには、FLEXCAN_PE_CLK0_2とFLEXCAN_PE_CLK3_5の2つのクロックがあり、それぞれCAN0、CAN1、CAN2とCAN3、CAN4、CAN5をカバーしています。これらのクロックはMcuコンポーネント内で構成できます。次の章でこれが示されます。 「Name」フィールドは、前の画面の「Can Controller Default Baudrate」フィールドで選択するために使用されます。 Can Automatic Time Segments Calculation(Can自動タイムセグメント計算)は、ビットレートとCanコントローラのプリスケーラに応じて、Canプロパゲーション・セグメント、Canフェーズ・セグメント1、およびCanフェーズ・セグメント2を自動的に設定するために使用できます。 Can Controller Prescaler (Canコントローラプリスケーラ)は、選択したクロックに基づいて、コントローラのプリスケーラを設定します。 Can Controller BaudRate (Kbps)(Canコントローラのボーレート(Kbps))はデータ転送速度を制御します。 Can Propagation Segment(Canプロパゲーション・セグメント)、Can Phase Segment 1(Canフェーズ・セグメント1)、およびCan Phase Segment 2(Canフェーズ・セグメント2)を含む次のセクションでは、CAN転送のタイミングを構成できます。 最後に、下部のセクションで、Can FD Controller Baudrate(Can FDコントローラ・ボーレート)、Can FD Propagation Segment(Can FDプロパゲーション・セグメント)、Can FD Phase Segment 1(Can FDフェーズ・セグメント1)、Can FD Phase Segment 2(Can FDフェーズ・セグメント2)、Can FD Resynch Jump Width(Can FD再同期ジャンプ幅)、Can FD Prescaler (Can FDプレスケータ)を変更することにより、FD(Flexible Data-Rate)プロトコルのタイミングを構成できます。これらは、以前の設定のFD相当として見なすことができます。 最初のセクションでは、現在のCanコントローラに関連づけられているCanRamBlockを構成することができます。CANコントローラのCAN RAMには、PDUバッファとして定義されたCANハードウェア・オブジェクトが含まれています。CAN RAMブロックは、異なるサイズ構成でメッセージ・バッファを保存できます。 S32K3XXリファレンス・マニュアルによると、RAMブロックには8バイトのメッセージを32件、16バイトのメッセージを21件、32バイトのメッセージを12件、または64バイトのメッセージを7件、保存できます。 第2セクションCanRxFifoでは、RX Fifoを追加または削除できます。S32K3XXリファレンス・マニュアルによると、Enhanced RX FIFOを使用できるのはCAN0のみです。したがって、別のCANインスタンスとFDプロトコルを使用している場合、CanLegacyFifoとFDプロトコルの非互換性のためにCanRxFifoを無効にする必要があります。 この記事のアプリケーションには、相互に通信する2つのCANインスタンスが含まれているため、既存のCANコントローラに加えて、別のCANコントローラをセットアップする必要があります。 2番目のCanコントローラの構成を確実に始めるには、現在のコントローラの構成をコピーして新しいものに貼り付けてください。 上記の手順を完了すると、2つの同一のCanコントローラができあがり、アイテムが重複しているために競合が発生します。これを解決するには、2番目のCanコントローラの詳細を入力してください。 この場合、Name(名前)、Can Hardware Channel(Canハードウェア・チャネル)、Can Controller ID(CanコントローラID)(単にインクリメントする必要があります)、およびCan Controller Default Baudrate(Canコントローラのデフォルト・ボーレート)(Name(名前)フィールドを変更すると、ドロップダウン・リストに正しいボーレートが表示されます)を変更するだけです。 この新しく作成された Can コントローラで変更する必要がある最後の設定は、CAN1 には Enhanced Fifo 機能がなく、同時に FD プロトコルを使用しているため、CanRxFifo を削除することです。 2.3.2。CanHardwareObject 次のステップは、CanConfigSet メニュー内の CanHardwareObject タブで Can Hardware Objects を設定することです。 前のサブチャプターと同様の方法で、使用できるオプションの説明に焦点を当てます。 まず、一般的なルールとして、RXオブジェクトはオブジェクト・リスト内のTXオブジェクトの前に配置する必要があります。したがって、最も低いTXオブジェクトのID以上のIDのあるRXオブジェクトは存在しないはずです。 名前フィールドは、MBDTブロック内に表示されるハードウェアオブジェクトに関連付けられた名前を制御します。 Can ID メッセージタイプは、CAN メッセージの ID タイプが拡張、混合、または標準であるかを制御します。 Can Object ID(CanオブジェクトID)はハードウェア・オブジェクトの識別子として機能します。0から始まり、空白や欠落なく続ける必要があります。 Can Object Type(Can Object Type)は、ハードウェア・オブジェクトがCANメッセージの送受信に使用されるかどうかを制御します。 CANコントローラー参照は、このオブジェクトがどのCANコントローラーに設定されているかを選択します。 Can Hw Object Countは、ハードウェアFIFO内の要素数を定義します。 CanHwFilterはメッセージをフィルタリングするために使用されます。 Can Hw Filter Mask (Canハードウェア・フィルター・マスク)はフィルターのどの部分をアクティブにするかを特定します。10進数536870911を2進数に変換すると11111111111111111111111111111(29桁)です。これは、拡張ID形式が29ビットであるため、マスクがフィルター全体を有効にしていることを意味します。 Can Hw フィルターコードは、フィルターマスクに基づいてメッセージと比較されるIDです。 画像の例を見てみましょう: フィルター・コード: 00000000000000000001111110000(10進数で1008) フィルター・マスク:11111111111111111111111111111 許可されるID:00000000000000000001111110000(10進数で1008) これは、フィルターが拡張ID 1008からのメッセージのみを許可することを意味します。 フィルターに複数の値を許可したい場合は、フィルター・マスクを変更して、すべてのビットがフィルター・コードと等しいかどうかをフィルターがチェックしないようにする必要があります。 別の例: フィルター・コード:00000000000000000001111110000(10進数で1008) フィルターマスク:1111111111111111111111111111 0許可されたID:00000000000000000001111110000、                      00000000000000000001111110001 (10進数で1008と1009) この場合、フィルター・マスクはフィルター・コードと異なる最後のビットを許可します。 すでに存在するCanハードウェア・オブジェクトはCanController_0に対して適切に構成されているため、変更を行う必要はありません。 しかし、CAN1がCAN0インスタンスと通信できるようにするためには、TX(送信)ハードウェアオブジェクトを追加する必要があります。 それを行うには、強調表示された「+」ボタンをクリックし、それに応じてオブジェクトを設定してください。代替案として、CanHardwareObject_Can0_Tx_Interruptから構成をコピーし、CAN1に関連するフィールドのみを変更することができます。 これは、正しいコントローラーを反映するようにNameを変更し、Can Object IDを更新し、Can Object TypeがTRANSMITに設定されていることを確認し、Can Controller ReferenceをCanController1を指すように変更することを意味します。 これらの構成手順を完了すると、CAN0はメッセージの受信と送信の両方を行うように設定され、CAN1はメッセージの送信のみを行うように設定されます。 2.4.CanIfの構成 CANインターフェースは、低レベルのCANドライバーとAUTOSARスタックの上位通信サービス層の間にあります。CANトランシーバーやCANコントローラなどのさまざまな CANハードウェア・デバイス・タイプとやりとりする手段を提供します。 次に、新しく作成されたCanコントローラ(CAN1用)をCanInterfaceのCanIfCtrlDrvCfgメニュー内のCanIfCtrlCfgセクションに追加する必要があります。 新しい CanIfCtrlCfg 要素を追加するには、+ ボタンを押してから、CanIfCtrlId フィールドを更新し、CanIfCtrlCanCtrlRef に対して適切な Can Controller を選択する必要があります。 2.5.クロック構成(MCU) CANインスタンスを正しく機能させるためには、McuコンポーネントのMcuModuleConfiguration内のMcuModeSettingsConfタブでクロックを有効にする必要があります。 このページに移動したら、下にスクロールして、FlexCANインスタンスに対応するクロックが有効になっていることを確認する必要があります。デフォルトでは、現在の構成で有効になっていますが、CANペリフェラルにはクロックが必要であることを忘れないことが重要です。 一連のCanコントローラの基準クロックCanCpuClockRefを変更する場合は、McuClockSettingsConfig > McuClockReferencePointで確認することができます。 2.6.割り込みの構成(プラットフォーム) 設定ツールの最後のステップは、このモデルで使用しているCANインスタンスの割り込みを設定し、割り込みベースのブロックを使用できるようにすることです。それを行うには、Peripherals Toolの左側にあるPlatformボタンをクリックして、プラットフォームコンポーネントに移動します。 その後、Interrupt Controller(割り込みコントローラ)タブに移動する必要があります。ここで、現在構成されているすべての割り込みを確認できます。 CANインスタンスを構成するには、構成するFlexCANインスタンスが表示されるまでスクロールしてください。この記事では、CAN0インスタンスとCAN1インスタンスを使用するため、これら2つのインスタンスを構成します。 FlexCAN割り込みに関しては、FlexCAN0_0には9つの一般的な割り込みリクエストが含まれ、FlexCAN0_1~FlexCAN0_3インスタンスには96のメッセージバッファ割り込みが含まれます。割り込みマッピングの詳細については、リファレンス・マニュアルS32K3XXRM内の添付ファイルS32K3xx_interrupt_map.xlsxを参照してください。 ご覧のとおり、そのうちの1つはすでに構成されているため、FlexCAN1インスタンスを次のように構成するだけで済みます: 2.7.Dioの構成 以前に構成した入力/出力ピンも、第2.3章と同様に、Dioコンポーネントで構成する必要があります。最初の記事MR-CANHUBK344のデジタル入力/出力の操作を参照してください。 現在、Dioコンポーネントの内部で、後でモデル内でトランシーバーを有効にするために使用する入出力ピンを構成しています。 プロセスを簡単に説明すると、作業中の構成と一致しないデフォルトのピンを削除する必要があります。この状況では、DioPort PTC_HからCanController_0_EN、CanController_0_STB、CanController_0_ERRN チャネルを削除することを意味します。 その後、以前に設定した入力/出力ピンを追加します。 2.8.Uart、FreeMASTER、Adc、およびPwmの構成 この記事のアプリケーションでは、前回の記事で構成された方法で、AdcおよびPwmコンポーネントとFreeMASTER機能を使用します。 UartとFreeMASTERの構成方法の詳細については、2番目の記事UART経由でデータを送信し、FreeMASTERで信号を監視」を参照してください。 AdcとPwmの構成については、このシリーズの3番目の記事ADCとPWMによるLEDの強度の制御でステップバイステップの手順を確認できます。 これらのコンポーネントの場合、参照記事で説明されているセットアップと違いはありません。 3. CANモデルの概要 この記事のアプリケーションの目的は、以前のコンポーネントを1つの例に組み込むことです。このアプリケーションは、ADCポテンショメータとUSER_SW2ボタンの2つの入力からデータを収集し、それを処理してパッケージ化し、CANバスを介して送信することで構成されています。これにより、他のCANインスタンスがデータを受信し、2つの出力を制御できるようになります。2つの出力は、USER_SW2ボタンの押下に応じて点灯する青色LEDと、ポテンショメータの回転に基づいて強度が変化する赤色LEDです。 次の図は、このアプリケーションのフローをよりよく理解するためのものです。 さて、モデルを小さな部分に分解してみましょう。 左上から始めますが、モデルはいくつかの変数を使用します。これらは、目的に基づいてグループ化されています。例えば、ADCのChannel1変数は、ADCから読み取った値を保持する責任があります。同様に、CANインスタンスの場合、変数Dataと変数Length は、CANバスで受信したメッセージを表します。 最後のパネルは最も重要なもので、CANメッセージが展開された直後のDioペリフェラルおよび Aioペリフェラルの値を表します。 初期化セクションに進み、ここでコンポーネントを準備するために必要な操作を実行します。この特定のケースでは、2つのCANトランシーバーを初期化するために、その入力の2つをHIGHに設定します。 初期化サブシステムでは、結果バッファがADC変換に対して設定され、グループ通知が有効化されているため、グループの変換が完了すると、構成されたADCコールバックが実行されます。 最後に、このボードではLEDに反転ロジックが使用されているため、ボードのLEDをオフにします。つまり、通常はボードと一緒にLEDもオンになります。 FreeMASTER Config ブロックは、このプロジェクトで FreeMASTER 機能を有効にするために使用されます。 次に進みますが、モデルのアクティブな部分、つまり各ステップを実行し、ADCのグループ変換を開始する部分について説明する前に、もう1つ説明すべきブロックがあります。変換が完了すると、ADCのハードウェア割り込みがトリガーされ、ハードウェア割り込みコールバック・ブロックにリンクされているサブシステムがADC信号を出力します。 CAN Packブロックは、ポテンショメータの回転量に応じて0Vから3.3Vの電圧を表す浮動小数点数を受け入れるように構成されているため、単一データ型への変換が行われます。 指定どおり、入力であるAioとDioからデータを収集することから始めます。Aioの場合、ADCによって読み取られた電圧を表すために値をスケーリングします。 データをパッケージ化し、転送後に解釈できるように、DBCファイルを使用しています。DBCはCANデータベース・ファイルであり、CANメッセージを通じてどのような信号が保存され送信されるかを記述します。 その後、データは VNT パッキングブロック(VNT は Vehicle Network Toolbox TM の略)に送信されます。CAN PACK ブロックを開くと、DBC ファイルで設定された信号が適切に解析され、ブロックがそれらを入力として期待していることがわかります。 ADC値は0V~3.3Vの電圧を表す32ビット変数になりますが、Dio変数はボタンが押されているかどうかを表す1ビットのみです。合計で、変数は5バイトを占め、これがメッセージの長さになります。 次のブロックであるCAN Unpackは、CANトランスミッション・ブロックによって送信される生データをCANフレームから抽出するために使用されます。 Can_Writeは、Canブロックで利用可能な機能の1つであり、その名前が示すように、CANバスを介してCANメッセージを送信する役割を担っています。 2番目のドロップダウン・アイテムでは、どのCanHardwareObjectがデータを送信するかをユーザーが選択できます。ここに表示されるアイテムは、2.3.2セクションのメニューでTRANSMIT(送信)として構成されたアイテムです。このアプリケーションでは、データは割り込みベースのハードウェア・オブジェクトを使用して送信されています。 CAN FD Message(CAN FD メッセージ)チェックボックスは、送信するメッセージがCAN FDプロトコルを使用しているかどうかを選択し、Extended ID CAN Message(拡張 ID CAN メッセージ)は ID の形式を選択します。 これらは、構成ソフトウェアで行われた設定を反映する必要があります。 アプリケーションの後半は、CAN1 から送信されたメッセージを CAN0 が受信することから始まります。 この仕組みについて注意すべき重要な点の1つは、メッセージの受信は、ハードウェア割り込みコールバックをトリガーするCANif_RxIndicationに基づいているということです。その後、データにアクセスすることができます。 Hardware_Interrupt_Handler ブロックで Interrupt Group(割り込みグループ)としてCanを選択すると、次のCan関連のコールバックの一覧が表示されます。 このアプリケーションには、受信するCANメッセージを読み取る機能が必要なため、CanIf_RxIndicationがその目的で使用されます。CanIf_RxIndicationは、割り込みベースの実行のあるコールバックで、CANフレームが受信されるたびに呼び出されます。 CANメッセージ内から実際の値を取得する前に、もう一度 CAN Packブロックと Unpackブロックを使用してデータを抽出し、DBCファイルに従って複合する必要があります。 値が得られたので、ADCの値を使用して赤色LEDの明るさを比例的に調整し、DIOの値を使用して青色LEDのオン/オフを切り替えます。 モデルを検証するには、FreeMASTERツールを使用して値を読み取り、グラフ化することができます。ご覧のとおり、受信したメッセージは、Adc値とDio値を表す5バイトのデータで構成されています。 以下では、FreeMASTERソフトウェアでリアルタイムに作成されたグラフ上の変数の表現を確認できます。赤色の信号は、0Vから3.3Vの間にあるポテンショメータから読み取られた値を表します。青色の信号はボタンの状態に対応します。ボタンが押されている場合、青色の信号は1になります。それ以外の場合、信号は0になります。 ウィンドウの下部には、スクリーン・キャプチャが行われた時点の信号の値が表示されます。グラフの赤色と青色の信号に対応するADC_Received変数とDio_Received変数とは別に、他の変数は最後に受信したCANメッセージの詳細を示します。  CANメッセージを読み取ることができるデバイスを接続すると、CANバスを介してメッセージが送信されるのを確認することもできます。ここでは、PCAN-Vieソフトウェア・アプリケーションを使用して、PCAN-USB Pro FDによってキャプチャされたメッセージを表示します。 4. 結論 チュートリアルのステップを実行した後、MR-CANHUBK344ボードとサード・パーティの間、または同じボードの異なるCANインスタンス間で、CAN通信を必要とするアプリケーションにMR-CANHUBK344ボードを組み込むことができるようになります。 この記事の適用は、単一のモデルに複数のMBDTコンポーネントを追加するワークフローを管理する方法の例としても役立ちます。 添付されたモデルの実行方法に関する手順: アーカイブのコンテンツをダウンロードして展開してください。 .mdlファイルおよび.mexファイルを両方ともプロジェクトをセットアップしたい場所にコピーしてください。 注意:モデルが正しく動作させるために、.mexファイルと.dbcファイルをモデルの隣に配置してください。 .mdlファイルを開き、MATLAB の現在のフォルダーがモデルを含むフォルダーを指していることを確認してください。 Hardware(ハードウェア)タブをクリックし、[Build, Deploy & Start](ビルド、デプロイ、開始)ボタンを押してください。 Simulinkは登録商標であり、Vehicle Network ToolboxはThe MathWorks, Inc.の商標です。追加の商標のリストについては、mathworks.com/trademarksを参照してください。
查看全文
i.MX 8 GStreamerユーザー・ガイド 本ドキュメントは、NXP BSP L5.4.24_1.1.0でサポートされているすべてのi.MX 8ファミリSoCに含まれるGStreamerバージョン1.0ベースのアクセラレーション・ソリューションのユーザー・ガイドです。 一部の手順は、UbuntuなどのLinuxディストリビューションを実行しているホストマシンがi.MX 8デバイスに接続されているという前提に立ちます。これらのコマンドはUbuntu 18.04 LTDを使用してテストされました。ホストマシンにUbuntuは必要ありませんが、他のディストリビューションはテストされていません。 これらの手順は次のハードウェアでの使用が想定されています。 • i.MX 8MQ EVK • i.MX 8MN EVK • i.MX 8MN EVK • i.MX 8QXP MEK B0 • i.MX 8QM MEK B0 リリース履歴 v1.0 - 2020年3月 - 初回リリース。 v2.0 - 2020年9月:次のコンテンツを追加: - Mux/Demuxの例 - オーディオの例 - 画像の例 - トランスコードの例 - ストリーミングの例 - マルチディスプレイの例 - スケーリングと回転の例 - ゼロ・コピーの例 - デバッグの例 保守担当者: Marco Franchi . Pedro Jardim グラフィックスとディスプレイ i.MX 8ファミリ | i.MX 8QuadMax (8QM) | 8QuadPlus i.MX 8M | i.MX 8M Mini | i.MX 8M Nano マルチメディア Re:i.MX 8 GStreamerのユーザー・ガイド このドキュメントの更新はありますか?内容が古いように感じられます。
查看全文
Linux 源代码迁移 (CAF -> Github) 大家好,我们最近已将源代码从 CAF(Codeaurora)迁移至 Github,因此指向 Codeaurora 的 i.MX NXP 旧版 recipes/manifest 将会更新为指向 Github,以避免在使用 Yocto 拉取代码时出现问题。此外,所有旧版本的 repo init 命令都应由: $ repo init -u https://source.codeaurora.org/external/imx/imx-manifest-b [ -m ]改为:$ repo init -u https://github.com/nxp-imx/imx-manifest-b [ -m ]这同样适用于原先存储在 Codeaurora 的所有源代码,i.MX NXP 源代码的新仓库为:https://github.com/nxp-imx如有任何相关问题,请在社区发帖或提交支持工单。此致Aldo Android 图形与显示 i.MX 8 系列 | i.MX 8QuadMax (8QM) | 8QuadPlus i.MX 8M | i.MX 8M Mini | i.MX 8M Nano i.MX6 全部 i.MX6DL i.MX6 双核 i.MX6DualPlus | 6QuadPlus i.MX6 四核 i.MX6S i.MX6SL i.MX6SoloX i.MX6UL i.MX7 双核 i.MX7 单核 i.MX7ULP i.MX8ULP Linux 多媒体 安全 Yocto Project
查看全文