Multi Source Translation Content

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

Multi Source Translation Content

ディスカッション

ソート順:
PN7220 Android 16 Porting to i.MX95 FRDM EVK Board Introduction Many customers are using PN7220 + Android 16 recently. In this document, I will show you how to porting the PN7220 to Android 16. I use the i.MX95 FRDM board as a reference target board. NOTE :  All the modifications are just for reference. They are NOT a NXP official patches for the newer release of AOSP porting. So the modifications may not be the best solution. Customer please base on their needs to modify the AOSP source code. This is not for production. Customer still need to perform full testing after the porting.  Hardware boards: i.MX95 FRDM Board (FRDM i.MX 95 Development Board | NXP Semiconductors) PN7220 EVK -- PNEV7220BP1 (PNEV7220BP1 Development Board for PN7220 NFC Controller | NXP Semiconductors) There is a 40pins connector on both PN7220 EVK and i.MX95 FRDM board. So PN7220 + i.MX95 FRDM connecting together is like this: Build the Android BSP for i.MX95 FRDM board: The i.MX Android BSP that I used is Android 16.0.0_1.4.0 (L6.12.49_2.2.0 BSP). It could be downloaded from here: Android OS for i.MX Applications Processors | NXP Semiconductors 1. Download the "Documentation" and the "Install Source Package".  2. Follow the steps in Android User's Guide to build the Android BSP for "evk_95" first.  $ export MY_ANDROID=`pwd` $ source build/envsetup.sh $ lunch evk_95-nxp_stable-userdebug $ export TARGET_RELEASE=nxp_stable $ build_build_var_cache $ ./imx-make.sh -j4 2>&1 | tee build-log.txt According to the android_build/.repo/manifests/aosp-android-16.0.0_1.4.0.xml, you will see the AOSP version is android-16.0.0_r4. According to the PN7220 Android 16 porting guide (PN7160/PN7220 – Android 16 porting guide), the patches is for AOSP release android-16.0.0_r2. So fortunately, the AOSP release version between them is not big different.  Now, we start the porting: 1. Kernel Driver To establish connection with the PN7220, the Android stack uses the nxpnfc kernel driver.  You could download the driver from github below: nfcandroid_platform_drivers/drivers at br_ar_16_comm_infra_dev · nxp-nfc-infra/nfcandroid_platform_drivers · GitHub The command is : git clone "https://github.com/nxp-nfc-infra/nfcandroid_platform_drivers.git" -b br_ar_16_comm_infra_dev There is driver for Kernel 6.6 and 6.12. So, please download the correct one for your porting. For example, the kernel in i.MX Android BSP Android 16.0.0_1.4.0 is 6.12. So I will use the 6.12 driver for my porting. In your porting, make sure the PATH in Makefile and Kconfig files are setting properly.  For example in my porting: android_build/vendor/nxp-opensource/kernel_imx/drivers/nfc/pn7220$ tree . ├── common.c ├── common.h ├── i2c_drv.c ├── i2c_drv.h ├── Kbuild ├── Kconfig └── Makefile 0 directories, 7 files For simplifying everything, we will only add a support for I2C and not SPI. Replace drivers/nfc/pn7220/Makefile default code with following code (for easier understanding) nxpnfc-i2c-objs = i2c_drv.o common.o obj-$(CONFIG_NXP_NFC_I2C) += nxpnfc_i2c.o The contents of drivers/nfc/Makefile. Add the PN7220 like below: # SPDX-License-Identifier: GPL-2.0 # # Makefile for nfc devices # obj-$(CONFIG_NXP_NFC_I2C) += pn7220/ obj-$(CONFIG_NFC_FDP) += fdp/ obj-$(CONFIG_NFC_PN544) += pn544/ obj-$(CONFIG_NFC_MICROREAD) += microread/ obj-$(CONFIG_NFC_PN533) += pn533/ obj-$(CONFIG_NFC_MEI_PHY) += mei_phy.o obj-$(CONFIG_NFC_SIM) += nfcsim.o obj-$(CONFIG_NFC_PORT100) += port100.o obj-$(CONFIG_NFC_MRVL) += nfcmrvl/ obj-$(CONFIG_NFC_TRF7970A) += trf7970a.o obj-$(CONFIG_NFC_ST21NFCA) += st21nfca/ obj-$(CONFIG_NFC_ST_NCI) += st-nci/ obj-$(CONFIG_NFC_NXP_NCI) += nxp-nci/ obj-$(CONFIG_NFC_S3FWRN5) += s3fwrn5/ obj-$(CONFIG_NFC_ST95HF) += st95hf/ obj-$(CONFIG_NFC_VIRTUAL_NCI) += virtual_ncidev.o The contents of drivers/nfc/Kconfig. Add the PN7220 like below: source "drivers/nfc/microread/Kconfig" source "drivers/nfc/nfcmrvl/Kconfig" source "drivers/nfc/st21nfca/Kconfig" source "drivers/nfc/st-nci/Kconfig" source "drivers/nfc/nxp-nci/Kconfig" source "drivers/nfc/s3fwrn5/Kconfig" source "drivers/nfc/st95hf/Kconfig" source "drivers/nfc/pn7220/Kconfig" endmenu 2. Adding the "nxpnfc" to the i.MX95 FRDM board device tree file android_build/vendor/nxp-opensource/kernel_imx/arch/arm64/boot/dts/freescale/imx95-15x15-frdm.dts We need to check the connection between two boards and then to decide which pins to use in the device tree file. Here is the 40 pins connector on the PN7220: Here is the 40 pins connector on the i.MX95 FRDM board. According to the 40 pins connection between PN7220 EVK and the i.MX95 FRDM board, I decided to use the I2C6 and the GPIO2_20, GPIO2_21 and GPIO2_26. So, in the imx95-15x15-frdm.dts, I added: &lpi2c6 { clock-frequency = <400000>; pinctrl-names = "default"; pinctrl-0 = <&pinctrl_lpi2c6>; status = "okay"; nxpnfc@28{ compatible = "nxp,nxpnfc"; reg = <0x28>; pinctrl-names = "default"; pinctrl-0 = <&pinctrl_nfc>; nxp,nxpnfc-irq = <&gpio2 26 0>; nxp,nxpnfc-ven = <&gpio2 21 0>; nxp,nxpnfc-mode_sw = <&gpio2 20 0>; }; }; And the IOMUX settings in the imx95-15x15-frdm.dts. pinctrl_nfc: nfcgrp { fsl,pins = < IMX95_PAD_GPIO_IO26__GPIO2_IO_BIT26 0x39e // IRQ IMX95_PAD_GPIO_IO21__GPIO2_IO_BIT21 0x39e // VEN IMX95_PAD_GPIO_IO20__GPIO2_IO_BIT20 0x39e // MODE_SW >; }; pinctrl_lpi2c6: lpi2c6grp { fsl,pins = < IMX95_PAD_GPIO_IO02__LPI2C6_SDA 0x40000b9e IMX95_PAD_GPIO_IO03__LPI2C6_SCL 0x40000b9e >; }; 3. Modify the imx95_gki.fragment File:  android_build/vendor/nxp-opensource/kernel_imx/arch/arm64/configs/imx95_gki.fragment Add the "CONFIG_NXP_NFC_I2C=m" into the imx95_gki.fragment 4. Add the settings in your corresponding board configuration files in Android - Go to the android_build/device/nxp/imx9/evk_95/  - Modify the BoardConfig.mk. # Add KVM support BOARD_BOOTCONFIG += androidboot.hypervisor.vm.supported=true + # ---- selinux permissive ---- + BOARD_KERNEL_CMDLINE += androidboot.selinux=permissive # -------@block_sepolicy------- BOARD_SEPOLICY_DIRS := \ $(CONFIG_REPO_PATH)/imx9/sepolicy \ $(IMX_DEVICE_PATH)/sepolicy \ + vendor/nxp/nfc/sepolicy \ + vendor/nxp/nfc/sepolicy/nfc \ + vendor/nxp/emvco/sepolicy +include vendor/nxp/nfc/BoardConfigNfc.mk  - Add the "nxpnfc_i2c.ko" to the ShareBoardConfig.mk. Make sure the path and the filename are correct. ifeq ($(LOADABLE_KERNEL_MODULE),true) IMX_ANDROID_FIRST_STAGE_MODULES += \ $(KERNEL_OUT)/drivers/hwmon/hwmon.ko \ $(KERNEL_OUT)/drivers/hwmon/scmi-hwmon.ko \ .... .... .... $(KERNEL_OUT)/drivers/soc/imx/soc-imx9.ko \ $(KERNEL_OUT)/drivers/gpio/gpio-adp5585.ko \ $(KERNEL_OUT)/drivers/gpio/gpio-pca953x.ko \ $(KERNEL_OUT)/drivers/gpio/gpio-vf610.ko \ + $(KERNEL_OUT)/drivers/nfc/pn7220/nxpnfc_i2c.ko .... .... BOARD_VENDOR_KERNEL_MODULES += \ $(KERNEL_OUT)/drivers/media/i2c/ap1302.ko \ $(KERNEL_OUT)/drivers/media/i2c/ox03c10.ko \ $(KERNEL_OUT)/drivers/media/i2c/max96717_lib.ko \ .... .... $(KERNEL_OUT)/drivers/net/ethernet/freescale/enetc/fsl-enetc-vf.ko \ $(KERNEL_OUT)/drivers/net/ethernet/freescale/enetc/fsl-enetc4.ko \ $(KERNEL_OUT)/drivers/net/phy/realtek.ko \ $(KERNEL_OUT)/drivers/hwmon/pwm-fan.ko \ + $(KERNEL_OUT)/drivers/nfc/pn7220/nxpnfc_i2c.ko - Add the INxpNfc and INxpEmvco to the device_framework_matrix.xml nxp.hardware.secureime 1 ISecureIME default nxp.hardware.ele 1 ISecureEnclave default nxp.hardware.imx_dek_extractor 1 IDek_Extractor default vendor.nxp.nxpnfc_aidl 2 INxpNfc default vendor.nxp.emvco 1 INxpEmvco default  - Add the following to the evk_95.mk # ------nfc------- $(call inherit-product, vendor/nxp/nfc/device-nfc.mk) $(call inherit-product, vendor/nxp/emvco/device-emvco.mk) PRODUCT_PACKAGES += \ android.hardware.nfc2-service.nxp PRODUCT_PACKAGES += \ com.nxp.emvco \ com.nxp.nfc \ nfc_nci_nxp_pn72xx - Add the nxpnfc_i2c in init.rc exec u:r:vendor_modprobe:s0 -- /vendor/bin/modprobe -a -d \ /vendor/lib/modules nxpnfc_i2c write /sys/power/wake_lock nosleep - Add nxpnfc to ueventd.nxp.rc /dev/ttymxc1 0666 nfc nfc /dev/ttymxc2 0666 nfc nfc /dev/nxpnfc 0666 nfc nfc 5. Apply the NXP AOSP patches I write a script to download the patches from the github. The script file and the android_build folder is on the same directory. Run the AOSP_adaptation.sh.  AOSP_adaptation.sh # nfcandroid_nfc_modules git clone "https://github.com/nxp-nfc-infra/nfcandroid_modules_nfc.git" cd nfcandroid_modules_nfc git checkout br_ar_16_comm_infra_dev cp -rf * ../android_build/packages/modules/Nfc cd .. # nfcandroid_nfc_hidlimpl git clone "https://github.com/nxp-nfc-infra/nfcandroid_nfc_hidlimpl.git" cd nfcandroid_nfc_hidlimpl git checkout br_ar_16_comm_infra_dev cp -rf * ../android_build/hardware/nxp/nfc cd .. # nfcandroid_frameworks git clone "https://github.com/nxp-nfc-infra/nfcandroid_frameworks.git" cd nfcandroid_frameworks git checkout br_ar_16_comm_infra_dev mkdir ../android_build/packages/modules/Nfc/framework cp -rf * ../android_build/packages/modules/Nfc/framework cd .. # nfcandroid_emvco_aidlimpl git clone "https://github.com/nxp-nfc-infra/nfcandroid_emvco_aidlimpl.git" cd nfcandroid_emvco_aidlimpl git checkout br_ar_16_comm_infra_dev mkdir ../android_build/hardware/nxp/emvco cp -rf * ../android_build/hardware/nxp/emvco cd .. # nfcandroid_platform_reference git clone "https://github.com/nxp-nfc-infra/nfcandroid_platform_reference.git" cd nfcandroid_platform_reference git checkout br_ar_16_comm_infra_dev cp -rf vendor/nxp/* ../android_build/vendor/nxp/ cd .. Apply a patch. $ cd android_build/system/logging $ patch -p1 < ../../../nfcandroid_platform_reference/build_cfg/build_pf_patches/AROOT_system_logging.patch Add TDA Test support: # Clone repositories for test applications and TDA support # nfcandroid_infra_test_apps git clone https://github.com/nxp-nfc-infra/nfcandroid_infra_test_apps.git cd nfcandroid_infra_test_apps/ git checkout br_ar_16_comm_infra_dev cd test_apps/ cp -rf SMCU_Switch/ ../../android_build/packages/apps/ cp -rf EMVCoModeSwitchApp/ ../../android_build/packages/apps/ cd ../.. # nfcandroid_infra_comm_libs git clone "https://github.com/nxp-nfc-infra/nfcandroid_infra_comm_libs.git" cd nfcandroid_infra_comm_libs git checkout br_ar_16_comm_infra_dev cp -rf nfc_tda/ ../android_build/packages/modules/Nfc/libnfc-nci/ cp -rf emvco_tda/ emvco_tda_test/ ../android_build/hardware/nxp/emvco/ cp -rf NfcTdaTestApp/ ../android_build/packages/apps/ cd .. 6. Put changes into hardwatre/interfaces/compatibility_matrices  File: hardware/interfaces/compatibility_matrices/compatibility_matrix.202504.xml android.hardware.audio.effect 1-3 IFactory default nxp.hardware.imx_dek_extractor 1 IDek_Extractor default nxp.hardware.ele 1 ISecureEnclave default vendor.nxp.nxpnfc_aidl 2 INxpNfc default vendor.nxp.emvco 1 INxpEmvco default android.hardware.authsecret 1 IAuthSecret default 7. Add the firmware $ git clone https://github.com/NXP/nfc-NXPNFCC_FW.git $ cp -r nfc-NXPNFCC_FW/InfraFW/pn7220/64-bit-2.5/pn7220_64bits.so android_build/vendor/nxp/pn7220/firmware/lib64/libpn72xx_fw.so 8. Add the NXPAndroidDTA $git clone https://github.com/NXPNFCProject/NXPAndroidDTA.git $cd NXPAndroidDTA $git checkout br_ar_new_dta_arch cp -r NXPAndroidDTA android_build/vendor/nxp/ 9. Some fixes before build: $ cd android_build $ mv hardware/nxp/nfc/snxxx/Android.bp hardware/nxp/nfc/snxxx/_Android.bp $ mv hardware/nxp/nfc/snxxx/halimpl/power-tracker/Android.bp hardware/nxp/nfc/snxxx/halimpl/power-tracker/_Android.bp $ mv hardware/nxp/secure_element/snxxx/aidl/Android.bp hardware/nxp/secure_element/snxxx/aidl/_Android.bp $ cd hardware/nxp/nfc $ rm pn8x -rf Now, build the Android BSP again. Use "mm" to build the Android source code. After fixed all the errors of the AOSP build, use "imx-make.sh" to build the whole i.MX Android image.  When building the Android, there may have some errors during the build. I listed some errors and the workaround below for your reference. Error: error: packages/modules/Nfc/tests/cts/tests/Android.bp:20:1: "CtsNfcTestCases" depends on undefined module "CtsAppTestStubsShared". Workaround : Comment out "CtsAppTestStubsShared" in packages/modules/Nfc/tests/cts/tests/Android.bp Error: error: hardware/nxp/nfc/snxxx/halimpl_v2/power-tracker/Android.bp:17:1: "power_tracker_v2" depends on undefined module "nfc_nci_nxp_snxxx_headers_v2". Workaround: mv hardware/nxp/nfc/snxxx/halimpl_v2/power-tracker/Android.bp hardware/nxp/nfc/snxxx/halimpl_v2/power-tracker/_Android.bp Error: error: platform_testing/Android.bp:255:1: module "continuous_native_tests" variant "android_common": depends on //packages/modules/Nfc/NfcNci/nci/jni:libnfc-nci-jni-tests which is not visible to this module You may need to add "//platform_testing" to its visibility error: platform_testing/Android.bp:255:1: module "continuous_native_tests" variant "android_common": depends on //packages/modules/Nfc/libnfc-nci/tests:libnfc-nci-tests which is not visible to this module You may need to add "//platform_testing" to its visibility Workaround: nano packages/modules/Nfc/NfcNci/nci/jni/Android.bp In cc_test {     name: "libnfc-nci-jni-tests", .. ..     visibility: [         "//platform_testing:__subpackages__",     ], Same in packages/modules/Nfc/libnfc-nci/tests/Android.bp Error: FAILED: out/soong/.intermediates/packages/modules/Nfc/framework/framework-nfc.stubs.source.system/android_common/exportable/framework-nfc.stubs.source.system-stubs.srcjar out/soong/.intermediates/packages/modules/Nfc/framework/framework-nfc.stubs.source.system/android_common/exportable/framework-nfc.stubs.source.system_annotations.zip out/soong/.intermediates/packages/modules/Nfc/framework/framework-nfc.stubs.source.system/android_common/exportable/framework-nfc.stubs.source.system_api.txt out/soong/.intermediates/packages/modules/Nfc/framework/framework-nfc.stubs.source.system/android_common/exportable/framework-nfc.stubs.source.system_removed.txt out/soong/.intermediates/prebuilts/sdk/framework-nfc.api.system.latest/gen/framework-nfc.api.system.latest:52: error: Binary breaking change: Removed method android.nfc.NfcOemExtension.emulateNfcTechnologyATag(boolean,byte,byte,byte,byte[],byte,byte[]) [RemovedMethod] out/soong/.intermediates/prebuilts/sdk/framework-nfc.api.system.latest/gen/framework-nfc.api.system.latest:64: error: Binary breaking change: Removed method android.nfc.NfcOemExtension.overwriteRoutingTable(int,int,int,int,int) [RemovedMethod] out/soong/.intermediates/prebuilts/sdk/framework-nfc.api.system.latest/gen/framework-nfc.api.system.latest:77: error: Binary breaking change: Removed field android.nfc.NfcOemExtension.EMULATE_NFC_A_TAG_STATUS_FAILED_INTERNAL [RemovedField] out/soong/.intermediates/prebuilts/sdk/framework-nfc.api.system.latest/gen/framework-nfc.api.system.latest:78: error: Binary breaking change: Removed field android.nfc.NfcOemExtension.EMULATE_NFC_A_TAG_STATUS_FAILED_NFC_NOT_ENABLED [RemovedField] out/soong/.intermediates/prebuilts/sdk/framework-nfc.api.system.latest/gen/framework-nfc.api.system.latest:79: error: Binary breaking change: Removed field android.nfc.NfcOemExtension.EMULATE_NFC_A_TAG_STATUS_OK [RemovedField] out/soong/.intermediates/prebuilts/sdk/framework-nfc.api.system.latest/gen/framework-nfc.api.system.latest:120: error: Binary breaking change: Removed method android.nfc.NfcOemExtension.Callback.onRoutingChangeCompleted() [RemovedMethod] out/soong/.intermediates/prebuilts/sdk/framework-nfc.api.system.latest/gen/framework-nfc.api.system.latest:160: error: Binary breaking change: Removed method android.nfc.RoutingStatus.getDefaultFelicaRoute() [RemovedMethod] Aborting: Found compatibility problems checking the public API (/home/nxa08017/android16_1.4.0/android_build/out/soong/.temp/sbox/d1717a17fe92a8b2da806db0f1cb87830019487b/packages/modules/Nfc/framework/java) against the API in /home/nxa08017/android16_1.4.0/android_build/out/soong/.temp/sbox/d1717a17fe92a8b2da806db0f1cb87830019487b/./out/soong/.intermediates/prebuilts/sdk/framework-nfc.api.public.latest/gen/framework-nfc.api.public.latest exit status 255 Workaround: Comment out the lines 52,64,77,78,79,120,160 in out/soong/.intermediates/prebuilts/sdk/framework-nfc.api.system.latest/gen/framework-nfc.api.system.latest Error: out/soong/.intermediates/prebuilts/sdk/framework-nfc.api.public.latest/gen/framework-nfc.api.public.latest:77: error: Binary breaking change: Removed method android.nfc.NfcAdapter.isExitFramesSupported() [RemovedMethod] out/soong/.intermediates/prebuilts/sdk/framework-nfc.api.public.latest/gen/framework-nfc.api.public.latest:80: error: Binary breaking change: Removed method android.nfc.NfcAdapter.isPowerSavingModeEnabled() [RemovedMethod] out/soong/.intermediates/prebuilts/sdk/framework-nfc.api.public.latest/gen/framework-nfc.api.public.latest:81: error: Binary breaking change: Removed method android.nfc.NfcAdapter.isPowerSavingModeSupported() [RemovedMethod] out/soong/.intermediates/prebuilts/sdk/framework-nfc.api.public.latest/gen/framework-nfc.api.public.latest:91: error: Binary breaking change: Removed method android.nfc.NfcAdapter.setPowerSavingMode(boolean) [RemovedMethod] out/soong/.intermediates/prebuilts/sdk/framework-nfc.api.public.latest/gen/framework-nfc.api.public.latest:196: error: Binary breaking change: Removed method android.nfc.cardemulation.CardEmulation.getPollingLoopFiltersForService(android.content.ComponentName) [RemovedMethod] out/soong/.intermediates/prebuilts/sdk/framework-nfc.api.public.latest/gen/framework-nfc.api.public.latest:197: error: Binary breaking change: Removed method android.nfc.cardemulation.CardEmulation.getPollingLoopPatternFiltersForService(android.content.ComponentName) [RemovedMethod] out/soong/.intermediates/prebuilts/sdk/framework-nfc.api.public.latest/gen/framework-nfc.api.public.latest:202: error: Binary breaking change: Removed method android.nfc.cardemulation.CardEmulation.isDeviceScreenOnRequiredForService(android.content.ComponentName) [RemovedMethod] out/soong/.intermediates/prebuilts/sdk/framework-nfc.api.public.latest/gen/framework-nfc.api.public.latest:203: error: Binary breaking change: Removed method android.nfc.cardemulation.CardEmulation.isDeviceUnlockRequiredForService(android.content.ComponentName) [RemovedMethod] out/soong/.intermediates/prebuilts/sdk/framework-nfc.api.public.latest/gen/framework-nfc.api.public.latest:214: error: Binary breaking change: Removed method android.nfc.cardemulation.CardEmulation.setRequireDeviceScreenOnForService(android.content.ComponentName,boolean) [RemovedMethod] out/soong/.intermediates/prebuilts/sdk/framework-nfc.api.public.latest/gen/framework-nfc.api.public.latest:215: error: Binary breaking change: Removed method android.nfc.cardemulation.CardEmulation.setRequireDeviceUnlockForService(android.content.ComponentName,boolean) [RemovedMethod] out/soong/.intermediates/prebuilts/sdk/framework-nfc.api.public.latest/gen/framework-nfc.api.public.latest:248: error: Binary breaking change: Removed method android.nfc.cardemulation.CardEmulation.NfcEventCallback.onOffHostAidSelected(String,String) [RemovedMethod] Aborting: Found compatibility problems checking the public API (/home/nxa08017/android16_1.4.0/android_build/out/soong/.temp/sbox/6245059c063e0ae76fa4356a9b840b923ddb8764/packages/modules/Nfc/framework/java) against the API in /home/nxa08017/android16_1.4.0/android_build/out/soong/.temp/sbox/6245059c063e0ae76fa4356a9b840b923ddb8764/./out/soong/.intermediates/prebuilts/sdk/framework-nfc.api.public.latest/gen/framework-nfc.api.public.latest exit status 255 Workaround: Same as the previous workaround. Comment out the lines (line number shown in error) in out/soong/.intermediates/prebuilts/sdk/framework-nfc.api.public.latest/gen/framework-nfc.api.public.latest. Error: FAILED: out/soong/.intermediates/system/sepolicy/vendor_sepolicy.cil.raw/android_common/evk_95/vendor_sepolicy.cil.raw out/host/linux-x86/bin/checkpolicy -C -M -L -c 30 -o out/soong/.intermediates/system/sepolicy/vendor_sepolicy.cil.raw/android_common/evk_95/vendor_sepolicy.cil.raw out/soong/.intermediates/system/sepolicy/vendor_sepolicy.conf/android_common/evk_95/vendor_sepolicy.conf && out/host/linux-x86/bin/build_sepolicy filter_out -f out/soong/.intermediates/system/sepolicy/reqd_policy_mask.cil/android_common/reqd_policy_mask.cil -t out/soong/.intermediates/system/sepolicy/vendor_sepolicy.cil.raw/android_common/evk_95/vendor_sepolicy.cil.raw # hash of input list: 7a5f97fdfa590e2ec5a2c6b745c65293680d0202c9b5869c1425905c209b9bf1 vendor/nxp/emvco/sepolicy/service.te:1:ERROR 'Duplicate declaration of type' at token ';' on line 21764: type hal_emvco_service, hal_service_type, service_manager_type; #line 1 "vendor/nxp/emvco/sepolicy/service.te" checkpolicy:  error(s) encountered while parsing configuration 11:50:27 ninja failed with: exit status 1 Workaround: nano vendor/nxp/emvco/sepolicy/hwservice.te Change the hal_emvco_service to hal_emvco_hwservice like this: type hal_emvco_hwservice, hwservice_manager_type; nano vendor/nxp/emvco/sepolicy/hwservice_contexts vendor.nxp.emvco::INxpEmvco                             u:object_r:hal_emvco_hwservice:s0 nano vendor/nxp/emvco/sepolicy/hal_emvco_default.te + allow hal_emvco_default hal_emvco_hwservice:hwservice_manager { add find }; Error: FAILED: out/soong/.intermediates/hardware/nxp/nfc/intf/nxpnfc/aidl/vendor.nxp.nxpnfc_aidl_interface/checkhash_2.timestamp if [ $(cd 'hardware/nxp/nfc/intf/nxpnfc/aidl/aidl_api/vendor.nxp.nxpnfc_aidl/2' && { find ./ -name "*.aidl" -print0 | LC_ALL=C sort -z | xargs -0 sha1sum && echo 1; } | sha1sum | cut -d " " -f 1) = $(tail -1 'hardware/nxp/nfc/intf/nxpnfc/aidl/aidl_api/vendor.nxp.nxpnfc_aidl/2/.hash') ]; then touch out/soong/.intermediates/hardware/nxp/nfc/intf/nxpnfc/aidl/vendor.nxp.nxpnfc_aidl_interface/checkhash_2.timestamp; else cat 'system/tools/aidl/build/message_check_integrity.txt' && exit 1; fi ############################################################################### # ERROR: Modification detected of stable AIDL API file                        # ############################################################################### Above AIDL file(s) has changed, resulting in a different hash. Hash values may be checked at runtime to verify interface stability. If a device is shipped with this change by ignoring this message, it has a high risk of breaking later when a module using the interface is updated, e.g., Mainline modules. Workaround: echo $(cd 'hardware/nxp/nfc/intf/nxpnfc/aidl/aidl_api/vendor.nxp.nxpnfc_aidl/2' && { find ./ -name "*.aidl" -print0 | LC_ALL=C sort -z | xargs -0 sha1sum && echo 1; } | sha1sum | cut -d " " -f 1) d9e99a62ff5ebed44083a79577ec7ed32d264775 Then,  nano hardware/nxp/nfc/intf/nxpnfc/aidl/aidl_api/vendor.nxp.nxpnfc_aidl/2/.hash replace the value to d9e99a62ff5ebed44083a79577ec7ed32d264775 A runtime error: Problem: You will find the following failed about the permission in the log. java.lang.IllegalStateException: Signature|privileged permissions not in privileged permission allowlist: {com.android.nfc (/apex/com.android.nfcservices/priv-app/[email protected]😞 android.permission.OBSERVE_ROLE_HOLDERS} Workaround: Add :                 To the file : out/target/product/evk_95/system/etc/permissions/privapp-permissions-platform.xml 10. Download the image to the target board: - We use the tool UUU to download the image to the i.MX boards. Download the UUU from here : Releases · nxp-imx/mfgtools - Download the Android 16 BSP i.MX95 EVK demo image from the Android i.MX BSP web page first. There are UUU script and necessary image files already in the demo image package.  - Put the UUU executable file into the demo image folder. uuu_imx_android_flash.bat is the script also in the same folder. - After your Android BSP building is completed and succeed, copy the images to the demo image folder. The image files are located in android_build/out/target/product/evk_95/. - Switch the boot mode to "Download" mode on the i.MX95 FRDM board. - Run the UUU script to download the images to the FRDM board. uuu_imx_android_flash.bat -f imx95 -a -e -u 15x15-frdm -d 15x15-frdm Run the "TagInfo" on the board: - Download the TagInfo apk file from the NXP TagInfo App web page . - Use the "adb install" command to install the TagInfo to the FRDM board. C:\>adb install com.nxp.taginfo-6.2.0-play-release-protected.apk * daemon not running; starting now at tcp:5037 * daemon started successfully Performing Streamed Install Success After TagInfo installed, the TagInfo icon will be available on the GUI. Run the TagInfo, and then put a card on the board. The information of the card will be show on the TagInfo App. Reference: PN7160/PN7220 – Android 16 porting guide PN7220 NFC Frontend IC with Integrated Power Management | NXP Semiconductors Android OS for i.MX Applications Processors | NXP Semiconductors nxp-nfc-infra · GitHub
記事全体を表示
S32 Design Studio - Export and Debug 1 Table of Contents • Introduction • Open the generated project in S32 Design Studio • Debug the generated application in S32 Design Studio • Debug the code generated from the Simulink model • Conclusion 2 Introduction This article explains how to take a project generated with the Model-Based Design Toolbox (MBDT) in Simulink and open, build, and debug it in S32 Design Studio. It focuses on the transition from model execution in Simulink to target-level debugging and validation on S32 hardware. 3 Open the generated project in S32 Design Studio MBDT generates code from Simulink models and exports it as an S32 Design Studio-compatible project. After a successful model build, the generated _Config folder contains the files required by the IDE. The project can then be opened directly from Simulink or imported into S32 Design Studio for further configuration, building, and debugging on S32 hardware. Before opening or debugging the project in S32 Design Studio, build the Simulink model. The build process generates the code and project structure required for IDE integration. You can open the generated project either directly from Simulink or manually from within S32 Design Studio. Use the Simulink option when you want to launch the generated project immediately after configuration. Use the IDE import option when you want to manage the project manually from an S32 Design Studio workspace. Open the project from Simulink To open the project from Simulink, open the model Hardware Settings from the Hardware tab or press Ctrl + E. Then go to Hardware Implementation → Hardware board settings → Target hardware resources → S32 Design Studio Project and select Open. Figure 1. S32 Design Studio project settings in Simulink A dialog appears and prompts you to select the S32 Design Studio installation path. Figure 2. S32 Design Studio installation path selection To select the S32 Design Studio installation path later, or to change it during toolbox usage, click Browse in the S32 Design Studio location field under the Tools Paths group. Figure 3. S32 Design Studio path changing The generated project opens in S32 Design Studio and is ready to build, configure, or debug. Figure 4. Generated project opened in S32 Design Studio Open the project inside the IDE To import the project manually into S32 Design Studio, follow these steps: Inside the IDE, select File → Import → Existing Projects into Workspace. Figure 5. Importing an existing project into the workspace Browse for the _Config folder in Select root directory. Before clicking Finish, make sure that Copy projects into workspace is disabled. If the project is copied into the S32 Design Studio workspace, the build process will fail. Figure 6. Directory selection for the generated project 4 Debug the generated application in S32 Design Studio To build and debug the project in S32 Design Studio, select the project and click Debug. S32 Design Studio builds the project and automatically switches to the Debug perspective. Note: Ensure that the target hardware board is connected before starting the debug session. Figure 7. Starting the debug session Figure 8. Debug perspective in S32 Design Studio After the debugger launches and the application is loaded on the target, you can use the following actions to control program execution and inspect the generated code: The Breakpoint action sets a breakpoint when you double-click in the left margin of a .c file:   Figure 9. Breakpoint set in the generated source file The Step Over (F6) action executes the current line while remaining in the same function: Figure 10. Step Over action in the Debug toolbar The Step Into (F5) action enters a called function: Figure 11. Step Into action in the Debug toolbar The Step Return (F7) action runs to the end of the current function: Figure 12. Step Return action in the Debug toolbar The Resume (F8) action runs until the next breakpoint: Figure 13. Resume action in the Debug toolbar Figure 14. Breakpoint reached after pressing Resume action The Suspend (F9) action pauses execution at the current instruction: Figure 15. Suspend action in the Debug toolbar Figure 16. Function paused after pressing Suspend action The Terminate (Ctrl + F2) action stops the debug session and disconnects from the target: Figure 17. Terminate action in the Debug toolbar The Disconnect action leaves the target running while detaching the debugger: Figure 18. Disconnect action in the Debug toolbar 5 Debug the code generated from the Simulink model The code generated by the Simulink model can be found in the _step() function. To enter this function, set a breakpoint before the function call, run the application until the breakpoint is reached, and then select Step Into. Alternatively, Ctrl + Click the function name to open the function and place a breakpoint inside it. Figure 19. modelName_step function In this function, you will also find the generated code for the blocks placed inside the Simulink model. Figure 20. Generated step function in the source code To monitor variable values, hover over a variable to see its current value: Figure 21. Variable value displayed on hover Alternatively, add the variable to the Expressions view by selecting Add new expression, entering the variable name, and pressing Enter. Figure 22. Add new expression in Expressions view Figure 23. Variable added to Expressions view Upon running the code, if the value changes, it will be highlighted. Figure 24. Variable value highlighted during debug The names of the variables in the generated code are the same as the names they have in the Simulink model, making it easier to debug the generated code. Figure 25. Variable name in Simulink model and generated code 6 Conclusion After identifying the generated function and monitoring key variables, you can validate how the Simulink model behavior maps to the generated application running on the target hardware. For more tutorials on installing, activating, and using S32 Design Studio, see the S32 Design Studio tutorials on the community page: S32 Design Studio Knowledge Base.
記事全体を表示
MCTPTX1AK324、FreeMASTER接続の問題 0x80000101 モーター開発にはMCTPTX1AK324の開発ボードを使っています。今、ボタン3を押すとモーターは動きます。設定を調整するためにMCATホストコンピュータを使う必要があります。しかし、シリアル接続でfreeMASTERを使うとエラーが表示されます:接続タイムアウト、0x8000 0101。デモプログラムに変更が必要かどうか確認してもらえますか? 現在、デモプログラムの一部のコードがブロックされています。M3でGD3000とIPCFを初期化するとプログラムがフリーズするため、FAEの提案に基づいてブロックしました。 3Q Re: MCTPTX1AK324, FreeMASTER connecttion problem 0x80000101 こんにちは、 FreeMASTERの接続タイムアウト問題を解決するための一般的なヒントをいくつかご紹介します。それでも効果がなければ、より具体的なサポートを求めてモータ制御チームに連絡してみます。 一般的に、タイムアウトとは、ボードがFreeMASTERコマンドに応答しないことを意味します。以下のことをお勧めします。 1. NXPから受け取ったオリジナルの未修正ソフトウェアを使用し、オリジナルのボードキットを使用することを確認してください。 2. 接続ポートとケーブルを確認してください。FreeMASTERで「プロジェクト」→「オプション」に進み、シリアルCOMポートを確認してください。システムに他にもポートがあって、間違ったものを選んだ場合もあります。 3. ツール/接続ウィザードを使用して、さまざまなCOMポートを検査します。 4. FreeMASTERを別のアプリケーションで使うようにしましょう。理想的には、ターゲットボードでFreeMASTERサンプルアプリケーションが利用可能であれば、そのアプリケーションのいずれかを利用してください。 5. 上級編:オシロスコープまたはロジックアナライザをシリアル通信ラインに接続して、RX信号とTX信号がアクティブかどうかを確認します。FMSTR_ProtocolDecoderにブレークポイントを設定して、コードがそこで停止するかどうかを確認してください。そうでなければ、コマンドはMCUにすら届きません。 よろしくお願いいたします。 ミハル
記事全体を表示
My S32 Design Studio for ARM Version 2.2 license has expired. Could you please help me extend it? Thank you! My S32 Design Studio for ARM Version 2.2 license has expired. Could you please help me extend it? Thank you! Re: S32 Design Studio for ARM Version 2.2 许可证到期,麻烦帮忙延期,谢谢! Hi,  your S32DS license has been extended. 
記事全体を表示
i.MX95 启动 ROM:配置 eMMC Boot0/Boot1 为主/从启动盘,FlexSPI NOR 为恢复盘 各位专家好, 我正在尝试了解 i.MX95 启动 ROM 是如何处理主启动、辅助启动和恢复启动阶段的。我已经查阅了参考手册和一些 U-Boot spl 源代码,但我仍然不清楚恢复启动机制的工作原理。 我的目标是实现以下启动架构: 主启动: eMMC Boot0 辅助启动: eMMC 启动1 Recovery 启动: FlexSPI 或非 闪存(黄金恢复镜像) 在查看arch/arm/mach-imx/image-container.c文件时,我注意到以下代码: printf("Boot stage: "); if (rom_data.boot_stage == 0x6) printf("Primary\n"); else if (rom_data.boot_stage == 0x9) printf("Secondary\n"); else if (rom_data.boot_stage == 0xa) printf("Recovery\n"); else printf("USB Serial Download\n"); 根据此,Boot ROM 似乎支持四个启动阶段:主启动、辅助启动、恢复启动和 USB 串口下载启动。但是,我找不到足够的信息来解释如何选择或配置恢复阶段。 我希望就以下问题获得一些指导: 是否可以将FlexSPI 或非 闪存配置为恢复引导设备,同时使用eMMC Boot0 和 Boot1作为主启动分区和辅助启动分区? 如果支持这种配置,推荐的配置方法是什么? 在选择主启动、辅助启动和恢复启动阶段时,启动 ROM 遵循的顺序是什么? 如果主启动和辅助启动都失败,什么情况下会触发恢复启动阶段? 在开发和验证过程中,可以有意重现哪些故障条件来模拟恢复模式? 是否有任何文档或应用说明详细描述了启动 ROM 启动选择算法和恢复启动流程? 引导设备熔丝配置(熔丝模式) 在选择恢复引导设备时 是否 起作用? 恢复设备是由引导设备熔丝决定的吗? 或者,即使启动设备熔丝到 eMMC 上,启动 ROM 能否自动切换到不同的启动设备(例如 FlexSPI NOR)? 最终,我的目标是让系统正常从 eMMC Boot0 启动, 必要时 回退到 eMMC Boot1 , 如果两个 eMMC 启动分区都不可用或无效, 则最终启动 存储在 FlexSPI 或非 中的 Golden Recovery Image 。 如果有人已经实现了类似的启动架构,或者可以向我提供相关的文档或应用笔记,我将非常感谢您的指导。 提前谢谢! BR, 阿伦·库马尔 Re: i.MX95 Boot ROM: Configuring eMMC Boot0/Boot1 as Primary/Secondary and FlexSPI NOR as Recovery 你好, 是否可以将FlexSPI 或非 闪存配置为恢复启动设备,同时使用eMMC Boot0 和 Boot1作为主启动分区和辅助启动分区? 不,这不可能。LP 启动的恢复引导设备只有 LPSPI1/2,你不能将任何其他启动源配置为恢复选项。
記事全体を表示
Ask for FS26 drawing source document Dear Support Team,   I’m engaged in software development based on FS26 SBC. The attached figure is quoted in our software development materials, yet I failed to locate its original official document.   Please help confirm which NXP FS26 document (datasheet / AN / safety manual / design guide) includes this diagram, and provide the corresponding document ID as well as figure chapter information.   Thank you very much for your assistance. Regards,   Re: Ask for FS26 drawing source document Dear Lai, I suppose that the document snippet you provided does not actually come from our FS26 documents. Instead it originates from the datasheet for the FS6500/FS4500 SBC family. Since you are developing software for the newer FS26 SBC family, you should look into the FS26 software quick start guide (AN14492), FS26 implementation and behaviors (AN12995) or the full FS26 datasheet instead. BRs, Tomas Re: Ask for FS26 drawing source document Dear Tomas, Thank you very much for your prompt clarification and guidance! Besides, I have another debug issue to consult you. Our system uses FS26 to supply FC7300 MCU. After FS26 enters FS_STATES_NORMAL_FS operational state, connecting J-Link will cause the RST pin to be pulled low multiple times consecutively, resulting in debugger connection failure. In normal running mode with regular watchdog refresh, the reset issue never occurs. Could you help analyze the root cause of this multi-reset phenomenon and share corresponding register configuration or hardware solutions? Thanks again for your support. Best regards, Lai Re: Ask for FS26 drawing source document Hello, I assume Jlink means connecting to JTAG? If You have repeating resets in a usually running system when connecting JTAG it sounds like there were some watchdog errors. Not really a surprise when an external debugger is in the game, which is interfering in CPU operation. We are using FS4500 and to my memory we always activate debug mode prior to using JTAG, because we do not have a CPU-SW snippet running that is acting the Watchdog during JTAG interference. To my humble understanding this is what the debug mode was made for.
記事全体を表示
E9171 AMDPU with T1040 RDB Board I Am using E9171 Amdgpu with T1040 NXP Board, here does this GPU supports per to peer data transfer using amdgpu.? this NXP is connected to FPGA and GPU via PCIe switch. this GPU should be able able to get data directly from FPGA using QDMA driver and also  does this NXP board supports direct peer to peer feature using AMDGPU driver? Re: E9171 AMDPU with T1040 RDB Board Do not assume that E9171 + AMDGPU on a T1040 platform supports FPGA→GPU PCIe P2P DMA. Based on currently available AMDGPU information, direct FPGA-to-AMDGPU P2P is not generally supported as a standard AMDGPU feature in the same way that NVIDIA GPUDirect RDMA is.   Does AMDGPU support PCIe Peer-to-Peer (P2P)? AMDGPU does contain Linux P2P infrastructure support (PCI_P2PDMA) and AMD KFD has an HSA_AMD_P2P option, but this support is primarily documented for: AMD GPU ↔ AMD GPU communication ROCm/HSA compute environments Platforms where the GPU exposes a large BAR and the platform/chipset allows PCIe P2P routing The Linux Kconfig description explicitly mentions P2P communication between AMD GPUs. FPGA → AMD GPU direct DMA? AMD engineers have publicly stated that: achieving P2P between Xilinx FPGA and AMD GPU is currently not directly supported and suggested a host-memory registration workaround instead of true device-to-device PCIe DMA. Therefore: Path Status AMD GPU ↔ AMD GPU Supported on specific ROCm platforms FPGA ↔ AMD GPU direct PCIe DMA Not generally supported by AMDGPU FPGA → Host DDR → GPU Supported FPGA P2P buffer mapped into host memory and registered with GPU   Does T1040 support PCIe P2P? From the T1040 side, PCIe hardware itself can forward Memory Read/Write TLPs between endpoints through a switch if: the PCIe switch allows P2P routing, ACS redirect is disabled (depends on switch), address translation is configured correctly. PCIe as a protocol does not prevent endpoint-to-endpoint transfers. However, T1040/NXP software does not automatically provide AMDGPU-FPGA P2P support. The critical question is whether: AMDGPU exports GPU memory for third-party DMA access. FPGA QDMA can obtain GPU BAR/VRAM physical addresses. Linux IOMMU/P2PDMA path accepts the transaction. The AMDGPU limitation is typically the blocking factor rather than the T1040 PCIe controller itself. What is likely to work on your system? Current topology:           PCIe Switch            /                     \ FPGA(QDMA)    E9171 GPU            \                       /              T1040 RC Most likely supported flow: FPGA ---> DDR (T1040 memory) | v AMDGPU DMA | VRAM Not guaranteed to work: FPGA(QDMA) ---> GPU VRAM because AMDGPU generally does not expose a GPUDirect-RDMA-like interface for arbitrary FPGA devices.
記事全体を表示
33FS45xx - VAUXの過電圧耐性 私は33FS4500を使っており、現在はVAUX電源をトラッカーとして外部センサ電源として使っています。ユースケースには、エラーCASEでバッテリーレベル(32/40V)までの短絡が含まれます。 33FS* データシートには最大値が記載されています。チップ本体のすべてのピンに対して40Vですが、過電圧が発生した場合の外部pnpトランジスタへの影響や、VAUXとバックスの間に逆流保護があるかどうかは明記されていません。 - 外部センサ供給はVAUXの意図されたユースケースか? - VAUXに追加の保護が必要か? もしそうなら、回路はどのような形ですか? 最初のアイデアとしては、トランジスタとVAUX(およびそのフィードバック)の間にショットキーダイオードを設置するのが考えられます。 Re: 33FS45xx - overvoltage capability of VAUX HajoV様、 VAUXを外部/オフボードのセンサ電源として使用することは、FS4500の意図された用途です。VAUXはまた、比率測定センサー用途向けにVCCAに従う追跡モードで動作することも可能です。   バッテリーへのショート(32Vから40V)の可能性がある場合、FS4500のドキュメントにはVAUX関連ピンは最大40Vまで定格されており、VAUXはオフボード電源にも適していることが明記されています。出力コンデンサは40V以上の定格のものを使用することをお勧めします。   データシート、セーフティマニュアル、FAQには、VAUXとバック/VPREレギュレーター間の内部逆流保護を肯定する記述は見つかりませんでした。したがって、堅牢なオートモーティブ設計には、逆流防止や故障状況や過渡現象に対する堅強性を高めるために、ショットキーブロッキングダイオードやTVSクランプなどの外部保護を検討することを推奨します。   敬具、 ヨゼフ Re: 33FS45xx - overvoltage capability of VAUX うーん… この情報はあまり役に立たず、データシートの欠落部分を繰り返しているだけなので、少し残念です。 バッテリー(およびGND)へのショートは、なぜかクラス1のエラー条件であり、すべての移動式エレトロニクスは生き残ることが期待されます。SBC/センサートラッカー電源を設計するなら、チップだけでなく必要なペリフェラルも通常の過電圧に安全に耐えられると期待します。 (それほど強力ではない)テレビダイオードのような外部保護装置は、通常のバッテリー電圧以上でのみ動作することがあります😐. したがって、この質問が関わる臨界範囲(8.. 32V)は保護しません。 解決策を見つけるために、pnpトランジスタにショットキーダイオードを直列に追加した回路をテストしてみようと思います。ダイオードの直線性によってVAUXが安定し、回路がテストできることを期待しています。 (ダイオードが常に導通するように、初期負荷を追加しました。) VAUXに必要な電流は100mA未満なので、ダイオードの電圧降下は許容範囲内だと考えています。
記事全体を表示
E9171 AMDPUとT1040 RDBボード 私はE9171 AMDGPUにT1040 NXPボードを搭載していますが、このGPUはamdgpuを使ったパートゥピアデータ転送に対応していますか?このNXPはPCIeスイッチを介してFPGAおよびGPUに接続されています。このGPUはQDMAドライバーを使ってFPGAから直接データを取得できるはずですし、またこのNXPボードはAMDGPUドライバーを使った直接ピアツーピア機能をサポートしていますか? Re: E9171 AMDPU with T1040 RDB Board T1040プラットフォーム上のE9171 + AMDGPUがFPGA→GPU PCIe P2P DMAをサポートしていると考えないでください。現在入手可能なAMDGPUの情報に基づくと、NVIDIA GPUDirect RDMAのように、FPGAとAMDGPU間の直接的なP2P通信は、AMDGPUの標準機能として一般的にはサポートされていません。   AMDGPUはPCIeピアツーピア(P2P)をサポートしていますか? AMDGPUにはLinuxのP2Pインフラストラクチャサポート(PCI_P2PDMA)があり、AMD KFDにはHSA_AMD_P2Pオプションがありますが、このサポートは主に以下の目的で文書化されています: AM GPU ↔ AMD GPU通信 ROCm/HSAコンピューティング環境 GPUが大きなBARを露出し、プラットフォームやチップセットがPCIe P2Pルーティングを可能にするプラットフォーム Linux Kconfigの説明には 、AMDのGPU間のP2P通信が明示的に記載されています。 FPGA→AMD GPUのダイレクトDMAに適用できますか? AMDのエンジニアは次のように公に述べている。 Xilinx FPGAとAMD GPU間のP2Pは現在直接サポートされていません そして、真のデバイス間PCIe DMAの代わりに、ホストメモリ登録の回避策を提案した。 そのため、 パス ステータス AMD GPU ↔ AMD GPU 特定のROCmプラットフォームでサポートされています FPGA ↔ AMD GPUダイレクトPCIe DMA AMDGPUでは一般的にサポートされていません FPGA →ホストDDR → GPU サポートされる FPGA P2Pバッファはホストメモリにマッピングされ、GPUに登録されました   T1040はPCIe P2Pをサポートしていますか? T1040側からは、PCIeハードウェア自体がスイッチを介してメモリ読み書きTLPを転送できる場合、以下の場合に限ります: PCIeスイッチはP2Pルーティングを可能にします。 ACSリダイレクトは無効化されています(スイッチによります)。 住所変換は正しく設定されています。 PCIeというプロトコルは、エンドポイント間のデータ転送を妨げるものではありません。しかし、 T1040/NXPソフトウェアは自動的にAMDGPU-FPGAのP2Pサポートを提供するわけではありません。重要な問題は、次の点である。 AMDGPUはGPUメモリをエクスポートしてサードパーティのDMAアクセス用にします。 FPGA QDMAはGPUのBAR/VRAM物理アドレスを取得することができます。 LinuxのIOMMU/P2PDMAパスはトランザクションを受け入れます。 通常、T1040 PCIeコントローラ自体よりもAMDGPUの制限がブロック要因となっています。 あなたのシステムでうまく機能しそうなものは何ですか? 現在のトポロジー: PCIeスイッチ / \ FPGA(QDMA)E9171 GPU \ / T1040 RC 最も可能性の高いサポートフロー: FPGA →--> DDR(T1040メモリ) | V AMDGPU DMA | VRAM 動作保証はありません: FPGA(QDMA)---> GPU VRAM AMDGPUは一般的に任意のFPGAデバイス向けにGPUDirect-RDMAのようなインターフェースを公開しないからです。
記事全体を表示
S32G399A serial boot IO confirm Hi  I am reading the S32G3 Reference Manual. The Serial Boot section mentions that the CAN and UART interfaces use: UART: RX = PAD[42], TX = PAD[41] CAN: RX = PAD[43], TX = PAD[44] However, I cannot find PAD[41], PAD[42], PAD[43], or PAD[44] in the SoC pad list or pin descriptions. Could you please clarify which physical SoC pins or signals correspond to PAD[41], PAD[42], PAD[43], and PAD[44]? Also, are these pads associated with a specific LINFlexD instance and FlexCAN instance used by the BootROM Serial Boot mode? Re: S32G399A serial boot IO confirm Hi,MichaelTao Thank you for contacting us. I have received your question and will help you to check it. BR Joey Re: S32G399A serial boot IO confirm Hi,MichaelTao Please refer to the attachment S32G_IOMUX.xlsx in the S32G3 Reference Manual to obtain more information regarding the pin correspondence as you described. Hope this information can help you. BR Joey
記事全体を表示
MCTPTX1AK324,FreeMASTER 连接问题 0x80000101 我正在使用MCTPTX1AK324开发板进行电机开发。目前,当我按下按钮3时,电机可以运转。我需要使用MCAT主机来调整设置,但是当我使用freeMASTER通过串口连接时,出现错误:连接超时,0x8000 0101。请问您能否帮忙查看一下示例程序是否需要修改? 目前,演示程序的部分代码被屏蔽了。在 M3 上初始化 GD3000 和 IPCF 会导致程序冻结,因此我们根据 FAE 的建议阻止了它们。 第三季度 Re: MCTPTX1AK324, FreeMASTER connecttion problem 0x80000101 你好, 以下是一些解决 FreeMASTER 连接超时问题的通用提示。如果这些方法都不奏效,我会尝试联系电机控制团队寻求更具体的帮助。 通常情况下,超时意味着板没有响应 FreeMASTER 命令。我建议如下: 1. 请确保您运行的是从 NXP 收到的原始未修改软件,并且使用原装电路板套件。 2. 检查连接端口和电缆。在 FreeMASTER 中,转到“项目/选项”,然后检查串行 COM 端口。您的系统中可能存在多个端口,而您选择了错误的端口。 3. 使用工具/连接向导探测不同的 COM 端口。 4. 尝试将 FreeMASTER 与不同的应用程序一起使用,理想情况下,如果目标板有 FreeMASTER 示例应用程序,则可以使用这些示例应用程序。 5. 进阶:将示波器或逻辑分析仪连接到串行通信线路,查看 RX 和 TX 信号是否有效。在 FMSTR_ProtocolDecoder 处设置断点,看看代码是否会在那里停止。否则,这些命令甚至无法到达MCU。 问候, 米哈尔
記事全体を表示
S32G399A 串行启动 I/O 确认 你好 我正在阅读S32G3参考手册。 串行启动部分提到,CAN 和 UART 接口使用: UART:RX = PAD[42],TX = PAD[41] CAN:RX = PAD[43],TX = PAD[44] 但是,我在 SoC 焊盘列表或引脚描述中找不到 PAD[41]、PAD[42]、PAD[43] 或 PAD[44]。 请问 PAD[41]、PAD[42]、PAD[43] 和 PAD[44] 分别对应哪些 SoC 物理引脚或信号? 另外,这些焊盘是否与 BootROM 串行启动模式使用的特定 LINFlexD 实例和 FlexCAN 实例相关联? Re: S32G399A serial boot IO confirm 你好, MichaelTao 感谢您与我们联系。 我已经收到您的问题,我会帮您核实。 BR 乔伊 Re: S32G399A serial boot IO confirm 您好, MichaelTao 请参考 S32G3 参考手册中的附件 S32G_IOMUX.xlsx,以获取有关您所描述的引脚对应关系的更多信息。 希望这些信息对您有所帮助。 BR 乔伊
記事全体を表示
MCTPTX1AK324, FreeMASTER connecttion problem 0x80000101 I'm using the MCTPTX1AK324 development board for motor development,,Right now,when I press button 3, the motor can run,I need to use the MCAT host computer to adjust the settings,But when using freeMASTER with the serial connection, it shows an error: connection timeout, 0x8000 0101,Can you take a look and see if the demo program needs any changes? Currently, the demo program has some code blocked. Initializing GD3000 and IPCF on the M3 causes the program to freeze, so we blocked them based on the FAE's suggestion. 3Q Re: MCTPTX1AK324, FreeMASTER connecttion problem 0x80000101 Hello,  here are some generic hints to resolve FreeMASTER connection timeout issues. If these will not help, I will try to reach out to motor control team for more specific help. Generally, timeout means the board does not answer FreeMASTER commands. I would recommend the following: 1. Make sure you are running the original unmodified software received from NXP and use a original board kit. 2. Check connection port and cable. In FreeMASTER go to Project/Options and check the serial COM port. It can happen there are more ports in your system and you have chosen a wrong one. 3. Use Tools/Connection Wizard to probe different COM ports. 4. Try to use FreeMASTER with a different application, ideally one of FreeMASTER sample applications if these are available for your target board. 5. Advanced: Hook an oscilloscope or logic analyzer to serial communication lines to see if the RX and TX signals are active. Put a breakpoint to FMSTR_ProtocolDecoder to see if the code ever stops there. If not, the commands do not even reach the MCU. Regards, Michal
記事全体を表示
S32 Design Studio for ARM Version 2.2 许可证到期,麻烦帮忙延期,谢谢! S32 Design Studio for ARM Version 2.2 许可证到期,麻烦帮忙延期,谢谢! Re: S32 Design Studio for ARM Version 2.2 许可证到期,麻烦帮忙延期,谢谢! 你好, 您的S32DS许可证已延期。
記事全体を表示
如何在不启用任何中断的情况下将 LPI2C 外设与 DMA 配合使用? 你好, 我正在使用NXP S32K396 MCU ,并且希望在不启用任何中断的情况下使用 eDMA 执行 LPI2C 主站事务。在我的项目中,我使用了LPI2C1外设。 当启用以下中断时,我可以使用 DMA 成功执行 LPI2C 读写事务: LPI2C1_IRQn eDMA0_DMATTCD_CH16_CH17_IRQn 然而,RTD LPI2C DMA 实现似乎依赖于这些中断。 在 Lpi2c_Ip_MasterSendData() 函数中,LPI2C 主中断始终由驱动程序启用: 此外,通过 Lpi2c_Ip_MasterTxDmaConfig() 和 Lpi2c_Ip_MasterRxDmaConfig() 配置的 TX 和 RX 的 DMA TCD 始终启用 DMA 主循环完成中断: Lpi2c_DmaTransferList[9u] .Param = DMA_IP_CH_SET_CONTROL_EN_MAJOR_INTERRUPT ; Lpi2c_DmaTransferList[9u] .Value = 1U; 我还注意到,在其他函数中 - Lpi2c_Ip_MasterSendDataBlocking() 似乎没有为 LPI2C 传输配置 DMA TCD。 我希望使用 DMA 执行完整的 LPI2C 发送和接收事务,同时禁用 LPI2C1_IRQn 和 eDMA 通道中断。   如果可以的话,NXP能否提供一个使用DMA的LPI2C主控端TX/RX示例,其中LPI2C和DMA中断均被禁用?   MCU:NXPS32K396 RTD:6.0.0 NXP Studio:3.6.1   非常感谢您的帮助。非常感谢! 如有需要,我可以附上我的项目文件。 Re: How to use LPI2C peripheral with DMA without enabling any interrupts? 你好@ rkhw 从当前的驱动程序实现来看,“Lpi2c_Ip_MasterSendData()”依赖于LPI2C主中断和DMA主循环完成中断来进行传输完成和状态处理。 因此,如果不启用中断,就无法启用 DMA。RTD驱动程序不支持此用法。
記事全体を表示
S32G399A シリアルブートI/O確認 こんにちは S32G3リファレンスマニュアルを読んでいます。 シリアルブートのセクションでは、CANおよびUARTインターフェースが以下を使用していることが記載されています: UART: RX = PAD[42]、TX = PAD[41] CAN:RX = PAD[43]、TX = PAD[44] しかし、SoCのパッドリストやピン説明にPAD[41]、PAD[42]、PAD[43]、またはPAD[44]が見当たりません。 PAD[41]、PAD[42]、PAD[43]、PAD[44]に対応する物理的なSoCピンや信号を教えていただけますか? また、これらのパッドは、BootROMシリアルブートモードで使用される特定のLINFlexDインスタンスおよびFlexCANインスタンスに関連付けられていますか? Re: S32G399A serial boot IO confirm こんにちは、マイケルタオ お問い合わせいただきありがとうございます。 ご質問を拝受いたしました。確認させていただきます。 BR ジョーイ Re: S32G399A serial boot IO confirm こんにちは、 MichaelTao あなたが述べたピン対応についての詳細は、S32G3リファレンスマニュアルの添付資料S32G_IOMUX.xlsxを参照してください。 この情報があなたの助けになれば幸いです。 BR ジョーイ
記事全体を表示
i.MX95 Boot ROM: Configuring eMMC Boot0/Boot1 as Primary/Secondary and FlexSPI NOR as Recovery Hello Experts, I am trying to understand how the i.MX95 Boot ROM handles the Primary, Secondary, and Recovery boot stages. I have gone through the Reference Manual and some of the U-Boot spl source code, but I am still not clear on how the Recovery boot mechanism is intended to work. My goal is to implement the following boot architecture: Primary boot: eMMC Boot0 Secondary boot: eMMC Boot1 Recovery boot: FlexSPI NOR flash (Golden Recovery Image) While looking through arch/arm/mach-imx/image-container.c, I noticed the following code: printf("Boot stage: "); if (rom_data.boot_stage == 0x6) printf("Primary\n"); else if (rom_data.boot_stage == 0x9) printf("Secondary\n"); else if (rom_data.boot_stage == 0xa) printf("Recovery\n"); else printf("USB Serial Download\n"); Based on this, it appears that the Boot ROM supports four boot stages: Primary, Secondary, Recovery, and USB Serial Download. However, I could not find sufficient information explaining how the Recovery stage is selected or configured. I would appreciate some guidance on the following questions: Is it possible to configure FlexSPI NOR flash as the Recovery boot device while using eMMC Boot0 and Boot1 as the Primary and Secondary boot partitions? If this configuration is supported, what is the recommended way to configure it? What is the sequence followed by the Boot ROM when selecting between the Primary, Secondary, and Recovery boot stages? If both Primary and Secondary boot attempts fail, what conditions trigger the Recovery boot stage? What failure conditions can be intentionally reproduced to simulate Recovery mode during development and validation?  Is there any documentation or application note that describes the Boot ROM boot selection algorithm and Recovery boot flow in detail? Does the boot device fuse configuration (Fuse Mode) play any role in selecting the Recovery boot device? Is the Recovery device determined by the boot device fuses? Or can the Boot ROM automatically switch to a different boot device (such as FlexSPI NOR) even when the boot device is fused to eMMC? Ultimately, my objective is to have the system normally boot from eMMC Boot0, fall back to eMMC Boot1 if necessary, and finally boot a Golden Recovery Image stored in FlexSPI NOR if both eMMC boot partitions are unavailable or invalid. If anyone has implemented a similar boot architecture or can point me to the relevant documentation or application notes, I would really appreciate your guidance. Thank you in Advance ! BR, Arun Kumar Re: i.MX95 Boot ROM: Configuring eMMC Boot0/Boot1 as Primary/Secondary and FlexSPI NOR as Recovery Hello, Is it possible to configure FlexSPI NOR flash as the Recovery boot device while using eMMC Boot0 and Boot1 as the Primary and Secondary boot partitions? No, it is not possible. The recovery boot device for LP boot is only LPSPI1/2, you can't configure any other boot source as recovery option. 
記事全体を表示
索取 FS26 图纸源文件 尊敬的技术支持团队:   我从事基于 FS26 SBC 的软件开发工作。附件中的图表引用自我们的软件开发资料,但我未能找到其原始官方文件。   请帮忙确认 NXP FS26 的哪个文档(数据手册/AN/功能安全手册/设计指南)包含此图,并提供相应的文档 ID 以及图表章节信息。   非常感谢您的帮助。 此致,   Re: Ask for FS26 drawing source document 亲爱的赖女士, 我猜想您提供的文档片段实际上并非来自我们的 FS26 文档。它实际上源自 FS6500/FS4500 SBC 系列的数据手册。 由于您正在为较新的 FS26 SBC 系列开发软件,因此您应该查看 FS26 软件快速入门指南 (AN14492)、FS26 实现和行为 (AN12995) 或完整的 FS26 数据手册。 BRs,托马斯 Re: Ask for FS26 drawing source document 亲爱的托马斯: 非常感谢您的及时澄清和指导! 此外,我还有另一个调试问题需要请教您。 我们的系统使用 FS26 为 FC7300 MCU 供电。当 FS26 进入 FS_STATES_NORMAL_FS 运行状态后,连接 J-Link 将导致 RST 引脚连续多次被拉低,从而导致调试器连接失败。 在正常运行模式下,通过定期的看门狗刷新,不会出现RESET问题。 能否帮忙分析一下这种多重RESET现象的根本原因,并分享相应的寄存器配置或硬件解决方案? 再次感谢您的支持。 此致, 赖 Re: Ask for FS26 drawing source document 你好, 我猜Jlink是指连接到JTAG? 如果在正常运行的系统中连接 JTAG 时出现反复复位,则可能是看门狗出现错误。 当游戏中存在外部调试器,干扰 CPU 运行时,出现这种情况并不奇怪。 我们正在使用 FS4500,据我所知,我们在使用 JTAG 之前总是会激活调试模式,因为我们没有运行 CPU-SW 代码片段来在 JTAG 干扰期间充当看门狗。 依我拙见,调试模式就是为此而设计的。
記事全体を表示
KinetisのMCUを使っている方はいらっしゃいますか? 現在、USB搭載のMCUをいくつか評価していて、Kinetisシリーズの機能セットが目に留まりました。いくつかサンプル(メインのものはK22FN1M0VLH12にしたいと思っています)、ヘッダー付きのブレイクアウトに置き、EzPortやSPIを使ってコードをブートストラップする方法も考え出しましたが、今は本格的なファームウェア開発を始める段階に来ています。ソフトウェア開発は経験がありますが、組み込みプラットフォームの仕事はあまりありません。Freescaleがここ数ヶ月リリースした新しいEclipseベースのツールチェーンとProcessor Expertの見た目が気に入っています。なぜなら、ペリフェラルの初期化を多く処理してくれるからです。しかし、その方法やGCCベースのツールチェーンでKinetisを使うことについての情報が本当に不足しているのを見かけます。出回っている情報(ごくわずかだが)は、FRDMボードに関するものに限られているようで、それらは安価ではあるものの、同社の製品ラインナップのごく一部に限定されている。 最近Kinetisで何か仕事をした方はいらっしゃいますか?もしそうなら、どのツールチェーンを使いましたか? 他のベンダーの類似ARMチップと比べて、Kinetisのデバイスやドキュメント、ツールについての一般的な印象はどうですか? もしK20 FRDMボードを手に入れた場合、得られた知識は実際のアプリケーションで使いたいK22Fチップに比較的ポータブルになると思いますか?K22F FRDMボードもあるが、価格は2倍で、その差額はSTM32開発ボードを購入して比較評価するのにちょうど足りる金額だ。 また、一般的に、開発用ボードからカスタムボードにコードを移植するのはどれくらい簡単なのでしょうか?開発ボードからカスタム回路への移行におけるあなたのアプローチは何ですか? 質問が多くて申し訳ありませんが、皆さんの知恵を拝借できればと思っています。 Re: Anybody using Kinetis MCUs? こんにちは、 @lukutu さん、 投稿ありがとうございます。 実は、あなたが言及したEclipseベースのツールチェーンについてですが、おそらくKinetis Design Studio(KDS)やProcessor Expertのことを指しているのだと思います。これらのツールは現在レガシー製品であり、現在は積極的にサポートされていません。 Kinetis Design Studioの後継として、NXPは MCUXpresso IDEを導入しました。KDSと同様に、MCUXpresso IDEもEclipseベースで、GNUツールチェーン、SDKサンプルインポート、ピン/クロック/周辺機器設定ツール、フラッシュプログラミング機能、シームレスなSDK統合を統合し、よりモダンで完全にサポートされた開発環境を提供します。 MCUXPresso SDKはこちらからダウンロードできます:MCUXpresso SDK Builder 設定ツールの使い方については、MCUXpresso IDEのMCUXpresso Config Toolを参照してください。   ハードウェアの選定に関しては、 FRDM-K22Fボードを検討することをお勧めします。K20 FRDMプラットフォームとは大きく異なり、さらに追加の利点があります。 購入後、注文確認メールに返信して無料のFRDM-MCXE31B、FRDM-MCXN236、FRDM-MCXA153、またはFRDM-MCXA156クーポンを申請し、MCXマイクロコントローラを評価することができます。 MCXファミリーはNXPの最新のMCUポートフォリオであり、新しいデザインに対してより長い製品ライフサイクルを提供します。USBを含む FRDM-MCXA156を検討してみると良いでしょう。将来の開発や評価に良い選択肢になるかもしれません。 開発ボードからカスタムボードへのコード移植については、MCUXPressoを使えば簡単に実現できます。以下の記事をご参照ください。 実践形式ワークショップ:デバイス用のカスタムボードSDK作成 カスタムボードMCUXpresso SDKの作成方法 他に質問がありましたら、お気軽にお知らせください。喜んでお手伝いします。 BR セレステ
記事全体を表示
有人在使用Kinetis的MCU吗? 我目前正在评估一些配备 USB 接口的微控制器,Kinetis 系列的功能集引起了我的注意。我有一些样品(我主要想重点研究的是 K22FN1M0VLH12),把它们放在带接头的扩展板上,并且已经找到了一种使用 EzPort/SPI 将引导代码加载到它们上面的方法,但我现在到了需要真正开始进行正式固件开发的阶段。我做过不少软件开发工作,但在嵌入式平台方面经验不多。我喜欢飞思卡尔最近几个月发布的基于 Eclipse 的新工具链和 Processor Expert,因为它处理了很多外围设备初始化工作。然而,我发现关于这方面的信息非常匮乏,也缺乏关于在基于 GCC 的工具链中使用 Kinetis 的信息。目前流传的信息(虽然很少)似乎仅限于他们的 FRDM 板,虽然价格便宜,但仅限于他们可用产品系列的一小部分。 最近有人用过Kinetis吗?如果是的话,你使用了哪条工具链? 与其它厂商的类似ARM芯片相比,人们对Kinetis的设备/文档/工具的总体印象如何? 如果我拿到一块 K20 FRDM 板,大家认为我所获得的知识能否相对地迁移到我想在实际应用中使用的 K22F 芯片上?虽然有 K22F FRDM 开发板,但价格是它的两倍,差价还不够买一块 STM32 开发板来和这块板一起评估。 另外,一般来说,将代码从开发板移植到定制板有多容易?从开发板到定制电路,您采取了什么方法? 如果问题太多,请见谅——我只是希望能请教一些专家意见。 Re: Anybody using Kinetis MCUs? 你好@lukutu , 感谢你的帖子。 事实上,关于你提到的基于 Eclipse 的工具链,我假设你指的是 Kinetis Design Studio (KDS) 和 Processor Expert。这两个工具现在都是过时产品,不再提供支持。 作为 Kinetis Design Studio 的继任者,NXP 推出了MCUXpresso IDE 。与 KDS 一样,MCUXpresso IDE 也是基于 Eclipse 的,并集成了 GNU 工具链、SDK 示例导入、引脚/时钟/外设配置工具、闪存编程功能以及无缝的 SDK 集成,从而提供了一个更现代化且完全支持的开发环境。 MCUXPresso SDK 可在此处下载: MCUXpresso SDK Builder 您可以参考MCUXpresso IDE 的 MCUXpresso 配置工具来了解配置工具的使用方法。   至于硬件选择,我建议考虑FRDM-K22F主板。因为它与 K20 FRDM 平台有很大不同,而且还有一个额外的好处:购买后,回复您的订单确认电子邮件,即可申请免费的 FRDM-MCXE31B、FRDM-MCXN236、FRDM-MCXA153 或 FRDM-MCXA156 优惠券,用于评估 MCX 微控制器。 MCX 系列是恩智浦最新的 MCU 产品组合,可为新设计提供更长的产品生命周期。您可以考虑FRDM-MCXA156 ,它包含 USB 接口,对于未来的开发和评估来说可能是一个不错的选择。 关于将代码从开发板移植到定制板,使用 MCUXPresso 可以轻松实现,请参考以下帖子: 实践工作坊:为您的设备创建自定义板级 SDK 如何创建自定义板 MCUXpresso SDK 如果您还有其他问题,请告诉我。我很乐意帮忙。 BR 塞莱斯特
記事全体を表示