2251755_ja-JP

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

2251755_ja-JP

2251755_ja-JP

PN7160 PN7220 Android 15のi.MX8MN EVKへの移植

はじめに

当社では、PN7160/PN7220 Android 15公式ポーティングガイド(PN7160/PN7220 – Android 15ポーティングガイド)をご用意しております。ただし、パッチはAndroid 15 AOSP r1(android-15.0.0_r1)専用です。AOSP最新版へのポーティングを希望する場合、ソースコードのコンパイル中でエラーが頻発します。このドキュメントを参考に、エラーを一つずつ解決してください。


注:変更はすべて参考目的で提供されており、AOSP最新版へのポーティング向けのNXP公式パッチではありません。変更が最善の解決策ではない可能性がありますので、AOSPソースコードを自社のニーズに基づいて変更してください。これは製品向けではありません。ポーティング後は、お客様側で引き続き完全なテストを実施する必要があります。


ハードウェアボード:

i.MX8MN EVK (i.MX 8M Nano評価キット | NXP Semiconductors)

8mnevk.jpg


PN7160 EVK (OM27160|PN7160 プラグアンドプレイ NFC コントローラ用開発キット|NXP Semiconductors

pn7160.jpg


bothevk.jpg


i.MX8MN EVKとPN7160 OM29110ARD-Bの接続

i.MX8M ナノ EVK

ピン

PN7160

ピン

3.3V

J1003-1

VDD(3.3V)

J1-4

5V

J1003-2

VBAT(5V)

J1-5

I2C3 SDA

J1003-3

SDA

J2-2

I2C3 SCL

J1003-5

SCL

J2-1

GPIO3_22

J1003-37

IRQ

J2-10

GPIO3_21

J1003-38

REQ

J4-2

GND

J1003-39

GND

J1-6

GPIO3_20

J1003-40

N/A

J4-1



i.MX8MN EVK向けAndroidの構築

ここで使用したi.MX Android BSPはAndroid 15.0.0_2.0.0(L6.12.20_2.0.0 BSP)で、こちらからダウンロードしていただけます:i.MX アプリケーション・プロセッサ向けAndroid OS | NXP Semiconductors

1. 「ドキュメント」と「インストールソースパッケージ」をダウンロードします。

2. まず、Androidユーザーガイドの手順に従って、i.MX8MN EVK用のAndroid BSPをビルドします。 


android_build/.repo/manifests/aosp-android-15.0.0_2.0.0.xmlによると、表示されるAOSPバージョンはandroid-15.0.0_r32です。


ポーティングに関する参考文献:

PN7160/PN7220 – Android 15 移植ガイド 

i.MX8M NanoボードでPN7160をAndroid 14に移植


さて、移植を始めましょう。 

1. カーネル・ドライバ

PN7220またはPN7160との接続を確立するために、Androidスタックはnxpnfcカーネルドライバを使用します。以下のGitHubからドライバをダウンロードできます:

br_ar_16_comm_infra_dev · nxp-nfc-infra/nfcandroid_platform_d... の br_ar_16_comm_infra_dev の nfcandr...


コマンドは次のとおりです。

git clone "https://github.com/nxp-nfc-infra/nfcandroid_platform_drivers.git" -b br_ar_16_comm_infra_dev

カーネル6.6および6.12用のドライバがありますので、ポーティングに適したドライバをダウンロードしてください。例えば、i.MX Android BSP Android 15.0.0_2.0.0のカーネルは6.12ですので、ポーティングには6.12ドライバを使用します。


ポーティングする際は、MakefileとKconfigファイルのパスが正しく設定されていることを確認してください。

例えば、ここでは以下のようにポーティングします。

.
├── Kconfig
├── Makefile
└── pn7160
        ├── common.c
        ├── common.h
        ├── i2c_drv.c
        ├── i2c_drv.h
        ├── Kbuild
        ├── Kconfig
        ├── Makefile
        ├── spi_drv.c
        └── spi_drv.h

すべてを簡素化するため、I2Cのみをサポートし、SPIはサポートしません。ドライバ/nfc/pn7160/Makefile のデフォルトコードを以下のコードに置き換えてください(理解しやすくするため)。

nxpnfc-i2c-objs = i2c_drv.o common.o
obj-$(CONFIG_NXP_NFC_I2C) += nxpnfc_i2c.o

ドライバ/nfc/Kconfig の内容。PN7160を以下のように追加してください。

source "drivers/nfc/pn7160/Kconfig"
source "drivers/nfc/fdp/Kconfig"
source "drivers/nfc/pn544/Kconfig"
source "drivers/nfc/pn533/Kconfig"
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"
endmenu

The contents of ドライバ/nfc/Makefile. Add the PN7160 like below:

# SPDX-License-Identifier: GPL-2.0
#
# Makefile for nfc devices
#
obj-$(CONFIG_NXP_NFC_I2C)       += pn7160/
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

2. i.MX8MN EVKデバイスツリーファイルに「nxpnfc」を追加します。

&i2c3 {
   clock-frequency = <100000>;
   pinctrl-names = "default", "gpio";
   pinctrl-0 = <&pinctrl_i2c3>;
   pinctrl-1 = <&pinctrl_i2c3_gpio>;
   scl-gpios = <&gpio5 18 GPIO_ACTIVE_HIGH>;
   sda-gpios = <&gpio5 19 GPIO_ACTIVE_HIGH>;
   status = "okay";

   nxpnfc@28{
        compatible = "nxp,nxpnfc";
        reg = <0x28>;
        pinctrl-names = "default";
        pinctrl-0 = <&pinctrl_nfc>;

        nxp,nxpnfc-irq = <&gpio3 22 0>;
        nxp,nxpnfc-ven = <&gpio3 20 0>;
        nxp,nxpnfc-fw-dwnld = <&gpio3 21 0>;
   };

The GPIO settings in the IOMUXC:

&iomuxc {
   pinctrl_nfc: nfcgrp {
        fsl,pins = <
           MX8MN_IOMUXC_SAI5_RXC_GPIO3_IO20                 0X19  // VEN
           MX8MN_IOMUXC_SAI5_RXD0_GPIO3_IO21                0X19  // FW-DWNLD
           MX8MN_IOMUXC_SAI5_RXD1_GPIO3_IO22                0X19  // IRQ
         >;
   };

3.  imx8mn_gki.fragmentを変更します。

ファイル:android_build/vendor/nxp-opensource/kernel_imx/arch/arm64/configs/imx8mn_gki.fragment

"CONFIG_NXP_NFC_I2C=m" を  imx8mn_gki.fragment に追加します。


4. Androidの対応するボード設定ファイルに設定を追加してください。

- android_build/device/nxp/imx8m/evk_8mn/ に移動してください

 BoardConfig.mkを修正します。

# selinux permissive
+ BOARD_KERNEL_CMDLINE += androidboot.selinux=permissive

BOARD_SEPOLICY_DIRS := \
       $(CONFIG_REPO_PATH)/imx8m/sepolicy \
       $(IMX_DEVICE_PATH)/sepolicy  \
+       vendor/nxp/nfc/sepolicy \
+       vendor/nxp/nfc/sepolicy/nfc
+ include vendor/nxp/nfc/BoardConfigNfc.mk

- ShareBoardConfig.mkに”nxpnfc_i2c.ko”を追加します。パスとファイル名が正しいか確認します。

    $(KERNEL_OUT)/drivers/net/phy/realtek.ko \
    $(KERNEL_OUT)/drivers/pps/pps_core.ko \
    $(KERNEL_OUT)/drivers/ptp/ptp.ko \
    $(KERNEL_OUT)/drivers/net/ethernet/freescale/fec.ko
+   $(KERNEL_OUT)/drivers/nfc/pn7160/nxpnfc_i2c.ko
endif

    $(KERNEL_OUT)/drivers/trusty/trusty-core.ko \
    $(KERNEL_OUT)/drivers/trusty/trusty-log.ko \
    $(KERNEL_OUT)/drivers/trusty/trusty-ipc.ko \
    $(KERNEL_OUT)/drivers/trusty/trusty-virtio.ko \
+   $(KERNEL_OUT)/drivers/nfc/pn7160/nxpnfc_i2c.ko
else
BOARD_VENDOR_RAMDISK_KERNEL_MODULES += \
   $(KERNEL_OUT)/drivers/input/touchscreen/goodix_ts.ko \
   $(KERNEL_OUT)/drivers/input/touchscreen/synaptics_dsx/synaptics_dsx_i2c.ko
Endif

- Compatibility_matrix.xmlに以下を追加します


    
        netutils-wrapper
        1.0
    
    
        android.hardware.emvco
        1
        
            IEmvco
            default
        
    

-  device_framework_matrix.xmlに以下を追加します。


    
        nxp.hardware.secureime
        1
        
            ISecureIME
            default
        
    
    
        nxp.hardware.imx_dek_extractor
        1
        
            IDek_Extractor
            default
        
    
    
        vendor.nxp.nxpnfc
        2
        
            INxpNfc
            default
        
    
    
        android.hardware.emvco
        1
        
            IEmvco
            default
        
    

- evk_8mn.mkに以下を追加します。

# ------nfc-------
$(call inherit-product, vendor/nxp/nfc/device-nfc.mk)
$(call inherit-product, vendor/nxp/emvco/device-emvco.mk)
PRODUCT_PACKAGES += \
        android.hardware.nfc-service.nxp

PRODUCT_PACKAGES += \
        com.nxp.emvco \
        com.nxp.nfc \
        nfc_nci_nxp_pn72xx

- init.rcにnxpnfc_i2cを追加します。

    # Grant permission for fetching available_pages info of statsd
    chown system system /proc/pagetypeinfo
    chmod 0440 /proc/pagetypeinfo

    exec u:r:vendor_modprobe:s0 -- /vendor/bin/modprobe -a -d \
    /vendor/lib/modules nxpnfc_i2c
    write /sys/power/wake_lock nosleep

on post-fs-data && property:vendor.skip.charger_not_need=0
    setprop vold.post_fs_data_done 1

- ueventd.nxp.rc に nxpnfc を追加します。

/sys/devices/virtual/thermal/thermal_zone* trip_point_0_hyst 0660 system system
/sys/devices/virtual/thermal/thermal_zone* trip_point_1_hyst 0660 system system

/dev/dmabuf_imx           0664   system     system
/sys/class/backlight/* brightness 0660 system system

/dev/ttymxc1              0666   nfc   nfc
/dev/ttymxc2              0666   nfc   nfc
/dev/nxpnfc               0666   nfc   nfc

# for libcamera
/dev/media* 0660 system camera
/dev/v4l-subdev* 0660 system camera

5. NXP AOSPパッチの適用

NXP公式のNFCパッチはAOSP android-15.0.0_r1のみで、 android-15.0.0_r1と android-15.0.0_r32では大きな違いがあります。このため、パッチを適用する前に、Android-15.0.0_r1からNFCフォルダをコピーして、Android-15.0.0_r32のNFCフォルダを置き換えます。


まず、GitHubからAOSP android-15.0.0_r1をダウンロードしてください。

$ mkdir android-15.0.0_r1 
$ cd android-15.0.0_r1 
$ repo init -u https://android.googlesource.com/platform/manifest -b android-15.0.0_r1
$ repo sync

次に、以下のフォルダをandroid-15.0.0_r32から削除します。そして、Android-15.0.0_r1から次のNFCフォルダをコピーして、Android-15.0.0_r32の同じフォルダを置き換えます。

パッケージ/apps/Nfc

frameworks/base/nfc

frameworks/base/nfc-extras

システム/NFC


以下にその例をご紹介します。

$ rm -rf android_build/packages/apps/Nfc
$ cp -ra android-15.0.0_r1/packages/apps/Nfc android_build/packages/apps/

私はGitHubからパッチをダウンロードするスクリプトを作成します。お客様は以下のスクリプトを、android_buildと同じディレクトリに配置できます。

AOSP_adaptation.sh

# nxp_nci_hal_nfc
git clone "https://github.com/nxp-nfc-infra/nxp_nci_hal_nfc.git"
cd nxp_nci_hal_nfc
git checkout br_ar_15_comm_infra_dev
cp -rf *  ../android_build/packages/apps/Nfc/
cd ..

# nxp_nci_hal_libnfc-nci
git clone "https://github.com/nxp-nfc-infra/nxp_nci_hal_libnfc-nci.git"
cd nxp_nci_hal_libnfc-nci
git checkout br_ar_15_comm_infra_dev
cp -rf *  ../android_build/system/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_15_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_15_comm_infra_dev
mkdir ../android_build/vendor/nxp/frameworks
cp -rf * ../android_build/vendor/nxp/frameworks
cd ..

# nfcandroid_emvco_aidlimpl
git clone "https://github.com/nxp-nfc-infra/nfcandroid_emvco_aidlimpl.git"
cd nfcandroid_emvco_aidlimpl
git checkout br_ar_15_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_15_comm_infra_dev
cp -rf vendor/nxp/*   ../android_build/vendor/nxp/
cd ..

# 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_15_comm_infra_dev
cd test_apps/
cp -rf SMCU_Switch/  ../../android_build/packages/apps/
cp -rf EMVCoModeSwitchApp/  ../../android_build/packages/apps/Nfc/
cp -rf load_unload/  ../../android_build/hardware/nxp/nfc/
cp -rf SelfTestAidl/  ../../android_build/hardware/nxp/nfc/
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_15_comm_infra_dev
cp -rf nfc_tda/  ../android_build/system/
cp -rf emvco_tda/ emvco_tda_test/  ../android_build/hardware/nxp/emvco/
cp -rf NfcTdaTestApp/  ../android_build/packages/apps/Nfc/
cd ..

Apply_patches.sh

cd android_build/build/bazel/
patch -p1 <  ../../../nfcandroid_platform_reference/build_cfg/build_pf_patches/AROOT_build_bazel.patch
cd ../release
patch -p1 < ../../../nfcandroid_platform_reference/build_cfg/build_pf_patches/AROOT_build_release.patch
cd ../../external/libchrome
patch -p1 < ../../../nfcandroid_platform_reference/build_cfg/build_pf_patches/AROOT_external_libchrome.patch
cd ../../frameworks/base
patch -p1 < ../../../nfcandroid_platform_reference/build_cfg/build_pf_patches/AROOT_frameworks_base.patch
cd ../../system/logging
patch -p1 < ../../../nfcandroid_platform_reference/build_cfg/build_pf_patches/AROOT_system_logging.patch

このため、 AOSP_adaptation.shを実行し、その後、 Apply_patches.shを実行します。


6. hardware/interfaces/compatibility_matrices に変更を加えます

Androidのバージョンごとに互換性マトリックスが異なります。

ファイル: android_build/hardware/interfaces/compatibility_matrices/compatibility_matrix.202404.xml

    
        android.hardware.audio.effect
        1-2
        
            IFactory
            default
        
    
+   
+       nxp.hardware.imx_dek_extractor
+       1
+       
+           IDek_Extractor
+           default
+       
+   
+   
+       vendor.nxp.nxpnfc
+       2
+       
+           INxpNfc
+           default
+       
+   
+   
+       vendor.nxp.emvco
+       1
+       
+           INxpEmvco
+           default
+       
+   
    
        android.hardware.audio.sounddose
        1-3

7. デバイス固有の .mk を変更

pn7160の場合、 NXP_NFC_HWはpn7160と等しくなる必要があります。

pn7220の場合、 NXP_NFC_HWはpn7220_i2csと等しくなる必要があります。


File : android_build/vendor/nxp/nfc/device-nfc.mk

#####
##### NXP NFC Device Configuration makefile
######

NXP_NFC_HOST := $(TARGET_PRODUCT)
ifndef TARGET_NXP_NFC_HW
NXP_NFC_HW := pn7160
else
NXP_NFC_HW := $(TARGET_NXP_NFC_HW)
endif
NXP_NFC_PLATFORM := pn54x
NXP_VENDOR_DIR := nxp
NXP_I2CM_S := $(TARGET_NXP_I2C_M_S)

ファイル: android_build/vendor/nxp/emvco/device-emvco.mk

NXP_VENDOR_DIR := nxp
NXP_NFC_HW := $(TARGET_NXP_NFC_HW)
ifeq ($(strip $(TARGET_NXP_NFC_HW)),)
    NXP_NFC_HW := pn7160
endif

# Nfc service has dependency with EMVCo JAR
PRODUCT_PACKAGES += \
    com.nxp.emvco

8. これで、Android BSPの構築を始めることができます。

i.MX8MN EVKの場合、 

$ source build/envsetup.sh
$ lunch evk_8mn-nxp_stable-userdebug
$ export TARGET_RELEASE=nxp_stable
$ build_build_var_cache
$ ./imx-make.sh -j4 2>&1 | tee build-log.txt

BSPをビルディングする際には、ビルド中に多くのエラーが発生します。以下にいくつかの誤りと参考解決策を挙げておきます。 

エラー

リファレンス・ソリューション


nfc_aconifg_flagsについて苦情を申し上げます。

packages/apps/Nfc/flags/Android.bp

aconfig_declarations {
//    name: "nfc_aconfig_flags",
    name: "com.android.nfc.flags-aconfig",
    package: "com.android.nfc.flags",
    container: "system",
    srcs: ["nfc_flags.aconfig"],
}

java_aconfig_library {
//    name: "nfc_aconfig_flags_lib",
//    aconfig_declarations: "nfc_aconfig_flags",
    name: "com.android.nfc.flags-aconfig-java",
    aconfig_declarations: "com.android.nfc.flags-aconfig",
    min_sdk_version: "33",
    apex_available: [
        "//apex_available:platform",
        "com.android.nfcservices",
    ],
}

java_library {
    name: "nfc_flags_lib",
    sdk_version: "system_current",
    min_sdk_version: "33",
    srcs: [
        "lib/**/*.java",
    ],
    static_libs: [
        "com.android.nfc.flags-aconfig-java",
    ],
 android.hardware.nfc-V2-ndk に関して苦情を伝える

ファイル: hardware/interfaces/nfc/aidl/vts/functional/Android.bp

android.hardware.nfc-V2-ndk を変更しますandroid.hardware.nfc-V1-ndkへ


platform_testing/build/tasks/tests/native_test_list.mk: error: continuous_native_tests:モジュール 'libnfc-nci-jni-tests' のインストールされたファイルが不明です。

'libnfc-nci-jni-tests' を削除します。 

native_test_list.mk

error: パッケージ/apps/Nfc/tests/instrumentation/Android.bp:6:1:モジュール「NfcNciInstrumentationTests」バリアント「Android_common」は、java_sdk_library「android.test.runner」に直接依存することはできません。「android.test.runner.stubs」に頼ってみて、「android.test.runner.stubs.system」「android.test.runner.stubs.test」または「android.test.runner.impl」その代わり


ヒントはエラーメッセージに記載されています。

"android.test.runner" を  "android.test.runner.stubs"、"android.test.runner.stubs.system""android.test.runner.stubs.test"または"android.test.runner.impl"に変更します。

エラー: vendor/nxp/frameworks/nfc/Android.bp:12:1:モジュール "com.nxp.nfc"バリアント"android_common"は、このモジュールから見えない //frameworks/base/nfc:framework-nfc.impl に依存しています。

"//vendor/nxp/frameworks/nfc"を可視性に追加する必要があるかもしれません。

ファイル: frameworks/base/nfc/Android.bp

   permitted_packages: [
        "android.nfc",
        "com.android.nfc",
    ],
    impl_library_visibility: [
        "//frameworks/base:__subpackages__",
        "//cts/hostsidetests/multidevices/nfc:__subpackages__",
        "//cts/tests/tests/nfc",
        "//vendor:__subpackages__",
        "//packages/apps/Nfc:__subpackages__",
    ],

packages/apps/Nfc/nci/src/com/android/nfc/dhimpl/NativeT4tNfceeManager.java:20: エラー:重複クラス:com.android.nfc.dhimpl.nativet4tnfceemanager


ファイルを編集してください。

パッケージ/apps/Nfc/nci/src/com/Android/nfc/dhimpl/NativeT4tNfceeManager.java

そして重複したクラスをコメントアウトします。

android/R.java:12483:エラー: フィールド FLAG_NFC_ASSOCIATED_ROLE_SERVICES を解決できません

    @android.注釈。FlaggedApi(android.nfc.Flags.FLAG_NFC_ASSOCIATED_ROLE_SERVICES)

編集

frameworks/base/nfc/java/android/nfc/flags.aconfig

下のフラグを追加してください。

flag {
    name: "nfc_associated_role_services"
    is_exported: true
    namespace: "nfc"
    description: "Share wallet role routing priority with associated services"
    bug: "366243361"
}

失敗:

platform_testing/build/tasks/tests/native_test_list.mk: エラー: continuous_native_tests: モジュール 'libnfc-nci-tests'のインストールされたファイルが不明です。


 native_test_list.mkのlibnfc-nci-testを削除します。


prebuilts/clang/host/linux-x86/clang-r536225/include/c++/v1/string:780:43: error: implicit instantiation of undefined template 'std::char_traits'

  780 |   static_assert((is_same<_CharT, typename traits_type::char_type>::value)、

      |                                           ^

packages/apps/Nfc/nci/jni/NativeNfcTda.cpp:32:35: note: ここで要求されるテンプレートクラス「std::basic_string」のインスタンス化

   32 | 静的 std::basic_string sRxTdaDataBuff;

      |                                   ^


パッケージ/アプリ/Nfc/nci/jni/NativeNfcTda.cppを編集してください
using android::base::StringPrintf;
extern bool nfc_debug_enabled;
SyncEvent sCtLibSyncEvt;
//static std::basic_string sRxTdaDataBuff;
static std::basic_string sRxTdaDataBuff;

packages/apps/Nfc/nci/jni/NativeT4tNfcee.cpp:493:21: エラー: 'append'への呼び出しに一致するメンバー関数がありません。

 493 |      sRxDataBuffer.append(data.p_data,data.len);

      |       ~~~~~~~~~~~~~~^~~~~~

パッケージ/アプリ/Nfc/nci/jni/NativeT4tNfcee.cppを編集してください
void NativeT4tNfcee::t4tReadComplete(tNFA_STATUS status, tNFA_RX_DATA data) {
  mT4tOpStatus = status;
  if (status == NFA_STATUS_OK) {
    if (data.len > 0) {
      sRxDataBuffer.insert(sRxDataBuffer.end(), data.p_data,
                           data.p_data + data.len);
      LOG(DEBUG) << StringPrintf("%s: Read Data len new: %d ", __func__,
                                 data.len);
    }
  }
  SyncEventGuard g(mT4tNfcEeRWCEvent);
  mT4tNfcEeRWCEvent.notifyOne();
}

frameworks/base/core/java/android/provider/Settings.java:2351: エラー: フィールド FLAG_NFC_ACTION_MANAGE_SERVICES_SETTINGS を解決できませんでした

@FlaggedApi(android.nfc.Flags.FLAG_NFC_ACTION_MANAGE_SERVICES_SETTINGS)


ファイル: frameworks/base/nfc/java/android/nfc/flags.aconfig

flags.aconfig に以下を追加します

flag {
    name: "nfc_action_manage_services_settings"
    is_exported: true
    namespace: "nfc"
    description: "Add Settings.ACTION_MANAGE_OTHER_NFC_SERVICES_SETTINGS"
    bug: "358129872"
}

エラーメッセージには、エラーを修正するためのヒントがいくつか含まれているため、表に記載されていないエラーもあります。お客様はヒントに従い、ニーズに応じてソースコードを変更することができます。

時々、お客様はr1とr32のソースコードを比較できます。こちらは AOSP ソースコード android-15.0.0_r32 と android-15.0.0_r1です。


9. 画像をi.MX8MN EVKボードにダウンロードします

- 8MN EVKボード上でダウンロードモードに切り替えます

evk_switch.png

- まず、Android BSP WebページからAndroid 15 BSP i.MX8MN EVKデモイメージをダウンロードします。UUUスクリプトと必要なイメージファイルはすでにデモイメージパッケージに入っているためです。 

- ここから UUU をダウンロードします: リリース · nxp-imx/mfgtools

- UUU実行ファイルをデモイメージフォルダに配置します。 uuu_imx_android_flash.batが同じフォルダに配置されているスクリプトです。

- ビルドに成功した後、画像をデモイメージのフォルダにコピーします。画像は、android_build/out/target/product/evk_8mn/ に位置しています

- UUUスクリプトを実行して、画像をEVKボードにダウンロードします。

uuu.jpg


nxp.png


参考情報:

Yocto Linux + PN7160を実行しているi.MX6ULL EVK

i.MX8M NanoボードでPN7160をAndroid 14に移植

i.MXアプリケーション・プロセッサ用Android OS | NXP Semiconductors

PN7160/PN7220 – Android 15 移植ガイド

プラグ・アンド・プレイNFCフロントエンド、統合ファームウェア搭載 | NXP Semiconductors


标记 (1)
无评分
版本历史
最后更新:
昨天
更新人: