NFCナレッジベース

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

NFC Knowledge Base

ディスカッション

ソート順:
Hello NFC community:   NXP released the new PN7150 NFC Controller chip with enhanced power output, and there is also the new Arduino compatible demokit OM5578/PN7150ARD. See more information in the next pages:   PN7150: High performance full NFC Forum-compliant controlle|NXP OM5578/PN7150ARD: Demoboards for PN7150|NXP   There is also a new PN7120 SBC kit for arduino:   http://cache.nxp.com/documents/user_manual/UM11008.pdf http://cache.nxp.com/documents/user_manual/UM11008.pdf   Due to the Arduino interface pinout, these kits can also be used with Kinetis Freedom Boards. The target of this document is to create projects to use the NFC Controller lîbrary with the PN7120 or PN7150 together with a Kinetis host. Also you will find example projects created for the FRDM-K64F and FRDM-KL43Z.     Requirements:   - Kinetis Software Development Kit v1.3. -> Software Development Kit for Kinetis MCUs|NXP - KDS v3.x with KSDK v1.3 Eclipse Update Installed -> Kinetis Design Studio Integrated Development Enviro|NXP - Kinetis SDK project generator. Available from the "Downloads" tab of KSDK webpage -> Software Development Kit for Kinetis MCUs|NXP     CREATING NEW PROJECT   NOTE: In this step-by-step procedure the FRDM-K64F is used as reference. You can follow the guide according to your own Freedom board.   1) Open the KSDK project generator. 2) Enter the KSDK v1.3 installation path, give a name to the project, select your Freedom board and click on "Advanced":     3) In the advanced settings window enable the checkboxes for:   - Include BSP files - Generate standalone project - Kinetis Design Studio toolchain - Board (confirm that your board is shown in the drop-down menu)   NOTE: The path for the newly created project is set by default inside of the KSDK v1.3 installation. For a standalone project you can change the location, just remember such path to import the project to KDS workspace in a later step.   Leave the rest of configurations as default (New project, Platform library, no RTOS) and finally click on "Advanced Generate!".     4) From Kinetis Design Studio go to File -> Import.     5) Go to General -> Existing Projects into workspace and click "Next".     6) In "select root directory" browse to the location of the platform lib for the created project. By default this path would be:   C:\nxp\KSDK_1.3.0\examples\frdmk64f\user_apps\<project_name>\lib\ksdk_platform_lib\kds\<MCU>   <project_name>: The name given initially to the project. <MCU>: The corresponding device number (K64F12 in this case).   Make sure that the project check box is enabled and click on "Finish".     7) Select the KSDK platform library project and click on the "Hammer icon" to build it.     😎 Repeat steps 4 through 6, but this time browse to the location of the application project. In this example the path is:   C:\nxp\KSDK_1.3.0\examples\frdmk64f\user_apps\< project_name >\kds     INTEGRATING NFC CONTROLLER LIBRARY   The next steps describe how to integrate the NFC NCI library to your newly created project.   - The Arduino Interface Boards use the next pinout for communication between the OM5578/PN7150 or OM5577/PN7120 kits with the Freedom or Arduino boards:     As shown in the picture, the pinouts are similar except for the 5V connection. This leverages the enhanced output power feature of the PN7150 NFC Controller.   - We need to check the corresponding pins that will be used from the Freedom board. In this case, the connections to the FRDM-K64F board would be as next:   IMPORTANT: The pinout shown below corresponds to Rev E3 schematics of FRDM-K64F. For Rev D1 the pin used for IRQ (header location J2[2]) must be PTA0 instead of PTC12.     1) Open the file gpio_pins.c and add 2 pin configurations: 1 input pin called NFCCirqPin and 1 output pin called NFCCvenPin.   gpio_input_pin_user_config_t NFCCirqPin = {   .pinName = kGpioNFCCirq,   .config.isPullEnable = false,   .config.pullSelect = kPortPullUp,   .config.isPassiveFilterEnabled = false,   .config.interrupt = kPortIntDisabled, }; gpio_output_pin_user_config_t NFCCvenPin = {   .pinName = kGpioNFCCven,   .config.outputLogic = 1,   .config.slewRate = kPortSlowSlewRate,   .config.driveStrength = kPortLowDriveStrength, };   2) In the file gpio_pins.h add 2 extra elements to the gpio enumeration. Also add extern declarations for the 2 pins defined in the previous step.   NOTE: For FRDM-K64F the pins are PTC12 and PTC3. Select corresponding pins for your Freedom board.   extern gpio_input_pin_user_config_t NFCCirqPin; extern gpio_output_pin_user_config_t NFCCvenPin; /*! @brief Pin names */ enum _gpio_pins_pinNames {   kGpioSW2  = GPIO_MAKE_PIN(GPIOC_IDX, 6U),   kGpioSW3  = GPIO_MAKE_PIN(GPIOA_IDX, 4U),   kGpioSdhc0Cd  = GPIO_MAKE_PIN(GPIOE_IDX, 6U),   kGpioLED1     = GPIO_MAKE_PIN(GPIOE_IDX, 26U),   kGpioLED2     = GPIO_MAKE_PIN(GPIOB_IDX, 22U),   kGpioLED3     = GPIO_MAKE_PIN(GPIOB_IDX, 21U),   kGpioNFCCirq  = GPIO_MAKE_PIN(GPIOC_IDX,  12), /* GPIO for NFCC IRQ pin */   kGpioNFCCven  = GPIO_MAKE_PIN(GPIOC_IDX,  3),  /* GPIO for NFCC VEN pin */ }   3) In the file pin_mux.c define a function to configure the MUX setting of the required GPIO and I2C pins to interface with the NFC Controller.   void configure_nfcc_pins(void) {   /** I2C_SDA **/   PORT_HAL_SetMuxMode(PORTE,25u,kPortMuxAlt5);   PORT_HAL_SetOpenDrainCmd(PORTE,25u,true);   /** I2C_SCL **/   PORT_HAL_SetMuxMode(PORTE,24u,kPortMuxAlt5);   PORT_HAL_SetOpenDrainCmd(PORTE,24u,true);   /* NFCC IRQ */   PORT_HAL_SetMuxMode(PORTC,12u,kPortMuxAsGpio);   /* NFCC VEN */   PORT_HAL_SetMuxMode(PORTC,3u,kPortMuxAsGpio); }   NOTES: - Check the corresponding pins on your Freedom board. FRDM-K64F uses PTC12/PTC3 as GPIOs while PTE24/PTE25 are configured as I2C pins. For I2C pins also check the MUX number in the device's Reference Manual (e.g. PTE24/PTE25 in K64F have the I2C function in ALT5). - This function needs to be called from your project to configure the required pins. e.g. from hardware_init(). - Some Freedom boards share the I2C pins of the Arduino compatible header with an on-board I2C device (e.g. accelerometer), with SDA/SCL pull-up resistors populated already. If this is not the case for your board, make sure to place external pull-ups to  MCU VDD or enable the internal pull-ups as temporary workaround.   4) Add the prototype of the function to the header file pin_mux.h.   /* ** =================================================== **     Method :  configure_nfcc_pins */ /*! **     @brief **         Set mux configuration for I2C and GPIO pins **         to interface with the NFC Controller. */ /* ==================================================*/ void configure_nfcc_pins(void);   5) Copy the folders NfcLibrary and TML to the project folder. The file fsl_i2c_irq.c is also required. In this case the file is found in the next path:   C:\nxp\KSDK_1.3.0\examples\frdmk64f\user_apps\<project_name>\platform\drivers\src\i2c   NOTE: If the project was not created in standalone mode, just search the fsl_i2c_irq.c file from your KSDK installation.       6) Add the NfcLibrary and TML folders with all its subfolders and files to the project's tree, so the lilbrary is part of the build. Also add the file fsl_i2c_irq.c to the project. In KDS you can drag and drop folders and files to the project explorer view.       7) Add the compiler include paths for the inc folders.     😎 From the KDS preprocessor settings add or remove the next conditional compilation macros according to your functional requirements:   CARDEMU_SUPPORT: The NFC Controler host (MCU) can emulate a contactless card which can be accessed by an external Reader/Writer. P2P_SUPPORT: The host MCU can establish a 2-way communication accesing to or sending data to an external Reader/Writer. RW_SUPPORT: With this mode the host can access a remote contactless tag/card via the NFC Controller. NCI-DEBUG: If defined, all information transferred between the host MCU and the NFC Controller Interface (commands, responses, notifications, data) is echoed to console for debug purposes.     9) The file tml.h includes the macro NFCC_I2C_INSTANCE which defines the I2C module to use. For FRDM-K64F the module is I2C0. Set this macro according to your Freedom board.   /* NFC Controller I2C interface configuration */ #define NFCC_I2C_INSTANCE  0   At this point the project is ready to use the NFC Controller library and interface the Kinetis Freedom board with PN7120 or PN7150 NFC Controllers.     DEMO PROJECTS   At the end of this document you will find 2 example project packages for the FRDM-K64F and FRDM-KL43Z. Both of the projects can be used with either the OM5578/PN7150 or OM5577/PN7120 kits using the Arduino interface boards.   Each ZIP package includes 2 projects (example application and KSDK library). Unzip the package and import the projects from the resulting location.   Do not select "Copy projects into workspace" in KDS. If you do so the build will fail due to the linked source files not copied over.   The projects must be built in the next order:   1- Platform library project (FRDM-xxx_NFCNCI_Example\lib\ksdk_platform_lib\kds\<MCU>) 2- Demo project (FRDM-xxx_NFCNCI_Example\kds)   The OpenSDA virtual COM port is used to send data to a terminal at 115200 baud. Below an explanation on how to test the different project example features.   RW mode:   - Placing a tag with a single text, URI or vCard NDEF record next to the NFC reader antenna. Examples:         P2P mode:   - Bring an android phone with NFC enabled close to the NFC controller antenna and use the "beaming" feature. In the case below the NXP home page is "beamed" from the adroid phone's explorer. After this, the NFC enabled phone will receive the "Test" NDEF record.                     CARD EMULATION mode     For this mode it is required to remove the P2P_SUPPORT macro and rebuild/reprogram the project.   - Bringing an android phone set to read a NFC tag close to the NFC controller board. The NFC enabled phone will detecta T4T tag type with the "Test" NDEF record.     I hope you can find this document useful. Any questions or doubts please let me know in the comments.   Jorge Gonzalez NXP Technical Support
記事全体を表示
DISCLAIMER APPLICABLE TO THIS DOCUMENT CONTENTS:   This post contains a guide of how to use LPC55S69 demoboard with other NXP demoboards to demonstrate Access control using NFC, one embedded secure element and an MCU (see picture below). A ready to use package including preparation of a secure element, and of a MIFARE DESFire EV2 card can be used as 3-step authentication example using symmetric AES keys; a session key will be generated inside SE050 which will be exported to LPC55S69 which will handle contactless communication thru CLRC663 plus frontend.   This document is structured as follows: Hardware Requirements: Following hardware is required to run the project: LPC55S69-EVK development board. OM-SE050ARD development board. CLEV6630B board or BLE-NFC-V2 board. 1. Overview of LPC55S69-EVK: The LPCXpresso55S69 development board provides the ideal platform for evaluation of and development with the LPC55S6x MCU based on the Arm® Cortex®-M33 architecture. The board includes a high performance onboard debug probe, audio subsystem and accelerometer, with several options for adding off-the-shelf add-on boards for networking, sensors, displays and other interfaces. The LPCXpresso55S69 is fully supported by the MCUXpresso suite of tools, which provides device drivers, middleware and examples to allow rapid development, plus configuration tools and an optional free IDE. MCUXpresso software is compatible with tools from popular tool vendors such as Arm and IAR, and the LPCXpresso55S69 may also be used with the popular debug probes available from SEGGER and P&E Micro.   2. Overview of OM-SE050ARD demoboard: The OM-SE050ARD is the flexible and easy-to-use development kit for the EdgeLock SE050 Plug & Trust product family. It can be used in various ways for example via the Arduino interface compatible to any board featuring an Arduino compatible header, including many i.MX, LPC and Kinetis boards, or via a direct I 2 C connection. This kit allows evaluation of the SE050 product family features and simplifies the development of secure IoT applications. More information can be found in the respective Application Note AN12395.   2.1 Connections between OM-SE050ARD and LPC55S69 EVK   OM-SE050ARD LPC55S69 (Conn.# - Pin #) Port Function Name SE_SDA (J22-1) P24-6 also P17-3 PIO1_21 FC4_I2C_SDA_ARD SE_SCL (J22-4) P24-5 also P17-1 PIO1_20 FC4_I2C_SCL_ARD +5V_PC (J22-2)     VDD_TARGET GND (J22-3)     GND 2.2 Jumper settings on OM-SE050ARD to connect it to LPC55S69 EVK Connect SE050 to LPC55S Arduino stackable headers and change jumper J14 as: This connects SE_VDD directly to 3V3 and bypasses enable signal. This is required because enable pin on LPC55S coincides with Silex-2401 SPI pins so we cannot use SE_EN signal to drive SE_VDD.   3. Overview of NFC Front end boards working with LPC55S69 EVK board for this example:   3.1 BLE-NFC-V2: It is easier to use the BLE-NFC-V2 board since less changes have to made on the board as compared to the CLEV6630B board. The following figure shows the pin mapping between the two boards. It is advisable to add a pull-up resistor (4k7 to VCC) on CLRC663 plus signal IRQ.   3.2 CLEV6630B board: The CLEV6630B board consists of CLRC663 plus (NFC frontend) connected by default to an LPC1769 µC via SPI. However, the board is made in such a way that the LPC1769 MCU can be bypassed to connect to an external MCU (in our case the LPC55S69) easily. For doing so: Six resistors from the board need to be removed. These are highlighted in red in the Figure 1: Use the SPI pin connectors available on the left-hand side, on the board edge to connect to external MCU (LPC55S69 in this case) Solder jumper wires onto the following pins of CLEV6630B Board:  GND IRQ CLRC_NRST SSEL MOSI MISO SCK IF0 IF1          The CLEV6630B is shown in Figure 2 after the required changes have been made to it (Removal of resistors and soldering of wires).   Now connect the two boards as follows: Signal function LPC55S69 (conn. # - Pin #) Port CLEV6630B MOSI P17-10 PIO0_20 MOSI MISO P17-12 PIO0_19 MISO SPI SCK P17-14 PIO0_21 SCK SPI CSEL P17-6 PIO1_11 SSEL RESET P18-11 PIO0_15 CLRCL_NRST IRQ P18-3 PIO1_10 IRQ GND P17-7   GND  As final touch to this demonstrator, one LCD display will be added in order to show "access control" check result when approaching a MIFARE DESFire EV2 card to the Reader antenna, without the use of a computer console. Connection between LPC55S69 board and LCD Display:   TFT LPC55S69 (Jumper # - Pin #) Port      SPI_CLK D13 (P17-9) PIO1_2      SPI_MISO D12 (P17-11) PIO1_3      SPI_MOSI D11 (P17-13) PIO0_26      SPI_CS_TFT D10 (P17-15) PIO1_1      GPIO_LCD_BL D9 (P17-17) PIO1_5      GPIO_LCD_DC D7 (P18-1) PIO1_9 5V 5V   GND GND     Click here to order 2.8 inch TFT Display from Waveshare: P/N: 2.8 inch TFT Touch Shield Brand       4. Running "Secure Access to Industrial IOT demo" at LPC55S69:   If this is the first time you’re using LPC55S69-EVK board, follow the getting started guide first à  LPC55S69-EVK | NXP . Make sure to install the SDK package for LPC55S69-EVKboard which is required for the project below to run. Download the ‘demobinaries.zip' package which you will find attached to this post. This zip file contains 2 bin files: ex_prepareCard.bin - upload this binary file to LPC55S69 when you need to prepare a MIFARE DESFire EV2 card with suitable application and AES keys used for demonstrator. Upload bin file to LPC55S69 by using MCUxpresso. Just place a virgin card on top of Reader antenna, and reset MCU board by clicking on "RESET KEY" push button. ex_prepareSe050.bin - upload this binary file to LPC55S69 when you need to prepare a new SE050 with suitable AES keys to be used in this demo. Just  upload binary using MCUxpresso; connect a virgin OM-SE050ARD on LPC55S69 arduino connectors, connect micro USB connector to MCU board, and reset MCU by clicking "RESET KEY". After steps 2.1 and 2.2 have been done to obtain preparation of one Secure element as well as preparation of one MIFARE DESFire EV2 card, then upload the next bin file to LPC55S69 using MCUxpresso: ex_Ev2Auth_se05x.bin Alternatively, you can import the whole project in your MCUxpresso environment. Download the file EmbeddedWorld2019DemoLatest.zip at end of this page. Import this zip file project in MCUxpresso environment Now that the package has been imported to the MCUXpresso IDE (via drag and drop), click on Debug icon from the Quickstart panel to begin a debug session. Once the debug session has started, click on the run icon to run the code: PICTURE TO BE UPDATED MCUXPRESSO PICTURE TO BE UPDATED The project should be running now. The project contains a closed loop that tries to check presence of a card on top of Reader. Here is how the output looks like in LCD Display. Press the button reset, and you will see the text "Secure Access to Industrial IOT demo 2019" PICTURE TO BE UPDATED Then press the button "Wake-up". Afterwards NFC reader will enter in a loop in which he will look for a card to authenticate. If there are no cards, he will soon show the red allert with text "Access denied" Bring any NFC card near the frontend’s antenna (or in presence of no card) LCD display will show a message in RED "ACCESS DENIED". PICTURE TO BE UPDATED Only in case the "prepared DESFire EV2" card is placed on top of reader, in the picture below, we can see message in GREEN "ACCESS GRANTED" PICTURE TO BE UPDATED.     Available Resources: Porting NFC Reader Library to i.MX RT1050. (Detailed Description of porting) https://community.nxp.com/docs/DOC-341843 LPC55S69 https://www.nxp.com/products/processors-and-microcontrollers/arm-based-processors-and-mcus/lpc-cortex-m-mcus/lpc5500-cortex-m33/lpcxpresso55s69-development-board:LPC55S69-EVK BLE-NFC-V2 https://www.nxp.com/products/identification-security/rfid/nfc-hf/nfc-readers/clrc663-iplus-i-and-qn902x-nfc-bluetooth-low-energy-solution-for-consumer-applications:BLE-NFC CLEV6630B Product Information|NXP  SE050: www.nxp.com/SE050
記事全体を表示
This is a step by step guide on setting up and running a simple NFC Demo App using the PN7150 NFC Controller SBC Kit for Arduino (OM5578/PN7150ARD) with a UDOO NEO board which uses an i.MX6SX and it's Arduino pin compatible. 1. Requirements - UDOO NEO board. This document refers to the UDOO NEO Full board, but the steps remain the same for all UDOO Neo boards as long as the appropriate Device Tree is used for each. For more information on this board please go to the official site (http://www.udoo.org/) UDOO Neo Full Board - PN7150 NFC Controller SBC Kit for Arduino (OM5578/PN7150ARD) which is shown on the image below. Alternatively you may use the PN7120 NFC Controller SBC Kit for Arduino (OM5577/PN7120ARD). PN7150 NFC Controller SBC Kit for Arduino mounted over the UDOO Neo You may find more details about the OM5578 board on the user manual (Doc ID UM10935) which is available on the following link. http://www.nxp.com/documents/user_manual/UM10935.pdf You may also find additional documentation and information of this and other PN7150 demoboards on the link below: Demoboards for PN7150|NXP​ You may find more details about the OM5577 board on the user manual (Doc ID UM10878) which is available on the following link. http://www.nxp.com/documents/user_manual/UM10878.pdf For additional resources for the OM5577 board please refer to the link below. PN7120 NFC Controller SBC Kit|NXP - Host computer with Ubuntu 12.04 or later (14.04 is preferred). - L3.14.28 BSP Release for the i.MX6SX installed on the host. You may find the documentation on how to download and setup this BSP on the following link. http://www.nxp.com/products/microcontrollers-and-processors/arm-processors/i.mx-applications-processors/embedded-linux-for-i.mx-applications-processors:IMXLINUX?code=IMXLINUX 2. Setting up NXP BSP Release and Toolchain Follow the instructions on the Yocto User’s Guide included on the L3.14.28 BSP Release to setup and build an image to for the i.MX6SX (MACHINE= imx6sxsabresd). We’ll be using the fsl-image-gui image with frame buffer (fb) backend. Other images may be used but please keep in mind that the core-image-minimal image does not include the libstdc++.so.6 library required by the NFC Demo App. It is also necessary to build and install the toolchain for cross compiling the kernel and bootloader. This can be done with the following command: $ bitbake meta-toolchain Once created you may install it by running the following script: <BSP_DIR>/<BUILD_DIR>/tmp/deploy/sdk/poky-glibc-x86_64-meta-toolchain-cortexa9hf-vfp-neon-toolchain-1.7.sh For more details on how to extract the toolchain please refer to the following Yocto Training Task: Task #7 - Create the toolchain 3. Editing the Device Tree In previous versions (3.0.35 backward) the Linux Kernel used to contain the entire description of the hardware so the bootloader just had to load the kernel image and execute it. In current Kernel versions the hardware description is located in the device tree blob (DTB), which allows for the same Kernel to be used in different Hardware by changing only the Device Tree. In this scenario the bootloader loads the Kernel image and also the Device Tree (DTB) binary. For more details on how to add a new Device Tree please look at the following Community Document that covers adding a new device tree: https://community.nxp.com/docs/DOC-329664 For this document we will change the current UDOO NEO Device Tree as we will only be adding support for the PN7150 NFC Controller Board. 3.1 Copying the original UDOO Neo Device Tree files Create a development folder in your home directory. mkdir udooneo-dev Download the kernel source into this folder. This also includes the device tree files. cd udooneo-dev git clone https://github.com/UDOOboard/linux_kernel The Device Tree files will be available at  udooneo-dev/linux_kernel/arch/arm/boot/dts 3.2. Editing the UDOO Neo Device Tree Files We will be using the UDOO Neo Full board, so we will be using the imx6sx-udoo-neo-full-hdmi-m4.dts. If we look into this file using a text editor we will see that it includes several include definition files which are also located in the same directory. #include "imx6sx-udoo-neo.dtsi" #include "imx6sx-udoo-neo-full.dtsi" #include "imx6sx-udoo-neo-m4.dtsi" #include "imx6sx-udoo-neo-hdmi.dtsi" #include "imx6sx-udoo-neo-externalpins.dtsi" We will need to copy these to the BSP Release dts directory (you may alternatively build the device tree from this directory, but we will cover how to add device trees to the BSP Release in this document): /<BSP_DIR>/<BUILD_DIR>/tmp/work/imx6sxsabresd-poky-linux-gnueabi/linux-imx/3.14.28-r0/git/arch/arm/boot/dts/ We will need to add the new dtb file to be compiled on the Makefile from the BSP Release.  This needs to be placed inside the precompiler directive $(CONFIG_ARCH_MXC) There are some additions that must be made to device tree in order to configure the pins used by the NFC controller Board which uses the Arduino Pinout. These can be done to the imx6sx-udoo-neo.dtsi so they are taken by any UDOO Neo Device Tree we compile. The I2C pins used are those of the I2C2 bus. The configuration for these pins should be already implemented on the imx6sx-udoo-neo.dtsi file. If not please add these lines inside the &iomuxc section. &iomuxc {                         pinctrl_i2c2_1: i2c2grp-1 {                                         fsl,pins = <                                                         MX6SX_PAD_GPIO1_IO03__I2C2_SDA          0x4001b8b1                                                         MX6SX_PAD_GPIO1_IO02__I2C2_SCL           0x4001b8b1                                         >;                       }; }; Then we need to add the pn547 entry into the &i2c2 section for the enable pin, interrupt pin, I2C address and buss speed for the PN7150. Put what is in bold below at the end of the “&i2c2” section as shown. &i2c2 { pn547: pn547@28 { compatible = "nxp,pn547";                 reg = <0x28>; clock-frequency = <400000>; interrupt-gpios = <&gpio4 9 0>; enable-gpios = <&gpio5 21 0>;         }; }; Important Note: Prior to adding either of these configurations it is critical that you ensure these pins and I2C addresses are not used anywhere else in this and other *udo*.dtsi files You may find the UDOO Neo Schematics on the UDDO website (link to the schematics below) to see the reason behind these settings. http://www.udoo.org/download/files/schematics/UDOO_NEO_schematics.pdf IR Signal – J4 Connector – Arduino 7 pin – i.MX6SX B13 pin VEN Signal - J6 Connector – Arduino 8 pin - i.MX6SX W5 pin SDA Signal – J6 Connector – Arduino SDA pin - i.MX6SX D20 pin SCL Signal – J6 Connector – Arduino SCL pin - i.MX6SX C20 pin If you want to review in more detail how to create a simple Device Tree from scratch please check the following very complete and easy to follow Community Document. Basic Device Tree for the Udoo Board To compile the device tree run the following command source /opt/poky/1.7/environment-setup-cortexa9hf-vfp-neon-poky-linux-gnueabi cd /<BSP_DIR>/<BUILD_DIR>/tmp/work/imx6sxsabresd-poky-linux-gnueabi/linux-imx/3.14.28-r0/git make ARCH=arm dtbs This will produce the Imx6sx-udoo-neo-full-hdmi-m4.dtb that will be used. 4. Compiling U-Boot We will be using the UDOO U-boot for the UDOO Neo Full board. The following steps describe how to download the source code and compiling it using our toolchain. Downloading the source code mkdir UDOOneo-dev cd UDOOneo-dev git clone -b 2015.04.imx-neo https://github.com/UDOOboard/uboot-imx cd uboot-imx Compiling u-boot source /opt/poky/1.7/environment-setup-cortexa9hf-vfp-neon-poky-linux-gnueabi ARCH=arm CROSS_COMPILE=arm-poky-linux-gnueabi- make udoo_neo_config ARCH=arm CROSS_COMPILE=arm-poky-linux-gnueabi- make This will generate a SLP file with the DCD (Device Configuration Data) table and the u-boot.img file. Note: By default this U-Boot configuration detects the UDOO Neo board and in our case it would look for the imx6sx-udoo-neo-full-hdmi-m4.dtb. You may need to use a different device tree depending on your board. 5. Flashing SD Card 5.1. Using the .sdcard file to load the BSP Release Image The easiest way to load the Root File System from our image is using the .sdcard file that is created after running bitbake. This image will be located on the following path: /<BSP_DIR>/<BUILD_DIR>/tmp/deploy/images/imx6sxsabresd This will also load the BSP Release U-boot and device tree files but we will then exchange for our own. To do this use the following command where sdx is your SD Card. $ sudo dd if=<image name>.sdcard of=/dev/sdx bs=1M && sync Alternatively we can manually create the two partitions needed. For more information on this please refer to the Yocto User’s Guide. 5.2. Writing U-boot To flash U-boot you need to flash both the SPL file and the u-boot.img file using the following commands assuming that your SD card is in /dev/sdx dd if=SPL of=/dev/sdx bs=1K seek=1 dd if=u-boot.img of=/dev/sdx bs=1K seek=69 5.3. Copying the Device Tree Blob Copy the imx6sx-udoo-neo-full-hdmi-m4.dtb device tree to a folder called dts on the FAT partition. 6. Adding Kernel Driver Download the driver source from the git repository from the Linux source directory cd /<BSP_DIR>/<BUILD_DIR>/tmp/work/imx6sxsabresd-poky-linux-gnueabi/linux-imx/3.14.28-r0/git/drivers/misc $ git clone https://github.com/NXPNFCLinux/nxp-pn5xx.git Add the line below to the Makefile of the current directory     obj-y += nxp-pn5xx/ Include the driver config by adding below line to the heading configuration file (drivers/misc/Kconfig). source "drivers/misc/nxp-pn5xx/Kconfig" Export the environment variables cd /<BSP_DIR>/<BUILD_DIR>/tmp/work/imx6sxsabresd-poky-linux-gnueabi/linux-imx/3.14.28-r0/git/     $ source /opt/poky/1.7/environment-setup-cortexa9hf-vfp-neon-poky-linux-gnueabi     $ export ARCH=arm     $ export CROSS_COMPILE=$TARGET_PREFIX     $ make imx_v7_defconfig make menuconfig Inside menu config include the driver as a module (<M>), which is on the path: Device Drivers --->       Misc devices --->     < M> NXP PN5XX based driver Save the changes and exit, and then compile the modules. $ make modules We will then install the modules to our image. Insert the SD card with the loaded image and mount it to access it from the command promt. sudo mount /dev/sdx ~/mountpoint/ Where sdx is your SD card. Then use the following command to install the modules. sudo ARCH=arm INSTALL_MOD_PATH=/home/user/mountpoint modules_install firmware_install Before unmounting our SD card we will install the NFC library. 7.Installing the NFC library. Install the necessary libraries on the host by running the following commands: sudo apt-get update sudo apt-get install automake sudo apt-get install autoconf sudo apt-get install libtool Note: In case you are using Ubuntu 12.04 the following commands will allow for autoconf 2.69 to be installed, which is the minimum version required by the NFC library. sudo add-apt-repository ppa:dns/gnu -y sudo apt-get update -q sudo apt-get install --only-upgrade autoconf Enter our directory and install the Linux libnfc-nci stack cd ~/UDOOneo-dev git clone https://github.com/NXPNFCLinux/linux_libnfc-nci.git Generate the configuration script by executing the bootstrap bash script cd ~/UDOOneo-dev/linux_libnfc-nci ./bootstrap Configure Make file. We are using the default toolchain sysroots path. To configure for the PN7150 please use the following settings: ./configure --enable-pn7150 --host=arm-none-linux --prefix=/opt/poky/1.7/sysroots/x86_64-pokysdk-linux/usr --sysconfdir=/home/user/mountpoint/etc To configure for the PN7120 please use the following settings: ./configure --enable-pn7120 --host=arm-none-linux --prefix=/opt/poky/1.7/sysroots/x86_64-pokysdk-linux/usr --sysconfdir=/home/user/mountpoint/etc We are ready to execute the make and install the stack. make sudo make install After a successful build the libraries and a application demo are built in .libs directory. Copy the libraries to “/usr/lib” directory of the target and nfcDemoApp to the targets “/usr/sbin” cd .libs sudo cp * /home/user/mountpoint/usr/lib sudo cp nfcDemoApp /home/user/mountpoint/usr/sbin cd ~/UDOOneo-dev/linux_libnfc-nci/conf/PN7150 sudo cp * /home/user/mountpoint/etc Now we can unmount our SD card. sudo umount /home/user/mountpoint 8. Testing the NFC Reader Insert the micro SD card into the slot of the UDOO Neo board and install the PN1750 NFC Controller board on top of the UDOO Neo board. We will be using the terminal console in order to access the board. You may use the official USB/Serial debug module for NEO or a similar adapter. For more information on setting up the Serial Debug Console on the UDOO Neo board please refer to the link below. http://www.udoo.org/docs-neo/Basic_Setup/Serial_Debug_Console.html Once it has booted, install the .ko file. insmod /lib/modules/3.14.28+g91cf351/kernel/drivers/misc/nxp-pn5xx/pn5xx_i2c.ko Then run the nfcDemoApp. We’ll test it in poll mode, where it looks for available tags and reads them. nfcDemoApp poll You should get a console output as shown below when placing a NFC tag next to the NFC reader. Appendix. References and useful documents http://www.nxp.com/documents/application_note/AN11697.pdf Demoboards for PN7150|NXP PN7120 NFC Controller SBC Kit|NXP NFC PN7120 on the  i.MX6Q | NXP Community Basic Device Tree for the Udoo Board Basic Device Tree for the Udoo Board U-Boot Migration Example http://www.nxp.com/documents/user_manual/UM10935.pdf
記事全体を表示
The latest NFC reader library supports lpc1769 which is a cortex M3 controller with LPCopen lib supports, so in theory , it should supports other controllers supported by LPCopen, but we have to test this, so we choose , for example, lpc11u37, a cortex M0 based controller for this porting. Platform for this porting: LPC11u37h-Xpresso Rev A: CLRC663 plus based CLEV663B Blueboard 3.0. Please refer to Prepare CLEV663B board for NFC reader library porting  for details. They are connected via LPCXpresso ports. Now we may start the porting, the IDE we use in this porting is MCUXpresso 10.1.1 1. Download and import the latest NFC reader library for CLEV6630B, as it supports CLRC663 plus. For how to import the project, please refer to https://www.nxp.com/docs/en/application-note/AN11211.pdf . 2. Download LPCopen for LPC11u37h and import it as well. 3. Now we may choose some demo in the NFC reader library, for example, the NfcrdlibEx1_BasicDiscoveryLoop, and create new build configuration for lpc11u37h. 4.Select the correct MCU 5.Modify build settings Here we find LPC1769RC663 is defined, so we have to find what is related with this definition in the code and change it/them. Fortunately they are not too many. you may find they are just related with board header file including or something like that, so it is not difficult to modify them. 6. Add new header file for the new board definition 7. add the new board definition 8. As we now use LPCopen lib for LPC11u37h instead, so we have to change the including path. As LPC11u37h is cortex M3 based, so we have to setup FreeRTOS for M0 support: and add the source code for building: 9.Change the link libraries and including path 10.Set the correct ref projects to use LPCopen for LPC11u37h. 11. Some changes in LPCopen library: 1)enable semihosting debug 2) add startup source code for the demo, this C file can be reused/imported from the some lpcopen project. 12. After the above steps, we still have to change the source code in DAL: You know , due to different version of LPCopen library,  some function definition might be changed, and different LPCXpresso boards has different pin connection to the LPCXpresso ports, so it is recommended checking the board schematics and the examples in lpcopen project , find the proper function calls to implement the source codes in the DAL folder. When you finished , the porting is done. 13. As the final image size is greater than 128K, we have enable optimization for size. 14.Demo test ok. Now , we know lpc11u37 can be supported by the latest NFC reader library, so the porting should also be applied for other Cortex M0 controllers, and it is recommended the controller with large internal flash size, better greater than 128K, but anyway, in this porting, I didn't enable the size optimization for LPCopen library, so there might be possibility to have a smaller size image at last...
記事全体を表示
Hello NFC Community, This document describes how to write multiple NDEF Text Record by making use of NFC TagWriter app by NXP. First of all, download the TagWriter app from the Play Store: NFC TagWriter by NXP - Apps on Google Play  1) Once downloaded, go to the Write tags section. 2) In this case, a NDEF text record will be written. 3) Write a text message in the TextBox and press the Save & Write Button. 4) Now, press the ADD MORE RECORD Button so that another record can be added to the content to be written in the tag. 5) Select Plain Text again.   6) Same, procedure as in 3. 7) Finally, Tap the card and press the DONE Button. I hope this is of great help! Ivan R.
記事全体を表示