1994337_zh-CN

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

1994337_zh-CN

1994337_zh-CN

运行 Yocto Linux + PN7160 的 i.MX6ULL EVK

硬件:

1. i.MX6ULL EVK 板

pic1.jfifpic1.jfif


2. OM27160A1HN

pic2.jfifpic2.jfif


软件:

1. 为 i.MX6ULL EVK 构建 Yocto Linux BSP。

步骤如下:

$ mkdir L6.6.36_2.1.0
$ cd L6.6.36_2.1.0
$ repo init -u https://github.com/nxp-imx/imx-manifest -b imx-linux-scarthgap -m imx-6.6.36-2.1.0.xml
$ repo sync

$ DISTRO=fsl-imx-xwayland MACHINE=imx6ull14x14evk source imx-setup-release.sh -b build-for-6ullevk
$ bitbake core-image-full-cmdline

2. 将 nxpnfc 驱动添加至内核

BSP 构建成功后,内核源代码位于此处:

L6.6.36_2.1.0/build-for-6ullevk/tmp/work/imx6ull14x14evk-poky-linux-gnueabi/linux-imx/6.6.36+git/git/

将 nxpnfc 代码库克隆到内核目录,替换现有实现:

$ cd L6.6.36_2.1.0/build-for-6ullevk/tmp/work/imx6ull14x14evk-poky-linux-gnueabi/linux-imx/6.6.36+git/git/
$ rm -rf drivers/nfc
$ git clone https://github.com/NXPNFCLinux/nxpnfc.git drivers/nfc 

这将导致 drivers/nfc 文件夹中包含以下文件:

• README.md:存储库信息
• Makefile:驱动程序头文件
• Kconfig:驱动程序配置文件
• LICENSE:驱动程序许可条款

• i2c_devicetree.txt:I²C 设备树定义示例• spi_devicetree.txt:SPI 设备树定义示例• nfc 子文件夹包含:– Makefile:– common.c:通用驱动程序实现—— common.h:通用驱动接口定义– i2c.c:I2C 专用驱动程序实现– i2c.h:I2C 专用驱动程序接口定义——spi.c:SPI 专用驱动程序实现– spi.h:SPI 专用驱动接口定义


通过内核 menuconfig 流程将目标驱动包含在构建中(选择为内置 <*>):

$ bitbake linux-imx -c menuconfig

<*> NFC I2C Slave driver for NXP-NFCC

kernel_menuconfig.pngkernel_menuconfig.png



3. i.MX6ULL EVK与PN7160之间的连接

i.MX6ULL EVK 开发板的 Arduino 接口上有若干引脚可用于连接 PN7160 板。以下是 i.MX6ULL EVK 开发板 Arduino 接口的示意图。其中 I2C2 的两个引脚可用于 I2C 连接。UART2_RX、UART2_TX 和 UART2_RTS 可配置为 GPIO,分别连接 PN7160 的 IRQ、VEN 和 DWL_REQ。

arduino_header_6ullevk.pngarduino_header_6ullevk.png

以下是 EVK 板上的 J1704 和 J1703 接口。

pic3.jfifpic3.jfif


以下是 OM27160A1HN 上的 Arduino 接口示意图。

om27160_arduino.pngom27160_arduino.png

需使用转接板(OM29110ARD-B),OM27160A1HN 模块安装于其上方。以下是转接板的原理图。

47957.png47957.png

因此,在 i.MX6ULL EVK 开发板上,需使用 I2C2_SDA 和 I2C2_SCL 进行 I2C 通信。另需 3 个 GPIO 引脚连接 PN7160 的 IRQ、VEN 和 DWL_REQ。

这是 i.MX6ULL EVK 和 OM29110ARD-B 之间的连接。

OM29110ARD-B 引脚 i.MX6ULL EVK 引脚
I2C_SCL J2-1 I2C2_SCL J1704-10
I2C_SDA J2-2 I2C2_SDA J1704-9
GPIO_0 J2-10 GPIO1_21 J1703-1
GPIO_1 J4_1 GPIO1_20 J1703-2
GPIO_2 J4_2 GPIO1_25 J1703-3
3.3v J1-4 3.3v J1705-4
5V J1-5 5V J1705-5
接地 J1-6 接地 J1705-6


4. 修改 i.MX6ULL EVK 的设备树文件

i.MX6ULL EVK 的设备树文件为 imx6ul-14x14-evk.dtsi,其路径如下:

L6.6.36_2.1.0/build-for-6ullevk/tmp/work/imx6ull14x14evk-poky-linux-gnueabi/linux-imx/6.6.36+git/git/arch/arm/boot/dts/nxp/imx/imx6ul-14x14-evk.dtsi

由于未使用 UART2,我们已禁用它。

&uart2 {
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_uart2>;
	uart-has-rtscts;
	/* for DTE mode, add below change */
	/* fsl,dte-mode; */
	/* pinctrl-0 = <&pinctrl_uart2dte>; */
	status = "disabled";  // <--- change the status to "disabled"

	bluetooth {
		compatible = "nxp,88w8987-bt";
	};
};

将下面的 nxpnfc 放在 &I2C2 节点下。

nxpnfc: nxpnfc@28 {
		compatible = "nxp,nxpnfc";
		reg = <0x28>;
		pinctrl-names = "default";
		pinctrl-0 = <&pinctrl_nfcgpio>;
		nxp,nxpnfc-irq = <&gpio1 21 0>;
		nxp,nxpnfc-ven = <&gpio1 20 0>;
		nxp,nxpnfc-fw-dwnld = <&gpio1 25 0>;
	};

像这样:

under_I2C2_in_dts.pngunder_I2C2_in_dts.png

为 nxpnfc 添加 GPIO。

	pinctrl_nfcgpio: nfcgpiogrp {
		fsl,pins = <
			MX6UL_PAD_UART2_RX_DATA__GPIO1_IO21   0xb0  //irq
			MX6UL_PAD_UART2_TX_DATA__GPIO1_IO20   0xb0  //ven
			MX6UL_PAD_UART3_RX_DATA__GPIO1_IO25   0xb0  //dwld req
		>;
	};


5. 重新编译内核及完整镜像

$ bitbake linux-imx -c compile
$ bitbake core-image-full-cmdline


6. 使用 UUU 工具烧录镜像至开发板

构建生成的镜像为 .wic.zst 文件,需将其烧录至开发板。该文件位于以下部署目录中:

L6.6.36_2.1.0/build-for-6ullevk/tmp/deploy/images/imx6ull14x14evk/core-image-full-cmdline-imx6ull14x14evk.rootfs-20241113103828.wic.zst

从以下链接下载 UUU.exe:

https://github.com/nxp-imx/mfgtools/releases


Linux BSP 网页下载 i.MX6ULL EVK 的演示镜像。

linux_bsp_web_page.pnglinux_bsp_web_page.png


将演示镜像解压至文件夹,并将 UUU.exe 复制到同一目录。


通过 USB 线将开发板连接至 PC,并将启动模式切换为 "Serial Downloader mode"。

uuu_download.jfifuuu_download.jfif


在 PC 端执行以下命令,将镜像烧录至 i.MX6ULL EVK 的 SD 卡:

uuu -b sd_all core-image-full-cmdline-imx6ull14x14evk.rootfs-20241112083235.wic.zst

随后将启动模式切换为 "Internal Boot (Development)" 并重启开发板。

此时可通过 "root" 账户登录并使用开发板。

login_root.pnglogin_root.png

您可以看到 nxpnfc 驱动程序已正确加载。

dmesg_dev.pngdmesg_dev.png



7. 在 Yocto 中构建 NFC 库和 nfcDemoApp。

    $ git clone https://github.com/NXPNFCLinux/meta-nxp-nfc.git 

然后,NFC库的配方位于 L6.6.36_2.1.0/sources/meta-nxp-nfc/recipes-nfc/nxp_nfc。请将配方 nxp-nfc_git.bb 更改如下:

# Copyright (C) 2016 NXP Semiconductors

DESCRIPTION = "Linux NFC stack for NCI based NXP NFC Controllers."
LICENSE = "Apache-2.0"
LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=86d3f3a95c324c9479bd8986968f4327"

SRC_URI = " \
    git://github.com/NXPNFCLinux/linux_libnfc-nci.git;branch=NCI2.0_PN7160;protocol=https \
"
SRCREV = "6bf9f42b94e267f6384043009bda84c11e7ebbaa"
SRC_URI[sha256sum] = "47bdc27108fc8d66ce5d6c33f76b419cdef20c24b9e187ada8e689d1bd7f79c7"

inherit autotools pkgconfig lib_package

S = "${WORKDIR}/git"

  • 将 meta-nxp-nfc 层添加至构建定义,需更新 build_dir/conf/bblayers.conf 文件:

BBLAYERS += " ${BSPDIR}/sources/meta-nxp-nfc"


  • Build meta-nxp-nfc layer:

    $ bitbake nxp-nfc

构建成功后,库文件及 nfcDemoApp 将位于以下路径:

L6.6.36_2.1.0/build-for-6ullevk/tmp/work/cortexa7t2hf-neon-poky-linux-gnueabi/nxp-nfc/git/

使用 "scp" 命令通过网络将文件复制至 EVK 开发板。若目标文件夹不存在,请先在 EVK 上使用 "mkdir" 创建目录,再执行 "scp" 命令。

以下是示例:(**下方的 IP 地址应更改为您的 EVK 的 IP 地址。)

scp build/.libs/* [email protected]:/.libs/

scp_command.pngscp_command.png

scp image/etc/libnfc* [email protected]:/etc/

 scp_command2.pngscp_command2.png

scp image/usr/lib/* [email protected]:/usr/lib

 scp_command3.pngscp_command3.png


在 EVK 开发板上:

root@imx6ull14x14evk:/# mkdir /usr/local
root@imx6ull14x14evk:/# mkdir /usr/local/etc
root@imx6ull14x14evk:/# cp /etc/libnfc-nci.conf /usr/local/etc

现在,您可以在 i.MX6ULL EVK 上运行 nfcDemoApp。

root@imx6ull14x14evk:/# cd .libs/
root@imx6ull14x14evk:/.libs# ./nfcDemoApp poll

nfcDemoApp.pngnfcDemoApp.png




参考资料:

1. i.MX Yocto Project 用户指南

2. PN7160 Linux Porting Guide

3. MCIMX6ULL-EVK_DESIGNFILES

4. OM27160A1HN 硬件设计文件

5. OM29110 NFC SBC 接口板设计文件

6。在运行 Yocto 的 i.MX8M mini EVK 上使用 PN7150 NFC 控制器

接触式智能卡读卡器芯片
タグ(1)
評価なし
バージョン履歴
最終更新日:
‎01-04-2026 11:21 PM
更新者: