Multi Source Translation Content

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

Multi Source Translation Content

ディスカッション

ソート順:
FXLS8471Q 与 i.MX6Q 接口 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 简介 硬件连接 设备树配置 重建图像 要求 Kernel 器件树 应用程序驱动程序 主要 初始化驱动程序 Write Read 构建并运行SPI应用程序驱动程序 结束语   简介   本文档介绍了如何将Xtrinsic FXLS8471Q 数字加速度计与 IMX6Q 处理器连接并使用。为此,UDOO Quad 开发板与适用于 IMX6QSABRE-SD 开发板的 NXP Linux 映像(内核为 3.14.56,而非 Udoobuntu)一起使用,以模拟使用自定义开发板,自定义和构建 UDOO Quad 开发板此类映像的过程如下所述: 使用 QT5 为 UDOO Quad 构建 Linux 映像   在传感器方面,使用了FRDM-FXS-MULTI(-B) 传感器扩展板,该扩展板具有 2013 年推出的许多 Xtrinsic 传感器,包括FXSL8471Q 。   硬件连接   来自 FRDM-FXS-MULTI 的 SPI 信号被路由到 UDOO Quad 的 SPI1 模块。FXLS8471Q 提供了一个 INT 引脚,如下图所示,但在此实现中使用了轮询方法。请注意,芯片选择不由 SPI 模块自动控制,因此该引脚配置为 GPIO。除了这些信号之外,还连接了复位和电源引脚。   下图显示了 FRDM-FXS-MULTI 中使用的与 UDOO Quad板连接的引脚。           UDOO Quad 侧使用的引脚如下图所示。您可以在此处/download/files/pinout 索引中找到 UDOO Quad 引脚排列图。                           设备树配置   正如本文档开头所述,使用了适用于 IMX6Q-SABRESD 的 NXP Linux 映像。为了定制此图像以用于 UDOO Quad 板,需要构建一个 .dtb与之匹配。此任务已完成,并从UDOOboard (UDOOboard) · GitHub上的 UDOO 内核 Linux 存储库获取下面列出的 dts 和 dtsi 源文件。   imx6qdl-udoo.dtsi imx6qdl-udoo-externalpins.dtsi imx6q-udoo-hdmi.dts   这些文件被复制到 IMX6Q-SABRESD 构建源文件夹中,并生成了 imx6q-udoo.dtb。此过程已在“使用 QT5 为 UDOO Quad 构建 Linux 映像”中进行了描述   以下代码片段展示了如何为 UDOO Quad 板设置 SPI 配置中涉及的节点。请注意,每个设备树都应与您的自定义板相匹配。   在imx6qdl-udoo-externalpins.dtsi中验证ecspi1节点是否与下面显示的节点匹配。   &ecspi1 {     fsl,spi-num-chipselects = <1>;     cs-gpios = <&gpio5 17 0>;     pinctrl-0 = <&pinctrl_ecspi1>;     pinctrl-names = "default";     status = "disabled";     spidev0: spi@0 {         #address-cells = <1>;         #size-cells = <1>;         compatible = "spidev";         reg = <0>;         spi-max-frequency = <2000000>;     }; };     正如您在上面的代码片段中看到的, ecspi1节点使用pinctrl_ecspi1作为引脚配置节点,该节点在同一个文件中定义,如下所示。          pinctrl_ecspi1: ecspi1grp {             fsl,pins = <             MX6QDL_PAD_DISP0_DAT22__ECSPI1_MISO  0x100b1             MX6QDL_PAD_DISP0_DAT20__ECSPI1_SCLK  0x100b1             MX6QDL_PAD_DISP0_DAT21__ECSPI1_MOSI  0x100b1             MX6QDL_PAD_DISP0_DAT23__GPIO5_IO17   0x80000000             >;         };   但是,您可能知道 i.MX 设备上的每个引脚最多有 8 种潜在功能,另一方面,一个功能可以在不同的引脚上使用。   例如,ECSPI1_MISO 可以映射到 4 个不同的引脚     并且每个引脚可以具有不同的功能。从引脚的所有可用功能中选择一个作为焊盘(引脚)名称。在下图中,选择 DISP0_DATA22 作为焊盘名称。       现在回到pinctrl_ecspi1节点,这里用到的宏定义在imx6q-pinfuc.h 中,如你看到的 DISP0_DAT20 - DISP0_DAT23 是与 ECSPI 信号一起使用的焊盘。   需要检查 DISP0_DAT20 - DISP0_DAT23 没有其他配置,如果有,则需要将其注释掉或删除。在这种情况下, imx6qdl-udoo-externalpins.dtsi中这些引脚还有其他配置,但它们已被注释掉。     &iomuxc {     imx6q-udoo {         // External Pinout GPIOs         external_hog: hoggrp-2 {         fsl,pins = <             MX6QDL_PAD_CSI0_DAT11__GPIO5_IO29    0x80000000  // {{external-gpio-0}}             MX6QDL_PAD_CSI0_DAT10__GPIO5_IO28    0x80000000  // {{external-gpio-1}}             MX6QDL_PAD_SD1_CLK__GPIO1_IO20       0x80000000  // {{external-gpio-2}}             MX6QDL_PAD_SD1_DAT0__GPIO1_IO16      0x80000000  // {{external-gpio-3}}             MX6QDL_PAD_SD1_DAT1__GPIO1_IO17      0x80000000  // {{external-gpio-4}}             MX6QDL_PAD_SD1_CMD__GPIO1_IO18       0x80000000  // {{external-gpio-5}}             MX6QDL_PAD_SD4_DAT1__GPIO2_IO09      0x80000000  // {{external-gpio-6}}             MX6QDL_PAD_SD4_DAT2__GPIO2_IO10      0x80000000  // {{external-gpio-7}}             MX6QDL_PAD_SD1_DAT3__GPIO1_IO21      0x80000000  // {{external-gpio-8}}             MX6QDL_PAD_SD1_DAT2__GPIO1_IO19      0x80000000  // {{external-gpio-9}}             MX6QDL_PAD_GPIO_1__GPIO1_IO01        0x80000000  // {{external-gpio-10}}             MX6QDL_PAD_GPIO_9__GPIO1_IO09        0x80000000  // {{external-gpio-11}}             MX6QDL_PAD_GPIO_3__GPIO1_IO03        0x80000000  // {{external-gpio-12}}             MX6QDL_PAD_SD4_DAT0__GPIO2_IO08      0x80000000  // {{external-gpio-13}}             MX6QDL_PAD_CSI0_DAT4__GPIO5_IO22     0x80000000  // {{external-gpio-14}}             MX6QDL_PAD_CSI0_DAT16__GPIO6_IO02    0x80000000  // {{external-gpio-15}}             MX6QDL_PAD_CSI0_DAT14__GPIO6_IO00    0x80000000  // {{external-gpio-16}}             MX6QDL_PAD_CSI0_DAT15__GPIO6_IO01    0x80000000  // {{external-gpio-17}}             MX6QDL_PAD_CSI0_DAT12__GPIO5_IO30    0x80000000  // {{external-gpio-18}}             MX6QDL_PAD_CSI0_DAT13__GPIO5_IO31    0x80000000  // {{external-gpio-19}}             MX6QDL_PAD_EIM_D28__GPIO3_IO28       0x80000000  // {{external-gpio-20}}             MX6QDL_PAD_EIM_D21__GPIO3_IO21       0x80000000  // {{external-gpio-21}}             MX6QDL_PAD_DISP0_DAT6__GPIO4_IO27    0x80000000  // {{external-gpio-22}}             MX6QDL_PAD_DISP0_DAT7__GPIO4_IO28    0x80000000  // {{external-gpio-23}}             MX6QDL_PAD_DISP0_DAT8__GPIO4_IO29    0x80000000  // {{external-gpio-24}}             MX6QDL_PAD_DISP0_DAT9__GPIO4_IO30    0x80000000  // {{external-gpio-25}}             MX6QDL_PAD_DISP0_DAT10__GPIO4_IO31   0x80000000  // {{external-gpio-26}}             MX6QDL_PAD_DISP0_DAT11__GPIO5_IO05   0x80000000  // {{external-gpio-27}}             MX6QDL_PAD_DISP0_DAT12__GPIO5_IO06   0x80000000  // {{external-gpio-28}}             MX6QDL_PAD_DISP0_DAT13__GPIO5_IO07   0x80000000  // {{external-gpio-29}}             MX6QDL_PAD_DISP0_DAT14__GPIO5_IO08   0x80000000  // {{external-gpio-30}}             MX6QDL_PAD_DISP0_DAT15__GPIO5_IO09   0x80000000  // {{external-gpio-31}}             MX6QDL_PAD_DISP0_DAT16__GPIO5_IO10   0x80000000  // {{external-gpio-32}}             MX6QDL_PAD_DISP0_DAT17__GPIO5_IO11   0x80000000  // {{external-gpio-33}}             MX6QDL_PAD_DISP0_DAT18__GPIO5_IO12   0x80000000  // {{external-gpio-34}}             MX6QDL_PAD_DISP0_DAT19__GPIO5_IO13   0x80000000  // {{external-gpio-35}}             //MX6QDL_PAD_DISP0_DAT20__GPIO5_IO14   0x80000000  // {{external-gpio-36}}             //MX6QDL_PAD_DISP0_DAT21__GPIO5_IO15   0x80000000  // {{external-gpio-37}}             MX6QDL_PAD_EIM_A16__GPIO2_IO22       0x80000000  // {{external-gpio-38}}             MX6QDL_PAD_GPIO_18__GPIO7_IO13       0x80000000  // {{external-gpio-39}} (KEY_VOL_UP)             MX6QDL_PAD_NANDF_D0__GPIO2_IO00      0x80000000  // {{external-gpio-40}} (HOME)             MX6QDL_PAD_NANDF_D3__GPIO2_IO03      0x80000000  // {{external-gpio-41}} (SEARCH)             MX6QDL_PAD_NANDF_D2__GPIO2_IO02      0x80000000  // {{external-gpio-42}} (BACK)             MX6QDL_PAD_NANDF_D1__GPIO2_IO01      0x80000000  // {{external-gpio-43}} (MENU)             MX6QDL_PAD_GPIO_19__GPIO4_IO05       0x80000000  // {{external-gpio-44}} (KEY_VOL_DOWN)            // MX6QDL_PAD_DISP0_DAT22__GPIO5_IO16   0x80000000  // {{external-gpio-45}}             //MX6QDL_PAD_DISP0_DAT23__GPIO5_IO17   0x80000000  // {{external-gpio-46}}             MX6QDL_PAD_EIM_D25__GPIO3_IO25       0x80000000  // {{external-gpio-47}}             MX6QDL_PAD_KEY_ROW1__GPIO4_IO09      0x80000000  // {{external-gpio-48}}             MX6QDL_PAD_KEY_COL1__GPIO4_IO08      0x80000000  // {{external-gpio-49}}             MX6QDL_PAD_EIM_OE__GPIO2_IO25        0x80000000  // {{external-gpio-50}}             MX6QDL_PAD_EIM_CS1__GPIO2_IO24       0x80000000  // {{external-gpio-51}}             MX6QDL_PAD_EIM_CS0__GPIO2_IO23       0x80000000  // {{external-gpio-52}}             MX6QDL_PAD_EIM_D24__GPIO3_IO24       0x80000000  // {{external-gpio-53}}             MX6QDL_PAD_GPIO_8__GPIO1_IO08        0x80000000  // {{external-gpio-54}}             MX6QDL_PAD_GPIO_7__GPIO1_IO07        0x80000000  // {{external-gpio-55}}             >;         };     最后,在imx6q-udoo-hdmi.dts中通过包含 ecspi1 节点引用并将状态属性设置为“okay”来启用 ECSPI。   dts-v1/; #include "imx6q.dtsi" #include "imx6qdl-udoo.dtsi" #include "imx6qdl-udoo-externalpins.dtsi" / {     model = "UDOO Quad Board";     compatible = "udoo,imx6q-udoo", "fsl,imx6q";        mxcfb1: fb@0 {         compatible = "fsl,mxc_sdc_fb";         disp_dev = "hdmi";         interface_pix_fmt = "RGB24";         mode_str ="1920x1080M@60";         default_bpp = <32>;         int_clk = <0>;         late_init = <0>;         status = "okay";     }; }; &ecspi1 {     status = "okay"; };   注意:这可以在 .dtsi 中完成但副作用是包括 dtsi 在内的任何配置都会默认启用 ECSPI1。   最后需要重建设备树并将其复制到 SD 卡的 FAT 分区。下一节将解释此过程。   重建图像   要求 为了构建图像和应用程序,需要安装一个工具来交叉编译代码,这样我们就可以在主机上为 ARM 架构生成可执行文件。这个工具叫做meta-toolchain,下面的命令用来安装它。   在以下说明中,认为构建目录是 ~/fsl-release_bsp/build_imx6qsabresd_qt5/   $ cd ~/fsl-release_bsp $源设置环境build_imx6qsabresd_qt5 $ bitbake 元工具链 $ sh tmp/deploy/sdk/fsl-imx-x11-glibc-x86_64-meta-toolchain-cortexa9hf-vfp-neon-toolchain-.sh Kernel   为了启用内核 SPI 驱动程序,必须在 menuconfig 中进行设置并重建 zImage。   转到我们创建的 Yocto 构建目录中的内核目录。 $ cd /tmp/work-shared/imx6qsabresd/kernel-source$   启动 imx 的 menuconfig $ source /opt/fsl-imx-x11/ /environment-setup-armv7a-vfp-neon-poky-linux-gnueabi $ make imx_v7_defconfig $ make menuconfig   通过转到设备驱动程序 --> SPI 支持并将“*”设置为 SPI 设备驱动程序来启用 SPI 驱动程序,保存更改然后退出。     并构建zImage $ 制作 zImage   生成的文件位于 /tmp/work-shared/imx6qsabresd/kernel-source/arch/arm/boot$ 中,必须将其复制到 SD 卡的 FAT 分区。   器件树   要构建设备树,请转到我们创建的 Yocto 构建目录中的内核目录。 $ cd /tmp/work-shared/imx6qsabresd/kernel-source$   构建 dtb 文件 $ source /opt/fsl-imx-x11/ /environment-setup-armv7a-vfp-neon-poky-linux-gnueabi $ make imx_v7_defconfig $ make imx6q-udoo-hdmi.dtb   生成的文件位于 /tmp/work-shared/imx6qsabresd/kernel-source/arch/arm/boot/dts$ ,必须将其重命名为imx6q-udoo.dtb并复制到 SD 卡的 FAT 分区。   应用程序驱动程序   SPI 内核驱动程序使用一个名为spi_ioc_transfer的结构体来描述单次 SPI 传输。该结构体包含指向用户空间缓冲区的指针,其中包含发送和接收数据、缓冲区长度、速度、每字位数以及其他配置。更多详细信息,请参阅内核源代码中的/include/uapi/linux/spi/spidev.h 文件。下一节将解释应用程序驱动程序。   应用程序驱动程序的源文件以及设备树源可以在附加的.zip文件中找到。   主要   以下代码显示函数 main,其中使用“/dev/spidev0.0”初始化 SPI 驱动程序在 menuconfig 中启用 SPIdev 驱动程序并按照上一节所示重建内核后,它将列在/dev下(在目标根文件系统中)。然后,它读取“我是谁”注册表,仅用于健全性检查目的,初始化和校准传感器,并进入无限循环,只要有新数据准备好,它就会读取传感器。原始数据以 6 个字节返回,因此设法获取 X、Y 和 Z 值,最后将这些值转换为 G 的值,并等待按下某个键以继续读取以下值。     /****************************************************************************** * Main ******************************************************************************/ int main(){      //enableGPIO(); //In case of using interrupt instead of polling      file = spi_init("/dev/spidev0.0"); //dev      who();      FXLS8471Q_Init();      FXLS8471Q_Calibration();      while(1)      {          checkData();          if (DataReady) // Is a new set of data ready?          {              buffer = (unsigned char *)spi_read(OUT_X_MSB_REG, 6, file); // Read data output registers 0x01-0x06              printf("AccData[0] = 0x%X \n AccData[1] = 0x%X \n AccData[2] = 0x%X \n AccData[3] = 0x%X \n AccData[4] = 0x%X \n AccData[5] = 0x%X \n", AccData[0], AccData[1], AccData[2], AccData[3], AccData[4], AccData[5]);              Xout_14_bit = ((short) (AccData[0] << 8 | AccData[1])) >> 2; // Compute 14-bit X-axis output value              Yout_14_bit = ((short) (AccData[2] << 8 | AccData[3])) >> 2; // Compute 14-bit Y-axis output value              Zout_14_bit = ((short) (AccData[4] << 8 | AccData[5])) >> 2; // Compute 14-bit Z-axis output value              Xout_g = ((float) Xout_14_bit) / SENSITIVITY_2G; // Compute X-axis output value in g's              Yout_g = ((float) Yout_14_bit) / SENSITIVITY_2G; // Compute Y-axis output value in g's              Zout_g = ((float) Zout_14_bit) / SENSITIVITY_2G; // Compute Z-axis output value in g's              //printf(" X = %d Y = %d Z = %d \n\n", AccData[0], AccData[2], AccData[4]);              //printf("Xval = %d Yval = %d Zval = %d \n", Xout_14_bit, Yout_14_bit, Zout_14_bit);              printf(" XG = %f YG = %f ZG = %f \n\n", Xout_g, Yout_g, Zout_g);              getchar();         }      }      close(file); } 初始化驱动程序   spi_init函数为驱动程序“/dev/spidev0.0”打开一个文件它作为参数从 main() 传递,然后读取 SPI 配置参数仅用于提供信息。最后初始化 spi_ioc_transfer 类型的 struct xfer 。   /********************************* SPIdev Init **********************************************/ int spi_init(char filename[40]) { int file; unsigned char mode, lsb, bits; unsigned int baudrate = 524250, speed; printf("SPI Init \n"); if ((file = open(filename,O_RDWR)) < 0) { printf("Failed to open the bus."); /* ERROR HANDLING; you can check errno to see what went wrong */ com_serial=0; exit(1); } if (ioctl(file, SPI_IOC_RD_MODE, &mode) < 0) { perror("SPI rd_mode"); return -1; } if (ioctl(file, SPI_IOC_RD_LSB_FIRST, &lsb) < 0) { perror("SPI rd_lsb_fist"); return -1; } if (ioctl(file, SPI_IOC_RD_BITS_PER_WORD, &bits) < 0) { perror("SPI bits_per_word"); return -1; } if (ioctl(file, SPI_IOC_RD_MAX_SPEED_HZ, &speed) < 0) { perror("SPI max_speed_hz"); return -1; } printf("%s: spi mode %d, %d bits %s per word, %d Hz max\n",filename, mode, bits, lsb ? "LSB first" : "MSB first", baudrate); xfer[0].len = 3; /* Length of command to write*/ xfer[0].cs_change = 0; /* Keep CS activated */ xfer[0].delay_usecs = 0; //delay in us xfer[0].speed_hz = 524250; //speed xfer[0].bits_per_word = 8; // bites per word 8 xfer[1].len = 4; /* Length of Data to read */ xfer[1].cs_change = 0; /* Keep CS activated */ xfer[1].delay_usecs = 0; xfer[1].speed_hz = 524250; xfer[1].bits_per_word = 8; printf("SPI Init Finished \n"); return file; }     Write   SPI 通信从片选引脚的下降沿开始。通过传输 R/W 位的 1 来启动写入操作。然后,8 位寄存器地址 ADDR[7:0] 被编码在第一个和第二个序列化字节中。要写入的数据从第三个序列化字节开始。位的顺序如下:   Byte 0: R/W, ADDR[6], ADDR[5], ADDR[4], ADDR[3], ADDR[2], ADDR[1], ADDR[0] Byte 1: ADDR[7], X, X, X, X, X, X, X Byte 2: DATA[7], DATA[6], DATA[5], DATA[4], DATA[3], DATA[2], DATA[1], DATA[0]   SPI 通信以片选引脚的下降沿完成。   您可以在下面看到数组buf保存目标地址和要传输的数据,然后将xfer结构配置为指向buf作为传输缓冲区,并将数据的长度设置为 2 + 数据大小(前 2 个字节用于分成 2 个字节的目标地址)。最后通过ioctl命令开始传输。   /******************** Write a byte to the FXLS8471Q *************************** * Byte 0: 1,ADDR[6],ADDR[5],ADDR[4],ADDR[3],ADDR[2],ADDR[1],ADDR[0] * Byte 1: ADDR[7],0,0,0,0,0,0,0 * Byte 2: DATA[7],DATA[6],DATA[5],DATA[4],DATA[3],DATA[2],DATA[1],DATA[0] ******************************************************************************/ void spi_write(int registerAddress, int nbytes, char data, int file) { unsigned char buf[32]; int status; memset(buf, 0, sizeof buf); buf[0] = 0x80 | registerAddress; buf[1] = 0x80 & registerAddress; buf[2] = data; xfer[0].tx_buf = (unsigned long)buf; xfer[0].len = nbytes + 2; /* Length of command to write*/ status = ioctl(file, SPI_IOC_MESSAGE(1), xfer); if (status < 0) { perror("SPI_IOC_MESSAGE"); return; } com_serial=1; failcount=0; }     下面是将值 0x3D 写入 CTRL_REG1 (0x2A) 的写入操作。     Read   类似地,通过传输 R/W 位的 0 来启动读取操作。然后,8 位寄存器地址 ADDR[7:0] 被编码在第一个和第二个序列化字节中。数据从 MISO 引脚读取(MSB 优先)。   在这种情况下,数组buf保存要读取的地址,而第三个字节只是要传输的虚拟字节。结构xfer保存传输缓冲区指针(在本例中为buf)和接收缓冲区(为AccData),还指定了要写入的命令的长度和要读取的数据的长度,最后使用ioctl调用执行读取命令。     /********************** Read a byte from the FXLS8471Q *********************** * Byte 0: 0,ADDR[6],ADDR[5],ADDR[4],ADDR[3],ADDR[2],ADDR[1],ADDR[0] * Byte 1: ADDR[7],0,0,0,0,0,0,0 * Byte 2: 0,0,0,0,0,0,0,0 ******************************************************************************/ char * spi_read(int registerAddress, int nbytes, int file) { int status; memset(buf, 0, sizeof buf); memset(AccData, 0, sizeof AccData); buf[0] = 0x7F & registerAddress; buf[1] = 0x80 & registerAddress; buf[2] = 0x00; xfer[0].tx_buf = (unsigned long)buf; xfer[0].len = 2; /* Length of command to write*/ xfer[1].rx_buf = (unsigned long) AccData; xfer[1].len = nbytes; /* Length of Data to read */ xfer[1].speed_hz = 524250; status = ioctl(file, SPI_IOC_MESSAGE(2), xfer); if (status < 0) { perror("SPI_IOC_MESSAGE"); return 0; } com_serial=1; failcount=0; return AccData; }     下面的屏幕截图显示了读取操作,该操作从 WHO_AM_I 寄存器(0x0D)读取正确的值 0x6A。     构建并运行SPI应用程序驱动程序   为了构建应用程序,请将源文件和 Makefile(附件)保存在主机上的任何位置,然后转到保存它们的目录。然后使用以下命令的 Make 文件通过 Meta-toolchain 构建应用程序。   构建应用程序驱动程序 $ cd $ source /opt/fsl-imx-x11/ /environment-setup-armv7a-vfp-neon-poky-linux-gnueabi $ make   将会在同一文件夹中创建一个spi_test文件,将此文件复制到 /home/root 中的根文件系统分区上的 sdcard 中。最后,在启动目标时执行应用程序。您必须看到以下输出。       结束语   本文档总结了创建 SPI 应用程序驱动程序的步骤。正如您所看到的,需要重建设备树和内核,为此需要安装 metatoolchain。应用程序驱动采用SPI内核驱动,其主要功能如下: 初始化SPI驱动程序 Read Write 初始化传感器 校准传感器 轮询数据就绪函数   我想说应用程序驱动程序的核心是读写功能,它们配置 SPI 内核驱动程序并以传感器所需的格式向其传递数据。   有关驱动程序的具体详细信息,请参阅附件 .zip该文件包含应用程序驱动程序代码、构建的 Makefile 和设备树源。   我希望您发现本文档有用。     卡洛斯
記事全体を表示
例: EEEPROM の使用S32K144 - SDK なし <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> この例では、SDK を使用せずに EEEPROM を使用する方法を示します。この例は、これと非常によく似ています 例:EEEPROMの使用S32K144  DFLASHパーティショニングはEEE_Init()関数によって行われます。MCUがすでにパーティション分割されている場合は、[デバイスのパーティションを保持する]チェックボックスをオンにしてください。 - 注 - PE Microスクリプトにバグがあり、このオプションによりpegdbserverがクラッシュします。 対象MCU:S32K144 デバッガ: OpenSDA Re:例:EEEPROMの使用S32K144 - SDKなし <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> Hi,  残念ながら、PE Microはそれを修正しません。こちらで詳細を確認できます。 https://community.nxp.com/message/1269942  Jiri Re:例:EEEPROMの使用S32K144 - SDKなし <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> Hi Jiri, 私はこのスレッドを通過し、最終的にPE Microにバグがあることを理解し、あなたは同じチケットを発行しました。 この問題を解決するための予想時間を知りたいのですが。親切に同じことを共有してください。 ラジュ Re:例:EEEPROMの使用S32K144 - SDKなし <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> Hi Jiri! この「パーティション分割PE Microを保持する」バグはもう解決されていますか? それとも、他の実用的な解決策はありますか? S32DS 2.2をインストールし、完全に更新されました(すべてのPE Microも最新です)が、運が悪いです!(S32DS-18も同様) 2台のコンピューターで同じ問題がありますWin7 64ビット... OpenSDAとMultilink Universalの両方でテスト済み。 私は他のSDK EEPROMの例を使用しています。(トップポストで参照) 「メモリ範囲の保持」を使用すると、pegdbserverは常にクラッシュし、ターゲットを正常にロード/フラッシュできない場合を除き、すべてが機能しているように見えます。 OpenSDAを使用する場合: 「127.0.0.1」から127.0.0.1経由の接続。ポート「57803」から6224への接続 「127.0.0.1」から127.0.0.1経由の接続。ポート「57804」から7224への接続 FreeRTOS カーネルシンボルを検索しています... rsp_qC - qシンボル: 707843757272656E74544342 pxCurrentTCB が見つかりません。FreeRTOS 分析が有効になっていません。 ●Copyright 2018 P&Eマイクロコンピュータシステムズ株式会社 コマンドライン:C:\ NXP \ S32DS_ARM_v2.2 \ eclipse \ plugins \ com.pemicro.debug.gdbjtag.pne.expansion_4.5.3.202002032127 \ win32 \ pegdbserver_console-device=NXP_S32K1xx_S32K144F512M15 -startserver -singlesession -serverport=7224 -gdbmiport=6224 -interface=OPENSDA -sL OpenSDAが検出されました - Flashバージョン1.19 CMD>REの 初期化。 ターゲットはリセットされ、アクティブです。 CMD>CM C:\ NXP \ S32DS_ARM_v2.2 \ Eclipse \ plugins \ com.pemicro.debug.gdbjtag.pne.expansion_4.5.3.202002032127 \ win32 \ GDI \ P&E \ supportFiles_ARM \ NXP \ S32K1xx \ freescale_s32k144f512m15_pflash_dflash_eeprom.arp 初期化。 初期化。 ;version 1.05, 2019/12/03, Copyright 2019 P&E Microcomputer Systems, Inc.全著作権所有。www.pemicro.com [s32k144f512m15_x_pflash_dflash_eeprom_rev2] ;フリースケール・デバイス、S32K144F512M15、pflash_dflash_eeprom ;begin_cs デバイス=$00000000、長さ=$14001000、ram=$20000000 プログラミングアルゴリズムを読み込んでいます... 完成です。 CMD>PA 0204 開始。 完成です。 プログラミングシーケンスは、消去、ブランクチェック、プログラム、および検証{default}です。 CMD>VCの オブジェクト ファイル CRC-16 をデバイス範囲に確認しています ... ブロック00000000-000019EF ... 計算された CRC-16 がブロックと一致しません。(ファイル = $186D、デバイス = $9EBD) フラッシュの現在の内容がプログラムするアプリケーションと一致しません CMD>EM ~50秒間ここで立ち往生する。 消去前にデータ範囲$ 10000000-$ 1000FFFFを保持します... 完成です。 消去。 モジュールは消去されました。 リロードプログラミングアルゴリズム... 完成です。 保存されたデータ範囲$ 10000000-$ 1000FFFFの再プログラミング... 完成です。 ターゲット プロセッサとの通信中にエラーが発生しました - RESET を試してください。 CMD>PMの プログラミング。 オブジェクトファイルデータを処理しています... . プログラム。 ターゲット プロセッサとの通信中にエラーが発生しました - RESET を試してください。 CMD>VCの CRC-16 アルゴリズムの読み込み中にエラーが発生しました。 CRC-16 アルゴリズムの読み込み中にエラーが発生しました。 CRC-16 アルゴリズムの読み込み中にエラーが発生しました。 デバイスのフラッシュの確認エラー Flashのプログラミング中にエラーが発生しました。 PEmicro GDB Launch Failure : フラッシュ プログラミング中にエラーが発生しました。デバッグ セッションを終了しています。 pegdbserver がクラッシュしました... Multilink Universalの場合: 「127.0.0.1」から127.0.0.1経由の接続。ポート「57868」から6224への接続 「127.0.0.1」から127.0.0.1経由の接続。ポート「57869」から7224への接続 FreeRTOS カーネルシンボルを検索しています... rsp_qC - qシンボル: 707843757272656E74544342 pxCurrentTCB が見つかりません。FreeRTOS 分析が有効になっていません。 ●Copyright 2018 P&Eマイクロコンピュータシステムズ株式会社 コマンドライン:C:\ NXP \ S32DS_ARM_v2.2 \ eclipse \ plugins \ com.pemicro.debug.gdbjtag.pne.expansion_4.5.3.202002032127 \ win32 \ pegdbserver_console-device=NXP_S32K1xx_S32K144F512M15 -startserver -singlesession -serverport=7224 -gdbmiport=6224 -interface=USBMULTILIL P&E インターフェイスの検出 - Flash バージョン 10.42 CMD>REの 初期化。 ターゲットはリセットされ、アクティブです。 CMD>CM C:\ NXP \ S32DS_ARM_v2.2 \ Eclipse \ plugins \ com.pemicro.debug.gdbjtag.pne.expansion_4.5.3.202002032127 \ win32 \ GDI \ P&E \ supportFiles_ARM \ NXP \ S32K1xx \ freescale_s32k144f512m15_pflash_dflash_eeprom.arp 初期化。 初期化。 ;version 1.05, 2019/12/03, Copyright 2019 P&E Microcomputer Systems, Inc.全著作権所有。www.pemicro.com [s32k144f512m15_x_pflash_dflash_eeprom_rev2] ;フリースケール・デバイス、S32K144F512M15、pflash_dflash_eeprom ;begin_cs デバイス=$00000000、長さ=$14001000、ram=$20000000 プログラミングアルゴリズムを読み込んでいます... 完成です。 CMD>PA 0204 開始。 完成です。 プログラミングシーケンスは、消去、ブランクチェック、プログラム、および検証{default}です。 CMD>VCの オブジェクト ファイル CRC-16 をデバイス範囲に確認しています ... ブロック00000000-000019EF ... 計算された CRC-16 がブロックと一致しません。(ファイル = $186D、デバイス = $9EBD) フラッシュの現在の内容がプログラムするアプリケーションと一致しません CMD>EM ~25秒間ここで立ち往生します。 消去前にデータ範囲$ 10000000-$ 1000FFFFを保持します... 完成です。 消去。 モジュールは消去されました。 リロードプログラミングアルゴリズム... 完成です。 保存されたデータ範囲$ 10000000-$ 1000FFFFの再プログラミング... ここで~5秒間立ち往生します。 エラー!最後のコマンドが失敗しました。 エラーデバイスのフラッシュを消去します Flashのプログラミング中にエラーが発生しました。 PEmicro GDB Launch Failure : フラッシュ プログラミング中にエラーが発生しました。デバッグ セッションを終了しています。 pegdbserver がクラッシュしました... Re:例:EEEPROMの使用S32K144 - SDKなし <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> Hi,  遅れて申し訳ありません。まあ - このコメントされたコードについて特別なことは何もありません - 私はただそれをきれいにするのを忘れました(それはいくつかのテストのものからそこに残っています)。この例を作ったのはまだしばらくですが、私の記憶が正しければ、デフォルトではFlexRAMはフラッシュバックアップのない通常のRAMと同じように有効になっています。エミュレートされた EEPROM として設定した場合、FTFC->FSTAT->RAMRDY は 0 に設定されます。 この例に何か問題がありますか?私は今それをテストしました-そしてそれは期待どおりに働きます。 Jiri Re:例:EEEPROMの使用S32K144 - SDKなし <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> [email protected]‌, この例では、EEE_int()関数についてかなり混乱しています(EEPROMの使用S32K144 - SDKなし) 私の理解として(AN11983ドキュメントに基づく:S32K1xx EEPROM機能を使用): flexNVMをエミュレートされたEEPROM(4KB flexRAM)にDEPARTitionedした後 [ 3.1.1 S32K1xx プログラムパーティションコマンド ] : FTFC->FCCOB[3]=0x80;プログラムパーティションコマンド FTFC->FCCOB[2]=0x00;CSEc キー・サイズ FTFC->FCCOB[1]=0x00;セキュリティ フラグの拡張 - ユーザー キーの確認のみが無効 FTFC->FCCOB[0]=0x00;リセットシーケンスでのデータint EEERAMをロードします FTFC->FCCOB[7]=0x02;EEPROM データセット・サイズ・コード - 4k FTFC->FCCOB[6]=0x08;EEPROMバックアップサイズ - 64k FlexRAMをRAMとして使用する設定が必要です[ 3.2.1.1 FlexRAM RAMをRAMとして使用する ] : FTFC->FCCOB[3]=0x81;Progranコマンド FTFC->FCCOB[2]=0x00;EEEPROMとして使用されるFlexRAM FlexRAMをエミュレートされたEEPROMとして使用する場合(FlexRAMでデータの書き込み/読み取りが可能で、このデータは記録されます) しかし、あなたの例では、FlexRAMをRAMとして使用する設定がコメントアウトされています(したがって、データはまだ正常に書き込まれます)。 なぜですか?まずはよろしくお願いいたします。 Re:例:EEEPROMの使用S32K144 - SDKなし <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> こんにちは、UARTが受信したデータをEEPROMに書き込む必要があります。説明書の書き方がわかりません。助けていただけますか。ありがとうございます。 /* * 主な実装: この 'C' サンプルを使用して、独自のアプリケーションを作成します * */ #include「S32K144.h」/* ペリフェラル宣言を含める S32K144 */ #include 「EEEPROM_io_control.h」 #define USER_DATA_SIZE 32u #define DISABLE_INTERRUPTS() __asm volatile ("cpsid i" : : : "memory"); #include "s32_core_cm4.h" void SOSC_init_8MHz(void) { SCG->SOSCDIV=0x00000101; //SOSCDIV1 & SOSCDIV2 =1: 分频/1 SCG->SOSCCFG=0x00000024; //Range=2: 选择晶体振荡器的中频范围 (SOSC 1MHz-8MHz) // HGO=0: 控制晶体振荡器的工作功率模式 --低功率模式 // EREFS=1: 外部参考选择OSC内部晶体振荡器 while(SCG->SOSCCSR & SCG_SOSCCSR_LK_MASK); //等待SOSCCSR解锁 寄存器解锁后才可写入 SCG->SOSCCSR=0x00000001; // LK=0: SOSCCSR可以写 // SOSCCM=0: 系统OSC时钟监视器被禁用 // SOSCEN=1: 启用系统OSC while(!(SCG->SOSCCSR & SCG_SOSCCSR_SOSCVLD_MASK)); //等待系统OSC成功启用,输出时钟有效 } void SPLL_init_160MHz(void) { while(SCG->SPLLCSR & SCG_SPLLCSR_LK_MASK); //等待SPLLCSR寄存器解锁 寄存器解锁后才可写入 SCG->SPLLCSR = 0x00000000; // LK=0: SPLLCSR可以写入 // SPLLEN=0: SPLL禁用 SCG->SPLLDIV = 0x00000302; // SPLLDIV1 分频/2; SPLLDIV2 分频/4 SCG->SPLLCFG = 0x00180000; // PREDIV=0: 锁相环参考时钟分频因子 // MULT=24: SPLL时钟频率的乘法因子 // SPLL_CLK = 8MHz / 1 * 40 / 2 = 160 MHz SPLL_CLK = (VCO_CLK)/2 VCO_CLK = SPLL_SOURCE/(PREDIV+1)*(MULT+16) while(SCG->SPLLCSR & SCG_SPLLCSR_LK_MASK); //等待SPLLCSR寄存器解锁 寄存器解锁后才可写入 SCG->SPLLCSR = 0x00000001; // LK=0: SPLLCSR可以写入 // SPLLCM=0: SPLL时钟监视器被禁用 // SPLLEN=1: 开启SPLL while(!(SCG->SPLLCSR & SCG_SPLLCSR_SPLLVLD_MASK)); //等待SPLL成功启用,输出时钟有效 } void NormalRUNmode_40MHz (void) { SCG->RCCR=SCG_RCCR_SCS(6) // SPLL做为系统时钟源 |SCG_RCCR_DIVCORE(0b11) // DIVCORE=3, 分频/4: Core clock = 160/4 MHz = 40 MHz |SCG_RCCR_DIVBUS(0b11) // DIVBUS=3, 分频/4: bus clock = 160/4 MHz = 40 MHz |SCG_RCCR_DIVSLOW(0b111); // DIVSLOW=7, 分频/8: SCG slow, flash clock= 160/8 MHz = 20MHZ while (((SCG->CSR & SCG_CSR_SCS_MASK) >> SCG_CSR_SCS_SHIFT ) != 6) {}//等待系统时钟源成功选择SPLL } void UART2_NVIC_init_IRQs(void) { S32_NVIC->ICPR[1] = 1 << (35 % 32); /* IRQ48-UART2: clr any pending IRQ*/ S32_NVIC->ISER[(uint32_t)(LPUART2_RxTx_IRQn) >> 5U] = (uint32_t)(1UL << ((uint32_t)(LPUART2_RxTx_IRQn) & (uint32_t)0x1FU)); S32_NVIC->IP[35] = 0x7; /* IRQ48-UART2: priority 7 of 0-15*/ } void UART2_PORT_init (void) { PCC->PCCn[PCC_PORTA_INDEX ] |= PCC_PCCn_CGC_MASK; //使能PTA端口时钟 PORTA->PCR[8] |= PORT_PCR_MUX(2); // Port A8: MUX = ALT2,UART2 RX PTA8复用为RX PORTA->PCR[9] |= PORT_PCR_MUX(2); // Port A9: MUX = ALT2,UART2 TX PTA9复用为TX } //波特率: 9600 , 1停止位, 8个数据位, 无奇偶校验 void UART2_init(void) { PCC->PCCn[PCC_LPUART2_INDEX] &= ~PCC_PCCn_CGC_MASK; //禁LPUART2时钟 PCC->PCCn[PCC_LPUART2_INDEX] |= PCC_PCCn_PCS(0b001) //选择时钟 Clock Src= 1 (SOSCDIV2_CLK) | PCC_PCCn_CGC_MASK; //使能LPUART2时钟 LPUART2->BAUD = 0x0F000034; //配置波特率为9600,1停止位 // SBR=52 (0x34): 波特率模数除数 = 8M/9600/16 = ~52 // OSR=15: 采样率 = 15+1=16 // SBNS=0: 1个停止位 // BOTHEDGE=0: 接收端使用波特率时钟上升沿采样输入数据 // M10=0: 接收机和发射机使用7位到9位的数据字符 // RESYNCDIS=0: 支持在接收数据字期间重新同步 // LBKDIE, RXEDGIE=0: 禁用LIN中断,RX收入边缘中断 LPUART2->CTRL=0x000C0000 | (1<<21); // RE=1,TE=1: 使能接收及发送 // PE=0: 无奇偶校验 // M7,M,R8T9,R9T8=0: 8个数据位 // DOZEEN=0: 睡眠模式下LPUART正常启用 // ORIE,NEIE,FEIE,PEIE,TIE,TCIE,ILIE,MA1IE,MA2IE=0,RIE=1: 接收中断 // TXINV=0: 传输数据不是反向的 // IDLCFG=0: 1个空闲字符 // ILT=0: 空闲字符位计数在开始位之后开始 } /********************************************************************* * 函数原型:void UART2_transmit_char(char send) * 功 能:UART2发送一个BYTE的数据 * 输入参数:send--需要发送的字符数据 * 返回参数:无 * * 其他说明: *********************************************************************/ void UART2_transmit_char(char send) { /* Function to Transmit single Char */ while((LPUART2->STAT & LPUART_STAT_TDRE_MASK)>>LPUART_STAT_TDRE_SHIFT==0); /* Wait for transmit buffer to be empty */ LPUART2->DATA=send; /* Send data */ } void UART2_transmit_string(文字 data_string[],int len) { uint32_t i=0; for(i=0;i { UART2_transmit_char(data_string[i]); } UART2_transmit_char('\n');/* 改行 */ UART2_transmit_char('\r');/*帰る*/ } ボイド_printf(チャー・data_string[]) { UART2_transmit_string(data_string,strlen(data_string)); UART2_transmit_char('\n');/* 改行 */ UART2_transmit_char('\r');/*帰る*/ } typedef 構造体 { フロートP1; フロートP2; フロートP3; フロートP4; チャーCH; ダブルD1; ダブルD2; 無署名の長いruntime_sec。 int i1; char user_data[USER_DATA_SIZE]; } eeerom_data_t; __attribute__ ((section(".eeeprom"))) eeerom_data_t eeerom_data; ボイドWDOG_disable(ボイド) { WDOG->CNT=0xD928C520;/*ウォッチドッグのロックを解除*/ WDOG->TOVAL=0x0000FFFF;/*最大タイムアウト値*/ WDOG->CS = 0x00002100;/*ウォッチドッグを無効にする*/ } int main(void) { WDOG_disable(); SOSC_init_8MHz();/* 8MHz xtalのシステム発振器を初期化 */ SPLL_init_160MHz();/* 8MHz SOSCでSPLLを160MHzに初期化 */ NormalRUNmode_40MHz();/* 初期化クロック: 80 MHz sysclk & core, 40 MHz bus, 20 MHz flash */ //DISABLE_INTERRUPTS(); UART2_init(); //配置UART2 波特率9600 1个停止数 无校验位 UART2_NVIC_init_IRQs(); //配置中断优先级 UART2_PORT_init (); //配置GPIO复用为TX、RX _printf(「やるだけだ!」); EEE_Init(); EEE_Write_int32(123456,&eeerom_data.i1); EEE_Write_ByteArray(char* ソース,char* ターゲット,unsigned int サイズ) EEE_Write_Byte(rev,&eeerom_data.ch); while(1) { } /* GHS と IAR の警告メッセージを回避するには: statement is unreachable*/ #if 定義(__ghs__) #pragma GHS Nowarning 111 #endif #if 定義 (__ICCARM__) #pragma diag_suppress=PE111 #endif 0を返します。 } ボイドLPUART2_RxTx_IRQHandler(ボイド) { チャーレヴ; if (LPUART2->STAT & 0x00200000) { rev = LPUART2->データ; EEE_Write_int32(123456,&eeerom_data.i1); EEE_Write_Byte(rev,&eeerom_data.ch); UART2_transmit_char(eeerom_data.i1); if((LPUART2->STAT & LPUART_STAT_TDRE_MASK)>>LPUART_STAT_TDRE_SHIFT!=0) //判断发射是否空闲 { LPUART2->DATA = 回転数; } } } Re:例:EEEPROMの使用S32K144 - SDKなし <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> .elfをフラッシュしている場合、このオプション「デバイスのパーティションを保持する」を選択するにはどうすればよいですかコマンドラインを使用してS32K144ボードにファイルしますか? Re:例:EEEPROMの使用S32K144 - SDKなし <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> パーティションの保持はうまくいくはずですが、PE Microのバグのために失敗しました。 PE Microのバグチケットを作成します。 ジリ Re:例:EEEPROMの使用S32K144 - SDKなし <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> Hi,  最後に-私は問題を再現することができます-このスレッドを続けていただきありがとうございます。私の場合、コードに変更がないことに気づいていませんでした。したがって、コードが変更されると、DFLASHは保持されますが、エミュレートされたEEPROMパーティションは削除され、保存されたデータは失われ>。PE Microでパーティションを使用しようとしましたが、何らかの理由でpegdbserverが常にクラッシュします。私はいくつかの回避策を見つけようとします。 ジリ Re:例:EEEPROMの使用S32K144 - SDKなし <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> Hi, このドライブリンクからプロジェクトを見つけてください。 https://drive.google.com/open?id=1y6wSOSQxKFGRDP5BbzGReuhgXhI0t98n 設定の問題点やEEE_Init問題点があればお知らせください。 ありがとうございます Sakthivel K Re:例:EEEPROMの使用S32K144 - SDKなし <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> Hi,  まだプロジェクトが届いていません。もう一度送信してください - または、メモリ保存の問題に関連する新しいコミュニティスレッドを作成できます。 ジリ Re:例:EEEPROMの使用S32K144 - SDKなし <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 私は自分のプロジェクト@ " [email protected]" < [email protected] >, コメントループで添付ファイルを見つけることができないため、共有しました。 ぜひご覧いただき、ご意見をお聞かせください。 ありがとうございます Sakthivel K Re:例:EEEPROMの使用S32K144 - SDKなし <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> Hi,  まあ - それはまさにメモリ保持が使用されるものです - そして問題なく動作しています。プロジェクトには別の問題があるはずです。基本は、エミュレートされた EEPROM (FTFC->FCNFG->EEERDY = 1) としてパーティション化された EEERAM とメモリ保存です。一番上の例はあなたのために働いていますか?可能であれば、プロジェクトを私と共有していただけませんか?見ていきます。 Jiri Re:例:EEEPROMの使用S32K144 - SDKなし <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> はい、私の設定の下に、 シーケンスは次のとおりです。 ►FlexRAM (14000000) の書き込み ►Reset  ►EEPROMにマッピングされた構造体変数を確認します。(14000000)-わかりました ►EVBボード上のOPENSDAによるアプリケーションビルドとフラッシュのモディティ。 ►Reset ・EEPROM(14000000)データにマッピングされた構造体変数が消去されることを確認します。-NOKの D-Flashレンジを保持しているのに、なぜデータが上書きされているのですか? 私の要件はそれです ユーザーが一度だけデータを構成した場合は、プログラムの更新(再フラッシュ)によってデータを消去しないでください。これは、構成データの更新ではなく、プログラムの更新だけです。 Re:例:EEEPROMの使用S32K144 - SDKなし <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> Hi,  DFLASHメモリを保持している場合(完全なDFLASHは0x10000000〜0x1000FFFF)、PE Microは保存されたデータを書き換えません。 また、[Emergency kinetisデバイス・リカバリ]がオフになっていること、およびPE Microを使用してパーティショニングを実行していないことも確認してください。 Jiri Re:例:EEEPROMの使用S32K144 - SDKなし <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> あなたの情報をありがとう、 これで、FlexRAMで書き込みデータを取り戻すことができますが、別の問題があるのは、再フラッシュによって書き込まれたデータが消去されることです。 この問題を解決するために私は何をすべきですか? リンカファイルを変更する必要がありますか? リンカファイルのどの部分を変更する必要がありますか? Sakthivel K Re:例:EEEPROMの使用S32K144 - SDKなし <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> FTFC->FCNFG->EEERDYビットが1に設定されているか確認してからEEE_Writeしてください。あなたの設定では、標準RAMとして使用されるEEERAM領域のようです。 ジリ Re:例:EEEPROMの使用S32K144 - SDKなし <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 再度尋ねるのは申し訳ありませんが、 どうぞ手を貸して下さい デバッガでワンストップ(パーティションなし、RAMデータ更新なし) 注:オフ:緊急時のKinetisデバイスリカバリ(未使用)、PE構成でパーティションを使用しません 関数が実行されEEE_Write RAMの場所を更新します 私は添付の例EEE_Init()と同じものを使用しました。 @starup RAM 構造の場所が更新されません ありがとうございます Sakthivel K Re:例:EEEPROMの使用S32K144 - SDKなし <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 私が述べたように、Init_EEPROMにはバグがあります(現在の例のバージョンは修正されています)。論理的なものの代わりにバイナリ&を使用してください。 if ((FTFC->FCNFG & FTFC_FCNFG_EEERDY_MASK) == 0U) 緊急時のKinetisデバイスのリカバリはメモリ保持よりも優先されるため、使用しないでください。また、パーティション分割は使用しないでください - それはInit_EEPROMによって行われます。 私にとっては、例の設定は問題なく機能しています。デバッグ設定: 新しく開始されたデバッグセッション - WDOG_Disable() の 1 ステップ後 (パーティショニングが実行された最後の 1 ステップの直後): データの確認もできます お役に立てば幸いです。 Jiri Re:例:EEEPROMの使用S32K144 - SDKなし <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 以下の順序と構成を確認してください 1) PE の設定 2)UART出力 3) Firmware. メイン() Init_EEPROM() 問題: 書き込み-読み取りシーケンスOKの場合 読み取りシーケンス -NOK のみの場合 お願いします、あなたが私に何か見逃している何かを教えてもらえますか? Re:例:EEEPROMの使用S32K144 - SDKなし <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> ええと、それは場合によります。リンカファイルに特別なセクションがあり、たとえば例のような構造を使用している場合EEE_RAM_usage EEE_Readは必要ありません。現在のデータはすでに変数存在しています。 GENY Generation CANの運転経験がない方技術的には、S32K144リソースに収まる汎用Cコードであれば、それを使用できます。GENYドライバーとHW CANバスレイヤー間のインターフェースを実装する必要がありますが、これはチップ固有の部分です。 Jiri Re:例:EEEPROMの使用S32K144 - SDKなし <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> ご回答ありがとうございます、今日はすぐにシーケンスを確認させてください。 それは、スペクティファイメモリからコンタンを読み取るためのこの機能なのでしょうか? int EEE_Read_int32(int* ターゲット) { uint32_tデータ; 一方 ((FTFC->FSTAT & FTFC_FSTAT_CCIF_MASK) == 0){} データ = *(uint32_t *)ターゲット; データを返します。 } 重要な注意点::S32k144 MCUでGENY世代のCANドライブを使用することは可能ですか?OEMをサポートしているため、CAN通信をサポートするためのGENYジェネレーションCANドライブと診断ドライブをアプリケーションに含める必要があります。 私の質問は、S32K144 MCUでGENY Driveを使用することは可能ですか? ありがとうございます Sakthivel k Re:例:EEEPROMの使用S32K144 - SDKなし <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 大丈夫なはずです。ただし、緊急時のKinetisリカバリが有効になっていないこと、および0x10000000から0x1000FFFFまでのメモリ範囲が保持されていることを確認してください。 EEE_Read関数は何をしますか?通常、特別な読み取りなしで利用可能なデータです。EEERAM エリア (0x14000000+) にマップされた変数は、初期化された変数のように動作します。起動時には、最後に保存された値があります。 Jiri Re:例:EEEPROMの使用S32K144 - SDKなし <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 更新していただきありがとうございます。 リセットとは、両方の方法を意味します(EVBリセットボタンとPEによる再フラッシュ) 注:例:EEEPROMの使用S32K144で説明したように、PE設定を行いました  私のプログラムシーケンスを確認してください。 1.EEE_Write 2.EEE_Read (確認) 3. Stop Debug  4.EEE_Write機能にコメントを付ける 5.デバッガの実行 6.EEE_Read(Set Breakpoint)は、すでに書き込まれたデータが利用可能であることを確認しますか? このシーケンスには問題がありますか? 私のプロジェクトの要件、 CANからEEPROMへのユーザー設定、リセットが発生すると、アプリケーションはユーザーパラメータを読み取り、チェックプロセスのためにローカルに保存する必要があります。 上記のシーケンスは私の要件に適合しますか? ありがとうございます Sakthivel K Re:例:EEEPROMの使用S32K144 - SDKなし <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> Hi,  混乱させて申し訳ありません - 私はテストする時間があまりありません - 私はEEE_Init()に論理的なバイナリと演算子を入れました。EEE_Init() が機能していませんでした。添付ファイルでは例が更新されています。 Example EEE_Init() 関数を使用すると、データは自動的に EEERAM マップ構造体に読み込まれます。リセットとは、EVBのリセットボタンを押すか、PE Microで再点滅することを意味しますか?メモリ保持なしで再フラッシュすると、DFLASH領域が消去されます。 Jiri Re:例:EEEPROMの使用S32K144 - SDKなし <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> @ジリ・クラル あなたの更新のためにThaks、 もう一つ質問があります。 FLEXRAMに書き込んだデータ、それらのデータがD-Flashのバックグラウンドプロセスにコピーされていることをどのように確認すればよいですか? FlexRAMへの書き込み後、RAMの場所に使用できないデータをリセットすると、 旧: EEE_Write_int32(123456,&eeerom_data.i1); リセット EEE_Read_init32(&eeprom_data); この場所のデータ FFFFFFFF Plase、書き込んだデータをどのように確認できるか教えていただけますか? ありがとうございます Sakthivel k 
記事全体を表示
S32 Power 设计工作室 v1.2 - 更新 1 现已发布 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />         产品发布公告 汽车微控制器和处理器 S32 Power 设计工作室 v1.2,更新 1 1           新增内容 S32 软件开发套件(S32 SDK v0.8.0 EAR)是一套广泛的外设驱动程序、RTOS、堆栈和中间件,旨在简化和加速 NXP Power MPC5748G和MPC5746C微控制器上的应用程序开发。 发行说明可在此处获取: http://www.nxp.com/docs/en/release-note/C55_SDK_EAR_0.8.0-RN.pdf 安装说明 此更新适用于 在线的 (Eclipse 更新程序)或 离线 (直接下载链接)安装。   在线的 安装:进入菜单“帮助”->“安装新软件...”对话框 选择预定义的 NXP S32 Design Studio 更新存储库http://www.nxp.com/lgfiles/updates/Eclipse/S32DS_POWER_1_2/com.freescale.s32power.updatesite 选择所有可用项目并单击“下一步”按钮 离线 安装: 转到 S32 Design Studio 产品页面 -> 下载部分或使用直接下载链接 下载“S32 Design Studio for Power v1.2 - Update 1”文件。   启动 S32DS 并转到“帮助”->“安装新软件...” 添加一个新的“ Archive ”存储库并浏览以选择下载的 Update 1 存档文件: 选择所有可用项目并单击“下一步”按钮。 概述
記事全体を表示
DPAA 中的速率限制 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 目前,TX 端仅支持通过 IOCTL 调用FM_PORT_IOC_SET_RATE_LIMIT 来实现速率限制。需要实现一个用户空间应用程序,用于打开 TX 端口的字符驱动接口并发出 IOCTL 调用。为了实现该限制,需要填充 rate_limit 结构体(下文会提到)。   例如:   fd =打开(“/ dev / fm0_port_tx5”, O_RDWR);   err = ioctl(fd, FM_PORT_IOC_SET_RATE_LIMIT, &fm_port);   传递给 IOCTL 的结构: /**************************************************************************//** @Description@@ 用于定义 Tx 速率限制的结构 (必须与 fm_port_ext.h 中定义的 struct t_FmPortRateLimit 匹配) *//***************************************************************************/ typedef struct ioc_fm_port_rate_limit_t{ uint16_t max_burst_size; /**< 以 KB 为单位的 Tx 端口,以帧为单位 用于离线解析端口。(注意 对于早期芯片突发大小 四舍五入为 1000 帧的倍数)。*/ uint32_t rate_limit; /**< 以 Kb/秒为单位的 Tx 端口,以帧/秒为单位的 离线解析端口。速率限制是指 数据速率(而不是线路速率)。*/ ioc_fm_port_dual_rate_limiter_scale_down rate_limit_divider; /**< 仅用于离线解析端口。无效 对于一些早期的芯片版本 */ } ioc_fm_port_rate_limit_t; 更多信息请参见下面的链接。 http://www.freescale.com/infocenter/index.jsp?topic=%2FQORIQSDK%2F2283674.html QorIQ LS1设备
記事全体を表示
使用 IMX8MM 在 OV5640 上进行自动对焦 大家好, 我想为 OV5640 配置 IMX8MM 自动对焦功能。我的BSP版本是5.4.70。有人能给我提供线索吗? 谢谢! Ajita #imx8mm #ov5640 i.MX 8M | i.MX 8M Mini | i.MX 8M Nano 回复:使用 IMX8MM 在 OV5640 上进行自动对焦 Hi @Bio_TICFSL , 谢谢您的回复。 那些想要在 IMX8MM 上将自动对焦与 OV5640 集成的人。请点击以下链接进行参考: https://github.com/boundarydevices/linux/tree/boundary-imx_5.15.y/drivers/media/platform/mxc/capture 根据您的 BSP 更改内核版本。通过引用上述目录中预设的文件,您可以启用以下功能: Auto focus functionality自动对焦功能 您需要有带有 VCM 的 OV5640 模块。上述驱动程序实现不支持连续自动对焦。用户每次都需要传递“ v4l2-ctl -d /dev/video0 -c auto_focus_start=1 ”命令来获取焦点。 谢谢! Ajita 回复:使用 IMX8MM 在 OV5640 上进行自动对焦 Hello, 自动对焦在dts文件中没有定义,应该在ISP v4l2 API中支持,可以参考如下文档: “ https://www.nxp.com/products/processors-and-microcontrollers/arm-processors/i-mx-applications-proces… ” 如需了解更多详细信息,请联系专业服务支持团队 “ https://www.nxp.com/support/support/nxp-engineering-services/professional-support-for-processors-and…… ” 此致
記事全体を表示
eIQ 示例应用程序 - 手写数字识别 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 此 实验室 2 解释了如何使用 e IQ ™ ML 软件开发环境 在 i.MX8 板上开始使用 MNIST 手写数字 应用程序演示。 eIQ 示例应用程序 - 概述 eIQ 示例应用 - 介绍 获取在 Code Aurora 上可用的源代码: 手写数字识别 MNIST 手写数字 MNIST是一个大型手写数字数据库,常用于训练各种图像处理系统。本节对手写数字识别的Caffe和TensorFlow模型进行了比较。这些应用程序所使用的数据集来自Yann Lecun 。这是一个 MNIST 数据集示例: 设置电路板 步骤 1 - 创建以下文件夹并授予其如下权限: root@imx8mmevk:~# mkdir -p /opt/mnist root@imx8mmevk:~# chmod 777 /opt/mnist   第 2 步- 为了轻松地将演示部署到开发板上,请使用ifconfig命令获取开发板的 IP 地址,然后按如下所示设置IMX_INET_ADDR环境变量: $ export IMX_INET_ADDR=   设置主机 步骤 1 - 从 NXP eIQ(TM) 机器学习支持中 获取 eIQ 工具链( 3.2.9. 生成工具链 ) 。 第 2 步- 安装工具链: $ chmod +x .sh $ ./ .sh 这提供了在x86机器上构建ARM64应用程序所需的所有设置。 步骤 3-从eIQ Sample Apps下载应用程序。 步骤 4-获取模型和数据集。以下命令行为演示创建所需的文件夹结构并检索mnist数据集以及Caffe和TensorFlow模型: $ mkdir -p bin data model $ wget -qN https://github.com/ARM-software/ML-examples/raw/master/armnn-mnist/data/t10k-images-idx3-ubyte -P data/ $ wget -qN https://github.com/ARM-software/ML-examples/raw/master/armnn-mnist/data/t10k-labels-idx1-ubyte -P data/ $ wget -qN https://github.com/ARM-software/ML-examples/raw/master/armnn-mnist/model/lenet_iter_9000.caffemodel -P model/ $ wget -qN https://github.com/ARM-software/ML-examples/raw/master/armnn-mnist/model/simple_mnist_tf.pb -P model/ $ wget -qN https://github.com/ARM-software/ML-examples/raw/master/armnn-mnist/model/simple_mnist_tf.prototxt -P model/ $ wget -qN https://github.com/ARM-software/Tool-Solutions/raw/master/ml-tool-examples/mnist-draw/model/optimized_mnist_tf.pb -P model/ 步骤 5-使用 eIQ 工具链编译源代码: $ ${CXX} -Wall -Wextra -O3 -std = c++14 caffe_inference.cpp -o caffe_inference -larmnn -larmnnCaffeParser $ ${CXX} -Wall -Wextra -O3 -std = c++14 tensorflow_inference.cpp -o tensorflow_inference -larmnn -larmnnTfParser 步骤 6-将构建的文件部署到主板: $ scp -r caffe_inference tensorflow_inference 数据/模型/root@ ${IMX_INET_ADDR} :/opt/mnist 推理比较应用 步骤 1 - 在用户空间,进入包含演示文件的mnist文件夹: root@imx8mmevk:/opt/mnist# mnist文件夹结构应该是这样的: │... ├── caffe_inference ├── tensorflow_inference ├── data │├── t10k-images-idx3-ubyte │└── t10k-labels-idx1-ubyte ├── model │├── lenet_iter_9000.caffemodel │├── optimized_mnist_tf.pb │├── simple_mnist_tf.pb │└── simple_mnist_tf.prototxt 第 2 步- 运行应用程序: 注意:为了运行这些应用程序,请提供所需的预测数量,由于数据集有 10K 张图像,因此预测数量可以从0到9999不等。 1 - 使用 Caffe 进行手写数字识别 root@imx8mmevk:/opt/mnist# ./caffe_inference 10 [0] Caffe >> Actual: 7 Predict: 7 Time: 0.0336484s [1] Caffe >> Actual: 2 Predict: 2 Time: 0.028399s [2] Caffe >> Actual: 1 Predict: 1 Time: 0.0283713s [3] Caffe >> Actual: 0 Predict: 0 Time: 0.0284133s [4] Caffe >> Actual: 4 Predict: 4 Time: 0.0280637s [5] Caffe >> Actual: 1 Predict: 1 Time: 0.0281574s [6] Caffe >> Actual: 4 Predict: 4 Time: 0.0285136s [7] Caffe >> Actual: 9 Predict: 9 Time: 0.0283779s [8] Caffe >> Actual: 5 Predict: 5 Time: 0.0283902s [9] Caffe >> Actual: 9 Predict: 9 Time: 0.0283282s Total Time: 0.296081s Sucessfull: 10 Failed: 0 2 - 使用 TensorFlow 进行手写数字识别 root@imx8mmevk:/opt/mnist# ./tensorflow_inference 10 [0] Tensor >> Actual: 7 Predict: 7 Time: 0.00670075s [1] Tensor >> Actual: 2 Predict: 2 Time: 0.00377025s [2] Tensor >> Actual: 1 Predict: 1 Time: 0.0036785s [3] Tensor >> Actual: 0 Predict: 0 Time: 0.0036815s [4] Tensor >> Actual: 4 Predict: 4 Time: 0.00372875s [5] Tensor >> Actual: 1 Predict: 1 Time: 0.003669s [6] Tensor >> Actual: 4 Predict: 4 Time: 0.00367825s [7] Tensor >> Actual: 9 Predict: 9 Time: 0.0036955s [8] Tensor >> Actual: 5 Predict: 6 Time: 0.00367488s FAILED [9] Tensor >> Actual: 9 Predict: 9 Time: 0.0036025s Total Time: 0.0414569s Sucessfull: 10 Failed: 1 注意:参数10是指每次测试的预测次数。 这些测试对输入的 MNIST 数据集图像(实际)运行推理,显示推理结果(预测)以及完成预测所需的时间。该测试的输入图像为二进制形式,可在 Yann Lecun 的 t10k-images-idx3-ubyte.gz 包中找到。 通过输出结果可以发现, Caffe模型比TensorFlow慢,但是准确率也比后者高。改变论点来比较两个模型之间的进一步结果。 转到eIQ 示例应用程序 - 使用 OpenCV DNN 进行对象识别。 i.MX 8 回复:eIQ 示例应用程序 - 手写数字识别 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> Hi Iris, 很高兴一切顺利。感谢 makefile 规则,它将很有用 :smileygrin: 我将在几天后在 CAF 上更新文档。 谢谢! 迭戈 回复:eIQ 示例应用程序 - 手写数字识别 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> Hi diegodorta‌, 感谢您的解决方案。我下载了“mnist_loader.hpp”并将其放置在正确的路径下,然后编译成功。在我的主板上运行时也显示出了类似的结果。 为了方便起见,我创建了一个用于编译的Makefile ,附后供大家参考。(我不知道如何在评论中附加文件。所以我直接在下面写。) 全部:caffe_inference tensorflow_inference caffe_inference:caffe_inference.cpp ${CXX} -Wall -Wextra -O3 -std=c++14 $^ -o $@ -larmnn -larmnnCaffeParser tensorflow_inference:tensorflow_inference.cpp ${CXX} -Wall -Wextra -O3 -std=c++14 $^ -o $@ -larmnn -larmnnTfParser 干净的: -rm -f caffe_inference tensorflow_inference 回复:eIQ 示例应用程序 - 手写数字识别 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> Hi Iris, 感谢您的举报,您说得完全正确!我将修复文档中的链接,并重写自述文件,使其更清晰以供进一步参考:smileygrin: 同时,关于“mnist_loader.hpp”您可以在这里找到头文件。您能否测试一下并看看它是否适合您? 谢谢! 迭戈 回复:eIQ 示例应用程序 - 手写数字识别 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> Hi diegodorta‌, 我在重现这个演示时遇到了一些问题。 1. 然后链接“步骤 3 - 从下载应用程序 eIQ 示例应用程序”不可用。当我打开它时,它显示“未找到路径”。那么正确的路径是什么? 2.我猜测链接src \ handwritten_digit \ examples-armnn - eiq_sample_apps可能是正确的,并下载了它。但是我无法编译它,因为没有“armnn/****.hpp”。 你能帮我解决吗?
記事全体を表示
蜂窝LDMOS终端 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> Demo 恩智浦拥有适用于蜂窝基站的全系列高功率LDMOS驱动器和终端。我们的蜂窝LDMOS产品组合提供业界领先的性能,其强大高效的产品面向全球快速增长的频率和地区。此演示墙展示了覆盖575至2400 MHz所有蜂窝频段的全新器件。 产品 A2V09H300-04N 48 V LDMOS解决方案 • 频率 720-960 MHz • 8 dB OBO 下的最终 Doherty 性能 • 增益 19.5 dB • 效率 53% • 峰值功率 56 dBm • OM-780-4 封装 A2V07/09H400-04N 48 V LDMOS解决方案 • 频率 575–960 MHz • 8 dB OBO 下的最终 Doherty 性能 o 增益 18 dB 效率 53% • 峰值功率 57.5 dBm • OM-780-4 封装 A2V07/08/09H525-04N 48 V LDMOS 解决方案 • 频率 575–960 MHz • 8 dB OBO 下的最终 Doherty 性能 增益 18.7 dB 效率 53% • 峰值功率 58.5 dBm • OM-1230-4L 封装 A2T23H200W23S 28 V LDMOS解决方案 • 频率 2300–2400 MHz • 8 dB OBO 下的最终 Doherty 性能 增益 15.5 dB 效率 50% • 峰值功率 55 dBm • ACP-1230-4L2S 封装 A3T18H360W23S 28 V LDMOS解决方案 • 频率 1805–1880 MHz • 8 dB OBO 下的最终 Doherty 性能 增益 17.5 dB 效率 53% • 峰值功率 55.5 dBm • ACP-1230-4L2S 封装 A3T21H450W23S 28 V LDMOS解决方案 • 频率 2110-2200 MHz • 8 dB OBO 下的最终 Doherty 性能 增益 15.5 dB 效率 49.5% • 峰值功率 57.4 dBm • ACP-1230-4L2S 封装 通信基础设施
記事全体を表示
S32G-VNP-RDB3評価ボードの回路図/ AT-F DTSの不一致 S32G-VNP-RDB3 ボード上の arm trusted ファームウェアの回路図とデバイス ツリーを見ていると、PFE ピンに対するネット名と pinctrl 機能が一致しないように見えます。 これは、S32G 側で RGMII_B_* ネット ピンが PFE_MAC2_* とラベル付けされていることを示す回路図の図です。 デバイスツリーを見て、S32G3_IOMUX.xlsx spreedsheetを相互参照すると、実際には内部でPFE_MAC0_*にマップされていることがわかります。 これは、デバイスツリー@ https://github.com/nxp-auto-linux/arm-trusted-firmware/blob/0cd12bb2630a23e760683bf3d911e3c1e282efd5/fdts/s32g.dtsi#L1141C1-L1328C1 からのスニペットです そして、ここには、ピンの機能グループがスプレッドシートに従ってどのようにマップされるかを示すコメントを追加しました... pfe0_pins: pfe0 { pfe0_grp0 { pinmux = , /* PFE_MAC0_TX_EN_O */ , /* PFE_MAC0_TXD_O[1] */ , /* PFE_MAC0_TXD_O[2] */ , /* PFE_MAC0_TXD_O[3] */ ; /* PFE_MAC0_TXD_O[0] */ output-enable; slew-rate = ; }; pfe0_grp1 { pinmux = , /* GPIO / PFE_MAC0_RX_CLK_I */ , /* GPIO / PFE_MAC0_RXDV_I */ , /* GPIO / PFE_MAC0_RXD_I[0] */ , /* GPIO / PFE_MAC0_RXD_I[1] */ , /* GPIO / PFE_MAC0_RXD_I[2] */ ; /* GPIO / PFE_MAC0_RXD_I[3] */ input-enable; slew-rate = ; }; pfe0_grp2 { pinmux = ; /* PFE_MAC0_TX_CLK_O */ output-enable; slew-rate = ; bias-pull-up; }; pfe0_grp3 { pinmux = , /* GPIO / PFE_MAC0_RX_CLK_I */ , /* GPIO / PFE_MAC0_RXDV_I */ , /* GPIO / PFE_MAC0_RXD_I[0] */ , /* GPIO / PFE_MAC0_RXD_I[1] */ , /* GPIO / PFE_MAC0_RXD_I[2] */ ; /* GPIO / PFE_MAC0_RXD_I[3] */ }; }; それで私の質問は基本的に、回路図のS32Gサイドネットは誤ってラベル付けされており、実際にはPFE_MAC0_*と読むべきですか?私はこれをカスタムデザインの参照として使用しており、正しい理解があることを確認したいと思います。感謝。 Re:S32G-VNP-RDB3評価ボードの回路図/ AT-F DTSの不一致 Hello @minersrevolt , 私が見る限り、あなたはあなたの疑問を解決することができました。それでよろしいですか。そうでない場合は、私たちがあなたをサポートできるように、まだ持っている可能性のある正確な未解決のポイントまたは疑問をお知らせください。 ありがとうございます Re:S32G-VNP-RDB3評価ボードの回路図/ AT-F DTSの不一致 Linux DTS を見ると、機能グループは実際には MAC2 と一致しているように見えます。したがって、同期していないのは AT-F だけです。https://github.com/nxp-auto-linux/linux/blob/adceb7e8fa72c4f26207356a5a33b55b0838717f/arch/arm64/boot/dts/freescale/s32gxxxa-rdb.dtsi#L341C1-L398C4 pfe2mdiob_pins: pfe2mdiob_pins { pfe2mdiob_grp0 { pinmux = ; output-enable; slew-rate = ; }; pfe2mdiob_grp1 { pinmux = ; output-enable; input-enable; slew-rate = ; }; pfe2mdiob_grp2 { pinmux = ; }; }; pfe2rgmiib_pins: pfe2rgmiib_pins { pfe2rgmiib_grp0 { pinmux = , , , , ; output-enable; slew-rate = ; }; pfe2rgmiib_grp1 { pinmux = , , , , , ; input-enable; slew-rate = ; }; pfe2rgmiib_grp2 { pinmux = , , , , , , ; }; pfe2rgmiib_grp3 { pinmux = ; output-enable; slew-rate = ; bias-pull-up; }; };
記事全体を表示
i.MX v5 のピン ツールが利用可能になりました <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> この度、Pins Tool for i.MX Applications Processors v5 がリリースされました。   i.MX アプリケーションプロセッサ用のピンツールは、ピンルーティング構成に使用されます。 ピンの機能/電気的特性を含む検証とコード生成 電源レール、ランタイム構成。 特長 デスクトップアプリケーション 多重化とピン構成と整合性チェック付き マルチコアのサポート 英語および簡体字中国語にローカライズ Mostly Connected:オンデマンドデバイスデータダウンロード あらゆるコンパイラやIDEと統合 ロケール設定に基づいて、英語と中国語 (簡体字) の言語をサポートします。詳細については、ユーザーマニュアルを参照してください。 ANSI-C 初期化コード グラフィカル・プロセッサ・パッケージ・ビュー 複数の設定ブロック/機能 使いやすいデバイス構成 ピンとペリフェラルの選択 IPブロック付きパッケージ 電気的特性を持つ配線ピン 構成済み値とリセット値で登録 電圧レベルが割り当てられた電源グループ C/C++ アプリケーションのソース コード 文書化され、理解しやすいソースコード CSV レポートとデバイス ツリー ファイル     ダウンロード すべてのプラットフォーム用インストーラーをダウンロードするには、次の方法でダウンロードサイトにログインしてください。 http://www.nxp.com/pinsimx インストールとクイックスタートガイドについては、 ピンツールのドキュメントを参照してください。   変更の概要 - バージョン 5 新しいコンフィギュレーション ウィザードでは、マルチコア プロセッサのデフォルト コアを指定できます。 Data Manager - ダウンロードしたデータ、そのバージョン、ツールのサポート情報の概要、古い更新、または新しいデータを手動でダウンロードできます。 [Routed Pins] ビューでサポートされているピンのコピー/貼り付け。 ツール内チュートリアルを追加しました - eclipse Cheat Sheets の統合。 変更の概要 - バージョン 4.1 元に戻す/やり直しがサポートされています。 Eclipse Oxygen Release 3に基づく製品。 統合されたインポートウィザード。単一のインポートソースが実装されます。これにより、サポートされているすべてのタイプのCファイルをインポートできます。 コミュニティ i.MX プロセッサ 
記事全体を表示
KSDK项目生成器-BUG解决方法 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 当你需要创建 ig 的副本/克隆时作为 FreeRTOS 的独立项目的 web_hvac 示例,您可能会遇到这个问题。 不可能使用该副本进行工作。 为什么?缺少RTOS和LIB文件夹。   问题: 你开始克隆示例 缺少 RTOS 文件夹 还缺少示例所需的库 ksdk_freertos_lib 无法编译该项目,因为项目中缺少上述文件夹 解决方法: 只需从 C:\Freescale\KSDK_1.3.0 添加文件夹 rtos 对于库也是一样,您可以从 C:\Freescale\KSDK_1.3.0\lib 添加到文件夹 导入 .wsd文件 Wsd 文件已成功导入,库已包含 构建成功完成   我希望这对你有帮助。 Iva 概述 回复:KSDK项目生成器-BUG解决方法 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> Hello Allen, 不幸的是没有。 当您将项目生成为独立项目时会出现此问题。 当您将项目生成到user_apps文件夹时,没有任何问题,并且可以正常工作。 祝你今天过得愉快。 -Iva 回复:KSDK项目生成器-BUG解决方法 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> Iva, KSDK 项目生成器 2.0 版本中是否已更正此问题? Allen
記事全体を表示
SPIFI ライブラリを LPC4370 と共に使用する。 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> このドキュメントでは、SPIFIライブラリバージョン1.03をLPC4370で使用するプロジェクトの作成方法について説明します。このためには、次のツールが必要になります。 MCUXpresso IDE 10.2. Link LPC-LINK2は、LPC4370の評価ボードとして使用します。リンク 外部デバッガー。私の場合は、別のLPC-LINK2ボードを使用しました。 LPC4370用のLPCOpen v2_12、このバージョンにはMCUXpresso IDEのインストールが付属しています。 SPIFI ライブラリ v1.3。リンク コード例 lpcopen_2_12_lpcxpresso_ngx_xplorer_1830_SPIFI_v1.0。リンク まず、必要なすべてのツールをダウンロードしてインストールします。 MCUXpressoのワークスペースに、LPC4370用のLPCOpen v2_12の (1) 3つのプロジェクト( periph_blinky、 lpc_board_nxp_lpclink2_4370 、 lpc_chip_43xx)をインポートします。LPCOpen zip ファイルは、PC の次のパスにあります: C:\nxp\MCUXpressoIDE_10.2.1_795\ide\Examples\LPCOpen (2) lpclibspifi_lpcxpresso_1.03_68という名前のzipファイルを抽出します以前にダウンロードしたもの。必要なフォルダは spifilib_m4fです。このフォルダをLPC4370のワークスペースのプロジェクトエクスプローラーにドラッグアンドドロップし、[コピー]を選択した後、プロジェクトエクスプローラーに spifilib_m4f が表示されます。 SPIFI ライブラリを正しくインポートしたら、プロジェクト エクスプローラー ウィンドウでライブラリ (1) を選択し、ビルド (2) します。これを行うと、Debug という新しいフォルダが表示されます (3)。 次に、 periph_blinky 例のプロパティを編集して、ライブラリ spifilib_m4f をプロジェクトに追加する必要があります。これを行うには、プロジェクトを右クリックして[プロパティ]をクリックします。 プロパティウィンドウで、C/C++ビルド (1) > 設定 (2) > インクルード (MCU Cコンパイラのセクションの下) (3)をクリックします。 インクルードウィンドウで、[追加...] をクリックします。 (1) >ワークスペース (2) > spifilib_m4f (3) >inc (4) >フォルダ選択ウィンドウでOK (5) をクリックし>ディレクトリパスの追加ウィンドウでOK (6) をクリックします。 インクルードパスには次のように表示されます。 次に、MCUリンカのセクションにあるライブラリ (1) オプションに移動し、ライブラリ(-I)のセクションで[追加]をクリックします。 (2) 最後にライブラリの名前(spifilib_m4f)( 3) を書き、[OK ](4)をクリックします。 [ライブラリ検索パス](-L)セクションで、[追加]をクリックします...(1) >ワークスペース (2) > spifilib_m4f (3) > デバッグ (4) > OK (5) 下の画像に示すように表示されている場合は、問題ないので、[適用]をクリックして閉じます。 以下の手順が正しく行われたかどうかを確認するために、次の手順を実行しましょう。プロジェクトperiph_blinkyファイルsystick.c内spifilib_api.h ファイルを含めますそして、プロジェクトをコンパイルします。プロジェクトが問題なくコンパイルされた場合は、spifi ライブラリを正しくインポートしたことを意味します。問題が見つかった場合は、停止して、前述のすべての手順を繰り返してください。 ライブラリを正常に追加したので、以前にダウンロードしたLPC1830の例の移行を開始できます。まず、 lpcopen_2_12_lpcxpresso_ngx_xplorer_1830_SPIFI_v1.0 ファイルを解凍します。ファイルを解凍したら、次のパスに移動します: spifilib_blinky >例>src。Blinky.cという名前のファイルを開きますをクリックし、ファイルのすべての内容をコピーします。次に、プロジェクトperiph_blinky内のMCUXpressoのワークスペースにあるsystick.cファイルに移動し、このファイルのすべてのコンテンツを削除して、前にコピーしたものを貼り付けます。この時点でコンパイルしないと、複数のエラーが表示されます。 PC spifilib_blinky >src>パス の例に戻ります。spifi_setup.cというファイルをドラッグアンドドロップしますワークスペース上のプロジェクトperiph_blinkyのフォルダsrcに格納します。 ワークスペースにコピーしたばかりのファイルを開き、コードの46行目に移動します。ここでは、後でSPIFIに書き込むために使用する64KBのバッファを作成しています。__BSS(RAM3)は、このバッファをメモリのRAMブロック3に保存することです。ここでの問題は、LPC4370内のRAM3のブロックが64KBのバッファを格納するのに十分な大きさではないため(下の画像を参照)、バッファを格納するのに十分な大きさのRAMまたはRAM2のいずれかにこれを変更しましょう。 spifi_setupファイルを追加したので、systick.cに戻りましょう。ファイルを作成し、関数 spifiSetUp の外部宣言を追加します。この時点で、プロジェクトをコンパイルすると、問題は発生せず、使用していない関数と変数による警告が表示されるだけです。 私たちはほとんど終わっていますが、最も重要なことを見逃しています。このデモでは、SPIFIメモリの書き込み、削除、および読み取りを行うため、SPIFIフラッシュメモリから実行することはできません。これを作成するすべての機能をRAMメモリに移動する必要があります。これが、systick.cファイルでSPIFIと直接対話する関数はありませんが、これにより、SPIFIメモリと対話するすべての関数をRAMに移動する作業がはるかに簡単になります。関数 spifiSetUp は、SPIFI ですべてのテストを行う関数であり、 spifi_setup ファイルに含まれているため、このファイル全体を SPIFI ライブラリと共に RAM に移動する必要があります。 3つの異なるスクリプトを使用して、ライブラリとファイルspifi_setup RAMに移動します。これについての詳細は、次のコミュニティ投稿で学ぶことができます: https://community.nxp.com/thread/389110.まず、 プロジェクトのフォルダ>新しい>フォルダを右クリックし、フォルダの名前は linkscriptsである必要があります。 前述のコミュニティ投稿の「特定のオブジェクトをRAMに再配置する」および「特定のライブラリをRAMに再配置する」のセクションによると、この新しいフォルダに3つのファイルを作成する必要があります: main_text。ldt、main_rodata.ldt、および main_data.ldt。これを行うには、新しい>ファイル>フォルダlinkscriptsを右クリックします。 作成したばかりの3つのファイルに必要なコンテンツは次のとおりです。太字のテキストはファイルに含まれないでください、それは参照用です! File main_data.ldt *libspifilib_m4f.a:(.text*) *libspifilib_m4f.a:(.rodata.rodata.* .constdata.constdata.*) *spifi_setup.o(.text*) *spifi_setup.o(.rodata .rodata.* .constdata.constdata.*) . = ALIGN(${text_align}); *(.data*) ファイル main_rodata.ldt *(EXCLUDE_FILE(*libspifilib_m4f.a: *spifi_setup.o).rodata) *(EXCLUDE_FILE(*libspifilib_m4f.a: *spifi_setup.o).rodata.*) *(EXCLUDE_FILE(*libspifilib_m4f.a: *spifi_setup.o).constdata) *(EXCLUDE_FILE(*libspifilib_m4f.a: *spifi_setup.o).constdata.*) . = ALIGN(${text_align}); ファイル main_text.ldt *(EXCLUDE_FILE(*libspifilib_m4f.a: *spifi_setup.o).text*) 3つのファイルを使い終えたら、デモは完了です。デバッグ中に関数spifiSetUpの内部に入る場合は、関数内にブレークポイントを設定する必要があることに言及することが重要です。 デバッグ中は、関数 spifiSetUp を呼び出す前に SPIFI フラッシュ メモリから実行し、関数に入ると RAM メモリから実行していることがわかります。 デモを正常に実行すると、ターミナルに次のように表示され、LED1が点滅します。 このガイドがお役に立てば幸いです。 よろしくお願いいたします ビクター。 LPC43xx ペリフェラル
記事全体を表示
LS1046ARDB イーサネットポートマッピング <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 次の表は、LS1046ARDBシャーシのフロントパネルに表示されるイーサネットポート名と、U-Boot、tinyDistro、およびNXP LSDKユーザーランドのポート名のマッピングを示しています。 シャーシのポート名 U-Boot のポート名 Linux のポート名 (tinyDistro) Linux のポート名 (LSDK ユーザーランド) RGMII1の FM1@DTSEC3 eth0 FM1-MAC3 RGMII2の FM1@DTSEC4 eth1 FM1-MAC4 SGMII1の FM1@DTSEC5 eth2 FM1-MAC5 SGMII2の FM1@DTSEC6 eth3の FM1-MAC6の 10G銅 FM1@TGEC1 eth4の FM1-MAC9の 10G SEP+ FM1@TGEC2 ETH5の FM1-MAC10 QorIQ LS1デバイス
記事全体を表示
CRYPTO_43_HSE 中缺少 hse_interface.h Hello, 我想尝试使用 HSE 加密一些消息,我已经将 CRYPTO_43_HSE 配置为使用 AES 密码。更新外设中的代码后,它说 hse_interface.h文件丢失。 我的目标设备是 S32K342,我正在使用 RTD 的 4.0.0。有什么办法可以解决这个问题吗? 先感谢您 回复:hse_interface.hCRYPTO_43_HSE 中缺失 我已找到文件,但它没有告诉我应该将它们复制到哪里。 回复:hse_interface.hCRYPTO_43_HSE 中缺失 Hi @Rmpr  请查看加密集成手册中的“3.2.0.0.8 HSE 接口文件:”部分,该部分位于以下路径: c:\NXP\S32DS.3.5\S32DS\软件\PlatformSDK_S32K3\RTD\Crypto_43_HSE_TS_T40D34M40I0R0\doc\RTD_CRYPTO_43_HSE_IM.pdf 它说需要从 HSE 固件文件夹复制接口文件,如下所示(仅作为示例,它取决于使用的固件版本): c:\NXP\HSE_FW_S32K344_0_2_40_0\hse_ab_swap\接口\ 此致, Lukas
記事全体を表示
s32k3 adkp_master在哪里定义? Hi NXP, 在 S32K3 中,文档说 ADKP 保存在 NVM 中,或者 uid 多样化。但在演示示例中,函数HSE_ProgramAdkp() 仅使用HSE_APP_DEBUG_KEY_ATTR_ID 来写入密钥。 我的问题是,ADKP_MASTER 定义什么以及如何配置它?   回复:s32k3 adkp_master 在哪里定义? 你好@victory ADKP_MASTER 选择配置 ADKP 的方法:使用设备的 UID 进行多样化或在安全 NVM 中“按原样”写入。请参阅 HSE_B 固件参考手册修订版的第 2.6.1.4.4 节(配置设备相关的 ADKP)和 2.6.1.4.5 节(安全 ADKP 配置)。2.3. 如果您希望使用 UID 多样化选项配置 ADKP,则必须在编程 ADKP(HSE_APP_DEBUG_KEY_ATTR_ID)之前设置 ADKP_MASTER。TS32K3在烧写ADKP时会自动进行UID多样化操作。 BR, VaneB
記事全体を表示
LS1088ARDB/LS1088ARDB-PB - SDカードのLinuxカーネルとデバイスツリーを更新する方法 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> SDカード上のLinuxカーネルイメージとデバイスツリーを更新するには、次の手順に従ってください。 Linux カーネルイメージとデバイスツリーのコンパイル Linux ホストで、Linux カーネル イメージとデバイス ツリーを使用してリポジトリをクローンします: $ git clone https://source.codeaurora.org/external/qoriq/qoriq-components/linux $ cd linux $ git checkout -b たとえば、$ git checkout -b LSDK-18.09-V4.14 LSDK-18.09-V4.14 のようになります。 ここで 、 LSDK-18.09-V4.14 は、 LSDK- -V version という形式のタグを指します > ドル ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- defconfig lsdk.config を作成します。 デバイスツリーに変更を加える場合は、arch/arm64/boot/dts/freescale/fsl-ls1088a-rdb.dts を開いて編集してください ドル ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- を作成します。 バイナリカーネルイメージ の Image と圧縮されたカーネルイメージ の Image.gz は arch/arm64/boot/ にあります。 デバイスツリー blob fsl-ls1088a-rdb.dtb は arch/arm64/boot/dts/freescale/ にあります。 コンパイルされたカーネルイメージとデバイスツリーをSDカードにコピーする SD カードを Linux ホストマシンに挿入します。 sudo fdisk -l を実行して、コンピュータからアクセス可能なディスクを一覧表示します。 Linuxカーネルイメージとデバイスツリーを含むSDカードパーティションをマウントします。 sudo mkdir sudo mount /dev/sdX cat /proc/partitions コマンドを使用して、デバイスとそのサイズの一覧を表示します。 正しいデバイス名が選択されていることを確認してください。 Linux PC の SDHC ストレージドライブは /dev/sdX として検出されます。X は a、b、c などの文字です。必ず正しいデバイス名を選択してください。このデバイス上のデータは上書きされます。 Linux ホストマシンが追加の SDHC カードリーダーなしで SDHC カードの読み書きを直接サポートしている場合、そのデバイス名は通常 mmcblk0 になります。 SDカードの Image、 Image.gz、およびfsl-ls1088a-rdb.dtbを、上記の手順でコンパイルした新しいファイルに置き換えます。 sudo cp /linux/arch/arm64/boot/Image /linux/arch/arm64/boot/Image.gz /linux/arch/arm64/boot/dts/freescale/fsl-ls1088a-rdb.dtb sudo umount /dev/sdX SDカードを LS1088ARDB/LS1088ARDB-PB に接続し、SDカードを使用してボードをUbuntuで起動します。 U-Boot が SD カードに LSDK を見つけられない場合、起動します SDカードに保存されている lsdk_linux_arm64_tiny.itb のTinyDistro 。 QorIQ LS1デバイス
記事全体を表示
例MPC5744P FlexPWMシフトPWM GHS616 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> ******************************************************************************** *詳細な説明: * * この例では、3つのサブモジュールを初期化して120°の位相シフトを生成する方法を示しています *サブモジュール間。 * 各サブモジュールのCNTRレジスタは、PWM時にシフトされた値で初期化されます。 * 発電機はFORCE機能で無効にします。 * * ------------------------------------------------------------------------------ *テストHW:MPC5744P(MPC5744P-257DS + MPC577xxマザーボード) *マスクセット:1N15P *対象:internal_FLASH、RAM * Fsys:200MHz PLL、40MHz水晶リファレンス * * EVB接続: * ※P8.12 - A[11] ..FlexPWM A[0]出力 ※P8.11 - A[10] ..FlexPWM B[0]出力 ※P8.13 - A[12] ..FlexPWM A[2]出力 ※P8.14 - A[13] ..FlexPWM B[2]出力 *P10.8 - C[7] ..FlexPWM A[1]出力 ・P10.7 - C[6] ..FlexPWM B[1]出力 * ******************************************************************************** Re:例MPC5744P FlexPWMシフトPWM GHS616 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> モーターを制御する必要がありますが、コードの実行中にPWMのデューティを変更する方法を知っていますか?
記事全体を表示
S32DS for Vision - 教程列表 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> APEX2 入门 S32DS for Vision:入门 - APEX2 图形工具教程 ISP 入门 S32DS for Vision:入门 - ISP 图形工具教程
記事全体を表示
i.MX 6 シリーズ アプリケーション プロセッサを使用したシステムの電源管理と温度オプションに関する考慮事項 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> このセッションでは、i.MX 6Quadプロセッサを使用するエンクロージャ内で熱をルーティングおよび放散するための熱機械設計オプションについて説明します。さらに、このコースでは、グラファイトペーパー、サーマルパッドなどのパッシブサーマルオプション、銅などの金属ヒートスプレッダーの長所と短所、および i.MX 6シリーズプロセッサが利用されている実装の提案について説明します。 アシム・ザイディによる発表 2015年3月26日、DwF Silicon Valleyにて発表 Session ID: AMF-DES-T1059 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> このセッションでは、i.MX 6Quadプロセッサを使用するエンクロージャ内で熱をルーティングおよび放散するための熱機械設計オプションについて説明します。さらに、このコースでは、グラファイトペーパー、サーマルパッドなどのパッシブサーマルオプション、銅などの金属ヒートスプレッダーの長所と短所、および i.MX 6シリーズプロセッサが利用されている実装の提案について説明します。 アシム・ザイディによる発表 2015年3月26日、DwF Silicon Valleyにて発表 Session ID: AMF-DES-T1059
記事全体を表示
カスタムボードのLPDDR初期チェック こんにちはチーム、 私たちはIMX-93プロセッサを搭載したカスタムボードを設計しました。取締役会の立ち上げ活動の一環として。LPDDR4、eMMC、およびその他の周辺機器をテストする必要があります。イメージをフラッシュしてu-bootステージでテストする方法はありますか。 感謝 Robbi. Re:カスタムボードのLPDDR初期チェック おかげで@JosephAtNXP、eMMCおよびQSPI NORフラッシュメモリをテストするサンプルアプリケーションはありますか(mmcまたはddコマンドを使用する代わりに)。 Re:カスタムボードのLPDDR初期チェック Hi, NXPセミコンダクター製品にご興味をお寄せいただき、誠にありがとうございます。 DDRをテストするには、i.MX 93用の Config Tools を使用し、タイミングと特性を新しいimx-bootイメージに移植する必要があり、起動はこのインターフェイスを介して行われ、テストは各ブート後にU-bootに到達することです。 eMMC などの他のインターフェースでは、新しい imx-boot イメージをカスタム u-boot で正常に移植すると、ボードで自分のコードをテストできます。ファイルおよび/またはU-bootコマンド(例:mmc 読み取り/mmc 書き込み。 よろしくお願いします。
記事全体を表示
Arrayent 物联网演示 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> NXP Thread 调试演示与 Arrayent 的云控制 可以使用 Arrayent Connect Cloud 从世界任何地方监控和控制 Thread 设备 使用 NXP Thread App 和二维码,设备可轻松接入 Thread 网络 使用 Arrayent 唯一 ID(白名单)和 AES-128 位加密可确保设备安全。 如果您符合以下情况,则可能会对此演示感兴趣: 想要从世界任何地方监控和控制位于消费级防火墙后面的 Thread 设备。 想要以简单的方式调试 Thread 设备。 此演示重点突出差异化 从世界任何地方控制和监控位于消费级防火墙后面的 Thread 设备。 使用二维码调试 Thread 设备 描述 Thread 网络由 LS1021A IT 网关和FRDM-KW24 Thread Border 参考设计管理。该开发板还支持 Thread、Wi-Fi、蓝牙和 NFC。 NXP 的 Thread 调试 android App 发现 Thread 边界路由器。 NXP 驱动的 Thread“设备”是一张带有 NXP Kinetis ® KW2xD 802.15.4 无线芯片的卡,带有运行 Thread 协议和轻量级 Arrayent Connect Agent 的 ARM Cortex M4 MCU 板。 通过使用 NXP Thread 调试 Android 应用程序将 Thread 设备板调试(或“配对”)到 Thread 网络,该应用程序从设备上的二维码中获取设备的唯一 ID,并将 Thread 网络凭证推送到设备中。这在第二张卡片上再次显示出来。 Arrayent 的 Connect Agent 已预装到设备板中。一旦电路板连接到 Thread 网络,设备板就会开始直接与 Arrayent Cloud 通信。基本上,板上的关键属性都呈现给 Arrayent Connect Cloud 网络服务 API。 最后一步是使用 Arrayent devkit 应用程序从世界任何地方监控和控制设备板。在这种情况下,我们可以演示三个监视/控制用例: 1. 从移动应用程序打开和关闭设备 LED。 2. 按三次按钮来更新应用程序按钮按下计数器(在本例中为三次)。 3.将板子温度推送到手机APP。 这个演示是关于什么的 视频链接:5310 查找更多信息 新闻稿:阅读《商业期刊》 要阅读的博客文章: 恩智浦与Arrayent携手在德国纽伦堡嵌入式世界大会上连接Thread设备 由 Arrayent 提供支持的线程智能家居 演示图 物联网物理组件 网关 SOC: NXP i.MX6 应用处理器、NXP Kinetis ® KW24D SoC 软件:嵌入式Linux、用于边界路由器的NXP线程堆栈 最终用户产品: LS1021A IT网关,采用FRDM-KW24 Thread Border参考设计 Edge Devices SOC : NXP Kinetis ® KW24D(带有 ARM Cortex M4 MCU 的 802.15.4 无线芯片) 开发板/模块: NXP FRDM-KW24D 开发板 软件: Arrayent Connect Agent 移植到 KW2xD,NXP Thread Stack 用于路由器终端设备 无线连接 S OC: NXP Kinetis ® KW24D(带有 ARM Cortex M4 MCU 的 802.15.4 无线芯片) 传感器 SO C: KW24D 片上温度传感器、MMA8451Q 三轴加速度计 云基础设施/服务 软件/服务: Arrayent Connect Cloud 智能设备/应用程序 软件: Arrayent Android DevKit 示例应用程序和 SDK 软件: NXP Android Thread 配置应用程序 物联网系统功能 设备管理 每个设备在制造时都会被写入唯一的 Arrayent 设备 ID 和 AES 密钥。设备ID在设备调试时绑定到特定的客户账户。 云/应用通信/互通 Arrayent devkit 应用程序通过 Arrayent Connect Agent 嵌入式软件与 Arrayent Connect Cloud 的设备服务接口通信,以连接到设备板。该应用程序用于从世界任何地方监视和控制设备板。在这种情况下,我们可以演示三个监视/控制用例: 通过移动应用程序打开和关闭设备 LED。 按三次按钮来更新应用程序按钮按下计数器(在本例中为三次)。 将电路板温度推送到手机应用程序。 安全 Arrayent 使用设备 ID 白名单,即 Arrayent 发布的设备 ID 在制造时刷入端点 MCU 内存中。每个设备的唯一 ID 都保留在云端。 Arrayent ACA 嵌入式代理和 ACC 云服务支持具有动态临时密钥刷新的 AES-128 位端到端加密。 分析/数据 Arrayent Connect Cloud 支持 物联网产品类型 产品/组件 Vendor 研究或采购此产品/组件 最终用户硬件 USB无线键盘和触摸板 商用 罗技无线触控键盘 K400 内置多点触控板,黑色 最终用户硬件 戴尔 22 英寸 HDMI 显示器 商用 戴尔 22 英寸显示器 最终用户智能设备 摩托罗拉 XT1032 Moto G Android 智能手机 商用 摩托罗拉Android智能手机 最终用户边缘设备 Xfinity XR2 遥控器 商用 康卡斯特遥控器 最终用户边缘设备 飞利浦 HUE 灯泡 ZigBee Lightlink(HA 1.2) 商用 Hue,专业无线 LED 照明 | 飞利浦照明 最终用户边缘设备 CentraLite 3系列设备模块 (4257050-RZHAC) (Zigbee HA 1.2) 商用 SmartPlug 最终用户边缘设备 Axis 0301004 M1011-W 摄像机(WiFi g) 商用 AXIS M1011-W 网络摄像机,一款小型无线 IP 摄像机 | Axis Communications 最终用户边缘设备 Maxxima Style 夜灯带传感器 商用 夜灯 最终用户边缘设备 TP-LINK TL-MR3020 3G/4G 无线 N 150 便携式路由器 商用 WiFi路由器 移动设备
記事全体を表示