NXP Nfc模块Framework层移植遇到的坑【一】

本文介绍了在移植NXP NFC框架到MT8735_L,MT8173_M,MT8783_N平台时遇到的一个关键问题——IOCTL参数类型错误导致的初始化失败。错误源于HAL层中的long类型参数在Kernel中被转换为unsigned int时产生的冲突。通过分析log、源码和配置文件,确定了问题原因并提出了修改HAL层或Kernel层的解决方案。
摘要由CSDN通过智能技术生成

Porting目标平台:

MT8735_L,MT8173_M,MT8783_N

这里总结一下移植过程中遇到的一些坑

1. 由于 IOCTL 时传递参数类型错误导致的初始化失败

原因:由于 Hal 层中定义的 IOCTL 参数使用了long类型,但是kernel中定义的是unsigned int,hal 的指令在 kernel 中进行强转时会发生 errno = 0x16 的报错。

(6.0和7.0移植的过程中都有发现这个错误)

NXP在github上面的源码地址:点击这里跳转

kernel和配置文件请务必让采购找供应商提供!!

github上面的kernel源码并没有对特定平台做适配,部分功能可能需要微调,这个就看驱动工程师的实力了,跟Framework关系不大所以没有太多接触到。

conf配置文件(下图中两个)一般直接让供应商提供项目中实际使用的芯片对应的配置文件即可,不需要做改动(如果需要调整log打印level等可以对照里面的注释来修改),这两个文件放在 system/etc/ 下


Log分析过程如下(以8783_N平台的log来分析):
如何从 log 打印信息中过滤查找自己需要的信息:

为了能够方便查找log信息,对问题进行定位,请务必记住一点,系统 log 日志请不要使用AS或者Eclipse来抓取!(IDE实时抓取的log缓冲区不足够支撑系统级log分析)


这是使用MTKLogger抓取出来的mtklog(截图中展示的是其中的mobilelog),我们需要关注的是图中圈注的两份log,加起来大约2M左右,不算太多。

我这里遇到的现象是:

开机之后进入设置,UI上的显示是enabling(switch开关切换到开,但是选项属于disable状态),判断应该是开机初始化的时候出现的问题,所以我们从main_log.boot开始查。

Log文件大概有一万行左右,但是并不是所有信息都是我们需要的,我们先通过字符串过滤的方式过滤一遍(NXP的log信息还算比较规范的,直接按照nxp作为关键字过滤即可),文本工具使用notepad++或者UltraEdit均可:

Search "Nxp" (109 hits in 1 file)
  e:\Users\linqihan\Desktop\nfc\ng\mobilelog\APLog_2010_0101_000256\main_log.boot (109 hits)
	Line 8640: 01-01 00:02:54.029246  1736  1736 D NfcAdaptation: bool CNfcConfig::readConfig(const char *, bool) Opened optional config /etc/libnfc-nxp.conf
	Line 8642: 01-01 00:02:54.034890  1736  1736 D NfcAdaptation: bool CNfcConfig::readConfig(const char *, bool) Cannot open config file /data/nfc/libnfc-nxpTransit.conf
	Line 8650: 01-01 00:02:54.037072  1736  1736 D         : bool CNxpNfcConfig::readConfig(const char *, bool) Opened base config /etc/libnfc-nxp.conf
	Line 8650: 01-01 00:02:54.037072  1736  1736 D         : bool CNxpNfcConfig::readConfig(const char *, bool) Ope
  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值